// 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
|
The pages are generated with Golds v0.7.3-preview. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |