diff --git a/README.md b/README.md index 2f2a3928..b8f7ed89 100644 --- a/README.md +++ b/README.md @@ -65,10 +65,10 @@ After running `go generate` the [`add.s`](examples/add/add.s) file will contain // func Add(x uint64, y uint64) uint64 TEXT ·Add(SB), NOSPLIT, $0-24 - MOVQ x(FP), AX - MOVQ y+8(FP), CX - ADDQ AX, CX - MOVQ CX, ret+16(FP) + MOVQ x(FP), AX + MOVQ y+8(FP), CX + ADDQ AX, CX + MOVQ CX, ret+16(FP) RET ``` @@ -137,18 +137,20 @@ The result from this code generator is: // func Sum(xs []uint64) uint64 TEXT ·Sum(SB), NOSPLIT, $0-32 - MOVQ xs_base(FP), AX - MOVQ xs_len+8(FP), CX - XORQ DX, DX + MOVQ xs_base(FP), AX + MOVQ xs_len+8(FP), CX + XORQ DX, DX + loop: - CMPQ CX, $0x00 - JE done - ADDQ (AX), DX - ADDQ $0x08, AX - DECQ CX - JMP loop + CMPQ CX, $0x00 + JE done + ADDQ (AX), DX + ADDQ $0x08, AX + DECQ CX + JMP loop + done: - MOVQ DX, ret+24(FP) + MOVQ DX, ret+24(FP) RET ``` diff --git a/examples/add/README.md b/examples/add/README.md index 108555a5..38c0d0cc 100644 --- a/examples/add/README.md +++ b/examples/add/README.md @@ -43,9 +43,9 @@ This produces [`add.s`](add.s) as follows: // func Add(x uint64, y uint64) uint64 TEXT ·Add(SB), NOSPLIT, $0-24 - MOVQ x(FP), AX - MOVQ y+8(FP), CX - ADDQ AX, CX - MOVQ CX, ret+16(FP) + MOVQ x(FP), AX + MOVQ y+8(FP), CX + ADDQ AX, CX + MOVQ CX, ret+16(FP) RET ``` diff --git a/examples/add/add.s b/examples/add/add.s index 679dfbf0..a5659b0e 100644 --- a/examples/add/add.s +++ b/examples/add/add.s @@ -4,8 +4,8 @@ // func Add(x uint64, y uint64) uint64 TEXT ·Add(SB), NOSPLIT, $0-24 - MOVQ x(FP), AX - MOVQ y+8(FP), CX - ADDQ AX, CX - MOVQ CX, ret+16(FP) + MOVQ x(FP), AX + MOVQ y+8(FP), CX + ADDQ AX, CX + MOVQ CX, ret+16(FP) RET diff --git a/examples/args/README.md b/examples/args/README.md index aa0e646f..8032cc7f 100644 --- a/examples/args/README.md +++ b/examples/args/README.md @@ -20,8 +20,8 @@ This `avo` code will generate the following assembly. Note that parameter refere ```s // func Second(x int32, y int32) int32 TEXT ·Second(SB), NOSPLIT, $0-12 - MOVL y+4(FP), AX - MOVL AX, ret+8(FP) + MOVL y+4(FP), AX + MOVL AX, ret+8(FP) RET ``` diff --git a/examples/args/args.s b/examples/args/args.s index cd890aec..1a99d0d1 100644 --- a/examples/args/args.s +++ b/examples/args/args.s @@ -4,108 +4,108 @@ // func Second(x int32, y int32) int32 TEXT ·Second(SB), NOSPLIT, $0-12 - MOVL y+4(FP), AX - MOVL AX, ret+8(FP) + MOVL y+4(FP), AX + MOVL AX, ret+8(FP) RET // func StringLen(s string) int TEXT ·StringLen(SB), NOSPLIT, $0-24 - MOVQ s_len+8(FP), AX - MOVQ AX, ret+16(FP) + MOVQ s_len+8(FP), AX + MOVQ AX, ret+16(FP) RET // func SliceLen(s []int) int TEXT ·SliceLen(SB), NOSPLIT, $0-32 - MOVQ s_len+8(FP), AX - MOVQ AX, ret+24(FP) + MOVQ s_len+8(FP), AX + MOVQ AX, ret+24(FP) RET // func SliceCap(s []int) int TEXT ·SliceCap(SB), NOSPLIT, $0-32 - MOVQ s_cap+16(FP), AX - MOVQ AX, ret+24(FP) + MOVQ s_cap+16(FP), AX + MOVQ AX, ret+24(FP) RET // func ArrayThree(a [7]uint64) uint64 TEXT ·ArrayThree(SB), NOSPLIT, $0-64 - MOVQ a_3+24(FP), AX - MOVQ AX, ret+56(FP) + MOVQ a_3+24(FP), AX + MOVQ AX, ret+56(FP) RET // func FieldByte(s Struct) byte TEXT ·FieldByte(SB), NOSPLIT, $0-177 - MOVB s_Byte(FP), AL - MOVB AL, ret+176(FP) + MOVB s_Byte(FP), AL + MOVB AL, ret+176(FP) RET // func FieldInt8(s Struct) int8 TEXT ·FieldInt8(SB), NOSPLIT, $0-177 - MOVB s_Int8+1(FP), AL - MOVB AL, ret+176(FP) + MOVB s_Int8+1(FP), AL + MOVB AL, ret+176(FP) RET // func FieldUint16(s Struct) uint16 TEXT ·FieldUint16(SB), NOSPLIT, $0-178 - MOVW s_Uint16+2(FP), AX - MOVW AX, ret+176(FP) + MOVW s_Uint16+2(FP), AX + MOVW AX, ret+176(FP) RET // func FieldInt32(s Struct) int32 TEXT ·FieldInt32(SB), NOSPLIT, $0-180 - MOVL s_Int32+4(FP), AX - MOVL AX, ret+176(FP) + MOVL s_Int32+4(FP), AX + MOVL AX, ret+176(FP) RET // func FieldUint64(s Struct) uint64 TEXT ·FieldUint64(SB), NOSPLIT, $0-184 - MOVQ s_Uint64+8(FP), AX - MOVQ AX, ret+176(FP) + MOVQ s_Uint64+8(FP), AX + MOVQ AX, ret+176(FP) RET // func FieldFloat32(s Struct) float32 TEXT ·FieldFloat32(SB), NOSPLIT, $0-180 - MOVSS s_Float32+16(FP), X0 - MOVSS X0, ret+176(FP) + MOVSS s_Float32+16(FP), X0 + MOVSS X0, ret+176(FP) RET // func FieldFloat64(s Struct) float64 TEXT ·FieldFloat64(SB), NOSPLIT, $0-184 - MOVSD s_Float64+24(FP), X0 - MOVSD X0, ret+176(FP) + MOVSD s_Float64+24(FP), X0 + MOVSD X0, ret+176(FP) RET // func FieldStringLen(s Struct) int TEXT ·FieldStringLen(SB), NOSPLIT, $0-184 - MOVQ s_String_len+40(FP), AX - MOVQ AX, ret+176(FP) + MOVQ s_String_len+40(FP), AX + MOVQ AX, ret+176(FP) RET // func FieldSliceCap(s Struct) int TEXT ·FieldSliceCap(SB), NOSPLIT, $0-184 - MOVQ s_Slice_cap+64(FP), AX - MOVQ AX, ret+176(FP) + MOVQ s_Slice_cap+64(FP), AX + MOVQ AX, ret+176(FP) RET // func FieldArrayTwoBTwo(s Struct) byte TEXT ·FieldArrayTwoBTwo(SB), NOSPLIT, $0-177 - MOVB s_Array_2_B_2+114(FP), AL - MOVB AL, ret+176(FP) + MOVB s_Array_2_B_2+114(FP), AL + MOVB AL, ret+176(FP) RET // func FieldArrayOneC(s Struct) uint16 TEXT ·FieldArrayOneC(SB), NOSPLIT, $0-178 - MOVW s_Array_1_C+100(FP), AX - MOVW AX, ret+176(FP) + MOVW s_Array_1_C+100(FP), AX + MOVW AX, ret+176(FP) RET // func FieldComplex64Imag(s Struct) float32 TEXT ·FieldComplex64Imag(SB), NOSPLIT, $0-180 - MOVSS s_Complex64_imag+156(FP), X0 - MOVSS X0, ret+176(FP) + MOVSS s_Complex64_imag+156(FP), X0 + MOVSS X0, ret+176(FP) RET // func FieldComplex128Real(s Struct) float64 TEXT ·FieldComplex128Real(SB), NOSPLIT, $0-184 - MOVSD s_Complex128_real+160(FP), X0 - MOVSD X0, ret+176(FP) + MOVSD s_Complex128_real+160(FP), X0 + MOVSD X0, ret+176(FP) RET diff --git a/examples/backup.tar.gz b/examples/backup.tar.gz new file mode 100644 index 00000000..48875671 Binary files /dev/null and b/examples/backup.tar.gz differ diff --git a/examples/complex/README.md b/examples/complex/README.md index b74b440e..8c4ce342 100644 --- a/examples/complex/README.md +++ b/examples/complex/README.md @@ -25,12 +25,12 @@ Generated assembly: ```s // func Norm(z complex128) float64 TEXT ·Norm(SB), NOSPLIT, $0-24 - MOVSD z_real(FP), X0 - MOVSD z_imag+8(FP), X1 - MULSD X0, X0 - MULSD X1, X1 - ADDSD X1, X0 - SQRTSD X0, X2 - MOVSD X2, ret+16(FP) + MOVSD z_real(FP), X0 + MOVSD z_imag+8(FP), X1 + MULSD X0, X0 + MULSD X1, X1 + ADDSD X1, X0 + SQRTSD X0, X2 + MOVSD X2, ret+16(FP) RET ``` diff --git a/examples/complex/complex.s b/examples/complex/complex.s index aa9e4d68..ff4475cf 100644 --- a/examples/complex/complex.s +++ b/examples/complex/complex.s @@ -4,23 +4,23 @@ // func Real(z complex128) float64 TEXT ·Real(SB), NOSPLIT, $0-24 - MOVSD z_real(FP), X0 - MOVSD X0, ret+16(FP) + MOVSD z_real(FP), X0 + MOVSD X0, ret+16(FP) RET // func Imag(z complex128) float64 TEXT ·Imag(SB), NOSPLIT, $0-24 - MOVSD z_imag+8(FP), X0 - MOVSD X0, ret+16(FP) + MOVSD z_imag+8(FP), X0 + MOVSD X0, ret+16(FP) RET // func Norm(z complex128) float64 TEXT ·Norm(SB), NOSPLIT, $0-24 - MOVSD z_real(FP), X0 - MOVSD z_imag+8(FP), X1 - MULSD X0, X0 - MULSD X1, X1 - ADDSD X1, X0 - SQRTSD X0, X2 - MOVSD X2, ret+16(FP) + MOVSD z_real(FP), X0 + MOVSD z_imag+8(FP), X1 + MULSD X0, X0 + MULSD X1, X1 + ADDSD X1, X0 + SQRTSD X0, X2 + MOVSD X2, ret+16(FP) RET diff --git a/examples/data/data.s b/examples/data/data.s index c9ce1432..6819c036 100644 --- a/examples/data/data.s +++ b/examples/data/data.s @@ -14,8 +14,8 @@ GLOBL bytes<>(SB), RODATA|NOPTR, $40 // func DataAt(i int) byte TEXT ·DataAt(SB), NOSPLIT, $0-9 - MOVQ i(FP), AX - LEAQ bytes<>(SB), CX - MOVB (CX)(AX*1), AL - MOVB AL, ret+8(FP) + MOVQ i(FP), AX + LEAQ bytes<>(SB), CX + MOVB (CX)(AX*1), AL + MOVB AL, ret+8(FP) RET diff --git a/examples/dot/dot.s b/examples/dot/dot.s index 609832e9..6dc20955 100644 --- a/examples/dot/dot.s +++ b/examples/dot/dot.s @@ -4,55 +4,59 @@ // func Dot(x []float32, y []float32) float32 TEXT ·Dot(SB), NOSPLIT, $0-52 - MOVQ x_base(FP), AX - MOVQ y_base+24(FP), CX - MOVQ x_len+8(FP), DX - VXORPS Y0, Y0, Y0 - VXORPS Y1, Y1, Y1 - VXORPS Y2, Y2, Y2 - VXORPS Y3, Y3, Y3 - VXORPS Y4, Y4, Y4 - VXORPS Y5, Y5, Y5 + MOVQ x_base(FP), AX + MOVQ y_base+24(FP), CX + MOVQ x_len+8(FP), DX + VXORPS Y0, Y0, Y0 + VXORPS Y1, Y1, Y1 + VXORPS Y2, Y2, Y2 + VXORPS Y3, Y3, Y3 + VXORPS Y4, Y4, Y4 + VXORPS Y5, Y5, Y5 + blockloop: - CMPQ DX, $0x00000030 - JL tail - VMOVUPS (AX), Y6 - VMOVUPS 32(AX), Y7 - VMOVUPS 64(AX), Y8 - VMOVUPS 96(AX), Y9 - VMOVUPS 128(AX), Y10 - VMOVUPS 160(AX), Y11 - VFMADD231PS (CX), Y6, Y0 - VFMADD231PS 32(CX), Y7, Y1 - VFMADD231PS 64(CX), Y8, Y2 - VFMADD231PS 96(CX), Y9, Y3 - VFMADD231PS 128(CX), Y10, Y4 - VFMADD231PS 160(CX), Y11, Y5 - ADDQ $0x000000c0, AX - ADDQ $0x000000c0, CX - SUBQ $0x00000030, DX - JMP blockloop + CMPQ DX, $0x00000030 + JL tail + VMOVUPS (AX), Y6 + VMOVUPS 32(AX), Y7 + VMOVUPS 64(AX), Y8 + VMOVUPS 96(AX), Y9 + VMOVUPS 128(AX), Y10 + VMOVUPS 160(AX), Y11 + VFMADD231PS (CX), Y6, Y0 + VFMADD231PS 32(CX), Y7, Y1 + VFMADD231PS 64(CX), Y8, Y2 + VFMADD231PS 96(CX), Y9, Y3 + VFMADD231PS 128(CX), Y10, Y4 + VFMADD231PS 160(CX), Y11, Y5 + ADDQ $0x000000c0, AX + ADDQ $0x000000c0, CX + SUBQ $0x00000030, DX + JMP blockloop + tail: - VXORPS X12, X12, X12 + VXORPS X12, X12, X12 + tailloop: - CMPQ DX, $0x00000000 - JE reduce - VMOVSS (AX), X6 - VFMADD231SS (CX), X6, X12 - ADDQ $0x00000004, AX - ADDQ $0x00000004, CX - DECQ DX - JMP tailloop + CMPQ DX, $0x00000000 + JE reduce + VMOVSS (AX), X6 + VFMADD231SS (CX), X6, X12 + ADDQ $0x00000004, AX + ADDQ $0x00000004, CX + DECQ DX + JMP tailloop + reduce: - VADDPS Y0, Y1, Y0 - VADDPS Y0, Y2, Y0 - VADDPS Y0, Y3, Y0 - VADDPS Y0, Y4, Y0 - VADDPS Y0, Y5, Y0 - VEXTRACTF128 $0x01, Y0, X1 - VADDPS X0, X1, X0 - VADDPS X0, X12, X0 - VHADDPS X0, X0, X0 - VHADDPS X0, X0, X0 - MOVSS X0, ret+48(FP) + VADDPS Y0, Y1, Y0 + VADDPS Y0, Y2, Y0 + VADDPS Y0, Y3, Y0 + VADDPS Y0, Y4, Y0 + VADDPS Y0, Y5, Y0 + VEXTRACTF128 $0x01, Y0, X1 + VADDPS X0, X1, X0 + VADDPS X0, X12, X0 + VHADDPS X0, X0, X0 + VHADDPS X0, X0, X0 + MOVSS X0, ret+48(FP) RET diff --git a/examples/fnv1a/fnv1a.s b/examples/fnv1a/fnv1a.s index 9df9e01b..85bbd580 100644 --- a/examples/fnv1a/fnv1a.s +++ b/examples/fnv1a/fnv1a.s @@ -4,19 +4,21 @@ // func Hash64(data []byte) uint64 TEXT ·Hash64(SB), NOSPLIT, $0-32 - MOVQ data_base(FP), CX - MOVQ data_len+8(FP), BX - MOVQ $0xcbf29ce484222325, AX - MOVQ $0x00000100000001b3, BP + MOVQ data_base(FP), CX + MOVQ data_len+8(FP), BX + MOVQ $0xcbf29ce484222325, AX + MOVQ $0x00000100000001b3, BP + loop: - CMPQ BX, $0x00 - JE done - MOVBQZX (CX), DX - XORQ DX, AX - MULQ BP - INCQ CX - DECQ BX - JMP loop + CMPQ BX, $0x00 + JE done + MOVBQZX (CX), DX + XORQ DX, AX + MULQ BP + INCQ CX + DECQ BX + JMP loop + done: - MOVQ AX, ret+24(FP) + MOVQ AX, ret+24(FP) RET diff --git a/examples/geohash/geohash.s b/examples/geohash/geohash.s index c724e197..c14d6f51 100644 --- a/examples/geohash/geohash.s +++ b/examples/geohash/geohash.s @@ -4,21 +4,21 @@ // func EncodeInt(lat float64, lng float64) uint64 TEXT ·EncodeInt(SB), NOSPLIT, $0-24 - MOVSD lat(FP), X0 - MOVSD lng+8(FP), X1 - MULSD reciprocal180<>(SB), X0 - ADDSD onepointfive<>(SB), X0 - MULSD reciprocal360<>(SB), X1 - ADDSD onepointfive<>(SB), X1 - MOVQ X0, CX - SHRQ $0x14, CX - MOVQ X1, AX - SHRQ $0x14, AX - PDEPQ mask<>(SB), CX, CX - PDEPQ mask<>(SB), AX, AX - SHLQ $0x01, AX - XORQ AX, CX - MOVQ CX, ret+16(FP) + MOVSD lat(FP), X0 + MOVSD lng+8(FP), X1 + MULSD reciprocal180<>(SB), X0 + ADDSD onepointfive<>(SB), X0 + MULSD reciprocal360<>(SB), X1 + ADDSD onepointfive<>(SB), X1 + MOVQ X0, CX + SHRQ $0x14, CX + MOVQ X1, AX + SHRQ $0x14, AX + PDEPQ mask<>(SB), CX, CX + PDEPQ mask<>(SB), AX, AX + SHLQ $0x01, AX + XORQ AX, CX + MOVQ CX, ret+16(FP) RET DATA reciprocal180<>(SB)/8, $(0.005555555555555556) diff --git a/examples/returns/returns.s b/examples/returns/returns.s index 9c3b6f6d..23751f28 100644 --- a/examples/returns/returns.s +++ b/examples/returns/returns.s @@ -4,43 +4,43 @@ // func Interval(start uint64, size uint64) (uint64, uint64) TEXT ·Interval(SB), NOSPLIT, $0-32 - MOVQ start(FP), AX - MOVQ size+8(FP), CX - ADDQ AX, CX - MOVQ AX, ret+16(FP) - MOVQ CX, ret1+24(FP) + MOVQ start(FP), AX + MOVQ size+8(FP), CX + ADDQ AX, CX + MOVQ AX, ret+16(FP) + MOVQ CX, ret1+24(FP) RET // func Butterfly(x0 float64, x1 float64) (y0 float64, y1 float64) TEXT ·Butterfly(SB), NOSPLIT, $0-32 - MOVSD x0(FP), X0 - MOVSD x1+8(FP), X1 - MOVSD X0, X2 - ADDSD X1, X2 - MOVSD X0, X3 - SUBSD X1, X3 - MOVSD X2, y0+16(FP) - MOVSD X3, y1+24(FP) + MOVSD x0(FP), X0 + MOVSD x1+8(FP), X1 + MOVSD X0, X2 + ADDSD X1, X2 + MOVSD X0, X3 + SUBSD X1, X3 + MOVSD X2, y0+16(FP) + MOVSD X3, y1+24(FP) RET // func Septuple(byte) [7]byte TEXT ·Septuple(SB), NOSPLIT, $0-15 - MOVB arg(FP), AL - MOVB AL, ret_0+8(FP) - MOVB AL, ret_1+9(FP) - MOVB AL, ret_2+10(FP) - MOVB AL, ret_3+11(FP) - MOVB AL, ret_4+12(FP) - MOVB AL, ret_5+13(FP) - MOVB AL, ret_6+14(FP) + MOVB arg(FP), AL + MOVB AL, ret_0+8(FP) + MOVB AL, ret_1+9(FP) + MOVB AL, ret_2+10(FP) + MOVB AL, ret_3+11(FP) + MOVB AL, ret_4+12(FP) + MOVB AL, ret_5+13(FP) + MOVB AL, ret_6+14(FP) RET // func CriticalLine(t float64) complex128 TEXT ·CriticalLine(SB), NOSPLIT, $0-24 - MOVSD t(FP), X0 - MOVSD half<>(SB), X1 - MOVSD X1, ret_real+8(FP) - MOVSD X0, ret_imag+16(FP) + MOVSD t(FP), X0 + MOVSD half<>(SB), X1 + MOVSD X1, ret_real+8(FP) + MOVSD X0, ret_imag+16(FP) RET DATA half<>(SB)/8, $(0.5) @@ -48,12 +48,12 @@ GLOBL half<>(SB), RODATA|NOPTR, $8 // func NewStruct(w uint16, p [2]float64, q uint64) Struct TEXT ·NewStruct(SB), NOSPLIT, $0-64 - MOVW w(FP), AX - MOVSD p_0+8(FP), X0 - MOVSD p_1+16(FP), X1 - MOVQ q+24(FP), CX - MOVW AX, ret_Word+32(FP) - MOVSD X0, ret_Point_0+40(FP) - MOVSD X1, ret_Point_1+48(FP) - MOVQ CX, ret_Quad+56(FP) + MOVW w(FP), AX + MOVSD p_0+8(FP), X0 + MOVSD p_1+16(FP), X1 + MOVQ q+24(FP), CX + MOVW AX, ret_Word+32(FP) + MOVSD X0, ret_Point_0+40(FP) + MOVSD X1, ret_Point_1+48(FP) + MOVQ CX, ret_Quad+56(FP) RET diff --git a/examples/sha1/sha1.s b/examples/sha1/sha1.s index 55d1abee..4f16ebac 100644 --- a/examples/sha1/sha1.s +++ b/examples/sha1/sha1.s @@ -2,1338 +2,1338 @@ // func block(h *[5]uint32, m []byte) TEXT ·block(SB), $64-32 - MOVQ h(FP), AX - MOVQ m_base+8(FP), CX - MOVL (AX), DX - MOVL 4(AX), BX - MOVL 8(AX), BP - MOVL 12(AX), SI - MOVL 16(AX), DI - MOVL DX, R8 - MOVL BX, R9 - MOVL BP, R10 - MOVL SI, R11 - MOVL DI, R12 - MOVL (CX), R13 - BSWAPL R13 - MOVL R13, (SP) - MOVL R8, R14 - ROLL $0x05, R14 - MOVL R11, R15 - XORL R10, R15 - ANDL R9, R15 - XORL R11, R15 - ADDL R15, R14 - ADDL R12, R14 - ADDL $0x5a827999, R14 - ADDL R13, R14 - ROLL $0x1e, R9 - MOVL 4(CX), R12 - BSWAPL R12 - MOVL R12, 4(SP) - MOVL R14, R13 - ROLL $0x05, R13 - MOVL R10, R15 - XORL R9, R15 - ANDL R8, R15 - XORL R10, R15 - ADDL R15, R13 - ADDL R11, R13 - ADDL $0x5a827999, R13 - ADDL R12, R13 - ROLL $0x1e, R8 - MOVL 8(CX), R11 - BSWAPL R11 - MOVL R11, 8(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R9, R15 - XORL R8, R15 - ANDL R14, R15 - XORL R9, R15 - ADDL R15, R12 - ADDL R10, R12 - ADDL $0x5a827999, R12 - ADDL R11, R12 - ROLL $0x1e, R14 - MOVL 12(CX), R10 - BSWAPL R10 - MOVL R10, 12(SP) - MOVL R12, R11 - ROLL $0x05, R11 - MOVL R8, R15 - XORL R14, R15 - ANDL R13, R15 - XORL R8, R15 - ADDL R15, R11 - ADDL R9, R11 - ADDL $0x5a827999, R11 - ADDL R10, R11 - ROLL $0x1e, R13 - MOVL 16(CX), R9 - BSWAPL R9 - MOVL R9, 16(SP) - MOVL R11, R10 - ROLL $0x05, R10 - MOVL R14, R15 - XORL R13, R15 - ANDL R12, R15 - XORL R14, R15 - ADDL R15, R10 - ADDL R8, R10 - ADDL $0x5a827999, R10 - ADDL R9, R10 - ROLL $0x1e, R12 - MOVL 20(CX), R8 - BSWAPL R8 - MOVL R8, 20(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R13, R15 - XORL R12, R15 - ANDL R11, R15 - XORL R13, R15 - ADDL R15, R9 - ADDL R14, R9 - ADDL $0x5a827999, R9 - ADDL R8, R9 - ROLL $0x1e, R11 - MOVL 24(CX), R8 - BSWAPL R8 - MOVL R8, 24(SP) - MOVL R9, R14 - ROLL $0x05, R14 - MOVL R12, R15 - XORL R11, R15 - ANDL R10, R15 - XORL R12, R15 - ADDL R15, R14 - ADDL R13, R14 - ADDL $0x5a827999, R14 - ADDL R8, R14 - ROLL $0x1e, R10 - MOVL 28(CX), R8 - BSWAPL R8 - MOVL R8, 28(SP) - MOVL R14, R13 - ROLL $0x05, R13 - MOVL R11, R15 - XORL R10, R15 - ANDL R9, R15 - XORL R11, R15 - ADDL R15, R13 - ADDL R12, R13 - ADDL $0x5a827999, R13 - ADDL R8, R13 - ROLL $0x1e, R9 - MOVL 32(CX), R8 - BSWAPL R8 - MOVL R8, 32(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R10, R15 - XORL R9, R15 - ANDL R14, R15 - XORL R10, R15 - ADDL R15, R12 - ADDL R11, R12 - ADDL $0x5a827999, R12 - ADDL R8, R12 - ROLL $0x1e, R14 - MOVL 36(CX), R8 - BSWAPL R8 - MOVL R8, 36(SP) - MOVL R12, R11 - ROLL $0x05, R11 - MOVL R9, R15 - XORL R14, R15 - ANDL R13, R15 - XORL R9, R15 - ADDL R15, R11 - ADDL R10, R11 - ADDL $0x5a827999, R11 - ADDL R8, R11 - ROLL $0x1e, R13 - MOVL 40(CX), R8 - BSWAPL R8 - MOVL R8, 40(SP) - MOVL R11, R10 - ROLL $0x05, R10 - MOVL R14, R15 - XORL R13, R15 - ANDL R12, R15 - XORL R14, R15 - ADDL R15, R10 - ADDL R9, R10 - ADDL $0x5a827999, R10 - ADDL R8, R10 - ROLL $0x1e, R12 - MOVL 44(CX), R8 - BSWAPL R8 - MOVL R8, 44(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R13, R15 - XORL R12, R15 - ANDL R11, R15 - XORL R13, R15 - ADDL R15, R9 - ADDL R14, R9 - ADDL $0x5a827999, R9 - ADDL R8, R9 - ROLL $0x1e, R11 - MOVL 48(CX), R8 - BSWAPL R8 - MOVL R8, 48(SP) - MOVL R9, R14 - ROLL $0x05, R14 - MOVL R12, R15 - XORL R11, R15 - ANDL R10, R15 - XORL R12, R15 - ADDL R15, R14 - ADDL R13, R14 - ADDL $0x5a827999, R14 - ADDL R8, R14 - ROLL $0x1e, R10 - MOVL 52(CX), R8 - BSWAPL R8 - MOVL R8, 52(SP) - MOVL R14, R13 - ROLL $0x05, R13 - MOVL R11, R15 - XORL R10, R15 - ANDL R9, R15 - XORL R11, R15 - ADDL R15, R13 - ADDL R12, R13 - ADDL $0x5a827999, R13 - ADDL R8, R13 - ROLL $0x1e, R9 - MOVL 56(CX), R8 - BSWAPL R8 - MOVL R8, 56(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R10, R15 - XORL R9, R15 - ANDL R14, R15 - XORL R10, R15 - ADDL R15, R12 - ADDL R11, R12 - ADDL $0x5a827999, R12 - ADDL R8, R12 - ROLL $0x1e, R14 - MOVL 60(CX), CX - BSWAPL CX - MOVL CX, 60(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R9, R11 - XORL R14, R11 - ANDL R13, R11 - XORL R9, R11 - ADDL R11, R8 - ADDL R10, R8 - ADDL $0x5a827999, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 52(SP), CX - XORL 32(SP), CX - XORL 8(SP), CX - XORL (SP), CX - ROLL $0x01, CX - MOVL CX, (SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R14, R11 - XORL R13, R11 - ANDL R12, R11 - XORL R14, R11 - ADDL R11, R10 - ADDL R9, R10 - ADDL $0x5a827999, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL 56(SP), CX - XORL 36(SP), CX - XORL 12(SP), CX - XORL 4(SP), CX - ROLL $0x01, CX - MOVL CX, 4(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R13, R11 - XORL R12, R11 - ANDL R8, R11 - XORL R13, R11 - ADDL R11, R9 - ADDL R14, R9 - ADDL $0x5a827999, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 60(SP), CX - XORL 40(SP), CX - XORL 16(SP), CX - XORL 8(SP), CX - ROLL $0x01, CX - MOVL CX, 8(SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R12, R14 - XORL R8, R14 - ANDL R10, R14 - XORL R12, R14 - ADDL R14, R11 - ADDL R13, R11 - ADDL $0x5a827999, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL (SP), CX - XORL 44(SP), CX - XORL 20(SP), CX - XORL 12(SP), CX - ROLL $0x01, CX - MOVL CX, 12(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R8, R14 - XORL R10, R14 - ANDL R9, R14 - XORL R8, R14 - ADDL R14, R13 - ADDL R12, R13 - ADDL $0x5a827999, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - MOVL 4(SP), CX - XORL 48(SP), CX - XORL 24(SP), CX - XORL 16(SP), CX - ROLL $0x01, CX - MOVL CX, 16(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R11, R14 - XORL R9, R14 - XORL R10, R14 - ADDL R14, R12 - ADDL R8, R12 - ADDL $0x6ed9eba1, R12 - ADDL CX, R12 - ROLL $0x1e, R11 - MOVL 8(SP), CX - XORL 52(SP), CX - XORL 28(SP), CX - XORL 20(SP), CX - ROLL $0x01, CX - MOVL CX, 20(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R13, R14 - XORL R11, R14 - XORL R9, R14 - ADDL R14, R8 - ADDL R10, R8 - ADDL $0x6ed9eba1, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 12(SP), CX - XORL 56(SP), CX - XORL 32(SP), CX - XORL 24(SP), CX - ROLL $0x01, CX - MOVL CX, 24(SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R12, R14 - XORL R13, R14 - XORL R11, R14 - ADDL R14, R10 - ADDL R9, R10 - ADDL $0x6ed9eba1, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL 16(SP), CX - XORL 60(SP), CX - XORL 36(SP), CX - XORL 28(SP), CX - ROLL $0x01, CX - MOVL CX, 28(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R8, R14 - XORL R12, R14 - XORL R13, R14 - ADDL R14, R9 - ADDL R11, R9 - ADDL $0x6ed9eba1, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 20(SP), CX - XORL (SP), CX - XORL 40(SP), CX - XORL 32(SP), CX - ROLL $0x01, CX - MOVL CX, 32(SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R10, R14 - XORL R8, R14 - XORL R12, R14 - ADDL R14, R11 - ADDL R13, R11 - ADDL $0x6ed9eba1, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL 24(SP), CX - XORL 4(SP), CX - XORL 44(SP), CX - XORL 36(SP), CX - ROLL $0x01, CX - MOVL CX, 36(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R9, R14 - XORL R10, R14 - XORL R8, R14 - ADDL R14, R13 - ADDL R12, R13 - ADDL $0x6ed9eba1, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - MOVL 28(SP), CX - XORL 8(SP), CX - XORL 48(SP), CX - XORL 40(SP), CX - ROLL $0x01, CX - MOVL CX, 40(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R11, R14 - XORL R9, R14 - XORL R10, R14 - ADDL R14, R12 - ADDL R8, R12 - ADDL $0x6ed9eba1, R12 - ADDL CX, R12 - ROLL $0x1e, R11 - MOVL 32(SP), CX - XORL 12(SP), CX - XORL 52(SP), CX - XORL 44(SP), CX - ROLL $0x01, CX - MOVL CX, 44(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R13, R14 - XORL R11, R14 - XORL R9, R14 - ADDL R14, R8 - ADDL R10, R8 - ADDL $0x6ed9eba1, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 36(SP), CX - XORL 16(SP), CX - XORL 56(SP), CX - XORL 48(SP), CX - ROLL $0x01, CX - MOVL CX, 48(SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R12, R14 - XORL R13, R14 - XORL R11, R14 - ADDL R14, R10 - ADDL R9, R10 - ADDL $0x6ed9eba1, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL 40(SP), CX - XORL 20(SP), CX - XORL 60(SP), CX - XORL 52(SP), CX - ROLL $0x01, CX - MOVL CX, 52(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R8, R14 - XORL R12, R14 - XORL R13, R14 - ADDL R14, R9 - ADDL R11, R9 - ADDL $0x6ed9eba1, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 44(SP), CX - XORL 24(SP), CX - XORL (SP), CX - XORL 56(SP), CX - ROLL $0x01, CX - MOVL CX, 56(SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R10, R14 - XORL R8, R14 - XORL R12, R14 - ADDL R14, R11 - ADDL R13, R11 - ADDL $0x6ed9eba1, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL 48(SP), CX - XORL 28(SP), CX - XORL 4(SP), CX - XORL 60(SP), CX - ROLL $0x01, CX - MOVL CX, 60(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R9, R14 - XORL R10, R14 - XORL R8, R14 - ADDL R14, R13 - ADDL R12, R13 - ADDL $0x6ed9eba1, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - MOVL 52(SP), CX - XORL 32(SP), CX - XORL 8(SP), CX - XORL (SP), CX - ROLL $0x01, CX - MOVL CX, (SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R11, R14 - XORL R9, R14 - XORL R10, R14 - ADDL R14, R12 - ADDL R8, R12 - ADDL $0x6ed9eba1, R12 - ADDL CX, R12 - ROLL $0x1e, R11 - MOVL 56(SP), CX - XORL 36(SP), CX - XORL 12(SP), CX - XORL 4(SP), CX - ROLL $0x01, CX - MOVL CX, 4(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R13, R14 - XORL R11, R14 - XORL R9, R14 - ADDL R14, R8 - ADDL R10, R8 - ADDL $0x6ed9eba1, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 60(SP), CX - XORL 40(SP), CX - XORL 16(SP), CX - XORL 8(SP), CX - ROLL $0x01, CX - MOVL CX, 8(SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R12, R14 - XORL R13, R14 - XORL R11, R14 - ADDL R14, R10 - ADDL R9, R10 - ADDL $0x6ed9eba1, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL (SP), CX - XORL 44(SP), CX - XORL 20(SP), CX - XORL 12(SP), CX - ROLL $0x01, CX - MOVL CX, 12(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R8, R14 - XORL R12, R14 - XORL R13, R14 - ADDL R14, R9 - ADDL R11, R9 - ADDL $0x6ed9eba1, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 4(SP), CX - XORL 48(SP), CX - XORL 24(SP), CX - XORL 16(SP), CX - ROLL $0x01, CX - MOVL CX, 16(SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R10, R14 - XORL R8, R14 - XORL R12, R14 - ADDL R14, R11 - ADDL R13, R11 - ADDL $0x6ed9eba1, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL 8(SP), CX - XORL 52(SP), CX - XORL 28(SP), CX - XORL 20(SP), CX - ROLL $0x01, CX - MOVL CX, 20(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R9, R14 - XORL R10, R14 - XORL R8, R14 - ADDL R14, R13 - ADDL R12, R13 - ADDL $0x6ed9eba1, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - MOVL 12(SP), CX - XORL 56(SP), CX - XORL 32(SP), CX - XORL 24(SP), CX - ROLL $0x01, CX - MOVL CX, 24(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R11, R14 - XORL R9, R14 - XORL R10, R14 - ADDL R14, R12 - ADDL R8, R12 - ADDL $0x6ed9eba1, R12 - ADDL CX, R12 - ROLL $0x1e, R11 - MOVL 16(SP), CX - XORL 60(SP), CX - XORL 36(SP), CX - XORL 28(SP), CX - ROLL $0x01, CX - MOVL CX, 28(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R13, R14 - XORL R11, R14 - XORL R9, R14 - ADDL R14, R8 - ADDL R10, R8 - ADDL $0x6ed9eba1, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 20(SP), CX - XORL (SP), CX - XORL 40(SP), CX - XORL 32(SP), CX - ROLL $0x01, CX - MOVL CX, 32(SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R12, R14 - ORL R13, R14 - ANDL R11, R14 - MOVL R12, R15 - ANDL R13, R15 - ORL R14, R15 - ADDL R15, R10 - ADDL R9, R10 - ADDL $0x8f1bbcdc, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL 24(SP), CX - XORL 4(SP), CX - XORL 44(SP), CX - XORL 36(SP), CX - ROLL $0x01, CX - MOVL CX, 36(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R8, R14 - ORL R12, R14 - ANDL R13, R14 - MOVL R8, R15 - ANDL R12, R15 - ORL R14, R15 - ADDL R15, R9 - ADDL R11, R9 - ADDL $0x8f1bbcdc, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 28(SP), CX - XORL 8(SP), CX - XORL 48(SP), CX - XORL 40(SP), CX - ROLL $0x01, CX - MOVL CX, 40(SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R10, R14 - ORL R8, R14 - ANDL R12, R14 - MOVL R10, R15 - ANDL R8, R15 - ORL R14, R15 - ADDL R15, R11 - ADDL R13, R11 - ADDL $0x8f1bbcdc, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL 32(SP), CX - XORL 12(SP), CX - XORL 52(SP), CX - XORL 44(SP), CX - ROLL $0x01, CX - MOVL CX, 44(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R9, R14 - ORL R10, R14 - ANDL R8, R14 - MOVL R9, R15 - ANDL R10, R15 - ORL R14, R15 - ADDL R15, R13 - ADDL R12, R13 - ADDL $0x8f1bbcdc, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - MOVL 36(SP), CX - XORL 16(SP), CX - XORL 56(SP), CX - XORL 48(SP), CX - ROLL $0x01, CX - MOVL CX, 48(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R11, R14 - ORL R9, R14 - ANDL R10, R14 - MOVL R11, R15 - ANDL R9, R15 - ORL R14, R15 - ADDL R15, R12 - ADDL R8, R12 - ADDL $0x8f1bbcdc, R12 - ADDL CX, R12 - ROLL $0x1e, R11 - MOVL 40(SP), CX - XORL 20(SP), CX - XORL 60(SP), CX - XORL 52(SP), CX - ROLL $0x01, CX - MOVL CX, 52(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R13, R14 - ORL R11, R14 - ANDL R9, R14 - MOVL R13, R15 - ANDL R11, R15 - ORL R14, R15 - ADDL R15, R8 - ADDL R10, R8 - ADDL $0x8f1bbcdc, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 44(SP), CX - XORL 24(SP), CX - XORL (SP), CX - XORL 56(SP), CX - ROLL $0x01, CX - MOVL CX, 56(SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R12, R14 - ORL R13, R14 - ANDL R11, R14 - MOVL R12, R15 - ANDL R13, R15 - ORL R14, R15 - ADDL R15, R10 - ADDL R9, R10 - ADDL $0x8f1bbcdc, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL 48(SP), CX - XORL 28(SP), CX - XORL 4(SP), CX - XORL 60(SP), CX - ROLL $0x01, CX - MOVL CX, 60(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R8, R14 - ORL R12, R14 - ANDL R13, R14 - MOVL R8, R15 - ANDL R12, R15 - ORL R14, R15 - ADDL R15, R9 - ADDL R11, R9 - ADDL $0x8f1bbcdc, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 52(SP), CX - XORL 32(SP), CX - XORL 8(SP), CX - XORL (SP), CX - ROLL $0x01, CX - MOVL CX, (SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R10, R14 - ORL R8, R14 - ANDL R12, R14 - MOVL R10, R15 - ANDL R8, R15 - ORL R14, R15 - ADDL R15, R11 - ADDL R13, R11 - ADDL $0x8f1bbcdc, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL 56(SP), CX - XORL 36(SP), CX - XORL 12(SP), CX - XORL 4(SP), CX - ROLL $0x01, CX - MOVL CX, 4(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R9, R14 - ORL R10, R14 - ANDL R8, R14 - MOVL R9, R15 - ANDL R10, R15 - ORL R14, R15 - ADDL R15, R13 - ADDL R12, R13 - ADDL $0x8f1bbcdc, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - MOVL 60(SP), CX - XORL 40(SP), CX - XORL 16(SP), CX - XORL 8(SP), CX - ROLL $0x01, CX - MOVL CX, 8(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R11, R14 - ORL R9, R14 - ANDL R10, R14 - MOVL R11, R15 - ANDL R9, R15 - ORL R14, R15 - ADDL R15, R12 - ADDL R8, R12 - ADDL $0x8f1bbcdc, R12 - ADDL CX, R12 - ROLL $0x1e, R11 - MOVL (SP), CX - XORL 44(SP), CX - XORL 20(SP), CX - XORL 12(SP), CX - ROLL $0x01, CX - MOVL CX, 12(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R13, R14 - ORL R11, R14 - ANDL R9, R14 - MOVL R13, R15 - ANDL R11, R15 - ORL R14, R15 - ADDL R15, R8 - ADDL R10, R8 - ADDL $0x8f1bbcdc, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 4(SP), CX - XORL 48(SP), CX - XORL 24(SP), CX - XORL 16(SP), CX - ROLL $0x01, CX - MOVL CX, 16(SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R12, R14 - ORL R13, R14 - ANDL R11, R14 - MOVL R12, R15 - ANDL R13, R15 - ORL R14, R15 - ADDL R15, R10 - ADDL R9, R10 - ADDL $0x8f1bbcdc, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL 8(SP), CX - XORL 52(SP), CX - XORL 28(SP), CX - XORL 20(SP), CX - ROLL $0x01, CX - MOVL CX, 20(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R8, R14 - ORL R12, R14 - ANDL R13, R14 - MOVL R8, R15 - ANDL R12, R15 - ORL R14, R15 - ADDL R15, R9 - ADDL R11, R9 - ADDL $0x8f1bbcdc, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 12(SP), CX - XORL 56(SP), CX - XORL 32(SP), CX - XORL 24(SP), CX - ROLL $0x01, CX - MOVL CX, 24(SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R10, R14 - ORL R8, R14 - ANDL R12, R14 - MOVL R10, R15 - ANDL R8, R15 - ORL R14, R15 - ADDL R15, R11 - ADDL R13, R11 - ADDL $0x8f1bbcdc, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL 16(SP), CX - XORL 60(SP), CX - XORL 36(SP), CX - XORL 28(SP), CX - ROLL $0x01, CX - MOVL CX, 28(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R9, R14 - ORL R10, R14 - ANDL R8, R14 - MOVL R9, R15 - ANDL R10, R15 - ORL R14, R15 - ADDL R15, R13 - ADDL R12, R13 - ADDL $0x8f1bbcdc, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - MOVL 20(SP), CX - XORL (SP), CX - XORL 40(SP), CX - XORL 32(SP), CX - ROLL $0x01, CX - MOVL CX, 32(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R11, R14 - ORL R9, R14 - ANDL R10, R14 - MOVL R11, R15 - ANDL R9, R15 - ORL R14, R15 - ADDL R15, R12 - ADDL R8, R12 - ADDL $0x8f1bbcdc, R12 - ADDL CX, R12 - ROLL $0x1e, R11 - MOVL 24(SP), CX - XORL 4(SP), CX - XORL 44(SP), CX - XORL 36(SP), CX - ROLL $0x01, CX - MOVL CX, 36(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R13, R14 - ORL R11, R14 - ANDL R9, R14 - MOVL R13, R15 - ANDL R11, R15 - ORL R14, R15 - ADDL R15, R8 - ADDL R10, R8 - ADDL $0x8f1bbcdc, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 28(SP), CX - XORL 8(SP), CX - XORL 48(SP), CX - XORL 40(SP), CX - ROLL $0x01, CX - MOVL CX, 40(SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R12, R14 - ORL R13, R14 - ANDL R11, R14 - MOVL R12, R15 - ANDL R13, R15 - ORL R14, R15 - ADDL R15, R10 - ADDL R9, R10 - ADDL $0x8f1bbcdc, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL 32(SP), CX - XORL 12(SP), CX - XORL 52(SP), CX - XORL 44(SP), CX - ROLL $0x01, CX - MOVL CX, 44(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R8, R14 - ORL R12, R14 - ANDL R13, R14 - MOVL R8, R15 - ANDL R12, R15 - ORL R14, R15 - ADDL R15, R9 - ADDL R11, R9 - ADDL $0x8f1bbcdc, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 36(SP), CX - XORL 16(SP), CX - XORL 56(SP), CX - XORL 48(SP), CX - ROLL $0x01, CX - MOVL CX, 48(SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R10, R14 - XORL R8, R14 - XORL R12, R14 - ADDL R14, R11 - ADDL R13, R11 - ADDL $0xca62c1d6, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL 40(SP), CX - XORL 20(SP), CX - XORL 60(SP), CX - XORL 52(SP), CX - ROLL $0x01, CX - MOVL CX, 52(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R9, R14 - XORL R10, R14 - XORL R8, R14 - ADDL R14, R13 - ADDL R12, R13 - ADDL $0xca62c1d6, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - MOVL 44(SP), CX - XORL 24(SP), CX - XORL (SP), CX - XORL 56(SP), CX - ROLL $0x01, CX - MOVL CX, 56(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R11, R14 - XORL R9, R14 - XORL R10, R14 - ADDL R14, R12 - ADDL R8, R12 - ADDL $0xca62c1d6, R12 - ADDL CX, R12 - ROLL $0x1e, R11 - MOVL 48(SP), CX - XORL 28(SP), CX - XORL 4(SP), CX - XORL 60(SP), CX - ROLL $0x01, CX - MOVL CX, 60(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R13, R14 - XORL R11, R14 - XORL R9, R14 - ADDL R14, R8 - ADDL R10, R8 - ADDL $0xca62c1d6, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 52(SP), CX - XORL 32(SP), CX - XORL 8(SP), CX - XORL (SP), CX - ROLL $0x01, CX - MOVL CX, (SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R12, R14 - XORL R13, R14 - XORL R11, R14 - ADDL R14, R10 - ADDL R9, R10 - ADDL $0xca62c1d6, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL 56(SP), CX - XORL 36(SP), CX - XORL 12(SP), CX - XORL 4(SP), CX - ROLL $0x01, CX - MOVL CX, 4(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R8, R14 - XORL R12, R14 - XORL R13, R14 - ADDL R14, R9 - ADDL R11, R9 - ADDL $0xca62c1d6, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 60(SP), CX - XORL 40(SP), CX - XORL 16(SP), CX - XORL 8(SP), CX - ROLL $0x01, CX - MOVL CX, 8(SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R10, R14 - XORL R8, R14 - XORL R12, R14 - ADDL R14, R11 - ADDL R13, R11 - ADDL $0xca62c1d6, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL (SP), CX - XORL 44(SP), CX - XORL 20(SP), CX - XORL 12(SP), CX - ROLL $0x01, CX - MOVL CX, 12(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R9, R14 - XORL R10, R14 - XORL R8, R14 - ADDL R14, R13 - ADDL R12, R13 - ADDL $0xca62c1d6, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - MOVL 4(SP), CX - XORL 48(SP), CX - XORL 24(SP), CX - XORL 16(SP), CX - ROLL $0x01, CX - MOVL CX, 16(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R11, R14 - XORL R9, R14 - XORL R10, R14 - ADDL R14, R12 - ADDL R8, R12 - ADDL $0xca62c1d6, R12 - ADDL CX, R12 - ROLL $0x1e, R11 - MOVL 8(SP), CX - XORL 52(SP), CX - XORL 28(SP), CX - XORL 20(SP), CX - ROLL $0x01, CX - MOVL CX, 20(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R13, R14 - XORL R11, R14 - XORL R9, R14 - ADDL R14, R8 - ADDL R10, R8 - ADDL $0xca62c1d6, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 12(SP), CX - XORL 56(SP), CX - XORL 32(SP), CX - XORL 24(SP), CX - ROLL $0x01, CX - MOVL CX, 24(SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R12, R14 - XORL R13, R14 - XORL R11, R14 - ADDL R14, R10 - ADDL R9, R10 - ADDL $0xca62c1d6, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL 16(SP), CX - XORL 60(SP), CX - XORL 36(SP), CX - XORL 28(SP), CX - ROLL $0x01, CX - MOVL CX, 28(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R8, R14 - XORL R12, R14 - XORL R13, R14 - ADDL R14, R9 - ADDL R11, R9 - ADDL $0xca62c1d6, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 20(SP), CX - XORL (SP), CX - XORL 40(SP), CX - XORL 32(SP), CX - ROLL $0x01, CX - MOVL CX, 32(SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R10, R14 - XORL R8, R14 - XORL R12, R14 - ADDL R14, R11 - ADDL R13, R11 - ADDL $0xca62c1d6, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL 24(SP), CX - XORL 4(SP), CX - XORL 44(SP), CX - XORL 36(SP), CX - ROLL $0x01, CX - MOVL CX, 36(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R9, R14 - XORL R10, R14 - XORL R8, R14 - ADDL R14, R13 - ADDL R12, R13 - ADDL $0xca62c1d6, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - MOVL 28(SP), CX - XORL 8(SP), CX - XORL 48(SP), CX - XORL 40(SP), CX - ROLL $0x01, CX - MOVL CX, 40(SP) - MOVL R13, R12 - ROLL $0x05, R12 - MOVL R11, R14 - XORL R9, R14 - XORL R10, R14 - ADDL R14, R12 - ADDL R8, R12 - ADDL $0xca62c1d6, R12 - ADDL CX, R12 - ROLL $0x1e, R11 - MOVL 32(SP), CX - XORL 12(SP), CX - XORL 52(SP), CX - XORL 44(SP), CX - ROLL $0x01, CX - MOVL CX, 44(SP) - MOVL R12, R8 - ROLL $0x05, R8 - MOVL R13, R14 - XORL R11, R14 - XORL R9, R14 - ADDL R14, R8 - ADDL R10, R8 - ADDL $0xca62c1d6, R8 - ADDL CX, R8 - ROLL $0x1e, R13 - MOVL 36(SP), CX - XORL 16(SP), CX - XORL 56(SP), CX - XORL 48(SP), CX - ROLL $0x01, CX - MOVL CX, 48(SP) - MOVL R8, R10 - ROLL $0x05, R10 - MOVL R12, R14 - XORL R13, R14 - XORL R11, R14 - ADDL R14, R10 - ADDL R9, R10 - ADDL $0xca62c1d6, R10 - ADDL CX, R10 - ROLL $0x1e, R12 - MOVL 40(SP), CX - XORL 20(SP), CX - XORL 60(SP), CX - XORL 52(SP), CX - ROLL $0x01, CX - MOVL CX, 52(SP) - MOVL R10, R9 - ROLL $0x05, R9 - MOVL R8, R14 - XORL R12, R14 - XORL R13, R14 - ADDL R14, R9 - ADDL R11, R9 - ADDL $0xca62c1d6, R9 - ADDL CX, R9 - ROLL $0x1e, R8 - MOVL 44(SP), CX - XORL 24(SP), CX - XORL (SP), CX - XORL 56(SP), CX - ROLL $0x01, CX - MOVL CX, 56(SP) - MOVL R9, R11 - ROLL $0x05, R11 - MOVL R10, R14 - XORL R8, R14 - XORL R12, R14 - ADDL R14, R11 - ADDL R13, R11 - ADDL $0xca62c1d6, R11 - ADDL CX, R11 - ROLL $0x1e, R10 - MOVL 48(SP), CX - XORL 28(SP), CX - XORL 4(SP), CX - XORL 60(SP), CX - ROLL $0x01, CX - MOVL CX, 60(SP) - MOVL R11, R13 - ROLL $0x05, R13 - MOVL R9, R14 - XORL R10, R14 - XORL R8, R14 - ADDL R14, R13 - ADDL R12, R13 - ADDL $0xca62c1d6, R13 - ADDL CX, R13 - ROLL $0x1e, R9 - ADDL R13, DX - ADDL R11, BX - ADDL R9, BP - ADDL R10, SI - ADDL R8, DI - MOVL DX, (AX) - MOVL BX, 4(AX) - MOVL BP, 8(AX) - MOVL SI, 12(AX) - MOVL DI, 16(AX) + MOVQ h(FP), AX + MOVQ m_base+8(FP), CX + MOVL (AX), DX + MOVL 4(AX), BX + MOVL 8(AX), BP + MOVL 12(AX), SI + MOVL 16(AX), DI + MOVL DX, R8 + MOVL BX, R9 + MOVL BP, R10 + MOVL SI, R11 + MOVL DI, R12 + MOVL (CX), R13 + BSWAPL R13 + MOVL R13, (SP) + MOVL R8, R14 + ROLL $0x05, R14 + MOVL R11, R15 + XORL R10, R15 + ANDL R9, R15 + XORL R11, R15 + ADDL R15, R14 + ADDL R12, R14 + ADDL $0x5a827999, R14 + ADDL R13, R14 + ROLL $0x1e, R9 + MOVL 4(CX), R12 + BSWAPL R12 + MOVL R12, 4(SP) + MOVL R14, R13 + ROLL $0x05, R13 + MOVL R10, R15 + XORL R9, R15 + ANDL R8, R15 + XORL R10, R15 + ADDL R15, R13 + ADDL R11, R13 + ADDL $0x5a827999, R13 + ADDL R12, R13 + ROLL $0x1e, R8 + MOVL 8(CX), R11 + BSWAPL R11 + MOVL R11, 8(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R9, R15 + XORL R8, R15 + ANDL R14, R15 + XORL R9, R15 + ADDL R15, R12 + ADDL R10, R12 + ADDL $0x5a827999, R12 + ADDL R11, R12 + ROLL $0x1e, R14 + MOVL 12(CX), R10 + BSWAPL R10 + MOVL R10, 12(SP) + MOVL R12, R11 + ROLL $0x05, R11 + MOVL R8, R15 + XORL R14, R15 + ANDL R13, R15 + XORL R8, R15 + ADDL R15, R11 + ADDL R9, R11 + ADDL $0x5a827999, R11 + ADDL R10, R11 + ROLL $0x1e, R13 + MOVL 16(CX), R9 + BSWAPL R9 + MOVL R9, 16(SP) + MOVL R11, R10 + ROLL $0x05, R10 + MOVL R14, R15 + XORL R13, R15 + ANDL R12, R15 + XORL R14, R15 + ADDL R15, R10 + ADDL R8, R10 + ADDL $0x5a827999, R10 + ADDL R9, R10 + ROLL $0x1e, R12 + MOVL 20(CX), R8 + BSWAPL R8 + MOVL R8, 20(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R13, R15 + XORL R12, R15 + ANDL R11, R15 + XORL R13, R15 + ADDL R15, R9 + ADDL R14, R9 + ADDL $0x5a827999, R9 + ADDL R8, R9 + ROLL $0x1e, R11 + MOVL 24(CX), R8 + BSWAPL R8 + MOVL R8, 24(SP) + MOVL R9, R14 + ROLL $0x05, R14 + MOVL R12, R15 + XORL R11, R15 + ANDL R10, R15 + XORL R12, R15 + ADDL R15, R14 + ADDL R13, R14 + ADDL $0x5a827999, R14 + ADDL R8, R14 + ROLL $0x1e, R10 + MOVL 28(CX), R8 + BSWAPL R8 + MOVL R8, 28(SP) + MOVL R14, R13 + ROLL $0x05, R13 + MOVL R11, R15 + XORL R10, R15 + ANDL R9, R15 + XORL R11, R15 + ADDL R15, R13 + ADDL R12, R13 + ADDL $0x5a827999, R13 + ADDL R8, R13 + ROLL $0x1e, R9 + MOVL 32(CX), R8 + BSWAPL R8 + MOVL R8, 32(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R10, R15 + XORL R9, R15 + ANDL R14, R15 + XORL R10, R15 + ADDL R15, R12 + ADDL R11, R12 + ADDL $0x5a827999, R12 + ADDL R8, R12 + ROLL $0x1e, R14 + MOVL 36(CX), R8 + BSWAPL R8 + MOVL R8, 36(SP) + MOVL R12, R11 + ROLL $0x05, R11 + MOVL R9, R15 + XORL R14, R15 + ANDL R13, R15 + XORL R9, R15 + ADDL R15, R11 + ADDL R10, R11 + ADDL $0x5a827999, R11 + ADDL R8, R11 + ROLL $0x1e, R13 + MOVL 40(CX), R8 + BSWAPL R8 + MOVL R8, 40(SP) + MOVL R11, R10 + ROLL $0x05, R10 + MOVL R14, R15 + XORL R13, R15 + ANDL R12, R15 + XORL R14, R15 + ADDL R15, R10 + ADDL R9, R10 + ADDL $0x5a827999, R10 + ADDL R8, R10 + ROLL $0x1e, R12 + MOVL 44(CX), R8 + BSWAPL R8 + MOVL R8, 44(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R13, R15 + XORL R12, R15 + ANDL R11, R15 + XORL R13, R15 + ADDL R15, R9 + ADDL R14, R9 + ADDL $0x5a827999, R9 + ADDL R8, R9 + ROLL $0x1e, R11 + MOVL 48(CX), R8 + BSWAPL R8 + MOVL R8, 48(SP) + MOVL R9, R14 + ROLL $0x05, R14 + MOVL R12, R15 + XORL R11, R15 + ANDL R10, R15 + XORL R12, R15 + ADDL R15, R14 + ADDL R13, R14 + ADDL $0x5a827999, R14 + ADDL R8, R14 + ROLL $0x1e, R10 + MOVL 52(CX), R8 + BSWAPL R8 + MOVL R8, 52(SP) + MOVL R14, R13 + ROLL $0x05, R13 + MOVL R11, R15 + XORL R10, R15 + ANDL R9, R15 + XORL R11, R15 + ADDL R15, R13 + ADDL R12, R13 + ADDL $0x5a827999, R13 + ADDL R8, R13 + ROLL $0x1e, R9 + MOVL 56(CX), R8 + BSWAPL R8 + MOVL R8, 56(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R10, R15 + XORL R9, R15 + ANDL R14, R15 + XORL R10, R15 + ADDL R15, R12 + ADDL R11, R12 + ADDL $0x5a827999, R12 + ADDL R8, R12 + ROLL $0x1e, R14 + MOVL 60(CX), CX + BSWAPL CX + MOVL CX, 60(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R9, R11 + XORL R14, R11 + ANDL R13, R11 + XORL R9, R11 + ADDL R11, R8 + ADDL R10, R8 + ADDL $0x5a827999, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 52(SP), CX + XORL 32(SP), CX + XORL 8(SP), CX + XORL (SP), CX + ROLL $0x01, CX + MOVL CX, (SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R14, R11 + XORL R13, R11 + ANDL R12, R11 + XORL R14, R11 + ADDL R11, R10 + ADDL R9, R10 + ADDL $0x5a827999, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL 56(SP), CX + XORL 36(SP), CX + XORL 12(SP), CX + XORL 4(SP), CX + ROLL $0x01, CX + MOVL CX, 4(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R13, R11 + XORL R12, R11 + ANDL R8, R11 + XORL R13, R11 + ADDL R11, R9 + ADDL R14, R9 + ADDL $0x5a827999, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 60(SP), CX + XORL 40(SP), CX + XORL 16(SP), CX + XORL 8(SP), CX + ROLL $0x01, CX + MOVL CX, 8(SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R12, R14 + XORL R8, R14 + ANDL R10, R14 + XORL R12, R14 + ADDL R14, R11 + ADDL R13, R11 + ADDL $0x5a827999, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL (SP), CX + XORL 44(SP), CX + XORL 20(SP), CX + XORL 12(SP), CX + ROLL $0x01, CX + MOVL CX, 12(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R8, R14 + XORL R10, R14 + ANDL R9, R14 + XORL R8, R14 + ADDL R14, R13 + ADDL R12, R13 + ADDL $0x5a827999, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + MOVL 4(SP), CX + XORL 48(SP), CX + XORL 24(SP), CX + XORL 16(SP), CX + ROLL $0x01, CX + MOVL CX, 16(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R11, R14 + XORL R9, R14 + XORL R10, R14 + ADDL R14, R12 + ADDL R8, R12 + ADDL $0x6ed9eba1, R12 + ADDL CX, R12 + ROLL $0x1e, R11 + MOVL 8(SP), CX + XORL 52(SP), CX + XORL 28(SP), CX + XORL 20(SP), CX + ROLL $0x01, CX + MOVL CX, 20(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R13, R14 + XORL R11, R14 + XORL R9, R14 + ADDL R14, R8 + ADDL R10, R8 + ADDL $0x6ed9eba1, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 12(SP), CX + XORL 56(SP), CX + XORL 32(SP), CX + XORL 24(SP), CX + ROLL $0x01, CX + MOVL CX, 24(SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R12, R14 + XORL R13, R14 + XORL R11, R14 + ADDL R14, R10 + ADDL R9, R10 + ADDL $0x6ed9eba1, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL 16(SP), CX + XORL 60(SP), CX + XORL 36(SP), CX + XORL 28(SP), CX + ROLL $0x01, CX + MOVL CX, 28(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R8, R14 + XORL R12, R14 + XORL R13, R14 + ADDL R14, R9 + ADDL R11, R9 + ADDL $0x6ed9eba1, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 20(SP), CX + XORL (SP), CX + XORL 40(SP), CX + XORL 32(SP), CX + ROLL $0x01, CX + MOVL CX, 32(SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R10, R14 + XORL R8, R14 + XORL R12, R14 + ADDL R14, R11 + ADDL R13, R11 + ADDL $0x6ed9eba1, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL 24(SP), CX + XORL 4(SP), CX + XORL 44(SP), CX + XORL 36(SP), CX + ROLL $0x01, CX + MOVL CX, 36(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R9, R14 + XORL R10, R14 + XORL R8, R14 + ADDL R14, R13 + ADDL R12, R13 + ADDL $0x6ed9eba1, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + MOVL 28(SP), CX + XORL 8(SP), CX + XORL 48(SP), CX + XORL 40(SP), CX + ROLL $0x01, CX + MOVL CX, 40(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R11, R14 + XORL R9, R14 + XORL R10, R14 + ADDL R14, R12 + ADDL R8, R12 + ADDL $0x6ed9eba1, R12 + ADDL CX, R12 + ROLL $0x1e, R11 + MOVL 32(SP), CX + XORL 12(SP), CX + XORL 52(SP), CX + XORL 44(SP), CX + ROLL $0x01, CX + MOVL CX, 44(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R13, R14 + XORL R11, R14 + XORL R9, R14 + ADDL R14, R8 + ADDL R10, R8 + ADDL $0x6ed9eba1, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 36(SP), CX + XORL 16(SP), CX + XORL 56(SP), CX + XORL 48(SP), CX + ROLL $0x01, CX + MOVL CX, 48(SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R12, R14 + XORL R13, R14 + XORL R11, R14 + ADDL R14, R10 + ADDL R9, R10 + ADDL $0x6ed9eba1, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL 40(SP), CX + XORL 20(SP), CX + XORL 60(SP), CX + XORL 52(SP), CX + ROLL $0x01, CX + MOVL CX, 52(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R8, R14 + XORL R12, R14 + XORL R13, R14 + ADDL R14, R9 + ADDL R11, R9 + ADDL $0x6ed9eba1, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 44(SP), CX + XORL 24(SP), CX + XORL (SP), CX + XORL 56(SP), CX + ROLL $0x01, CX + MOVL CX, 56(SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R10, R14 + XORL R8, R14 + XORL R12, R14 + ADDL R14, R11 + ADDL R13, R11 + ADDL $0x6ed9eba1, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL 48(SP), CX + XORL 28(SP), CX + XORL 4(SP), CX + XORL 60(SP), CX + ROLL $0x01, CX + MOVL CX, 60(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R9, R14 + XORL R10, R14 + XORL R8, R14 + ADDL R14, R13 + ADDL R12, R13 + ADDL $0x6ed9eba1, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + MOVL 52(SP), CX + XORL 32(SP), CX + XORL 8(SP), CX + XORL (SP), CX + ROLL $0x01, CX + MOVL CX, (SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R11, R14 + XORL R9, R14 + XORL R10, R14 + ADDL R14, R12 + ADDL R8, R12 + ADDL $0x6ed9eba1, R12 + ADDL CX, R12 + ROLL $0x1e, R11 + MOVL 56(SP), CX + XORL 36(SP), CX + XORL 12(SP), CX + XORL 4(SP), CX + ROLL $0x01, CX + MOVL CX, 4(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R13, R14 + XORL R11, R14 + XORL R9, R14 + ADDL R14, R8 + ADDL R10, R8 + ADDL $0x6ed9eba1, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 60(SP), CX + XORL 40(SP), CX + XORL 16(SP), CX + XORL 8(SP), CX + ROLL $0x01, CX + MOVL CX, 8(SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R12, R14 + XORL R13, R14 + XORL R11, R14 + ADDL R14, R10 + ADDL R9, R10 + ADDL $0x6ed9eba1, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL (SP), CX + XORL 44(SP), CX + XORL 20(SP), CX + XORL 12(SP), CX + ROLL $0x01, CX + MOVL CX, 12(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R8, R14 + XORL R12, R14 + XORL R13, R14 + ADDL R14, R9 + ADDL R11, R9 + ADDL $0x6ed9eba1, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 4(SP), CX + XORL 48(SP), CX + XORL 24(SP), CX + XORL 16(SP), CX + ROLL $0x01, CX + MOVL CX, 16(SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R10, R14 + XORL R8, R14 + XORL R12, R14 + ADDL R14, R11 + ADDL R13, R11 + ADDL $0x6ed9eba1, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL 8(SP), CX + XORL 52(SP), CX + XORL 28(SP), CX + XORL 20(SP), CX + ROLL $0x01, CX + MOVL CX, 20(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R9, R14 + XORL R10, R14 + XORL R8, R14 + ADDL R14, R13 + ADDL R12, R13 + ADDL $0x6ed9eba1, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + MOVL 12(SP), CX + XORL 56(SP), CX + XORL 32(SP), CX + XORL 24(SP), CX + ROLL $0x01, CX + MOVL CX, 24(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R11, R14 + XORL R9, R14 + XORL R10, R14 + ADDL R14, R12 + ADDL R8, R12 + ADDL $0x6ed9eba1, R12 + ADDL CX, R12 + ROLL $0x1e, R11 + MOVL 16(SP), CX + XORL 60(SP), CX + XORL 36(SP), CX + XORL 28(SP), CX + ROLL $0x01, CX + MOVL CX, 28(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R13, R14 + XORL R11, R14 + XORL R9, R14 + ADDL R14, R8 + ADDL R10, R8 + ADDL $0x6ed9eba1, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 20(SP), CX + XORL (SP), CX + XORL 40(SP), CX + XORL 32(SP), CX + ROLL $0x01, CX + MOVL CX, 32(SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R12, R14 + ORL R13, R14 + ANDL R11, R14 + MOVL R12, R15 + ANDL R13, R15 + ORL R14, R15 + ADDL R15, R10 + ADDL R9, R10 + ADDL $0x8f1bbcdc, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL 24(SP), CX + XORL 4(SP), CX + XORL 44(SP), CX + XORL 36(SP), CX + ROLL $0x01, CX + MOVL CX, 36(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R8, R14 + ORL R12, R14 + ANDL R13, R14 + MOVL R8, R15 + ANDL R12, R15 + ORL R14, R15 + ADDL R15, R9 + ADDL R11, R9 + ADDL $0x8f1bbcdc, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 28(SP), CX + XORL 8(SP), CX + XORL 48(SP), CX + XORL 40(SP), CX + ROLL $0x01, CX + MOVL CX, 40(SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R10, R14 + ORL R8, R14 + ANDL R12, R14 + MOVL R10, R15 + ANDL R8, R15 + ORL R14, R15 + ADDL R15, R11 + ADDL R13, R11 + ADDL $0x8f1bbcdc, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL 32(SP), CX + XORL 12(SP), CX + XORL 52(SP), CX + XORL 44(SP), CX + ROLL $0x01, CX + MOVL CX, 44(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R9, R14 + ORL R10, R14 + ANDL R8, R14 + MOVL R9, R15 + ANDL R10, R15 + ORL R14, R15 + ADDL R15, R13 + ADDL R12, R13 + ADDL $0x8f1bbcdc, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + MOVL 36(SP), CX + XORL 16(SP), CX + XORL 56(SP), CX + XORL 48(SP), CX + ROLL $0x01, CX + MOVL CX, 48(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R11, R14 + ORL R9, R14 + ANDL R10, R14 + MOVL R11, R15 + ANDL R9, R15 + ORL R14, R15 + ADDL R15, R12 + ADDL R8, R12 + ADDL $0x8f1bbcdc, R12 + ADDL CX, R12 + ROLL $0x1e, R11 + MOVL 40(SP), CX + XORL 20(SP), CX + XORL 60(SP), CX + XORL 52(SP), CX + ROLL $0x01, CX + MOVL CX, 52(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R13, R14 + ORL R11, R14 + ANDL R9, R14 + MOVL R13, R15 + ANDL R11, R15 + ORL R14, R15 + ADDL R15, R8 + ADDL R10, R8 + ADDL $0x8f1bbcdc, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 44(SP), CX + XORL 24(SP), CX + XORL (SP), CX + XORL 56(SP), CX + ROLL $0x01, CX + MOVL CX, 56(SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R12, R14 + ORL R13, R14 + ANDL R11, R14 + MOVL R12, R15 + ANDL R13, R15 + ORL R14, R15 + ADDL R15, R10 + ADDL R9, R10 + ADDL $0x8f1bbcdc, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL 48(SP), CX + XORL 28(SP), CX + XORL 4(SP), CX + XORL 60(SP), CX + ROLL $0x01, CX + MOVL CX, 60(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R8, R14 + ORL R12, R14 + ANDL R13, R14 + MOVL R8, R15 + ANDL R12, R15 + ORL R14, R15 + ADDL R15, R9 + ADDL R11, R9 + ADDL $0x8f1bbcdc, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 52(SP), CX + XORL 32(SP), CX + XORL 8(SP), CX + XORL (SP), CX + ROLL $0x01, CX + MOVL CX, (SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R10, R14 + ORL R8, R14 + ANDL R12, R14 + MOVL R10, R15 + ANDL R8, R15 + ORL R14, R15 + ADDL R15, R11 + ADDL R13, R11 + ADDL $0x8f1bbcdc, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL 56(SP), CX + XORL 36(SP), CX + XORL 12(SP), CX + XORL 4(SP), CX + ROLL $0x01, CX + MOVL CX, 4(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R9, R14 + ORL R10, R14 + ANDL R8, R14 + MOVL R9, R15 + ANDL R10, R15 + ORL R14, R15 + ADDL R15, R13 + ADDL R12, R13 + ADDL $0x8f1bbcdc, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + MOVL 60(SP), CX + XORL 40(SP), CX + XORL 16(SP), CX + XORL 8(SP), CX + ROLL $0x01, CX + MOVL CX, 8(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R11, R14 + ORL R9, R14 + ANDL R10, R14 + MOVL R11, R15 + ANDL R9, R15 + ORL R14, R15 + ADDL R15, R12 + ADDL R8, R12 + ADDL $0x8f1bbcdc, R12 + ADDL CX, R12 + ROLL $0x1e, R11 + MOVL (SP), CX + XORL 44(SP), CX + XORL 20(SP), CX + XORL 12(SP), CX + ROLL $0x01, CX + MOVL CX, 12(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R13, R14 + ORL R11, R14 + ANDL R9, R14 + MOVL R13, R15 + ANDL R11, R15 + ORL R14, R15 + ADDL R15, R8 + ADDL R10, R8 + ADDL $0x8f1bbcdc, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 4(SP), CX + XORL 48(SP), CX + XORL 24(SP), CX + XORL 16(SP), CX + ROLL $0x01, CX + MOVL CX, 16(SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R12, R14 + ORL R13, R14 + ANDL R11, R14 + MOVL R12, R15 + ANDL R13, R15 + ORL R14, R15 + ADDL R15, R10 + ADDL R9, R10 + ADDL $0x8f1bbcdc, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL 8(SP), CX + XORL 52(SP), CX + XORL 28(SP), CX + XORL 20(SP), CX + ROLL $0x01, CX + MOVL CX, 20(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R8, R14 + ORL R12, R14 + ANDL R13, R14 + MOVL R8, R15 + ANDL R12, R15 + ORL R14, R15 + ADDL R15, R9 + ADDL R11, R9 + ADDL $0x8f1bbcdc, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 12(SP), CX + XORL 56(SP), CX + XORL 32(SP), CX + XORL 24(SP), CX + ROLL $0x01, CX + MOVL CX, 24(SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R10, R14 + ORL R8, R14 + ANDL R12, R14 + MOVL R10, R15 + ANDL R8, R15 + ORL R14, R15 + ADDL R15, R11 + ADDL R13, R11 + ADDL $0x8f1bbcdc, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL 16(SP), CX + XORL 60(SP), CX + XORL 36(SP), CX + XORL 28(SP), CX + ROLL $0x01, CX + MOVL CX, 28(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R9, R14 + ORL R10, R14 + ANDL R8, R14 + MOVL R9, R15 + ANDL R10, R15 + ORL R14, R15 + ADDL R15, R13 + ADDL R12, R13 + ADDL $0x8f1bbcdc, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + MOVL 20(SP), CX + XORL (SP), CX + XORL 40(SP), CX + XORL 32(SP), CX + ROLL $0x01, CX + MOVL CX, 32(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R11, R14 + ORL R9, R14 + ANDL R10, R14 + MOVL R11, R15 + ANDL R9, R15 + ORL R14, R15 + ADDL R15, R12 + ADDL R8, R12 + ADDL $0x8f1bbcdc, R12 + ADDL CX, R12 + ROLL $0x1e, R11 + MOVL 24(SP), CX + XORL 4(SP), CX + XORL 44(SP), CX + XORL 36(SP), CX + ROLL $0x01, CX + MOVL CX, 36(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R13, R14 + ORL R11, R14 + ANDL R9, R14 + MOVL R13, R15 + ANDL R11, R15 + ORL R14, R15 + ADDL R15, R8 + ADDL R10, R8 + ADDL $0x8f1bbcdc, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 28(SP), CX + XORL 8(SP), CX + XORL 48(SP), CX + XORL 40(SP), CX + ROLL $0x01, CX + MOVL CX, 40(SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R12, R14 + ORL R13, R14 + ANDL R11, R14 + MOVL R12, R15 + ANDL R13, R15 + ORL R14, R15 + ADDL R15, R10 + ADDL R9, R10 + ADDL $0x8f1bbcdc, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL 32(SP), CX + XORL 12(SP), CX + XORL 52(SP), CX + XORL 44(SP), CX + ROLL $0x01, CX + MOVL CX, 44(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R8, R14 + ORL R12, R14 + ANDL R13, R14 + MOVL R8, R15 + ANDL R12, R15 + ORL R14, R15 + ADDL R15, R9 + ADDL R11, R9 + ADDL $0x8f1bbcdc, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 36(SP), CX + XORL 16(SP), CX + XORL 56(SP), CX + XORL 48(SP), CX + ROLL $0x01, CX + MOVL CX, 48(SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R10, R14 + XORL R8, R14 + XORL R12, R14 + ADDL R14, R11 + ADDL R13, R11 + ADDL $0xca62c1d6, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL 40(SP), CX + XORL 20(SP), CX + XORL 60(SP), CX + XORL 52(SP), CX + ROLL $0x01, CX + MOVL CX, 52(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R9, R14 + XORL R10, R14 + XORL R8, R14 + ADDL R14, R13 + ADDL R12, R13 + ADDL $0xca62c1d6, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + MOVL 44(SP), CX + XORL 24(SP), CX + XORL (SP), CX + XORL 56(SP), CX + ROLL $0x01, CX + MOVL CX, 56(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R11, R14 + XORL R9, R14 + XORL R10, R14 + ADDL R14, R12 + ADDL R8, R12 + ADDL $0xca62c1d6, R12 + ADDL CX, R12 + ROLL $0x1e, R11 + MOVL 48(SP), CX + XORL 28(SP), CX + XORL 4(SP), CX + XORL 60(SP), CX + ROLL $0x01, CX + MOVL CX, 60(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R13, R14 + XORL R11, R14 + XORL R9, R14 + ADDL R14, R8 + ADDL R10, R8 + ADDL $0xca62c1d6, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 52(SP), CX + XORL 32(SP), CX + XORL 8(SP), CX + XORL (SP), CX + ROLL $0x01, CX + MOVL CX, (SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R12, R14 + XORL R13, R14 + XORL R11, R14 + ADDL R14, R10 + ADDL R9, R10 + ADDL $0xca62c1d6, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL 56(SP), CX + XORL 36(SP), CX + XORL 12(SP), CX + XORL 4(SP), CX + ROLL $0x01, CX + MOVL CX, 4(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R8, R14 + XORL R12, R14 + XORL R13, R14 + ADDL R14, R9 + ADDL R11, R9 + ADDL $0xca62c1d6, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 60(SP), CX + XORL 40(SP), CX + XORL 16(SP), CX + XORL 8(SP), CX + ROLL $0x01, CX + MOVL CX, 8(SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R10, R14 + XORL R8, R14 + XORL R12, R14 + ADDL R14, R11 + ADDL R13, R11 + ADDL $0xca62c1d6, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL (SP), CX + XORL 44(SP), CX + XORL 20(SP), CX + XORL 12(SP), CX + ROLL $0x01, CX + MOVL CX, 12(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R9, R14 + XORL R10, R14 + XORL R8, R14 + ADDL R14, R13 + ADDL R12, R13 + ADDL $0xca62c1d6, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + MOVL 4(SP), CX + XORL 48(SP), CX + XORL 24(SP), CX + XORL 16(SP), CX + ROLL $0x01, CX + MOVL CX, 16(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R11, R14 + XORL R9, R14 + XORL R10, R14 + ADDL R14, R12 + ADDL R8, R12 + ADDL $0xca62c1d6, R12 + ADDL CX, R12 + ROLL $0x1e, R11 + MOVL 8(SP), CX + XORL 52(SP), CX + XORL 28(SP), CX + XORL 20(SP), CX + ROLL $0x01, CX + MOVL CX, 20(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R13, R14 + XORL R11, R14 + XORL R9, R14 + ADDL R14, R8 + ADDL R10, R8 + ADDL $0xca62c1d6, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 12(SP), CX + XORL 56(SP), CX + XORL 32(SP), CX + XORL 24(SP), CX + ROLL $0x01, CX + MOVL CX, 24(SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R12, R14 + XORL R13, R14 + XORL R11, R14 + ADDL R14, R10 + ADDL R9, R10 + ADDL $0xca62c1d6, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL 16(SP), CX + XORL 60(SP), CX + XORL 36(SP), CX + XORL 28(SP), CX + ROLL $0x01, CX + MOVL CX, 28(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R8, R14 + XORL R12, R14 + XORL R13, R14 + ADDL R14, R9 + ADDL R11, R9 + ADDL $0xca62c1d6, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 20(SP), CX + XORL (SP), CX + XORL 40(SP), CX + XORL 32(SP), CX + ROLL $0x01, CX + MOVL CX, 32(SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R10, R14 + XORL R8, R14 + XORL R12, R14 + ADDL R14, R11 + ADDL R13, R11 + ADDL $0xca62c1d6, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL 24(SP), CX + XORL 4(SP), CX + XORL 44(SP), CX + XORL 36(SP), CX + ROLL $0x01, CX + MOVL CX, 36(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R9, R14 + XORL R10, R14 + XORL R8, R14 + ADDL R14, R13 + ADDL R12, R13 + ADDL $0xca62c1d6, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + MOVL 28(SP), CX + XORL 8(SP), CX + XORL 48(SP), CX + XORL 40(SP), CX + ROLL $0x01, CX + MOVL CX, 40(SP) + MOVL R13, R12 + ROLL $0x05, R12 + MOVL R11, R14 + XORL R9, R14 + XORL R10, R14 + ADDL R14, R12 + ADDL R8, R12 + ADDL $0xca62c1d6, R12 + ADDL CX, R12 + ROLL $0x1e, R11 + MOVL 32(SP), CX + XORL 12(SP), CX + XORL 52(SP), CX + XORL 44(SP), CX + ROLL $0x01, CX + MOVL CX, 44(SP) + MOVL R12, R8 + ROLL $0x05, R8 + MOVL R13, R14 + XORL R11, R14 + XORL R9, R14 + ADDL R14, R8 + ADDL R10, R8 + ADDL $0xca62c1d6, R8 + ADDL CX, R8 + ROLL $0x1e, R13 + MOVL 36(SP), CX + XORL 16(SP), CX + XORL 56(SP), CX + XORL 48(SP), CX + ROLL $0x01, CX + MOVL CX, 48(SP) + MOVL R8, R10 + ROLL $0x05, R10 + MOVL R12, R14 + XORL R13, R14 + XORL R11, R14 + ADDL R14, R10 + ADDL R9, R10 + ADDL $0xca62c1d6, R10 + ADDL CX, R10 + ROLL $0x1e, R12 + MOVL 40(SP), CX + XORL 20(SP), CX + XORL 60(SP), CX + XORL 52(SP), CX + ROLL $0x01, CX + MOVL CX, 52(SP) + MOVL R10, R9 + ROLL $0x05, R9 + MOVL R8, R14 + XORL R12, R14 + XORL R13, R14 + ADDL R14, R9 + ADDL R11, R9 + ADDL $0xca62c1d6, R9 + ADDL CX, R9 + ROLL $0x1e, R8 + MOVL 44(SP), CX + XORL 24(SP), CX + XORL (SP), CX + XORL 56(SP), CX + ROLL $0x01, CX + MOVL CX, 56(SP) + MOVL R9, R11 + ROLL $0x05, R11 + MOVL R10, R14 + XORL R8, R14 + XORL R12, R14 + ADDL R14, R11 + ADDL R13, R11 + ADDL $0xca62c1d6, R11 + ADDL CX, R11 + ROLL $0x1e, R10 + MOVL 48(SP), CX + XORL 28(SP), CX + XORL 4(SP), CX + XORL 60(SP), CX + ROLL $0x01, CX + MOVL CX, 60(SP) + MOVL R11, R13 + ROLL $0x05, R13 + MOVL R9, R14 + XORL R10, R14 + XORL R8, R14 + ADDL R14, R13 + ADDL R12, R13 + ADDL $0xca62c1d6, R13 + ADDL CX, R13 + ROLL $0x1e, R9 + ADDL R13, DX + ADDL R11, BX + ADDL R9, BP + ADDL R10, SI + ADDL R8, DI + MOVL DX, (AX) + MOVL BX, 4(AX) + MOVL BP, 8(AX) + MOVL SI, 12(AX) + MOVL DI, 16(AX) RET diff --git a/examples/stadtx/stadtx.s b/examples/stadtx/stadtx.s index 80ee9e7a..c8b542a4 100644 --- a/examples/stadtx/stadtx.s +++ b/examples/stadtx/stadtx.s @@ -4,307 +4,335 @@ // func Hash(state *State, key []byte) uint64 TEXT ·Hash(SB), NOSPLIT, $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 $0x00000001, SI - MOVQ $0xb89b0f8e1655514f, DI - IMULQ DI, SI - XORQ SI, BX - MOVQ DX, SI - ADDQ $0x00000002, SI - MOVQ $0x8c6f736011bd5127, DI - IMULQ DI, SI - XORQ SI, BP - CMPQ DX, $0x00000020 - JGE coreLong - MOVQ DX, SI - SHRQ $0x03, SI - CMPQ SI, $0x00000000 - JE shortCore0 - CMPQ SI, $0x00000001 - JE shortCore1 - CMPQ SI, $0x00000002 - JE shortCore2 - CMPQ SI, $0x00000003 - JE shortCore3 + 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 $0x00000001, SI + MOVQ $0xb89b0f8e1655514f, DI + IMULQ DI, SI + XORQ SI, BX + MOVQ DX, SI + ADDQ $0x00000002, SI + MOVQ $0x8c6f736011bd5127, DI + IMULQ DI, SI + XORQ SI, BP + CMPQ DX, $0x00000020 + JGE coreLong + MOVQ DX, SI + SHRQ $0x03, SI + CMPQ SI, $0x00000000 + JE shortCore0 + CMPQ SI, $0x00000001 + JE shortCore1 + CMPQ SI, $0x00000002 + JE shortCore2 + CMPQ SI, $0x00000003 + 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 $0x00000008, CX - SUBQ $0x00000008, DX + 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 $0x00000008, CX + SUBQ $0x00000008, 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 $0x00000008, CX - SUBQ $0x00000008, DX + 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 $0x00000008, CX + SUBQ $0x00000008, 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 $0x00000008, CX - SUBQ $0x00000008, DX + 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 $0x00000008, CX + SUBQ $0x00000008, DX + shortCore0: - CMPQ DX, $0x00000000 - JE shortTail0 - CMPQ DX, $0x00000001 - JE shortTail1 - CMPQ DX, $0x00000002 - JE shortTail2 - CMPQ DX, $0x00000003 - JE shortTail3 - CMPQ DX, $0x00000004 - JE shortTail4 - CMPQ DX, $0x00000005 - JE shortTail5 - CMPQ DX, $0x00000006 - JE shortTail6 - CMPQ DX, $0x00000007 - JE shortTail7 + CMPQ DX, $0x00000000 + JE shortTail0 + CMPQ DX, $0x00000001 + JE shortTail1 + CMPQ DX, $0x00000002 + JE shortTail2 + CMPQ DX, $0x00000003 + JE shortTail3 + CMPQ DX, $0x00000004 + JE shortTail4 + CMPQ DX, $0x00000005 + JE shortTail5 + CMPQ DX, $0x00000006 + JE shortTail6 + CMPQ DX, $0x00000007 + JE shortTail7 + shortTail7: - MOVBQZX 6(CX), SI - SHLQ $0x20, SI - ADDQ SI, BX + MOVBQZX 6(CX), SI + SHLQ $0x20, SI + ADDQ SI, BX + shortTail6: - MOVBQZX 5(CX), SI - SHLQ $0x30, SI - ADDQ SI, BP + MOVBQZX 5(CX), SI + SHLQ $0x30, SI + ADDQ SI, BP + shortTail5: - MOVBQZX 4(CX), SI - SHLQ $0x10, SI - ADDQ SI, BX + MOVBQZX 4(CX), SI + SHLQ $0x10, SI + ADDQ SI, BX + shortTail4: - MOVLQZX (CX), SI - ADDQ SI, BP - JMP shortAfter + MOVLQZX (CX), SI + ADDQ SI, BP + JMP shortAfter + shortTail3: - MOVBQZX 2(CX), SI - SHLQ $0x30, SI - ADDQ SI, BX + MOVBQZX 2(CX), SI + SHLQ $0x30, SI + ADDQ SI, BX + shortTail2: - MOVWQZX (CX), SI - ADDQ SI, BP - JMP shortAfter + MOVWQZX (CX), SI + ADDQ SI, BP + JMP shortAfter + shortTail1: - MOVBQZX (CX), SI - ADDQ SI, BX + MOVBQZX (CX), SI + ADDQ SI, BX + shortTail0: - RORQ $0x20, BP - XORQ $0x000000ff, BP + RORQ $0x20, BP + XORQ $0x000000ff, 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 $0x0d, 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 $0x0f, BP - ADDQ BX, BP - ROLQ $0x0f, BX - XORQ BP, BX - RORQ $0x05, BP - XORQ BP, BX - MOVQ BX, ret+32(FP) + 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 $0x0d, 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 $0x0f, BP + ADDQ BX, BP + ROLQ $0x0f, BX + XORQ BP, BX + RORQ $0x05, BP + XORQ BP, BX + MOVQ BX, ret+32(FP) RET + coreLong: - MOVQ 16(AX), DI - MOVQ 24(AX), AX - MOVQ DX, SI - ADDQ $0x00000003, SI - MOVQ $0x8f29bd94edce7b39, R8 - IMULQ R8, SI - XORQ SI, DI - MOVQ DX, SI - ADDQ $0x00000004, SI - MOVQ $0x9c1b8e1e9628323f, R8 - IMULQ R8, SI - XORQ SI, AX + MOVQ 16(AX), DI + MOVQ 24(AX), AX + MOVQ DX, SI + ADDQ $0x00000003, SI + MOVQ $0x8f29bd94edce7b39, R8 + IMULQ R8, SI + XORQ SI, DI + MOVQ DX, SI + ADDQ $0x00000004, SI + MOVQ $0x9c1b8e1e9628323f, R8 + IMULQ R8, SI + XORQ SI, AX + block: - MOVQ (CX), SI - MOVQ $0x00000000802910e3, R8 - IMULQ R8, SI - ADDQ SI, BX - ROLQ $0x39, BX - XORQ AX, BX - MOVQ 8(CX), SI - MOVQ $0x00000000819b13af, R8 - IMULQ R8, SI - ADDQ SI, BP - ROLQ $0x3f, BP - XORQ DI, BP - MOVQ 16(CX), SI - MOVQ $0x0000000091cb27e5, R8 - IMULQ R8, SI - ADDQ SI, DI - RORQ $0x2f, DI - ADDQ BX, DI - MOVQ 24(CX), SI - MOVQ $0x00000000c1a269c1, R8 - IMULQ R8, SI - ADDQ SI, AX - RORQ $0x0b, AX - SUBQ BP, AX - ADDQ $0x00000020, CX - SUBQ $0x00000020, DX - CMPQ DX, $0x00000020 - JGE block - MOVQ DX, R8 - MOVQ DX, SI - SHRQ $0x03, SI - CMPQ SI, $0x00000000 - JE longCore0 - CMPQ SI, $0x00000001 - JE longCore1 - CMPQ SI, $0x00000002 - JE longCore2 - CMPQ SI, $0x00000003 - JE longCore3 + MOVQ (CX), SI + MOVQ $0x00000000802910e3, R8 + IMULQ R8, SI + ADDQ SI, BX + ROLQ $0x39, BX + XORQ AX, BX + MOVQ 8(CX), SI + MOVQ $0x00000000819b13af, R8 + IMULQ R8, SI + ADDQ SI, BP + ROLQ $0x3f, BP + XORQ DI, BP + MOVQ 16(CX), SI + MOVQ $0x0000000091cb27e5, R8 + IMULQ R8, SI + ADDQ SI, DI + RORQ $0x2f, DI + ADDQ BX, DI + MOVQ 24(CX), SI + MOVQ $0x00000000c1a269c1, R8 + IMULQ R8, SI + ADDQ SI, AX + RORQ $0x0b, AX + SUBQ BP, AX + ADDQ $0x00000020, CX + SUBQ $0x00000020, DX + CMPQ DX, $0x00000020 + JGE block + MOVQ DX, R8 + MOVQ DX, SI + SHRQ $0x03, SI + CMPQ SI, $0x00000000 + JE longCore0 + CMPQ SI, $0x00000001 + JE longCore1 + CMPQ SI, $0x00000002 + JE longCore2 + CMPQ SI, $0x00000003 + JE longCore3 + longCore3: - MOVQ (CX), SI - MOVQ $0x00000000802910e3, R9 - IMULQ R9, SI - ADDQ SI, BX - ROLQ $0x39, BX - XORQ AX, BX - ADDQ $0x00000008, CX - SUBQ $0x00000008, DX + MOVQ (CX), SI + MOVQ $0x00000000802910e3, R9 + IMULQ R9, SI + ADDQ SI, BX + ROLQ $0x39, BX + XORQ AX, BX + ADDQ $0x00000008, CX + SUBQ $0x00000008, DX + longCore2: - MOVQ (CX), SI - MOVQ $0x00000000819b13af, R9 - IMULQ R9, SI - ADDQ SI, BP - ROLQ $0x3f, BP - XORQ DI, BP - ADDQ $0x00000008, CX - SUBQ $0x00000008, DX + MOVQ (CX), SI + MOVQ $0x00000000819b13af, R9 + IMULQ R9, SI + ADDQ SI, BP + ROLQ $0x3f, BP + XORQ DI, BP + ADDQ $0x00000008, CX + SUBQ $0x00000008, DX + longCore1: - MOVQ (CX), SI - MOVQ $0x0000000091cb27e5, R9 - IMULQ R9, SI - ADDQ SI, DI - RORQ $0x2f, DI - ADDQ BX, DI - ADDQ $0x00000008, CX - SUBQ $0x00000008, DX + MOVQ (CX), SI + MOVQ $0x0000000091cb27e5, R9 + IMULQ R9, SI + ADDQ SI, DI + RORQ $0x2f, DI + ADDQ BX, DI + ADDQ $0x00000008, CX + SUBQ $0x00000008, DX + longCore0: - RORQ $0x0b, AX - SUBQ BP, AX - ADDQ $0x00000001, R8 - MOVQ $0x9c1b8e1e9628323f, SI - IMULQ SI, R8 - XORQ R8, BX - CMPQ DX, $0x00000000 - JE longTail0 - CMPQ DX, $0x00000001 - JE longTail1 - CMPQ DX, $0x00000002 - JE longTail2 - CMPQ DX, $0x00000003 - JE longTail3 - CMPQ DX, $0x00000004 - JE longTail4 - CMPQ DX, $0x00000005 - JE longTail5 - CMPQ DX, $0x00000006 - JE longTail6 - CMPQ DX, $0x00000007 - JE longTail7 + RORQ $0x0b, AX + SUBQ BP, AX + ADDQ $0x00000001, R8 + MOVQ $0x9c1b8e1e9628323f, SI + IMULQ SI, R8 + XORQ R8, BX + CMPQ DX, $0x00000000 + JE longTail0 + CMPQ DX, $0x00000001 + JE longTail1 + CMPQ DX, $0x00000002 + JE longTail2 + CMPQ DX, $0x00000003 + JE longTail3 + CMPQ DX, $0x00000004 + JE longTail4 + CMPQ DX, $0x00000005 + JE longTail5 + CMPQ DX, $0x00000006 + JE longTail6 + CMPQ DX, $0x00000007 + JE longTail7 + longTail7: - MOVBQZX 6(CX), SI - ADDQ SI, BP + MOVBQZX 6(CX), SI + ADDQ SI, BP + longTail6: - MOVWQZX 4(CX), SI - ADDQ SI, DI - MOVLQZX (CX), SI - ADDQ SI, AX - JMP longAfter + MOVWQZX 4(CX), SI + ADDQ SI, DI + MOVLQZX (CX), SI + ADDQ SI, AX + JMP longAfter + longTail5: - MOVBQZX 4(CX), SI - ADDQ SI, BP + MOVBQZX 4(CX), SI + ADDQ SI, BP + longTail4: - MOVLQZX (CX), SI - ADDQ SI, DI - JMP longAfter + MOVLQZX (CX), SI + ADDQ SI, DI + JMP longAfter + longTail3: - MOVBQZX 2(CX), SI - ADDQ SI, AX + MOVBQZX 2(CX), SI + ADDQ SI, AX + longTail2: - MOVWQZX (CX), SI - ADDQ SI, BP - JMP longAfter + MOVWQZX (CX), SI + ADDQ SI, BP + JMP longAfter + longTail1: - MOVBQZX (CX), SI - ADDQ SI, DI + MOVBQZX (CX), SI + ADDQ SI, DI + longTail0: - ROLQ $0x20, AX - XORQ $0x000000ff, AX + ROLQ $0x20, AX + XORQ $0x000000ff, 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 $0x03, BX - SUBQ BX, AX - RORQ $0x2b, DI - SUBQ AX, DI - ROLQ $0x37, DI - XORQ BX, DI - SUBQ DI, BP - RORQ $0x07, 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 $0x09, BP - XORQ BP, DI - ROLQ $0x18, DI - XORQ DI, AX - RORQ $0x3b, AX - RORQ $0x01, BX - SUBQ BP, BX - XORQ BP, BX - XORQ AX, DI - XORQ DI, BX - MOVQ BX, ret+32(FP) + 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 $0x03, BX + SUBQ BX, AX + RORQ $0x2b, DI + SUBQ AX, DI + ROLQ $0x37, DI + XORQ BX, DI + SUBQ DI, BP + RORQ $0x07, 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 $0x09, BP + XORQ BP, DI + ROLQ $0x18, DI + XORQ DI, AX + RORQ $0x3b, AX + RORQ $0x01, BX + SUBQ BP, BX + XORQ BP, BX + XORQ AX, DI + XORQ DI, BX + MOVQ BX, ret+32(FP) RET diff --git a/examples/sum/sum.s b/examples/sum/sum.s index 339231a5..35928d79 100644 --- a/examples/sum/sum.s +++ b/examples/sum/sum.s @@ -4,16 +4,18 @@ // func Sum(xs []uint64) uint64 TEXT ·Sum(SB), NOSPLIT, $0-32 - MOVQ xs_base(FP), AX - MOVQ xs_len+8(FP), CX - XORQ DX, DX + MOVQ xs_base(FP), AX + MOVQ xs_len+8(FP), CX + XORQ DX, DX + loop: - CMPQ CX, $0x00 - JE done - ADDQ (AX), DX - ADDQ $0x08, AX - DECQ CX - JMP loop + CMPQ CX, $0x00 + JE done + ADDQ (AX), DX + ADDQ $0x08, AX + DECQ CX + JMP loop + done: - MOVQ DX, ret+24(FP) + MOVQ DX, ret+24(FP) RET diff --git a/internal/prnt/printer.go b/internal/prnt/printer.go index 12cc6db9..2239946f 100644 --- a/internal/prnt/printer.go +++ b/internal/prnt/printer.go @@ -4,6 +4,7 @@ package prnt import ( "bytes" "fmt" + "io" ) // Generator provides convenience methods for code generators. In particular it @@ -15,6 +16,11 @@ type Generator struct { err error } +// Raw provides direct access to the underlying output stream. +func (g *Generator) Raw() io.Writer { + return &g.buf +} + // Printf prints to the internal buffer. func (g *Generator) Printf(format string, args ...interface{}) { if g.err != nil { diff --git a/printer/goasm.go b/printer/goasm.go index b6321364..8d67162e 100644 --- a/printer/goasm.go +++ b/printer/goasm.go @@ -1,8 +1,10 @@ package printer import ( + "fmt" "strconv" "strings" + "text/tabwriter" "github.com/mmcloughlin/avo/internal/prnt" "github.com/mmcloughlin/avo/ir" @@ -81,20 +83,29 @@ func (p *goasm) function(f *ir.Function) { } p.Printf(", %s\n", textsize(f)) + w := p.tabwriter() for _, node := range f.Nodes { switch n := node.(type) { case *ir.Instruction: + leader := []byte{tabwriter.Escape, '\t', tabwriter.Escape} + fmt.Fprint(w, string(leader)+n.Opcode) if len(n.Operands) > 0 { - p.Printf("\t%s\t%s\n", n.Opcode, joinOperands(n.Operands)) - } else { - p.Printf("\t%s\n", n.Opcode) + fmt.Fprintf(w, "\t%s", joinOperands(n.Operands)) } + fmt.Fprint(w, "\n") case ir.Label: - p.Printf("%s:\n", n) + w.Flush() + w = p.tabwriter() + p.Printf("\n%s:\n", n) default: panic("unexpected node type") } } + w.Flush() +} + +func (p *goasm) tabwriter() *tabwriter.Writer { + return tabwriter.NewWriter(p.Raw(), 4, 4, 1, ' ', tabwriter.StripEscape) } func (p *goasm) global(g *ir.Global) { diff --git a/printer/goasm_test.go b/printer/goasm_test.go index 408b6a35..f03c2860 100644 --- a/printer/goasm_test.go +++ b/printer/goasm_test.go @@ -24,10 +24,10 @@ func TestBasic(t *testing.T) { "", "// func add(x uint64, y uint64) uint64", "TEXT ·add(SB), $0-24", - "\tMOVQ\tx(FP), AX", - "\tMOVQ\ty+8(FP), R9", - "\tADDQ\tAX, R9", - "\tMOVQ\tR9, ret+16(FP)", + "\tMOVQ x(FP), AX", + "\tMOVQ y+8(FP), R9", + "\tADDQ AX, R9", + "\tMOVQ R9, ret+16(FP)", "\tRET", "", }) diff --git a/tests/cast/cast.s b/tests/cast/cast.s index 7eb51a67..9af73536 100644 --- a/tests/cast/cast.s +++ b/tests/cast/cast.s @@ -4,9 +4,9 @@ // func Split(x uint64) (q uint64, l uint32, w uint16, b uint8) TEXT ·Split(SB), NOSPLIT, $0-23 - MOVQ x(FP), AX - MOVQ AX, q+8(FP) - MOVL AX, l+16(FP) - MOVW AX, w+20(FP) - MOVB AL, b+22(FP) + MOVQ x(FP), AX + MOVQ AX, q+8(FP) + MOVL AX, l+16(FP) + MOVW AX, w+20(FP) + MOVB AL, b+22(FP) RET