2024-08-12 09:49:45 +00:00
|
|
|
// Code generated by command: go run keccakf_amd64_asm.go -out ../keccakf_amd64.s -pkg sha3. DO NOT EDIT.
|
2021-08-12 19:03:24 +00:00
|
|
|
|
|
|
|
//go:build amd64 && !purego && gc
|
|
|
|
|
2024-01-03 10:02:49 +00:00
|
|
|
// func keccakF1600(a *[25]uint64)
|
2024-08-12 09:49:45 +00:00
|
|
|
TEXT ·keccakF1600(SB), $200-8
|
|
|
|
MOVQ a+0(FP), DI
|
2021-08-12 19:03:24 +00:00
|
|
|
|
|
|
|
// Convert the user state into an internal state
|
2024-08-12 09:49:45 +00:00
|
|
|
NOTQ 8(DI)
|
|
|
|
NOTQ 16(DI)
|
|
|
|
NOTQ 64(DI)
|
|
|
|
NOTQ 96(DI)
|
|
|
|
NOTQ 136(DI)
|
|
|
|
NOTQ 160(DI)
|
2021-08-12 19:03:24 +00:00
|
|
|
|
|
|
|
// Execute the KeccakF permutation
|
2024-08-12 09:49:45 +00:00
|
|
|
MOVQ (DI), SI
|
|
|
|
MOVQ 8(DI), BP
|
|
|
|
MOVQ 32(DI), R15
|
|
|
|
XORQ 40(DI), SI
|
|
|
|
XORQ 48(DI), BP
|
|
|
|
XORQ 72(DI), R15
|
|
|
|
XORQ 80(DI), SI
|
|
|
|
XORQ 88(DI), BP
|
|
|
|
XORQ 112(DI), R15
|
|
|
|
XORQ 120(DI), SI
|
|
|
|
XORQ 128(DI), BP
|
|
|
|
XORQ 152(DI), R15
|
|
|
|
XORQ 160(DI), SI
|
|
|
|
XORQ 168(DI), BP
|
|
|
|
MOVQ 176(DI), DX
|
|
|
|
MOVQ 184(DI), R8
|
|
|
|
XORQ 192(DI), R15
|
2021-08-12 19:03:24 +00:00
|
|
|
|
2024-08-12 09:49:45 +00:00
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x0000000000000001, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x0000000000008082, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x800000000000808a, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x8000000080008000, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x000000000000808b, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x0000000080000001, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x8000000080008081, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x8000000000008009, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x000000000000008a, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x0000000000000088, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x0000000080008009, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x000000008000000a, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
2021-08-12 19:03:24 +00:00
|
|
|
|
2024-08-12 09:49:45 +00:00
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x000000008000808b, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x800000000000008b, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x8000000000008089, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x8000000000008003, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x8000000000008002, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x8000000000000080, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x000000000000800a, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x800000008000000a, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x8000000080008081, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x8000000000008080, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(DI), R12
|
|
|
|
XORQ 56(DI), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(DI), R12
|
|
|
|
XORQ 136(DI), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(DI), R13
|
|
|
|
XORQ 64(DI), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(DI), R13
|
|
|
|
XORQ 144(DI), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (DI), R10
|
|
|
|
MOVQ 48(DI), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(DI), R12
|
|
|
|
MOVQ 144(DI), R13
|
|
|
|
MOVQ 192(DI), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x0000000080000001, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (SP)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(SP)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(SP)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(SP)
|
|
|
|
MOVQ R12, 8(SP)
|
|
|
|
MOVQ R12, BP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(DI), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(DI), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(DI), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(DI), R13
|
|
|
|
MOVQ 176(DI), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(SP)
|
|
|
|
NOTQ R14
|
|
|
|
XORQ R10, R15
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(SP)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(DI), R10
|
|
|
|
MOVQ 56(DI), R11
|
|
|
|
MOVQ 104(DI), R12
|
|
|
|
MOVQ 152(DI), R13
|
|
|
|
MOVQ 160(DI), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(SP)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(SP)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(SP)
|
|
|
|
XORQ R10, R15
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(DI), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(DI), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(DI), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(DI), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(DI), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(SP)
|
|
|
|
XORQ AX, SI
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(SP)
|
|
|
|
XORQ AX, BP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(SP)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(SP)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(SP)
|
|
|
|
XORQ R11, R15
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(DI), R10
|
|
|
|
MOVQ 64(DI), R11
|
|
|
|
MOVQ 112(DI), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(DI), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(DI), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(SP)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
XORQ R9, R15
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(SP)
|
|
|
|
XORQ BX, SI
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(SP)
|
|
|
|
XORQ CX, BP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(SP)
|
|
|
|
MOVQ R8, 184(SP)
|
|
|
|
|
|
|
|
// Prepare round
|
|
|
|
MOVQ BP, BX
|
|
|
|
ROLQ $0x01, BX
|
|
|
|
MOVQ 16(SP), R12
|
|
|
|
XORQ 56(SP), DX
|
|
|
|
XORQ R15, BX
|
|
|
|
XORQ 96(SP), R12
|
|
|
|
XORQ 136(SP), DX
|
|
|
|
XORQ DX, R12
|
|
|
|
MOVQ R12, CX
|
|
|
|
ROLQ $0x01, CX
|
|
|
|
MOVQ 24(SP), R13
|
|
|
|
XORQ 64(SP), R8
|
|
|
|
XORQ SI, CX
|
|
|
|
XORQ 104(SP), R13
|
|
|
|
XORQ 144(SP), R8
|
|
|
|
XORQ R8, R13
|
|
|
|
MOVQ R13, DX
|
|
|
|
ROLQ $0x01, DX
|
|
|
|
MOVQ R15, R8
|
|
|
|
XORQ BP, DX
|
|
|
|
ROLQ $0x01, R8
|
|
|
|
MOVQ SI, R9
|
|
|
|
XORQ R12, R8
|
|
|
|
ROLQ $0x01, R9
|
|
|
|
|
|
|
|
// Result b
|
|
|
|
MOVQ (SP), R10
|
|
|
|
MOVQ 48(SP), R11
|
|
|
|
XORQ R13, R9
|
|
|
|
MOVQ 96(SP), R12
|
|
|
|
MOVQ 144(SP), R13
|
|
|
|
MOVQ 192(SP), R14
|
|
|
|
XORQ CX, R11
|
|
|
|
ROLQ $0x2c, R11
|
|
|
|
XORQ DX, R12
|
|
|
|
XORQ BX, R10
|
|
|
|
ROLQ $0x2b, R12
|
|
|
|
MOVQ R11, SI
|
|
|
|
MOVQ $0x8000000080008008, AX
|
|
|
|
ORQ R12, SI
|
|
|
|
XORQ R10, AX
|
|
|
|
XORQ AX, SI
|
|
|
|
MOVQ SI, (DI)
|
|
|
|
XORQ R9, R14
|
|
|
|
ROLQ $0x0e, R14
|
|
|
|
MOVQ R10, R15
|
|
|
|
ANDQ R11, R15
|
|
|
|
XORQ R14, R15
|
|
|
|
MOVQ R15, 32(DI)
|
|
|
|
XORQ R8, R13
|
|
|
|
ROLQ $0x15, R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 16(DI)
|
|
|
|
NOTQ R12
|
|
|
|
ORQ R10, R14
|
|
|
|
ORQ R13, R12
|
|
|
|
XORQ R13, R14
|
|
|
|
XORQ R11, R12
|
|
|
|
MOVQ R14, 24(DI)
|
|
|
|
MOVQ R12, 8(DI)
|
|
|
|
NOP
|
|
|
|
|
|
|
|
// Result g
|
|
|
|
MOVQ 72(SP), R11
|
|
|
|
XORQ R9, R11
|
|
|
|
MOVQ 80(SP), R12
|
|
|
|
ROLQ $0x14, R11
|
|
|
|
XORQ BX, R12
|
|
|
|
ROLQ $0x03, R12
|
|
|
|
MOVQ 24(SP), R10
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ R8, R10
|
|
|
|
MOVQ 128(SP), R13
|
|
|
|
MOVQ 176(SP), R14
|
|
|
|
ROLQ $0x1c, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 40(DI)
|
|
|
|
NOP
|
|
|
|
XORQ CX, R13
|
|
|
|
ROLQ $0x2d, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 48(DI)
|
|
|
|
NOP
|
|
|
|
XORQ DX, R14
|
|
|
|
ROLQ $0x3d, R14
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 64(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 72(DI)
|
|
|
|
NOTQ R14
|
|
|
|
NOP
|
|
|
|
ORQ R14, R13
|
|
|
|
XORQ R12, R13
|
|
|
|
MOVQ R13, 56(DI)
|
|
|
|
|
|
|
|
// Result k
|
|
|
|
MOVQ 8(SP), R10
|
|
|
|
MOVQ 56(SP), R11
|
|
|
|
MOVQ 104(SP), R12
|
|
|
|
MOVQ 152(SP), R13
|
|
|
|
MOVQ 160(SP), R14
|
|
|
|
XORQ DX, R11
|
|
|
|
ROLQ $0x06, R11
|
|
|
|
XORQ R8, R12
|
|
|
|
ROLQ $0x19, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
ORQ R12, AX
|
|
|
|
XORQ CX, R10
|
|
|
|
ROLQ $0x01, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 80(DI)
|
|
|
|
NOP
|
|
|
|
XORQ R9, R13
|
|
|
|
ROLQ $0x08, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ANDQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 88(DI)
|
|
|
|
NOP
|
|
|
|
XORQ BX, R14
|
|
|
|
ROLQ $0x12, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ANDQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 96(DI)
|
|
|
|
MOVQ R14, AX
|
|
|
|
ORQ R10, AX
|
|
|
|
XORQ R13, AX
|
|
|
|
MOVQ AX, 104(DI)
|
|
|
|
ANDQ R11, R10
|
|
|
|
XORQ R14, R10
|
|
|
|
MOVQ R10, 112(DI)
|
|
|
|
NOP
|
|
|
|
|
|
|
|
// Result m
|
|
|
|
MOVQ 40(SP), R11
|
|
|
|
XORQ BX, R11
|
|
|
|
MOVQ 88(SP), R12
|
|
|
|
ROLQ $0x24, R11
|
|
|
|
XORQ CX, R12
|
|
|
|
MOVQ 32(SP), R10
|
|
|
|
ROLQ $0x0a, R12
|
|
|
|
MOVQ R11, AX
|
|
|
|
MOVQ 136(SP), R13
|
|
|
|
ANDQ R12, AX
|
|
|
|
XORQ R9, R10
|
|
|
|
MOVQ 184(SP), R14
|
|
|
|
ROLQ $0x1b, R10
|
|
|
|
XORQ R10, AX
|
|
|
|
MOVQ AX, 120(DI)
|
|
|
|
NOP
|
|
|
|
XORQ DX, R13
|
|
|
|
ROLQ $0x0f, R13
|
|
|
|
MOVQ R12, AX
|
|
|
|
ORQ R13, AX
|
|
|
|
XORQ R11, AX
|
|
|
|
MOVQ AX, 128(DI)
|
|
|
|
NOP
|
|
|
|
XORQ R8, R14
|
|
|
|
ROLQ $0x38, R14
|
|
|
|
NOTQ R13
|
|
|
|
MOVQ R13, AX
|
|
|
|
ORQ R14, AX
|
|
|
|
XORQ R12, AX
|
|
|
|
MOVQ AX, 136(DI)
|
|
|
|
ORQ R10, R11
|
|
|
|
XORQ R14, R11
|
|
|
|
MOVQ R11, 152(DI)
|
|
|
|
ANDQ R10, R14
|
|
|
|
XORQ R13, R14
|
|
|
|
MOVQ R14, 144(DI)
|
|
|
|
NOP
|
|
|
|
|
|
|
|
// Result s
|
|
|
|
MOVQ 16(SP), R10
|
|
|
|
MOVQ 64(SP), R11
|
|
|
|
MOVQ 112(SP), R12
|
|
|
|
XORQ DX, R10
|
|
|
|
MOVQ 120(SP), R13
|
|
|
|
ROLQ $0x3e, R10
|
|
|
|
XORQ R8, R11
|
|
|
|
MOVQ 168(SP), R14
|
|
|
|
ROLQ $0x37, R11
|
|
|
|
XORQ R9, R12
|
|
|
|
MOVQ R10, R9
|
|
|
|
XORQ CX, R14
|
|
|
|
ROLQ $0x02, R14
|
|
|
|
ANDQ R11, R9
|
|
|
|
XORQ R14, R9
|
|
|
|
MOVQ R9, 192(DI)
|
|
|
|
ROLQ $0x27, R12
|
|
|
|
NOP
|
|
|
|
NOTQ R11
|
|
|
|
XORQ BX, R13
|
|
|
|
MOVQ R11, BX
|
|
|
|
ANDQ R12, BX
|
|
|
|
XORQ R10, BX
|
|
|
|
MOVQ BX, 160(DI)
|
|
|
|
NOP
|
|
|
|
ROLQ $0x29, R13
|
|
|
|
MOVQ R12, CX
|
|
|
|
ORQ R13, CX
|
|
|
|
XORQ R11, CX
|
|
|
|
MOVQ CX, 168(DI)
|
|
|
|
NOP
|
|
|
|
MOVQ R13, DX
|
|
|
|
MOVQ R14, R8
|
|
|
|
ANDQ R14, DX
|
|
|
|
ORQ R10, R8
|
|
|
|
XORQ R12, DX
|
|
|
|
XORQ R13, R8
|
|
|
|
MOVQ DX, 176(DI)
|
|
|
|
MOVQ R8, 184(DI)
|
|
|
|
|
|
|
|
// Revert the internal state to the user state
|
|
|
|
NOTQ 8(DI)
|
|
|
|
NOTQ 16(DI)
|
|
|
|
NOTQ 64(DI)
|
|
|
|
NOTQ 96(DI)
|
|
|
|
NOTQ 136(DI)
|
|
|
|
NOTQ 160(DI)
|
2021-08-12 19:03:24 +00:00
|
|
|
RET
|