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
        add       qinc      ,   found
        seq       nil       , * found
        mov.x     found     ,   found

qbloop  mov       qbomb     , @ found
found   mov       qxa       , } qxb
        add     # qbstep    ,   found
        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)

loop    add       inc   ,   ptr
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

;------------------------------------------------------------------------------;