github.com/xraypb/xray-core@v1.6.6/transport/internet/kcp/xor_amd64.s (about) 1 #include "textflag.h" 2 3 // func xorfwd(x []byte) 4 TEXT ·xorfwd(SB),NOSPLIT,$0 5 MOVQ x+0(FP), SI // x[i] 6 MOVQ x_len+8(FP), CX // x.len 7 MOVQ x+0(FP), DI 8 ADDQ $4, DI // x[i+4] 9 SUBQ $4, CX 10 xorfwdloop: 11 MOVL (SI), AX 12 XORL AX, (DI) 13 ADDQ $4, SI 14 ADDQ $4, DI 15 SUBQ $4, CX 16 17 CMPL CX, $0 18 JE xorfwddone 19 20 JMP xorfwdloop 21 xorfwddone: 22 RET 23 24 // func xorbkd(x []byte) 25 TEXT ·xorbkd(SB),NOSPLIT,$0 26 MOVQ x+0(FP), SI 27 MOVQ x_len+8(FP), CX // x.len 28 MOVQ x+0(FP), DI 29 ADDQ CX, SI // x[-8] 30 SUBQ $8, SI 31 ADDQ CX, DI // x[-4] 32 SUBQ $4, DI 33 SUBQ $4, CX 34 xorbkdloop: 35 MOVL (SI), AX 36 XORL AX, (DI) 37 SUBQ $4, SI 38 SUBQ $4, DI 39 SUBQ $4, CX 40 41 CMPL CX, $0 42 JE xorbkddone 43 44 JMP xorbkdloop 45 46 xorbkddone: 47 RET