forked from cerc-io/ipld-eth-server
952 lines
17 KiB
ArmAsm
952 lines
17 KiB
ArmAsm
// Code generated by command: go run asm.go -out=fp_amd64.s -go111=false. DO NOT EDIT.
|
|
|
|
// +build amd64,!purego
|
|
|
|
#include "textflag.h"
|
|
|
|
// func Fingerprint64(s []byte) uint64
|
|
TEXT ·Fingerprint64(SB), NOSPLIT, $0-32
|
|
MOVQ s_base+0(FP), CX
|
|
MOVQ s_len+8(FP), AX
|
|
CMPQ AX, $0x10
|
|
JG check32
|
|
CMPQ AX, $0x08
|
|
JL check4
|
|
MOVQ (CX), DX
|
|
MOVQ AX, BX
|
|
SUBQ $0x08, BX
|
|
ADDQ CX, BX
|
|
MOVQ (BX), BX
|
|
MOVQ $0x9ae16a3b2f90404f, BP
|
|
ADDQ BP, DX
|
|
SHLQ $0x01, AX
|
|
ADDQ BP, AX
|
|
MOVQ BX, BP
|
|
RORQ $0x25, BP
|
|
IMULQ AX, BP
|
|
ADDQ DX, BP
|
|
RORQ $0x19, DX
|
|
ADDQ BX, DX
|
|
IMULQ AX, DX
|
|
XORQ DX, BP
|
|
IMULQ AX, BP
|
|
MOVQ BP, BX
|
|
SHRQ $0x2f, BX
|
|
XORQ BP, BX
|
|
XORQ BX, DX
|
|
IMULQ AX, DX
|
|
MOVQ DX, BX
|
|
SHRQ $0x2f, BX
|
|
XORQ DX, BX
|
|
IMULQ AX, BX
|
|
MOVQ BX, ret+24(FP)
|
|
RET
|
|
|
|
check4:
|
|
CMPQ AX, $0x04
|
|
JL check0
|
|
MOVQ $0x9ae16a3b2f90404f, DX
|
|
MOVQ AX, BX
|
|
SHLQ $0x01, BX
|
|
ADDQ DX, BX
|
|
MOVL (CX), SI
|
|
SHLQ $0x03, SI
|
|
ADDQ AX, SI
|
|
SUBQ $0x04, AX
|
|
ADDQ AX, CX
|
|
MOVL (CX), DI
|
|
XORQ DI, SI
|
|
IMULQ BX, SI
|
|
MOVQ SI, DX
|
|
SHRQ $0x2f, DX
|
|
XORQ SI, DX
|
|
XORQ DX, DI
|
|
IMULQ BX, DI
|
|
MOVQ DI, DX
|
|
SHRQ $0x2f, DX
|
|
XORQ DI, DX
|
|
IMULQ BX, DX
|
|
MOVQ DX, ret+24(FP)
|
|
RET
|
|
|
|
check0:
|
|
TESTQ AX, AX
|
|
JZ empty
|
|
MOVBQZX (CX), DX
|
|
MOVQ AX, BX
|
|
SHRQ $0x01, BX
|
|
ADDQ CX, BX
|
|
MOVBQZX (BX), BP
|
|
MOVQ AX, BX
|
|
SUBQ $0x01, BX
|
|
ADDQ CX, BX
|
|
MOVBQZX (BX), BX
|
|
SHLQ $0x08, BP
|
|
ADDQ BP, DX
|
|
SHLQ $0x02, BX
|
|
ADDQ BX, AX
|
|
MOVQ $0xc3a5c85c97cb3127, BX
|
|
IMULQ BX, AX
|
|
MOVQ $0x9ae16a3b2f90404f, BX
|
|
IMULQ BX, DX
|
|
XORQ DX, AX
|
|
MOVQ AX, DX
|
|
SHRQ $0x2f, DX
|
|
XORQ AX, DX
|
|
IMULQ BX, DX
|
|
MOVQ DX, ret+24(FP)
|
|
RET
|
|
|
|
empty:
|
|
MOVQ $0x9ae16a3b2f90404f, DX
|
|
MOVQ DX, ret+24(FP)
|
|
RET
|
|
|
|
check32:
|
|
CMPQ AX, $0x20
|
|
JG check64
|
|
MOVQ AX, DX
|
|
SHLQ $0x01, DX
|
|
MOVQ $0x9ae16a3b2f90404f, BX
|
|
ADDQ BX, DX
|
|
MOVQ (CX), BP
|
|
MOVQ $0xb492b66fbe98f273, SI
|
|
IMULQ SI, BP
|
|
MOVQ 8(CX), SI
|
|
MOVQ AX, DI
|
|
SUBQ $0x10, DI
|
|
ADDQ CX, DI
|
|
MOVQ 8(DI), R12
|
|
IMULQ DX, R12
|
|
MOVQ (DI), DI
|
|
IMULQ BX, DI
|
|
MOVQ BP, R13
|
|
ADDQ SI, R13
|
|
RORQ $0x2b, R13
|
|
ADDQ DI, R13
|
|
MOVQ R12, DI
|
|
RORQ $0x1e, DI
|
|
ADDQ DI, R13
|
|
ADDQ R12, BP
|
|
ADDQ BX, SI
|
|
RORQ $0x12, SI
|
|
ADDQ SI, BP
|
|
XORQ BP, R13
|
|
IMULQ DX, R13
|
|
MOVQ R13, BX
|
|
SHRQ $0x2f, BX
|
|
XORQ R13, BX
|
|
XORQ BX, BP
|
|
IMULQ DX, BP
|
|
MOVQ BP, BX
|
|
SHRQ $0x2f, BX
|
|
XORQ BP, BX
|
|
IMULQ DX, BX
|
|
MOVQ BX, ret+24(FP)
|
|
RET
|
|
|
|
check64:
|
|
CMPQ AX, $0x40
|
|
JG long
|
|
MOVQ AX, DX
|
|
SHLQ $0x01, DX
|
|
MOVQ $0x9ae16a3b2f90404f, BX
|
|
ADDQ BX, DX
|
|
MOVQ (CX), BP
|
|
IMULQ BX, BP
|
|
MOVQ 8(CX), SI
|
|
MOVQ AX, DI
|
|
SUBQ $0x10, DI
|
|
ADDQ CX, DI
|
|
MOVQ 8(DI), R12
|
|
IMULQ DX, R12
|
|
MOVQ (DI), DI
|
|
IMULQ BX, DI
|
|
MOVQ BP, R13
|
|
ADDQ SI, R13
|
|
RORQ $0x2b, R13
|
|
ADDQ DI, R13
|
|
MOVQ R12, DI
|
|
RORQ $0x1e, DI
|
|
ADDQ DI, R13
|
|
ADDQ BP, R12
|
|
ADDQ BX, SI
|
|
RORQ $0x12, SI
|
|
ADDQ SI, R12
|
|
MOVQ R13, BX
|
|
XORQ R12, BX
|
|
IMULQ DX, BX
|
|
MOVQ BX, SI
|
|
SHRQ $0x2f, SI
|
|
XORQ BX, SI
|
|
XORQ SI, R12
|
|
IMULQ DX, R12
|
|
MOVQ R12, BX
|
|
SHRQ $0x2f, BX
|
|
XORQ R12, BX
|
|
IMULQ DX, BX
|
|
MOVQ 16(CX), SI
|
|
IMULQ DX, SI
|
|
MOVQ 24(CX), DI
|
|
MOVQ AX, R12
|
|
SUBQ $0x20, R12
|
|
ADDQ CX, R12
|
|
MOVQ (R12), R14
|
|
ADDQ R13, R14
|
|
IMULQ DX, R14
|
|
MOVQ 8(R12), R12
|
|
ADDQ BX, R12
|
|
IMULQ DX, R12
|
|
MOVQ SI, BX
|
|
ADDQ DI, BX
|
|
RORQ $0x2b, BX
|
|
ADDQ R12, BX
|
|
MOVQ R14, R12
|
|
RORQ $0x1e, R12
|
|
ADDQ R12, BX
|
|
ADDQ R14, SI
|
|
ADDQ BP, DI
|
|
RORQ $0x12, DI
|
|
ADDQ DI, SI
|
|
XORQ SI, BX
|
|
IMULQ DX, BX
|
|
MOVQ BX, BP
|
|
SHRQ $0x2f, BP
|
|
XORQ BX, BP
|
|
XORQ BP, SI
|
|
IMULQ DX, SI
|
|
MOVQ SI, BX
|
|
SHRQ $0x2f, BX
|
|
XORQ SI, BX
|
|
IMULQ DX, BX
|
|
MOVQ BX, ret+24(FP)
|
|
RET
|
|
|
|
long:
|
|
XORQ R8, R8
|
|
XORQ R9, R9
|
|
XORQ R10, R10
|
|
XORQ R11, R11
|
|
MOVQ $0x01529cba0ca458ff, DX
|
|
ADDQ (CX), DX
|
|
MOVQ $0x226bb95b4e64b6d4, BX
|
|
MOVQ $0x134a747f856d0526, BP
|
|
MOVQ AX, SI
|
|
SUBQ $0x01, SI
|
|
MOVQ $0xffffffffffffffc0, DI
|
|
ANDQ DI, SI
|
|
MOVQ AX, DI
|
|
SUBQ $0x01, DI
|
|
ANDQ $0x3f, DI
|
|
SUBQ $0x3f, DI
|
|
ADDQ SI, DI
|
|
MOVQ DI, SI
|
|
ADDQ CX, SI
|
|
MOVQ AX, DI
|
|
|
|
loop:
|
|
MOVQ $0xb492b66fbe98f273, R12
|
|
ADDQ BX, DX
|
|
ADDQ R8, DX
|
|
ADDQ 8(CX), DX
|
|
RORQ $0x25, DX
|
|
IMULQ R12, DX
|
|
ADDQ R9, BX
|
|
ADDQ 48(CX), BX
|
|
RORQ $0x2a, BX
|
|
IMULQ R12, BX
|
|
XORQ R11, DX
|
|
ADDQ R8, BX
|
|
ADDQ 40(CX), BX
|
|
ADDQ R10, BP
|
|
RORQ $0x21, BP
|
|
IMULQ R12, BP
|
|
IMULQ R12, R9
|
|
MOVQ DX, R8
|
|
ADDQ R10, R8
|
|
ADDQ (CX), R9
|
|
ADDQ R9, R8
|
|
ADDQ 24(CX), R8
|
|
RORQ $0x15, R8
|
|
MOVQ R9, R10
|
|
ADDQ 8(CX), R9
|
|
ADDQ 16(CX), R9
|
|
MOVQ R9, R13
|
|
RORQ $0x2c, R13
|
|
ADDQ R13, R8
|
|
ADDQ 24(CX), R9
|
|
ADDQ R10, R8
|
|
XCHGQ R9, R8
|
|
ADDQ BP, R11
|
|
MOVQ BX, R10
|
|
ADDQ 16(CX), R10
|
|
ADDQ 32(CX), R11
|
|
ADDQ R11, R10
|
|
ADDQ 56(CX), R10
|
|
RORQ $0x15, R10
|
|
MOVQ R11, R13
|
|
ADDQ 40(CX), R11
|
|
ADDQ 48(CX), R11
|
|
MOVQ R11, R14
|
|
RORQ $0x2c, R14
|
|
ADDQ R14, R10
|
|
ADDQ 56(CX), R11
|
|
ADDQ R13, R10
|
|
XCHGQ R11, R10
|
|
XCHGQ BP, DX
|
|
ADDQ $0x40, CX
|
|
SUBQ $0x40, DI
|
|
CMPQ DI, $0x40
|
|
JG loop
|
|
MOVQ SI, CX
|
|
MOVQ BP, DI
|
|
ANDQ $0xff, DI
|
|
SHLQ $0x01, DI
|
|
ADDQ R12, DI
|
|
MOVQ SI, CX
|
|
SUBQ $0x01, AX
|
|
ANDQ $0x3f, AX
|
|
ADDQ AX, R10
|
|
ADDQ R10, R8
|
|
ADDQ R8, R10
|
|
ADDQ BX, DX
|
|
ADDQ R8, DX
|
|
ADDQ 8(CX), DX
|
|
RORQ $0x25, DX
|
|
IMULQ DI, DX
|
|
ADDQ R9, BX
|
|
ADDQ 48(CX), BX
|
|
RORQ $0x2a, BX
|
|
IMULQ DI, BX
|
|
MOVQ $0x00000009, AX
|
|
IMULQ R11, AX
|
|
XORQ AX, DX
|
|
MOVQ $0x00000009, AX
|
|
IMULQ R8, AX
|
|
ADDQ AX, BX
|
|
ADDQ 40(CX), BX
|
|
ADDQ R10, BP
|
|
RORQ $0x21, BP
|
|
IMULQ DI, BP
|
|
IMULQ DI, R9
|
|
MOVQ DX, R8
|
|
ADDQ R10, R8
|
|
ADDQ (CX), R9
|
|
ADDQ R9, R8
|
|
ADDQ 24(CX), R8
|
|
RORQ $0x15, R8
|
|
MOVQ R9, AX
|
|
ADDQ 8(CX), R9
|
|
ADDQ 16(CX), R9
|
|
MOVQ R9, SI
|
|
RORQ $0x2c, SI
|
|
ADDQ SI, R8
|
|
ADDQ 24(CX), R9
|
|
ADDQ AX, R8
|
|
XCHGQ R9, R8
|
|
ADDQ BP, R11
|
|
MOVQ BX, R10
|
|
ADDQ 16(CX), R10
|
|
ADDQ 32(CX), R11
|
|
ADDQ R11, R10
|
|
ADDQ 56(CX), R10
|
|
RORQ $0x15, R10
|
|
MOVQ R11, AX
|
|
ADDQ 40(CX), R11
|
|
ADDQ 48(CX), R11
|
|
MOVQ R11, SI
|
|
RORQ $0x2c, SI
|
|
ADDQ SI, R10
|
|
ADDQ 56(CX), R11
|
|
ADDQ AX, R10
|
|
XCHGQ R11, R10
|
|
XCHGQ BP, DX
|
|
XORQ R10, R8
|
|
IMULQ DI, R8
|
|
MOVQ R8, AX
|
|
SHRQ $0x2f, AX
|
|
XORQ R8, AX
|
|
XORQ AX, R10
|
|
IMULQ DI, R10
|
|
MOVQ R10, AX
|
|
SHRQ $0x2f, AX
|
|
XORQ R10, AX
|
|
IMULQ DI, AX
|
|
ADDQ BP, AX
|
|
MOVQ BX, CX
|
|
SHRQ $0x2f, CX
|
|
XORQ BX, CX
|
|
MOVQ $0xc3a5c85c97cb3127, BX
|
|
IMULQ BX, CX
|
|
ADDQ CX, AX
|
|
XORQ R11, R9
|
|
IMULQ DI, R9
|
|
MOVQ R9, CX
|
|
SHRQ $0x2f, CX
|
|
XORQ R9, CX
|
|
XORQ CX, R11
|
|
IMULQ DI, R11
|
|
MOVQ R11, CX
|
|
SHRQ $0x2f, CX
|
|
XORQ R11, CX
|
|
IMULQ DI, CX
|
|
ADDQ DX, CX
|
|
XORQ CX, AX
|
|
IMULQ DI, AX
|
|
MOVQ AX, DX
|
|
SHRQ $0x2f, DX
|
|
XORQ AX, DX
|
|
XORQ DX, CX
|
|
IMULQ DI, CX
|
|
MOVQ CX, AX
|
|
SHRQ $0x2f, AX
|
|
XORQ CX, AX
|
|
IMULQ DI, AX
|
|
MOVQ AX, ret+24(FP)
|
|
RET
|
|
|
|
// func Fingerprint32(s []byte) uint32
|
|
TEXT ·Fingerprint32(SB), NOSPLIT, $0-28
|
|
MOVQ s_base+0(FP), AX
|
|
MOVQ s_len+8(FP), CX
|
|
CMPQ CX, $0x18
|
|
JG long
|
|
CMPQ CX, $0x0c
|
|
JG hash_13_24
|
|
CMPQ CX, $0x04
|
|
JG hash_5_12
|
|
XORL DX, DX
|
|
MOVL $0x00000009, BX
|
|
TESTQ CX, CX
|
|
JZ done
|
|
MOVQ CX, BP
|
|
MOVL $0xcc9e2d51, DI
|
|
IMULL DI, DX
|
|
MOVBLSX (AX), SI
|
|
ADDL SI, DX
|
|
XORL DX, BX
|
|
SUBQ $0x01, BP
|
|
TESTQ BP, BP
|
|
JZ done
|
|
IMULL DI, DX
|
|
MOVBLSX 1(AX), SI
|
|
ADDL SI, DX
|
|
XORL DX, BX
|
|
SUBQ $0x01, BP
|
|
TESTQ BP, BP
|
|
JZ done
|
|
IMULL DI, DX
|
|
MOVBLSX 2(AX), SI
|
|
ADDL SI, DX
|
|
XORL DX, BX
|
|
SUBQ $0x01, BP
|
|
TESTQ BP, BP
|
|
JZ done
|
|
IMULL DI, DX
|
|
MOVBLSX 3(AX), SI
|
|
ADDL SI, DX
|
|
XORL DX, BX
|
|
SUBQ $0x01, BP
|
|
TESTQ BP, BP
|
|
JZ done
|
|
|
|
done:
|
|
MOVL CX, BP
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, BP
|
|
RORL $0x11, BP
|
|
MOVL $0x1b873593, SI
|
|
IMULL SI, BP
|
|
XORL BP, BX
|
|
RORL $0x13, BX
|
|
LEAL (BX)(BX*4), BP
|
|
LEAL 3864292196(BP), BX
|
|
MOVL $0xcc9e2d51, BP
|
|
IMULL BP, DX
|
|
RORL $0x11, DX
|
|
MOVL $0x1b873593, BP
|
|
IMULL BP, DX
|
|
XORL DX, BX
|
|
RORL $0x13, BX
|
|
LEAL (BX)(BX*4), DX
|
|
LEAL 3864292196(DX), BX
|
|
MOVL BX, DX
|
|
SHRL $0x10, DX
|
|
XORL DX, BX
|
|
MOVL $0x85ebca6b, DX
|
|
IMULL DX, BX
|
|
MOVL BX, DX
|
|
SHRL $0x0d, DX
|
|
XORL DX, BX
|
|
MOVL $0xc2b2ae35, DX
|
|
IMULL DX, BX
|
|
MOVL BX, DX
|
|
SHRL $0x10, DX
|
|
XORL DX, BX
|
|
MOVL BX, ret+24(FP)
|
|
RET
|
|
|
|
hash_5_12:
|
|
MOVL CX, DX
|
|
MOVL DX, BX
|
|
SHLL $0x02, BX
|
|
ADDL DX, BX
|
|
MOVL $0x00000009, BP
|
|
MOVL BX, SI
|
|
ADDL (AX), DX
|
|
MOVQ CX, DI
|
|
SUBQ $0x04, DI
|
|
ADDQ AX, DI
|
|
ADDL (DI), BX
|
|
MOVQ CX, DI
|
|
SHRQ $0x01, DI
|
|
ANDQ $0x04, DI
|
|
ADDQ AX, DI
|
|
ADDL (DI), BP
|
|
MOVL $0xcc9e2d51, DI
|
|
IMULL DI, DX
|
|
RORL $0x11, DX
|
|
MOVL $0x1b873593, DI
|
|
IMULL DI, DX
|
|
XORL DX, SI
|
|
RORL $0x13, SI
|
|
LEAL (SI)(SI*4), DX
|
|
LEAL 3864292196(DX), SI
|
|
MOVL $0xcc9e2d51, DX
|
|
IMULL DX, BX
|
|
RORL $0x11, BX
|
|
MOVL $0x1b873593, DX
|
|
IMULL DX, BX
|
|
XORL BX, SI
|
|
RORL $0x13, SI
|
|
LEAL (SI)(SI*4), BX
|
|
LEAL 3864292196(BX), SI
|
|
MOVL $0xcc9e2d51, DX
|
|
IMULL DX, BP
|
|
RORL $0x11, BP
|
|
MOVL $0x1b873593, DX
|
|
IMULL DX, BP
|
|
XORL BP, SI
|
|
RORL $0x13, SI
|
|
LEAL (SI)(SI*4), BP
|
|
LEAL 3864292196(BP), SI
|
|
MOVL SI, DX
|
|
SHRL $0x10, DX
|
|
XORL DX, SI
|
|
MOVL $0x85ebca6b, DX
|
|
IMULL DX, SI
|
|
MOVL SI, DX
|
|
SHRL $0x0d, DX
|
|
XORL DX, SI
|
|
MOVL $0xc2b2ae35, DX
|
|
IMULL DX, SI
|
|
MOVL SI, DX
|
|
SHRL $0x10, DX
|
|
XORL DX, SI
|
|
MOVL SI, ret+24(FP)
|
|
RET
|
|
|
|
hash_13_24:
|
|
MOVQ CX, DX
|
|
SHRQ $0x01, DX
|
|
ADDQ AX, DX
|
|
MOVL -4(DX), BX
|
|
MOVL 4(AX), BP
|
|
MOVQ CX, SI
|
|
ADDQ AX, SI
|
|
MOVL -8(SI), DI
|
|
MOVL (DX), DX
|
|
MOVL (AX), R8
|
|
MOVL -4(SI), SI
|
|
MOVL $0xcc9e2d51, R9
|
|
IMULL DX, R9
|
|
ADDL CX, R9
|
|
RORL $0x0c, BX
|
|
ADDL SI, BX
|
|
MOVL DI, R10
|
|
MOVL $0xcc9e2d51, R11
|
|
IMULL R11, R10
|
|
RORL $0x11, R10
|
|
MOVL $0x1b873593, R11
|
|
IMULL R11, R10
|
|
XORL R10, R9
|
|
RORL $0x13, R9
|
|
LEAL (R9)(R9*4), R10
|
|
LEAL 3864292196(R10), R9
|
|
ADDL BX, R9
|
|
RORL $0x03, BX
|
|
ADDL DI, BX
|
|
MOVL $0xcc9e2d51, DI
|
|
IMULL DI, R8
|
|
RORL $0x11, R8
|
|
MOVL $0x1b873593, DI
|
|
IMULL DI, R8
|
|
XORL R8, R9
|
|
RORL $0x13, R9
|
|
LEAL (R9)(R9*4), R8
|
|
LEAL 3864292196(R8), R9
|
|
ADDL BX, R9
|
|
ADDL SI, BX
|
|
RORL $0x0c, BX
|
|
ADDL DX, BX
|
|
MOVL $0xcc9e2d51, DX
|
|
IMULL DX, BP
|
|
RORL $0x11, BP
|
|
MOVL $0x1b873593, DX
|
|
IMULL DX, BP
|
|
XORL BP, R9
|
|
RORL $0x13, R9
|
|
LEAL (R9)(R9*4), BP
|
|
LEAL 3864292196(BP), R9
|
|
ADDL BX, R9
|
|
MOVL R9, DX
|
|
SHRL $0x10, DX
|
|
XORL DX, R9
|
|
MOVL $0x85ebca6b, DX
|
|
IMULL DX, R9
|
|
MOVL R9, DX
|
|
SHRL $0x0d, DX
|
|
XORL DX, R9
|
|
MOVL $0xc2b2ae35, DX
|
|
IMULL DX, R9
|
|
MOVL R9, DX
|
|
SHRL $0x10, DX
|
|
XORL DX, R9
|
|
MOVL R9, ret+24(FP)
|
|
RET
|
|
|
|
long:
|
|
MOVL CX, DX
|
|
MOVL $0xcc9e2d51, BX
|
|
IMULL DX, BX
|
|
MOVL BX, BP
|
|
MOVQ CX, SI
|
|
ADDQ AX, SI
|
|
MOVL $0xcc9e2d51, DI
|
|
MOVL $0x1b873593, R8
|
|
MOVL -4(SI), R9
|
|
IMULL DI, R9
|
|
RORL $0x11, R9
|
|
IMULL R8, R9
|
|
XORL R9, DX
|
|
RORL $0x13, DX
|
|
MOVL DX, R9
|
|
SHLL $0x02, R9
|
|
ADDL R9, DX
|
|
ADDL $0xe6546b64, DX
|
|
MOVL -8(SI), R9
|
|
IMULL DI, R9
|
|
RORL $0x11, R9
|
|
IMULL R8, R9
|
|
XORL R9, BX
|
|
RORL $0x13, BX
|
|
MOVL BX, R9
|
|
SHLL $0x02, R9
|
|
ADDL R9, BX
|
|
ADDL $0xe6546b64, BX
|
|
MOVL -16(SI), R9
|
|
IMULL DI, R9
|
|
RORL $0x11, R9
|
|
IMULL R8, R9
|
|
XORL R9, DX
|
|
RORL $0x13, DX
|
|
MOVL DX, R9
|
|
SHLL $0x02, R9
|
|
ADDL R9, DX
|
|
ADDL $0xe6546b64, DX
|
|
MOVL -12(SI), R9
|
|
IMULL DI, R9
|
|
RORL $0x11, R9
|
|
IMULL R8, R9
|
|
XORL R9, BX
|
|
RORL $0x13, BX
|
|
MOVL BX, R9
|
|
SHLL $0x02, R9
|
|
ADDL R9, BX
|
|
ADDL $0xe6546b64, BX
|
|
PREFETCHT0 (AX)
|
|
MOVL -20(SI), SI
|
|
IMULL DI, SI
|
|
RORL $0x11, SI
|
|
IMULL R8, SI
|
|
ADDL SI, BP
|
|
RORL $0x13, BP
|
|
ADDL $0x71, BP
|
|
|
|
loop80:
|
|
CMPQ CX, $0x64
|
|
JL loop20
|
|
PREFETCHT0 20(AX)
|
|
MOVL (AX), SI
|
|
ADDL SI, DX
|
|
MOVL 4(AX), DI
|
|
ADDL DI, BX
|
|
MOVL 8(AX), R8
|
|
ADDL R8, BP
|
|
MOVL 12(AX), R9
|
|
MOVL R9, R11
|
|
MOVL $0xcc9e2d51, R10
|
|
IMULL R10, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, R10
|
|
IMULL R10, R11
|
|
XORL R11, DX
|
|
RORL $0x13, DX
|
|
LEAL (DX)(DX*4), R11
|
|
LEAL 3864292196(R11), DX
|
|
MOVL 16(AX), R10
|
|
ADDL R10, DX
|
|
MOVL R8, R11
|
|
MOVL $0xcc9e2d51, R8
|
|
IMULL R8, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, R8
|
|
IMULL R8, R11
|
|
XORL R11, BX
|
|
RORL $0x13, BX
|
|
LEAL (BX)(BX*4), R11
|
|
LEAL 3864292196(R11), BX
|
|
ADDL SI, BX
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, R10
|
|
MOVL R10, R11
|
|
ADDL DI, R11
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, SI
|
|
IMULL SI, R11
|
|
XORL R11, BP
|
|
RORL $0x13, BP
|
|
LEAL (BP)(BP*4), R11
|
|
LEAL 3864292196(R11), BP
|
|
ADDL R9, BP
|
|
ADDL BX, BP
|
|
ADDL BP, BX
|
|
PREFETCHT0 40(AX)
|
|
MOVL 20(AX), SI
|
|
ADDL SI, DX
|
|
MOVL 24(AX), DI
|
|
ADDL DI, BX
|
|
MOVL 28(AX), R8
|
|
ADDL R8, BP
|
|
MOVL 32(AX), R9
|
|
MOVL R9, R11
|
|
MOVL $0xcc9e2d51, R10
|
|
IMULL R10, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, R10
|
|
IMULL R10, R11
|
|
XORL R11, DX
|
|
RORL $0x13, DX
|
|
LEAL (DX)(DX*4), R11
|
|
LEAL 3864292196(R11), DX
|
|
MOVL 36(AX), R10
|
|
ADDL R10, DX
|
|
MOVL R8, R11
|
|
MOVL $0xcc9e2d51, R8
|
|
IMULL R8, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, R8
|
|
IMULL R8, R11
|
|
XORL R11, BX
|
|
RORL $0x13, BX
|
|
LEAL (BX)(BX*4), R11
|
|
LEAL 3864292196(R11), BX
|
|
ADDL SI, BX
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, R10
|
|
MOVL R10, R11
|
|
ADDL DI, R11
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, SI
|
|
IMULL SI, R11
|
|
XORL R11, BP
|
|
RORL $0x13, BP
|
|
LEAL (BP)(BP*4), R11
|
|
LEAL 3864292196(R11), BP
|
|
ADDL R9, BP
|
|
ADDL BX, BP
|
|
ADDL BP, BX
|
|
PREFETCHT0 60(AX)
|
|
MOVL 40(AX), SI
|
|
ADDL SI, DX
|
|
MOVL 44(AX), DI
|
|
ADDL DI, BX
|
|
MOVL 48(AX), R8
|
|
ADDL R8, BP
|
|
MOVL 52(AX), R9
|
|
MOVL R9, R11
|
|
MOVL $0xcc9e2d51, R10
|
|
IMULL R10, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, R10
|
|
IMULL R10, R11
|
|
XORL R11, DX
|
|
RORL $0x13, DX
|
|
LEAL (DX)(DX*4), R11
|
|
LEAL 3864292196(R11), DX
|
|
MOVL 56(AX), R10
|
|
ADDL R10, DX
|
|
MOVL R8, R11
|
|
MOVL $0xcc9e2d51, R8
|
|
IMULL R8, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, R8
|
|
IMULL R8, R11
|
|
XORL R11, BX
|
|
RORL $0x13, BX
|
|
LEAL (BX)(BX*4), R11
|
|
LEAL 3864292196(R11), BX
|
|
ADDL SI, BX
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, R10
|
|
MOVL R10, R11
|
|
ADDL DI, R11
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, SI
|
|
IMULL SI, R11
|
|
XORL R11, BP
|
|
RORL $0x13, BP
|
|
LEAL (BP)(BP*4), R11
|
|
LEAL 3864292196(R11), BP
|
|
ADDL R9, BP
|
|
ADDL BX, BP
|
|
ADDL BP, BX
|
|
PREFETCHT0 80(AX)
|
|
MOVL 60(AX), SI
|
|
ADDL SI, DX
|
|
MOVL 64(AX), DI
|
|
ADDL DI, BX
|
|
MOVL 68(AX), R8
|
|
ADDL R8, BP
|
|
MOVL 72(AX), R9
|
|
MOVL R9, R11
|
|
MOVL $0xcc9e2d51, R10
|
|
IMULL R10, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, R10
|
|
IMULL R10, R11
|
|
XORL R11, DX
|
|
RORL $0x13, DX
|
|
LEAL (DX)(DX*4), R11
|
|
LEAL 3864292196(R11), DX
|
|
MOVL 76(AX), R10
|
|
ADDL R10, DX
|
|
MOVL R8, R11
|
|
MOVL $0xcc9e2d51, R8
|
|
IMULL R8, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, R8
|
|
IMULL R8, R11
|
|
XORL R11, BX
|
|
RORL $0x13, BX
|
|
LEAL (BX)(BX*4), R11
|
|
LEAL 3864292196(R11), BX
|
|
ADDL SI, BX
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, R10
|
|
MOVL R10, R11
|
|
ADDL DI, R11
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, SI
|
|
IMULL SI, R11
|
|
XORL R11, BP
|
|
RORL $0x13, BP
|
|
LEAL (BP)(BP*4), R11
|
|
LEAL 3864292196(R11), BP
|
|
ADDL R9, BP
|
|
ADDL BX, BP
|
|
ADDL BP, BX
|
|
ADDQ $0x50, AX
|
|
SUBQ $0x50, CX
|
|
JMP loop80
|
|
|
|
loop20:
|
|
CMPQ CX, $0x14
|
|
JLE after
|
|
MOVL (AX), SI
|
|
ADDL SI, DX
|
|
MOVL 4(AX), DI
|
|
ADDL DI, BX
|
|
MOVL 8(AX), R8
|
|
ADDL R8, BP
|
|
MOVL 12(AX), R9
|
|
MOVL R9, R11
|
|
MOVL $0xcc9e2d51, R10
|
|
IMULL R10, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, R10
|
|
IMULL R10, R11
|
|
XORL R11, DX
|
|
RORL $0x13, DX
|
|
LEAL (DX)(DX*4), R11
|
|
LEAL 3864292196(R11), DX
|
|
MOVL 16(AX), R10
|
|
ADDL R10, DX
|
|
MOVL R8, R11
|
|
MOVL $0xcc9e2d51, R8
|
|
IMULL R8, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, R8
|
|
IMULL R8, R11
|
|
XORL R11, BX
|
|
RORL $0x13, BX
|
|
LEAL (BX)(BX*4), R11
|
|
LEAL 3864292196(R11), BX
|
|
ADDL SI, BX
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, R10
|
|
MOVL R10, R11
|
|
ADDL DI, R11
|
|
MOVL $0xcc9e2d51, SI
|
|
IMULL SI, R11
|
|
RORL $0x11, R11
|
|
MOVL $0x1b873593, SI
|
|
IMULL SI, R11
|
|
XORL R11, BP
|
|
RORL $0x13, BP
|
|
LEAL (BP)(BP*4), R11
|
|
LEAL 3864292196(R11), BP
|
|
ADDL R9, BP
|
|
ADDL BX, BP
|
|
ADDL BP, BX
|
|
ADDQ $0x14, AX
|
|
SUBQ $0x14, CX
|
|
JMP loop20
|
|
|
|
after:
|
|
MOVL $0xcc9e2d51, AX
|
|
RORL $0x0b, BX
|
|
IMULL AX, BX
|
|
RORL $0x11, BX
|
|
IMULL AX, BX
|
|
RORL $0x0b, BP
|
|
IMULL AX, BP
|
|
RORL $0x11, BP
|
|
IMULL AX, BP
|
|
ADDL BX, DX
|
|
RORL $0x13, DX
|
|
MOVL DX, CX
|
|
SHLL $0x02, CX
|
|
ADDL CX, DX
|
|
ADDL $0xe6546b64, DX
|
|
RORL $0x11, DX
|
|
IMULL AX, DX
|
|
ADDL BP, DX
|
|
RORL $0x13, DX
|
|
MOVL DX, CX
|
|
SHLL $0x02, CX
|
|
ADDL CX, DX
|
|
ADDL $0xe6546b64, DX
|
|
RORL $0x11, DX
|
|
IMULL AX, DX
|
|
MOVL DX, ret+24(FP)
|
|
RET
|