;redcode-94t ;name Ymir's Sporecloud ;author Philipp Schaefer ;strategy q^4 -> stone/imp ;assert 1 ORG qGo ;;((( STOLEN QSCAN BEGIN start EQU (boot-1) qTab2 EQU boot qTab3 EQU qBomb qm EQU 460 qM EQU 3939 qa1 EQU ((qTab1-1-found)*qM+1) qa2 EQU ((qTab1 -found)*qM+1) qb1 EQU ((qTab2-1-found)*qM+1) qb2 EQU ((qTab2 -found)*qM+1) qb3 EQU ((qTab2+1-found)*qM+1) qc2 EQU ((qTab3 -found)*qM+1) ;;STOLEN QSCAN END))) ;;((( STONE BEGIN dat.f 0, < qb1 boot spl imp, } qb2 nop 6, } qb3 spl #93, }143 add bstep, -1 mov bstep, @-2 mov cp, *-3 djn -3, #500 mov boot+1, {boot+1 jmp clear, <2341 bstep dat 2932, 2348 ;; Clear Constants csize equ (e-cp+1) ;; Clear Code cp dat csize-1, 29 ;dend+20 clear mov *cp, >cp mov *cp, >cp djn.f clear, <-73 e dat csize-1, csize for 17 dat.f 0, 0 rof ;;STONE END ))) ;;((( STOLEN QSCAN BEGIN empty dat.f 0, 0 dat.f empty, qa1 qTab1 dat.f empty, qa2 ;;STOLEN QSCAN END))) ;;(((( IMP BEGIN istep equ 2731 jmp 3-istep+1, 0 imp spl -1, 0 spl istep+1, 0 mov.i #istep, *0 for 24 dat.f 0, 0 rof ;;IMP END ))) ;;((( STOLEN QSCAN BEGIN qGo sne.i found+qm*qc2, found+qm*qc2+qb2 seq.i < qTab3, found+qm*(qc2-1)+qb2 jmp q0, } q0 sne.i found+qm*qa1, found+qm*qa1+qb2 seq.i < (qTab1-1), found+qm*(qa1-1)+qb2 djn.a q0, { q0 sne.i found+qm*qa2, found+qm*qa2+qb2 seq.i < qTab1, found+qm*(qa2-1)+qb2 jmp q0, { q0 sne.i found+qm*qb1, found+qm*qb1+qb1 seq.i < (qTab2-1), found+qm*(qb1-1)+(qb1-1) jmp q0, { q1 sne.i found+qm*qb3, found+qm*qb3+qb3 seq.i < (qTab2+1), found+qm*(qb3-1)+(qb3-1) jmp q0, } q1 sne.i found+qm*qb2, found+qm*qb2+qb2 seq < qTab2, found+qm*(qb2-1)+(qb2-1) jmp q0 seq.i > found, found+qm+(qb2-1) jmp qSelect, < found seq.i found+(qm+1)*(qc2-1), found+(qm+1)*(qc2-1)+(qb2-1) jmp q0, } q0 seq.i found+(qm+1)*(qa2-1), found+(qm+1)*(qa2-1)+(qb2-1) jmp q0, { q0 seq.i found+(qm+1)*(qa1-1), found+(qm+1)*(qa1-1)+(qb2-1) djn.a q0, { q0 jmz.f boot, found+(qm+1)*(qb2-1)+(qb2-1) q0 mul.b * q1, found qSelect sne { qTab1, @ found q1 add.b qTab2, found qOffset EQU -86 qTimes EQU 19 qStep EQU -7 throw mov.i qTab3, @ found found mov.i qBomb, } qm sub # qStep, found djn throw, # qTimes jmp boot qBomb dat.f > qOffset, > qc2 ;;;STOLEN QSCAN END))) end