github.com/moqsien/xraycore@v1.8.5/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