Eternal Exile is a scanner with a fixed-length attack which entered KOTH.org's 94nop hill on 16th January 2011 and survived 571 challenges before being pushed off on 7th December 2013.

``````;redcode-94nop
;author inversed
;name Eternal Exile
;strategy q^i -> Scanner with fixed length wipe
;assert (CORESIZE==8000) && (MAXPROCESSES==8000)

org     qscan

;---------------<< mini q^i quickscanner >>------------------------------------;

qbstep  equ     7
qbhop   equ    -87
qbcnt   equ     20

qxa     equ     6980
qxb     equ     6810
qa1     equ     5354
qa2     equ     5514
qb1     equ     5824
qb2     equ     1712
qstep   equ     2379

qa2qb2  equ     ((qa2*qb2)%CORESIZE)
qa2p1qb equ     (((qa2+1)*qb2)%CORESIZE)
qa2m1qb equ     (((qa2-1)*qb2)%CORESIZE)
nil     equ     (-CURLINE-1)
X       equ     found

;             --------~~~~~~~~([ instant ])~~~~~~~~--------            ;
qscan   sne     X + qxa                         , X + qxb
seq     X + qxa + qstep                 , X + qxb + qstep
jmp     decide                          , 0

;             --------~~~~~~~~([+0 cycles])~~~~~~~~--------            ;
sne     X + qxa * qa2                   , X + qxb * qb2
seq     X + qxa * qa2 + qstep           , X + qxb * qb2 + qstep
jmp     dec0de                          , 0

sne     X + qxa * qa1                   , X + qxb * qb1
seq     X + qxa * qa1 + qstep           , X + qxb * qb1 + qstep
jmp     dec0de                          , < dec1

sne     X + qxa * (qa2 - 1)             , X + qxb * (qb2 - 1)
seq     X + qxa * (qa2 - 1) + qstep     , X + qxb * (qb2 - 1) + qstep
djn.f   dec0de                          , qtab

sne     X + (qxa - 1) * qa2             , X + (qxb - 1) * qb2
seq     X + (qxa - 1) * qa2 + qstep     , X + (qxb - 1) * qb2 + qstep
djn.f   dec0de                          , found

;             --------~~~~~~~~([+1 cycle ])~~~~~~~~--------            ;
sne     X + qxa * qa2qb2                , X + qxb * qa2qb2
seq     X + qxa * qa2qb2 + qstep        , X + qxb * qa2qb2 + qstep
jmp     dec1                            , 0

jmp     boot                            , 0

dec1    mul.x     qtab      ,   qtab
dec0de  mul     @ dec1      ,   found
decide  sne     * found     , @ found
seq       nil       , * found
mov.x     found     ,   found

qbloop  mov       qbomb     , @ found
found   mov       qxa       , } qxb
djn       qbloop    , # qbcnt
jmp       boot      ,   0
qbomb   dat     > qbhop     , > 1

dat       qa1       ,   qb1
qtab    dat       qa2       ,   qb2
qinc    dat       qstep     ,   qstep

for       27
dat       0         ,   0
rof

;---------------<< Boot >>-----------------------------------------------------;

bdist   equ     4774
clen    equ     14
x0      equ     qscan

copy    mov     < bp                    , { bp
mov     < bp                    , { bp
boot    mov     < bp                    , { bp
mov     < bp                    , { bp
djn       copy                  , # 4
bp      spl     @ x0 + bdist + clen     ,   loop + clen
mov.i   # 0                     , { 0
dat       0                     ,   0

;---------------<< Scanner >>--------------------------------------------------;

hop     equ     8
step    equ    -101
time    equ     712
zo      equ    -88      ; = 0 - step * time
wlen    equ     8
wptr    equ     ptr - 3
dcgap   equ     10
ikill   equ     2667

; Alternative (step, time) pair = (-371, 735)

ptr     sne       zo    ,   zo + hop
j1      jmn.a   @ j2    , @ loop
t1      mov.ab    ptr   , @ wipe
cnt     mov     # wlen  , @ jw
wipe    mov       inc   , > wptr
gate    mov       inc   , > wptr
jw      djn     @ t1    ,   cnt
j2      jmn.a   @ j1    , @ loop
inc     spl     # step  ,   step
clear   mov       kill  , > gate
djn.f     clear , > gate
dat       0     ,   0
kill    dat     < ikill ,   dcgap

;------------------------------------------------------------------------------;
``````