311 lines
4.6 KiB
ArmAsm
311 lines
4.6 KiB
ArmAsm
|
|
// Code generated by command: go run asm.go -out stadtx.s -stubs stub.go. DO NOT EDIT.
|
||
|
|
|
||
|
|
#include "textflag.h"
|
||
|
|
|
||
|
|
// func Hash(state *State, key []byte) uint64
|
||
|
|
TEXT ·Hash(SB),0,$0-40
|
||
|
|
MOVQ state(FP), AX
|
||
|
|
MOVQ key_base+8(FP), CX
|
||
|
|
MOVQ key_len+16(FP), DX
|
||
|
|
MOVQ (AX), BX
|
||
|
|
MOVQ 8(AX), BP
|
||
|
|
MOVQ DX, SI
|
||
|
|
ADDQ $0x1, SI
|
||
|
|
MOVQ $0xb89b0f8e1655514f, DI
|
||
|
|
IMULQ DI, SI
|
||
|
|
XORQ SI, BX
|
||
|
|
MOVQ DX, SI
|
||
|
|
ADDQ $0x2, SI
|
||
|
|
MOVQ $0x8c6f736011bd5127, DI
|
||
|
|
IMULQ DI, SI
|
||
|
|
XORQ SI, BP
|
||
|
|
CMPQ DX, $0x20
|
||
|
|
JGE coreLong
|
||
|
|
MOVQ DX, SI
|
||
|
|
SHRQ $0x3, SI
|
||
|
|
CMPQ SI, $0x0
|
||
|
|
JE shortCore0
|
||
|
|
CMPQ SI, $0x1
|
||
|
|
JE shortCore1
|
||
|
|
CMPQ SI, $0x2
|
||
|
|
JE shortCore2
|
||
|
|
CMPQ SI, $0x3
|
||
|
|
JE shortCore3
|
||
|
|
shortCore3:
|
||
|
|
MOVQ (CX), SI
|
||
|
|
MOVQ $0x9c1b8e1e9628323f, DI
|
||
|
|
IMULQ DI, SI
|
||
|
|
ADDQ SI, BX
|
||
|
|
RORQ $0x11, BX
|
||
|
|
XORQ BP, BX
|
||
|
|
RORQ $0x35, BP
|
||
|
|
ADDQ BX, BP
|
||
|
|
ADDQ $0x8, CX
|
||
|
|
SUBQ $0x8, DX
|
||
|
|
shortCore2:
|
||
|
|
MOVQ (CX), SI
|
||
|
|
MOVQ $0x9c1b8e1e9628323f, DI
|
||
|
|
IMULQ DI, SI
|
||
|
|
ADDQ SI, BX
|
||
|
|
RORQ $0x11, BX
|
||
|
|
XORQ BP, BX
|
||
|
|
RORQ $0x35, BP
|
||
|
|
ADDQ BX, BP
|
||
|
|
ADDQ $0x8, CX
|
||
|
|
SUBQ $0x8, DX
|
||
|
|
shortCore1:
|
||
|
|
MOVQ (CX), SI
|
||
|
|
MOVQ $0x9c1b8e1e9628323f, DI
|
||
|
|
IMULQ DI, SI
|
||
|
|
ADDQ SI, BX
|
||
|
|
RORQ $0x11, BX
|
||
|
|
XORQ BP, BX
|
||
|
|
RORQ $0x35, BP
|
||
|
|
ADDQ BX, BP
|
||
|
|
ADDQ $0x8, CX
|
||
|
|
SUBQ $0x8, DX
|
||
|
|
shortCore0:
|
||
|
|
CMPQ DX, $0x0
|
||
|
|
JE shortTail0
|
||
|
|
CMPQ DX, $0x1
|
||
|
|
JE shortTail1
|
||
|
|
CMPQ DX, $0x2
|
||
|
|
JE shortTail2
|
||
|
|
CMPQ DX, $0x3
|
||
|
|
JE shortTail3
|
||
|
|
CMPQ DX, $0x4
|
||
|
|
JE shortTail4
|
||
|
|
CMPQ DX, $0x5
|
||
|
|
JE shortTail5
|
||
|
|
CMPQ DX, $0x6
|
||
|
|
JE shortTail6
|
||
|
|
CMPQ DX, $0x7
|
||
|
|
JE shortTail7
|
||
|
|
shortTail7:
|
||
|
|
MOVBQZX 6(CX), SI
|
||
|
|
SHLQ $0x20, SI
|
||
|
|
ADDQ SI, BX
|
||
|
|
shortTail6:
|
||
|
|
MOVBQZX 5(CX), SI
|
||
|
|
SHLQ $0x30, SI
|
||
|
|
ADDQ SI, BP
|
||
|
|
shortTail5:
|
||
|
|
MOVBQZX 4(CX), SI
|
||
|
|
SHLQ $0x10, SI
|
||
|
|
ADDQ SI, BX
|
||
|
|
shortTail4:
|
||
|
|
MOVLQZX (CX), SI
|
||
|
|
ADDQ SI, BP
|
||
|
|
JMP shortAfter
|
||
|
|
shortTail3:
|
||
|
|
MOVBQZX 2(CX), SI
|
||
|
|
SHLQ $0x30, SI
|
||
|
|
ADDQ SI, BX
|
||
|
|
shortTail2:
|
||
|
|
MOVWQZX (CX), SI
|
||
|
|
ADDQ SI, BP
|
||
|
|
JMP shortAfter
|
||
|
|
shortTail1:
|
||
|
|
MOVBQZX (CX), SI
|
||
|
|
ADDQ SI, BX
|
||
|
|
shortTail0:
|
||
|
|
RORQ $0x20, BP
|
||
|
|
XORQ $0xff, BP
|
||
|
|
shortAfter:
|
||
|
|
XORQ BX, BP
|
||
|
|
RORQ $0x21, BX
|
||
|
|
ADDQ BP, BX
|
||
|
|
ROLQ $0x11, BP
|
||
|
|
XORQ BX, BP
|
||
|
|
ROLQ $0x2b, BX
|
||
|
|
ADDQ BP, BX
|
||
|
|
ROLQ $0x1f, BP
|
||
|
|
SUBQ BX, BP
|
||
|
|
ROLQ $0xd, BX
|
||
|
|
XORQ BP, BX
|
||
|
|
SUBQ BX, BP
|
||
|
|
ROLQ $0x29, BX
|
||
|
|
ADDQ BP, BX
|
||
|
|
ROLQ $0x25, BP
|
||
|
|
XORQ BX, BP
|
||
|
|
RORQ $0x27, BX
|
||
|
|
ADDQ BP, BX
|
||
|
|
RORQ $0xf, BP
|
||
|
|
ADDQ BX, BP
|
||
|
|
ROLQ $0xf, BX
|
||
|
|
XORQ BP, BX
|
||
|
|
RORQ $0x5, BP
|
||
|
|
XORQ BP, BX
|
||
|
|
MOVQ BX, ret+32(FP)
|
||
|
|
RET
|
||
|
|
coreLong:
|
||
|
|
MOVQ 16(AX), DI
|
||
|
|
MOVQ 24(AX), AX
|
||
|
|
MOVQ DX, SI
|
||
|
|
ADDQ $0x3, SI
|
||
|
|
MOVQ $0x8f29bd94edce7b39, R8
|
||
|
|
IMULQ R8, SI
|
||
|
|
XORQ SI, DI
|
||
|
|
MOVQ DX, SI
|
||
|
|
ADDQ $0x4, SI
|
||
|
|
MOVQ $0x9c1b8e1e9628323f, R8
|
||
|
|
IMULQ R8, SI
|
||
|
|
XORQ SI, AX
|
||
|
|
block:
|
||
|
|
MOVQ (CX), SI
|
||
|
|
MOVQ $0x802910e3, R8
|
||
|
|
IMULQ R8, SI
|
||
|
|
ADDQ SI, BX
|
||
|
|
ROLQ $0x39, BX
|
||
|
|
XORQ AX, BX
|
||
|
|
MOVQ 8(CX), SI
|
||
|
|
MOVQ $0x819b13af, R8
|
||
|
|
IMULQ R8, SI
|
||
|
|
ADDQ SI, BP
|
||
|
|
ROLQ $0x3f, BP
|
||
|
|
XORQ DI, BP
|
||
|
|
MOVQ 16(CX), SI
|
||
|
|
MOVQ $0x91cb27e5, R8
|
||
|
|
IMULQ R8, SI
|
||
|
|
ADDQ SI, DI
|
||
|
|
RORQ $0x2f, DI
|
||
|
|
ADDQ BX, DI
|
||
|
|
MOVQ 24(CX), SI
|
||
|
|
MOVQ $0xc1a269c1, R8
|
||
|
|
IMULQ R8, SI
|
||
|
|
ADDQ SI, AX
|
||
|
|
RORQ $0xb, AX
|
||
|
|
SUBQ BP, AX
|
||
|
|
ADDQ $0x20, CX
|
||
|
|
SUBQ $0x20, DX
|
||
|
|
CMPQ DX, $0x20
|
||
|
|
JGE block
|
||
|
|
MOVQ DX, R8
|
||
|
|
MOVQ DX, SI
|
||
|
|
SHRQ $0x3, SI
|
||
|
|
CMPQ SI, $0x0
|
||
|
|
JE longCore0
|
||
|
|
CMPQ SI, $0x1
|
||
|
|
JE longCore1
|
||
|
|
CMPQ SI, $0x2
|
||
|
|
JE longCore2
|
||
|
|
CMPQ SI, $0x3
|
||
|
|
JE longCore3
|
||
|
|
longCore3:
|
||
|
|
MOVQ (CX), SI
|
||
|
|
MOVQ $0x802910e3, R9
|
||
|
|
IMULQ R9, SI
|
||
|
|
ADDQ SI, BX
|
||
|
|
ROLQ $0x39, BX
|
||
|
|
XORQ AX, BX
|
||
|
|
ADDQ $0x8, CX
|
||
|
|
SUBQ $0x8, DX
|
||
|
|
longCore2:
|
||
|
|
MOVQ (CX), SI
|
||
|
|
MOVQ $0x819b13af, R9
|
||
|
|
IMULQ R9, SI
|
||
|
|
ADDQ SI, BP
|
||
|
|
ROLQ $0x3f, BP
|
||
|
|
XORQ DI, BP
|
||
|
|
ADDQ $0x8, CX
|
||
|
|
SUBQ $0x8, DX
|
||
|
|
longCore1:
|
||
|
|
MOVQ (CX), SI
|
||
|
|
MOVQ $0x91cb27e5, R9
|
||
|
|
IMULQ R9, SI
|
||
|
|
ADDQ SI, DI
|
||
|
|
RORQ $0x2f, DI
|
||
|
|
ADDQ BX, DI
|
||
|
|
ADDQ $0x8, CX
|
||
|
|
SUBQ $0x8, DX
|
||
|
|
longCore0:
|
||
|
|
RORQ $0xb, AX
|
||
|
|
SUBQ BP, AX
|
||
|
|
ADDQ $0x1, R8
|
||
|
|
MOVQ $0x9c1b8e1e9628323f, SI
|
||
|
|
IMULQ SI, R8
|
||
|
|
XORQ R8, BX
|
||
|
|
CMPQ DX, $0x0
|
||
|
|
JE longTail0
|
||
|
|
CMPQ DX, $0x1
|
||
|
|
JE longTail1
|
||
|
|
CMPQ DX, $0x2
|
||
|
|
JE longTail2
|
||
|
|
CMPQ DX, $0x3
|
||
|
|
JE longTail3
|
||
|
|
CMPQ DX, $0x4
|
||
|
|
JE longTail4
|
||
|
|
CMPQ DX, $0x5
|
||
|
|
JE longTail5
|
||
|
|
CMPQ DX, $0x6
|
||
|
|
JE longTail6
|
||
|
|
CMPQ DX, $0x7
|
||
|
|
JE longTail7
|
||
|
|
longTail7:
|
||
|
|
MOVBQZX 6(CX), SI
|
||
|
|
ADDQ SI, BP
|
||
|
|
longTail6:
|
||
|
|
MOVWQZX 4(CX), SI
|
||
|
|
ADDQ SI, DI
|
||
|
|
MOVLQZX (CX), SI
|
||
|
|
ADDQ SI, AX
|
||
|
|
JMP longAfter
|
||
|
|
longTail5:
|
||
|
|
MOVBQZX 4(CX), SI
|
||
|
|
ADDQ SI, BP
|
||
|
|
longTail4:
|
||
|
|
MOVLQZX (CX), SI
|
||
|
|
ADDQ SI, DI
|
||
|
|
JMP longAfter
|
||
|
|
longTail3:
|
||
|
|
MOVBQZX 2(CX), SI
|
||
|
|
ADDQ SI, AX
|
||
|
|
longTail2:
|
||
|
|
MOVWQZX (CX), SI
|
||
|
|
ADDQ SI, BP
|
||
|
|
JMP longAfter
|
||
|
|
longTail1:
|
||
|
|
MOVBQZX (CX), SI
|
||
|
|
ADDQ SI, DI
|
||
|
|
longTail0:
|
||
|
|
ROLQ $0x20, AX
|
||
|
|
XORQ $0xff, AX
|
||
|
|
longAfter:
|
||
|
|
SUBQ DI, BP
|
||
|
|
RORQ $0x13, BX
|
||
|
|
SUBQ BX, BP
|
||
|
|
RORQ $0x35, BP
|
||
|
|
XORQ BP, AX
|
||
|
|
SUBQ AX, BX
|
||
|
|
ROLQ $0x2b, AX
|
||
|
|
ADDQ AX, BX
|
||
|
|
RORQ $0x3, BX
|
||
|
|
SUBQ BX, AX
|
||
|
|
RORQ $0x2b, DI
|
||
|
|
SUBQ AX, DI
|
||
|
|
ROLQ $0x37, DI
|
||
|
|
XORQ BX, DI
|
||
|
|
SUBQ DI, BP
|
||
|
|
RORQ $0x7, AX
|
||
|
|
SUBQ DI, AX
|
||
|
|
RORQ $0x1f, DI
|
||
|
|
ADDQ DI, AX
|
||
|
|
SUBQ BP, DI
|
||
|
|
RORQ $0x27, AX
|
||
|
|
XORQ AX, DI
|
||
|
|
RORQ $0x11, AX
|
||
|
|
XORQ DI, AX
|
||
|
|
ADDQ AX, BP
|
||
|
|
RORQ $0x9, BP
|
||
|
|
XORQ BP, DI
|
||
|
|
ROLQ $0x18, DI
|
||
|
|
XORQ DI, AX
|
||
|
|
RORQ $0x3b, AX
|
||
|
|
RORQ $0x1, BX
|
||
|
|
SUBQ BP, BX
|
||
|
|
XORQ BP, BX
|
||
|
|
XORQ AX, DI
|
||
|
|
XORQ DI, BX
|
||
|
|
MOVQ BX, ret+32(FP)
|
||
|
|
RET
|