[88] Mountain Viper
From
inversed@21:1/5 to
All on Tue Jan 7 16:12:53 2025
;redcode
;name Mountain Viper
;author inversed
;strategy Oneshot, a rework of Michal Janeczek's vm5
;date 2025.01.06
;assert CORESIZE == 8000
; Scan and clear
step equ 23
hop equ 12
stream equ 1471
scan0 equ 7479
gate equ 8
cofs equ gate-4
; Quickscan
qs equ 235
qd equ 624
qbstep equ 9
qbhop equ (-40)
qbcount equ 12
gap equ 42
; Boot
bds equ 5828
bdc equ bds+2+step
x0 equ (-CURLINE)
; Boot
sboot mov slast , x0+bds+4
i for 4
mov slast-i , < sboot
rof
cboot mov clast , x0+bdc+4
i for 5
mov clast-i , < cboot
rof
spl x0+bds+1
mov kill , x0+bdc-gate-1
; Clear
kill dat <-gate-1 , # 0
cref dat # 0 , # 2
mov -step-1 , @ 2
spl 0 , <-gate
mov @ cref , < clast+cofs
mov @ cref , < clast+cofs
clast djn -2 , < stream
; Scan
scan sub inc , look
look cmp scan0+hop , scan0
inc jmp step , step
djn scan , @ look
slast jmp scan , 0 ; I'd rather lose a single point on average
; than risk a fatal DJN fallthrough caused
i for gap ; by CDS attack or a decoy
spl -((i - 1) % 7), 1
rof
; Trimmed down quickscan, 10 pairs + jmz
qscan cmp 2*qs+qd , 2*qs
qt1 jmp qa0 , < 3*qs
cmp qscan+5*qs+qd, qscan+5*qs
qt2 jmp qa1 , < 4*qs
cmp qscan+4*qs+qd, qscan+4*qs
qs1 djn qa1 , # qt1
cmp qscan+10*qs-2, qscan+10*qs+qd-2
qs2 djn qa2 , # qt2
cmp qscan+9*qs+qd, qscan+9*qs
qt3 jmp qa2 , < 6*qs
cmp qscan+6*qs+qd, qscan+6*qs
jmp qa2 , < qa1
cmp qscan+8*qs+qd, qscan+8*qs
jmp qa2 , < qs1
cmp qscan+18*qs-8, qscan+18*qs+qd-8
qs3 djn qa3 , # qt3
cmp qscan+12*qs , qscan+12*qs+qd
jmp qa3 , < qa1
cmp qscan+14*qs , qscan+14*qs+qd
jmp qa3 , < qs1
jmz sboot , qscan+15*qs
qa3 add @ qs3 , qp
qa2 add @ qs2 , @ qa3
qa1 add @ qs1 , @ qa3
qa0 cmp @ qp , -CURLINE-1
cmp @ 0 , 0
add # qd , qp
ql mov qb , @ qp
qp mov 4000 , < qscan+2*qs
add # qbstep , @ ql
djn ql , # qbcount
jmp sboot , 0
qb dat <-qbhop , < qbhop+1
end qscan
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)