// Code generated by command: go run sha256block_amd64_asm.go -out ../sha256block_amd64.s. DO NOT EDIT. //go:build !purego #include "textflag.h" // func blockAMD64(dig *Digest, p []byte) TEXT ·blockAMD64(SB), $264-32 MOVQ p_base+8(FP), SI MOVQ p_len+16(FP), DX SHRQ $0x06, DX SHLQ $0x06, DX LEAQ (SI)(DX*1), DI MOVQ DI, 256(SP) CMPQ SI, DI JEQ end MOVQ dig+0(FP), BP MOVL (BP), R8 MOVL 4(BP), R9 MOVL 8(BP), R10 MOVL 12(BP), R11 MOVL 16(BP), R12 MOVL 20(BP), R13 MOVL 24(BP), R14 MOVL 28(BP), R15 loop: MOVQ SP, BP MOVL (SI), AX BSWAPL AX MOVL AX, (BP) ADDL AX, R15 MOVL R12, AX ADDL $0x428a2f98, R15 MOVL R12, CX RORL $0x06, AX MOVL R12, DX RORL $0x0b, CX XORL CX, AX MOVL R12, CX RORL $0x19, DX ANDL R13, CX XORL AX, DX MOVL R12, AX NOTL AX ADDL DX, R15 ANDL R14, AX XORL CX, AX ADDL R15, AX MOVL R8, DI MOVL R10, BX RORL $0x02, DI MOVL R8, DX ANDL R9, BX RORL $0x0d, DX MOVL R8, CX ANDL R10, CX XORL DX, DI XORL CX, BX MOVL R8, DX MOVL R9, CX RORL $0x16, DX ANDL R8, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R15 ADDL AX, R11 ADDL AX, R15 MOVL 4(SI), AX BSWAPL AX MOVL AX, 4(BP) ADDL AX, R14 MOVL R11, AX ADDL $0x71374491, R14 MOVL R11, CX RORL $0x06, AX MOVL R11, DX RORL $0x0b, CX XORL CX, AX MOVL R11, CX RORL $0x19, DX ANDL R12, CX XORL AX, DX MOVL R11, AX NOTL AX ADDL DX, R14 ANDL R13, AX XORL CX, AX ADDL R14, AX MOVL R15, DI MOVL R9, BX RORL $0x02, DI MOVL R15, DX ANDL R8, BX RORL $0x0d, DX MOVL R15, CX ANDL R9, CX XORL DX, DI XORL CX, BX MOVL R15, DX MOVL R8, CX RORL $0x16, DX ANDL R15, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R14 ADDL AX, R10 ADDL AX, R14 MOVL 8(SI), AX BSWAPL AX MOVL AX, 8(BP) ADDL AX, R13 MOVL R10, AX ADDL $0xb5c0fbcf, R13 MOVL R10, CX RORL $0x06, AX MOVL R10, DX RORL $0x0b, CX XORL CX, AX MOVL R10, CX RORL $0x19, DX ANDL R11, CX XORL AX, DX MOVL R10, AX NOTL AX ADDL DX, R13 ANDL R12, AX XORL CX, AX ADDL R13, AX MOVL R14, DI MOVL R8, BX RORL $0x02, DI MOVL R14, DX ANDL R15, BX RORL $0x0d, DX MOVL R14, CX ANDL R8, CX XORL DX, DI XORL CX, BX MOVL R14, DX MOVL R15, CX RORL $0x16, DX ANDL R14, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R13 ADDL AX, R9 ADDL AX, R13 MOVL 12(SI), AX BSWAPL AX MOVL AX, 12(BP) ADDL AX, R12 MOVL R9, AX ADDL $0xe9b5dba5, R12 MOVL R9, CX RORL $0x06, AX MOVL R9, DX RORL $0x0b, CX XORL CX, AX MOVL R9, CX RORL $0x19, DX ANDL R10, CX XORL AX, DX MOVL R9, AX NOTL AX ADDL DX, R12 ANDL R11, AX XORL CX, AX ADDL R12, AX MOVL R13, DI MOVL R15, BX RORL $0x02, DI MOVL R13, DX ANDL R14, BX RORL $0x0d, DX MOVL R13, CX ANDL R15, CX XORL DX, DI XORL CX, BX MOVL R13, DX MOVL R14, CX RORL $0x16, DX ANDL R13, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R12 ADDL AX, R8 ADDL AX, R12 MOVL 16(SI), AX BSWAPL AX MOVL AX, 16(BP) ADDL AX, R11 MOVL R8, AX ADDL $0x3956c25b, R11 MOVL R8, CX RORL $0x06, AX MOVL R8, DX RORL $0x0b, CX XORL CX, AX MOVL R8, CX RORL $0x19, DX ANDL R9, CX XORL AX, DX MOVL R8, AX NOTL AX ADDL DX, R11 ANDL R10, AX XORL CX, AX ADDL R11, AX MOVL R12, DI MOVL R14, BX RORL $0x02, DI MOVL R12, DX ANDL R13, BX RORL $0x0d, DX MOVL R12, CX ANDL R14, CX XORL DX, DI XORL CX, BX MOVL R12, DX MOVL R13, CX RORL $0x16, DX ANDL R12, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R11 ADDL AX, R15 ADDL AX, R11 MOVL 20(SI), AX BSWAPL AX MOVL AX, 20(BP) ADDL AX, R10 MOVL R15, AX ADDL $0x59f111f1, R10 MOVL R15, CX RORL $0x06, AX MOVL R15, DX RORL $0x0b, CX XORL CX, AX MOVL R15, CX RORL $0x19, DX ANDL R8, CX XORL AX, DX MOVL R15, AX NOTL AX ADDL DX, R10 ANDL R9, AX XORL CX, AX ADDL R10, AX MOVL R11, DI MOVL R13, BX RORL $0x02, DI MOVL R11, DX ANDL R12, BX RORL $0x0d, DX MOVL R11, CX ANDL R13, CX XORL DX, DI XORL CX, BX MOVL R11, DX MOVL R12, CX RORL $0x16, DX ANDL R11, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R10 ADDL AX, R14 ADDL AX, R10 MOVL 24(SI), AX BSWAPL AX MOVL AX, 24(BP) ADDL AX, R9 MOVL R14, AX ADDL $0x923f82a4, R9 MOVL R14, CX RORL $0x06, AX MOVL R14, DX RORL $0x0b, CX XORL CX, AX MOVL R14, CX RORL $0x19, DX ANDL R15, CX XORL AX, DX MOVL R14, AX NOTL AX ADDL DX, R9 ANDL R8, AX XORL CX, AX ADDL R9, AX MOVL R10, DI MOVL R12, BX RORL $0x02, DI MOVL R10, DX ANDL R11, BX RORL $0x0d, DX MOVL R10, CX ANDL R12, CX XORL DX, DI XORL CX, BX MOVL R10, DX MOVL R11, CX RORL $0x16, DX ANDL R10, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R9 ADDL AX, R13 ADDL AX, R9 MOVL 28(SI), AX BSWAPL AX MOVL AX, 28(BP) ADDL AX, R8 MOVL R13, AX ADDL $0xab1c5ed5, R8 MOVL R13, CX RORL $0x06, AX MOVL R13, DX RORL $0x0b, CX XORL CX, AX MOVL R13, CX RORL $0x19, DX ANDL R14, CX XORL AX, DX MOVL R13, AX NOTL AX ADDL DX, R8 ANDL R15, AX XORL CX, AX ADDL R8, AX MOVL R9, DI MOVL R11, BX RORL $0x02, DI MOVL R9, DX ANDL R10, BX RORL $0x0d, DX MOVL R9, CX ANDL R11, CX XORL DX, DI XORL CX, BX MOVL R9, DX MOVL R10, CX RORL $0x16, DX ANDL R9, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R8 ADDL AX, R12 ADDL AX, R8 MOVL 32(SI), AX BSWAPL AX MOVL AX, 32(BP) ADDL AX, R15 MOVL R12, AX ADDL $0xd807aa98, R15 MOVL R12, CX RORL $0x06, AX MOVL R12, DX RORL $0x0b, CX XORL CX, AX MOVL R12, CX RORL $0x19, DX ANDL R13, CX XORL AX, DX MOVL R12, AX NOTL AX ADDL DX, R15 ANDL R14, AX XORL CX, AX ADDL R15, AX MOVL R8, DI MOVL R10, BX RORL $0x02, DI MOVL R8, DX ANDL R9, BX RORL $0x0d, DX MOVL R8, CX ANDL R10, CX XORL DX, DI XORL CX, BX MOVL R8, DX MOVL R9, CX RORL $0x16, DX ANDL R8, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R15 ADDL AX, R11 ADDL AX, R15 MOVL 36(SI), AX BSWAPL AX MOVL AX, 36(BP) ADDL AX, R14 MOVL R11, AX ADDL $0x12835b01, R14 MOVL R11, CX RORL $0x06, AX MOVL R11, DX RORL $0x0b, CX XORL CX, AX MOVL R11, CX RORL $0x19, DX ANDL R12, CX XORL AX, DX MOVL R11, AX NOTL AX ADDL DX, R14 ANDL R13, AX XORL CX, AX ADDL R14, AX MOVL R15, DI MOVL R9, BX RORL $0x02, DI MOVL R15, DX ANDL R8, BX RORL $0x0d, DX MOVL R15, CX ANDL R9, CX XORL DX, DI XORL CX, BX MOVL R15, DX MOVL R8, CX RORL $0x16, DX ANDL R15, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R14 ADDL AX, R10 ADDL AX, R14 MOVL 40(SI), AX BSWAPL AX MOVL AX, 40(BP) ADDL AX, R13 MOVL R10, AX ADDL $0x243185be, R13 MOVL R10, CX RORL $0x06, AX MOVL R10, DX RORL $0x0b, CX XORL CX, AX MOVL R10, CX RORL $0x19, DX ANDL R11, CX XORL AX, DX MOVL R10, AX NOTL AX ADDL DX, R13 ANDL R12, AX XORL CX, AX ADDL R13, AX MOVL R14, DI MOVL R8, BX RORL $0x02, DI MOVL R14, DX ANDL R15, BX RORL $0x0d, DX MOVL R14, CX ANDL R8, CX XORL DX, DI XORL CX, BX MOVL R14, DX MOVL R15, CX RORL $0x16, DX ANDL R14, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R13 ADDL AX, R9 ADDL AX, R13 MOVL 44(SI), AX BSWAPL AX MOVL AX, 44(BP) ADDL AX, R12 MOVL R9, AX ADDL $0x550c7dc3, R12 MOVL R9, CX RORL $0x06, AX MOVL R9, DX RORL $0x0b, CX XORL CX, AX MOVL R9, CX RORL $0x19, DX ANDL R10, CX XORL AX, DX MOVL R9, AX NOTL AX ADDL DX, R12 ANDL R11, AX XORL CX, AX ADDL R12, AX MOVL R13, DI MOVL R15, BX RORL $0x02, DI MOVL R13, DX ANDL R14, BX RORL $0x0d, DX MOVL R13, CX ANDL R15, CX XORL DX, DI XORL CX, BX MOVL R13, DX MOVL R14, CX RORL $0x16, DX ANDL R13, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R12 ADDL AX, R8 ADDL AX, R12 MOVL 48(SI), AX BSWAPL AX MOVL AX, 48(BP) ADDL AX, R11 MOVL R8, AX ADDL $0x72be5d74, R11 MOVL R8, CX RORL $0x06, AX MOVL R8, DX RORL $0x0b, CX XORL CX, AX MOVL R8, CX RORL $0x19, DX ANDL R9, CX XORL AX, DX MOVL R8, AX NOTL AX ADDL DX, R11 ANDL R10, AX XORL CX, AX ADDL R11, AX MOVL R12, DI MOVL R14, BX RORL $0x02, DI MOVL R12, DX ANDL R13, BX RORL $0x0d, DX MOVL R12, CX ANDL R14, CX XORL DX, DI XORL CX, BX MOVL R12, DX MOVL R13, CX RORL $0x16, DX ANDL R12, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R11 ADDL AX, R15 ADDL AX, R11 MOVL 52(SI), AX BSWAPL AX MOVL AX, 52(BP) ADDL AX, R10 MOVL R15, AX ADDL $0x80deb1fe, R10 MOVL R15, CX RORL $0x06, AX MOVL R15, DX RORL $0x0b, CX XORL CX, AX MOVL R15, CX RORL $0x19, DX ANDL R8, CX XORL AX, DX MOVL R15, AX NOTL AX ADDL DX, R10 ANDL R9, AX XORL CX, AX ADDL R10, AX MOVL R11, DI MOVL R13, BX RORL $0x02, DI MOVL R11, DX ANDL R12, BX RORL $0x0d, DX MOVL R11, CX ANDL R13, CX XORL DX, DI XORL CX, BX MOVL R11, DX MOVL R12, CX RORL $0x16, DX ANDL R11, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R10 ADDL AX, R14 ADDL AX, R10 MOVL 56(SI), AX BSWAPL AX MOVL AX, 56(BP) ADDL AX, R9 MOVL R14, AX ADDL $0x9bdc06a7, R9 MOVL R14, CX RORL $0x06, AX MOVL R14, DX RORL $0x0b, CX XORL CX, AX MOVL R14, CX RORL $0x19, DX ANDL R15, CX XORL AX, DX MOVL R14, AX NOTL AX ADDL DX, R9 ANDL R8, AX XORL CX, AX ADDL R9, AX MOVL R10, DI MOVL R12, BX RORL $0x02, DI MOVL R10, DX ANDL R11, BX RORL $0x0d, DX MOVL R10, CX ANDL R12, CX XORL DX, DI XORL CX, BX MOVL R10, DX MOVL R11, CX RORL $0x16, DX ANDL R10, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R9 ADDL AX, R13 ADDL AX, R9 MOVL 60(SI), AX BSWAPL AX MOVL AX, 60(BP) ADDL AX, R8 MOVL R13, AX ADDL $0xc19bf174, R8 MOVL R13, CX RORL $0x06, AX MOVL R13, DX RORL $0x0b, CX XORL CX, AX MOVL R13, CX RORL $0x19, DX ANDL R14, CX XORL AX, DX MOVL R13, AX NOTL AX ADDL DX, R8 ANDL R15, AX XORL CX, AX ADDL R8, AX MOVL R9, DI MOVL R11, BX RORL $0x02, DI MOVL R9, DX ANDL R10, BX RORL $0x0d, DX MOVL R9, CX ANDL R11, CX XORL DX, DI XORL CX, BX MOVL R9, DX MOVL R10, CX RORL $0x16, DX ANDL R9, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R8 ADDL AX, R12 ADDL AX, R8 MOVL 56(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 4(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 36(BP), AX XORL CX, BX XORL DX, BX ADDL (BP), BX ADDL BX, AX MOVL AX, 64(BP) ADDL AX, R15 MOVL R12, AX ADDL $0xe49b69c1, R15 MOVL R12, CX RORL $0x06, AX MOVL R12, DX RORL $0x0b, CX XORL CX, AX MOVL R12, CX RORL $0x19, DX ANDL R13, CX XORL AX, DX MOVL R12, AX NOTL AX ADDL DX, R15 ANDL R14, AX XORL CX, AX ADDL R15, AX MOVL R8, DI MOVL R10, BX RORL $0x02, DI MOVL R8, DX ANDL R9, BX RORL $0x0d, DX MOVL R8, CX ANDL R10, CX XORL DX, DI XORL CX, BX MOVL R8, DX MOVL R9, CX RORL $0x16, DX ANDL R8, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R15 ADDL AX, R11 ADDL AX, R15 MOVL 60(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 8(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 40(BP), AX XORL CX, BX XORL DX, BX ADDL 4(BP), BX ADDL BX, AX MOVL AX, 68(BP) ADDL AX, R14 MOVL R11, AX ADDL $0xefbe4786, R14 MOVL R11, CX RORL $0x06, AX MOVL R11, DX RORL $0x0b, CX XORL CX, AX MOVL R11, CX RORL $0x19, DX ANDL R12, CX XORL AX, DX MOVL R11, AX NOTL AX ADDL DX, R14 ANDL R13, AX XORL CX, AX ADDL R14, AX MOVL R15, DI MOVL R9, BX RORL $0x02, DI MOVL R15, DX ANDL R8, BX RORL $0x0d, DX MOVL R15, CX ANDL R9, CX XORL DX, DI XORL CX, BX MOVL R15, DX MOVL R8, CX RORL $0x16, DX ANDL R15, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R14 ADDL AX, R10 ADDL AX, R14 MOVL 64(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 12(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 44(BP), AX XORL CX, BX XORL DX, BX ADDL 8(BP), BX ADDL BX, AX MOVL AX, 72(BP) ADDL AX, R13 MOVL R10, AX ADDL $0x0fc19dc6, R13 MOVL R10, CX RORL $0x06, AX MOVL R10, DX RORL $0x0b, CX XORL CX, AX MOVL R10, CX RORL $0x19, DX ANDL R11, CX XORL AX, DX MOVL R10, AX NOTL AX ADDL DX, R13 ANDL R12, AX XORL CX, AX ADDL R13, AX MOVL R14, DI MOVL R8, BX RORL $0x02, DI MOVL R14, DX ANDL R15, BX RORL $0x0d, DX MOVL R14, CX ANDL R8, CX XORL DX, DI XORL CX, BX MOVL R14, DX MOVL R15, CX RORL $0x16, DX ANDL R14, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R13 ADDL AX, R9 ADDL AX, R13 MOVL 68(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 16(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 48(BP), AX XORL CX, BX XORL DX, BX ADDL 12(BP), BX ADDL BX, AX MOVL AX, 76(BP) ADDL AX, R12 MOVL R9, AX ADDL $0x240ca1cc, R12 MOVL R9, CX RORL $0x06, AX MOVL R9, DX RORL $0x0b, CX XORL CX, AX MOVL R9, CX RORL $0x19, DX ANDL R10, CX XORL AX, DX MOVL R9, AX NOTL AX ADDL DX, R12 ANDL R11, AX XORL CX, AX ADDL R12, AX MOVL R13, DI MOVL R15, BX RORL $0x02, DI MOVL R13, DX ANDL R14, BX RORL $0x0d, DX MOVL R13, CX ANDL R15, CX XORL DX, DI XORL CX, BX MOVL R13, DX MOVL R14, CX RORL $0x16, DX ANDL R13, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R12 ADDL AX, R8 ADDL AX, R12 MOVL 72(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 20(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 52(BP), AX XORL CX, BX XORL DX, BX ADDL 16(BP), BX ADDL BX, AX MOVL AX, 80(BP) ADDL AX, R11 MOVL R8, AX ADDL $0x2de92c6f, R11 MOVL R8, CX RORL $0x06, AX MOVL R8, DX RORL $0x0b, CX XORL CX, AX MOVL R8, CX RORL $0x19, DX ANDL R9, CX XORL AX, DX MOVL R8, AX NOTL AX ADDL DX, R11 ANDL R10, AX XORL CX, AX ADDL R11, AX MOVL R12, DI MOVL R14, BX RORL $0x02, DI MOVL R12, DX ANDL R13, BX RORL $0x0d, DX MOVL R12, CX ANDL R14, CX XORL DX, DI XORL CX, BX MOVL R12, DX MOVL R13, CX RORL $0x16, DX ANDL R12, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R11 ADDL AX, R15 ADDL AX, R11 MOVL 76(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 24(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 56(BP), AX XORL CX, BX XORL DX, BX ADDL 20(BP), BX ADDL BX, AX MOVL AX, 84(BP) ADDL AX, R10 MOVL R15, AX ADDL $0x4a7484aa, R10 MOVL R15, CX RORL $0x06, AX MOVL R15, DX RORL $0x0b, CX XORL CX, AX MOVL R15, CX RORL $0x19, DX ANDL R8, CX XORL AX, DX MOVL R15, AX NOTL AX ADDL DX, R10 ANDL R9, AX XORL CX, AX ADDL R10, AX MOVL R11, DI MOVL R13, BX RORL $0x02, DI MOVL R11, DX ANDL R12, BX RORL $0x0d, DX MOVL R11, CX ANDL R13, CX XORL DX, DI XORL CX, BX MOVL R11, DX MOVL R12, CX RORL $0x16, DX ANDL R11, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R10 ADDL AX, R14 ADDL AX, R10 MOVL 80(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 28(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 60(BP), AX XORL CX, BX XORL DX, BX ADDL 24(BP), BX ADDL BX, AX MOVL AX, 88(BP) ADDL AX, R9 MOVL R14, AX ADDL $0x5cb0a9dc, R9 MOVL R14, CX RORL $0x06, AX MOVL R14, DX RORL $0x0b, CX XORL CX, AX MOVL R14, CX RORL $0x19, DX ANDL R15, CX XORL AX, DX MOVL R14, AX NOTL AX ADDL DX, R9 ANDL R8, AX XORL CX, AX ADDL R9, AX MOVL R10, DI MOVL R12, BX RORL $0x02, DI MOVL R10, DX ANDL R11, BX RORL $0x0d, DX MOVL R10, CX ANDL R12, CX XORL DX, DI XORL CX, BX MOVL R10, DX MOVL R11, CX RORL $0x16, DX ANDL R10, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R9 ADDL AX, R13 ADDL AX, R9 MOVL 84(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 32(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 64(BP), AX XORL CX, BX XORL DX, BX ADDL 28(BP), BX ADDL BX, AX MOVL AX, 92(BP) ADDL AX, R8 MOVL R13, AX ADDL $0x76f988da, R8 MOVL R13, CX RORL $0x06, AX MOVL R13, DX RORL $0x0b, CX XORL CX, AX MOVL R13, CX RORL $0x19, DX ANDL R14, CX XORL AX, DX MOVL R13, AX NOTL AX ADDL DX, R8 ANDL R15, AX XORL CX, AX ADDL R8, AX MOVL R9, DI MOVL R11, BX RORL $0x02, DI MOVL R9, DX ANDL R10, BX RORL $0x0d, DX MOVL R9, CX ANDL R11, CX XORL DX, DI XORL CX, BX MOVL R9, DX MOVL R10, CX RORL $0x16, DX ANDL R9, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R8 ADDL AX, R12 ADDL AX, R8 MOVL 88(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 36(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 68(BP), AX XORL CX, BX XORL DX, BX ADDL 32(BP), BX ADDL BX, AX MOVL AX, 96(BP) ADDL AX, R15 MOVL R12, AX ADDL $0x983e5152, R15 MOVL R12, CX RORL $0x06, AX MOVL R12, DX RORL $0x0b, CX XORL CX, AX MOVL R12, CX RORL $0x19, DX ANDL R13, CX XORL AX, DX MOVL R12, AX NOTL AX ADDL DX, R15 ANDL R14, AX XORL CX, AX ADDL R15, AX MOVL R8, DI MOVL R10, BX RORL $0x02, DI MOVL R8, DX ANDL R9, BX RORL $0x0d, DX MOVL R8, CX ANDL R10, CX XORL DX, DI XORL CX, BX MOVL R8, DX MOVL R9, CX RORL $0x16, DX ANDL R8, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R15 ADDL AX, R11 ADDL AX, R15 MOVL 92(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 40(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 72(BP), AX XORL CX, BX XORL DX, BX ADDL 36(BP), BX ADDL BX, AX MOVL AX, 100(BP) ADDL AX, R14 MOVL R11, AX ADDL $0xa831c66d, R14 MOVL R11, CX RORL $0x06, AX MOVL R11, DX RORL $0x0b, CX XORL CX, AX MOVL R11, CX RORL $0x19, DX ANDL R12, CX XORL AX, DX MOVL R11, AX NOTL AX ADDL DX, R14 ANDL R13, AX XORL CX, AX ADDL R14, AX MOVL R15, DI MOVL R9, BX RORL $0x02, DI MOVL R15, DX ANDL R8, BX RORL $0x0d, DX MOVL R15, CX ANDL R9, CX XORL DX, DI XORL CX, BX MOVL R15, DX MOVL R8, CX RORL $0x16, DX ANDL R15, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R14 ADDL AX, R10 ADDL AX, R14 MOVL 96(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 44(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 76(BP), AX XORL CX, BX XORL DX, BX ADDL 40(BP), BX ADDL BX, AX MOVL AX, 104(BP) ADDL AX, R13 MOVL R10, AX ADDL $0xb00327c8, R13 MOVL R10, CX RORL $0x06, AX MOVL R10, DX RORL $0x0b, CX XORL CX, AX MOVL R10, CX RORL $0x19, DX ANDL R11, CX XORL AX, DX MOVL R10, AX NOTL AX ADDL DX, R13 ANDL R12, AX XORL CX, AX ADDL R13, AX MOVL R14, DI MOVL R8, BX RORL $0x02, DI MOVL R14, DX ANDL R15, BX RORL $0x0d, DX MOVL R14, CX ANDL R8, CX XORL DX, DI XORL CX, BX MOVL R14, DX MOVL R15, CX RORL $0x16, DX ANDL R14, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R13 ADDL AX, R9 ADDL AX, R13 MOVL 100(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 48(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 80(BP), AX XORL CX, BX XORL DX, BX ADDL 44(BP), BX ADDL BX, AX MOVL AX, 108(BP) ADDL AX, R12 MOVL R9, AX ADDL $0xbf597fc7, R12 MOVL R9, CX RORL $0x06, AX MOVL R9, DX RORL $0x0b, CX XORL CX, AX MOVL R9, CX RORL $0x19, DX ANDL R10, CX XORL AX, DX MOVL R9, AX NOTL AX ADDL DX, R12 ANDL R11, AX XORL CX, AX ADDL R12, AX MOVL R13, DI MOVL R15, BX RORL $0x02, DI MOVL R13, DX ANDL R14, BX RORL $0x0d, DX MOVL R13, CX ANDL R15, CX XORL DX, DI XORL CX, BX MOVL R13, DX MOVL R14, CX RORL $0x16, DX ANDL R13, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R12 ADDL AX, R8 ADDL AX, R12 MOVL 104(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 52(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 84(BP), AX XORL CX, BX XORL DX, BX ADDL 48(BP), BX ADDL BX, AX MOVL AX, 112(BP) ADDL AX, R11 MOVL R8, AX ADDL $0xc6e00bf3, R11 MOVL R8, CX RORL $0x06, AX MOVL R8, DX RORL $0x0b, CX XORL CX, AX MOVL R8, CX RORL $0x19, DX ANDL R9, CX XORL AX, DX MOVL R8, AX NOTL AX ADDL DX, R11 ANDL R10, AX XORL CX, AX ADDL R11, AX MOVL R12, DI MOVL R14, BX RORL $0x02, DI MOVL R12, DX ANDL R13, BX RORL $0x0d, DX MOVL R12, CX ANDL R14, CX XORL DX, DI XORL CX, BX MOVL R12, DX MOVL R13, CX RORL $0x16, DX ANDL R12, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R11 ADDL AX, R15 ADDL AX, R11 MOVL 108(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 56(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 88(BP), AX XORL CX, BX XORL DX, BX ADDL 52(BP), BX ADDL BX, AX MOVL AX, 116(BP) ADDL AX, R10 MOVL R15, AX ADDL $0xd5a79147, R10 MOVL R15, CX RORL $0x06, AX MOVL R15, DX RORL $0x0b, CX XORL CX, AX MOVL R15, CX RORL $0x19, DX ANDL R8, CX XORL AX, DX MOVL R15, AX NOTL AX ADDL DX, R10 ANDL R9, AX XORL CX, AX ADDL R10, AX MOVL R11, DI MOVL R13, BX RORL $0x02, DI MOVL R11, DX ANDL R12, BX RORL $0x0d, DX MOVL R11, CX ANDL R13, CX XORL DX, DI XORL CX, BX MOVL R11, DX MOVL R12, CX RORL $0x16, DX ANDL R11, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R10 ADDL AX, R14 ADDL AX, R10 MOVL 112(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 60(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 92(BP), AX XORL CX, BX XORL DX, BX ADDL 56(BP), BX ADDL BX, AX MOVL AX, 120(BP) ADDL AX, R9 MOVL R14, AX ADDL $0x06ca6351, R9 MOVL R14, CX RORL $0x06, AX MOVL R14, DX RORL $0x0b, CX XORL CX, AX MOVL R14, CX RORL $0x19, DX ANDL R15, CX XORL AX, DX MOVL R14, AX NOTL AX ADDL DX, R9 ANDL R8, AX XORL CX, AX ADDL R9, AX MOVL R10, DI MOVL R12, BX RORL $0x02, DI MOVL R10, DX ANDL R11, BX RORL $0x0d, DX MOVL R10, CX ANDL R12, CX XORL DX, DI XORL CX, BX MOVL R10, DX MOVL R11, CX RORL $0x16, DX ANDL R10, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R9 ADDL AX, R13 ADDL AX, R9 MOVL 116(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 64(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 96(BP), AX XORL CX, BX XORL DX, BX ADDL 60(BP), BX ADDL BX, AX MOVL AX, 124(BP) ADDL AX, R8 MOVL R13, AX ADDL $0x14292967, R8 MOVL R13, CX RORL $0x06, AX MOVL R13, DX RORL $0x0b, CX XORL CX, AX MOVL R13, CX RORL $0x19, DX ANDL R14, CX XORL AX, DX MOVL R13, AX NOTL AX ADDL DX, R8 ANDL R15, AX XORL CX, AX ADDL R8, AX MOVL R9, DI MOVL R11, BX RORL $0x02, DI MOVL R9, DX ANDL R10, BX RORL $0x0d, DX MOVL R9, CX ANDL R11, CX XORL DX, DI XORL CX, BX MOVL R9, DX MOVL R10, CX RORL $0x16, DX ANDL R9, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R8 ADDL AX, R12 ADDL AX, R8 MOVL 120(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 68(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 100(BP), AX XORL CX, BX XORL DX, BX ADDL 64(BP), BX ADDL BX, AX MOVL AX, 128(BP) ADDL AX, R15 MOVL R12, AX ADDL $0x27b70a85, R15 MOVL R12, CX RORL $0x06, AX MOVL R12, DX RORL $0x0b, CX XORL CX, AX MOVL R12, CX RORL $0x19, DX ANDL R13, CX XORL AX, DX MOVL R12, AX NOTL AX ADDL DX, R15 ANDL R14, AX XORL CX, AX ADDL R15, AX MOVL R8, DI MOVL R10, BX RORL $0x02, DI MOVL R8, DX ANDL R9, BX RORL $0x0d, DX MOVL R8, CX ANDL R10, CX XORL DX, DI XORL CX, BX MOVL R8, DX MOVL R9, CX RORL $0x16, DX ANDL R8, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R15 ADDL AX, R11 ADDL AX, R15 MOVL 124(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 72(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 104(BP), AX XORL CX, BX XORL DX, BX ADDL 68(BP), BX ADDL BX, AX MOVL AX, 132(BP) ADDL AX, R14 MOVL R11, AX ADDL $0x2e1b2138, R14 MOVL R11, CX RORL $0x06, AX MOVL R11, DX RORL $0x0b, CX XORL CX, AX MOVL R11, CX RORL $0x19, DX ANDL R12, CX XORL AX, DX MOVL R11, AX NOTL AX ADDL DX, R14 ANDL R13, AX XORL CX, AX ADDL R14, AX MOVL R15, DI MOVL R9, BX RORL $0x02, DI MOVL R15, DX ANDL R8, BX RORL $0x0d, DX MOVL R15, CX ANDL R9, CX XORL DX, DI XORL CX, BX MOVL R15, DX MOVL R8, CX RORL $0x16, DX ANDL R15, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R14 ADDL AX, R10 ADDL AX, R14 MOVL 128(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 76(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 108(BP), AX XORL CX, BX XORL DX, BX ADDL 72(BP), BX ADDL BX, AX MOVL AX, 136(BP) ADDL AX, R13 MOVL R10, AX ADDL $0x4d2c6dfc, R13 MOVL R10, CX RORL $0x06, AX MOVL R10, DX RORL $0x0b, CX XORL CX, AX MOVL R10, CX RORL $0x19, DX ANDL R11, CX XORL AX, DX MOVL R10, AX NOTL AX ADDL DX, R13 ANDL R12, AX XORL CX, AX ADDL R13, AX MOVL R14, DI MOVL R8, BX RORL $0x02, DI MOVL R14, DX ANDL R15, BX RORL $0x0d, DX MOVL R14, CX ANDL R8, CX XORL DX, DI XORL CX, BX MOVL R14, DX MOVL R15, CX RORL $0x16, DX ANDL R14, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R13 ADDL AX, R9 ADDL AX, R13 MOVL 132(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 80(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 112(BP), AX XORL CX, BX XORL DX, BX ADDL 76(BP), BX ADDL BX, AX MOVL AX, 140(BP) ADDL AX, R12 MOVL R9, AX ADDL $0x53380d13, R12 MOVL R9, CX RORL $0x06, AX MOVL R9, DX RORL $0x0b, CX XORL CX, AX MOVL R9, CX RORL $0x19, DX ANDL R10, CX XORL AX, DX MOVL R9, AX NOTL AX ADDL DX, R12 ANDL R11, AX XORL CX, AX ADDL R12, AX MOVL R13, DI MOVL R15, BX RORL $0x02, DI MOVL R13, DX ANDL R14, BX RORL $0x0d, DX MOVL R13, CX ANDL R15, CX XORL DX, DI XORL CX, BX MOVL R13, DX MOVL R14, CX RORL $0x16, DX ANDL R13, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R12 ADDL AX, R8 ADDL AX, R12 MOVL 136(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 84(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 116(BP), AX XORL CX, BX XORL DX, BX ADDL 80(BP), BX ADDL BX, AX MOVL AX, 144(BP) ADDL AX, R11 MOVL R8, AX ADDL $0x650a7354, R11 MOVL R8, CX RORL $0x06, AX MOVL R8, DX RORL $0x0b, CX XORL CX, AX MOVL R8, CX RORL $0x19, DX ANDL R9, CX XORL AX, DX MOVL R8, AX NOTL AX ADDL DX, R11 ANDL R10, AX XORL CX, AX ADDL R11, AX MOVL R12, DI MOVL R14, BX RORL $0x02, DI MOVL R12, DX ANDL R13, BX RORL $0x0d, DX MOVL R12, CX ANDL R14, CX XORL DX, DI XORL CX, BX MOVL R12, DX MOVL R13, CX RORL $0x16, DX ANDL R12, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R11 ADDL AX, R15 ADDL AX, R11 MOVL 140(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 88(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 120(BP), AX XORL CX, BX XORL DX, BX ADDL 84(BP), BX ADDL BX, AX MOVL AX, 148(BP) ADDL AX, R10 MOVL R15, AX ADDL $0x766a0abb, R10 MOVL R15, CX RORL $0x06, AX MOVL R15, DX RORL $0x0b, CX XORL CX, AX MOVL R15, CX RORL $0x19, DX ANDL R8, CX XORL AX, DX MOVL R15, AX NOTL AX ADDL DX, R10 ANDL R9, AX XORL CX, AX ADDL R10, AX MOVL R11, DI MOVL R13, BX RORL $0x02, DI MOVL R11, DX ANDL R12, BX RORL $0x0d, DX MOVL R11, CX ANDL R13, CX XORL DX, DI XORL CX, BX MOVL R11, DX MOVL R12, CX RORL $0x16, DX ANDL R11, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R10 ADDL AX, R14 ADDL AX, R10 MOVL 144(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 92(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 124(BP), AX XORL CX, BX XORL DX, BX ADDL 88(BP), BX ADDL BX, AX MOVL AX, 152(BP) ADDL AX, R9 MOVL R14, AX ADDL $0x81c2c92e, R9 MOVL R14, CX RORL $0x06, AX MOVL R14, DX RORL $0x0b, CX XORL CX, AX MOVL R14, CX RORL $0x19, DX ANDL R15, CX XORL AX, DX MOVL R14, AX NOTL AX ADDL DX, R9 ANDL R8, AX XORL CX, AX ADDL R9, AX MOVL R10, DI MOVL R12, BX RORL $0x02, DI MOVL R10, DX ANDL R11, BX RORL $0x0d, DX MOVL R10, CX ANDL R12, CX XORL DX, DI XORL CX, BX MOVL R10, DX MOVL R11, CX RORL $0x16, DX ANDL R10, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R9 ADDL AX, R13 ADDL AX, R9 MOVL 148(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 96(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 128(BP), AX XORL CX, BX XORL DX, BX ADDL 92(BP), BX ADDL BX, AX MOVL AX, 156(BP) ADDL AX, R8 MOVL R13, AX ADDL $0x92722c85, R8 MOVL R13, CX RORL $0x06, AX MOVL R13, DX RORL $0x0b, CX XORL CX, AX MOVL R13, CX RORL $0x19, DX ANDL R14, CX XORL AX, DX MOVL R13, AX NOTL AX ADDL DX, R8 ANDL R15, AX XORL CX, AX ADDL R8, AX MOVL R9, DI MOVL R11, BX RORL $0x02, DI MOVL R9, DX ANDL R10, BX RORL $0x0d, DX MOVL R9, CX ANDL R11, CX XORL DX, DI XORL CX, BX MOVL R9, DX MOVL R10, CX RORL $0x16, DX ANDL R9, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R8 ADDL AX, R12 ADDL AX, R8 MOVL 152(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 100(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 132(BP), AX XORL CX, BX XORL DX, BX ADDL 96(BP), BX ADDL BX, AX MOVL AX, 160(BP) ADDL AX, R15 MOVL R12, AX ADDL $0xa2bfe8a1, R15 MOVL R12, CX RORL $0x06, AX MOVL R12, DX RORL $0x0b, CX XORL CX, AX MOVL R12, CX RORL $0x19, DX ANDL R13, CX XORL AX, DX MOVL R12, AX NOTL AX ADDL DX, R15 ANDL R14, AX XORL CX, AX ADDL R15, AX MOVL R8, DI MOVL R10, BX RORL $0x02, DI MOVL R8, DX ANDL R9, BX RORL $0x0d, DX MOVL R8, CX ANDL R10, CX XORL DX, DI XORL CX, BX MOVL R8, DX MOVL R9, CX RORL $0x16, DX ANDL R8, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R15 ADDL AX, R11 ADDL AX, R15 MOVL 156(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 104(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 136(BP), AX XORL CX, BX XORL DX, BX ADDL 100(BP), BX ADDL BX, AX MOVL AX, 164(BP) ADDL AX, R14 MOVL R11, AX ADDL $0xa81a664b, R14 MOVL R11, CX RORL $0x06, AX MOVL R11, DX RORL $0x0b, CX XORL CX, AX MOVL R11, CX RORL $0x19, DX ANDL R12, CX XORL AX, DX MOVL R11, AX NOTL AX ADDL DX, R14 ANDL R13, AX XORL CX, AX ADDL R14, AX MOVL R15, DI MOVL R9, BX RORL $0x02, DI MOVL R15, DX ANDL R8, BX RORL $0x0d, DX MOVL R15, CX ANDL R9, CX XORL DX, DI XORL CX, BX MOVL R15, DX MOVL R8, CX RORL $0x16, DX ANDL R15, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R14 ADDL AX, R10 ADDL AX, R14 MOVL 160(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 108(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 140(BP), AX XORL CX, BX XORL DX, BX ADDL 104(BP), BX ADDL BX, AX MOVL AX, 168(BP) ADDL AX, R13 MOVL R10, AX ADDL $0xc24b8b70, R13 MOVL R10, CX RORL $0x06, AX MOVL R10, DX RORL $0x0b, CX XORL CX, AX MOVL R10, CX RORL $0x19, DX ANDL R11, CX XORL AX, DX MOVL R10, AX NOTL AX ADDL DX, R13 ANDL R12, AX XORL CX, AX ADDL R13, AX MOVL R14, DI MOVL R8, BX RORL $0x02, DI MOVL R14, DX ANDL R15, BX RORL $0x0d, DX MOVL R14, CX ANDL R8, CX XORL DX, DI XORL CX, BX MOVL R14, DX MOVL R15, CX RORL $0x16, DX ANDL R14, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R13 ADDL AX, R9 ADDL AX, R13 MOVL 164(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 112(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 144(BP), AX XORL CX, BX XORL DX, BX ADDL 108(BP), BX ADDL BX, AX MOVL AX, 172(BP) ADDL AX, R12 MOVL R9, AX ADDL $0xc76c51a3, R12 MOVL R9, CX RORL $0x06, AX MOVL R9, DX RORL $0x0b, CX XORL CX, AX MOVL R9, CX RORL $0x19, DX ANDL R10, CX XORL AX, DX MOVL R9, AX NOTL AX ADDL DX, R12 ANDL R11, AX XORL CX, AX ADDL R12, AX MOVL R13, DI MOVL R15, BX RORL $0x02, DI MOVL R13, DX ANDL R14, BX RORL $0x0d, DX MOVL R13, CX ANDL R15, CX XORL DX, DI XORL CX, BX MOVL R13, DX MOVL R14, CX RORL $0x16, DX ANDL R13, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R12 ADDL AX, R8 ADDL AX, R12 MOVL 168(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 116(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 148(BP), AX XORL CX, BX XORL DX, BX ADDL 112(BP), BX ADDL BX, AX MOVL AX, 176(BP) ADDL AX, R11 MOVL R8, AX ADDL $0xd192e819, R11 MOVL R8, CX RORL $0x06, AX MOVL R8, DX RORL $0x0b, CX XORL CX, AX MOVL R8, CX RORL $0x19, DX ANDL R9, CX XORL AX, DX MOVL R8, AX NOTL AX ADDL DX, R11 ANDL R10, AX XORL CX, AX ADDL R11, AX MOVL R12, DI MOVL R14, BX RORL $0x02, DI MOVL R12, DX ANDL R13, BX RORL $0x0d, DX MOVL R12, CX ANDL R14, CX XORL DX, DI XORL CX, BX MOVL R12, DX MOVL R13, CX RORL $0x16, DX ANDL R12, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R11 ADDL AX, R15 ADDL AX, R11 MOVL 172(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 120(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 152(BP), AX XORL CX, BX XORL DX, BX ADDL 116(BP), BX ADDL BX, AX MOVL AX, 180(BP) ADDL AX, R10 MOVL R15, AX ADDL $0xd6990624, R10 MOVL R15, CX RORL $0x06, AX MOVL R15, DX RORL $0x0b, CX XORL CX, AX MOVL R15, CX RORL $0x19, DX ANDL R8, CX XORL AX, DX MOVL R15, AX NOTL AX ADDL DX, R10 ANDL R9, AX XORL CX, AX ADDL R10, AX MOVL R11, DI MOVL R13, BX RORL $0x02, DI MOVL R11, DX ANDL R12, BX RORL $0x0d, DX MOVL R11, CX ANDL R13, CX XORL DX, DI XORL CX, BX MOVL R11, DX MOVL R12, CX RORL $0x16, DX ANDL R11, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R10 ADDL AX, R14 ADDL AX, R10 MOVL 176(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 124(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 156(BP), AX XORL CX, BX XORL DX, BX ADDL 120(BP), BX ADDL BX, AX MOVL AX, 184(BP) ADDL AX, R9 MOVL R14, AX ADDL $0xf40e3585, R9 MOVL R14, CX RORL $0x06, AX MOVL R14, DX RORL $0x0b, CX XORL CX, AX MOVL R14, CX RORL $0x19, DX ANDL R15, CX XORL AX, DX MOVL R14, AX NOTL AX ADDL DX, R9 ANDL R8, AX XORL CX, AX ADDL R9, AX MOVL R10, DI MOVL R12, BX RORL $0x02, DI MOVL R10, DX ANDL R11, BX RORL $0x0d, DX MOVL R10, CX ANDL R12, CX XORL DX, DI XORL CX, BX MOVL R10, DX MOVL R11, CX RORL $0x16, DX ANDL R10, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R9 ADDL AX, R13 ADDL AX, R9 MOVL 180(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 128(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 160(BP), AX XORL CX, BX XORL DX, BX ADDL 124(BP), BX ADDL BX, AX MOVL AX, 188(BP) ADDL AX, R8 MOVL R13, AX ADDL $0x106aa070, R8 MOVL R13, CX RORL $0x06, AX MOVL R13, DX RORL $0x0b, CX XORL CX, AX MOVL R13, CX RORL $0x19, DX ANDL R14, CX XORL AX, DX MOVL R13, AX NOTL AX ADDL DX, R8 ANDL R15, AX XORL CX, AX ADDL R8, AX MOVL R9, DI MOVL R11, BX RORL $0x02, DI MOVL R9, DX ANDL R10, BX RORL $0x0d, DX MOVL R9, CX ANDL R11, CX XORL DX, DI XORL CX, BX MOVL R9, DX MOVL R10, CX RORL $0x16, DX ANDL R9, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R8 ADDL AX, R12 ADDL AX, R8 MOVL 184(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 132(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 164(BP), AX XORL CX, BX XORL DX, BX ADDL 128(BP), BX ADDL BX, AX MOVL AX, 192(BP) ADDL AX, R15 MOVL R12, AX ADDL $0x19a4c116, R15 MOVL R12, CX RORL $0x06, AX MOVL R12, DX RORL $0x0b, CX XORL CX, AX MOVL R12, CX RORL $0x19, DX ANDL R13, CX XORL AX, DX MOVL R12, AX NOTL AX ADDL DX, R15 ANDL R14, AX XORL CX, AX ADDL R15, AX MOVL R8, DI MOVL R10, BX RORL $0x02, DI MOVL R8, DX ANDL R9, BX RORL $0x0d, DX MOVL R8, CX ANDL R10, CX XORL DX, DI XORL CX, BX MOVL R8, DX MOVL R9, CX RORL $0x16, DX ANDL R8, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R15 ADDL AX, R11 ADDL AX, R15 MOVL 188(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 136(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 168(BP), AX XORL CX, BX XORL DX, BX ADDL 132(BP), BX ADDL BX, AX MOVL AX, 196(BP) ADDL AX, R14 MOVL R11, AX ADDL $0x1e376c08, R14 MOVL R11, CX RORL $0x06, AX MOVL R11, DX RORL $0x0b, CX XORL CX, AX MOVL R11, CX RORL $0x19, DX ANDL R12, CX XORL AX, DX MOVL R11, AX NOTL AX ADDL DX, R14 ANDL R13, AX XORL CX, AX ADDL R14, AX MOVL R15, DI MOVL R9, BX RORL $0x02, DI MOVL R15, DX ANDL R8, BX RORL $0x0d, DX MOVL R15, CX ANDL R9, CX XORL DX, DI XORL CX, BX MOVL R15, DX MOVL R8, CX RORL $0x16, DX ANDL R15, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R14 ADDL AX, R10 ADDL AX, R14 MOVL 192(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 140(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 172(BP), AX XORL CX, BX XORL DX, BX ADDL 136(BP), BX ADDL BX, AX MOVL AX, 200(BP) ADDL AX, R13 MOVL R10, AX ADDL $0x2748774c, R13 MOVL R10, CX RORL $0x06, AX MOVL R10, DX RORL $0x0b, CX XORL CX, AX MOVL R10, CX RORL $0x19, DX ANDL R11, CX XORL AX, DX MOVL R10, AX NOTL AX ADDL DX, R13 ANDL R12, AX XORL CX, AX ADDL R13, AX MOVL R14, DI MOVL R8, BX RORL $0x02, DI MOVL R14, DX ANDL R15, BX RORL $0x0d, DX MOVL R14, CX ANDL R8, CX XORL DX, DI XORL CX, BX MOVL R14, DX MOVL R15, CX RORL $0x16, DX ANDL R14, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R13 ADDL AX, R9 ADDL AX, R13 MOVL 196(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 144(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 176(BP), AX XORL CX, BX XORL DX, BX ADDL 140(BP), BX ADDL BX, AX MOVL AX, 204(BP) ADDL AX, R12 MOVL R9, AX ADDL $0x34b0bcb5, R12 MOVL R9, CX RORL $0x06, AX MOVL R9, DX RORL $0x0b, CX XORL CX, AX MOVL R9, CX RORL $0x19, DX ANDL R10, CX XORL AX, DX MOVL R9, AX NOTL AX ADDL DX, R12 ANDL R11, AX XORL CX, AX ADDL R12, AX MOVL R13, DI MOVL R15, BX RORL $0x02, DI MOVL R13, DX ANDL R14, BX RORL $0x0d, DX MOVL R13, CX ANDL R15, CX XORL DX, DI XORL CX, BX MOVL R13, DX MOVL R14, CX RORL $0x16, DX ANDL R13, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R12 ADDL AX, R8 ADDL AX, R12 MOVL 200(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 148(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 180(BP), AX XORL CX, BX XORL DX, BX ADDL 144(BP), BX ADDL BX, AX MOVL AX, 208(BP) ADDL AX, R11 MOVL R8, AX ADDL $0x391c0cb3, R11 MOVL R8, CX RORL $0x06, AX MOVL R8, DX RORL $0x0b, CX XORL CX, AX MOVL R8, CX RORL $0x19, DX ANDL R9, CX XORL AX, DX MOVL R8, AX NOTL AX ADDL DX, R11 ANDL R10, AX XORL CX, AX ADDL R11, AX MOVL R12, DI MOVL R14, BX RORL $0x02, DI MOVL R12, DX ANDL R13, BX RORL $0x0d, DX MOVL R12, CX ANDL R14, CX XORL DX, DI XORL CX, BX MOVL R12, DX MOVL R13, CX RORL $0x16, DX ANDL R12, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R11 ADDL AX, R15 ADDL AX, R11 MOVL 204(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 152(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 184(BP), AX XORL CX, BX XORL DX, BX ADDL 148(BP), BX ADDL BX, AX MOVL AX, 212(BP) ADDL AX, R10 MOVL R15, AX ADDL $0x4ed8aa4a, R10 MOVL R15, CX RORL $0x06, AX MOVL R15, DX RORL $0x0b, CX XORL CX, AX MOVL R15, CX RORL $0x19, DX ANDL R8, CX XORL AX, DX MOVL R15, AX NOTL AX ADDL DX, R10 ANDL R9, AX XORL CX, AX ADDL R10, AX MOVL R11, DI MOVL R13, BX RORL $0x02, DI MOVL R11, DX ANDL R12, BX RORL $0x0d, DX MOVL R11, CX ANDL R13, CX XORL DX, DI XORL CX, BX MOVL R11, DX MOVL R12, CX RORL $0x16, DX ANDL R11, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R10 ADDL AX, R14 ADDL AX, R10 MOVL 208(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 156(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 188(BP), AX XORL CX, BX XORL DX, BX ADDL 152(BP), BX ADDL BX, AX MOVL AX, 216(BP) ADDL AX, R9 MOVL R14, AX ADDL $0x5b9cca4f, R9 MOVL R14, CX RORL $0x06, AX MOVL R14, DX RORL $0x0b, CX XORL CX, AX MOVL R14, CX RORL $0x19, DX ANDL R15, CX XORL AX, DX MOVL R14, AX NOTL AX ADDL DX, R9 ANDL R8, AX XORL CX, AX ADDL R9, AX MOVL R10, DI MOVL R12, BX RORL $0x02, DI MOVL R10, DX ANDL R11, BX RORL $0x0d, DX MOVL R10, CX ANDL R12, CX XORL DX, DI XORL CX, BX MOVL R10, DX MOVL R11, CX RORL $0x16, DX ANDL R10, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R9 ADDL AX, R13 ADDL AX, R9 MOVL 212(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 160(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 192(BP), AX XORL CX, BX XORL DX, BX ADDL 156(BP), BX ADDL BX, AX MOVL AX, 220(BP) ADDL AX, R8 MOVL R13, AX ADDL $0x682e6ff3, R8 MOVL R13, CX RORL $0x06, AX MOVL R13, DX RORL $0x0b, CX XORL CX, AX MOVL R13, CX RORL $0x19, DX ANDL R14, CX XORL AX, DX MOVL R13, AX NOTL AX ADDL DX, R8 ANDL R15, AX XORL CX, AX ADDL R8, AX MOVL R9, DI MOVL R11, BX RORL $0x02, DI MOVL R9, DX ANDL R10, BX RORL $0x0d, DX MOVL R9, CX ANDL R11, CX XORL DX, DI XORL CX, BX MOVL R9, DX MOVL R10, CX RORL $0x16, DX ANDL R9, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R8 ADDL AX, R12 ADDL AX, R8 MOVL 216(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 164(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 196(BP), AX XORL CX, BX XORL DX, BX ADDL 160(BP), BX ADDL BX, AX MOVL AX, 224(BP) ADDL AX, R15 MOVL R12, AX ADDL $0x748f82ee, R15 MOVL R12, CX RORL $0x06, AX MOVL R12, DX RORL $0x0b, CX XORL CX, AX MOVL R12, CX RORL $0x19, DX ANDL R13, CX XORL AX, DX MOVL R12, AX NOTL AX ADDL DX, R15 ANDL R14, AX XORL CX, AX ADDL R15, AX MOVL R8, DI MOVL R10, BX RORL $0x02, DI MOVL R8, DX ANDL R9, BX RORL $0x0d, DX MOVL R8, CX ANDL R10, CX XORL DX, DI XORL CX, BX MOVL R8, DX MOVL R9, CX RORL $0x16, DX ANDL R8, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R15 ADDL AX, R11 ADDL AX, R15 MOVL 220(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 168(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 200(BP), AX XORL CX, BX XORL DX, BX ADDL 164(BP), BX ADDL BX, AX MOVL AX, 228(BP) ADDL AX, R14 MOVL R11, AX ADDL $0x78a5636f, R14 MOVL R11, CX RORL $0x06, AX MOVL R11, DX RORL $0x0b, CX XORL CX, AX MOVL R11, CX RORL $0x19, DX ANDL R12, CX XORL AX, DX MOVL R11, AX NOTL AX ADDL DX, R14 ANDL R13, AX XORL CX, AX ADDL R14, AX MOVL R15, DI MOVL R9, BX RORL $0x02, DI MOVL R15, DX ANDL R8, BX RORL $0x0d, DX MOVL R15, CX ANDL R9, CX XORL DX, DI XORL CX, BX MOVL R15, DX MOVL R8, CX RORL $0x16, DX ANDL R15, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R14 ADDL AX, R10 ADDL AX, R14 MOVL 224(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 172(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 204(BP), AX XORL CX, BX XORL DX, BX ADDL 168(BP), BX ADDL BX, AX MOVL AX, 232(BP) ADDL AX, R13 MOVL R10, AX ADDL $0x84c87814, R13 MOVL R10, CX RORL $0x06, AX MOVL R10, DX RORL $0x0b, CX XORL CX, AX MOVL R10, CX RORL $0x19, DX ANDL R11, CX XORL AX, DX MOVL R10, AX NOTL AX ADDL DX, R13 ANDL R12, AX XORL CX, AX ADDL R13, AX MOVL R14, DI MOVL R8, BX RORL $0x02, DI MOVL R14, DX ANDL R15, BX RORL $0x0d, DX MOVL R14, CX ANDL R8, CX XORL DX, DI XORL CX, BX MOVL R14, DX MOVL R15, CX RORL $0x16, DX ANDL R14, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R13 ADDL AX, R9 ADDL AX, R13 MOVL 228(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 176(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 208(BP), AX XORL CX, BX XORL DX, BX ADDL 172(BP), BX ADDL BX, AX MOVL AX, 236(BP) ADDL AX, R12 MOVL R9, AX ADDL $0x8cc70208, R12 MOVL R9, CX RORL $0x06, AX MOVL R9, DX RORL $0x0b, CX XORL CX, AX MOVL R9, CX RORL $0x19, DX ANDL R10, CX XORL AX, DX MOVL R9, AX NOTL AX ADDL DX, R12 ANDL R11, AX XORL CX, AX ADDL R12, AX MOVL R13, DI MOVL R15, BX RORL $0x02, DI MOVL R13, DX ANDL R14, BX RORL $0x0d, DX MOVL R13, CX ANDL R15, CX XORL DX, DI XORL CX, BX MOVL R13, DX MOVL R14, CX RORL $0x16, DX ANDL R13, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R12 ADDL AX, R8 ADDL AX, R12 MOVL 232(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 180(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 212(BP), AX XORL CX, BX XORL DX, BX ADDL 176(BP), BX ADDL BX, AX MOVL AX, 240(BP) ADDL AX, R11 MOVL R8, AX ADDL $0x90befffa, R11 MOVL R8, CX RORL $0x06, AX MOVL R8, DX RORL $0x0b, CX XORL CX, AX MOVL R8, CX RORL $0x19, DX ANDL R9, CX XORL AX, DX MOVL R8, AX NOTL AX ADDL DX, R11 ANDL R10, AX XORL CX, AX ADDL R11, AX MOVL R12, DI MOVL R14, BX RORL $0x02, DI MOVL R12, DX ANDL R13, BX RORL $0x0d, DX MOVL R12, CX ANDL R14, CX XORL DX, DI XORL CX, BX MOVL R12, DX MOVL R13, CX RORL $0x16, DX ANDL R12, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R11 ADDL AX, R15 ADDL AX, R11 MOVL 236(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 184(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 216(BP), AX XORL CX, BX XORL DX, BX ADDL 180(BP), BX ADDL BX, AX MOVL AX, 244(BP) ADDL AX, R10 MOVL R15, AX ADDL $0xa4506ceb, R10 MOVL R15, CX RORL $0x06, AX MOVL R15, DX RORL $0x0b, CX XORL CX, AX MOVL R15, CX RORL $0x19, DX ANDL R8, CX XORL AX, DX MOVL R15, AX NOTL AX ADDL DX, R10 ANDL R9, AX XORL CX, AX ADDL R10, AX MOVL R11, DI MOVL R13, BX RORL $0x02, DI MOVL R11, DX ANDL R12, BX RORL $0x0d, DX MOVL R11, CX ANDL R13, CX XORL DX, DI XORL CX, BX MOVL R11, DX MOVL R12, CX RORL $0x16, DX ANDL R11, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R10 ADDL AX, R14 ADDL AX, R10 MOVL 240(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 188(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 220(BP), AX XORL CX, BX XORL DX, BX ADDL 184(BP), BX ADDL BX, AX MOVL AX, 248(BP) ADDL AX, R9 MOVL R14, AX ADDL $0xbef9a3f7, R9 MOVL R14, CX RORL $0x06, AX MOVL R14, DX RORL $0x0b, CX XORL CX, AX MOVL R14, CX RORL $0x19, DX ANDL R15, CX XORL AX, DX MOVL R14, AX NOTL AX ADDL DX, R9 ANDL R8, AX XORL CX, AX ADDL R9, AX MOVL R10, DI MOVL R12, BX RORL $0x02, DI MOVL R10, DX ANDL R11, BX RORL $0x0d, DX MOVL R10, CX ANDL R12, CX XORL DX, DI XORL CX, BX MOVL R10, DX MOVL R11, CX RORL $0x16, DX ANDL R10, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R9 ADDL AX, R13 ADDL AX, R9 MOVL 244(BP), AX MOVL AX, CX RORL $0x11, AX MOVL CX, DX RORL $0x13, CX SHRL $0x0a, DX MOVL 192(BP), BX XORL CX, AX MOVL BX, CX XORL DX, AX RORL $0x07, BX MOVL CX, DX SHRL $0x03, DX RORL $0x12, CX ADDL 224(BP), AX XORL CX, BX XORL DX, BX ADDL 188(BP), BX ADDL BX, AX MOVL AX, 252(BP) ADDL AX, R8 MOVL R13, AX ADDL $0xc67178f2, R8 MOVL R13, CX RORL $0x06, AX MOVL R13, DX RORL $0x0b, CX XORL CX, AX MOVL R13, CX RORL $0x19, DX ANDL R14, CX XORL AX, DX MOVL R13, AX NOTL AX ADDL DX, R8 ANDL R15, AX XORL CX, AX ADDL R8, AX MOVL R9, DI MOVL R11, BX RORL $0x02, DI MOVL R9, DX ANDL R10, BX RORL $0x0d, DX MOVL R9, CX ANDL R11, CX XORL DX, DI XORL CX, BX MOVL R9, DX MOVL R10, CX RORL $0x16, DX ANDL R9, CX XORL CX, BX XORL DX, DI ADDL DI, BX MOVL BX, R8 ADDL AX, R12 ADDL AX, R8 MOVQ dig+0(FP), BP ADDL (BP), R8 MOVL R8, (BP) ADDL 4(BP), R9 MOVL R9, 4(BP) ADDL 8(BP), R10 MOVL R10, 8(BP) ADDL 12(BP), R11 MOVL R11, 12(BP) ADDL 16(BP), R12 MOVL R12, 16(BP) ADDL 20(BP), R13 MOVL R13, 20(BP) ADDL 24(BP), R14 MOVL R14, 24(BP) ADDL 28(BP), R15 MOVL R15, 28(BP) ADDQ $0x40, SI CMPQ SI, 256(SP) JB loop end: RET // func blockAVX2(dig *Digest, p []byte) // Requires: AVX, AVX2, BMI2 TEXT ·blockAVX2(SB), $536-32 MOVQ dig+0(FP), SI MOVQ p_base+8(FP), DI MOVQ p_len+16(FP), DX LEAQ -64(DI)(DX*1), DX MOVQ DX, 512(SP) CMPQ DX, DI JE avx2_only_one_block // Load initial digest MOVL (SI), AX MOVL 4(SI), BX MOVL 8(SI), CX MOVL 12(SI), R8 MOVL 16(SI), DX MOVL 20(SI), R9 MOVL 24(SI), R10 MOVL 28(SI), R11 avx2_loop0: // at each iteration works with one block (512 bit) VMOVDQU (DI), Y0 VMOVDQU 32(DI), Y1 VMOVDQU 64(DI), Y2 VMOVDQU 96(DI), Y3 VMOVDQU flip_mask<>+0(SB), Y13 // Apply Byte Flip Mask: LE -> BE VPSHUFB Y13, Y0, Y0 VPSHUFB Y13, Y1, Y1 VPSHUFB Y13, Y2, Y2 VPSHUFB Y13, Y3, Y3 // Transpose data into high/low parts VPERM2I128 $0x20, Y2, Y0, Y4 VPERM2I128 $0x31, Y2, Y0, Y5 VPERM2I128 $0x20, Y3, Y1, Y6 VPERM2I128 $0x31, Y3, Y1, Y7 LEAQ K256<>+0(SB), BP avx2_last_block_enter: ADDQ $0x40, DI MOVQ DI, 520(SP) XORQ SI, SI avx2_loop1: // Do 4 rounds and scheduling VPADDD (BP)(SI*1), Y4, Y9 VMOVDQU Y9, (SP)(SI*1) MOVL AX, DI RORXL $0x19, DX, R13 RORXL $0x0b, DX, R14 ADDL (SP)(SI*1), R11 ORL CX, DI VPALIGNR $0x04, Y6, Y7, Y0 MOVL R9, R15 RORXL $0x0d, AX, R12 XORL R14, R13 XORL R10, R15 VPADDD Y4, Y0, Y0 RORXL $0x06, DX, R14 ANDL DX, R15 XORL R14, R13 RORXL $0x16, AX, R14 ADDL R11, R8 ANDL BX, DI VPALIGNR $0x04, Y4, Y5, Y1 XORL R12, R14 RORXL $0x02, AX, R12 XORL R10, R15 VPSRLD $0x07, Y1, Y2 XORL R12, R14 MOVL AX, R12 ANDL CX, R12 ADDL R13, R15 VPSLLD $0x19, Y1, Y3 ORL R12, DI ADDL R14, R11 ADDL R15, R8 VPOR Y2, Y3, Y3 VPSRLD $0x12, Y1, Y2 ADDL R15, R11 ADDL DI, R11 MOVL R11, DI RORXL $0x19, R8, R13 RORXL $0x0b, R8, R14 ADDL 4(SP)(SI*1), R10 ORL BX, DI VPSRLD $0x03, Y1, Y8 MOVL DX, R15 RORXL $0x0d, R11, R12 XORL R14, R13 XORL R9, R15 RORXL $0x06, R8, R14 XORL R14, R13 RORXL $0x16, R11, R14 ANDL R8, R15 ADDL R10, CX VPSLLD $0x0e, Y1, Y1 ANDL AX, DI XORL R12, R14 VPXOR Y1, Y3, Y3 RORXL $0x02, R11, R12 XORL R9, R15 VPXOR Y2, Y3, Y3 XORL R12, R14 MOVL R11, R12 ANDL BX, R12 ADDL R13, R15 VPXOR Y8, Y3, Y1 VPSHUFD $0xfa, Y7, Y2 ORL R12, DI ADDL R14, R10 VPADDD Y1, Y0, Y0 ADDL R15, CX ADDL R15, R10 ADDL DI, R10 VPSRLD $0x0a, Y2, Y8 MOVL R10, DI RORXL $0x19, CX, R13 ADDL 8(SP)(SI*1), R9 VPSRLQ $0x13, Y2, Y3 RORXL $0x0b, CX, R14 ORL AX, DI MOVL R8, R15 XORL DX, R15 RORXL $0x0d, R10, R12 XORL R14, R13 VPSRLQ $0x11, Y2, Y2 ANDL CX, R15 RORXL $0x06, CX, R14 VPXOR Y3, Y2, Y2 ADDL R9, BX ANDL R11, DI XORL R14, R13 RORXL $0x16, R10, R14 VPXOR Y2, Y8, Y8 XORL DX, R15 VPSHUFB shuff_00BA<>+0(SB), Y8, Y8 XORL R12, R14 RORXL $0x02, R10, R12 VPADDD Y8, Y0, Y0 XORL R12, R14 MOVL R10, R12 ANDL AX, R12 ADDL R13, R15 VPSHUFD $0x50, Y0, Y2 ORL R12, DI ADDL R14, R9 ADDL R15, BX ADDL R15, R9 ADDL DI, R9 MOVL R9, DI RORXL $0x19, BX, R13 RORXL $0x0b, BX, R14 ADDL 12(SP)(SI*1), DX ORL R11, DI VPSRLD $0x0a, Y2, Y11 MOVL CX, R15 RORXL $0x0d, R9, R12 XORL R14, R13 XORL R8, R15 VPSRLQ $0x13, Y2, Y3 RORXL $0x06, BX, R14 ANDL BX, R15 ADDL DX, AX ANDL R10, DI VPSRLQ $0x11, Y2, Y2 XORL R14, R13 XORL R8, R15 VPXOR Y3, Y2, Y2 RORXL $0x16, R9, R14 ADDL R13, R15 VPXOR Y2, Y11, Y11 XORL R12, R14 ADDL R15, AX RORXL $0x02, R9, R12 VPSHUFB shuff_DC00<>+0(SB), Y11, Y11 VPADDD Y0, Y11, Y4 XORL R12, R14 MOVL R9, R12 ANDL R11, R12 ORL R12, DI ADDL R14, DX ADDL R15, DX ADDL DI, DX // Do 4 rounds and scheduling VPADDD 32(BP)(SI*1), Y5, Y9 VMOVDQU Y9, 32(SP)(SI*1) MOVL DX, DI RORXL $0x19, AX, R13 RORXL $0x0b, AX, R14 ADDL 32(SP)(SI*1), R8 ORL R10, DI VPALIGNR $0x04, Y7, Y4, Y0 MOVL BX, R15 RORXL $0x0d, DX, R12 XORL R14, R13 XORL CX, R15 VPADDD Y5, Y0, Y0 RORXL $0x06, AX, R14 ANDL AX, R15 XORL R14, R13 RORXL $0x16, DX, R14 ADDL R8, R11 ANDL R9, DI VPALIGNR $0x04, Y5, Y6, Y1 XORL R12, R14 RORXL $0x02, DX, R12 XORL CX, R15 VPSRLD $0x07, Y1, Y2 XORL R12, R14 MOVL DX, R12 ANDL R10, R12 ADDL R13, R15 VPSLLD $0x19, Y1, Y3 ORL R12, DI ADDL R14, R8 ADDL R15, R11 VPOR Y2, Y3, Y3 VPSRLD $0x12, Y1, Y2 ADDL R15, R8 ADDL DI, R8 MOVL R8, DI RORXL $0x19, R11, R13 RORXL $0x0b, R11, R14 ADDL 36(SP)(SI*1), CX ORL R9, DI VPSRLD $0x03, Y1, Y8 MOVL AX, R15 RORXL $0x0d, R8, R12 XORL R14, R13 XORL BX, R15 RORXL $0x06, R11, R14 XORL R14, R13 RORXL $0x16, R8, R14 ANDL R11, R15 ADDL CX, R10 VPSLLD $0x0e, Y1, Y1 ANDL DX, DI XORL R12, R14 VPXOR Y1, Y3, Y3 RORXL $0x02, R8, R12 XORL BX, R15 VPXOR Y2, Y3, Y3 XORL R12, R14 MOVL R8, R12 ANDL R9, R12 ADDL R13, R15 VPXOR Y8, Y3, Y1 VPSHUFD $0xfa, Y4, Y2 ORL R12, DI ADDL R14, CX VPADDD Y1, Y0, Y0 ADDL R15, R10 ADDL R15, CX ADDL DI, CX VPSRLD $0x0a, Y2, Y8 MOVL CX, DI RORXL $0x19, R10, R13 ADDL 40(SP)(SI*1), BX VPSRLQ $0x13, Y2, Y3 RORXL $0x0b, R10, R14 ORL DX, DI MOVL R11, R15 XORL AX, R15 RORXL $0x0d, CX, R12 XORL R14, R13 VPSRLQ $0x11, Y2, Y2 ANDL R10, R15 RORXL $0x06, R10, R14 VPXOR Y3, Y2, Y2 ADDL BX, R9 ANDL R8, DI XORL R14, R13 RORXL $0x16, CX, R14 VPXOR Y2, Y8, Y8 XORL AX, R15 VPSHUFB shuff_00BA<>+0(SB), Y8, Y8 XORL R12, R14 RORXL $0x02, CX, R12 VPADDD Y8, Y0, Y0 XORL R12, R14 MOVL CX, R12 ANDL DX, R12 ADDL R13, R15 VPSHUFD $0x50, Y0, Y2 ORL R12, DI ADDL R14, BX ADDL R15, R9 ADDL R15, BX ADDL DI, BX MOVL BX, DI RORXL $0x19, R9, R13 RORXL $0x0b, R9, R14 ADDL 44(SP)(SI*1), AX ORL R8, DI VPSRLD $0x0a, Y2, Y11 MOVL R10, R15 RORXL $0x0d, BX, R12 XORL R14, R13 XORL R11, R15 VPSRLQ $0x13, Y2, Y3 RORXL $0x06, R9, R14 ANDL R9, R15 ADDL AX, DX ANDL CX, DI VPSRLQ $0x11, Y2, Y2 XORL R14, R13 XORL R11, R15 VPXOR Y3, Y2, Y2 RORXL $0x16, BX, R14 ADDL R13, R15 VPXOR Y2, Y11, Y11 XORL R12, R14 ADDL R15, DX RORXL $0x02, BX, R12 VPSHUFB shuff_DC00<>+0(SB), Y11, Y11 VPADDD Y0, Y11, Y5 XORL R12, R14 MOVL BX, R12 ANDL R8, R12 ORL R12, DI ADDL R14, AX ADDL R15, AX ADDL DI, AX // Do 4 rounds and scheduling VPADDD 64(BP)(SI*1), Y6, Y9 VMOVDQU Y9, 64(SP)(SI*1) MOVL AX, DI RORXL $0x19, DX, R13 RORXL $0x0b, DX, R14 ADDL 64(SP)(SI*1), R11 ORL CX, DI VPALIGNR $0x04, Y4, Y5, Y0 MOVL R9, R15 RORXL $0x0d, AX, R12 XORL R14, R13 XORL R10, R15 VPADDD Y6, Y0, Y0 RORXL $0x06, DX, R14 ANDL DX, R15 XORL R14, R13 RORXL $0x16, AX, R14 ADDL R11, R8 ANDL BX, DI VPALIGNR $0x04, Y6, Y7, Y1 XORL R12, R14 RORXL $0x02, AX, R12 XORL R10, R15 VPSRLD $0x07, Y1, Y2 XORL R12, R14 MOVL AX, R12 ANDL CX, R12 ADDL R13, R15 VPSLLD $0x19, Y1, Y3 ORL R12, DI ADDL R14, R11 ADDL R15, R8 VPOR Y2, Y3, Y3 VPSRLD $0x12, Y1, Y2 ADDL R15, R11 ADDL DI, R11 MOVL R11, DI RORXL $0x19, R8, R13 RORXL $0x0b, R8, R14 ADDL 68(SP)(SI*1), R10 ORL BX, DI VPSRLD $0x03, Y1, Y8 MOVL DX, R15 RORXL $0x0d, R11, R12 XORL R14, R13 XORL R9, R15 RORXL $0x06, R8, R14 XORL R14, R13 RORXL $0x16, R11, R14 ANDL R8, R15 ADDL R10, CX VPSLLD $0x0e, Y1, Y1 ANDL AX, DI XORL R12, R14 VPXOR Y1, Y3, Y3 RORXL $0x02, R11, R12 XORL R9, R15 VPXOR Y2, Y3, Y3 XORL R12, R14 MOVL R11, R12 ANDL BX, R12 ADDL R13, R15 VPXOR Y8, Y3, Y1 VPSHUFD $0xfa, Y5, Y2 ORL R12, DI ADDL R14, R10 VPADDD Y1, Y0, Y0 ADDL R15, CX ADDL R15, R10 ADDL DI, R10 VPSRLD $0x0a, Y2, Y8 MOVL R10, DI RORXL $0x19, CX, R13 ADDL 72(SP)(SI*1), R9 VPSRLQ $0x13, Y2, Y3 RORXL $0x0b, CX, R14 ORL AX, DI MOVL R8, R15 XORL DX, R15 RORXL $0x0d, R10, R12 XORL R14, R13 VPSRLQ $0x11, Y2, Y2 ANDL CX, R15 RORXL $0x06, CX, R14 VPXOR Y3, Y2, Y2 ADDL R9, BX ANDL R11, DI XORL R14, R13 RORXL $0x16, R10, R14 VPXOR Y2, Y8, Y8 XORL DX, R15 VPSHUFB shuff_00BA<>+0(SB), Y8, Y8 XORL R12, R14 RORXL $0x02, R10, R12 VPADDD Y8, Y0, Y0 XORL R12, R14 MOVL R10, R12 ANDL AX, R12 ADDL R13, R15 VPSHUFD $0x50, Y0, Y2 ORL R12, DI ADDL R14, R9 ADDL R15, BX ADDL R15, R9 ADDL DI, R9 MOVL R9, DI RORXL $0x19, BX, R13 RORXL $0x0b, BX, R14 ADDL 76(SP)(SI*1), DX ORL R11, DI VPSRLD $0x0a, Y2, Y11 MOVL CX, R15 RORXL $0x0d, R9, R12 XORL R14, R13 XORL R8, R15 VPSRLQ $0x13, Y2, Y3 RORXL $0x06, BX, R14 ANDL BX, R15 ADDL DX, AX ANDL R10, DI VPSRLQ $0x11, Y2, Y2 XORL R14, R13 XORL R8, R15 VPXOR Y3, Y2, Y2 RORXL $0x16, R9, R14 ADDL R13, R15 VPXOR Y2, Y11, Y11 XORL R12, R14 ADDL R15, AX RORXL $0x02, R9, R12 VPSHUFB shuff_DC00<>+0(SB), Y11, Y11 VPADDD Y0, Y11, Y6 XORL R12, R14 MOVL R9, R12 ANDL R11, R12 ORL R12, DI ADDL R14, DX ADDL R15, DX ADDL DI, DX // Do 4 rounds and scheduling VPADDD 96(BP)(SI*1), Y7, Y9 VMOVDQU Y9, 96(SP)(SI*1) MOVL DX, DI RORXL $0x19, AX, R13 RORXL $0x0b, AX, R14 ADDL 96(SP)(SI*1), R8 ORL R10, DI VPALIGNR $0x04, Y5, Y6, Y0 MOVL BX, R15 RORXL $0x0d, DX, R12 XORL R14, R13 XORL CX, R15 VPADDD Y7, Y0, Y0 RORXL $0x06, AX, R14 ANDL AX, R15 XORL R14, R13 RORXL $0x16, DX, R14 ADDL R8, R11 ANDL R9, DI VPALIGNR $0x04, Y7, Y4, Y1 XORL R12, R14 RORXL $0x02, DX, R12 XORL CX, R15 VPSRLD $0x07, Y1, Y2 XORL R12, R14 MOVL DX, R12 ANDL R10, R12 ADDL R13, R15 VPSLLD $0x19, Y1, Y3 ORL R12, DI ADDL R14, R8 ADDL R15, R11 VPOR Y2, Y3, Y3 VPSRLD $0x12, Y1, Y2 ADDL R15, R8 ADDL DI, R8 MOVL R8, DI RORXL $0x19, R11, R13 RORXL $0x0b, R11, R14 ADDL 100(SP)(SI*1), CX ORL R9, DI VPSRLD $0x03, Y1, Y8 MOVL AX, R15 RORXL $0x0d, R8, R12 XORL R14, R13 XORL BX, R15 RORXL $0x06, R11, R14 XORL R14, R13 RORXL $0x16, R8, R14 ANDL R11, R15 ADDL CX, R10 VPSLLD $0x0e, Y1, Y1 ANDL DX, DI XORL R12, R14 VPXOR Y1, Y3, Y3 RORXL $0x02, R8, R12 XORL BX, R15 VPXOR Y2, Y3, Y3 XORL R12, R14 MOVL R8, R12 ANDL R9, R12 ADDL R13, R15 VPXOR Y8, Y3, Y1 VPSHUFD $0xfa, Y6, Y2 ORL R12, DI ADDL R14, CX VPADDD Y1, Y0, Y0 ADDL R15, R10 ADDL R15, CX ADDL DI, CX VPSRLD $0x0a, Y2, Y8 MOVL CX, DI RORXL $0x19, R10, R13 ADDL 104(SP)(SI*1), BX VPSRLQ $0x13, Y2, Y3 RORXL $0x0b, R10, R14 ORL DX, DI MOVL R11, R15 XORL AX, R15 RORXL $0x0d, CX, R12 XORL R14, R13 VPSRLQ $0x11, Y2, Y2 ANDL R10, R15 RORXL $0x06, R10, R14 VPXOR Y3, Y2, Y2 ADDL BX, R9 ANDL R8, DI XORL R14, R13 RORXL $0x16, CX, R14 VPXOR Y2, Y8, Y8 XORL AX, R15 VPSHUFB shuff_00BA<>+0(SB), Y8, Y8 XORL R12, R14 RORXL $0x02, CX, R12 VPADDD Y8, Y0, Y0 XORL R12, R14 MOVL CX, R12 ANDL DX, R12 ADDL R13, R15 VPSHUFD $0x50, Y0, Y2 ORL R12, DI ADDL R14, BX ADDL R15, R9 ADDL R15, BX ADDL DI, BX MOVL BX, DI RORXL $0x19, R9, R13 RORXL $0x0b, R9, R14 ADDL 108(SP)(SI*1), AX ORL R8, DI VPSRLD $0x0a, Y2, Y11 MOVL R10, R15 RORXL $0x0d, BX, R12 XORL R14, R13 XORL R11, R15 VPSRLQ $0x13, Y2, Y3 RORXL $0x06, R9, R14 ANDL R9, R15 ADDL AX, DX ANDL CX, DI VPSRLQ $0x11, Y2, Y2 XORL R14, R13 XORL R11, R15 VPXOR Y3, Y2, Y2 RORXL $0x16, BX, R14 ADDL R13, R15 VPXOR Y2, Y11, Y11 XORL R12, R14 ADDL R15, DX RORXL $0x02, BX, R12 VPSHUFB shuff_DC00<>+0(SB), Y11, Y11 VPADDD Y0, Y11, Y7 XORL R12, R14 MOVL BX, R12 ANDL R8, R12 ORL R12, DI ADDL R14, AX ADDL R15, AX ADDL DI, AX ADDQ $0x80, SI CMPQ SI, $0x00000180 JB avx2_loop1 avx2_loop2: VPADDD (BP)(SI*1), Y4, Y9 VMOVDQU Y9, (SP)(SI*1) MOVL R9, R15 RORXL $0x19, DX, R13 RORXL $0x0b, DX, R14 XORL R10, R15 XORL R14, R13 RORXL $0x06, DX, R14 ANDL DX, R15 XORL R14, R13 RORXL $0x0d, AX, R12 XORL R10, R15 RORXL $0x16, AX, R14 MOVL AX, DI XORL R12, R14 RORXL $0x02, AX, R12 ADDL (SP)(SI*1), R11 ORL CX, DI XORL R12, R14 MOVL AX, R12 ANDL BX, DI ANDL CX, R12 ADDL R13, R15 ADDL R11, R8 ORL R12, DI ADDL R14, R11 ADDL R15, R8 ADDL R15, R11 MOVL DX, R15 RORXL $0x19, R8, R13 RORXL $0x0b, R8, R14 XORL R9, R15 XORL R14, R13 RORXL $0x06, R8, R14 ANDL R8, R15 ADDL DI, R11 XORL R14, R13 RORXL $0x0d, R11, R12 XORL R9, R15 RORXL $0x16, R11, R14 MOVL R11, DI XORL R12, R14 RORXL $0x02, R11, R12 ADDL 4(SP)(SI*1), R10 ORL BX, DI XORL R12, R14 MOVL R11, R12 ANDL AX, DI ANDL BX, R12 ADDL R13, R15 ADDL R10, CX ORL R12, DI ADDL R14, R10 ADDL R15, CX ADDL R15, R10 MOVL R8, R15 RORXL $0x19, CX, R13 RORXL $0x0b, CX, R14 XORL DX, R15 XORL R14, R13 RORXL $0x06, CX, R14 ANDL CX, R15 ADDL DI, R10 XORL R14, R13 RORXL $0x0d, R10, R12 XORL DX, R15 RORXL $0x16, R10, R14 MOVL R10, DI XORL R12, R14 RORXL $0x02, R10, R12 ADDL 8(SP)(SI*1), R9 ORL AX, DI XORL R12, R14 MOVL R10, R12 ANDL R11, DI ANDL AX, R12 ADDL R13, R15 ADDL R9, BX ORL R12, DI ADDL R14, R9 ADDL R15, BX ADDL R15, R9 MOVL CX, R15 RORXL $0x19, BX, R13 RORXL $0x0b, BX, R14 XORL R8, R15 XORL R14, R13 RORXL $0x06, BX, R14 ANDL BX, R15 ADDL DI, R9 XORL R14, R13 RORXL $0x0d, R9, R12 XORL R8, R15 RORXL $0x16, R9, R14 MOVL R9, DI XORL R12, R14 RORXL $0x02, R9, R12 ADDL 12(SP)(SI*1), DX ORL R11, DI XORL R12, R14 MOVL R9, R12 ANDL R10, DI ANDL R11, R12 ADDL R13, R15 ADDL DX, AX ORL R12, DI ADDL R14, DX ADDL R15, AX ADDL R15, DX ADDL DI, DX VPADDD 32(BP)(SI*1), Y5, Y9 VMOVDQU Y9, 32(SP)(SI*1) MOVL BX, R15 RORXL $0x19, AX, R13 RORXL $0x0b, AX, R14 XORL CX, R15 XORL R14, R13 RORXL $0x06, AX, R14 ANDL AX, R15 XORL R14, R13 RORXL $0x0d, DX, R12 XORL CX, R15 RORXL $0x16, DX, R14 MOVL DX, DI XORL R12, R14 RORXL $0x02, DX, R12 ADDL 32(SP)(SI*1), R8 ORL R10, DI XORL R12, R14 MOVL DX, R12 ANDL R9, DI ANDL R10, R12 ADDL R13, R15 ADDL R8, R11 ORL R12, DI ADDL R14, R8 ADDL R15, R11 ADDL R15, R8 MOVL AX, R15 RORXL $0x19, R11, R13 RORXL $0x0b, R11, R14 XORL BX, R15 XORL R14, R13 RORXL $0x06, R11, R14 ANDL R11, R15 ADDL DI, R8 XORL R14, R13 RORXL $0x0d, R8, R12 XORL BX, R15 RORXL $0x16, R8, R14 MOVL R8, DI XORL R12, R14 RORXL $0x02, R8, R12 ADDL 36(SP)(SI*1), CX ORL R9, DI XORL R12, R14 MOVL R8, R12 ANDL DX, DI ANDL R9, R12 ADDL R13, R15 ADDL CX, R10 ORL R12, DI ADDL R14, CX ADDL R15, R10 ADDL R15, CX MOVL R11, R15 RORXL $0x19, R10, R13 RORXL $0x0b, R10, R14 XORL AX, R15 XORL R14, R13 RORXL $0x06, R10, R14 ANDL R10, R15 ADDL DI, CX XORL R14, R13 RORXL $0x0d, CX, R12 XORL AX, R15 RORXL $0x16, CX, R14 MOVL CX, DI XORL R12, R14 RORXL $0x02, CX, R12 ADDL 40(SP)(SI*1), BX ORL DX, DI XORL R12, R14 MOVL CX, R12 ANDL R8, DI ANDL DX, R12 ADDL R13, R15 ADDL BX, R9 ORL R12, DI ADDL R14, BX ADDL R15, R9 ADDL R15, BX MOVL R10, R15 RORXL $0x19, R9, R13 RORXL $0x0b, R9, R14 XORL R11, R15 XORL R14, R13 RORXL $0x06, R9, R14 ANDL R9, R15 ADDL DI, BX XORL R14, R13 RORXL $0x0d, BX, R12 XORL R11, R15 RORXL $0x16, BX, R14 MOVL BX, DI XORL R12, R14 RORXL $0x02, BX, R12 ADDL 44(SP)(SI*1), AX ORL R8, DI XORL R12, R14 MOVL BX, R12 ANDL CX, DI ANDL R8, R12 ADDL R13, R15 ADDL AX, DX ORL R12, DI ADDL R14, AX ADDL R15, DX ADDL R15, AX ADDL DI, AX ADDQ $0x40, SI VMOVDQU Y6, Y4 VMOVDQU Y7, Y5 CMPQ SI, $0x00000200 JB avx2_loop2 MOVQ dig+0(FP), SI MOVQ 520(SP), DI ADDL AX, (SI) MOVL (SI), AX ADDL BX, 4(SI) MOVL 4(SI), BX ADDL CX, 8(SI) MOVL 8(SI), CX ADDL R8, 12(SI) MOVL 12(SI), R8 ADDL DX, 16(SI) MOVL 16(SI), DX ADDL R9, 20(SI) MOVL 20(SI), R9 ADDL R10, 24(SI) MOVL 24(SI), R10 ADDL R11, 28(SI) MOVL 28(SI), R11 CMPQ 512(SP), DI JB done_hash XORQ SI, SI avx2_loop3: MOVL R9, R15 RORXL $0x19, DX, R13 RORXL $0x0b, DX, R14 XORL R10, R15 XORL R14, R13 RORXL $0x06, DX, R14 ANDL DX, R15 XORL R14, R13 RORXL $0x0d, AX, R12 XORL R10, R15 RORXL $0x16, AX, R14 MOVL AX, DI XORL R12, R14 RORXL $0x02, AX, R12 ADDL 16(SP)(SI*1), R11 ORL CX, DI XORL R12, R14 MOVL AX, R12 ANDL BX, DI ANDL CX, R12 ADDL R13, R15 ADDL R11, R8 ORL R12, DI ADDL R14, R11 ADDL R15, R8 ADDL R15, R11 MOVL DX, R15 RORXL $0x19, R8, R13 RORXL $0x0b, R8, R14 XORL R9, R15 XORL R14, R13 RORXL $0x06, R8, R14 ANDL R8, R15 ADDL DI, R11 XORL R14, R13 RORXL $0x0d, R11, R12 XORL R9, R15 RORXL $0x16, R11, R14 MOVL R11, DI XORL R12, R14 RORXL $0x02, R11, R12 ADDL 20(SP)(SI*1), R10 ORL BX, DI XORL R12, R14 MOVL R11, R12 ANDL AX, DI ANDL BX, R12 ADDL R13, R15 ADDL R10, CX ORL R12, DI ADDL R14, R10 ADDL R15, CX ADDL R15, R10 MOVL R8, R15 RORXL $0x19, CX, R13 RORXL $0x0b, CX, R14 XORL DX, R15 XORL R14, R13 RORXL $0x06, CX, R14 ANDL CX, R15 ADDL DI, R10 XORL R14, R13 RORXL $0x0d, R10, R12 XORL DX, R15 RORXL $0x16, R10, R14 MOVL R10, DI XORL R12, R14 RORXL $0x02, R10, R12 ADDL 24(SP)(SI*1), R9 ORL AX, DI XORL R12, R14 MOVL R10, R12 ANDL R11, DI ANDL AX, R12 ADDL R13, R15 ADDL R9, BX ORL R12, DI ADDL R14, R9 ADDL R15, BX ADDL R15, R9 MOVL CX, R15 RORXL $0x19, BX, R13 RORXL $0x0b, BX, R14 XORL R8, R15 XORL R14, R13 RORXL $0x06, BX, R14 ANDL BX, R15 ADDL DI, R9 XORL R14, R13 RORXL $0x0d, R9, R12 XORL R8, R15 RORXL $0x16, R9, R14 MOVL R9, DI XORL R12, R14 RORXL $0x02, R9, R12 ADDL 28(SP)(SI*1), DX ORL R11, DI XORL R12, R14 MOVL R9, R12 ANDL R10, DI ANDL R11, R12 ADDL R13, R15 ADDL DX, AX ORL R12, DI ADDL R14, DX ADDL R15, AX ADDL R15, DX ADDL DI, DX MOVL BX, R15 RORXL $0x19, AX, R13 RORXL $0x0b, AX, R14 XORL CX, R15 XORL R14, R13 RORXL $0x06, AX, R14 ANDL AX, R15 XORL R14, R13 RORXL $0x0d, DX, R12 XORL CX, R15 RORXL $0x16, DX, R14 MOVL DX, DI XORL R12, R14 RORXL $0x02, DX, R12 ADDL 48(SP)(SI*1), R8 ORL R10, DI XORL R12, R14 MOVL DX, R12 ANDL R9, DI ANDL R10, R12 ADDL R13, R15 ADDL R8, R11 ORL R12, DI ADDL R14, R8 ADDL R15, R11 ADDL R15, R8 MOVL AX, R15 RORXL $0x19, R11, R13 RORXL $0x0b, R11, R14 XORL BX, R15 XORL R14, R13 RORXL $0x06, R11, R14 ANDL R11, R15 ADDL DI, R8 XORL R14, R13 RORXL $0x0d, R8, R12 XORL BX, R15 RORXL $0x16, R8, R14 MOVL R8, DI XORL R12, R14 RORXL $0x02, R8, R12 ADDL 52(SP)(SI*1), CX ORL R9, DI XORL R12, R14 MOVL R8, R12 ANDL DX, DI ANDL R9, R12 ADDL R13, R15 ADDL CX, R10 ORL R12, DI ADDL R14, CX ADDL R15, R10 ADDL R15, CX MOVL R11, R15 RORXL $0x19, R10, R13 RORXL $0x0b, R10, R14 XORL AX, R15 XORL R14, R13 RORXL $0x06, R10, R14 ANDL R10, R15 ADDL DI, CX XORL R14, R13 RORXL $0x0d, CX, R12 XORL AX, R15 RORXL $0x16, CX, R14 MOVL CX, DI XORL R12, R14 RORXL $0x02, CX, R12 ADDL 56(SP)(SI*1), BX ORL DX, DI XORL R12, R14 MOVL CX, R12 ANDL R8, DI ANDL DX, R12 ADDL R13, R15 ADDL BX, R9 ORL R12, DI ADDL R14, BX ADDL R15, R9 ADDL R15, BX MOVL R10, R15 RORXL $0x19, R9, R13 RORXL $0x0b, R9, R14 XORL R11, R15 XORL R14, R13 RORXL $0x06, R9, R14 ANDL R9, R15 ADDL DI, BX XORL R14, R13 RORXL $0x0d, BX, R12 XORL R11, R15 RORXL $0x16, BX, R14 MOVL BX, DI XORL R12, R14 RORXL $0x02, BX, R12 ADDL 60(SP)(SI*1), AX ORL R8, DI XORL R12, R14 MOVL BX, R12 ANDL CX, DI ANDL R8, R12 ADDL R13, R15 ADDL AX, DX ORL R12, DI ADDL R14, AX ADDL R15, DX ADDL R15, AX ADDL DI, AX ADDQ $0x40, SI CMPQ SI, $0x00000200 JB avx2_loop3 MOVQ dig+0(FP), SI MOVQ 520(SP), DI ADDQ $0x40, DI ADDL AX, (SI) MOVL (SI), AX ADDL BX, 4(SI) MOVL 4(SI), BX ADDL CX, 8(SI) MOVL 8(SI), CX ADDL R8, 12(SI) MOVL 12(SI), R8 ADDL DX, 16(SI) MOVL 16(SI), DX ADDL R9, 20(SI) MOVL 20(SI), R9 ADDL R10, 24(SI) MOVL 24(SI), R10 ADDL R11, 28(SI) MOVL 28(SI), R11 CMPQ 512(SP), DI JA avx2_loop0 JB done_hash avx2_do_last_block: VMOVDQU (DI), X4 VMOVDQU 16(DI), X5 VMOVDQU 32(DI), X6 VMOVDQU 48(DI), X7 VMOVDQU flip_mask<>+0(SB), Y13 VPSHUFB X13, X4, X4 VPSHUFB X13, X5, X5 VPSHUFB X13, X6, X6 VPSHUFB X13, X7, X7 LEAQ K256<>+0(SB), BP JMP avx2_last_block_enter avx2_only_one_block: MOVL (SI), AX MOVL 4(SI), BX MOVL 8(SI), CX MOVL 12(SI), R8 MOVL 16(SI), DX MOVL 20(SI), R9 MOVL 24(SI), R10 MOVL 28(SI), R11 JMP avx2_do_last_block done_hash: VZEROUPPER RET DATA flip_mask<>+0(SB)/8, $0x0405060700010203 DATA flip_mask<>+8(SB)/8, $0x0c0d0e0f08090a0b DATA flip_mask<>+16(SB)/8, $0x0405060700010203 DATA flip_mask<>+24(SB)/8, $0x0c0d0e0f08090a0b GLOBL flip_mask<>(SB), RODATA, $32 DATA K256<>+0(SB)/4, $0x428a2f98 DATA K256<>+4(SB)/4, $0x71374491 DATA K256<>+8(SB)/4, $0xb5c0fbcf DATA K256<>+12(SB)/4, $0xe9b5dba5 DATA K256<>+16(SB)/4, $0x428a2f98 DATA K256<>+20(SB)/4, $0x71374491 DATA K256<>+24(SB)/4, $0xb5c0fbcf DATA K256<>+28(SB)/4, $0xe9b5dba5 DATA K256<>+32(SB)/4, $0x3956c25b DATA K256<>+36(SB)/4, $0x59f111f1 DATA K256<>+40(SB)/4, $0x923f82a4 DATA K256<>+44(SB)/4, $0xab1c5ed5 DATA K256<>+48(SB)/4, $0x3956c25b DATA K256<>+52(SB)/4, $0x59f111f1 DATA K256<>+56(SB)/4, $0x923f82a4 DATA K256<>+60(SB)/4, $0xab1c5ed5 DATA K256<>+64(SB)/4, $0xd807aa98 DATA K256<>+68(SB)/4, $0x12835b01 DATA K256<>+72(SB)/4, $0x243185be DATA K256<>+76(SB)/4, $0x550c7dc3 DATA K256<>+80(SB)/4, $0xd807aa98 DATA K256<>+84(SB)/4, $0x12835b01 DATA K256<>+88(SB)/4, $0x243185be DATA K256<>+92(SB)/4, $0x550c7dc3 DATA K256<>+96(SB)/4, $0x72be5d74 DATA K256<>+100(SB)/4, $0x80deb1fe DATA K256<>+104(SB)/4, $0x9bdc06a7 DATA K256<>+108(SB)/4, $0xc19bf174 DATA K256<>+112(SB)/4, $0x72be5d74 DATA K256<>+116(SB)/4, $0x80deb1fe DATA K256<>+120(SB)/4, $0x9bdc06a7 DATA K256<>+124(SB)/4, $0xc19bf174 DATA K256<>+128(SB)/4, $0xe49b69c1 DATA K256<>+132(SB)/4, $0xefbe4786 DATA K256<>+136(SB)/4, $0x0fc19dc6 DATA K256<>+140(SB)/4, $0x240ca1cc DATA K256<>+144(SB)/4, $0xe49b69c1 DATA K256<>+148(SB)/4, $0xefbe4786 DATA K256<>+152(SB)/4, $0x0fc19dc6 DATA K256<>+156(SB)/4, $0x240ca1cc DATA K256<>+160(SB)/4, $0x2de92c6f DATA K256<>+164(SB)/4, $0x4a7484aa DATA K256<>+168(SB)/4, $0x5cb0a9dc DATA K256<>+172(SB)/4, $0x76f988da DATA K256<>+176(SB)/4, $0x2de92c6f DATA K256<>+180(SB)/4, $0x4a7484aa DATA K256<>+184(SB)/4, $0x5cb0a9dc DATA K256<>+188(SB)/4, $0x76f988da DATA K256<>+192(SB)/4, $0x983e5152 DATA K256<>+196(SB)/4, $0xa831c66d DATA K256<>+200(SB)/4, $0xb00327c8 DATA K256<>+204(SB)/4, $0xbf597fc7 DATA K256<>+208(SB)/4, $0x983e5152 DATA K256<>+212(SB)/4, $0xa831c66d DATA K256<>+216(SB)/4, $0xb00327c8 DATA K256<>+220(SB)/4, $0xbf597fc7 DATA K256<>+224(SB)/4, $0xc6e00bf3 DATA K256<>+228(SB)/4, $0xd5a79147 DATA K256<>+232(SB)/4, $0x06ca6351 DATA K256<>+236(SB)/4, $0x14292967 DATA K256<>+240(SB)/4, $0xc6e00bf3 DATA K256<>+244(SB)/4, $0xd5a79147 DATA K256<>+248(SB)/4, $0x06ca6351 DATA K256<>+252(SB)/4, $0x14292967 DATA K256<>+256(SB)/4, $0x27b70a85 DATA K256<>+260(SB)/4, $0x2e1b2138 DATA K256<>+264(SB)/4, $0x4d2c6dfc DATA K256<>+268(SB)/4, $0x53380d13 DATA K256<>+272(SB)/4, $0x27b70a85 DATA K256<>+276(SB)/4, $0x2e1b2138 DATA K256<>+280(SB)/4, $0x4d2c6dfc DATA K256<>+284(SB)/4, $0x53380d13 DATA K256<>+288(SB)/4, $0x650a7354 DATA K256<>+292(SB)/4, $0x766a0abb DATA K256<>+296(SB)/4, $0x81c2c92e DATA K256<>+300(SB)/4, $0x92722c85 DATA K256<>+304(SB)/4, $0x650a7354 DATA K256<>+308(SB)/4, $0x766a0abb DATA K256<>+312(SB)/4, $0x81c2c92e DATA K256<>+316(SB)/4, $0x92722c85 DATA K256<>+320(SB)/4, $0xa2bfe8a1 DATA K256<>+324(SB)/4, $0xa81a664b DATA K256<>+328(SB)/4, $0xc24b8b70 DATA K256<>+332(SB)/4, $0xc76c51a3 DATA K256<>+336(SB)/4, $0xa2bfe8a1 DATA K256<>+340(SB)/4, $0xa81a664b DATA K256<>+344(SB)/4, $0xc24b8b70 DATA K256<>+348(SB)/4, $0xc76c51a3 DATA K256<>+352(SB)/4, $0xd192e819 DATA K256<>+356(SB)/4, $0xd6990624 DATA K256<>+360(SB)/4, $0xf40e3585 DATA K256<>+364(SB)/4, $0x106aa070 DATA K256<>+368(SB)/4, $0xd192e819 DATA K256<>+372(SB)/4, $0xd6990624 DATA K256<>+376(SB)/4, $0xf40e3585 DATA K256<>+380(SB)/4, $0x106aa070 DATA K256<>+384(SB)/4, $0x19a4c116 DATA K256<>+388(SB)/4, $0x1e376c08 DATA K256<>+392(SB)/4, $0x2748774c DATA K256<>+396(SB)/4, $0x34b0bcb5 DATA K256<>+400(SB)/4, $0x19a4c116 DATA K256<>+404(SB)/4, $0x1e376c08 DATA K256<>+408(SB)/4, $0x2748774c DATA K256<>+412(SB)/4, $0x34b0bcb5 DATA K256<>+416(SB)/4, $0x391c0cb3 DATA K256<>+420(SB)/4, $0x4ed8aa4a DATA K256<>+424(SB)/4, $0x5b9cca4f DATA K256<>+428(SB)/4, $0x682e6ff3 DATA K256<>+432(SB)/4, $0x391c0cb3 DATA K256<>+436(SB)/4, $0x4ed8aa4a DATA K256<>+440(SB)/4, $0x5b9cca4f DATA K256<>+444(SB)/4, $0x682e6ff3 DATA K256<>+448(SB)/4, $0x748f82ee DATA K256<>+452(SB)/4, $0x78a5636f DATA K256<>+456(SB)/4, $0x84c87814 DATA K256<>+460(SB)/4, $0x8cc70208 DATA K256<>+464(SB)/4, $0x748f82ee DATA K256<>+468(SB)/4, $0x78a5636f DATA K256<>+472(SB)/4, $0x84c87814 DATA K256<>+476(SB)/4, $0x8cc70208 DATA K256<>+480(SB)/4, $0x90befffa DATA K256<>+484(SB)/4, $0xa4506ceb DATA K256<>+488(SB)/4, $0xbef9a3f7 DATA K256<>+492(SB)/4, $0xc67178f2 DATA K256<>+496(SB)/4, $0x90befffa DATA K256<>+500(SB)/4, $0xa4506ceb DATA K256<>+504(SB)/4, $0xbef9a3f7 DATA K256<>+508(SB)/4, $0xc67178f2 GLOBL K256<>(SB), RODATA|NOPTR, $512 DATA shuff_00BA<>+0(SB)/8, $0x0b0a090803020100 DATA shuff_00BA<>+8(SB)/8, $0xffffffffffffffff DATA shuff_00BA<>+16(SB)/8, $0x0b0a090803020100 DATA shuff_00BA<>+24(SB)/8, $0xffffffffffffffff GLOBL shuff_00BA<>(SB), RODATA, $32 DATA shuff_DC00<>+0(SB)/8, $0xffffffffffffffff DATA shuff_DC00<>+8(SB)/8, $0x0b0a090803020100 DATA shuff_DC00<>+16(SB)/8, $0xffffffffffffffff DATA shuff_DC00<>+24(SB)/8, $0x0b0a090803020100 GLOBL shuff_DC00<>(SB), RODATA, $32 // func blockSHANI(dig *Digest, p []byte) // Requires: AVX, SHA, SSE2, SSE4.1, SSSE3 TEXT ·blockSHANI(SB), $0-32 MOVQ dig+0(FP), DI MOVQ p_base+8(FP), SI MOVQ p_len+16(FP), DX SHRQ $0x06, DX SHLQ $0x06, DX CMPQ DX, $0x00 JEQ done ADDQ SI, DX VMOVDQU (DI), X1 VMOVDQU 16(DI), X2 PSHUFD $0xb1, X1, X1 PSHUFD $0x1b, X2, X2 VMOVDQA X1, X7 PALIGNR $0x08, X2, X1 PBLENDW $0xf0, X7, X2 VMOVDQA flip_mask<>+0(SB), X8 LEAQ K256<>+0(SB), AX roundLoop: // save hash values for addition after rounds VMOVDQA X1, X9 VMOVDQA X2, X10 // do rounds 0-59 VMOVDQU (SI), X0 PSHUFB X8, X0 VMOVDQA X0, X3 PADDD (AX), X0 SHA256RNDS2 X0, X1, X2 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 VMOVDQU 16(SI), X0 PSHUFB X8, X0 VMOVDQA X0, X4 PADDD 32(AX), X0 SHA256RNDS2 X0, X1, X2 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X4, X3 VMOVDQU 32(SI), X0 PSHUFB X8, X0 VMOVDQA X0, X5 PADDD 64(AX), X0 SHA256RNDS2 X0, X1, X2 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X5, X4 VMOVDQU 48(SI), X0 PSHUFB X8, X0 VMOVDQA X0, X6 PADDD 96(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X6, X7 PALIGNR $0x04, X5, X7 PADDD X7, X3 SHA256MSG2 X6, X3 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X6, X5 VMOVDQA X3, X0 PADDD 128(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X3, X7 PALIGNR $0x04, X6, X7 PADDD X7, X4 SHA256MSG2 X3, X4 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X3, X6 VMOVDQA X4, X0 PADDD 160(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X4, X7 PALIGNR $0x04, X3, X7 PADDD X7, X5 SHA256MSG2 X4, X5 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X4, X3 VMOVDQA X5, X0 PADDD 192(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X5, X7 PALIGNR $0x04, X4, X7 PADDD X7, X6 SHA256MSG2 X5, X6 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X5, X4 VMOVDQA X6, X0 PADDD 224(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X6, X7 PALIGNR $0x04, X5, X7 PADDD X7, X3 SHA256MSG2 X6, X3 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X6, X5 VMOVDQA X3, X0 PADDD 256(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X3, X7 PALIGNR $0x04, X6, X7 PADDD X7, X4 SHA256MSG2 X3, X4 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X3, X6 VMOVDQA X4, X0 PADDD 288(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X4, X7 PALIGNR $0x04, X3, X7 PADDD X7, X5 SHA256MSG2 X4, X5 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X4, X3 VMOVDQA X5, X0 PADDD 320(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X5, X7 PALIGNR $0x04, X4, X7 PADDD X7, X6 SHA256MSG2 X5, X6 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X5, X4 VMOVDQA X6, X0 PADDD 352(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X6, X7 PALIGNR $0x04, X5, X7 PADDD X7, X3 SHA256MSG2 X6, X3 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X6, X5 VMOVDQA X3, X0 PADDD 384(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X3, X7 PALIGNR $0x04, X6, X7 PADDD X7, X4 SHA256MSG2 X3, X4 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 SHA256MSG1 X3, X6 VMOVDQA X4, X0 PADDD 416(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X4, X7 PALIGNR $0x04, X3, X7 PADDD X7, X5 SHA256MSG2 X4, X5 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 VMOVDQA X5, X0 PADDD 448(AX), X0 SHA256RNDS2 X0, X1, X2 VMOVDQA X5, X7 PALIGNR $0x04, X4, X7 PADDD X7, X6 SHA256MSG2 X5, X6 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 // do rounds 60-63 VMOVDQA X6, X0 PADDD 480(AX), X0 SHA256RNDS2 X0, X1, X2 PSHUFD $0x0e, X0, X0 SHA256RNDS2 X0, X2, X1 // add current hash values with previously saved PADDD X9, X1 PADDD X10, X2 // advance data pointer; loop until buffer empty ADDQ $0x40, SI CMPQ DX, SI JNE roundLoop // write hash values back in the correct order PSHUFD $0x1b, X1, X1 PSHUFD $0xb1, X2, X2 VMOVDQA X1, X7 PBLENDW $0xf0, X2, X1 PALIGNR $0x08, X7, X2 VMOVDQU X1, (DI) VMOVDQU X2, 16(DI) done: RET