# salsa20_sparc.s version 20060106 # 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 [x6=int64#3 # lduw [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 [x7=int64#2 # lduw [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 # add x=%i0 add %i0,24,%i0 # *(swapendian int32 *) x = x6 # stwa x=int64#1 # add x=%i0 add %i0,4,%i0 # *(swapendian int32 *) x = x7 # stwa x=int64#1 # add x=%i0 add %i0,4,%i0 # *(int32 *) (x + 0) = x8 # stw x=int64#1 # add x=%i0 add %i0,4,%i0 # *(int32 *) (x + 0) = x9 # stw bgu,pt %xcc,._kbits256 nop # kbits128# ._kbits128: # x1 = *(uint32 *) (arg2 + 0) # lduw [x1=int64#4 # lduw [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 [x2=int64#5 # lduw [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 [x3=int64#6 # lduw [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 [x4=int64#7 # lduw [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 [x11=int64#10 # lduw [x11=%o0 lduw [%i1+0],%o0 # x0 |= 1634760805 & 0x3ff # or x0=int64#3 # or x0=%i2 or %i2,%lo(1634760805),%i2 # x12 = *(uint32 *) (arg2 + 4) # lduw [x12=int64#11 # lduw [x12=%o1 lduw [%i1+4],%o1 # x5 |= 824206446 & 0x3ff # or x5=int64#8 # or x5=%g4 or %g4,%lo(824206446),%g4 # x13 = *(uint32 *) (arg2 + 8) # lduw [x13=int64#12 # lduw [x13=%o2 lduw [%i1+8],%o2 # x10 |= 2036477238 & 0x3ff # or x10=int64#9 # or x10=%g5 or %g5,%lo(2036477238),%g5 # x14 = *(uint32 *) (arg2 + 12) # lduw [x14=int64#2 # lduw [x14=%i1 lduw [%i1+12],%i1 # x15 |= 1797285236 & 0x3ff # or x15=int64#13 # or x15=%o3 or %o3,%lo(1797285236),%o3 # goto storekey b ._storekey nop # kbits256# ._kbits256: # x1 = *(uint32 *) (arg2 + 0) # lduw [x1=int64#4 # lduw [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 [x2=int64#5 # lduw [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 [x3=int64#6 # lduw [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 [x4=int64#7 # lduw [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 [x11=int64#10 # lduw [x11=%o0 lduw [%i1+16],%o0 # x0 |= 1634760805 & 0x3ff # or x0=int64#3 # or x0=%i2 or %i2,%lo(1634760805),%i2 # x12 = *(uint32 *) (arg2 + 20) # lduw [x12=int64#11 # lduw [x12=%o1 lduw [%i1+20],%o1 # x5 |= 857760878 & 0x3ff # or x5=int64#8 # or x5=%g4 or %g4,%lo(857760878),%g4 # x13 = *(uint32 *) (arg2 + 24) # lduw [x13=int64#12 # lduw [x13=%o2 lduw [%i1+24],%o2 # x10 |= 2036477234 & 0x3ff # or x10=int64#9 # or x10=%g5 or %g5,%lo(2036477234),%g5 # x14 = *(uint32 *) (arg2 + 28) # lduw [x14=int64#2 # lduw [x14=%i1 lduw [%i1+28],%i1 # x15 |= 1797285236 & 0x3ff # or x15=int64#13 # or x15=%o3 or %o3,%lo(1797285236),%o3 # storekey# ._storekey: # *(int32 *) (x + 0) = x0 # stw x=int64#1 # add x=%i0 add %i0,4,%i0 # *(swapendian int32 *) x = x1 # stwa x=int64#1 # add x=%i0 add %i0,4,%i0 # *(swapendian int32 *) x = x2 # stwa x=int64#1 # add x=%i0 add %i0,4,%i0 # *(swapendian int32 *) x = x3 # stwa x=int64#1 # add x=%i0 add %i0,4,%i0 # *(swapendian int32 *) x = x4 # stwa x=int64#1 # add x=%i0 add %i0,4,%i0 # *(int32 *) (x + 0) = x5 # stw x=int64#1 # add x=%i0 add %i0,20,%i0 # *(int32 *) (x + 0) = x10 # stw x=int64#1 # add x=%i0 add %i0,4,%i0 # *(swapendian int32 *) x = x11 # stwa x=int64#1 # add x=%i0 add %i0,4,%i0 # *(swapendian int32 *) x = x12 # stwa x=int64#1 # add x=%i0 add %i0,4,%i0 # *(swapendian int32 *) x = x13 # stwa x=int64#1 # add x=%i0 add %i0,4,%i0 # *(swapendian int32 *) x = x14 # stwa x=int64#1 # add x=%i0 add %i0,4,%i0 # *(int32 *) (x + 0) = x15 # stw bytes=int64#6 # add %g0,bytes=%i5 add %g0,%i2,%i5 # m = arg2 # add %g0,m=int64#4 # add %g0,m=%i3 add %g0,%i1,%i3 # out = arg2 # add %g0,out=int64#5 # add %g0,out=%i4 add %g0,%i1,%i4 # flags bytes - 0 # subcc a=int64#3 # add %g0,0,>a=%i2 add %g0,0,%i2 # i = bytes # add %g0,i=int64#2 # add %g0,i=%i1 add %g0,%i5,%i1 # zeroloop# ._zeroloop: # *(int8 *) (out + 0) = a # stb out=int64#5 # add out=%i4 add %i4,1,%i4 # flags i -= 1 # subcc i=int64#2 # subcc i=%i1 subcc %i1,1,%i1 # goto zeroloop if unsigned> bgu,pt %xcc,._zeroloop nop # out -= bytes # sub out=int64#5 # sub 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,bytes=int64#6 # add %g0,bytes=%i5 add %g0,%i3,%i5 # m = arg2 # add %g0,m=int64#4 # add %g0,m=%i3 add %g0,%i1,%i3 # out = arg3 # add %g0,out=int64#5 # add %g0,out=%i4 add %g0,%i2,%i4 # flags bytes - 0 # subcc bytes=int64#6 # add %g0,bytes=%i5 add %g0,%i3,%i5 # m = arg2 # add %g0,m=int64#4 # add %g0,m=%i3 add %g0,%i1,%i3 # out = arg3 # add %g0,out=int64#5 # add %g0,out=%i4 add %g0,%i2,%i4 # flags bytes - 0 # subcc = bgeu,pt %xcc,._bytesatleast64 nop # ctarget = out # stx ctarget=stack64#1] # stx 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 [a=int64#3 # ldsb [a=%i2 ldsb [%i3+%i1],%i2 # *(int8 *) (out + i) = a # stb i=int64#2 # add i=%i1 add %i1,1,%i1 # flags i - bytes # subcc 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 [x0=int64#9 # lduw [x0=%g5 lduw [%i0+0],%g5 # x1 = *(uint32 *) (x + 4) # lduw [x1=int64#10 # lduw [x1=%o0 lduw [%i0+4],%o0 # x2 = *(uint32 *) (x + 8) # lduw [x2=int64#11 # lduw [x2=%o1 lduw [%i0+8],%o1 # x3 = *(uint32 *) (x + 12) # lduw [x3=int64#12 # lduw [x3=%o2 lduw [%i0+12],%o2 # x4 = *(uint32 *) (x + 16) # lduw [x4=int64#13 # lduw [x4=%o3 lduw [%i0+16],%o3 # x5 = *(uint32 *) (x + 20) # lduw [x5=int64#14 # lduw [x5=%o4 lduw [%i0+20],%o4 # x6 = *(uint32 *) (x + 24) # lduw [x6=int64#15 # lduw [x6=%o5 lduw [%i0+24],%o5 # x7 = *(uint32 *) (x + 28) # lduw [x7=int64#16 # lduw [x7=%o7 lduw [%i0+28],%o7 # x8 = *(uint32 *) (x + 32) # lduw [x8=int64#17 # lduw [x8=%l0 lduw [%i0+32],%l0 # x9 = *(uint32 *) (x + 36) # lduw [x9=int64#18 # lduw [x9=%l1 lduw [%i0+36],%l1 # x10 = *(uint32 *) (x + 40) # lduw [x10=int64#19 # lduw [x10=%l2 lduw [%i0+40],%l2 # x11 = *(uint32 *) (x + 44) # lduw [x11=int64#20 # lduw [x11=%l3 lduw [%i0+44],%l3 # x12 = *(uint32 *) (x + 48) # lduw [x12=int64#21 # lduw [x12=%l4 lduw [%i0+48],%l4 # x13 = *(uint32 *) (x + 52) # lduw [x13=int64#22 # lduw [x13=%l5 lduw [%i0+52],%l5 # x14 = *(uint32 *) (x + 56) # lduw [x14=int64#23 # lduw [x14=%l6 lduw [%i0+56],%l6 # x15 = *(uint32 *) (x + 60) # lduw [x15=int64#24 # lduw [x15=%l7 lduw [%i0+60],%l7 # i = 20 # add %g0,20,>i=int64#2 # add %g0,20,>i=%i1 add %g0,20,%i1 # bytes_stack = bytes # stx bytes_stack=stack64#2] # stx bytes_stack=72] stx %i5,[%fp+2023-72] # out_stack = out # stx out_stack=stack64#3] # stx out_stack=80] stx %i4,[%fp+2023-80] # m_stack = m # stx m_stack=stack64#4] # stx m_stack=88] stx %i3,[%fp+2023-88] # x_stack = x # stx x_stack=stack64#5] # stx x_stack=96] stx %i0,[%fp+2023-96] # mainloop# ._mainloop: # y4 = x0 + x12 # add y4=int64#3 # add y4=%i2 add %g5,%l4,%i2 # y9 = x5 + x1 # add y9=int64#6 # add y9=%i5 add %o4,%o0,%i5 # z4 = (uint32) y4 << 7 # sll z4=int64#1 # sll z4=%i0 sll %i2,7,%i0 # y14 = x10 + x6 # add y14=int64#7 # add y14=%g1 add %l2,%o5,%g1 # y4 = (uint32) y4 >> 25 # srl y4=int64#4 # srl y4=%i3 srl %i2,25,%i3 # y3 = x15 + x11 # add y3=int64#5 # add y3=%i4 add %l7,%l3,%i4 # z9 = (uint32) y9 << 7 # sll z9=int64#3 # sll z9=%i2 sll %i5,7,%i2 # y4 |= z4 # or y4=int64#1 # or y4=%i0 or %i3,%i0,%i0 # y9 = (uint32) y9 >> 25 # srl y9=int64#6 # srl y9=%i5 srl %i5,25,%i5 # x4 ^= y4 # xor x4=int64#13 # xor x4=%o3 xor %o3,%i0,%o3 # z14 = (uint32) y14 << 7 # sll z14=int64#4 # sll z14=%i3 sll %g1,7,%i3 # y9 |= z9 # or y9=int64#3 # or y9=%i2 or %i5,%i2,%i2 # y14 = (uint32) y14 >> 25 # srl y14=int64#7 # srl y14=%g1 srl %g1,25,%g1 # y8 = x4 + x0 # add y8=int64#6 # add y8=%i5 add %o3,%g5,%i5 # z3 = (uint32) y3 << 7 # sll z3=int64#1 # sll z3=%i0 sll %i4,7,%i0 # x9 ^= y9 # xor x9=int64#18 # xor x9=%l1 xor %l1,%i2,%l1 # y3 = (uint32) y3 >> 25 # srl y3=int64#5 # srl y3=%i4 srl %i4,25,%i4 # y14 |= z14 # or y14=int64#4 # or y14=%i3 or %g1,%i3,%i3 # z8 = (uint32) y8 << 9 # sll z8=int64#3 # sll z8=%i2 sll %i5,9,%i2 # y13 = x9 + x5 # add y13=int64#7 # add y13=%g1 add %l1,%o4,%g1 # y8 = (uint32) y8 >> 23 # srl y8=int64#6 # srl y8=%i5 srl %i5,23,%i5 # x14 ^= y14 # xor x14=int64#23 # xor x14=%l6 xor %l6,%i3,%l6 # y3 |= z3 # or y3=int64#1 # or y3=%i0 or %i4,%i0,%i0 # y2 = x14 + x10 # add y2=int64#5 # add y2=%i4 add %l6,%l2,%i4 # z13 = (uint32) y13 << 9 # sll z13=int64#4 # sll z13=%i3 sll %g1,9,%i3 # x3 ^= y3 # xor x3=int64#12 # xor x3=%o2 xor %o2,%i0,%o2 # y13 = (uint32) y13 >> 23 # srl y13=int64#7 # srl y13=%g1 srl %g1,23,%g1 # y8 |= z8 # or y8=int64#3 # or y8=%i2 or %i5,%i2,%i2 # z2 = (uint32) y2 << 9 # sll z2=int64#1 # sll z2=%i0 sll %i4,9,%i0 # y7 = x3 + x15 # add y7=int64#6 # add y7=%i5 add %o2,%l7,%i5 # y2 = (uint32) y2 >> 23 # srl y2=int64#5 # srl y2=%i4 srl %i4,23,%i4 # x8 ^= y8 # xor x8=int64#17 # xor x8=%l0 xor %l0,%i2,%l0 # y13 |= z13 # or y13=int64#4 # or y13=%i3 or %g1,%i3,%i3 # y12 = x8 + x4 # add y12=int64#7 # add y12=%g1 add %l0,%o3,%g1 # z7 = (uint32) y7 << 9 # sll z7=int64#3 # sll z7=%i2 sll %i5,9,%i2 # x13 ^= y13 # xor x13=int64#22 # xor x13=%l5 xor %l5,%i3,%l5 # y7 = (uint32) y7 >> 23 # srl y7=int64#6 # srl y7=%i5 srl %i5,23,%i5 # y2 |= z2 # or y2=int64#1 # or y2=%i0 or %i4,%i0,%i0 # z12 = (uint32) y12 << 13 # sll z12=int64#4 # sll z12=%i3 sll %g1,13,%i3 # y1 = x13 + x9 # add y1=int64#5 # add y1=%i4 add %l5,%l1,%i4 # y12 = (uint32) y12 >> 19 # srl y12=int64#7 # srl y12=%g1 srl %g1,19,%g1 # x2 ^= y2 # xor x2=int64#11 # xor x2=%o1 xor %o1,%i0,%o1 # y7 |= z7 # or y7=int64#3 # or y7=%i2 or %i5,%i2,%i2 # y6 = x2 + x14 # add y6=int64#6 # add y6=%i5 add %o1,%l6,%i5 # z1 = (uint32) y1 << 13 # sll z1=int64#1 # sll z1=%i0 sll %i4,13,%i0 # x7 ^= y7 # xor x7=int64#16 # xor x7=%o7 xor %o7,%i2,%o7 # y1 = (uint32) y1 >> 19 # srl y1=int64#5 # srl y1=%i4 srl %i4,19,%i4 # y12 |= z12 # or y12=int64#4 # or y12=%i3 or %g1,%i3,%i3 # z6 = (uint32) y6 << 13 # sll z6=int64#3 # sll z6=%i2 sll %i5,13,%i2 # y11 = x7 + x3 # add y11=int64#7 # add y11=%g1 add %o7,%o2,%g1 # y6 = (uint32) y6 >> 19 # srl y6=int64#6 # srl y6=%i5 srl %i5,19,%i5 # x12 ^= y12 # xor x12=int64#21 # xor x12=%l4 xor %l4,%i3,%l4 # y1 |= z1 # or y1=int64#1 # or y1=%i0 or %i4,%i0,%i0 # y0 = x12 + x8 # add y0=int64#5 # add y0=%i4 add %l4,%l0,%i4 # z11 = (uint32) y11 << 13 # sll z11=int64#4 # sll z11=%i3 sll %g1,13,%i3 # x1 ^= y1 # xor x1=int64#10 # xor x1=%o0 xor %o0,%i0,%o0 # y11 = (uint32) y11 >> 19 # srl y11=int64#7 # srl y11=%g1 srl %g1,19,%g1 # y6 |= z6 # or y6=int64#3 # or y6=%i2 or %i5,%i2,%i2 # z0 = (uint32) y0 << 18 # sll z0=int64#1 # sll z0=%i0 sll %i4,18,%i0 # y5 = x1 + x13 # add y5=int64#6 # add y5=%i5 add %o0,%l5,%i5 # y0 = (uint32) y0 >> 14 # srl y0=int64#5 # srl y0=%i4 srl %i4,14,%i4 # x6 ^= y6 # xor x6=int64#15 # xor x6=%o5 xor %o5,%i2,%o5 # y11 |= z11 # or y11=int64#4 # or y11=%i3 or %g1,%i3,%i3 # y10 = x6 + x2 # add y10=int64#7 # add y10=%g1 add %o5,%o1,%g1 # z5 = (uint32) y5 << 18 # sll z5=int64#3 # sll z5=%i2 sll %i5,18,%i2 # x11 ^= y11 # xor x11=int64#20 # xor x11=%l3 xor %l3,%i3,%l3 # y5 = (uint32) y5 >> 14 # srl y5=int64#6 # srl y5=%i5 srl %i5,14,%i5 # y0 |= z0 # or y0=int64#4 # or y0=%i3 or %i4,%i0,%i3 # z10 = (uint32) y10 << 18 # sll z10=int64#1 # sll z10=%i0 sll %g1,18,%i0 # y15 = x11 + x7 # add y15=int64#8 # add y15=%g4 add %l3,%o7,%g4 # y10 = (uint32) y10 >> 14 # srl y10=int64#7 # srl y10=%g1 srl %g1,14,%g1 # x0 ^= y0 # xor x0=int64#9 # xor x0=%g5 xor %g5,%i3,%g5 # y5 |= z5 # or y5=int64#5 # or y5=%i4 or %i5,%i2,%i4 # u1 = x0 + x3 # add u1=int64#4 # add u1=%i3 add %g5,%o2,%i3 # z15 = (uint32) y15 << 18 # sll z15=int64#3 # sll z15=%i2 sll %g4,18,%i2 # x5 ^= y5 # xor x5=int64#14 # xor x5=%o4 xor %o4,%i4,%o4 # y15 = (uint32) y15 >> 14 # srl y15=int64#8 # srl y15=%g4 srl %g4,14,%g4 # y10 |= z10 # or y10=int64#6 # or y10=%i5 or %g1,%i0,%i5 # z1 = (uint32) u1 << 7 # sll z1=int64#1 # sll z1=%i0 sll %i3,7,%i0 # u6 = x5 + x4 # add u6=int64#5 # add u6=%i4 add %o4,%o3,%i4 # u1 = (uint32) u1 >> 25 # srl u1=int64#4 # srl u1=%i3 srl %i3,25,%i3 # x10 ^= y10 # xor x10=int64#19 # xor x10=%l2 xor %l2,%i5,%l2 # y15 |= z15 # or y15=int64#7 # or y15=%g1 or %g4,%i2,%g1 # u11 = x10 + x9 # add u11=int64#6 # add u11=%i5 add %l2,%l1,%i5 # z6 = (uint32) u6 << 7 # sll z6=int64#3 # sll z6=%i2 sll %i4,7,%i2 # x15 ^= y15 # xor x15=int64#24 # xor x15=%l7 xor %l7,%g1,%l7 # u6 = (uint32) u6 >> 25 # srl u6=int64#5 # srl u6=%i4 srl %i4,25,%i4 # u1 |= z1 # or u1=int64#4 # or u1=%i3 or %i3,%i0,%i3 # z11 = (uint32) u11 << 7 # sll z11=int64#1 # sll z11=%i0 sll %i5,7,%i0 # u12 = x15 + x14 # add u12=int64#7 # add u12=%g1 add %l7,%l6,%g1 # u11 = (uint32) u11 >> 25 # srl u11=int64#6 # srl u11=%i5 srl %i5,25,%i5 # u6 |= z6 # or u6=int64#5 # or u6=%i4 or %i4,%i2,%i4 # x1 ^= u1 # xor x1=int64#10 # xor x1=%o0 xor %o0,%i3,%o0 # z12 = (uint32) u12 << 7 # sll z12=int64#3 # sll z12=%i2 sll %g1,7,%i2 # x6 ^= u6 # xor x6=int64#15 # xor x6=%o5 xor %o5,%i4,%o5 # u12 = (uint32) u12 >> 25 # srl u12=int64#7 # srl u12=%g1 srl %g1,25,%g1 # u11 |= z11 # or u11=int64#5 # or u11=%i4 or %i5,%i0,%i4 # u2 = x1 + x0 # add u2=int64#4 # add u2=%i3 add %o0,%g5,%i3 # u7 = x6 + x5 # add u7=int64#6 # add u7=%i5 add %o5,%o4,%i5 # z2 = (uint32) u2 << 9 # sll z2=int64#1 # sll z2=%i0 sll %i3,9,%i0 # x11 ^= u11 # xor x11=int64#20 # xor x11=%l3 xor %l3,%i4,%l3 # u2 = (uint32) u2 >> 23 # srl u2=int64#5 # srl u2=%i4 srl %i3,23,%i4 # u12 |= z12 # or u12=int64#4 # or u12=%i3 or %g1,%i2,%i3 # z7 = (uint32) u7 << 9 # sll z7=int64#3 # sll z7=%i2 sll %i5,9,%i2 # u8 = x11 + x10 # add u8=int64#7 # add u8=%g1 add %l3,%l2,%g1 # u7 = (uint32) u7 >> 23 # srl u7=int64#6 # srl u7=%i5 srl %i5,23,%i5 # x12 ^= u12 # xor x12=int64#21 # xor x12=%l4 xor %l4,%i3,%l4 # z8 = (uint32) u8 << 9 # sll z8=int64#4 # sll z8=%i3 sll %g1,9,%i3 # u2 |= z2 # or u2=int64#1 # or u2=%i0 or %i4,%i0,%i0 # u8 = (uint32) u8 >> 23 # srl u8=int64#7 # srl u8=%g1 srl %g1,23,%g1 # u13 = x12 + x15 # add u13=int64#8 # add u13=%g4 add %l4,%l7,%g4 # u7 |= z7 # or u7=int64#3 # or u7=%i2 or %i5,%i2,%i2 # x2 ^= u2 # xor x2=int64#11 # xor x2=%o1 xor %o1,%i0,%o1 # z13 = (uint32) u13 << 9 # sll z13=int64#5 # sll z13=%i4 sll %g4,9,%i4 # x7 ^= u7 # xor x7=int64#16 # xor x7=%o7 xor %o7,%i2,%o7 # u13 = (uint32) u13 >> 23 # srl u13=int64#8 # srl u13=%g4 srl %g4,23,%g4 # u8 |= z8 # or u8=int64#3 # or u8=%i2 or %g1,%i3,%i2 # u3 = x2 + x1 # add u3=int64#4 # add u3=%i3 add %o1,%o0,%i3 # u4 = x7 + x6 # add u4=int64#6 # add u4=%i5 add %o7,%o5,%i5 # z3 = (uint32) u3 << 13 # sll z3=int64#1 # sll z3=%i0 sll %i3,13,%i0 # x8 ^= u8 # xor x8=int64#17 # xor x8=%l0 xor %l0,%i2,%l0 # z4 = (uint32) u4 << 13 # sll z4=int64#3 # sll z4=%i2 sll %i5,13,%i2 # u13 |= z13 # or u13=int64#8 # or u13=%g4 or %g4,%i4,%g4 # u3 = (uint32) u3 >> 19 # srl u3=int64#5 # srl u3=%i4 srl %i3,19,%i4 # u9 = x8 + x11 # add u9=int64#7 # add u9=%g1 add %l0,%l3,%g1 # u4 = (uint32) u4 >> 19 # srl u4=int64#6 # srl u4=%i5 srl %i5,19,%i5 # x13 ^= u13 # xor x13=int64#22 # xor x13=%l5 xor %l5,%g4,%l5 # z9 = (uint32) u9 << 13 # sll z9=int64#4 # sll z9=%i3 sll %g1,13,%i3 # u3 |= z3 # or u3=int64#1 # or u3=%i0 or %i4,%i0,%i0 # u9 = (uint32) u9 >> 19 # srl u9=int64#7 # srl u9=%g1 srl %g1,19,%g1 # u14 = x13 + x12 # add u14=int64#8 # add u14=%g4 add %l5,%l4,%g4 # u4 |= z4 # or u4=int64#3 # or u4=%i2 or %i5,%i2,%i2 # x3 ^= u3 # xor x3=int64#12 # xor x3=%o2 xor %o2,%i0,%o2 # z14 = (uint32) u14 << 13 # sll z14=int64#5 # sll z14=%i4 sll %g4,13,%i4 # x4 ^= u4 # xor x4=int64#13 # xor x4=%o3 xor %o3,%i2,%o3 # u14 = (uint32) u14 >> 19 # srl u14=int64#8 # srl u14=%g4 srl %g4,19,%g4 # u9 |= z9 # or u9=int64#3 # or u9=%i2 or %g1,%i3,%i2 # u0 = x3 + x2 # add u0=int64#4 # add u0=%i3 add %o2,%o1,%i3 # u5 = x4 + x7 # add u5=int64#6 # add u5=%i5 add %o3,%o7,%i5 # z0 = (uint32) u0 << 18 # sll z0=int64#1 # sll z0=%i0 sll %i3,18,%i0 # x9 ^= u9 # xor x9=int64#18 # xor x9=%l1 xor %l1,%i2,%l1 # z5 = (uint32) u5 << 18 # sll z5=int64#3 # sll z5=%i2 sll %i5,18,%i2 # u14 |= z14 # or u14=int64#8 # or u14=%g4 or %g4,%i4,%g4 # u0 = (uint32) u0 >> 14 # srl u0=int64#5 # srl u0=%i4 srl %i3,14,%i4 # u10 = x9 + x8 # add u10=int64#7 # add u10=%g1 add %l1,%l0,%g1 # u5 = (uint32) u5 >> 14 # srl u5=int64#6 # srl u5=%i5 srl %i5,14,%i5 # x14 ^= u14 # xor x14=int64#23 # xor x14=%l6 xor %l6,%g4,%l6 # z10 = (uint32) u10 << 18 # sll z10=int64#4 # sll z10=%i3 sll %g1,18,%i3 # u0 |= z0 # or u0=int64#1 # or u0=%i0 or %i4,%i0,%i0 # u10 = (uint32) u10 >> 14 # srl u10=int64#5 # srl u10=%i4 srl %g1,14,%i4 # u15 = x14 + x13 # add u15=int64#7 # add u15=%g1 add %l6,%l5,%g1 # u5 |= z5 # or u5=int64#3 # or u5=%i2 or %i5,%i2,%i2 # x0 ^= u0 # xor x0=int64#9 # xor x0=%g5 xor %g5,%i0,%g5 # z15 = (uint32) u15 << 18 # sll z15=int64#1 # sll z15=%i0 sll %g1,18,%i0 # x5 ^= u5 # xor x5=int64#14 # xor x5=%o4 xor %o4,%i2,%o4 # u15 = (uint32) u15 >> 14 # srl u15=int64#6 # srl u15=%i5 srl %g1,14,%i5 # flags i -= 2 # subcc i=int64#2 # subcc i=%i1 subcc %i1,2,%i1 # u10 |= z10 # or u10=int64#3 # or u10=%i2 or %i4,%i3,%i2 # u15 |= z15 # or u15=int64#1 # or u15=%i0 or %i5,%i0,%i0 # x10 ^= u10 # xor x10=int64#19 # xor x10=%l2 xor %l2,%i2,%l2 # x15 ^= u15 # xor x15=int64#24 # xor x15=%l7 xor %l7,%i0,%l7 # goto mainloop if unsigned> bgu,pt %xcc,._mainloop nop # x = x_stack # ldx [%fp+2023-x=int64#1 # ldx [%fp+2023-x=%i0 ldx [%fp+2023-96],%i0 # q0 = *(uint32 *) (x + 0) # lduw [q0=int64#2 # lduw [q0=%i1 lduw [%i0+0],%i1 # q1 = *(uint32 *) (x + 4) # lduw [q1=int64#4 # lduw [q1=%i3 lduw [%i0+4],%i3 # q2 = *(uint32 *) (x + 8) # lduw [q2=int64#5 # lduw [q2=%i4 lduw [%i0+8],%i4 # q3 = *(uint32 *) (x + 12) # lduw [q3=int64#7 # lduw [q3=%g1 lduw [%i0+12],%g1 # x0 += q0 # add x0=int64#3 # add x0=%i2 add %g5,%i1,%i2 # q4 = *(uint32 *) (x + 16) # lduw [q4=int64#2 # lduw [q4=%i1 lduw [%i0+16],%i1 # x1 += q1 # add x1=int64#4 # add x1=%i3 add %o0,%i3,%i3 # q5 = *(uint32 *) (x + 20) # lduw [q5=int64#9 # lduw [q5=%g5 lduw [%i0+20],%g5 # x2 += q2 # add x2=int64#6 # add x2=%i5 add %o1,%i4,%i5 # q6 = *(uint32 *) (x + 24) # lduw [q6=int64#5 # lduw [q6=%i4 lduw [%i0+24],%i4 # x3 += q3 # add x3=int64#7 # add x3=%g1 add %o2,%g1,%g1 # q7 = *(uint32 *) (x + 28) # lduw [q7=int64#11 # lduw [q7=%o1 lduw [%i0+28],%o1 # x4 += q4 # add x4=int64#8 # add x4=%g4 add %o3,%i1,%g4 # q8 = *(uint32 *) (x + 32) # lduw [q8=int64#2 # lduw [q8=%i1 lduw [%i0+32],%i1 # x5 += q5 # add x5=int64#9 # add x5=%g5 add %o4,%g5,%g5 # q9 = *(uint32 *) (x + 36) # lduw [q9=int64#14 # lduw [q9=%o4 lduw [%i0+36],%o4 # x6 += q6 # add x6=int64#10 # add x6=%o0 add %o5,%i4,%o0 # q10 = *(uint32 *) (x + 40) # lduw [q10=int64#5 # lduw [q10=%i4 lduw [%i0+40],%i4 # x7 += q7 # add x7=int64#11 # add x7=%o1 add %o7,%o1,%o1 # q11 = *(uint32 *) (x + 44) # lduw [q11=int64#15 # lduw [q11=%o5 lduw [%i0+44],%o5 # x8 += q8 # add x8=int64#12 # add x8=%o2 add %l0,%i1,%o2 # q8 += 1 # add q8=int64#2 # add q8=%i1 add %i1,1,%i1 # *(uint32 *) (x + 32) = q8 # stw > 32 # srlx q8=int64#2 # srlx q8=%i1 srlx %i1,32,%i1 # q12 = *(uint32 *) (x + 48) # lduw [q12=int64#16 # lduw [q12=%o7 lduw [%i0+48],%o7 # x9 += q9 # add x9=int64#13 # add x9=%o3 add %l1,%o4,%o3 # q9 += q8 # add q9=int64#2 # add q9=%i1 add %o4,%i1,%i1 # *(uint32 *) (x + 36) = q9 # stw q13=int64#2 # lduw [q13=%i1 lduw [%i0+52],%i1 # x10 += q10 # add x10=int64#14 # add x10=%o4 add %l2,%i4,%o4 # q14 = *(uint32 *) (x + 56) # lduw [q14=int64#5 # lduw [q14=%i4 lduw [%i0+56],%i4 # x11 += q11 # add x11=int64#15 # add x11=%o5 add %l3,%o5,%o5 # q15 = *(uint32 *) (x + 60) # lduw [q15=int64#19 # lduw [q15=%l2 lduw [%i0+60],%l2 # x12 += q12 # add x12=int64#16 # add x12=%o7 add %l4,%o7,%o7 # x13 += q13 # add x13=int64#17 # add x13=%l0 add %l5,%i1,%l0 # x14 += q14 # add x14=int64#18 # add x14=%l1 add %l6,%i4,%l1 # x15 += q15 # add x15=int64#19 # add x15=%l2 add %l7,%l2,%l2 # m = m_stack # ldx [%fp+2023-m=int64#2 # ldx [%fp+2023-m=%i1 ldx [%fp+2023-88],%i1 # m0 = *(swapendian uint32 *) m # lduwa [m0=int64#5 # lduwa [m0=%i4 lduwa [%i1] 0x88,%i4 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # m1 = *(swapendian uint32 *) m # lduwa [m1=int64#20 # lduwa [m1=%l3 lduwa [%i1] 0x88,%l3 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # m2 = *(swapendian uint32 *) m # lduwa [m2=int64#21 # lduwa [m2=%l4 lduwa [%i1] 0x88,%l4 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # m3 = *(swapendian uint32 *) m # lduwa [m3=int64#22 # lduwa [m3=%l5 lduwa [%i1] 0x88,%l5 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x0 ^= m0 # xor x0=int64#3 # xor x0=%i2 xor %i2,%i4,%i2 # m4 = *(swapendian uint32 *) m # lduwa [m4=int64#23 # lduwa [m4=%l6 lduwa [%i1] 0x88,%l6 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x1 ^= m1 # xor x1=int64#5 # xor x1=%i4 xor %i3,%l3,%i4 # m5 = *(swapendian uint32 *) m # lduwa [m5=int64#4 # lduwa [m5=%i3 lduwa [%i1] 0x88,%i3 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x2 ^= m2 # xor x2=int64#6 # xor x2=%i5 xor %i5,%l4,%i5 # m6 = *(swapendian uint32 *) m # lduwa [m6=int64#20 # lduwa [m6=%l3 lduwa [%i1] 0x88,%l3 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x3 ^= m3 # xor x3=int64#7 # xor x3=%g1 xor %g1,%l5,%g1 # m7 = *(swapendian uint32 *) m # lduwa [m7=int64#21 # lduwa [m7=%l4 lduwa [%i1] 0x88,%l4 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x4 ^= m4 # xor x4=int64#8 # xor x4=%g4 xor %g4,%l6,%g4 # m8 = *(swapendian uint32 *) m # lduwa [m8=int64#22 # lduwa [m8=%l5 lduwa [%i1] 0x88,%l5 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x5 ^= m5 # xor x5=int64#9 # xor x5=%g5 xor %g5,%i3,%g5 # m9 = *(swapendian uint32 *) m # lduwa [m9=int64#4 # lduwa [m9=%i3 lduwa [%i1] 0x88,%i3 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x6 ^= m6 # xor x6=int64#10 # xor x6=%o0 xor %o0,%l3,%o0 # m10 = *(swapendian uint32 *) m # lduwa [m10=int64#20 # lduwa [m10=%l3 lduwa [%i1] 0x88,%l3 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x7 ^= m7 # xor x7=int64#11 # xor x7=%o1 xor %o1,%l4,%o1 # m11 = *(swapendian uint32 *) m # lduwa [m11=int64#21 # lduwa [m11=%l4 lduwa [%i1] 0x88,%l4 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x8 ^= m8 # xor x8=int64#12 # xor x8=%o2 xor %o2,%l5,%o2 # m12 = *(swapendian uint32 *) m # lduwa [m12=int64#22 # lduwa [m12=%l5 lduwa [%i1] 0x88,%l5 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x9 ^= m9 # xor x9=int64#13 # xor x9=%o3 xor %o3,%i3,%o3 # m13 = *(swapendian uint32 *) m # lduwa [m13=int64#23 # lduwa [m13=%l6 lduwa [%i1] 0x88,%l6 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x10 ^= m10 # xor x10=int64#14 # xor x10=%o4 xor %o4,%l3,%o4 # m14 = *(swapendian uint32 *) m # lduwa [m14=int64#20 # lduwa [m14=%l3 lduwa [%i1] 0x88,%l3 # m += 4 # add m=int64#2 # add m=%i1 add %i1,4,%i1 # x11 ^= m11 # xor x11=int64#15 # xor x11=%o5 xor %o5,%l4,%o5 # m15 = *(swapendian uint32 *) m # lduwa [m15=int64#21 # lduwa [m15=%l4 lduwa [%i1] 0x88,%l4 # m += 4 # add m=int64#4 # add m=%i3 add %i1,4,%i3 # x12 ^= m12 # xor x12=int64#16 # xor x12=%o7 xor %o7,%l5,%o7 # x13 ^= m13 # xor x13=int64#17 # xor x13=%l0 xor %l0,%l6,%l0 # x14 ^= m14 # xor x14=int64#18 # xor x14=%l1 xor %l1,%l3,%l1 # x15 ^= m15 # xor x15=int64#19 # xor x15=%l2 xor %l2,%l4,%l2 # out = out_stack # ldx [%fp+2023-out=int64#2 # ldx [%fp+2023-out=%i1 ldx [%fp+2023-80],%i1 # *(swapendian uint32 *) out = x0 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x1 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x2 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x3 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x4 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x5 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x6 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x7 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x8 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x9 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x10 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x11 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x12 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x13 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x14 # stwa out=int64#2 # add out=%i1 add %i1,4,%i1 # *(swapendian uint32 *) out = x15 # stwa out=int64#5 # add out=%i4 add %i1,4,%i4 # bytes = bytes_stack # ldx [%fp+2023-bytes=int64#2 # ldx [%fp+2023-bytes=%i1 ldx [%fp+2023-72],%i1 # flags bytes -= 64 # subcc bytes=int64#6 # subcc 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-m=int64#3 # ldx [%fp+2023-m=%i2 ldx [%fp+2023-64],%i2 # bytes += 64 # add bytes=int64#6 # add bytes=%i5 add %i5,64,%i5 # out -= 64 # sub out=int64#4 # sub 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 [a=int64#2 # ldsb [a=%i1 ldsb [%i3+%i0],%i1 # *(int8 *) (m + i) = a # stb i=int64#1 # add i=%i0 add %i0,1,%i0 # flags i - bytes # subcc