[svn] / ecrypt / trunk / submissions / salsa20 / reduced / 12-rounds / sparc / salsa20.s  

svn: ecrypt/trunk/submissions/salsa20/reduced/12-rounds/sparc/salsa20.s

File: [svn] / ecrypt / trunk / submissions / salsa20 / reduced / 12-rounds / sparc / salsa20.s (download)
Revision: 161, Thu Feb 23 21:15:20 2006 UTC (7 years, 3 months ago) by cdecanni
File size: 47072 byte(s)
* imported reduced-round variants Salsa20/8 and Salsa20/12.
# salsa20,12_sparc.s version 20060209
# D. J. Bernstein
# Public domain.

# int64 x

# int64 arg2

# int64 arg3

# int64 arg4

# input x

# input arg2

# input arg3

# input arg4

# int64 i

# int64 a

# int64 m

# int64 out

# int64 bytes

# stack64 ctarget

# stack512 tmp

# stack64 bytes_stack

# stack64 out_stack

# stack64 m_stack

# stack64 x_stack

# int64 z0

# int64 z1

# int64 z2

# int64 z3

# int64 z4

# int64 z5

# int64 z6

# int64 z7

# int64 z8

# int64 z9

# int64 z10

# int64 z11

# int64 z12

# int64 z13

# int64 z14

# int64 z15

# int64 u0

# int64 u1

# int64 u2

# int64 u3

# int64 u4

# int64 u5

# int64 u6

# int64 u7

# int64 u8

# int64 u9

# int64 u10

# int64 u11

# int64 u12

# int64 u13

# int64 u14

# int64 u15

# int64 y0

# int64 y1

# int64 y2

# int64 y3

# int64 y4

# int64 y5

# int64 y6

# int64 y7

# int64 y8

# int64 y9

# int64 y10

# int64 y11

# int64 y12

# int64 y13

# int64 y14

# int64 y15

# int64 x0

# int64 x1

# int64 x2

# int64 x3

# int64 x4

# int64 x5

# int64 x6

# int64 x7

# int64 x8

# int64 x9

# int64 x10

# int64 x11

# int64 x12

# int64 x13

# int64 x14

# int64 x15

# int64 q0

# int64 q1

# int64 q2

# int64 q3

# int64 q4

# int64 q5

# int64 q6

# int64 q7

# int64 q8

# int64 q9

# int64 q10

# int64 q11

# int64 q12

# int64 q13

# int64 q14

# int64 q15

# int64 m0

# int64 m1

# int64 m2

# int64 m3

# int64 m4

# int64 m5

# int64 m6

# int64 m7

# int64 m8

# int64 m9

# int64 m10

# int64 m11

# int64 m12

# int64 m13

# int64 m14

# int64 m15

# enter ECRYPT_init
.section ".text"
.align 32
.global ECRYPT_init
ECRYPT_init:
save %sp,-288,%sp

# leave
ret
restore

# enter ECRYPT_ivsetup
.section ".text"
.align 32
.global ECRYPT_ivsetup
ECRYPT_ivsetup:
save %sp,-288,%sp

#   x6 = *(uint32 *) (arg2 + 0)
# lduw [<arg2=int64#2+0],>x6=int64#3
# lduw [<arg2=%i1+0],>x6=%i2
lduw [%i1+0],%i2

#   x8 = 0
# add %g0,0,>x8=int64#4
# add %g0,0,>x8=%i3
add %g0,0,%i3

#   x7 = *(uint32 *) (arg2 + 4)
# lduw [<arg2=int64#2+4],>x7=int64#2
# lduw [<arg2=%i1+4],>x7=%i1
lduw [%i1+4],%i1

#   x9 = 0
# add %g0,0,>x9=int64#5
# add %g0,0,>x9=%i4
add %g0,0,%i4

#   x += 24
# add <x=int64#1,24,>x=int64#1
# add <x=%i0,24,>x=%i0
add %i0,24,%i0

#   *(swapendian int32 *) x = x6
# stwa <x6=int64#3,[<x=int64#1] 0x88
# stwa <x6=%i2,[<x=%i0] 0x88
stwa %i2,[%i0] 0x88

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(swapendian int32 *) x = x7
# stwa <x7=int64#2,[<x=int64#1] 0x88
# stwa <x7=%i1,[<x=%i0] 0x88
stwa %i1,[%i0] 0x88

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(int32 *) (x + 0) = x8
# stw <x8=int64#4,[<x=int64#1+0]
# stw <x8=%i3,[<x=%i0+0]
stw %i3,[%i0+0]

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(int32 *) (x + 0) = x9
# stw <x9=int64#5,[<x=int64#1+0]
# stw <x9=%i4,[<x=%i0+0]
stw %i4,[%i0+0]

# leave
ret
restore

# enter ECRYPT_keysetup
.section ".text"
.align 32
.global ECRYPT_keysetup
ECRYPT_keysetup:
save %sp,-288,%sp

# flags arg3 - 128
# subcc <arg3=int64#3,128,%g0
# subcc <arg3=%i2,128,%g0
subcc %i2,128,%g0

# goto kbits256 if unsigned>
bgu,pt %xcc,._kbits256
nop

# kbits128#
._kbits128:

#   x1 = *(uint32 *) (arg2 + 0)
# lduw [<arg2=int64#2+0],>x1=int64#4
# lduw [<arg2=%i1+0],>x1=%i3
lduw [%i1+0],%i3

#   x0 = 1634760805 & 0xfffffc00
# sethi %lm(1634760805),>x0=int64#3
# sethi %lm(1634760805),>x0=%i2
sethi %lm(1634760805),%i2

#   x2 = *(uint32 *) (arg2 + 4)
# lduw [<arg2=int64#2+4],>x2=int64#5
# lduw [<arg2=%i1+4],>x2=%i4
lduw [%i1+4],%i4

#   x5 = 824206446 & 0xfffffc00
# sethi %lm(824206446),>x5=int64#8
# sethi %lm(824206446),>x5=%g4
sethi %lm(824206446),%g4

#   x3 = *(uint32 *) (arg2 + 8)
# lduw [<arg2=int64#2+8],>x3=int64#6
# lduw [<arg2=%i1+8],>x3=%i5
lduw [%i1+8],%i5

#   x10 = 2036477238 & 0xfffffc00
# sethi %lm(2036477238),>x10=int64#9
# sethi %lm(2036477238),>x10=%g5
sethi %lm(2036477238),%g5

#   x4 = *(uint32 *) (arg2 + 12)
# lduw [<arg2=int64#2+12],>x4=int64#7
# lduw [<arg2=%i1+12],>x4=%g1
lduw [%i1+12],%g1

#   x15 = 1797285236 & 0xfffffc00
# sethi %lm(1797285236),>x15=int64#13
# sethi %lm(1797285236),>x15=%o3
sethi %lm(1797285236),%o3

#   x11 = *(uint32 *) (arg2 + 0)
# lduw [<arg2=int64#2+0],>x11=int64#10
# lduw [<arg2=%i1+0],>x11=%o0
lduw [%i1+0],%o0

#   x0 |= 1634760805 & 0x3ff
# or <x0=int64#3,%lo(1634760805),>x0=int64#3
# or <x0=%i2,%lo(1634760805),>x0=%i2
or %i2,%lo(1634760805),%i2

#   x12 = *(uint32 *) (arg2 + 4)
# lduw [<arg2=int64#2+4],>x12=int64#11
# lduw [<arg2=%i1+4],>x12=%o1
lduw [%i1+4],%o1

#   x5 |= 824206446 & 0x3ff
# or <x5=int64#8,%lo(824206446),>x5=int64#8
# or <x5=%g4,%lo(824206446),>x5=%g4
or %g4,%lo(824206446),%g4

#   x13 = *(uint32 *) (arg2 + 8)
# lduw [<arg2=int64#2+8],>x13=int64#12
# lduw [<arg2=%i1+8],>x13=%o2
lduw [%i1+8],%o2

#   x10 |= 2036477238 & 0x3ff
# or <x10=int64#9,%lo(2036477238),>x10=int64#9
# or <x10=%g5,%lo(2036477238),>x10=%g5
or %g5,%lo(2036477238),%g5

#   x14 = *(uint32 *) (arg2 + 12)
# lduw [<arg2=int64#2+12],>x14=int64#2
# lduw [<arg2=%i1+12],>x14=%i1
lduw [%i1+12],%i1

#   x15 |= 1797285236 & 0x3ff
# or <x15=int64#13,%lo(1797285236),>x15=int64#13
# or <x15=%o3,%lo(1797285236),>x15=%o3
or %o3,%lo(1797285236),%o3

# goto storekey
b ._storekey
nop

# kbits256#
._kbits256:

#   x1 = *(uint32 *) (arg2 + 0)
# lduw [<arg2=int64#2+0],>x1=int64#4
# lduw [<arg2=%i1+0],>x1=%i3
lduw [%i1+0],%i3

#   x0 = 1634760805 & 0xfffffc00
# sethi %lm(1634760805),>x0=int64#3
# sethi %lm(1634760805),>x0=%i2
sethi %lm(1634760805),%i2

#   x2 = *(uint32 *) (arg2 + 4)
# lduw [<arg2=int64#2+4],>x2=int64#5
# lduw [<arg2=%i1+4],>x2=%i4
lduw [%i1+4],%i4

#   x5 = 857760878 & 0xfffffc00
# sethi %lm(857760878),>x5=int64#8
# sethi %lm(857760878),>x5=%g4
sethi %lm(857760878),%g4

#   x3 = *(uint32 *) (arg2 + 8)
# lduw [<arg2=int64#2+8],>x3=int64#6
# lduw [<arg2=%i1+8],>x3=%i5
lduw [%i1+8],%i5

#   x10 = 2036477234 & 0xfffffc00
# sethi %lm(2036477234),>x10=int64#9
# sethi %lm(2036477234),>x10=%g5
sethi %lm(2036477234),%g5

#   x4 = *(uint32 *) (arg2 + 12)
# lduw [<arg2=int64#2+12],>x4=int64#7
# lduw [<arg2=%i1+12],>x4=%g1
lduw [%i1+12],%g1

#   x15 = 1797285236 & 0xfffffc00
# sethi %lm(1797285236),>x15=int64#13
# sethi %lm(1797285236),>x15=%o3
sethi %lm(1797285236),%o3

#   x11 = *(uint32 *) (arg2 + 16)
# lduw [<arg2=int64#2+16],>x11=int64#10
# lduw [<arg2=%i1+16],>x11=%o0
lduw [%i1+16],%o0

#   x0 |= 1634760805 & 0x3ff
# or <x0=int64#3,%lo(1634760805),>x0=int64#3
# or <x0=%i2,%lo(1634760805),>x0=%i2
or %i2,%lo(1634760805),%i2

#   x12 = *(uint32 *) (arg2 + 20)
# lduw [<arg2=int64#2+20],>x12=int64#11
# lduw [<arg2=%i1+20],>x12=%o1
lduw [%i1+20],%o1

#   x5 |= 857760878 & 0x3ff
# or <x5=int64#8,%lo(857760878),>x5=int64#8
# or <x5=%g4,%lo(857760878),>x5=%g4
or %g4,%lo(857760878),%g4

#   x13 = *(uint32 *) (arg2 + 24)
# lduw [<arg2=int64#2+24],>x13=int64#12
# lduw [<arg2=%i1+24],>x13=%o2
lduw [%i1+24],%o2

#   x10 |= 2036477234 & 0x3ff
# or <x10=int64#9,%lo(2036477234),>x10=int64#9
# or <x10=%g5,%lo(2036477234),>x10=%g5
or %g5,%lo(2036477234),%g5

#   x14 = *(uint32 *) (arg2 + 28)
# lduw [<arg2=int64#2+28],>x14=int64#2
# lduw [<arg2=%i1+28],>x14=%i1
lduw [%i1+28],%i1

#   x15 |= 1797285236 & 0x3ff
# or <x15=int64#13,%lo(1797285236),>x15=int64#13
# or <x15=%o3,%lo(1797285236),>x15=%o3
or %o3,%lo(1797285236),%o3

# storekey#
._storekey:

#   *(int32 *) (x + 0) = x0
# stw <x0=int64#3,[<x=int64#1+0]
# stw <x0=%i2,[<x=%i0+0]
stw %i2,[%i0+0]

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(swapendian int32 *) x = x1
# stwa <x1=int64#4,[<x=int64#1] 0x88
# stwa <x1=%i3,[<x=%i0] 0x88
stwa %i3,[%i0] 0x88

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(swapendian int32 *) x = x2
# stwa <x2=int64#5,[<x=int64#1] 0x88
# stwa <x2=%i4,[<x=%i0] 0x88
stwa %i4,[%i0] 0x88

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(swapendian int32 *) x = x3
# stwa <x3=int64#6,[<x=int64#1] 0x88
# stwa <x3=%i5,[<x=%i0] 0x88
stwa %i5,[%i0] 0x88

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(swapendian int32 *) x = x4
# stwa <x4=int64#7,[<x=int64#1] 0x88
# stwa <x4=%g1,[<x=%i0] 0x88
stwa %g1,[%i0] 0x88

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(int32 *) (x + 0) = x5
# stw <x5=int64#8,[<x=int64#1+0]
# stw <x5=%g4,[<x=%i0+0]
stw %g4,[%i0+0]

#   x += 20
# add <x=int64#1,20,>x=int64#1
# add <x=%i0,20,>x=%i0
add %i0,20,%i0

#   *(int32 *) (x + 0) = x10
# stw <x10=int64#9,[<x=int64#1+0]
# stw <x10=%g5,[<x=%i0+0]
stw %g5,[%i0+0]

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(swapendian int32 *) x = x11
# stwa <x11=int64#10,[<x=int64#1] 0x88
# stwa <x11=%o0,[<x=%i0] 0x88
stwa %o0,[%i0] 0x88

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(swapendian int32 *) x = x12
# stwa <x12=int64#11,[<x=int64#1] 0x88
# stwa <x12=%o1,[<x=%i0] 0x88
stwa %o1,[%i0] 0x88

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(swapendian int32 *) x = x13
# stwa <x13=int64#12,[<x=int64#1] 0x88
# stwa <x13=%o2,[<x=%i0] 0x88
stwa %o2,[%i0] 0x88

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(swapendian int32 *) x = x14
# stwa <x14=int64#2,[<x=int64#1] 0x88
# stwa <x14=%i1,[<x=%i0] 0x88
stwa %i1,[%i0] 0x88

#   x += 4
# add <x=int64#1,4,>x=int64#1
# add <x=%i0,4,>x=%i0
add %i0,4,%i0

#   *(int32 *) (x + 0) = x15
# stw <x15=int64#13,[<x=int64#1+0]
# stw <x15=%o3,[<x=%i0+0]
stw %o3,[%i0+0]

# leave
ret
restore

# enter ECRYPT_keystream_bytes
.section ".text"
.align 32
.global ECRYPT_keystream_bytes
ECRYPT_keystream_bytes:
save %sp,-288,%sp

# bytes = arg3
# add %g0,<arg3=int64#3,>bytes=int64#6
# add %g0,<arg3=%i2,>bytes=%i5
add %g0,%i2,%i5

# m = arg2
# add %g0,<arg2=int64#2,>m=int64#4
# add %g0,<arg2=%i1,>m=%i3
add %g0,%i1,%i3

# out = arg2
# add %g0,<arg2=int64#2,>out=int64#5
# add %g0,<arg2=%i1,>out=%i4
add %g0,%i1,%i4

# flags bytes - 0
# subcc <bytes=int64#6,0,%g0
# subcc <bytes=%i5,0,%g0
subcc %i5,0,%g0

# goto done if unsigned<=
bleu,pt %xcc,._done
nop

#   a = 0
# add %g0,0,>a=int64#3
# add %g0,0,>a=%i2
add %g0,0,%i2

#   i = bytes
# add %g0,<bytes=int64#6,>i=int64#2
# add %g0,<bytes=%i5,>i=%i1
add %g0,%i5,%i1

#   zeroloop#
._zeroloop:

#     *(int8 *) (out + 0) = a
# stb <a=int64#3,[<out=int64#5+0]
# stb <a=%i2,[<out=%i4+0]
stb %i2,[%i4+0]

#     out += 1
# add <out=int64#5,1,>out=int64#5
# add <out=%i4,1,>out=%i4
add %i4,1,%i4

#     flags i -= 1
# subcc <i=int64#2,1,>i=int64#2
# subcc <i=%i1,1,>i=%i1
subcc %i1,1,%i1

#   goto zeroloop if unsigned>
bgu,pt %xcc,._zeroloop
nop

#   out -= bytes
# sub <out=int64#5,<bytes=int64#6,>out=int64#5
# sub <out=%i4,<bytes=%i5,>out=%i4
sub %i4,%i5,%i4

# goto bytesatleast1
b ._bytesatleast1
nop

# enter ECRYPT_decrypt_bytes
.section ".text"
.align 32
.global ECRYPT_decrypt_bytes
ECRYPT_decrypt_bytes:
save %sp,-288,%sp

# bytes = arg4
# add %g0,<arg4=int64#4,>bytes=int64#6
# add %g0,<arg4=%i3,>bytes=%i5
add %g0,%i3,%i5

# m = arg2
# add %g0,<arg2=int64#2,>m=int64#4
# add %g0,<arg2=%i1,>m=%i3
add %g0,%i1,%i3

# out = arg3
# add %g0,<arg3=int64#3,>out=int64#5
# add %g0,<arg3=%i2,>out=%i4
add %g0,%i2,%i4

# flags bytes - 0
# subcc <bytes=int64#6,0,%g0
# subcc <bytes=%i5,0,%g0
subcc %i5,0,%g0

# goto done if unsigned<=
bleu,pt %xcc,._done
nop

# goto bytesatleast1
b ._bytesatleast1
nop

# enter ECRYPT_encrypt_bytes
.section ".text"
.align 32
.global ECRYPT_encrypt_bytes
ECRYPT_encrypt_bytes:
save %sp,-288,%sp

# bytes = arg4
# add %g0,<arg4=int64#4,>bytes=int64#6
# add %g0,<arg4=%i3,>bytes=%i5
add %g0,%i3,%i5

# m = arg2
# add %g0,<arg2=int64#2,>m=int64#4
# add %g0,<arg2=%i1,>m=%i3
add %g0,%i1,%i3

# out = arg3
# add %g0,<arg3=int64#3,>out=int64#5
# add %g0,<arg3=%i2,>out=%i4
add %g0,%i2,%i4

# flags bytes - 0
# subcc <bytes=int64#6,0,%g0
# subcc <bytes=%i5,0,%g0
subcc %i5,0,%g0

# goto done if unsigned<=
bleu,pt %xcc,._done
nop

# bytesatleast1#
._bytesatleast1:

#   flags bytes - 64
# subcc <bytes=int64#6,64,%g0
# subcc <bytes=%i5,64,%g0
subcc %i5,64,%g0

#   goto bytesatleast64 if unsigned>=
bgeu,pt %xcc,._bytesatleast64
nop

#     ctarget = out
# stx <out=int64#5,[%fp+2023->ctarget=stack64#1]
# stx <out=%i4,[%fp+2023->ctarget=64]
stx %i4,[%fp+2023-64]

#     out = &tmp
# add %fp,1967->tmp=stack512#1,>out=int64#5
# add %fp,1967->tmp=0,>out=%i4
add %fp,1967-0,%i4

#     i = 0
# add %g0,0,>i=int64#2
# add %g0,0,>i=%i1
add %g0,0,%i1

#     mcopyloop#
._mcopyloop:

#       a = *(int8 *) (m + i)
# ldsb [<m=int64#4+<i=int64#2],>a=int64#3
# ldsb [<m=%i3+<i=%i1],>a=%i2
ldsb [%i3+%i1],%i2

#       *(int8 *) (out + i) = a
# stb <a=int64#3,[<out=int64#5+<i=int64#2]
# stb <a=%i2,[<out=%i4+<i=%i1]
stb %i2,[%i4+%i1]

#       i += 1
# add <i=int64#2,1,>i=int64#2
# add <i=%i1,1,>i=%i1
add %i1,1,%i1

#       flags i - bytes
# subcc <i=int64#2,<bytes=int64#6,%g0
# subcc <i=%i1,<bytes=%i5,%g0
subcc %i1,%i5,%g0

#     goto mcopyloop if unsigned<
blu,pt %xcc,._mcopyloop
nop

#     m = &tmp
# add %fp,1967->tmp=stack512#1,>m=int64#4
# add %fp,1967->tmp=0,>m=%i3
add %fp,1967-0,%i3

#   bytesatleast64#
._bytesatleast64:

#     x0 = *(uint32 *) (x + 0)
# lduw [<x=int64#1+0],>x0=int64#9
# lduw [<x=%i0+0],>x0=%g5
lduw [%i0+0],%g5

#     x1 = *(uint32 *) (x + 4)
# lduw [<x=int64#1+4],>x1=int64#10
# lduw [<x=%i0+4],>x1=%o0
lduw [%i0+4],%o0

#     x2 = *(uint32 *) (x + 8)
# lduw [<x=int64#1+8],>x2=int64#11
# lduw [<x=%i0+8],>x2=%o1
lduw [%i0+8],%o1

#     x3 = *(uint32 *) (x + 12)
# lduw [<x=int64#1+12],>x3=int64#12
# lduw [<x=%i0+12],>x3=%o2
lduw [%i0+12],%o2

#     x4 = *(uint32 *) (x + 16)
# lduw [<x=int64#1+16],>x4=int64#13
# lduw [<x=%i0+16],>x4=%o3
lduw [%i0+16],%o3

#     x5 = *(uint32 *) (x + 20)
# lduw [<x=int64#1+20],>x5=int64#14
# lduw [<x=%i0+20],>x5=%o4
lduw [%i0+20],%o4

#     x6 = *(uint32 *) (x + 24)
# lduw [<x=int64#1+24],>x6=int64#15
# lduw [<x=%i0+24],>x6=%o5
lduw [%i0+24],%o5

#     x7 = *(uint32 *) (x + 28)
# lduw [<x=int64#1+28],>x7=int64#16
# lduw [<x=%i0+28],>x7=%o7
lduw [%i0+28],%o7

#     x8 = *(uint32 *) (x + 32)
# lduw [<x=int64#1+32],>x8=int64#17
# lduw [<x=%i0+32],>x8=%l0
lduw [%i0+32],%l0

#     x9 = *(uint32 *) (x + 36)
# lduw [<x=int64#1+36],>x9=int64#18
# lduw [<x=%i0+36],>x9=%l1
lduw [%i0+36],%l1

#     x10 = *(uint32 *) (x + 40)
# lduw [<x=int64#1+40],>x10=int64#19
# lduw [<x=%i0+40],>x10=%l2
lduw [%i0+40],%l2

#     x11 = *(uint32 *) (x + 44)
# lduw [<x=int64#1+44],>x11=int64#20
# lduw [<x=%i0+44],>x11=%l3
lduw [%i0+44],%l3

#     x12 = *(uint32 *) (x + 48)
# lduw [<x=int64#1+48],>x12=int64#21
# lduw [<x=%i0+48],>x12=%l4
lduw [%i0+48],%l4

#     x13 = *(uint32 *) (x + 52)
# lduw [<x=int64#1+52],>x13=int64#22
# lduw [<x=%i0+52],>x13=%l5
lduw [%i0+52],%l5

#     x14 = *(uint32 *) (x + 56)
# lduw [<x=int64#1+56],>x14=int64#23
# lduw [<x=%i0+56],>x14=%l6
lduw [%i0+56],%l6

#     x15 = *(uint32 *) (x + 60)
# lduw [<x=int64#1+60],>x15=int64#24
# lduw [<x=%i0+60],>x15=%l7
lduw [%i0+60],%l7

#     i = 12
# add %g0,12,>i=int64#2
# add %g0,12,>i=%i1
add %g0,12,%i1

#     bytes_stack = bytes
# stx <bytes=int64#6,[%fp+2023->bytes_stack=stack64#2]
# stx <bytes=%i5,[%fp+2023->bytes_stack=72]
stx %i5,[%fp+2023-72]

#     out_stack = out
# stx <out=int64#5,[%fp+2023->out_stack=stack64#3]
# stx <out=%i4,[%fp+2023->out_stack=80]
stx %i4,[%fp+2023-80]

#     m_stack = m
# stx <m=int64#4,[%fp+2023->m_stack=stack64#4]
# stx <m=%i3,[%fp+2023->m_stack=88]
stx %i3,[%fp+2023-88]

#     x_stack = x
# stx <x=int64#1,[%fp+2023->x_stack=stack64#5]
# stx <x=%i0,[%fp+2023->x_stack=96]
stx %i0,[%fp+2023-96]

#     mainloop#
._mainloop:

# y4 = x0 + x12
# add <x0=int64#9,<x12=int64#21,>y4=int64#3
# add <x0=%g5,<x12=%l4,>y4=%i2
add %g5,%l4,%i2

# 		y9 = x5 + x1
# add <x5=int64#14,<x1=int64#10,>y9=int64#6
# add <x5=%o4,<x1=%o0,>y9=%i5
add %o4,%o0,%i5

# z4 = (uint32) y4 << 7
# sll <y4=int64#3,7,>z4=int64#1
# sll <y4=%i2,7,>z4=%i0
sll %i2,7,%i0

# 				y14 = x10 + x6
# add <x10=int64#19,<x6=int64#15,>y14=int64#7
# add <x10=%l2,<x6=%o5,>y14=%g1
add %l2,%o5,%g1

# y4 = (uint32) y4 >> 25
# srl <y4=int64#3,25,>y4=int64#4
# srl <y4=%i2,25,>y4=%i3
srl %i2,25,%i3

# 						y3 = x15 + x11
# add <x15=int64#24,<x11=int64#20,>y3=int64#5
# add <x15=%l7,<x11=%l3,>y3=%i4
add %l7,%l3,%i4

# 		z9 = (uint32) y9 << 7
# sll <y9=int64#6,7,>z9=int64#3
# sll <y9=%i5,7,>z9=%i2
sll %i5,7,%i2

# y4 |= z4
# or  <y4=int64#4,<z4=int64#1,>y4=int64#1
# or  <y4=%i3,<z4=%i0,>y4=%i0
or  %i3,%i0,%i0

# 		y9 = (uint32) y9 >> 25
# srl <y9=int64#6,25,>y9=int64#6
# srl <y9=%i5,25,>y9=%i5
srl %i5,25,%i5

# x4 ^= y4
# xor <x4=int64#13,<y4=int64#1,>x4=int64#13
# xor <x4=%o3,<y4=%i0,>x4=%o3
xor %o3,%i0,%o3

# 				z14 = (uint32) y14 << 7
# sll <y14=int64#7,7,>z14=int64#4
# sll <y14=%g1,7,>z14=%i3
sll %g1,7,%i3

# 		y9 |= z9
# or  <y9=int64#6,<z9=int64#3,>y9=int64#3
# or  <y9=%i5,<z9=%i2,>y9=%i2
or  %i5,%i2,%i2

# 				y14 = (uint32) y14 >> 25
# srl <y14=int64#7,25,>y14=int64#7
# srl <y14=%g1,25,>y14=%g1
srl %g1,25,%g1

# y8 = x4 + x0
# add <x4=int64#13,<x0=int64#9,>y8=int64#6
# add <x4=%o3,<x0=%g5,>y8=%i5
add %o3,%g5,%i5

# 						z3 = (uint32) y3 << 7
# sll <y3=int64#5,7,>z3=int64#1
# sll <y3=%i4,7,>z3=%i0
sll %i4,7,%i0

# 		x9 ^= y9
# xor <x9=int64#18,<y9=int64#3,>x9=int64#18
# xor <x9=%l1,<y9=%i2,>x9=%l1
xor %l1,%i2,%l1

# 						y3 = (uint32) y3 >> 25
# srl <y3=int64#5,25,>y3=int64#5
# srl <y3=%i4,25,>y3=%i4
srl %i4,25,%i4

# 				y14 |= z14
# or  <y14=int64#7,<z14=int64#4,>y14=int64#4
# or  <y14=%g1,<z14=%i3,>y14=%i3
or  %g1,%i3,%i3

# z8 = (uint32) y8 << 9
# sll <y8=int64#6,9,>z8=int64#3
# sll <y8=%i5,9,>z8=%i2
sll %i5,9,%i2

# 		y13 = x9 + x5
# add <x9=int64#18,<x5=int64#14,>y13=int64#7
# add <x9=%l1,<x5=%o4,>y13=%g1
add %l1,%o4,%g1

# y8 = (uint32) y8 >> 23
# srl <y8=int64#6,23,>y8=int64#6
# srl <y8=%i5,23,>y8=%i5
srl %i5,23,%i5

# 				x14 ^= y14
# xor <x14=int64#23,<y14=int64#4,>x14=int64#23
# xor <x14=%l6,<y14=%i3,>x14=%l6
xor %l6,%i3,%l6

# 						y3 |= z3
# or  <y3=int64#5,<z3=int64#1,>y3=int64#1
# or  <y3=%i4,<z3=%i0,>y3=%i0
or  %i4,%i0,%i0

# 				y2 = x14 + x10
# add <x14=int64#23,<x10=int64#19,>y2=int64#5
# add <x14=%l6,<x10=%l2,>y2=%i4
add %l6,%l2,%i4

# 		z13 = (uint32) y13 << 9
# sll <y13=int64#7,9,>z13=int64#4
# sll <y13=%g1,9,>z13=%i3
sll %g1,9,%i3

# 						x3 ^= y3
# xor <x3=int64#12,<y3=int64#1,>x3=int64#12
# xor <x3=%o2,<y3=%i0,>x3=%o2
xor %o2,%i0,%o2

# 		y13 = (uint32) y13 >> 23
# srl <y13=int64#7,23,>y13=int64#7
# srl <y13=%g1,23,>y13=%g1
srl %g1,23,%g1

# y8 |= z8
# or  <y8=int64#6,<z8=int64#3,>y8=int64#3
# or  <y8=%i5,<z8=%i2,>y8=%i2
or  %i5,%i2,%i2

# 				z2 = (uint32) y2 << 9
# sll <y2=int64#5,9,>z2=int64#1
# sll <y2=%i4,9,>z2=%i0
sll %i4,9,%i0

# 						y7 = x3 + x15
# add <x3=int64#12,<x15=int64#24,>y7=int64#6
# add <x3=%o2,<x15=%l7,>y7=%i5
add %o2,%l7,%i5

# 				y2 = (uint32) y2 >> 23
# srl <y2=int64#5,23,>y2=int64#5
# srl <y2=%i4,23,>y2=%i4
srl %i4,23,%i4

# x8 ^= y8
# xor <x8=int64#17,<y8=int64#3,>x8=int64#17
# xor <x8=%l0,<y8=%i2,>x8=%l0
xor %l0,%i2,%l0

# 		y13 |= z13
# or  <y13=int64#7,<z13=int64#4,>y13=int64#4
# or  <y13=%g1,<z13=%i3,>y13=%i3
or  %g1,%i3,%i3

# y12 = x8 + x4
# add <x8=int64#17,<x4=int64#13,>y12=int64#7
# add <x8=%l0,<x4=%o3,>y12=%g1
add %l0,%o3,%g1

# 						z7 = (uint32) y7 << 9
# sll <y7=int64#6,9,>z7=int64#3
# sll <y7=%i5,9,>z7=%i2
sll %i5,9,%i2

# 		x13 ^= y13
# xor <x13=int64#22,<y13=int64#4,>x13=int64#22
# xor <x13=%l5,<y13=%i3,>x13=%l5
xor %l5,%i3,%l5

# 						y7 = (uint32) y7 >> 23
# srl <y7=int64#6,23,>y7=int64#6
# srl <y7=%i5,23,>y7=%i5
srl %i5,23,%i5

# 				y2 |= z2
# or  <y2=int64#5,<z2=int64#1,>y2=int64#1
# or  <y2=%i4,<z2=%i0,>y2=%i0
or  %i4,%i0,%i0

# z12 = (uint32) y12 << 13
# sll <y12=int64#7,13,>z12=int64#4
# sll <y12=%g1,13,>z12=%i3
sll %g1,13,%i3

# 		y1 = x13 + x9
# add <x13=int64#22,<x9=int64#18,>y1=int64#5
# add <x13=%l5,<x9=%l1,>y1=%i4
add %l5,%l1,%i4

# y12 = (uint32) y12 >> 19
# srl <y12=int64#7,19,>y12=int64#7
# srl <y12=%g1,19,>y12=%g1
srl %g1,19,%g1

# 				x2 ^= y2
# xor <x2=int64#11,<y2=int64#1,>x2=int64#11
# xor <x2=%o1,<y2=%i0,>x2=%o1
xor %o1,%i0,%o1

# 						y7 |= z7
# or  <y7=int64#6,<z7=int64#3,>y7=int64#3
# or  <y7=%i5,<z7=%i2,>y7=%i2
or  %i5,%i2,%i2

# 				y6 = x2 + x14
# add <x2=int64#11,<x14=int64#23,>y6=int64#6
# add <x2=%o1,<x14=%l6,>y6=%i5
add %o1,%l6,%i5

# 		z1 = (uint32) y1 << 13
# sll <y1=int64#5,13,>z1=int64#1
# sll <y1=%i4,13,>z1=%i0
sll %i4,13,%i0

# 						x7 ^= y7
# xor <x7=int64#16,<y7=int64#3,>x7=int64#16
# xor <x7=%o7,<y7=%i2,>x7=%o7
xor %o7,%i2,%o7

# 		y1 = (uint32) y1 >> 19
# srl <y1=int64#5,19,>y1=int64#5
# srl <y1=%i4,19,>y1=%i4
srl %i4,19,%i4

# y12 |= z12
# or  <y12=int64#7,<z12=int64#4,>y12=int64#4
# or  <y12=%g1,<z12=%i3,>y12=%i3
or  %g1,%i3,%i3

# 				z6 = (uint32) y6 << 13
# sll <y6=int64#6,13,>z6=int64#3
# sll <y6=%i5,13,>z6=%i2
sll %i5,13,%i2

# 						y11 = x7 + x3
# add <x7=int64#16,<x3=int64#12,>y11=int64#7
# add <x7=%o7,<x3=%o2,>y11=%g1
add %o7,%o2,%g1

# 				y6 = (uint32) y6 >> 19
# srl <y6=int64#6,19,>y6=int64#6
# srl <y6=%i5,19,>y6=%i5
srl %i5,19,%i5

# x12 ^= y12
# xor <x12=int64#21,<y12=int64#4,>x12=int64#21
# xor <x12=%l4,<y12=%i3,>x12=%l4
xor %l4,%i3,%l4

# 		y1 |= z1
# or  <y1=int64#5,<z1=int64#1,>y1=int64#1
# or  <y1=%i4,<z1=%i0,>y1=%i0
or  %i4,%i0,%i0

# y0 = x12 + x8
# add <x12=int64#21,<x8=int64#17,>y0=int64#5
# add <x12=%l4,<x8=%l0,>y0=%i4
add %l4,%l0,%i4

# 						z11 = (uint32) y11 << 13
# sll <y11=int64#7,13,>z11=int64#4
# sll <y11=%g1,13,>z11=%i3
sll %g1,13,%i3

# 		x1 ^= y1
# xor <x1=int64#10,<y1=int64#1,>x1=int64#10
# xor <x1=%o0,<y1=%i0,>x1=%o0
xor %o0,%i0,%o0

# 						y11 = (uint32) y11 >> 19
# srl <y11=int64#7,19,>y11=int64#7
# srl <y11=%g1,19,>y11=%g1
srl %g1,19,%g1

# 				y6 |= z6
# or  <y6=int64#6,<z6=int64#3,>y6=int64#3
# or  <y6=%i5,<z6=%i2,>y6=%i2
or  %i5,%i2,%i2

# z0 = (uint32) y0 << 18
# sll <y0=int64#5,18,>z0=int64#1
# sll <y0=%i4,18,>z0=%i0
sll %i4,18,%i0

# 		y5 = x1 + x13
# add <x1=int64#10,<x13=int64#22,>y5=int64#6
# add <x1=%o0,<x13=%l5,>y5=%i5
add %o0,%l5,%i5

# y0 = (uint32) y0 >> 14
# srl <y0=int64#5,14,>y0=int64#5
# srl <y0=%i4,14,>y0=%i4
srl %i4,14,%i4

# 				x6 ^= y6
# xor <x6=int64#15,<y6=int64#3,>x6=int64#15
# xor <x6=%o5,<y6=%i2,>x6=%o5
xor %o5,%i2,%o5

# 						y11 |= z11
# or  <y11=int64#7,<z11=int64#4,>y11=int64#4
# or  <y11=%g1,<z11=%i3,>y11=%i3
or  %g1,%i3,%i3

# 				y10 = x6 + x2
# add <x6=int64#15,<x2=int64#11,>y10=int64#7
# add <x6=%o5,<x2=%o1,>y10=%g1
add %o5,%o1,%g1

# 		z5 = (uint32) y5 << 18
# sll <y5=int64#6,18,>z5=int64#3
# sll <y5=%i5,18,>z5=%i2
sll %i5,18,%i2

# 						x11 ^= y11
# xor <x11=int64#20,<y11=int64#4,>x11=int64#20
# xor <x11=%l3,<y11=%i3,>x11=%l3
xor %l3,%i3,%l3

# 		y5 = (uint32) y5 >> 14
# srl <y5=int64#6,14,>y5=int64#6
# srl <y5=%i5,14,>y5=%i5
srl %i5,14,%i5

# y0 |= z0
# or  <y0=int64#5,<z0=int64#1,>y0=int64#4
# or  <y0=%i4,<z0=%i0,>y0=%i3
or  %i4,%i0,%i3

# 				z10 = (uint32) y10 << 18
# sll <y10=int64#7,18,>z10=int64#1
# sll <y10=%g1,18,>z10=%i0
sll %g1,18,%i0

# 						y15 = x11 + x7
# add <x11=int64#20,<x7=int64#16,>y15=int64#8
# add <x11=%l3,<x7=%o7,>y15=%g4
add %l3,%o7,%g4

# 				y10 = (uint32) y10 >> 14
# srl <y10=int64#7,14,>y10=int64#7
# srl <y10=%g1,14,>y10=%g1
srl %g1,14,%g1

# x0 ^= y0
# xor <x0=int64#9,<y0=int64#4,>x0=int64#9
# xor <x0=%g5,<y0=%i3,>x0=%g5
xor %g5,%i3,%g5

# 		y5 |= z5
# or  <y5=int64#6,<z5=int64#3,>y5=int64#5
# or  <y5=%i5,<z5=%i2,>y5=%i4
or  %i5,%i2,%i4

# u1 = x0 + x3
# add <x0=int64#9,<x3=int64#12,>u1=int64#4
# add <x0=%g5,<x3=%o2,>u1=%i3
add %g5,%o2,%i3

# 						z15 = (uint32) y15 << 18
# sll <y15=int64#8,18,>z15=int64#3
# sll <y15=%g4,18,>z15=%i2
sll %g4,18,%i2

# 		x5 ^= y5
# xor <x5=int64#14,<y5=int64#5,>x5=int64#14
# xor <x5=%o4,<y5=%i4,>x5=%o4
xor %o4,%i4,%o4

# 						y15 = (uint32) y15 >> 14
# srl <y15=int64#8,14,>y15=int64#8
# srl <y15=%g4,14,>y15=%g4
srl %g4,14,%g4

# 				y10 |= z10
# or  <y10=int64#7,<z10=int64#1,>y10=int64#6
# or  <y10=%g1,<z10=%i0,>y10=%i5
or  %g1,%i0,%i5

# z1 = (uint32) u1 << 7
# sll <u1=int64#4,7,>z1=int64#1
# sll <u1=%i3,7,>z1=%i0
sll %i3,7,%i0

# 		u6 = x5 + x4
# add <x5=int64#14,<x4=int64#13,>u6=int64#5
# add <x5=%o4,<x4=%o3,>u6=%i4
add %o4,%o3,%i4

# u1 = (uint32) u1 >> 25
# srl <u1=int64#4,25,>u1=int64#4
# srl <u1=%i3,25,>u1=%i3
srl %i3,25,%i3

# 				x10 ^= y10
# xor <x10=int64#19,<y10=int64#6,>x10=int64#19
# xor <x10=%l2,<y10=%i5,>x10=%l2
xor %l2,%i5,%l2

# 						y15 |= z15
# or  <y15=int64#8,<z15=int64#3,>y15=int64#7
# or  <y15=%g4,<z15=%i2,>y15=%g1
or  %g4,%i2,%g1

# 				u11 = x10 + x9
# add <x10=int64#19,<x9=int64#18,>u11=int64#6
# add <x10=%l2,<x9=%l1,>u11=%i5
add %l2,%l1,%i5

# 		z6 = (uint32) u6 << 7
# sll <u6=int64#5,7,>z6=int64#3
# sll <u6=%i4,7,>z6=%i2
sll %i4,7,%i2

# 						x15 ^= y15
# xor <x15=int64#24,<y15=int64#7,>x15=int64#24
# xor <x15=%l7,<y15=%g1,>x15=%l7
xor %l7,%g1,%l7

# 		u6 = (uint32) u6 >> 25
# srl <u6=int64#5,25,>u6=int64#5
# srl <u6=%i4,25,>u6=%i4
srl %i4,25,%i4

# u1 |= z1
# or  <u1=int64#4,<z1=int64#1,>u1=int64#4
# or  <u1=%i3,<z1=%i0,>u1=%i3
or  %i3,%i0,%i3

# 				z11 = (uint32) u11 << 7
# sll <u11=int64#6,7,>z11=int64#1
# sll <u11=%i5,7,>z11=%i0
sll %i5,7,%i0

# 						u12 = x15 + x14
# add <x15=int64#24,<x14=int64#23,>u12=int64#7
# add <x15=%l7,<x14=%l6,>u12=%g1
add %l7,%l6,%g1

# 				u11 = (uint32) u11 >> 25
# srl <u11=int64#6,25,>u11=int64#6
# srl <u11=%i5,25,>u11=%i5
srl %i5,25,%i5

# 		u6 |= z6
# or  <u6=int64#5,<z6=int64#3,>u6=int64#5
# or  <u6=%i4,<z6=%i2,>u6=%i4
or  %i4,%i2,%i4

# x1 ^= u1
# xor <x1=int64#10,<u1=int64#4,>x1=int64#10
# xor <x1=%o0,<u1=%i3,>x1=%o0
xor %o0,%i3,%o0

# 						z12 = (uint32) u12 << 7
# sll <u12=int64#7,7,>z12=int64#3
# sll <u12=%g1,7,>z12=%i2
sll %g1,7,%i2

# 		x6 ^= u6
# xor <x6=int64#15,<u6=int64#5,>x6=int64#15
# xor <x6=%o5,<u6=%i4,>x6=%o5
xor %o5,%i4,%o5

# 						u12 = (uint32) u12 >> 25
# srl <u12=int64#7,25,>u12=int64#7
# srl <u12=%g1,25,>u12=%g1
srl %g1,25,%g1

# 				u11 |= z11
# or  <u11=int64#6,<z11=int64#1,>u11=int64#5
# or  <u11=%i5,<z11=%i0,>u11=%i4
or  %i5,%i0,%i4

# u2 = x1 + x0
# add <x1=int64#10,<x0=int64#9,>u2=int64#4
# add <x1=%o0,<x0=%g5,>u2=%i3
add %o0,%g5,%i3

# 		u7 = x6 + x5
# add <x6=int64#15,<x5=int64#14,>u7=int64#6
# add <x6=%o5,<x5=%o4,>u7=%i5
add %o5,%o4,%i5

# z2 = (uint32) u2 << 9
# sll <u2=int64#4,9,>z2=int64#1
# sll <u2=%i3,9,>z2=%i0
sll %i3,9,%i0

# 				x11 ^= u11
# xor <x11=int64#20,<u11=int64#5,>x11=int64#20
# xor <x11=%l3,<u11=%i4,>x11=%l3
xor %l3,%i4,%l3

# u2 = (uint32) u2 >> 23
# srl <u2=int64#4,23,>u2=int64#5
# srl <u2=%i3,23,>u2=%i4
srl %i3,23,%i4

# 						u12 |= z12
# or  <u12=int64#7,<z12=int64#3,>u12=int64#4
# or  <u12=%g1,<z12=%i2,>u12=%i3
or  %g1,%i2,%i3

# 		z7 = (uint32) u7 << 9
# sll <u7=int64#6,9,>z7=int64#3
# sll <u7=%i5,9,>z7=%i2
sll %i5,9,%i2

# 				u8 = x11 + x10
# add <x11=int64#20,<x10=int64#19,>u8=int64#7
# add <x11=%l3,<x10=%l2,>u8=%g1
add %l3,%l2,%g1

# 		u7 = (uint32) u7 >> 23
# srl <u7=int64#6,23,>u7=int64#6
# srl <u7=%i5,23,>u7=%i5
srl %i5,23,%i5

# 						x12 ^= u12
# xor <x12=int64#21,<u12=int64#4,>x12=int64#21
# xor <x12=%l4,<u12=%i3,>x12=%l4
xor %l4,%i3,%l4

# 				z8 = (uint32) u8 << 9
# sll <u8=int64#7,9,>z8=int64#4
# sll <u8=%g1,9,>z8=%i3
sll %g1,9,%i3

# u2 |= z2
# or  <u2=int64#5,<z2=int64#1,>u2=int64#1
# or  <u2=%i4,<z2=%i0,>u2=%i0
or  %i4,%i0,%i0

# 				u8 = (uint32) u8 >> 23
# srl <u8=int64#7,23,>u8=int64#7
# srl <u8=%g1,23,>u8=%g1
srl %g1,23,%g1

# 						u13 = x12 + x15
# add <x12=int64#21,<x15=int64#24,>u13=int64#8
# add <x12=%l4,<x15=%l7,>u13=%g4
add %l4,%l7,%g4

# 		u7 |= z7
# or  <u7=int64#6,<z7=int64#3,>u7=int64#3
# or  <u7=%i5,<z7=%i2,>u7=%i2
or  %i5,%i2,%i2

# x2 ^= u2
# xor <x2=int64#11,<u2=int64#1,>x2=int64#11
# xor <x2=%o1,<u2=%i0,>x2=%o1
xor %o1,%i0,%o1

# 						z13 = (uint32) u13 << 9
# sll <u13=int64#8,9,>z13=int64#5
# sll <u13=%g4,9,>z13=%i4
sll %g4,9,%i4

# 		x7 ^= u7
# xor <x7=int64#16,<u7=int64#3,>x7=int64#16
# xor <x7=%o7,<u7=%i2,>x7=%o7
xor %o7,%i2,%o7

# 						u13 = (uint32) u13 >> 23
# srl <u13=int64#8,23,>u13=int64#8
# srl <u13=%g4,23,>u13=%g4
srl %g4,23,%g4

# 				u8 |= z8
# or  <u8=int64#7,<z8=int64#4,>u8=int64#3
# or  <u8=%g1,<z8=%i3,>u8=%i2
or  %g1,%i3,%i2

# u3 = x2 + x1
# add <x2=int64#11,<x1=int64#10,>u3=int64#4
# add <x2=%o1,<x1=%o0,>u3=%i3
add %o1,%o0,%i3

# 		u4 = x7 + x6
# add <x7=int64#16,<x6=int64#15,>u4=int64#6
# add <x7=%o7,<x6=%o5,>u4=%i5
add %o7,%o5,%i5

# z3 = (uint32) u3 << 13
# sll <u3=int64#4,13,>z3=int64#1
# sll <u3=%i3,13,>z3=%i0
sll %i3,13,%i0

# 				x8 ^= u8
# xor <x8=int64#17,<u8=int64#3,>x8=int64#17
# xor <x8=%l0,<u8=%i2,>x8=%l0
xor %l0,%i2,%l0

# 		z4 = (uint32) u4 << 13
# sll <u4=int64#6,13,>z4=int64#3
# sll <u4=%i5,13,>z4=%i2
sll %i5,13,%i2

# 						u13 |= z13
# or  <u13=int64#8,<z13=int64#5,>u13=int64#8
# or  <u13=%g4,<z13=%i4,>u13=%g4
or  %g4,%i4,%g4

# u3 = (uint32) u3 >> 19
# srl <u3=int64#4,19,>u3=int64#5
# srl <u3=%i3,19,>u3=%i4
srl %i3,19,%i4

# 				u9 = x8 + x11
# add <x8=int64#17,<x11=int64#20,>u9=int64#7
# add <x8=%l0,<x11=%l3,>u9=%g1
add %l0,%l3,%g1

# 		u4 = (uint32) u4 >> 19
# srl <u4=int64#6,19,>u4=int64#6
# srl <u4=%i5,19,>u4=%i5
srl %i5,19,%i5

# 						x13 ^= u13
# xor <x13=int64#22,<u13=int64#8,>x13=int64#22
# xor <x13=%l5,<u13=%g4,>x13=%l5
xor %l5,%g4,%l5

# 				z9 = (uint32) u9 << 13
# sll <u9=int64#7,13,>z9=int64#4
# sll <u9=%g1,13,>z9=%i3
sll %g1,13,%i3

# u3 |= z3
# or  <u3=int64#5,<z3=int64#1,>u3=int64#1
# or  <u3=%i4,<z3=%i0,>u3=%i0
or  %i4,%i0,%i0

# 				u9 = (uint32) u9 >> 19
# srl <u9=int64#7,19,>u9=int64#7
# srl <u9=%g1,19,>u9=%g1
srl %g1,19,%g1

# 						u14 = x13 + x12
# add <x13=int64#22,<x12=int64#21,>u14=int64#8
# add <x13=%l5,<x12=%l4,>u14=%g4
add %l5,%l4,%g4

# 		u4 |= z4
# or  <u4=int64#6,<z4=int64#3,>u4=int64#3
# or  <u4=%i5,<z4=%i2,>u4=%i2
or  %i5,%i2,%i2

# x3 ^= u3
# xor <x3=int64#12,<u3=int64#1,>x3=int64#12
# xor <x3=%o2,<u3=%i0,>x3=%o2
xor %o2,%i0,%o2

# 						z14 = (uint32) u14 << 13
# sll <u14=int64#8,13,>z14=int64#5
# sll <u14=%g4,13,>z14=%i4
sll %g4,13,%i4

# 		x4 ^= u4
# xor <x4=int64#13,<u4=int64#3,>x4=int64#13
# xor <x4=%o3,<u4=%i2,>x4=%o3
xor %o3,%i2,%o3

# 						u14 = (uint32) u14 >> 19
# srl <u14=int64#8,19,>u14=int64#8
# srl <u14=%g4,19,>u14=%g4
srl %g4,19,%g4

# 				u9 |= z9
# or  <u9=int64#7,<z9=int64#4,>u9=int64#3
# or  <u9=%g1,<z9=%i3,>u9=%i2
or  %g1,%i3,%i2

# u0 = x3 + x2
# add <x3=int64#12,<x2=int64#11,>u0=int64#4
# add <x3=%o2,<x2=%o1,>u0=%i3
add %o2,%o1,%i3

# 		u5 = x4 + x7
# add <x4=int64#13,<x7=int64#16,>u5=int64#6
# add <x4=%o3,<x7=%o7,>u5=%i5
add %o3,%o7,%i5

# z0 = (uint32) u0 << 18
# sll <u0=int64#4,18,>z0=int64#1
# sll <u0=%i3,18,>z0=%i0
sll %i3,18,%i0

# 				x9 ^= u9
# xor <x9=int64#18,<u9=int64#3,>x9=int64#18
# xor <x9=%l1,<u9=%i2,>x9=%l1
xor %l1,%i2,%l1

# 		z5 = (uint32) u5 << 18
# sll <u5=int64#6,18,>z5=int64#3
# sll <u5=%i5,18,>z5=%i2
sll %i5,18,%i2

# 						u14 |= z14
# or  <u14=int64#8,<z14=int64#5,>u14=int64#8
# or  <u14=%g4,<z14=%i4,>u14=%g4
or  %g4,%i4,%g4

# u0 = (uint32) u0 >> 14
# srl <u0=int64#4,14,>u0=int64#5
# srl <u0=%i3,14,>u0=%i4
srl %i3,14,%i4

# 				u10 = x9 + x8
# add <x9=int64#18,<x8=int64#17,>u10=int64#7
# add <x9=%l1,<x8=%l0,>u10=%g1
add %l1,%l0,%g1

# 		u5 = (uint32) u5 >> 14
# srl <u5=int64#6,14,>u5=int64#6
# srl <u5=%i5,14,>u5=%i5
srl %i5,14,%i5

# 						x14 ^= u14
# xor <x14=int64#23,<u14=int64#8,>x14=int64#23
# xor <x14=%l6,<u14=%g4,>x14=%l6
xor %l6,%g4,%l6

# 				z10 = (uint32) u10 << 18
# sll <u10=int64#7,18,>z10=int64#4
# sll <u10=%g1,18,>z10=%i3
sll %g1,18,%i3

# u0 |= z0
# or  <u0=int64#5,<z0=int64#1,>u0=int64#1
# or  <u0=%i4,<z0=%i0,>u0=%i0
or  %i4,%i0,%i0

# 				u10 = (uint32) u10 >> 14
# srl <u10=int64#7,14,>u10=int64#5
# srl <u10=%g1,14,>u10=%i4
srl %g1,14,%i4

# 						u15 = x14 + x13
# add <x14=int64#23,<x13=int64#22,>u15=int64#7
# add <x14=%l6,<x13=%l5,>u15=%g1
add %l6,%l5,%g1

# 		u5 |= z5
# or  <u5=int64#6,<z5=int64#3,>u5=int64#3
# or  <u5=%i5,<z5=%i2,>u5=%i2
or  %i5,%i2,%i2

# x0 ^= u0
# xor <x0=int64#9,<u0=int64#1,>x0=int64#9
# xor <x0=%g5,<u0=%i0,>x0=%g5
xor %g5,%i0,%g5

# 						z15 = (uint32) u15 << 18
# sll <u15=int64#7,18,>z15=int64#1
# sll <u15=%g1,18,>z15=%i0
sll %g1,18,%i0

# 		x5 ^= u5
# xor <x5=int64#14,<u5=int64#3,>x5=int64#14
# xor <x5=%o4,<u5=%i2,>x5=%o4
xor %o4,%i2,%o4

# 						u15 = (uint32) u15 >> 14
# srl <u15=int64#7,14,>u15=int64#6
# srl <u15=%g1,14,>u15=%i5
srl %g1,14,%i5

# flags i -= 2
# subcc <i=int64#2,2,>i=int64#2
# subcc <i=%i1,2,>i=%i1
subcc %i1,2,%i1

# 				u10 |= z10
# or  <u10=int64#5,<z10=int64#4,>u10=int64#3
# or  <u10=%i4,<z10=%i3,>u10=%i2
or  %i4,%i3,%i2

# 						u15 |= z15
# or  <u15=int64#6,<z15=int64#1,>u15=int64#1
# or  <u15=%i5,<z15=%i0,>u15=%i0
or  %i5,%i0,%i0

# 				x10 ^= u10
# xor <x10=int64#19,<u10=int64#3,>x10=int64#19
# xor <x10=%l2,<u10=%i2,>x10=%l2
xor %l2,%i2,%l2

# 						x15 ^= u15
# xor <x15=int64#24,<u15=int64#1,>x15=int64#24
# xor <x15=%l7,<u15=%i0,>x15=%l7
xor %l7,%i0,%l7

# goto mainloop if unsigned>
bgu,pt %xcc,._mainloop
nop

#   x = x_stack
# ldx [%fp+2023-<x_stack=stack64#5],>x=int64#1
# ldx [%fp+2023-<x_stack=96],>x=%i0
ldx [%fp+2023-96],%i0

#   q0 = *(uint32 *) (x + 0)
# lduw [<x=int64#1+0],>q0=int64#2
# lduw [<x=%i0+0],>q0=%i1
lduw [%i0+0],%i1

#   q1 = *(uint32 *) (x + 4)
# lduw [<x=int64#1+4],>q1=int64#4
# lduw [<x=%i0+4],>q1=%i3
lduw [%i0+4],%i3

#   q2 = *(uint32 *) (x + 8)
# lduw [<x=int64#1+8],>q2=int64#5
# lduw [<x=%i0+8],>q2=%i4
lduw [%i0+8],%i4

#   q3 = *(uint32 *) (x + 12)
# lduw [<x=int64#1+12],>q3=int64#7
# lduw [<x=%i0+12],>q3=%g1
lduw [%i0+12],%g1

#   x0 += q0
# add <x0=int64#9,<q0=int64#2,>x0=int64#3
# add <x0=%g5,<q0=%i1,>x0=%i2
add %g5,%i1,%i2

#   q4 = *(uint32 *) (x + 16)
# lduw [<x=int64#1+16],>q4=int64#2
# lduw [<x=%i0+16],>q4=%i1
lduw [%i0+16],%i1

#   x1 += q1
# add <x1=int64#10,<q1=int64#4,>x1=int64#4
# add <x1=%o0,<q1=%i3,>x1=%i3
add %o0,%i3,%i3

#   q5 = *(uint32 *) (x + 20)
# lduw [<x=int64#1+20],>q5=int64#9
# lduw [<x=%i0+20],>q5=%g5
lduw [%i0+20],%g5

#   x2 += q2
# add <x2=int64#11,<q2=int64#5,>x2=int64#6
# add <x2=%o1,<q2=%i4,>x2=%i5
add %o1,%i4,%i5

#   q6 = *(uint32 *) (x + 24)
# lduw [<x=int64#1+24],>q6=int64#5
# lduw [<x=%i0+24],>q6=%i4
lduw [%i0+24],%i4

#   x3 += q3
# add <x3=int64#12,<q3=int64#7,>x3=int64#7
# add <x3=%o2,<q3=%g1,>x3=%g1
add %o2,%g1,%g1

#   q7 = *(uint32 *) (x + 28)
# lduw [<x=int64#1+28],>q7=int64#11
# lduw [<x=%i0+28],>q7=%o1
lduw [%i0+28],%o1

#   x4 += q4
# add <x4=int64#13,<q4=int64#2,>x4=int64#8
# add <x4=%o3,<q4=%i1,>x4=%g4
add %o3,%i1,%g4

#   q8 = *(uint32 *) (x + 32)
# lduw [<x=int64#1+32],>q8=int64#2
# lduw [<x=%i0+32],>q8=%i1
lduw [%i0+32],%i1

#   x5 += q5
# add <x5=int64#14,<q5=int64#9,>x5=int64#9
# add <x5=%o4,<q5=%g5,>x5=%g5
add %o4,%g5,%g5

#   q9 = *(uint32 *) (x + 36)
# lduw [<x=int64#1+36],>q9=int64#14
# lduw [<x=%i0+36],>q9=%o4
lduw [%i0+36],%o4

#   x6 += q6
# add <x6=int64#15,<q6=int64#5,>x6=int64#10
# add <x6=%o5,<q6=%i4,>x6=%o0
add %o5,%i4,%o0

#   q10 = *(uint32 *) (x + 40)
# lduw [<x=int64#1+40],>q10=int64#5
# lduw [<x=%i0+40],>q10=%i4
lduw [%i0+40],%i4

#   x7 += q7
# add <x7=int64#16,<q7=int64#11,>x7=int64#11
# add <x7=%o7,<q7=%o1,>x7=%o1
add %o7,%o1,%o1

#   q11 = *(uint32 *) (x + 44)
# lduw [<x=int64#1+44],>q11=int64#15
# lduw [<x=%i0+44],>q11=%o5
lduw [%i0+44],%o5

#   x8 += q8
# add <x8=int64#17,<q8=int64#2,>x8=int64#12
# add <x8=%l0,<q8=%i1,>x8=%o2
add %l0,%i1,%o2

#   q8 += 1
# add <q8=int64#2,1,>q8=int64#2
# add <q8=%i1,1,>q8=%i1
add %i1,1,%i1

#   *(uint32 *) (x + 32) = q8
# stw <q8=int64#2,[<x=int64#1+32]
# stw <q8=%i1,[<x=%i0+32]
stw %i1,[%i0+32]

#   q8 = (uint64) q8 >> 32
# srlx <q8=int64#2,32,>q8=int64#2
# srlx <q8=%i1,32,>q8=%i1
srlx %i1,32,%i1

#   q12 = *(uint32 *) (x + 48)
# lduw [<x=int64#1+48],>q12=int64#16
# lduw [<x=%i0+48],>q12=%o7
lduw [%i0+48],%o7

#   x9 += q9
# add <x9=int64#18,<q9=int64#14,>x9=int64#13
# add <x9=%l1,<q9=%o4,>x9=%o3
add %l1,%o4,%o3

#   q9 += q8
# add <q9=int64#14,<q8=int64#2,>q9=int64#2
# add <q9=%o4,<q8=%i1,>q9=%i1
add %o4,%i1,%i1

#   *(uint32 *) (x + 36) = q9
# stw <q9=int64#2,[<x=int64#1+36]
# stw <q9=%i1,[<x=%i0+36]
stw %i1,[%i0+36]

#   q13 = *(uint32 *) (x + 52)
# lduw [<x=int64#1+52],>q13=int64#2
# lduw [<x=%i0+52],>q13=%i1
lduw [%i0+52],%i1

#   x10 += q10
# add <x10=int64#19,<q10=int64#5,>x10=int64#14
# add <x10=%l2,<q10=%i4,>x10=%o4
add %l2,%i4,%o4

#   q14 = *(uint32 *) (x + 56)
# lduw [<x=int64#1+56],>q14=int64#5
# lduw [<x=%i0+56],>q14=%i4
lduw [%i0+56],%i4

#   x11 += q11
# add <x11=int64#20,<q11=int64#15,>x11=int64#15
# add <x11=%l3,<q11=%o5,>x11=%o5
add %l3,%o5,%o5

#   q15 = *(uint32 *) (x + 60)
# lduw [<x=int64#1+60],>q15=int64#19
# lduw [<x=%i0+60],>q15=%l2
lduw [%i0+60],%l2

#   x12 += q12
# add <x12=int64#21,<q12=int64#16,>x12=int64#16
# add <x12=%l4,<q12=%o7,>x12=%o7
add %l4,%o7,%o7

#   x13 += q13
# add <x13=int64#22,<q13=int64#2,>x13=int64#17
# add <x13=%l5,<q13=%i1,>x13=%l0
add %l5,%i1,%l0

#   x14 += q14
# add <x14=int64#23,<q14=int64#5,>x14=int64#18
# add <x14=%l6,<q14=%i4,>x14=%l1
add %l6,%i4,%l1

#   x15 += q15
# add <x15=int64#24,<q15=int64#19,>x15=int64#19
# add <x15=%l7,<q15=%l2,>x15=%l2
add %l7,%l2,%l2

#   m = m_stack
# ldx [%fp+2023-<m_stack=stack64#4],>m=int64#2
# ldx [%fp+2023-<m_stack=88],>m=%i1
ldx [%fp+2023-88],%i1

#   m0 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m0=int64#5
# lduwa [<m=%i1] 0x88,>m0=%i4
lduwa [%i1] 0x88,%i4

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   m1 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m1=int64#20
# lduwa [<m=%i1] 0x88,>m1=%l3
lduwa [%i1] 0x88,%l3

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   m2 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m2=int64#21
# lduwa [<m=%i1] 0x88,>m2=%l4
lduwa [%i1] 0x88,%l4

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   m3 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m3=int64#22
# lduwa [<m=%i1] 0x88,>m3=%l5
lduwa [%i1] 0x88,%l5

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x0 ^= m0
# xor <x0=int64#3,<m0=int64#5,>x0=int64#3
# xor <x0=%i2,<m0=%i4,>x0=%i2
xor %i2,%i4,%i2

#   m4 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m4=int64#23
# lduwa [<m=%i1] 0x88,>m4=%l6
lduwa [%i1] 0x88,%l6

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x1 ^= m1
# xor <x1=int64#4,<m1=int64#20,>x1=int64#5
# xor <x1=%i3,<m1=%l3,>x1=%i4
xor %i3,%l3,%i4

#   m5 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m5=int64#4
# lduwa [<m=%i1] 0x88,>m5=%i3
lduwa [%i1] 0x88,%i3

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x2 ^= m2
# xor <x2=int64#6,<m2=int64#21,>x2=int64#6
# xor <x2=%i5,<m2=%l4,>x2=%i5
xor %i5,%l4,%i5

#   m6 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m6=int64#20
# lduwa [<m=%i1] 0x88,>m6=%l3
lduwa [%i1] 0x88,%l3

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x3 ^= m3
# xor <x3=int64#7,<m3=int64#22,>x3=int64#7
# xor <x3=%g1,<m3=%l5,>x3=%g1
xor %g1,%l5,%g1

#   m7 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m7=int64#21
# lduwa [<m=%i1] 0x88,>m7=%l4
lduwa [%i1] 0x88,%l4

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x4 ^= m4
# xor <x4=int64#8,<m4=int64#23,>x4=int64#8
# xor <x4=%g4,<m4=%l6,>x4=%g4
xor %g4,%l6,%g4

#   m8 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m8=int64#22
# lduwa [<m=%i1] 0x88,>m8=%l5
lduwa [%i1] 0x88,%l5

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x5 ^= m5
# xor <x5=int64#9,<m5=int64#4,>x5=int64#9
# xor <x5=%g5,<m5=%i3,>x5=%g5
xor %g5,%i3,%g5

#   m9 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m9=int64#4
# lduwa [<m=%i1] 0x88,>m9=%i3
lduwa [%i1] 0x88,%i3

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x6 ^= m6
# xor <x6=int64#10,<m6=int64#20,>x6=int64#10
# xor <x6=%o0,<m6=%l3,>x6=%o0
xor %o0,%l3,%o0

#   m10 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m10=int64#20
# lduwa [<m=%i1] 0x88,>m10=%l3
lduwa [%i1] 0x88,%l3

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x7 ^= m7
# xor <x7=int64#11,<m7=int64#21,>x7=int64#11
# xor <x7=%o1,<m7=%l4,>x7=%o1
xor %o1,%l4,%o1

#   m11 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m11=int64#21
# lduwa [<m=%i1] 0x88,>m11=%l4
lduwa [%i1] 0x88,%l4

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x8 ^= m8
# xor <x8=int64#12,<m8=int64#22,>x8=int64#12
# xor <x8=%o2,<m8=%l5,>x8=%o2
xor %o2,%l5,%o2

#   m12 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m12=int64#22
# lduwa [<m=%i1] 0x88,>m12=%l5
lduwa [%i1] 0x88,%l5

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x9 ^= m9
# xor <x9=int64#13,<m9=int64#4,>x9=int64#13
# xor <x9=%o3,<m9=%i3,>x9=%o3
xor %o3,%i3,%o3

#   m13 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m13=int64#23
# lduwa [<m=%i1] 0x88,>m13=%l6
lduwa [%i1] 0x88,%l6

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x10 ^= m10
# xor <x10=int64#14,<m10=int64#20,>x10=int64#14
# xor <x10=%o4,<m10=%l3,>x10=%o4
xor %o4,%l3,%o4

#   m14 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m14=int64#20
# lduwa [<m=%i1] 0x88,>m14=%l3
lduwa [%i1] 0x88,%l3

#   m += 4
# add <m=int64#2,4,>m=int64#2
# add <m=%i1,4,>m=%i1
add %i1,4,%i1

#   x11 ^= m11
# xor <x11=int64#15,<m11=int64#21,>x11=int64#15
# xor <x11=%o5,<m11=%l4,>x11=%o5
xor %o5,%l4,%o5

#   m15 = *(swapendian uint32 *) m
# lduwa [<m=int64#2] 0x88,>m15=int64#21
# lduwa [<m=%i1] 0x88,>m15=%l4
lduwa [%i1] 0x88,%l4

#   m += 4
# add <m=int64#2,4,>m=int64#4
# add <m=%i1,4,>m=%i3
add %i1,4,%i3

#   x12 ^= m12
# xor <x12=int64#16,<m12=int64#22,>x12=int64#16
# xor <x12=%o7,<m12=%l5,>x12=%o7
xor %o7,%l5,%o7

#   x13 ^= m13
# xor <x13=int64#17,<m13=int64#23,>x13=int64#17
# xor <x13=%l0,<m13=%l6,>x13=%l0
xor %l0,%l6,%l0

#   x14 ^= m14
# xor <x14=int64#18,<m14=int64#20,>x14=int64#18
# xor <x14=%l1,<m14=%l3,>x14=%l1
xor %l1,%l3,%l1

#   x15 ^= m15
# xor <x15=int64#19,<m15=int64#21,>x15=int64#19
# xor <x15=%l2,<m15=%l4,>x15=%l2
xor %l2,%l4,%l2

#   out = out_stack
# ldx [%fp+2023-<out_stack=stack64#3],>out=int64#2
# ldx [%fp+2023-<out_stack=80],>out=%i1
ldx [%fp+2023-80],%i1

#   *(swapendian uint32 *) out = x0
# stwa <x0=int64#3,[<out=int64#2] 0x88
# stwa <x0=%i2,[<out=%i1] 0x88
stwa %i2,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x1
# stwa <x1=int64#5,[<out=int64#2] 0x88
# stwa <x1=%i4,[<out=%i1] 0x88
stwa %i4,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x2
# stwa <x2=int64#6,[<out=int64#2] 0x88
# stwa <x2=%i5,[<out=%i1] 0x88
stwa %i5,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x3
# stwa <x3=int64#7,[<out=int64#2] 0x88
# stwa <x3=%g1,[<out=%i1] 0x88
stwa %g1,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x4
# stwa <x4=int64#8,[<out=int64#2] 0x88
# stwa <x4=%g4,[<out=%i1] 0x88
stwa %g4,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x5
# stwa <x5=int64#9,[<out=int64#2] 0x88
# stwa <x5=%g5,[<out=%i1] 0x88
stwa %g5,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x6
# stwa <x6=int64#10,[<out=int64#2] 0x88
# stwa <x6=%o0,[<out=%i1] 0x88
stwa %o0,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x7
# stwa <x7=int64#11,[<out=int64#2] 0x88
# stwa <x7=%o1,[<out=%i1] 0x88
stwa %o1,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x8
# stwa <x8=int64#12,[<out=int64#2] 0x88
# stwa <x8=%o2,[<out=%i1] 0x88
stwa %o2,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x9
# stwa <x9=int64#13,[<out=int64#2] 0x88
# stwa <x9=%o3,[<out=%i1] 0x88
stwa %o3,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x10
# stwa <x10=int64#14,[<out=int64#2] 0x88
# stwa <x10=%o4,[<out=%i1] 0x88
stwa %o4,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x11
# stwa <x11=int64#15,[<out=int64#2] 0x88
# stwa <x11=%o5,[<out=%i1] 0x88
stwa %o5,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x12
# stwa <x12=int64#16,[<out=int64#2] 0x88
# stwa <x12=%o7,[<out=%i1] 0x88
stwa %o7,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x13
# stwa <x13=int64#17,[<out=int64#2] 0x88
# stwa <x13=%l0,[<out=%i1] 0x88
stwa %l0,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x14
# stwa <x14=int64#18,[<out=int64#2] 0x88
# stwa <x14=%l1,[<out=%i1] 0x88
stwa %l1,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#2
# add <out=%i1,4,>out=%i1
add %i1,4,%i1

#   *(swapendian uint32 *) out = x15
# stwa <x15=int64#19,[<out=int64#2] 0x88
# stwa <x15=%l2,[<out=%i1] 0x88
stwa %l2,[%i1] 0x88

#   out += 4
# add <out=int64#2,4,>out=int64#5
# add <out=%i1,4,>out=%i4
add %i1,4,%i4

#   bytes = bytes_stack
# ldx [%fp+2023-<bytes_stack=stack64#2],>bytes=int64#2
# ldx [%fp+2023-<bytes_stack=72],>bytes=%i1
ldx [%fp+2023-72],%i1

#   flags bytes -= 64
# subcc <bytes=int64#2,64,>bytes=int64#6
# subcc <bytes=%i1,64,>bytes=%i5
subcc %i1,64,%i5

#   goto bytesatleast1 if unsigned>
bgu,pt %xcc,._bytesatleast1
nop

#   goto done if unsigned>=
bgeu,pt %xcc,._done
nop

#     m = ctarget
# ldx [%fp+2023-<ctarget=stack64#1],>m=int64#3
# ldx [%fp+2023-<ctarget=64],>m=%i2
ldx [%fp+2023-64],%i2

#     bytes += 64
# add <bytes=int64#6,64,>bytes=int64#6
# add <bytes=%i5,64,>bytes=%i5
add %i5,64,%i5

#     out -= 64
# sub <out=int64#5,64,>out=int64#4
# sub <out=%i4,64,>out=%i3
sub %i4,64,%i3

#     i = 0
# add %g0,0,>i=int64#1
# add %g0,0,>i=%i0
add %g0,0,%i0

#     ccopyloop#
._ccopyloop:

#       a = *(int8 *) (out + i)
# ldsb [<out=int64#4+<i=int64#1],>a=int64#2
# ldsb [<out=%i3+<i=%i0],>a=%i1
ldsb [%i3+%i0],%i1

#       *(int8 *) (m + i) = a
# stb <a=int64#2,[<m=int64#3+<i=int64#1]
# stb <a=%i1,[<m=%i2+<i=%i0]
stb %i1,[%i2+%i0]

#       i += 1
# add <i=int64#1,1,>i=int64#1
# add <i=%i0,1,>i=%i0
add %i0,1,%i0

#       flags i - bytes
# subcc <i=int64#1,<bytes=int64#6,%g0
# subcc <i=%i0,<bytes=%i5,%g0
subcc %i0,%i5,%g0

#     goto ccopyloop if unsigned<
blu,pt %xcc,._ccopyloop
nop

# done#
._done:

# leave
ret
restore

eSTREAM Project

Powered by ViewCVS 1.0-dev
(Powered by Apache)

ViewCVS and CVS Help