// Code generated by command: go run sha512block_amd64_asm.go -out ../sha512block_amd64.s. DO NOT EDIT.

//go:build !purego

#include "textflag.h"

// func blockAMD64(dig *Digest, p []byte)
TEXT ·blockAMD64(SB), $648-32
	MOVQ p_base+8(FP), SI
	MOVQ p_len+16(FP), DX
	SHRQ $0x07, DX
	SHLQ $0x07, DX
	LEAQ (SI)(DX*1), DI
	MOVQ DI, 640(SP)
	CMPQ SI, DI
	JEQ  end
	MOVQ dig+0(FP), BP
	MOVQ (BP), R8
	MOVQ 8(BP), R9
	MOVQ 16(BP), R10
	MOVQ 24(BP), R11
	MOVQ 32(BP), R12
	MOVQ 40(BP), R13
	MOVQ 48(BP), R14
	MOVQ 56(BP), R15

loop:
	MOVQ   SP, BP
	MOVQ   (SI), AX
	BSWAPQ AX
	MOVQ   AX, (BP)
	MOVQ   $0x428a2f98d728ae22, DX
	ADDQ   AX, R15
	MOVQ   R12, AX
	ADDQ   DX, R15
	MOVQ   R12, CX
	RORQ   $0x0e, AX
	MOVQ   R12, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R12, CX
	RORQ   $0x29, DX
	ANDQ   R13, CX
	XORQ   AX, DX
	MOVQ   R12, AX
	NOTQ   AX
	ADDQ   DX, R15
	ANDQ   R14, AX
	XORQ   CX, AX
	ADDQ   R15, AX
	MOVQ   R8, DI
	MOVQ   R10, BX
	RORQ   $0x1c, DI
	MOVQ   R8, DX
	ANDQ   R9, BX
	RORQ   $0x22, DX
	MOVQ   R8, CX
	ANDQ   R10, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R8, DX
	MOVQ   R9, CX
	RORQ   $0x27, DX
	ANDQ   R8, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R15
	ADDQ   AX, R11
	ADDQ   AX, R15
	MOVQ   8(SI), AX
	BSWAPQ AX
	MOVQ   AX, 8(BP)
	MOVQ   $0x7137449123ef65cd, DX
	ADDQ   AX, R14
	MOVQ   R11, AX
	ADDQ   DX, R14
	MOVQ   R11, CX
	RORQ   $0x0e, AX
	MOVQ   R11, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R11, CX
	RORQ   $0x29, DX
	ANDQ   R12, CX
	XORQ   AX, DX
	MOVQ   R11, AX
	NOTQ   AX
	ADDQ   DX, R14
	ANDQ   R13, AX
	XORQ   CX, AX
	ADDQ   R14, AX
	MOVQ   R15, DI
	MOVQ   R9, BX
	RORQ   $0x1c, DI
	MOVQ   R15, DX
	ANDQ   R8, BX
	RORQ   $0x22, DX
	MOVQ   R15, CX
	ANDQ   R9, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R15, DX
	MOVQ   R8, CX
	RORQ   $0x27, DX
	ANDQ   R15, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R14
	ADDQ   AX, R10
	ADDQ   AX, R14
	MOVQ   16(SI), AX
	BSWAPQ AX
	MOVQ   AX, 16(BP)
	MOVQ   $0xb5c0fbcfec4d3b2f, DX
	ADDQ   AX, R13
	MOVQ   R10, AX
	ADDQ   DX, R13
	MOVQ   R10, CX
	RORQ   $0x0e, AX
	MOVQ   R10, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R10, CX
	RORQ   $0x29, DX
	ANDQ   R11, CX
	XORQ   AX, DX
	MOVQ   R10, AX
	NOTQ   AX
	ADDQ   DX, R13
	ANDQ   R12, AX
	XORQ   CX, AX
	ADDQ   R13, AX
	MOVQ   R14, DI
	MOVQ   R8, BX
	RORQ   $0x1c, DI
	MOVQ   R14, DX
	ANDQ   R15, BX
	RORQ   $0x22, DX
	MOVQ   R14, CX
	ANDQ   R8, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R14, DX
	MOVQ   R15, CX
	RORQ   $0x27, DX
	ANDQ   R14, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R13
	ADDQ   AX, R9
	ADDQ   AX, R13
	MOVQ   24(SI), AX
	BSWAPQ AX
	MOVQ   AX, 24(BP)
	MOVQ   $0xe9b5dba58189dbbc, DX
	ADDQ   AX, R12
	MOVQ   R9, AX
	ADDQ   DX, R12
	MOVQ   R9, CX
	RORQ   $0x0e, AX
	MOVQ   R9, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R9, CX
	RORQ   $0x29, DX
	ANDQ   R10, CX
	XORQ   AX, DX
	MOVQ   R9, AX
	NOTQ   AX
	ADDQ   DX, R12
	ANDQ   R11, AX
	XORQ   CX, AX
	ADDQ   R12, AX
	MOVQ   R13, DI
	MOVQ   R15, BX
	RORQ   $0x1c, DI
	MOVQ   R13, DX
	ANDQ   R14, BX
	RORQ   $0x22, DX
	MOVQ   R13, CX
	ANDQ   R15, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R13, DX
	MOVQ   R14, CX
	RORQ   $0x27, DX
	ANDQ   R13, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R12
	ADDQ   AX, R8
	ADDQ   AX, R12
	MOVQ   32(SI), AX
	BSWAPQ AX
	MOVQ   AX, 32(BP)
	MOVQ   $0x3956c25bf348b538, DX
	ADDQ   AX, R11
	MOVQ   R8, AX
	ADDQ   DX, R11
	MOVQ   R8, CX
	RORQ   $0x0e, AX
	MOVQ   R8, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R8, CX
	RORQ   $0x29, DX
	ANDQ   R9, CX
	XORQ   AX, DX
	MOVQ   R8, AX
	NOTQ   AX
	ADDQ   DX, R11
	ANDQ   R10, AX
	XORQ   CX, AX
	ADDQ   R11, AX
	MOVQ   R12, DI
	MOVQ   R14, BX
	RORQ   $0x1c, DI
	MOVQ   R12, DX
	ANDQ   R13, BX
	RORQ   $0x22, DX
	MOVQ   R12, CX
	ANDQ   R14, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R12, DX
	MOVQ   R13, CX
	RORQ   $0x27, DX
	ANDQ   R12, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R11
	ADDQ   AX, R15
	ADDQ   AX, R11
	MOVQ   40(SI), AX
	BSWAPQ AX
	MOVQ   AX, 40(BP)
	MOVQ   $0x59f111f1b605d019, DX
	ADDQ   AX, R10
	MOVQ   R15, AX
	ADDQ   DX, R10
	MOVQ   R15, CX
	RORQ   $0x0e, AX
	MOVQ   R15, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R15, CX
	RORQ   $0x29, DX
	ANDQ   R8, CX
	XORQ   AX, DX
	MOVQ   R15, AX
	NOTQ   AX
	ADDQ   DX, R10
	ANDQ   R9, AX
	XORQ   CX, AX
	ADDQ   R10, AX
	MOVQ   R11, DI
	MOVQ   R13, BX
	RORQ   $0x1c, DI
	MOVQ   R11, DX
	ANDQ   R12, BX
	RORQ   $0x22, DX
	MOVQ   R11, CX
	ANDQ   R13, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R11, DX
	MOVQ   R12, CX
	RORQ   $0x27, DX
	ANDQ   R11, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R10
	ADDQ   AX, R14
	ADDQ   AX, R10
	MOVQ   48(SI), AX
	BSWAPQ AX
	MOVQ   AX, 48(BP)
	MOVQ   $0x923f82a4af194f9b, DX
	ADDQ   AX, R9
	MOVQ   R14, AX
	ADDQ   DX, R9
	MOVQ   R14, CX
	RORQ   $0x0e, AX
	MOVQ   R14, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R14, CX
	RORQ   $0x29, DX
	ANDQ   R15, CX
	XORQ   AX, DX
	MOVQ   R14, AX
	NOTQ   AX
	ADDQ   DX, R9
	ANDQ   R8, AX
	XORQ   CX, AX
	ADDQ   R9, AX
	MOVQ   R10, DI
	MOVQ   R12, BX
	RORQ   $0x1c, DI
	MOVQ   R10, DX
	ANDQ   R11, BX
	RORQ   $0x22, DX
	MOVQ   R10, CX
	ANDQ   R12, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R10, DX
	MOVQ   R11, CX
	RORQ   $0x27, DX
	ANDQ   R10, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R9
	ADDQ   AX, R13
	ADDQ   AX, R9
	MOVQ   56(SI), AX
	BSWAPQ AX
	MOVQ   AX, 56(BP)
	MOVQ   $0xab1c5ed5da6d8118, DX
	ADDQ   AX, R8
	MOVQ   R13, AX
	ADDQ   DX, R8
	MOVQ   R13, CX
	RORQ   $0x0e, AX
	MOVQ   R13, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R13, CX
	RORQ   $0x29, DX
	ANDQ   R14, CX
	XORQ   AX, DX
	MOVQ   R13, AX
	NOTQ   AX
	ADDQ   DX, R8
	ANDQ   R15, AX
	XORQ   CX, AX
	ADDQ   R8, AX
	MOVQ   R9, DI
	MOVQ   R11, BX
	RORQ   $0x1c, DI
	MOVQ   R9, DX
	ANDQ   R10, BX
	RORQ   $0x22, DX
	MOVQ   R9, CX
	ANDQ   R11, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R9, DX
	MOVQ   R10, CX
	RORQ   $0x27, DX
	ANDQ   R9, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R8
	ADDQ   AX, R12
	ADDQ   AX, R8
	MOVQ   64(SI), AX
	BSWAPQ AX
	MOVQ   AX, 64(BP)
	MOVQ   $0xd807aa98a3030242, DX
	ADDQ   AX, R15
	MOVQ   R12, AX
	ADDQ   DX, R15
	MOVQ   R12, CX
	RORQ   $0x0e, AX
	MOVQ   R12, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R12, CX
	RORQ   $0x29, DX
	ANDQ   R13, CX
	XORQ   AX, DX
	MOVQ   R12, AX
	NOTQ   AX
	ADDQ   DX, R15
	ANDQ   R14, AX
	XORQ   CX, AX
	ADDQ   R15, AX
	MOVQ   R8, DI
	MOVQ   R10, BX
	RORQ   $0x1c, DI
	MOVQ   R8, DX
	ANDQ   R9, BX
	RORQ   $0x22, DX
	MOVQ   R8, CX
	ANDQ   R10, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R8, DX
	MOVQ   R9, CX
	RORQ   $0x27, DX
	ANDQ   R8, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R15
	ADDQ   AX, R11
	ADDQ   AX, R15
	MOVQ   72(SI), AX
	BSWAPQ AX
	MOVQ   AX, 72(BP)
	MOVQ   $0x12835b0145706fbe, DX
	ADDQ   AX, R14
	MOVQ   R11, AX
	ADDQ   DX, R14
	MOVQ   R11, CX
	RORQ   $0x0e, AX
	MOVQ   R11, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R11, CX
	RORQ   $0x29, DX
	ANDQ   R12, CX
	XORQ   AX, DX
	MOVQ   R11, AX
	NOTQ   AX
	ADDQ   DX, R14
	ANDQ   R13, AX
	XORQ   CX, AX
	ADDQ   R14, AX
	MOVQ   R15, DI
	MOVQ   R9, BX
	RORQ   $0x1c, DI
	MOVQ   R15, DX
	ANDQ   R8, BX
	RORQ   $0x22, DX
	MOVQ   R15, CX
	ANDQ   R9, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R15, DX
	MOVQ   R8, CX
	RORQ   $0x27, DX
	ANDQ   R15, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R14
	ADDQ   AX, R10
	ADDQ   AX, R14
	MOVQ   80(SI), AX
	BSWAPQ AX
	MOVQ   AX, 80(BP)
	MOVQ   $0x243185be4ee4b28c, DX
	ADDQ   AX, R13
	MOVQ   R10, AX
	ADDQ   DX, R13
	MOVQ   R10, CX
	RORQ   $0x0e, AX
	MOVQ   R10, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R10, CX
	RORQ   $0x29, DX
	ANDQ   R11, CX
	XORQ   AX, DX
	MOVQ   R10, AX
	NOTQ   AX
	ADDQ   DX, R13
	ANDQ   R12, AX
	XORQ   CX, AX
	ADDQ   R13, AX
	MOVQ   R14, DI
	MOVQ   R8, BX
	RORQ   $0x1c, DI
	MOVQ   R14, DX
	ANDQ   R15, BX
	RORQ   $0x22, DX
	MOVQ   R14, CX
	ANDQ   R8, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R14, DX
	MOVQ   R15, CX
	RORQ   $0x27, DX
	ANDQ   R14, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R13
	ADDQ   AX, R9
	ADDQ   AX, R13
	MOVQ   88(SI), AX
	BSWAPQ AX
	MOVQ   AX, 88(BP)
	MOVQ   $0x550c7dc3d5ffb4e2, DX
	ADDQ   AX, R12
	MOVQ   R9, AX
	ADDQ   DX, R12
	MOVQ   R9, CX
	RORQ   $0x0e, AX
	MOVQ   R9, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R9, CX
	RORQ   $0x29, DX
	ANDQ   R10, CX
	XORQ   AX, DX
	MOVQ   R9, AX
	NOTQ   AX
	ADDQ   DX, R12
	ANDQ   R11, AX
	XORQ   CX, AX
	ADDQ   R12, AX
	MOVQ   R13, DI
	MOVQ   R15, BX
	RORQ   $0x1c, DI
	MOVQ   R13, DX
	ANDQ   R14, BX
	RORQ   $0x22, DX
	MOVQ   R13, CX
	ANDQ   R15, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R13, DX
	MOVQ   R14, CX
	RORQ   $0x27, DX
	ANDQ   R13, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R12
	ADDQ   AX, R8
	ADDQ   AX, R12
	MOVQ   96(SI), AX
	BSWAPQ AX
	MOVQ   AX, 96(BP)
	MOVQ   $0x72be5d74f27b896f, DX
	ADDQ   AX, R11
	MOVQ   R8, AX
	ADDQ   DX, R11
	MOVQ   R8, CX
	RORQ   $0x0e, AX
	MOVQ   R8, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R8, CX
	RORQ   $0x29, DX
	ANDQ   R9, CX
	XORQ   AX, DX
	MOVQ   R8, AX
	NOTQ   AX
	ADDQ   DX, R11
	ANDQ   R10, AX
	XORQ   CX, AX
	ADDQ   R11, AX
	MOVQ   R12, DI
	MOVQ   R14, BX
	RORQ   $0x1c, DI
	MOVQ   R12, DX
	ANDQ   R13, BX
	RORQ   $0x22, DX
	MOVQ   R12, CX
	ANDQ   R14, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R12, DX
	MOVQ   R13, CX
	RORQ   $0x27, DX
	ANDQ   R12, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R11
	ADDQ   AX, R15
	ADDQ   AX, R11
	MOVQ   104(SI), AX
	BSWAPQ AX
	MOVQ   AX, 104(BP)
	MOVQ   $0x80deb1fe3b1696b1, DX
	ADDQ   AX, R10
	MOVQ   R15, AX
	ADDQ   DX, R10
	MOVQ   R15, CX
	RORQ   $0x0e, AX
	MOVQ   R15, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R15, CX
	RORQ   $0x29, DX
	ANDQ   R8, CX
	XORQ   AX, DX
	MOVQ   R15, AX
	NOTQ   AX
	ADDQ   DX, R10
	ANDQ   R9, AX
	XORQ   CX, AX
	ADDQ   R10, AX
	MOVQ   R11, DI
	MOVQ   R13, BX
	RORQ   $0x1c, DI
	MOVQ   R11, DX
	ANDQ   R12, BX
	RORQ   $0x22, DX
	MOVQ   R11, CX
	ANDQ   R13, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R11, DX
	MOVQ   R12, CX
	RORQ   $0x27, DX
	ANDQ   R11, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R10
	ADDQ   AX, R14
	ADDQ   AX, R10
	MOVQ   112(SI), AX
	BSWAPQ AX
	MOVQ   AX, 112(BP)
	MOVQ   $0x9bdc06a725c71235, DX
	ADDQ   AX, R9
	MOVQ   R14, AX
	ADDQ   DX, R9
	MOVQ   R14, CX
	RORQ   $0x0e, AX
	MOVQ   R14, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R14, CX
	RORQ   $0x29, DX
	ANDQ   R15, CX
	XORQ   AX, DX
	MOVQ   R14, AX
	NOTQ   AX
	ADDQ   DX, R9
	ANDQ   R8, AX
	XORQ   CX, AX
	ADDQ   R9, AX
	MOVQ   R10, DI
	MOVQ   R12, BX
	RORQ   $0x1c, DI
	MOVQ   R10, DX
	ANDQ   R11, BX
	RORQ   $0x22, DX
	MOVQ   R10, CX
	ANDQ   R12, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R10, DX
	MOVQ   R11, CX
	RORQ   $0x27, DX
	ANDQ   R10, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R9
	ADDQ   AX, R13
	ADDQ   AX, R9
	MOVQ   120(SI), AX
	BSWAPQ AX
	MOVQ   AX, 120(BP)
	MOVQ   $0xc19bf174cf692694, DX
	ADDQ   AX, R8
	MOVQ   R13, AX
	ADDQ   DX, R8
	MOVQ   R13, CX
	RORQ   $0x0e, AX
	MOVQ   R13, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R13, CX
	RORQ   $0x29, DX
	ANDQ   R14, CX
	XORQ   AX, DX
	MOVQ   R13, AX
	NOTQ   AX
	ADDQ   DX, R8
	ANDQ   R15, AX
	XORQ   CX, AX
	ADDQ   R8, AX
	MOVQ   R9, DI
	MOVQ   R11, BX
	RORQ   $0x1c, DI
	MOVQ   R9, DX
	ANDQ   R10, BX
	RORQ   $0x22, DX
	MOVQ   R9, CX
	ANDQ   R11, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R9, DX
	MOVQ   R10, CX
	RORQ   $0x27, DX
	ANDQ   R9, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R8
	ADDQ   AX, R12
	ADDQ   AX, R8
	MOVQ   112(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   8(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   72(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   (BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 128(BP)
	MOVQ   $0xe49b69c19ef14ad2, DX
	ADDQ   AX, R15
	MOVQ   R12, AX
	ADDQ   DX, R15
	MOVQ   R12, CX
	RORQ   $0x0e, AX
	MOVQ   R12, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R12, CX
	RORQ   $0x29, DX
	ANDQ   R13, CX
	XORQ   AX, DX
	MOVQ   R12, AX
	NOTQ   AX
	ADDQ   DX, R15
	ANDQ   R14, AX
	XORQ   CX, AX
	ADDQ   R15, AX
	MOVQ   R8, DI
	MOVQ   R10, BX
	RORQ   $0x1c, DI
	MOVQ   R8, DX
	ANDQ   R9, BX
	RORQ   $0x22, DX
	MOVQ   R8, CX
	ANDQ   R10, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R8, DX
	MOVQ   R9, CX
	RORQ   $0x27, DX
	ANDQ   R8, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R15
	ADDQ   AX, R11
	ADDQ   AX, R15
	MOVQ   120(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   16(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   80(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   8(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 136(BP)
	MOVQ   $0xefbe4786384f25e3, DX
	ADDQ   AX, R14
	MOVQ   R11, AX
	ADDQ   DX, R14
	MOVQ   R11, CX
	RORQ   $0x0e, AX
	MOVQ   R11, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R11, CX
	RORQ   $0x29, DX
	ANDQ   R12, CX
	XORQ   AX, DX
	MOVQ   R11, AX
	NOTQ   AX
	ADDQ   DX, R14
	ANDQ   R13, AX
	XORQ   CX, AX
	ADDQ   R14, AX
	MOVQ   R15, DI
	MOVQ   R9, BX
	RORQ   $0x1c, DI
	MOVQ   R15, DX
	ANDQ   R8, BX
	RORQ   $0x22, DX
	MOVQ   R15, CX
	ANDQ   R9, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R15, DX
	MOVQ   R8, CX
	RORQ   $0x27, DX
	ANDQ   R15, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R14
	ADDQ   AX, R10
	ADDQ   AX, R14
	MOVQ   128(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   24(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   88(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   16(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 144(BP)
	MOVQ   $0x0fc19dc68b8cd5b5, DX
	ADDQ   AX, R13
	MOVQ   R10, AX
	ADDQ   DX, R13
	MOVQ   R10, CX
	RORQ   $0x0e, AX
	MOVQ   R10, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R10, CX
	RORQ   $0x29, DX
	ANDQ   R11, CX
	XORQ   AX, DX
	MOVQ   R10, AX
	NOTQ   AX
	ADDQ   DX, R13
	ANDQ   R12, AX
	XORQ   CX, AX
	ADDQ   R13, AX
	MOVQ   R14, DI
	MOVQ   R8, BX
	RORQ   $0x1c, DI
	MOVQ   R14, DX
	ANDQ   R15, BX
	RORQ   $0x22, DX
	MOVQ   R14, CX
	ANDQ   R8, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R14, DX
	MOVQ   R15, CX
	RORQ   $0x27, DX
	ANDQ   R14, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R13
	ADDQ   AX, R9
	ADDQ   AX, R13
	MOVQ   136(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   32(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   96(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   24(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 152(BP)
	MOVQ   $0x240ca1cc77ac9c65, DX
	ADDQ   AX, R12
	MOVQ   R9, AX
	ADDQ   DX, R12
	MOVQ   R9, CX
	RORQ   $0x0e, AX
	MOVQ   R9, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R9, CX
	RORQ   $0x29, DX
	ANDQ   R10, CX
	XORQ   AX, DX
	MOVQ   R9, AX
	NOTQ   AX
	ADDQ   DX, R12
	ANDQ   R11, AX
	XORQ   CX, AX
	ADDQ   R12, AX
	MOVQ   R13, DI
	MOVQ   R15, BX
	RORQ   $0x1c, DI
	MOVQ   R13, DX
	ANDQ   R14, BX
	RORQ   $0x22, DX
	MOVQ   R13, CX
	ANDQ   R15, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R13, DX
	MOVQ   R14, CX
	RORQ   $0x27, DX
	ANDQ   R13, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R12
	ADDQ   AX, R8
	ADDQ   AX, R12
	MOVQ   144(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   40(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   104(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   32(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 160(BP)
	MOVQ   $0x2de92c6f592b0275, DX
	ADDQ   AX, R11
	MOVQ   R8, AX
	ADDQ   DX, R11
	MOVQ   R8, CX
	RORQ   $0x0e, AX
	MOVQ   R8, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R8, CX
	RORQ   $0x29, DX
	ANDQ   R9, CX
	XORQ   AX, DX
	MOVQ   R8, AX
	NOTQ   AX
	ADDQ   DX, R11
	ANDQ   R10, AX
	XORQ   CX, AX
	ADDQ   R11, AX
	MOVQ   R12, DI
	MOVQ   R14, BX
	RORQ   $0x1c, DI
	MOVQ   R12, DX
	ANDQ   R13, BX
	RORQ   $0x22, DX
	MOVQ   R12, CX
	ANDQ   R14, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R12, DX
	MOVQ   R13, CX
	RORQ   $0x27, DX
	ANDQ   R12, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R11
	ADDQ   AX, R15
	ADDQ   AX, R11
	MOVQ   152(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   48(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   112(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   40(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 168(BP)
	MOVQ   $0x4a7484aa6ea6e483, DX
	ADDQ   AX, R10
	MOVQ   R15, AX
	ADDQ   DX, R10
	MOVQ   R15, CX
	RORQ   $0x0e, AX
	MOVQ   R15, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R15, CX
	RORQ   $0x29, DX
	ANDQ   R8, CX
	XORQ   AX, DX
	MOVQ   R15, AX
	NOTQ   AX
	ADDQ   DX, R10
	ANDQ   R9, AX
	XORQ   CX, AX
	ADDQ   R10, AX
	MOVQ   R11, DI
	MOVQ   R13, BX
	RORQ   $0x1c, DI
	MOVQ   R11, DX
	ANDQ   R12, BX
	RORQ   $0x22, DX
	MOVQ   R11, CX
	ANDQ   R13, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R11, DX
	MOVQ   R12, CX
	RORQ   $0x27, DX
	ANDQ   R11, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R10
	ADDQ   AX, R14
	ADDQ   AX, R10
	MOVQ   160(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   56(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   120(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   48(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 176(BP)
	MOVQ   $0x5cb0a9dcbd41fbd4, DX
	ADDQ   AX, R9
	MOVQ   R14, AX
	ADDQ   DX, R9
	MOVQ   R14, CX
	RORQ   $0x0e, AX
	MOVQ   R14, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R14, CX
	RORQ   $0x29, DX
	ANDQ   R15, CX
	XORQ   AX, DX
	MOVQ   R14, AX
	NOTQ   AX
	ADDQ   DX, R9
	ANDQ   R8, AX
	XORQ   CX, AX
	ADDQ   R9, AX
	MOVQ   R10, DI
	MOVQ   R12, BX
	RORQ   $0x1c, DI
	MOVQ   R10, DX
	ANDQ   R11, BX
	RORQ   $0x22, DX
	MOVQ   R10, CX
	ANDQ   R12, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R10, DX
	MOVQ   R11, CX
	RORQ   $0x27, DX
	ANDQ   R10, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R9
	ADDQ   AX, R13
	ADDQ   AX, R9
	MOVQ   168(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   64(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   128(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   56(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 184(BP)
	MOVQ   $0x76f988da831153b5, DX
	ADDQ   AX, R8
	MOVQ   R13, AX
	ADDQ   DX, R8
	MOVQ   R13, CX
	RORQ   $0x0e, AX
	MOVQ   R13, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R13, CX
	RORQ   $0x29, DX
	ANDQ   R14, CX
	XORQ   AX, DX
	MOVQ   R13, AX
	NOTQ   AX
	ADDQ   DX, R8
	ANDQ   R15, AX
	XORQ   CX, AX
	ADDQ   R8, AX
	MOVQ   R9, DI
	MOVQ   R11, BX
	RORQ   $0x1c, DI
	MOVQ   R9, DX
	ANDQ   R10, BX
	RORQ   $0x22, DX
	MOVQ   R9, CX
	ANDQ   R11, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R9, DX
	MOVQ   R10, CX
	RORQ   $0x27, DX
	ANDQ   R9, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R8
	ADDQ   AX, R12
	ADDQ   AX, R8
	MOVQ   176(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   72(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   136(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   64(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 192(BP)
	MOVQ   $0x983e5152ee66dfab, DX
	ADDQ   AX, R15
	MOVQ   R12, AX
	ADDQ   DX, R15
	MOVQ   R12, CX
	RORQ   $0x0e, AX
	MOVQ   R12, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R12, CX
	RORQ   $0x29, DX
	ANDQ   R13, CX
	XORQ   AX, DX
	MOVQ   R12, AX
	NOTQ   AX
	ADDQ   DX, R15
	ANDQ   R14, AX
	XORQ   CX, AX
	ADDQ   R15, AX
	MOVQ   R8, DI
	MOVQ   R10, BX
	RORQ   $0x1c, DI
	MOVQ   R8, DX
	ANDQ   R9, BX
	RORQ   $0x22, DX
	MOVQ   R8, CX
	ANDQ   R10, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R8, DX
	MOVQ   R9, CX
	RORQ   $0x27, DX
	ANDQ   R8, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R15
	ADDQ   AX, R11
	ADDQ   AX, R15
	MOVQ   184(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   80(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   144(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   72(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 200(BP)
	MOVQ   $0xa831c66d2db43210, DX
	ADDQ   AX, R14
	MOVQ   R11, AX
	ADDQ   DX, R14
	MOVQ   R11, CX
	RORQ   $0x0e, AX
	MOVQ   R11, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R11, CX
	RORQ   $0x29, DX
	ANDQ   R12, CX
	XORQ   AX, DX
	MOVQ   R11, AX
	NOTQ   AX
	ADDQ   DX, R14
	ANDQ   R13, AX
	XORQ   CX, AX
	ADDQ   R14, AX
	MOVQ   R15, DI
	MOVQ   R9, BX
	RORQ   $0x1c, DI
	MOVQ   R15, DX
	ANDQ   R8, BX
	RORQ   $0x22, DX
	MOVQ   R15, CX
	ANDQ   R9, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R15, DX
	MOVQ   R8, CX
	RORQ   $0x27, DX
	ANDQ   R15, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R14
	ADDQ   AX, R10
	ADDQ   AX, R14
	MOVQ   192(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   88(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   152(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   80(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 208(BP)
	MOVQ   $0xb00327c898fb213f, DX
	ADDQ   AX, R13
	MOVQ   R10, AX
	ADDQ   DX, R13
	MOVQ   R10, CX
	RORQ   $0x0e, AX
	MOVQ   R10, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R10, CX
	RORQ   $0x29, DX
	ANDQ   R11, CX
	XORQ   AX, DX
	MOVQ   R10, AX
	NOTQ   AX
	ADDQ   DX, R13
	ANDQ   R12, AX
	XORQ   CX, AX
	ADDQ   R13, AX
	MOVQ   R14, DI
	MOVQ   R8, BX
	RORQ   $0x1c, DI
	MOVQ   R14, DX
	ANDQ   R15, BX
	RORQ   $0x22, DX
	MOVQ   R14, CX
	ANDQ   R8, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R14, DX
	MOVQ   R15, CX
	RORQ   $0x27, DX
	ANDQ   R14, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R13
	ADDQ   AX, R9
	ADDQ   AX, R13
	MOVQ   200(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   96(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   160(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   88(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 216(BP)
	MOVQ   $0xbf597fc7beef0ee4, DX
	ADDQ   AX, R12
	MOVQ   R9, AX
	ADDQ   DX, R12
	MOVQ   R9, CX
	RORQ   $0x0e, AX
	MOVQ   R9, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R9, CX
	RORQ   $0x29, DX
	ANDQ   R10, CX
	XORQ   AX, DX
	MOVQ   R9, AX
	NOTQ   AX
	ADDQ   DX, R12
	ANDQ   R11, AX
	XORQ   CX, AX
	ADDQ   R12, AX
	MOVQ   R13, DI
	MOVQ   R15, BX
	RORQ   $0x1c, DI
	MOVQ   R13, DX
	ANDQ   R14, BX
	RORQ   $0x22, DX
	MOVQ   R13, CX
	ANDQ   R15, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R13, DX
	MOVQ   R14, CX
	RORQ   $0x27, DX
	ANDQ   R13, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R12
	ADDQ   AX, R8
	ADDQ   AX, R12
	MOVQ   208(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   104(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   168(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   96(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 224(BP)
	MOVQ   $0xc6e00bf33da88fc2, DX
	ADDQ   AX, R11
	MOVQ   R8, AX
	ADDQ   DX, R11
	MOVQ   R8, CX
	RORQ   $0x0e, AX
	MOVQ   R8, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R8, CX
	RORQ   $0x29, DX
	ANDQ   R9, CX
	XORQ   AX, DX
	MOVQ   R8, AX
	NOTQ   AX
	ADDQ   DX, R11
	ANDQ   R10, AX
	XORQ   CX, AX
	ADDQ   R11, AX
	MOVQ   R12, DI
	MOVQ   R14, BX
	RORQ   $0x1c, DI
	MOVQ   R12, DX
	ANDQ   R13, BX
	RORQ   $0x22, DX
	MOVQ   R12, CX
	ANDQ   R14, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R12, DX
	MOVQ   R13, CX
	RORQ   $0x27, DX
	ANDQ   R12, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R11
	ADDQ   AX, R15
	ADDQ   AX, R11
	MOVQ   216(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   112(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   176(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   104(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 232(BP)
	MOVQ   $0xd5a79147930aa725, DX
	ADDQ   AX, R10
	MOVQ   R15, AX
	ADDQ   DX, R10
	MOVQ   R15, CX
	RORQ   $0x0e, AX
	MOVQ   R15, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R15, CX
	RORQ   $0x29, DX
	ANDQ   R8, CX
	XORQ   AX, DX
	MOVQ   R15, AX
	NOTQ   AX
	ADDQ   DX, R10
	ANDQ   R9, AX
	XORQ   CX, AX
	ADDQ   R10, AX
	MOVQ   R11, DI
	MOVQ   R13, BX
	RORQ   $0x1c, DI
	MOVQ   R11, DX
	ANDQ   R12, BX
	RORQ   $0x22, DX
	MOVQ   R11, CX
	ANDQ   R13, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R11, DX
	MOVQ   R12, CX
	RORQ   $0x27, DX
	ANDQ   R11, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R10
	ADDQ   AX, R14
	ADDQ   AX, R10
	MOVQ   224(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   120(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   184(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   112(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 240(BP)
	MOVQ   $0x06ca6351e003826f, DX
	ADDQ   AX, R9
	MOVQ   R14, AX
	ADDQ   DX, R9
	MOVQ   R14, CX
	RORQ   $0x0e, AX
	MOVQ   R14, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R14, CX
	RORQ   $0x29, DX
	ANDQ   R15, CX
	XORQ   AX, DX
	MOVQ   R14, AX
	NOTQ   AX
	ADDQ   DX, R9
	ANDQ   R8, AX
	XORQ   CX, AX
	ADDQ   R9, AX
	MOVQ   R10, DI
	MOVQ   R12, BX
	RORQ   $0x1c, DI
	MOVQ   R10, DX
	ANDQ   R11, BX
	RORQ   $0x22, DX
	MOVQ   R10, CX
	ANDQ   R12, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R10, DX
	MOVQ   R11, CX
	RORQ   $0x27, DX
	ANDQ   R10, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R9
	ADDQ   AX, R13
	ADDQ   AX, R9
	MOVQ   232(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   128(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   192(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   120(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 248(BP)
	MOVQ   $0x142929670a0e6e70, DX
	ADDQ   AX, R8
	MOVQ   R13, AX
	ADDQ   DX, R8
	MOVQ   R13, CX
	RORQ   $0x0e, AX
	MOVQ   R13, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R13, CX
	RORQ   $0x29, DX
	ANDQ   R14, CX
	XORQ   AX, DX
	MOVQ   R13, AX
	NOTQ   AX
	ADDQ   DX, R8
	ANDQ   R15, AX
	XORQ   CX, AX
	ADDQ   R8, AX
	MOVQ   R9, DI
	MOVQ   R11, BX
	RORQ   $0x1c, DI
	MOVQ   R9, DX
	ANDQ   R10, BX
	RORQ   $0x22, DX
	MOVQ   R9, CX
	ANDQ   R11, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R9, DX
	MOVQ   R10, CX
	RORQ   $0x27, DX
	ANDQ   R9, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R8
	ADDQ   AX, R12
	ADDQ   AX, R8
	MOVQ   240(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   136(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   200(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   128(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 256(BP)
	MOVQ   $0x27b70a8546d22ffc, DX
	ADDQ   AX, R15
	MOVQ   R12, AX
	ADDQ   DX, R15
	MOVQ   R12, CX
	RORQ   $0x0e, AX
	MOVQ   R12, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R12, CX
	RORQ   $0x29, DX
	ANDQ   R13, CX
	XORQ   AX, DX
	MOVQ   R12, AX
	NOTQ   AX
	ADDQ   DX, R15
	ANDQ   R14, AX
	XORQ   CX, AX
	ADDQ   R15, AX
	MOVQ   R8, DI
	MOVQ   R10, BX
	RORQ   $0x1c, DI
	MOVQ   R8, DX
	ANDQ   R9, BX
	RORQ   $0x22, DX
	MOVQ   R8, CX
	ANDQ   R10, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R8, DX
	MOVQ   R9, CX
	RORQ   $0x27, DX
	ANDQ   R8, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R15
	ADDQ   AX, R11
	ADDQ   AX, R15
	MOVQ   248(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   144(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   208(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   136(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 264(BP)
	MOVQ   $0x2e1b21385c26c926, DX
	ADDQ   AX, R14
	MOVQ   R11, AX
	ADDQ   DX, R14
	MOVQ   R11, CX
	RORQ   $0x0e, AX
	MOVQ   R11, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R11, CX
	RORQ   $0x29, DX
	ANDQ   R12, CX
	XORQ   AX, DX
	MOVQ   R11, AX
	NOTQ   AX
	ADDQ   DX, R14
	ANDQ   R13, AX
	XORQ   CX, AX
	ADDQ   R14, AX
	MOVQ   R15, DI
	MOVQ   R9, BX
	RORQ   $0x1c, DI
	MOVQ   R15, DX
	ANDQ   R8, BX
	RORQ   $0x22, DX
	MOVQ   R15, CX
	ANDQ   R9, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R15, DX
	MOVQ   R8, CX
	RORQ   $0x27, DX
	ANDQ   R15, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R14
	ADDQ   AX, R10
	ADDQ   AX, R14
	MOVQ   256(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   152(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   216(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   144(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 272(BP)
	MOVQ   $0x4d2c6dfc5ac42aed, DX
	ADDQ   AX, R13
	MOVQ   R10, AX
	ADDQ   DX, R13
	MOVQ   R10, CX
	RORQ   $0x0e, AX
	MOVQ   R10, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R10, CX
	RORQ   $0x29, DX
	ANDQ   R11, CX
	XORQ   AX, DX
	MOVQ   R10, AX
	NOTQ   AX
	ADDQ   DX, R13
	ANDQ   R12, AX
	XORQ   CX, AX
	ADDQ   R13, AX
	MOVQ   R14, DI
	MOVQ   R8, BX
	RORQ   $0x1c, DI
	MOVQ   R14, DX
	ANDQ   R15, BX
	RORQ   $0x22, DX
	MOVQ   R14, CX
	ANDQ   R8, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R14, DX
	MOVQ   R15, CX
	RORQ   $0x27, DX
	ANDQ   R14, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R13
	ADDQ   AX, R9
	ADDQ   AX, R13
	MOVQ   264(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   160(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   224(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   152(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 280(BP)
	MOVQ   $0x53380d139d95b3df, DX
	ADDQ   AX, R12
	MOVQ   R9, AX
	ADDQ   DX, R12
	MOVQ   R9, CX
	RORQ   $0x0e, AX
	MOVQ   R9, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R9, CX
	RORQ   $0x29, DX
	ANDQ   R10, CX
	XORQ   AX, DX
	MOVQ   R9, AX
	NOTQ   AX
	ADDQ   DX, R12
	ANDQ   R11, AX
	XORQ   CX, AX
	ADDQ   R12, AX
	MOVQ   R13, DI
	MOVQ   R15, BX
	RORQ   $0x1c, DI
	MOVQ   R13, DX
	ANDQ   R14, BX
	RORQ   $0x22, DX
	MOVQ   R13, CX
	ANDQ   R15, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R13, DX
	MOVQ   R14, CX
	RORQ   $0x27, DX
	ANDQ   R13, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R12
	ADDQ   AX, R8
	ADDQ   AX, R12
	MOVQ   272(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   168(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   232(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   160(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 288(BP)
	MOVQ   $0x650a73548baf63de, DX
	ADDQ   AX, R11
	MOVQ   R8, AX
	ADDQ   DX, R11
	MOVQ   R8, CX
	RORQ   $0x0e, AX
	MOVQ   R8, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R8, CX
	RORQ   $0x29, DX
	ANDQ   R9, CX
	XORQ   AX, DX
	MOVQ   R8, AX
	NOTQ   AX
	ADDQ   DX, R11
	ANDQ   R10, AX
	XORQ   CX, AX
	ADDQ   R11, AX
	MOVQ   R12, DI
	MOVQ   R14, BX
	RORQ   $0x1c, DI
	MOVQ   R12, DX
	ANDQ   R13, BX
	RORQ   $0x22, DX
	MOVQ   R12, CX
	ANDQ   R14, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R12, DX
	MOVQ   R13, CX
	RORQ   $0x27, DX
	ANDQ   R12, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R11
	ADDQ   AX, R15
	ADDQ   AX, R11
	MOVQ   280(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   176(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   240(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   168(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 296(BP)
	MOVQ   $0x766a0abb3c77b2a8, DX
	ADDQ   AX, R10
	MOVQ   R15, AX
	ADDQ   DX, R10
	MOVQ   R15, CX
	RORQ   $0x0e, AX
	MOVQ   R15, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R15, CX
	RORQ   $0x29, DX
	ANDQ   R8, CX
	XORQ   AX, DX
	MOVQ   R15, AX
	NOTQ   AX
	ADDQ   DX, R10
	ANDQ   R9, AX
	XORQ   CX, AX
	ADDQ   R10, AX
	MOVQ   R11, DI
	MOVQ   R13, BX
	RORQ   $0x1c, DI
	MOVQ   R11, DX
	ANDQ   R12, BX
	RORQ   $0x22, DX
	MOVQ   R11, CX
	ANDQ   R13, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R11, DX
	MOVQ   R12, CX
	RORQ   $0x27, DX
	ANDQ   R11, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R10
	ADDQ   AX, R14
	ADDQ   AX, R10
	MOVQ   288(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   184(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   248(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   176(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 304(BP)
	MOVQ   $0x81c2c92e47edaee6, DX
	ADDQ   AX, R9
	MOVQ   R14, AX
	ADDQ   DX, R9
	MOVQ   R14, CX
	RORQ   $0x0e, AX
	MOVQ   R14, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R14, CX
	RORQ   $0x29, DX
	ANDQ   R15, CX
	XORQ   AX, DX
	MOVQ   R14, AX
	NOTQ   AX
	ADDQ   DX, R9
	ANDQ   R8, AX
	XORQ   CX, AX
	ADDQ   R9, AX
	MOVQ   R10, DI
	MOVQ   R12, BX
	RORQ   $0x1c, DI
	MOVQ   R10, DX
	ANDQ   R11, BX
	RORQ   $0x22, DX
	MOVQ   R10, CX
	ANDQ   R12, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R10, DX
	MOVQ   R11, CX
	RORQ   $0x27, DX
	ANDQ   R10, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R9
	ADDQ   AX, R13
	ADDQ   AX, R9
	MOVQ   296(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   192(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   256(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   184(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 312(BP)
	MOVQ   $0x92722c851482353b, DX
	ADDQ   AX, R8
	MOVQ   R13, AX
	ADDQ   DX, R8
	MOVQ   R13, CX
	RORQ   $0x0e, AX
	MOVQ   R13, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R13, CX
	RORQ   $0x29, DX
	ANDQ   R14, CX
	XORQ   AX, DX
	MOVQ   R13, AX
	NOTQ   AX
	ADDQ   DX, R8
	ANDQ   R15, AX
	XORQ   CX, AX
	ADDQ   R8, AX
	MOVQ   R9, DI
	MOVQ   R11, BX
	RORQ   $0x1c, DI
	MOVQ   R9, DX
	ANDQ   R10, BX
	RORQ   $0x22, DX
	MOVQ   R9, CX
	ANDQ   R11, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R9, DX
	MOVQ   R10, CX
	RORQ   $0x27, DX
	ANDQ   R9, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R8
	ADDQ   AX, R12
	ADDQ   AX, R8
	MOVQ   304(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   200(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   264(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   192(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 320(BP)
	MOVQ   $0xa2bfe8a14cf10364, DX
	ADDQ   AX, R15
	MOVQ   R12, AX
	ADDQ   DX, R15
	MOVQ   R12, CX
	RORQ   $0x0e, AX
	MOVQ   R12, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R12, CX
	RORQ   $0x29, DX
	ANDQ   R13, CX
	XORQ   AX, DX
	MOVQ   R12, AX
	NOTQ   AX
	ADDQ   DX, R15
	ANDQ   R14, AX
	XORQ   CX, AX
	ADDQ   R15, AX
	MOVQ   R8, DI
	MOVQ   R10, BX
	RORQ   $0x1c, DI
	MOVQ   R8, DX
	ANDQ   R9, BX
	RORQ   $0x22, DX
	MOVQ   R8, CX
	ANDQ   R10, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R8, DX
	MOVQ   R9, CX
	RORQ   $0x27, DX
	ANDQ   R8, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R15
	ADDQ   AX, R11
	ADDQ   AX, R15
	MOVQ   312(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   208(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   272(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   200(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 328(BP)
	MOVQ   $0xa81a664bbc423001, DX
	ADDQ   AX, R14
	MOVQ   R11, AX
	ADDQ   DX, R14
	MOVQ   R11, CX
	RORQ   $0x0e, AX
	MOVQ   R11, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R11, CX
	RORQ   $0x29, DX
	ANDQ   R12, CX
	XORQ   AX, DX
	MOVQ   R11, AX
	NOTQ   AX
	ADDQ   DX, R14
	ANDQ   R13, AX
	XORQ   CX, AX
	ADDQ   R14, AX
	MOVQ   R15, DI
	MOVQ   R9, BX
	RORQ   $0x1c, DI
	MOVQ   R15, DX
	ANDQ   R8, BX
	RORQ   $0x22, DX
	MOVQ   R15, CX
	ANDQ   R9, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R15, DX
	MOVQ   R8, CX
	RORQ   $0x27, DX
	ANDQ   R15, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R14
	ADDQ   AX, R10
	ADDQ   AX, R14
	MOVQ   320(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   216(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   280(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   208(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 336(BP)
	MOVQ   $0xc24b8b70d0f89791, DX
	ADDQ   AX, R13
	MOVQ   R10, AX
	ADDQ   DX, R13
	MOVQ   R10, CX
	RORQ   $0x0e, AX
	MOVQ   R10, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R10, CX
	RORQ   $0x29, DX
	ANDQ   R11, CX
	XORQ   AX, DX
	MOVQ   R10, AX
	NOTQ   AX
	ADDQ   DX, R13
	ANDQ   R12, AX
	XORQ   CX, AX
	ADDQ   R13, AX
	MOVQ   R14, DI
	MOVQ   R8, BX
	RORQ   $0x1c, DI
	MOVQ   R14, DX
	ANDQ   R15, BX
	RORQ   $0x22, DX
	MOVQ   R14, CX
	ANDQ   R8, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R14, DX
	MOVQ   R15, CX
	RORQ   $0x27, DX
	ANDQ   R14, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R13
	ADDQ   AX, R9
	ADDQ   AX, R13
	MOVQ   328(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   224(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   288(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   216(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 344(BP)
	MOVQ   $0xc76c51a30654be30, DX
	ADDQ   AX, R12
	MOVQ   R9, AX
	ADDQ   DX, R12
	MOVQ   R9, CX
	RORQ   $0x0e, AX
	MOVQ   R9, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R9, CX
	RORQ   $0x29, DX
	ANDQ   R10, CX
	XORQ   AX, DX
	MOVQ   R9, AX
	NOTQ   AX
	ADDQ   DX, R12
	ANDQ   R11, AX
	XORQ   CX, AX
	ADDQ   R12, AX
	MOVQ   R13, DI
	MOVQ   R15, BX
	RORQ   $0x1c, DI
	MOVQ   R13, DX
	ANDQ   R14, BX
	RORQ   $0x22, DX
	MOVQ   R13, CX
	ANDQ   R15, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R13, DX
	MOVQ   R14, CX
	RORQ   $0x27, DX
	ANDQ   R13, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R12
	ADDQ   AX, R8
	ADDQ   AX, R12
	MOVQ   336(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   232(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   296(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   224(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 352(BP)
	MOVQ   $0xd192e819d6ef5218, DX
	ADDQ   AX, R11
	MOVQ   R8, AX
	ADDQ   DX, R11
	MOVQ   R8, CX
	RORQ   $0x0e, AX
	MOVQ   R8, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R8, CX
	RORQ   $0x29, DX
	ANDQ   R9, CX
	XORQ   AX, DX
	MOVQ   R8, AX
	NOTQ   AX
	ADDQ   DX, R11
	ANDQ   R10, AX
	XORQ   CX, AX
	ADDQ   R11, AX
	MOVQ   R12, DI
	MOVQ   R14, BX
	RORQ   $0x1c, DI
	MOVQ   R12, DX
	ANDQ   R13, BX
	RORQ   $0x22, DX
	MOVQ   R12, CX
	ANDQ   R14, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R12, DX
	MOVQ   R13, CX
	RORQ   $0x27, DX
	ANDQ   R12, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R11
	ADDQ   AX, R15
	ADDQ   AX, R11
	MOVQ   344(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   240(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   304(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   232(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 360(BP)
	MOVQ   $0xd69906245565a910, DX
	ADDQ   AX, R10
	MOVQ   R15, AX
	ADDQ   DX, R10
	MOVQ   R15, CX
	RORQ   $0x0e, AX
	MOVQ   R15, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R15, CX
	RORQ   $0x29, DX
	ANDQ   R8, CX
	XORQ   AX, DX
	MOVQ   R15, AX
	NOTQ   AX
	ADDQ   DX, R10
	ANDQ   R9, AX
	XORQ   CX, AX
	ADDQ   R10, AX
	MOVQ   R11, DI
	MOVQ   R13, BX
	RORQ   $0x1c, DI
	MOVQ   R11, DX
	ANDQ   R12, BX
	RORQ   $0x22, DX
	MOVQ   R11, CX
	ANDQ   R13, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R11, DX
	MOVQ   R12, CX
	RORQ   $0x27, DX
	ANDQ   R11, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R10
	ADDQ   AX, R14
	ADDQ   AX, R10
	MOVQ   352(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   248(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   312(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   240(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 368(BP)
	MOVQ   $0xf40e35855771202a, DX
	ADDQ   AX, R9
	MOVQ   R14, AX
	ADDQ   DX, R9
	MOVQ   R14, CX
	RORQ   $0x0e, AX
	MOVQ   R14, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R14, CX
	RORQ   $0x29, DX
	ANDQ   R15, CX
	XORQ   AX, DX
	MOVQ   R14, AX
	NOTQ   AX
	ADDQ   DX, R9
	ANDQ   R8, AX
	XORQ   CX, AX
	ADDQ   R9, AX
	MOVQ   R10, DI
	MOVQ   R12, BX
	RORQ   $0x1c, DI
	MOVQ   R10, DX
	ANDQ   R11, BX
	RORQ   $0x22, DX
	MOVQ   R10, CX
	ANDQ   R12, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R10, DX
	MOVQ   R11, CX
	RORQ   $0x27, DX
	ANDQ   R10, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R9
	ADDQ   AX, R13
	ADDQ   AX, R9
	MOVQ   360(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   256(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   320(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   248(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 376(BP)
	MOVQ   $0x106aa07032bbd1b8, DX
	ADDQ   AX, R8
	MOVQ   R13, AX
	ADDQ   DX, R8
	MOVQ   R13, CX
	RORQ   $0x0e, AX
	MOVQ   R13, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R13, CX
	RORQ   $0x29, DX
	ANDQ   R14, CX
	XORQ   AX, DX
	MOVQ   R13, AX
	NOTQ   AX
	ADDQ   DX, R8
	ANDQ   R15, AX
	XORQ   CX, AX
	ADDQ   R8, AX
	MOVQ   R9, DI
	MOVQ   R11, BX
	RORQ   $0x1c, DI
	MOVQ   R9, DX
	ANDQ   R10, BX
	RORQ   $0x22, DX
	MOVQ   R9, CX
	ANDQ   R11, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R9, DX
	MOVQ   R10, CX
	RORQ   $0x27, DX
	ANDQ   R9, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R8
	ADDQ   AX, R12
	ADDQ   AX, R8
	MOVQ   368(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   264(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   328(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   256(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 384(BP)
	MOVQ   $0x19a4c116b8d2d0c8, DX
	ADDQ   AX, R15
	MOVQ   R12, AX
	ADDQ   DX, R15
	MOVQ   R12, CX
	RORQ   $0x0e, AX
	MOVQ   R12, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R12, CX
	RORQ   $0x29, DX
	ANDQ   R13, CX
	XORQ   AX, DX
	MOVQ   R12, AX
	NOTQ   AX
	ADDQ   DX, R15
	ANDQ   R14, AX
	XORQ   CX, AX
	ADDQ   R15, AX
	MOVQ   R8, DI
	MOVQ   R10, BX
	RORQ   $0x1c, DI
	MOVQ   R8, DX
	ANDQ   R9, BX
	RORQ   $0x22, DX
	MOVQ   R8, CX
	ANDQ   R10, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R8, DX
	MOVQ   R9, CX
	RORQ   $0x27, DX
	ANDQ   R8, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R15
	ADDQ   AX, R11
	ADDQ   AX, R15
	MOVQ   376(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   272(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   336(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   264(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 392(BP)
	MOVQ   $0x1e376c085141ab53, DX
	ADDQ   AX, R14
	MOVQ   R11, AX
	ADDQ   DX, R14
	MOVQ   R11, CX
	RORQ   $0x0e, AX
	MOVQ   R11, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R11, CX
	RORQ   $0x29, DX
	ANDQ   R12, CX
	XORQ   AX, DX
	MOVQ   R11, AX
	NOTQ   AX
	ADDQ   DX, R14
	ANDQ   R13, AX
	XORQ   CX, AX
	ADDQ   R14, AX
	MOVQ   R15, DI
	MOVQ   R9, BX
	RORQ   $0x1c, DI
	MOVQ   R15, DX
	ANDQ   R8, BX
	RORQ   $0x22, DX
	MOVQ   R15, CX
	ANDQ   R9, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R15, DX
	MOVQ   R8, CX
	RORQ   $0x27, DX
	ANDQ   R15, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R14
	ADDQ   AX, R10
	ADDQ   AX, R14
	MOVQ   384(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   280(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   344(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   272(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 400(BP)
	MOVQ   $0x2748774cdf8eeb99, DX
	ADDQ   AX, R13
	MOVQ   R10, AX
	ADDQ   DX, R13
	MOVQ   R10, CX
	RORQ   $0x0e, AX
	MOVQ   R10, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R10, CX
	RORQ   $0x29, DX
	ANDQ   R11, CX
	XORQ   AX, DX
	MOVQ   R10, AX
	NOTQ   AX
	ADDQ   DX, R13
	ANDQ   R12, AX
	XORQ   CX, AX
	ADDQ   R13, AX
	MOVQ   R14, DI
	MOVQ   R8, BX
	RORQ   $0x1c, DI
	MOVQ   R14, DX
	ANDQ   R15, BX
	RORQ   $0x22, DX
	MOVQ   R14, CX
	ANDQ   R8, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R14, DX
	MOVQ   R15, CX
	RORQ   $0x27, DX
	ANDQ   R14, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R13
	ADDQ   AX, R9
	ADDQ   AX, R13
	MOVQ   392(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   288(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   352(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   280(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 408(BP)
	MOVQ   $0x34b0bcb5e19b48a8, DX
	ADDQ   AX, R12
	MOVQ   R9, AX
	ADDQ   DX, R12
	MOVQ   R9, CX
	RORQ   $0x0e, AX
	MOVQ   R9, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R9, CX
	RORQ   $0x29, DX
	ANDQ   R10, CX
	XORQ   AX, DX
	MOVQ   R9, AX
	NOTQ   AX
	ADDQ   DX, R12
	ANDQ   R11, AX
	XORQ   CX, AX
	ADDQ   R12, AX
	MOVQ   R13, DI
	MOVQ   R15, BX
	RORQ   $0x1c, DI
	MOVQ   R13, DX
	ANDQ   R14, BX
	RORQ   $0x22, DX
	MOVQ   R13, CX
	ANDQ   R15, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R13, DX
	MOVQ   R14, CX
	RORQ   $0x27, DX
	ANDQ   R13, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R12
	ADDQ   AX, R8
	ADDQ   AX, R12
	MOVQ   400(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   296(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   360(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   288(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 416(BP)
	MOVQ   $0x391c0cb3c5c95a63, DX
	ADDQ   AX, R11
	MOVQ   R8, AX
	ADDQ   DX, R11
	MOVQ   R8, CX
	RORQ   $0x0e, AX
	MOVQ   R8, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R8, CX
	RORQ   $0x29, DX
	ANDQ   R9, CX
	XORQ   AX, DX
	MOVQ   R8, AX
	NOTQ   AX
	ADDQ   DX, R11
	ANDQ   R10, AX
	XORQ   CX, AX
	ADDQ   R11, AX
	MOVQ   R12, DI
	MOVQ   R14, BX
	RORQ   $0x1c, DI
	MOVQ   R12, DX
	ANDQ   R13, BX
	RORQ   $0x22, DX
	MOVQ   R12, CX
	ANDQ   R14, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R12, DX
	MOVQ   R13, CX
	RORQ   $0x27, DX
	ANDQ   R12, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R11
	ADDQ   AX, R15
	ADDQ   AX, R11
	MOVQ   408(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   304(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   368(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   296(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 424(BP)
	MOVQ   $0x4ed8aa4ae3418acb, DX
	ADDQ   AX, R10
	MOVQ   R15, AX
	ADDQ   DX, R10
	MOVQ   R15, CX
	RORQ   $0x0e, AX
	MOVQ   R15, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R15, CX
	RORQ   $0x29, DX
	ANDQ   R8, CX
	XORQ   AX, DX
	MOVQ   R15, AX
	NOTQ   AX
	ADDQ   DX, R10
	ANDQ   R9, AX
	XORQ   CX, AX
	ADDQ   R10, AX
	MOVQ   R11, DI
	MOVQ   R13, BX
	RORQ   $0x1c, DI
	MOVQ   R11, DX
	ANDQ   R12, BX
	RORQ   $0x22, DX
	MOVQ   R11, CX
	ANDQ   R13, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R11, DX
	MOVQ   R12, CX
	RORQ   $0x27, DX
	ANDQ   R11, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R10
	ADDQ   AX, R14
	ADDQ   AX, R10
	MOVQ   416(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   312(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   376(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   304(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 432(BP)
	MOVQ   $0x5b9cca4f7763e373, DX
	ADDQ   AX, R9
	MOVQ   R14, AX
	ADDQ   DX, R9
	MOVQ   R14, CX
	RORQ   $0x0e, AX
	MOVQ   R14, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R14, CX
	RORQ   $0x29, DX
	ANDQ   R15, CX
	XORQ   AX, DX
	MOVQ   R14, AX
	NOTQ   AX
	ADDQ   DX, R9
	ANDQ   R8, AX
	XORQ   CX, AX
	ADDQ   R9, AX
	MOVQ   R10, DI
	MOVQ   R12, BX
	RORQ   $0x1c, DI
	MOVQ   R10, DX
	ANDQ   R11, BX
	RORQ   $0x22, DX
	MOVQ   R10, CX
	ANDQ   R12, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R10, DX
	MOVQ   R11, CX
	RORQ   $0x27, DX
	ANDQ   R10, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R9
	ADDQ   AX, R13
	ADDQ   AX, R9
	MOVQ   424(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   320(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   384(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   312(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 440(BP)
	MOVQ   $0x682e6ff3d6b2b8a3, DX
	ADDQ   AX, R8
	MOVQ   R13, AX
	ADDQ   DX, R8
	MOVQ   R13, CX
	RORQ   $0x0e, AX
	MOVQ   R13, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R13, CX
	RORQ   $0x29, DX
	ANDQ   R14, CX
	XORQ   AX, DX
	MOVQ   R13, AX
	NOTQ   AX
	ADDQ   DX, R8
	ANDQ   R15, AX
	XORQ   CX, AX
	ADDQ   R8, AX
	MOVQ   R9, DI
	MOVQ   R11, BX
	RORQ   $0x1c, DI
	MOVQ   R9, DX
	ANDQ   R10, BX
	RORQ   $0x22, DX
	MOVQ   R9, CX
	ANDQ   R11, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R9, DX
	MOVQ   R10, CX
	RORQ   $0x27, DX
	ANDQ   R9, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R8
	ADDQ   AX, R12
	ADDQ   AX, R8
	MOVQ   432(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   328(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   392(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   320(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 448(BP)
	MOVQ   $0x748f82ee5defb2fc, DX
	ADDQ   AX, R15
	MOVQ   R12, AX
	ADDQ   DX, R15
	MOVQ   R12, CX
	RORQ   $0x0e, AX
	MOVQ   R12, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R12, CX
	RORQ   $0x29, DX
	ANDQ   R13, CX
	XORQ   AX, DX
	MOVQ   R12, AX
	NOTQ   AX
	ADDQ   DX, R15
	ANDQ   R14, AX
	XORQ   CX, AX
	ADDQ   R15, AX
	MOVQ   R8, DI
	MOVQ   R10, BX
	RORQ   $0x1c, DI
	MOVQ   R8, DX
	ANDQ   R9, BX
	RORQ   $0x22, DX
	MOVQ   R8, CX
	ANDQ   R10, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R8, DX
	MOVQ   R9, CX
	RORQ   $0x27, DX
	ANDQ   R8, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R15
	ADDQ   AX, R11
	ADDQ   AX, R15
	MOVQ   440(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   336(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   400(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   328(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 456(BP)
	MOVQ   $0x78a5636f43172f60, DX
	ADDQ   AX, R14
	MOVQ   R11, AX
	ADDQ   DX, R14
	MOVQ   R11, CX
	RORQ   $0x0e, AX
	MOVQ   R11, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R11, CX
	RORQ   $0x29, DX
	ANDQ   R12, CX
	XORQ   AX, DX
	MOVQ   R11, AX
	NOTQ   AX
	ADDQ   DX, R14
	ANDQ   R13, AX
	XORQ   CX, AX
	ADDQ   R14, AX
	MOVQ   R15, DI
	MOVQ   R9, BX
	RORQ   $0x1c, DI
	MOVQ   R15, DX
	ANDQ   R8, BX
	RORQ   $0x22, DX
	MOVQ   R15, CX
	ANDQ   R9, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R15, DX
	MOVQ   R8, CX
	RORQ   $0x27, DX
	ANDQ   R15, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R14
	ADDQ   AX, R10
	ADDQ   AX, R14
	MOVQ   448(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   344(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   408(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   336(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 464(BP)
	MOVQ   $0x84c87814a1f0ab72, DX
	ADDQ   AX, R13
	MOVQ   R10, AX
	ADDQ   DX, R13
	MOVQ   R10, CX
	RORQ   $0x0e, AX
	MOVQ   R10, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R10, CX
	RORQ   $0x29, DX
	ANDQ   R11, CX
	XORQ   AX, DX
	MOVQ   R10, AX
	NOTQ   AX
	ADDQ   DX, R13
	ANDQ   R12, AX
	XORQ   CX, AX
	ADDQ   R13, AX
	MOVQ   R14, DI
	MOVQ   R8, BX
	RORQ   $0x1c, DI
	MOVQ   R14, DX
	ANDQ   R15, BX
	RORQ   $0x22, DX
	MOVQ   R14, CX
	ANDQ   R8, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R14, DX
	MOVQ   R15, CX
	RORQ   $0x27, DX
	ANDQ   R14, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R13
	ADDQ   AX, R9
	ADDQ   AX, R13
	MOVQ   456(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   352(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   416(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   344(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 472(BP)
	MOVQ   $0x8cc702081a6439ec, DX
	ADDQ   AX, R12
	MOVQ   R9, AX
	ADDQ   DX, R12
	MOVQ   R9, CX
	RORQ   $0x0e, AX
	MOVQ   R9, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R9, CX
	RORQ   $0x29, DX
	ANDQ   R10, CX
	XORQ   AX, DX
	MOVQ   R9, AX
	NOTQ   AX
	ADDQ   DX, R12
	ANDQ   R11, AX
	XORQ   CX, AX
	ADDQ   R12, AX
	MOVQ   R13, DI
	MOVQ   R15, BX
	RORQ   $0x1c, DI
	MOVQ   R13, DX
	ANDQ   R14, BX
	RORQ   $0x22, DX
	MOVQ   R13, CX
	ANDQ   R15, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R13, DX
	MOVQ   R14, CX
	RORQ   $0x27, DX
	ANDQ   R13, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R12
	ADDQ   AX, R8
	ADDQ   AX, R12
	MOVQ   464(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   360(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   424(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   352(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 480(BP)
	MOVQ   $0x90befffa23631e28, DX
	ADDQ   AX, R11
	MOVQ   R8, AX
	ADDQ   DX, R11
	MOVQ   R8, CX
	RORQ   $0x0e, AX
	MOVQ   R8, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R8, CX
	RORQ   $0x29, DX
	ANDQ   R9, CX
	XORQ   AX, DX
	MOVQ   R8, AX
	NOTQ   AX
	ADDQ   DX, R11
	ANDQ   R10, AX
	XORQ   CX, AX
	ADDQ   R11, AX
	MOVQ   R12, DI
	MOVQ   R14, BX
	RORQ   $0x1c, DI
	MOVQ   R12, DX
	ANDQ   R13, BX
	RORQ   $0x22, DX
	MOVQ   R12, CX
	ANDQ   R14, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R12, DX
	MOVQ   R13, CX
	RORQ   $0x27, DX
	ANDQ   R12, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R11
	ADDQ   AX, R15
	ADDQ   AX, R11
	MOVQ   472(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   368(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   432(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   360(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 488(BP)
	MOVQ   $0xa4506cebde82bde9, DX
	ADDQ   AX, R10
	MOVQ   R15, AX
	ADDQ   DX, R10
	MOVQ   R15, CX
	RORQ   $0x0e, AX
	MOVQ   R15, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R15, CX
	RORQ   $0x29, DX
	ANDQ   R8, CX
	XORQ   AX, DX
	MOVQ   R15, AX
	NOTQ   AX
	ADDQ   DX, R10
	ANDQ   R9, AX
	XORQ   CX, AX
	ADDQ   R10, AX
	MOVQ   R11, DI
	MOVQ   R13, BX
	RORQ   $0x1c, DI
	MOVQ   R11, DX
	ANDQ   R12, BX
	RORQ   $0x22, DX
	MOVQ   R11, CX
	ANDQ   R13, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R11, DX
	MOVQ   R12, CX
	RORQ   $0x27, DX
	ANDQ   R11, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R10
	ADDQ   AX, R14
	ADDQ   AX, R10
	MOVQ   480(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   376(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   440(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   368(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 496(BP)
	MOVQ   $0xbef9a3f7b2c67915, DX
	ADDQ   AX, R9
	MOVQ   R14, AX
	ADDQ   DX, R9
	MOVQ   R14, CX
	RORQ   $0x0e, AX
	MOVQ   R14, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R14, CX
	RORQ   $0x29, DX
	ANDQ   R15, CX
	XORQ   AX, DX
	MOVQ   R14, AX
	NOTQ   AX
	ADDQ   DX, R9
	ANDQ   R8, AX
	XORQ   CX, AX
	ADDQ   R9, AX
	MOVQ   R10, DI
	MOVQ   R12, BX
	RORQ   $0x1c, DI
	MOVQ   R10, DX
	ANDQ   R11, BX
	RORQ   $0x22, DX
	MOVQ   R10, CX
	ANDQ   R12, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R10, DX
	MOVQ   R11, CX
	RORQ   $0x27, DX
	ANDQ   R10, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R9
	ADDQ   AX, R13
	ADDQ   AX, R9
	MOVQ   488(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   384(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   448(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   376(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 504(BP)
	MOVQ   $0xc67178f2e372532b, DX
	ADDQ   AX, R8
	MOVQ   R13, AX
	ADDQ   DX, R8
	MOVQ   R13, CX
	RORQ   $0x0e, AX
	MOVQ   R13, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R13, CX
	RORQ   $0x29, DX
	ANDQ   R14, CX
	XORQ   AX, DX
	MOVQ   R13, AX
	NOTQ   AX
	ADDQ   DX, R8
	ANDQ   R15, AX
	XORQ   CX, AX
	ADDQ   R8, AX
	MOVQ   R9, DI
	MOVQ   R11, BX
	RORQ   $0x1c, DI
	MOVQ   R9, DX
	ANDQ   R10, BX
	RORQ   $0x22, DX
	MOVQ   R9, CX
	ANDQ   R11, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R9, DX
	MOVQ   R10, CX
	RORQ   $0x27, DX
	ANDQ   R9, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R8
	ADDQ   AX, R12
	ADDQ   AX, R8
	MOVQ   496(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   392(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   456(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   384(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 512(BP)
	MOVQ   $0xca273eceea26619c, DX
	ADDQ   AX, R15
	MOVQ   R12, AX
	ADDQ   DX, R15
	MOVQ   R12, CX
	RORQ   $0x0e, AX
	MOVQ   R12, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R12, CX
	RORQ   $0x29, DX
	ANDQ   R13, CX
	XORQ   AX, DX
	MOVQ   R12, AX
	NOTQ   AX
	ADDQ   DX, R15
	ANDQ   R14, AX
	XORQ   CX, AX
	ADDQ   R15, AX
	MOVQ   R8, DI
	MOVQ   R10, BX
	RORQ   $0x1c, DI
	MOVQ   R8, DX
	ANDQ   R9, BX
	RORQ   $0x22, DX
	MOVQ   R8, CX
	ANDQ   R10, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R8, DX
	MOVQ   R9, CX
	RORQ   $0x27, DX
	ANDQ   R8, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R15
	ADDQ   AX, R11
	ADDQ   AX, R15
	MOVQ   504(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   400(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   464(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   392(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 520(BP)
	MOVQ   $0xd186b8c721c0c207, DX
	ADDQ   AX, R14
	MOVQ   R11, AX
	ADDQ   DX, R14
	MOVQ   R11, CX
	RORQ   $0x0e, AX
	MOVQ   R11, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R11, CX
	RORQ   $0x29, DX
	ANDQ   R12, CX
	XORQ   AX, DX
	MOVQ   R11, AX
	NOTQ   AX
	ADDQ   DX, R14
	ANDQ   R13, AX
	XORQ   CX, AX
	ADDQ   R14, AX
	MOVQ   R15, DI
	MOVQ   R9, BX
	RORQ   $0x1c, DI
	MOVQ   R15, DX
	ANDQ   R8, BX
	RORQ   $0x22, DX
	MOVQ   R15, CX
	ANDQ   R9, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R15, DX
	MOVQ   R8, CX
	RORQ   $0x27, DX
	ANDQ   R15, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R14
	ADDQ   AX, R10
	ADDQ   AX, R14
	MOVQ   512(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   408(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   472(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   400(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 528(BP)
	MOVQ   $0xeada7dd6cde0eb1e, DX
	ADDQ   AX, R13
	MOVQ   R10, AX
	ADDQ   DX, R13
	MOVQ   R10, CX
	RORQ   $0x0e, AX
	MOVQ   R10, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R10, CX
	RORQ   $0x29, DX
	ANDQ   R11, CX
	XORQ   AX, DX
	MOVQ   R10, AX
	NOTQ   AX
	ADDQ   DX, R13
	ANDQ   R12, AX
	XORQ   CX, AX
	ADDQ   R13, AX
	MOVQ   R14, DI
	MOVQ   R8, BX
	RORQ   $0x1c, DI
	MOVQ   R14, DX
	ANDQ   R15, BX
	RORQ   $0x22, DX
	MOVQ   R14, CX
	ANDQ   R8, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R14, DX
	MOVQ   R15, CX
	RORQ   $0x27, DX
	ANDQ   R14, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R13
	ADDQ   AX, R9
	ADDQ   AX, R13
	MOVQ   520(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   416(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   480(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   408(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 536(BP)
	MOVQ   $0xf57d4f7fee6ed178, DX
	ADDQ   AX, R12
	MOVQ   R9, AX
	ADDQ   DX, R12
	MOVQ   R9, CX
	RORQ   $0x0e, AX
	MOVQ   R9, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R9, CX
	RORQ   $0x29, DX
	ANDQ   R10, CX
	XORQ   AX, DX
	MOVQ   R9, AX
	NOTQ   AX
	ADDQ   DX, R12
	ANDQ   R11, AX
	XORQ   CX, AX
	ADDQ   R12, AX
	MOVQ   R13, DI
	MOVQ   R15, BX
	RORQ   $0x1c, DI
	MOVQ   R13, DX
	ANDQ   R14, BX
	RORQ   $0x22, DX
	MOVQ   R13, CX
	ANDQ   R15, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R13, DX
	MOVQ   R14, CX
	RORQ   $0x27, DX
	ANDQ   R13, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R12
	ADDQ   AX, R8
	ADDQ   AX, R12
	MOVQ   528(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   424(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   488(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   416(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 544(BP)
	MOVQ   $0x06f067aa72176fba, DX
	ADDQ   AX, R11
	MOVQ   R8, AX
	ADDQ   DX, R11
	MOVQ   R8, CX
	RORQ   $0x0e, AX
	MOVQ   R8, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R8, CX
	RORQ   $0x29, DX
	ANDQ   R9, CX
	XORQ   AX, DX
	MOVQ   R8, AX
	NOTQ   AX
	ADDQ   DX, R11
	ANDQ   R10, AX
	XORQ   CX, AX
	ADDQ   R11, AX
	MOVQ   R12, DI
	MOVQ   R14, BX
	RORQ   $0x1c, DI
	MOVQ   R12, DX
	ANDQ   R13, BX
	RORQ   $0x22, DX
	MOVQ   R12, CX
	ANDQ   R14, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R12, DX
	MOVQ   R13, CX
	RORQ   $0x27, DX
	ANDQ   R12, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R11
	ADDQ   AX, R15
	ADDQ   AX, R11
	MOVQ   536(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   432(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   496(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   424(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 552(BP)
	MOVQ   $0x0a637dc5a2c898a6, DX
	ADDQ   AX, R10
	MOVQ   R15, AX
	ADDQ   DX, R10
	MOVQ   R15, CX
	RORQ   $0x0e, AX
	MOVQ   R15, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R15, CX
	RORQ   $0x29, DX
	ANDQ   R8, CX
	XORQ   AX, DX
	MOVQ   R15, AX
	NOTQ   AX
	ADDQ   DX, R10
	ANDQ   R9, AX
	XORQ   CX, AX
	ADDQ   R10, AX
	MOVQ   R11, DI
	MOVQ   R13, BX
	RORQ   $0x1c, DI
	MOVQ   R11, DX
	ANDQ   R12, BX
	RORQ   $0x22, DX
	MOVQ   R11, CX
	ANDQ   R13, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R11, DX
	MOVQ   R12, CX
	RORQ   $0x27, DX
	ANDQ   R11, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R10
	ADDQ   AX, R14
	ADDQ   AX, R10
	MOVQ   544(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   440(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   504(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   432(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 560(BP)
	MOVQ   $0x113f9804bef90dae, DX
	ADDQ   AX, R9
	MOVQ   R14, AX
	ADDQ   DX, R9
	MOVQ   R14, CX
	RORQ   $0x0e, AX
	MOVQ   R14, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R14, CX
	RORQ   $0x29, DX
	ANDQ   R15, CX
	XORQ   AX, DX
	MOVQ   R14, AX
	NOTQ   AX
	ADDQ   DX, R9
	ANDQ   R8, AX
	XORQ   CX, AX
	ADDQ   R9, AX
	MOVQ   R10, DI
	MOVQ   R12, BX
	RORQ   $0x1c, DI
	MOVQ   R10, DX
	ANDQ   R11, BX
	RORQ   $0x22, DX
	MOVQ   R10, CX
	ANDQ   R12, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R10, DX
	MOVQ   R11, CX
	RORQ   $0x27, DX
	ANDQ   R10, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R9
	ADDQ   AX, R13
	ADDQ   AX, R9
	MOVQ   552(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   448(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   512(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   440(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 568(BP)
	MOVQ   $0x1b710b35131c471b, DX
	ADDQ   AX, R8
	MOVQ   R13, AX
	ADDQ   DX, R8
	MOVQ   R13, CX
	RORQ   $0x0e, AX
	MOVQ   R13, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R13, CX
	RORQ   $0x29, DX
	ANDQ   R14, CX
	XORQ   AX, DX
	MOVQ   R13, AX
	NOTQ   AX
	ADDQ   DX, R8
	ANDQ   R15, AX
	XORQ   CX, AX
	ADDQ   R8, AX
	MOVQ   R9, DI
	MOVQ   R11, BX
	RORQ   $0x1c, DI
	MOVQ   R9, DX
	ANDQ   R10, BX
	RORQ   $0x22, DX
	MOVQ   R9, CX
	ANDQ   R11, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R9, DX
	MOVQ   R10, CX
	RORQ   $0x27, DX
	ANDQ   R9, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R8
	ADDQ   AX, R12
	ADDQ   AX, R8
	MOVQ   560(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   456(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   520(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   448(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 576(BP)
	MOVQ   $0x28db77f523047d84, DX
	ADDQ   AX, R15
	MOVQ   R12, AX
	ADDQ   DX, R15
	MOVQ   R12, CX
	RORQ   $0x0e, AX
	MOVQ   R12, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R12, CX
	RORQ   $0x29, DX
	ANDQ   R13, CX
	XORQ   AX, DX
	MOVQ   R12, AX
	NOTQ   AX
	ADDQ   DX, R15
	ANDQ   R14, AX
	XORQ   CX, AX
	ADDQ   R15, AX
	MOVQ   R8, DI
	MOVQ   R10, BX
	RORQ   $0x1c, DI
	MOVQ   R8, DX
	ANDQ   R9, BX
	RORQ   $0x22, DX
	MOVQ   R8, CX
	ANDQ   R10, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R8, DX
	MOVQ   R9, CX
	RORQ   $0x27, DX
	ANDQ   R8, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R15
	ADDQ   AX, R11
	ADDQ   AX, R15
	MOVQ   568(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   464(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   528(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   456(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 584(BP)
	MOVQ   $0x32caab7b40c72493, DX
	ADDQ   AX, R14
	MOVQ   R11, AX
	ADDQ   DX, R14
	MOVQ   R11, CX
	RORQ   $0x0e, AX
	MOVQ   R11, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R11, CX
	RORQ   $0x29, DX
	ANDQ   R12, CX
	XORQ   AX, DX
	MOVQ   R11, AX
	NOTQ   AX
	ADDQ   DX, R14
	ANDQ   R13, AX
	XORQ   CX, AX
	ADDQ   R14, AX
	MOVQ   R15, DI
	MOVQ   R9, BX
	RORQ   $0x1c, DI
	MOVQ   R15, DX
	ANDQ   R8, BX
	RORQ   $0x22, DX
	MOVQ   R15, CX
	ANDQ   R9, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R15, DX
	MOVQ   R8, CX
	RORQ   $0x27, DX
	ANDQ   R15, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R14
	ADDQ   AX, R10
	ADDQ   AX, R14
	MOVQ   576(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   472(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   536(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   464(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 592(BP)
	MOVQ   $0x3c9ebe0a15c9bebc, DX
	ADDQ   AX, R13
	MOVQ   R10, AX
	ADDQ   DX, R13
	MOVQ   R10, CX
	RORQ   $0x0e, AX
	MOVQ   R10, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R10, CX
	RORQ   $0x29, DX
	ANDQ   R11, CX
	XORQ   AX, DX
	MOVQ   R10, AX
	NOTQ   AX
	ADDQ   DX, R13
	ANDQ   R12, AX
	XORQ   CX, AX
	ADDQ   R13, AX
	MOVQ   R14, DI
	MOVQ   R8, BX
	RORQ   $0x1c, DI
	MOVQ   R14, DX
	ANDQ   R15, BX
	RORQ   $0x22, DX
	MOVQ   R14, CX
	ANDQ   R8, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R14, DX
	MOVQ   R15, CX
	RORQ   $0x27, DX
	ANDQ   R14, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R13
	ADDQ   AX, R9
	ADDQ   AX, R13
	MOVQ   584(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   480(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   544(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   472(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 600(BP)
	MOVQ   $0x431d67c49c100d4c, DX
	ADDQ   AX, R12
	MOVQ   R9, AX
	ADDQ   DX, R12
	MOVQ   R9, CX
	RORQ   $0x0e, AX
	MOVQ   R9, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R9, CX
	RORQ   $0x29, DX
	ANDQ   R10, CX
	XORQ   AX, DX
	MOVQ   R9, AX
	NOTQ   AX
	ADDQ   DX, R12
	ANDQ   R11, AX
	XORQ   CX, AX
	ADDQ   R12, AX
	MOVQ   R13, DI
	MOVQ   R15, BX
	RORQ   $0x1c, DI
	MOVQ   R13, DX
	ANDQ   R14, BX
	RORQ   $0x22, DX
	MOVQ   R13, CX
	ANDQ   R15, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R13, DX
	MOVQ   R14, CX
	RORQ   $0x27, DX
	ANDQ   R13, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R12
	ADDQ   AX, R8
	ADDQ   AX, R12
	MOVQ   592(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   488(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   552(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   480(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 608(BP)
	MOVQ   $0x4cc5d4becb3e42b6, DX
	ADDQ   AX, R11
	MOVQ   R8, AX
	ADDQ   DX, R11
	MOVQ   R8, CX
	RORQ   $0x0e, AX
	MOVQ   R8, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R8, CX
	RORQ   $0x29, DX
	ANDQ   R9, CX
	XORQ   AX, DX
	MOVQ   R8, AX
	NOTQ   AX
	ADDQ   DX, R11
	ANDQ   R10, AX
	XORQ   CX, AX
	ADDQ   R11, AX
	MOVQ   R12, DI
	MOVQ   R14, BX
	RORQ   $0x1c, DI
	MOVQ   R12, DX
	ANDQ   R13, BX
	RORQ   $0x22, DX
	MOVQ   R12, CX
	ANDQ   R14, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R12, DX
	MOVQ   R13, CX
	RORQ   $0x27, DX
	ANDQ   R12, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R11
	ADDQ   AX, R15
	ADDQ   AX, R11
	MOVQ   600(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   496(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   560(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   488(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 616(BP)
	MOVQ   $0x597f299cfc657e2a, DX
	ADDQ   AX, R10
	MOVQ   R15, AX
	ADDQ   DX, R10
	MOVQ   R15, CX
	RORQ   $0x0e, AX
	MOVQ   R15, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R15, CX
	RORQ   $0x29, DX
	ANDQ   R8, CX
	XORQ   AX, DX
	MOVQ   R15, AX
	NOTQ   AX
	ADDQ   DX, R10
	ANDQ   R9, AX
	XORQ   CX, AX
	ADDQ   R10, AX
	MOVQ   R11, DI
	MOVQ   R13, BX
	RORQ   $0x1c, DI
	MOVQ   R11, DX
	ANDQ   R12, BX
	RORQ   $0x22, DX
	MOVQ   R11, CX
	ANDQ   R13, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R11, DX
	MOVQ   R12, CX
	RORQ   $0x27, DX
	ANDQ   R11, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R10
	ADDQ   AX, R14
	ADDQ   AX, R10
	MOVQ   608(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   504(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   568(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   496(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 624(BP)
	MOVQ   $0x5fcb6fab3ad6faec, DX
	ADDQ   AX, R9
	MOVQ   R14, AX
	ADDQ   DX, R9
	MOVQ   R14, CX
	RORQ   $0x0e, AX
	MOVQ   R14, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R14, CX
	RORQ   $0x29, DX
	ANDQ   R15, CX
	XORQ   AX, DX
	MOVQ   R14, AX
	NOTQ   AX
	ADDQ   DX, R9
	ANDQ   R8, AX
	XORQ   CX, AX
	ADDQ   R9, AX
	MOVQ   R10, DI
	MOVQ   R12, BX
	RORQ   $0x1c, DI
	MOVQ   R10, DX
	ANDQ   R11, BX
	RORQ   $0x22, DX
	MOVQ   R10, CX
	ANDQ   R12, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R10, DX
	MOVQ   R11, CX
	RORQ   $0x27, DX
	ANDQ   R10, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R9
	ADDQ   AX, R13
	ADDQ   AX, R9
	MOVQ   616(BP), AX
	MOVQ   AX, CX
	RORQ   $0x13, AX
	MOVQ   CX, DX
	RORQ   $0x3d, CX
	SHRQ   $0x06, DX
	MOVQ   512(BP), BX
	XORQ   CX, AX
	MOVQ   BX, CX
	XORQ   DX, AX
	RORQ   $0x01, BX
	MOVQ   CX, DX
	SHRQ   $0x07, DX
	RORQ   $0x08, CX
	ADDQ   576(BP), AX
	XORQ   CX, BX
	XORQ   DX, BX
	ADDQ   504(BP), BX
	ADDQ   BX, AX
	MOVQ   AX, 632(BP)
	MOVQ   $0x6c44198c4a475817, DX
	ADDQ   AX, R8
	MOVQ   R13, AX
	ADDQ   DX, R8
	MOVQ   R13, CX
	RORQ   $0x0e, AX
	MOVQ   R13, DX
	RORQ   $0x12, CX
	XORQ   CX, AX
	MOVQ   R13, CX
	RORQ   $0x29, DX
	ANDQ   R14, CX
	XORQ   AX, DX
	MOVQ   R13, AX
	NOTQ   AX
	ADDQ   DX, R8
	ANDQ   R15, AX
	XORQ   CX, AX
	ADDQ   R8, AX
	MOVQ   R9, DI
	MOVQ   R11, BX
	RORQ   $0x1c, DI
	MOVQ   R9, DX
	ANDQ   R10, BX
	RORQ   $0x22, DX
	MOVQ   R9, CX
	ANDQ   R11, CX
	XORQ   DX, DI
	XORQ   CX, BX
	MOVQ   R9, DX
	MOVQ   R10, CX
	RORQ   $0x27, DX
	ANDQ   R9, CX
	XORQ   CX, BX
	XORQ   DX, DI
	ADDQ   DI, BX
	MOVQ   BX, R8
	ADDQ   AX, R12
	ADDQ   AX, R8
	MOVQ   dig+0(FP), BP
	ADDQ   (BP), R8
	MOVQ   R8, (BP)
	ADDQ   8(BP), R9
	MOVQ   R9, 8(BP)
	ADDQ   16(BP), R10
	MOVQ   R10, 16(BP)
	ADDQ   24(BP), R11
	MOVQ   R11, 24(BP)
	ADDQ   32(BP), R12
	MOVQ   R12, 32(BP)
	ADDQ   40(BP), R13
	MOVQ   R13, 40(BP)
	ADDQ   48(BP), R14
	MOVQ   R14, 48(BP)
	ADDQ   56(BP), R15
	MOVQ   R15, 56(BP)
	ADDQ   $0x80, SI
	CMPQ   SI, 640(SP)
	JB     loop

end:
	RET

DATA PSHUFFLE_BYTE_FLIP_MASK<>+0(SB)/8, $0x0001020304050607
DATA PSHUFFLE_BYTE_FLIP_MASK<>+8(SB)/8, $0x08090a0b0c0d0e0f
DATA PSHUFFLE_BYTE_FLIP_MASK<>+16(SB)/8, $0x1011121314151617
DATA PSHUFFLE_BYTE_FLIP_MASK<>+24(SB)/8, $0x18191a1b1c1d1e1f
GLOBL PSHUFFLE_BYTE_FLIP_MASK<>(SB), RODATA|NOPTR, $32

// func blockAVX2(dig *Digest, p []byte)
// Requires: AVX, AVX2, BMI2
TEXT ·blockAVX2(SB), NOSPLIT, $56-32
	MOVQ    dig+0(FP), SI
	MOVQ    p_base+8(FP), DI
	MOVQ    p_len+16(FP), DX
	SHRQ    $0x07, DX
	SHLQ    $0x07, DX
	JZ      done_hash
	ADDQ    DI, DX
	MOVQ    DX, 48(SP)
	MOVQ    (SI), AX
	MOVQ    8(SI), BX
	MOVQ    16(SI), CX
	MOVQ    24(SI), R8
	MOVQ    32(SI), DX
	MOVQ    40(SI), R9
	MOVQ    48(SI), R10
	MOVQ    56(SI), R11
	VMOVDQU PSHUFFLE_BYTE_FLIP_MASK<>+0(SB), Y9

loop0:
	MOVQ    $·_K+0(SB), BP
	VMOVDQU (DI), Y4
	VPSHUFB Y9, Y4, Y4
	VMOVDQU 32(DI), Y5
	VPSHUFB Y9, Y5, Y5
	VMOVDQU 64(DI), Y6
	VPSHUFB Y9, Y6, Y6
	VMOVDQU 96(DI), Y7
	VPSHUFB Y9, Y7, Y7
	MOVQ    DI, 40(SP)
	MOVQ    $0x00000004, 32(SP)

loop1:
	VPADDQ     (BP), Y4, Y0
	VMOVDQU    Y0, (SP)
	VPERM2F128 $0x03, Y6, Y7, Y0
	VPALIGNR   $0x08, Y6, Y0, Y0
	VPADDQ     Y4, Y0, Y0
	VPERM2F128 $0x03, Y4, Y5, Y1
	VPALIGNR   $0x08, Y4, Y1, Y1
	VPSRLQ     $0x01, Y1, Y2
	VPSLLQ     $0x3f, Y1, Y3
	VPOR       Y2, Y3, Y3
	VPSRLQ     $0x07, Y1, Y8
	MOVQ       AX, DI
	RORXQ      $0x29, DX, R13
	RORXQ      $0x12, DX, R14
	ADDQ       (SP), R11
	ORQ        CX, DI
	MOVQ       R9, R15
	RORXQ      $0x22, AX, R12
	XORQ       R14, R13
	XORQ       R10, R15
	RORXQ      $0x0e, DX, R14
	ANDQ       DX, R15
	XORQ       R14, R13
	RORXQ      $0x27, AX, R14
	ADDQ       R11, R8
	ANDQ       BX, DI
	XORQ       R12, R14
	RORXQ      $0x1c, AX, R12
	XORQ       R10, R15
	XORQ       R12, R14
	MOVQ       AX, R12
	ANDQ       CX, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, R11
	ADDQ       R15, R8
	ADDQ       R15, R11
	ADDQ       DI, R11
	VPSRLQ     $0x08, Y1, Y2
	VPSLLQ     $0x38, Y1, Y1
	VPOR       Y2, Y1, Y1
	VPXOR      Y8, Y3, Y3
	VPXOR      Y1, Y3, Y1
	VPADDQ     Y1, Y0, Y0
	VPERM2F128 $0x00, Y0, Y0, Y4
	VPAND      MASK_YMM_LO<>+0(SB), Y0, Y0
	VPERM2F128 $0x11, Y7, Y7, Y2
	VPSRLQ     $0x06, Y2, Y8
	MOVQ       R11, DI
	RORXQ      $0x29, R8, R13
	RORXQ      $0x12, R8, R14
	ADDQ       8(SP), R10
	ORQ        BX, DI
	MOVQ       DX, R15
	RORXQ      $0x22, R11, R12
	XORQ       R14, R13
	XORQ       R9, R15
	RORXQ      $0x0e, R8, R14
	XORQ       R14, R13
	RORXQ      $0x27, R11, R14
	ANDQ       R8, R15
	ADDQ       R10, CX
	ANDQ       AX, DI
	XORQ       R12, R14
	RORXQ      $0x1c, R11, R12
	XORQ       R9, R15
	XORQ       R12, R14
	MOVQ       R11, R12
	ANDQ       BX, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, R10
	ADDQ       R15, CX
	ADDQ       R15, R10
	ADDQ       DI, R10
	VPSRLQ     $0x13, Y2, Y3
	VPSLLQ     $0x2d, Y2, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPSRLQ     $0x3d, Y2, Y3
	VPSLLQ     $0x03, Y2, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPADDQ     Y8, Y4, Y4
	VPSRLQ     $0x06, Y4, Y8
	MOVQ       R10, DI
	RORXQ      $0x29, CX, R13
	ADDQ       16(SP), R9
	RORXQ      $0x12, CX, R14
	ORQ        AX, DI
	MOVQ       R8, R15
	XORQ       DX, R15
	RORXQ      $0x22, R10, R12
	XORQ       R14, R13
	ANDQ       CX, R15
	RORXQ      $0x0e, CX, R14
	ADDQ       R9, BX
	ANDQ       R11, DI
	XORQ       R14, R13
	RORXQ      $0x27, R10, R14
	XORQ       DX, R15
	XORQ       R12, R14
	RORXQ      $0x1c, R10, R12
	XORQ       R12, R14
	MOVQ       R10, R12
	ANDQ       AX, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, R9
	ADDQ       R15, BX
	ADDQ       R15, R9
	ADDQ       DI, R9
	VPSRLQ     $0x13, Y4, Y3
	VPSLLQ     $0x2d, Y4, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPSRLQ     $0x3d, Y4, Y3
	VPSLLQ     $0x03, Y4, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPADDQ     Y8, Y0, Y2
	VPBLENDD   $0xf0, Y2, Y4, Y4
	MOVQ       R9, DI
	RORXQ      $0x29, BX, R13
	RORXQ      $0x12, BX, R14
	ADDQ       24(SP), DX
	ORQ        R11, DI
	MOVQ       CX, R15
	RORXQ      $0x22, R9, R12
	XORQ       R14, R13
	XORQ       R8, R15
	RORXQ      $0x0e, BX, R14
	ANDQ       BX, R15
	ADDQ       DX, AX
	ANDQ       R10, DI
	XORQ       R14, R13
	XORQ       R8, R15
	RORXQ      $0x27, R9, R14
	ADDQ       R13, R15
	XORQ       R12, R14
	ADDQ       R15, AX
	RORXQ      $0x1c, R9, R12
	XORQ       R12, R14
	MOVQ       R9, R12
	ANDQ       R11, R12
	ORQ        R12, DI
	ADDQ       R14, DX
	ADDQ       R15, DX
	ADDQ       DI, DX
	VPADDQ     32(BP), Y5, Y0
	VMOVDQU    Y0, (SP)
	VPERM2F128 $0x03, Y7, Y4, Y0
	VPALIGNR   $0x08, Y7, Y0, Y0
	VPADDQ     Y5, Y0, Y0
	VPERM2F128 $0x03, Y5, Y6, Y1
	VPALIGNR   $0x08, Y5, Y1, Y1
	VPSRLQ     $0x01, Y1, Y2
	VPSLLQ     $0x3f, Y1, Y3
	VPOR       Y2, Y3, Y3
	VPSRLQ     $0x07, Y1, Y8
	MOVQ       DX, DI
	RORXQ      $0x29, AX, R13
	RORXQ      $0x12, AX, R14
	ADDQ       (SP), R8
	ORQ        R10, DI
	MOVQ       BX, R15
	RORXQ      $0x22, DX, R12
	XORQ       R14, R13
	XORQ       CX, R15
	RORXQ      $0x0e, AX, R14
	ANDQ       AX, R15
	XORQ       R14, R13
	RORXQ      $0x27, DX, R14
	ADDQ       R8, R11
	ANDQ       R9, DI
	XORQ       R12, R14
	RORXQ      $0x1c, DX, R12
	XORQ       CX, R15
	XORQ       R12, R14
	MOVQ       DX, R12
	ANDQ       R10, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, R8
	ADDQ       R15, R11
	ADDQ       R15, R8
	ADDQ       DI, R8
	VPSRLQ     $0x08, Y1, Y2
	VPSLLQ     $0x38, Y1, Y1
	VPOR       Y2, Y1, Y1
	VPXOR      Y8, Y3, Y3
	VPXOR      Y1, Y3, Y1
	VPADDQ     Y1, Y0, Y0
	VPERM2F128 $0x00, Y0, Y0, Y5
	VPAND      MASK_YMM_LO<>+0(SB), Y0, Y0
	VPERM2F128 $0x11, Y4, Y4, Y2
	VPSRLQ     $0x06, Y2, Y8
	MOVQ       R8, DI
	RORXQ      $0x29, R11, R13
	RORXQ      $0x12, R11, R14
	ADDQ       8(SP), CX
	ORQ        R9, DI
	MOVQ       AX, R15
	RORXQ      $0x22, R8, R12
	XORQ       R14, R13
	XORQ       BX, R15
	RORXQ      $0x0e, R11, R14
	XORQ       R14, R13
	RORXQ      $0x27, R8, R14
	ANDQ       R11, R15
	ADDQ       CX, R10
	ANDQ       DX, DI
	XORQ       R12, R14
	RORXQ      $0x1c, R8, R12
	XORQ       BX, R15
	XORQ       R12, R14
	MOVQ       R8, R12
	ANDQ       R9, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, CX
	ADDQ       R15, R10
	ADDQ       R15, CX
	ADDQ       DI, CX
	VPSRLQ     $0x13, Y2, Y3
	VPSLLQ     $0x2d, Y2, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPSRLQ     $0x3d, Y2, Y3
	VPSLLQ     $0x03, Y2, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPADDQ     Y8, Y5, Y5
	VPSRLQ     $0x06, Y5, Y8
	MOVQ       CX, DI
	RORXQ      $0x29, R10, R13
	ADDQ       16(SP), BX
	RORXQ      $0x12, R10, R14
	ORQ        DX, DI
	MOVQ       R11, R15
	XORQ       AX, R15
	RORXQ      $0x22, CX, R12
	XORQ       R14, R13
	ANDQ       R10, R15
	RORXQ      $0x0e, R10, R14
	ADDQ       BX, R9
	ANDQ       R8, DI
	XORQ       R14, R13
	RORXQ      $0x27, CX, R14
	XORQ       AX, R15
	XORQ       R12, R14
	RORXQ      $0x1c, CX, R12
	XORQ       R12, R14
	MOVQ       CX, R12
	ANDQ       DX, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, BX
	ADDQ       R15, R9
	ADDQ       R15, BX
	ADDQ       DI, BX
	VPSRLQ     $0x13, Y5, Y3
	VPSLLQ     $0x2d, Y5, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPSRLQ     $0x3d, Y5, Y3
	VPSLLQ     $0x03, Y5, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPADDQ     Y8, Y0, Y2
	VPBLENDD   $0xf0, Y2, Y5, Y5
	MOVQ       BX, DI
	RORXQ      $0x29, R9, R13
	RORXQ      $0x12, R9, R14
	ADDQ       24(SP), AX
	ORQ        R8, DI
	MOVQ       R10, R15
	RORXQ      $0x22, BX, R12
	XORQ       R14, R13
	XORQ       R11, R15
	RORXQ      $0x0e, R9, R14
	ANDQ       R9, R15
	ADDQ       AX, DX
	ANDQ       CX, DI
	XORQ       R14, R13
	XORQ       R11, R15
	RORXQ      $0x27, BX, R14
	ADDQ       R13, R15
	XORQ       R12, R14
	ADDQ       R15, DX
	RORXQ      $0x1c, BX, R12
	XORQ       R12, R14
	MOVQ       BX, R12
	ANDQ       R8, R12
	ORQ        R12, DI
	ADDQ       R14, AX
	ADDQ       R15, AX
	ADDQ       DI, AX
	VPADDQ     64(BP), Y6, Y0
	VMOVDQU    Y0, (SP)
	VPERM2F128 $0x03, Y4, Y5, Y0
	VPALIGNR   $0x08, Y4, Y0, Y0
	VPADDQ     Y6, Y0, Y0
	VPERM2F128 $0x03, Y6, Y7, Y1
	VPALIGNR   $0x08, Y6, Y1, Y1
	VPSRLQ     $0x01, Y1, Y2
	VPSLLQ     $0x3f, Y1, Y3
	VPOR       Y2, Y3, Y3
	VPSRLQ     $0x07, Y1, Y8
	MOVQ       AX, DI
	RORXQ      $0x29, DX, R13
	RORXQ      $0x12, DX, R14
	ADDQ       (SP), R11
	ORQ        CX, DI
	MOVQ       R9, R15
	RORXQ      $0x22, AX, R12
	XORQ       R14, R13
	XORQ       R10, R15
	RORXQ      $0x0e, DX, R14
	ANDQ       DX, R15
	XORQ       R14, R13
	RORXQ      $0x27, AX, R14
	ADDQ       R11, R8
	ANDQ       BX, DI
	XORQ       R12, R14
	RORXQ      $0x1c, AX, R12
	XORQ       R10, R15
	XORQ       R12, R14
	MOVQ       AX, R12
	ANDQ       CX, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, R11
	ADDQ       R15, R8
	ADDQ       R15, R11
	ADDQ       DI, R11
	VPSRLQ     $0x08, Y1, Y2
	VPSLLQ     $0x38, Y1, Y1
	VPOR       Y2, Y1, Y1
	VPXOR      Y8, Y3, Y3
	VPXOR      Y1, Y3, Y1
	VPADDQ     Y1, Y0, Y0
	VPERM2F128 $0x00, Y0, Y0, Y6
	VPAND      MASK_YMM_LO<>+0(SB), Y0, Y0
	VPERM2F128 $0x11, Y5, Y5, Y2
	VPSRLQ     $0x06, Y2, Y8
	MOVQ       R11, DI
	RORXQ      $0x29, R8, R13
	RORXQ      $0x12, R8, R14
	ADDQ       8(SP), R10
	ORQ        BX, DI
	MOVQ       DX, R15
	RORXQ      $0x22, R11, R12
	XORQ       R14, R13
	XORQ       R9, R15
	RORXQ      $0x0e, R8, R14
	XORQ       R14, R13
	RORXQ      $0x27, R11, R14
	ANDQ       R8, R15
	ADDQ       R10, CX
	ANDQ       AX, DI
	XORQ       R12, R14
	RORXQ      $0x1c, R11, R12
	XORQ       R9, R15
	XORQ       R12, R14
	MOVQ       R11, R12
	ANDQ       BX, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, R10
	ADDQ       R15, CX
	ADDQ       R15, R10
	ADDQ       DI, R10
	VPSRLQ     $0x13, Y2, Y3
	VPSLLQ     $0x2d, Y2, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPSRLQ     $0x3d, Y2, Y3
	VPSLLQ     $0x03, Y2, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPADDQ     Y8, Y6, Y6
	VPSRLQ     $0x06, Y6, Y8
	MOVQ       R10, DI
	RORXQ      $0x29, CX, R13
	ADDQ       16(SP), R9
	RORXQ      $0x12, CX, R14
	ORQ        AX, DI
	MOVQ       R8, R15
	XORQ       DX, R15
	RORXQ      $0x22, R10, R12
	XORQ       R14, R13
	ANDQ       CX, R15
	RORXQ      $0x0e, CX, R14
	ADDQ       R9, BX
	ANDQ       R11, DI
	XORQ       R14, R13
	RORXQ      $0x27, R10, R14
	XORQ       DX, R15
	XORQ       R12, R14
	RORXQ      $0x1c, R10, R12
	XORQ       R12, R14
	MOVQ       R10, R12
	ANDQ       AX, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, R9
	ADDQ       R15, BX
	ADDQ       R15, R9
	ADDQ       DI, R9
	VPSRLQ     $0x13, Y6, Y3
	VPSLLQ     $0x2d, Y6, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPSRLQ     $0x3d, Y6, Y3
	VPSLLQ     $0x03, Y6, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPADDQ     Y8, Y0, Y2
	VPBLENDD   $0xf0, Y2, Y6, Y6
	MOVQ       R9, DI
	RORXQ      $0x29, BX, R13
	RORXQ      $0x12, BX, R14
	ADDQ       24(SP), DX
	ORQ        R11, DI
	MOVQ       CX, R15
	RORXQ      $0x22, R9, R12
	XORQ       R14, R13
	XORQ       R8, R15
	RORXQ      $0x0e, BX, R14
	ANDQ       BX, R15
	ADDQ       DX, AX
	ANDQ       R10, DI
	XORQ       R14, R13
	XORQ       R8, R15
	RORXQ      $0x27, R9, R14
	ADDQ       R13, R15
	XORQ       R12, R14
	ADDQ       R15, AX
	RORXQ      $0x1c, R9, R12
	XORQ       R12, R14
	MOVQ       R9, R12
	ANDQ       R11, R12
	ORQ        R12, DI
	ADDQ       R14, DX
	ADDQ       R15, DX
	ADDQ       DI, DX
	VPADDQ     96(BP), Y7, Y0
	VMOVDQU    Y0, (SP)
	ADDQ       $0x80, BP
	VPERM2F128 $0x03, Y5, Y6, Y0
	VPALIGNR   $0x08, Y5, Y0, Y0
	VPADDQ     Y7, Y0, Y0
	VPERM2F128 $0x03, Y7, Y4, Y1
	VPALIGNR   $0x08, Y7, Y1, Y1
	VPSRLQ     $0x01, Y1, Y2
	VPSLLQ     $0x3f, Y1, Y3
	VPOR       Y2, Y3, Y3
	VPSRLQ     $0x07, Y1, Y8
	MOVQ       DX, DI
	RORXQ      $0x29, AX, R13
	RORXQ      $0x12, AX, R14
	ADDQ       (SP), R8
	ORQ        R10, DI
	MOVQ       BX, R15
	RORXQ      $0x22, DX, R12
	XORQ       R14, R13
	XORQ       CX, R15
	RORXQ      $0x0e, AX, R14
	ANDQ       AX, R15
	XORQ       R14, R13
	RORXQ      $0x27, DX, R14
	ADDQ       R8, R11
	ANDQ       R9, DI
	XORQ       R12, R14
	RORXQ      $0x1c, DX, R12
	XORQ       CX, R15
	XORQ       R12, R14
	MOVQ       DX, R12
	ANDQ       R10, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, R8
	ADDQ       R15, R11
	ADDQ       R15, R8
	ADDQ       DI, R8
	VPSRLQ     $0x08, Y1, Y2
	VPSLLQ     $0x38, Y1, Y1
	VPOR       Y2, Y1, Y1
	VPXOR      Y8, Y3, Y3
	VPXOR      Y1, Y3, Y1
	VPADDQ     Y1, Y0, Y0
	VPERM2F128 $0x00, Y0, Y0, Y7
	VPAND      MASK_YMM_LO<>+0(SB), Y0, Y0
	VPERM2F128 $0x11, Y6, Y6, Y2
	VPSRLQ     $0x06, Y2, Y8
	MOVQ       R8, DI
	RORXQ      $0x29, R11, R13
	RORXQ      $0x12, R11, R14
	ADDQ       8(SP), CX
	ORQ        R9, DI
	MOVQ       AX, R15
	RORXQ      $0x22, R8, R12
	XORQ       R14, R13
	XORQ       BX, R15
	RORXQ      $0x0e, R11, R14
	XORQ       R14, R13
	RORXQ      $0x27, R8, R14
	ANDQ       R11, R15
	ADDQ       CX, R10
	ANDQ       DX, DI
	XORQ       R12, R14
	RORXQ      $0x1c, R8, R12
	XORQ       BX, R15
	XORQ       R12, R14
	MOVQ       R8, R12
	ANDQ       R9, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, CX
	ADDQ       R15, R10
	ADDQ       R15, CX
	ADDQ       DI, CX
	VPSRLQ     $0x13, Y2, Y3
	VPSLLQ     $0x2d, Y2, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPSRLQ     $0x3d, Y2, Y3
	VPSLLQ     $0x03, Y2, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPADDQ     Y8, Y7, Y7
	VPSRLQ     $0x06, Y7, Y8
	MOVQ       CX, DI
	RORXQ      $0x29, R10, R13
	ADDQ       16(SP), BX
	RORXQ      $0x12, R10, R14
	ORQ        DX, DI
	MOVQ       R11, R15
	XORQ       AX, R15
	RORXQ      $0x22, CX, R12
	XORQ       R14, R13
	ANDQ       R10, R15
	RORXQ      $0x0e, R10, R14
	ADDQ       BX, R9
	ANDQ       R8, DI
	XORQ       R14, R13
	RORXQ      $0x27, CX, R14
	XORQ       AX, R15
	XORQ       R12, R14
	RORXQ      $0x1c, CX, R12
	XORQ       R12, R14
	MOVQ       CX, R12
	ANDQ       DX, R12
	ADDQ       R13, R15
	ORQ        R12, DI
	ADDQ       R14, BX
	ADDQ       R15, R9
	ADDQ       R15, BX
	ADDQ       DI, BX
	VPSRLQ     $0x13, Y7, Y3
	VPSLLQ     $0x2d, Y7, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPSRLQ     $0x3d, Y7, Y3
	VPSLLQ     $0x03, Y7, Y1
	VPOR       Y1, Y3, Y3
	VPXOR      Y3, Y8, Y8
	VPADDQ     Y8, Y0, Y2
	VPBLENDD   $0xf0, Y2, Y7, Y7
	MOVQ       BX, DI
	RORXQ      $0x29, R9, R13
	RORXQ      $0x12, R9, R14
	ADDQ       24(SP), AX
	ORQ        R8, DI
	MOVQ       R10, R15
	RORXQ      $0x22, BX, R12
	XORQ       R14, R13
	XORQ       R11, R15
	RORXQ      $0x0e, R9, R14
	ANDQ       R9, R15
	ADDQ       AX, DX
	ANDQ       CX, DI
	XORQ       R14, R13
	XORQ       R11, R15
	RORXQ      $0x27, BX, R14
	ADDQ       R13, R15
	XORQ       R12, R14
	ADDQ       R15, DX
	RORXQ      $0x1c, BX, R12
	XORQ       R12, R14
	MOVQ       BX, R12
	ANDQ       R8, R12
	ORQ        R12, DI
	ADDQ       R14, AX
	ADDQ       R15, AX
	ADDQ       DI, AX
	SUBQ       $0x01, 32(SP)
	JNE        loop1
	MOVQ       $0x00000002, 32(SP)

loop2:
	VPADDQ  (BP), Y4, Y0
	VMOVDQU Y0, (SP)
	MOVQ    R9, R15
	RORXQ   $0x29, DX, R13
	RORXQ   $0x12, DX, R14
	XORQ    R10, R15
	XORQ    R14, R13
	RORXQ   $0x0e, DX, R14
	ANDQ    DX, R15
	XORQ    R14, R13
	RORXQ   $0x22, AX, R12
	XORQ    R10, R15
	RORXQ   $0x27, AX, R14
	MOVQ    AX, DI
	XORQ    R12, R14
	RORXQ   $0x1c, AX, R12
	ADDQ    (SP), R11
	ORQ     CX, DI
	XORQ    R12, R14
	MOVQ    AX, R12
	ANDQ    BX, DI
	ANDQ    CX, R12
	ADDQ    R13, R15
	ADDQ    R11, R8
	ORQ     R12, DI
	ADDQ    R14, R11
	ADDQ    R15, R8
	ADDQ    R15, R11
	MOVQ    DX, R15
	RORXQ   $0x29, R8, R13
	RORXQ   $0x12, R8, R14
	XORQ    R9, R15
	XORQ    R14, R13
	RORXQ   $0x0e, R8, R14
	ANDQ    R8, R15
	ADDQ    DI, R11
	XORQ    R14, R13
	RORXQ   $0x22, R11, R12
	XORQ    R9, R15
	RORXQ   $0x27, R11, R14
	MOVQ    R11, DI
	XORQ    R12, R14
	RORXQ   $0x1c, R11, R12
	ADDQ    8(SP), R10
	ORQ     BX, DI
	XORQ    R12, R14
	MOVQ    R11, R12
	ANDQ    AX, DI
	ANDQ    BX, R12
	ADDQ    R13, R15
	ADDQ    R10, CX
	ORQ     R12, DI
	ADDQ    R14, R10
	ADDQ    R15, CX
	ADDQ    R15, R10
	MOVQ    R8, R15
	RORXQ   $0x29, CX, R13
	RORXQ   $0x12, CX, R14
	XORQ    DX, R15
	XORQ    R14, R13
	RORXQ   $0x0e, CX, R14
	ANDQ    CX, R15
	ADDQ    DI, R10
	XORQ    R14, R13
	RORXQ   $0x22, R10, R12
	XORQ    DX, R15
	RORXQ   $0x27, R10, R14
	MOVQ    R10, DI
	XORQ    R12, R14
	RORXQ   $0x1c, R10, R12
	ADDQ    16(SP), R9
	ORQ     AX, DI
	XORQ    R12, R14
	MOVQ    R10, R12
	ANDQ    R11, DI
	ANDQ    AX, R12
	ADDQ    R13, R15
	ADDQ    R9, BX
	ORQ     R12, DI
	ADDQ    R14, R9
	ADDQ    R15, BX
	ADDQ    R15, R9
	MOVQ    CX, R15
	RORXQ   $0x29, BX, R13
	RORXQ   $0x12, BX, R14
	XORQ    R8, R15
	XORQ    R14, R13
	RORXQ   $0x0e, BX, R14
	ANDQ    BX, R15
	ADDQ    DI, R9
	XORQ    R14, R13
	RORXQ   $0x22, R9, R12
	XORQ    R8, R15
	RORXQ   $0x27, R9, R14
	MOVQ    R9, DI
	XORQ    R12, R14
	RORXQ   $0x1c, R9, R12
	ADDQ    24(SP), DX
	ORQ     R11, DI
	XORQ    R12, R14
	MOVQ    R9, R12
	ANDQ    R10, DI
	ANDQ    R11, R12
	ADDQ    R13, R15
	ADDQ    DX, AX
	ORQ     R12, DI
	ADDQ    R14, DX
	ADDQ    R15, AX
	ADDQ    R15, DX
	ADDQ    DI, DX
	VPADDQ  32(BP), Y5, Y0
	VMOVDQU Y0, (SP)
	ADDQ    $0x40, BP
	MOVQ    BX, R15
	RORXQ   $0x29, AX, R13
	RORXQ   $0x12, AX, R14
	XORQ    CX, R15
	XORQ    R14, R13
	RORXQ   $0x0e, AX, R14
	ANDQ    AX, R15
	XORQ    R14, R13
	RORXQ   $0x22, DX, R12
	XORQ    CX, R15
	RORXQ   $0x27, DX, R14
	MOVQ    DX, DI
	XORQ    R12, R14
	RORXQ   $0x1c, DX, R12
	ADDQ    (SP), R8
	ORQ     R10, DI
	XORQ    R12, R14
	MOVQ    DX, R12
	ANDQ    R9, DI
	ANDQ    R10, R12
	ADDQ    R13, R15
	ADDQ    R8, R11
	ORQ     R12, DI
	ADDQ    R14, R8
	ADDQ    R15, R11
	ADDQ    R15, R8
	MOVQ    AX, R15
	RORXQ   $0x29, R11, R13
	RORXQ   $0x12, R11, R14
	XORQ    BX, R15
	XORQ    R14, R13
	RORXQ   $0x0e, R11, R14
	ANDQ    R11, R15
	ADDQ    DI, R8
	XORQ    R14, R13
	RORXQ   $0x22, R8, R12
	XORQ    BX, R15
	RORXQ   $0x27, R8, R14
	MOVQ    R8, DI
	XORQ    R12, R14
	RORXQ   $0x1c, R8, R12
	ADDQ    8(SP), CX
	ORQ     R9, DI
	XORQ    R12, R14
	MOVQ    R8, R12
	ANDQ    DX, DI
	ANDQ    R9, R12
	ADDQ    R13, R15
	ADDQ    CX, R10
	ORQ     R12, DI
	ADDQ    R14, CX
	ADDQ    R15, R10
	ADDQ    R15, CX
	MOVQ    R11, R15
	RORXQ   $0x29, R10, R13
	RORXQ   $0x12, R10, R14
	XORQ    AX, R15
	XORQ    R14, R13
	RORXQ   $0x0e, R10, R14
	ANDQ    R10, R15
	ADDQ    DI, CX
	XORQ    R14, R13
	RORXQ   $0x22, CX, R12
	XORQ    AX, R15
	RORXQ   $0x27, CX, R14
	MOVQ    CX, DI
	XORQ    R12, R14
	RORXQ   $0x1c, CX, R12
	ADDQ    16(SP), BX
	ORQ     DX, DI
	XORQ    R12, R14
	MOVQ    CX, R12
	ANDQ    R8, DI
	ANDQ    DX, R12
	ADDQ    R13, R15
	ADDQ    BX, R9
	ORQ     R12, DI
	ADDQ    R14, BX
	ADDQ    R15, R9
	ADDQ    R15, BX
	MOVQ    R10, R15
	RORXQ   $0x29, R9, R13
	RORXQ   $0x12, R9, R14
	XORQ    R11, R15
	XORQ    R14, R13
	RORXQ   $0x0e, R9, R14
	ANDQ    R9, R15
	ADDQ    DI, BX
	XORQ    R14, R13
	RORXQ   $0x22, BX, R12
	XORQ    R11, R15
	RORXQ   $0x27, BX, R14
	MOVQ    BX, DI
	XORQ    R12, R14
	RORXQ   $0x1c, BX, R12
	ADDQ    24(SP), AX
	ORQ     R8, DI
	XORQ    R12, R14
	MOVQ    BX, R12
	ANDQ    CX, DI
	ANDQ    R8, R12
	ADDQ    R13, R15
	ADDQ    AX, DX
	ORQ     R12, DI
	ADDQ    R14, AX
	ADDQ    R15, DX
	ADDQ    R15, AX
	ADDQ    DI, AX
	VMOVDQU Y6, Y4
	VMOVDQU Y7, Y5
	SUBQ    $0x01, 32(SP)
	JNE     loop2
	ADDQ    (SI), AX
	MOVQ    AX, (SI)
	ADDQ    8(SI), BX
	MOVQ    BX, 8(SI)
	ADDQ    16(SI), CX
	MOVQ    CX, 16(SI)
	ADDQ    24(SI), R8
	MOVQ    R8, 24(SI)
	ADDQ    32(SI), DX
	MOVQ    DX, 32(SI)
	ADDQ    40(SI), R9
	MOVQ    R9, 40(SI)
	ADDQ    48(SI), R10
	MOVQ    R10, 48(SI)
	ADDQ    56(SI), R11
	MOVQ    R11, 56(SI)
	MOVQ    40(SP), DI
	ADDQ    $0x80, DI
	CMPQ    DI, 48(SP)
	JNE     loop0

done_hash:
	VZEROUPPER
	RET

DATA MASK_YMM_LO<>+0(SB)/8, $0x0000000000000000
DATA MASK_YMM_LO<>+8(SB)/8, $0x0000000000000000
DATA MASK_YMM_LO<>+16(SB)/8, $0xffffffffffffffff
DATA MASK_YMM_LO<>+24(SB)/8, $0xffffffffffffffff
GLOBL MASK_YMM_LO<>(SB), RODATA|NOPTR, $32