mirror of
https://github.com/fumiama/gofastTEA.git
synced 2026-07-01 23:40:24 +08:00
init
This commit is contained in:
768
tea_1.16_amd64.s
Normal file
768
tea_1.16_amd64.s
Normal file
@@ -0,0 +1,768 @@
|
||||
//go:build !go1.17 && amd64
|
||||
// +build !go1.17,amd64
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
// func encrypt(dstlen uintptr, t uintptr)
|
||||
TEXT ·encrypt(SB), NOSPLIT, $0-16
|
||||
MOVQ ·dstlen+0(FP), AX // go:<1.17 dst
|
||||
MOVQ ·teaptr+8(FP), DI // go:<1.17 t
|
||||
MOVQ AX, BX // len(dst) low 40 bits
|
||||
SHRQ $40, BX // unpack len
|
||||
SHLQ $24, AX
|
||||
SHRQ $24, AX
|
||||
MOVQ DI, R8 // len(dst) high 24 bits
|
||||
SHLQ $24, DI
|
||||
SHRQ $24, DI
|
||||
SHRQ $40, R8
|
||||
SHLQ $40, R8
|
||||
ORQ R8, BX
|
||||
ADDQ BX, AX // dst += len(dst)
|
||||
NOTQ BX // i = -i - 1
|
||||
INCQ BX // i++
|
||||
MOVQ (DI), DX // t0
|
||||
MOVQ 4(DI), R12 // t1
|
||||
MOVQ 8(DI), R10 // t2
|
||||
MOVQ 12(DI), SI // t3
|
||||
// XORQ R11, R11 // holder
|
||||
XORQ R13, R13 // iv1
|
||||
XORQ DI, DI // iv2
|
||||
enclop:
|
||||
MOVQ (AX)(BX*1), R11 // holder = Uint64(dst[i:])
|
||||
BSWAPQ R11 // holder = BE(block)
|
||||
XORQ R13, R11 // holder ^= iv1
|
||||
MOVQ R11, R13 // iv1 = holder
|
||||
// Use Register CX(v1), DX(t0), SI(t3), R8(tmp), R10(t2), R12(t1), R13(v0/ret)
|
||||
////////////////iv1 = encrypt(iv1)////////////////
|
||||
MOVQ R11, CX // v1
|
||||
SHRQ $32, R13 // v0
|
||||
|
||||
LEAQ -1640531527(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ -1640531527(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ 1013904242(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ 1013904242(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ -626627285(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ -626627285(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ 2027808484(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ 2027808484(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ 387276957(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ 387276957(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ -1253254570(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ -1253254570(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ 1401181199(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ 1401181199(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ -239350328(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ -239350328(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ -1879881855(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ -1879881855(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ 774553914(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ 774553914(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ -865977613(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ -865977613(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ 1788458156(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, R13 // v0 += R8
|
||||
LEAQ 1788458156(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ 147926629(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ 147926629(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ -1492604898(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ -1492604898(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ 1161830871(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ 1161830871(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
LEAQ -478700656(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDQ R8, R13 // v0 += R8
|
||||
LEAQ -478700656(R13), R8 // R8 = v0 + 0x...
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R13, R9 // R9 = v0
|
||||
SHRL $5, R9 // R9 >>= 5
|
||||
ADDQ SI, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
ADDL R8, CX // v0 += R8
|
||||
|
||||
SHLQ $32, R13 // v0 <<= 32
|
||||
ORQ CX, R13 // v0 |= v1
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
XORQ DI, R13 // iv1 ^= iv2
|
||||
MOVQ R11, DI // iv2 = holder
|
||||
MOVQ R13, R11 // holder = iv1
|
||||
BSWAPQ R11 // holder = BE(holder)
|
||||
MOVQ R11, (AX)(BX*1) // PutUint64(dst[i:], holder)
|
||||
ADDQ $8, BX // i += 8
|
||||
JNZ enclop
|
||||
RET
|
||||
|
||||
// func decrypt(datalen uintptr, dst uintptr, t *TEA)
|
||||
TEXT ·decrypt(SB), NOSPLIT, $0-24
|
||||
MOVQ ·data+0(FP), AX // go:<1.17 data
|
||||
MOVQ ·dst+8(FP), DI // go:<1.17 dst
|
||||
MOVQ ·teaptr+16(FP), SI // go:<1.17 t
|
||||
MOVQ AX, BX // len(data) low 24 bits
|
||||
SHRQ $40, BX // unpack len
|
||||
SHLQ $24, AX
|
||||
SHRQ $24, AX
|
||||
MOVQ DI, R8 // dst high 24 bits
|
||||
SHLQ $24, DI
|
||||
SHRQ $24, DI
|
||||
SHRQ $40, R8
|
||||
SHLQ $40, R8
|
||||
ORQ R8, BX
|
||||
ADDQ BX, AX // data += len(data)
|
||||
ADDQ BX, DI // dst += len(data)
|
||||
NOTQ BX // i = -len - 1
|
||||
INCQ BX // i++
|
||||
MOVQ (SI), DX // t0
|
||||
MOVQ 4(SI), R12 // t1
|
||||
MOVQ 8(SI), R10 // t2
|
||||
MOVQ 12(SI), R13 // t3
|
||||
XORQ SI, SI // iv1
|
||||
XORQ R15, R15 // iv2
|
||||
XORQ R11, R11 // holder
|
||||
declop:
|
||||
MOVQ (AX)(BX*1), SI // iv1 = Uint64(data[i:])
|
||||
BSWAPQ SI // iv1 = BE(block)
|
||||
XORQ SI, R15 // iv2 ^= iv1
|
||||
// Use Register R15(v0/ret), R12(t1), CX(v1), DX(t0), R13(t3), R8, R9, R10(t2)
|
||||
///////////////iv2 = decrypt(iv2)///////////////
|
||||
MOVQ R15, CX // v1
|
||||
SHRQ $32, R15 // v0
|
||||
|
||||
LEAQ -478700656(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ -478700656(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ 1161830871(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ 1161830871(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ -1492604898(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ -1492604898(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ 147926629(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ 147926629(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ 1788458156(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ 1788458156(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ -865977613(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ -865977613(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ 774553914(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ 774553914(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ -1879881855(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ -1879881855(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ -239350328(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ -239350328(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ 1401181199(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ 1401181199(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ -1253254570(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ -1253254570(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ 387276957(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ 387276957(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ 2027808484(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ 2027808484(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ -626627285(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ -626627285(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ 1013904242(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ 1013904242(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
LEAQ -1640531527(R15), R8 // R8 = v0 + 0x...
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ R10, R9 // R9 += t2
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ R15, R9 // R9 = v0
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R13, R9 // R9 += t3
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, CX // v1 -= R8
|
||||
LEAQ -1640531527(CX), R8 // R8 = v1 + 0x...
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHLQ $4, R9 // R9 <<= 4
|
||||
ADDQ DX, R9 // R9 += t0
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
MOVQ CX, R9 // R9 = v1
|
||||
SHRQ $5, R9 // R9 >>= 5
|
||||
ADDQ R12, R9 // R9 += t1
|
||||
XORQ R9, R8 // R8 ^= R9
|
||||
SUBL R8, R15 // v0 -= R8
|
||||
|
||||
SHLQ $32, R15
|
||||
ORQ CX, R15
|
||||
///////////////////////////////////////////////
|
||||
XORQ R15, R11 // holder ^= iv2
|
||||
BSWAPQ R11 // holder = BE(holder)
|
||||
MOVQ R11, (DI)(BX*1) // PutUint64(dst[i:], holder)
|
||||
MOVQ SI, R11 // holder = iv1
|
||||
ADDQ $8, BX // i += 8
|
||||
JNZ declop
|
||||
RET
|
||||
Reference in New Issue
Block a user