#include "../../../cmd/ld/textflag.h"
dst = 0
src = 1
n = 2
state = 3
pi = 4
pj = 5
i = 6
j = 7
k = 8
t = 11
t2 = 12
TEXT ·xorKeyStream(SB),NOSPLIT,$0
MOVW 0(FP), R(dst)
MOVW 4(FP), R(src)
MOVW 8(FP), R(n)
MOVW 12(FP), R(state)
MOVW 16(FP), R(pi)
MOVW 20(FP), R(pj)
MOVBU (R(pi)), R(i)
MOVBU (R(pj)), R(j)
MOVW $0, R(k)
loop:
ADD $1, R(i)
AND $0xff, R(i)
MOVBU R(i)<<2(R(state)), R(t)
ADD R(t), R(j)
AND $0xff, R(j)
MOVBU R(j)<<2(R(state)), R(t2)
MOVB R(t2), R(i)<<2(R(state))
MOVB R(t), R(j)<<2(R(state))
ADD R(t2), R(t)
AND $0xff, R(t)
MOVBU R(t)<<2(R(state)), R(t)
MOVBU R(k)<<0(R(src)), R(t2)
EOR R(t), R(t2)
MOVB R(t2), R(k)<<0(R(dst))
ADD $1, R(k)
CMP R(k), R(n)
BNE loop
done:
MOVB R(i), (R(pi))
MOVB R(j), (R(pj))
RET