typedef unsigned long long uint64; #define SHR(x,c) ((x) >> (c)) #define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) #define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) #define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) # #define flip(x) ROTR(x,32) #define Ch(x,y,z) (z ^ (x & (y ^ z))) #define Maj(x,y,z) ((x & (y ^ z)) ^ (y & z)) #define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) #define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) #define reverse(x) __builtin_bswap64(x) #define load64(x) *(uint64 *) (x) #define store64(x,y) *(uint64 *) (x) = y #define eq(x,y) (x == y) #define ge(x,y) (x >= y) // qhasm: ptr input_0 // qhasm: ptr input_1 // qhasm: int32 input_2 // qhasm: ptr input_3 // qhasm: spill64 r0_spill // qhasm: spill64 r1_spill // qhasm: spill64 r2_spill // qhasm: spill64 r3_spill // qhasm: spill64 r4_spill // qhasm: spill64 r5_spill // qhasm: spill64 r6_spill // qhasm: spill64 r7_spill // qhasm: spill64 w0_spill // qhasm: spill64 w1_spill // qhasm: spill64 w2_spill // qhasm: spill64 w3_spill // qhasm: spill64 w4_spill // qhasm: spill64 w5_spill // qhasm: spill64 w6_spill // qhasm: spill64 w7_spill // qhasm: stack64 w8_stack // qhasm: stack64 state0 // qhasm: stack64 state1 // qhasm: stack64 state2 // qhasm: stack64 state3 // qhasm: stack64 state4 // qhasm: stack64 state5 // qhasm: stack64 state6 // qhasm: stack64 state7 // qhasm: int64 r0 // qhasm: int64 r1 // qhasm: int64 r2 // qhasm: int64 r3 // qhasm: int64 r4 // qhasm: int64 r5 // qhasm: int64 r6 // qhasm: int64 r7 // qhasm: int64 w0 // qhasm: int64 w1 // qhasm: int64 w2 // qhasm: int64 w3 // qhasm: int64 w4 // qhasm: int64 w5 // qhasm: int64 w6 // qhasm: int64 w7 // qhasm: stack64 w0_next // qhasm: stack64 w1_next // qhasm: stack64 w2_next // qhasm: stack64 w3_next // qhasm: stack64 w4_next // qhasm: stack64 w5_next // qhasm: stack64 w6_next // qhasm: stack64 w7_next // qhasm: int64 w8 // qhasm: int64 w9 // qhasm: int64 w10 // qhasm: int64 w11 // qhasm: int64 w12 // qhasm: int64 w13 // qhasm: int64 w14 // qhasm: int64 w15 // qhasm: int32 i // qhasm: ptr statebytes // qhasm: ptr in // qhasm: int32 inlen // qhasm: ptr constants // qhasm: stackptr in_stack // qhasm: stackptr statebytes_stack // qhasm: stack32 inlen_stack // qhasm: stack32 i_stack // qhasm: pushenter inner int inner(unsigned char *p0,unsigned char *p1,unsigned int i2,unsigned char *p3) { int equal; int unsignedge; unsigned char *p2; unsigned int i0,i1,i3,i4,i5,i6,i7,i8,i9; uint64 u0,u1,u2,u3,u4,u5,u6,u7; uint64 m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18; unsigned char *n0,*n1,*n2; unsigned int o0,o1,o2; uint64 d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16; // qhasm: statebytes_stack = input_0 // asm 1: >statebytes_stack=stackptr#1 = statebytes_stack=n0 = in_stack=stackptr#2 = in_stack=n1 = inlen=int32#1 = inlen=i0 = inlen_stack=stack32#1 = inlen_stack=o0 = r0=int64#1 = flip(load64(r0=u0 = flip(load64(r1=int64#2 = flip(load64(r1=u1 = flip(load64(r2=int64#3 = flip(load64(r2=u2 = flip(load64(r3=int64#4 = flip(load64(r3=u3 = flip(load64(r0=int64#1 = reverse(flip(r0=u0 = reverse(flip(r1=int64#2 = reverse(flip(r1=u1 = reverse(flip(r2=int64#3 = reverse(flip(r2=u2 = reverse(flip(r3=int64#4 = reverse(flip(r3=u3 = reverse(flip(state0=stack64#1 = state0=m0 = state1=stack64#2 = state1=m1 = state2=stack64#3 = state2=m2 = state3=stack64#4 = state3=m3 = r0_spill=spill64#1 = r0_spill=d0 = r1_spill=spill64#2 = r1_spill=d1 = r2_spill=spill64#3 = r2_spill=d2 = r3_spill=spill64#4 = r3_spill=d3 = r4=int64#1 = flip(load64(r4=u0 = flip(load64(r5=int64#2 = flip(load64(r5=u1 = flip(load64(r6=int64#3 = flip(load64(r6=u2 = flip(load64(r7=int64#4 = flip(load64(r7=u3 = flip(load64(r4=int64#1 = reverse(flip(r4=u0 = reverse(flip(r5=int64#2 = reverse(flip(r5=u1 = reverse(flip(r6=int64#3 = reverse(flip(r6=u2 = reverse(flip(r7=int64#4 = reverse(flip(r7=u3 = reverse(flip(state4=stack64#5 = state4=m4 = state5=stack64#6 = state5=m5 = state6=stack64#7 = state6=m6 = state7=stack64#8 = state7=m7 = r4_spill=spill64#5 = r4_spill=d4 = r5_spill=spill64#6 = r5_spill=d5 = r6_spill=spill64#7 = r6_spill=d6 = r7_spill=spill64#8 = r7_spill=d7 = constants=ptr#1 = constants=p0 = in=ptr#2 = in=p1 = w0=int64#1 = flip(load64(w0=u0 = flip(load64(w1=int64#2 = flip(load64(w1=u1 = flip(load64(w2=int64#3 = flip(load64(w2=u2 = flip(load64(w3=int64#4 = flip(load64(w3=u3 = flip(load64(w0=int64#1 = reverse(flip(w0=u0 = reverse(flip(w1=int64#2 = reverse(flip(w1=u1 = reverse(flip(w2=int64#3 = reverse(flip(w2=u2 = reverse(flip(w3=int64#4 = reverse(flip(w3=u3 = reverse(flip(w0_spill=spill64#9 = w0_spill=d8 = w1_spill=spill64#10 = w1_spill=d9 = w2_spill=spill64#11 = w2_spill=d10 = w3_spill=spill64#12 = w3_spill=d11 = w4=int64#1 = flip(load64(w4=u0 = flip(load64(w5=int64#2 = flip(load64(w5=u1 = flip(load64(w6=int64#3 = flip(load64(w6=u2 = flip(load64(w7=int64#4 = flip(load64(w7=u3 = flip(load64(w4=int64#1 = reverse(flip(w4=u0 = reverse(flip(w5=int64#2 = reverse(flip(w5=u1 = reverse(flip(w6=int64#3 = reverse(flip(w6=u2 = reverse(flip(w7=int64#4 = reverse(flip(w7=u3 = reverse(flip(w4_spill=spill64#13 = w4_spill=d12 = w5_spill=spill64#14 = w5_spill=d13 = w6_spill=spill64#15 = w6_spill=d14 = w7_spill=spill64#16 = w7_spill=d15 = w8=int64#1 = flip(load64(w8=u0 = flip(load64(w9=int64#2 = flip(load64(w9=u1 = flip(load64(w10=int64#3 = flip(load64(w10=u2 = flip(load64(w11=int64#4 = flip(load64(w11=u3 = flip(load64(w8=int64#1 = reverse(flip(w8=u0 = reverse(flip(w9=int64#2 = reverse(flip(w9=u1 = reverse(flip(w10=int64#3 = reverse(flip(w10=u2 = reverse(flip(w11=int64#4 = reverse(flip(w11=u3 = reverse(flip(w0_next=stack64#9 = w0_next=m8 = w1_next=stack64#10 = w1_next=m9 = w2_next=stack64#11 = w2_next=m10 = w3_next=stack64#12 = w3_next=m11 = w12=int64#1 = flip(load64(w12=u0 = flip(load64(w13=int64#2 = flip(load64(w13=u1 = flip(load64(w14=int64#3 = flip(load64(w14=u2 = flip(load64(w15=int64#4 = flip(load64(w15=u3 = flip(load64(w12=int64#1 = reverse(flip(w12=u0 = reverse(flip(w13=int64#2 = reverse(flip(w13=u1 = reverse(flip(w14=int64#3 = reverse(flip(w14=u2 = reverse(flip(w15=int64#4 = reverse(flip(w15=u3 = reverse(flip(w4_next=stack64#13 = w4_next=m12 = w5_next=stack64#14 = w5_next=m13 = w6_next=stack64#15 = w6_next=m14 = w7_next=stack64#16 = w7_next=m15 = in_stack=stackptr#2 = in_stack=n1 = i=int32#1 = 80; // asm 2: >i=i0 = 80; i0 = 80; // qhasm: i_stack = i // asm 1: >i_stack=stack32#2 = i_stack=o1 = r3=int64#1 = r3=u0 = r4=int64#2 = r4=u1 = r5=int64#3 = r5=u2 = r6=int64#4 = r6=u3 = r7=int64#5 = r7=u4 = w0=int64#6 = w0=u5 = r3_spill=spill64#4 = r3_spill=d3 = r0=int64#2 = r0=u1 = r1=int64#3 = r1=u2 = r2=int64#4 = r2=u3 = r7_spill=spill64#8 = r7_spill=d7 = r4=int64#2 = r4=u1 = r5=int64#3 = r5=u2 = r6=int64#5 = r6=u4 = w1=int64#6 = w1=u5 = r2_spill=spill64#3 = r2_spill=d2 = r7=int64#1 = r7=u0 = r0=int64#2 = r0=u1 = r1=int64#3 = r1=u2 = r6_spill=spill64#7 = r6_spill=d6 = r3=int64#1 = r3=u0 = r4=int64#2 = r4=u1 = r5=int64#5 = r5=u4 = w2=int64#6 = w2=u5 = r1_spill=spill64#2 = r1_spill=d1 = r6=int64#1 = r6=u0 = r7=int64#2 = r7=u1 = r0=int64#4 = r0=u3 = r5_spill=spill64#6 = r5_spill=d5 = r2=int64#1 = r2=u0 = r3=int64#2 = r3=u1 = r4=int64#5 = r4=u4 = w3=int64#6 = w3=u5 = r0_spill=spill64#1 = r0_spill=d0 = r5=int64#1 = r5=u0 = r6=int64#2 = r6=u1 = r7=int64#3 = r7=u2 = r4_spill=spill64#5 = r4_spill=d4 = r1=int64#1 = r1=u0 = r2=int64#2 = r2=u1 = r3=int64#5 = r3=u4 = w4=int64#6 = w4=u5 = r7_spill=spill64#8 = r7_spill=d7 = r4=int64#1 = r4=u0 = r5=int64#2 = r5=u1 = r6=int64#4 = r6=u3 = r3_spill=spill64#4 = r3_spill=d3 = r0=int64#1 = r0=u0 = r1=int64#2 = r1=u1 = r2=int64#5 = r2=u4 = w5=int64#6 = w5=u5 = r6_spill=spill64#7 = r6_spill=d6 = r3=int64#1 = r3=u0 = r4=int64#2 = r4=u1 = r5=int64#3 = r5=u2 = r2_spill=spill64#3 = r2_spill=d2 = r7=int64#1 = r7=u0 = r0=int64#2 = r0=u1 = r1=int64#5 = r1=u4 = w6=int64#6 = w6=u5 = r5_spill=spill64#6 = r5_spill=d5 = r2=int64#1 = r2=u0 = r3=int64#2 = r3=u1 = r4=int64#4 = r4=u3 = r1_spill=spill64#2 = r1_spill=d1 = r6=int64#1 = r6=u0 = r7=int64#2 = r7=u1 = r0=int64#5 = r0=u4 = w7=int64#6 = w7=u5 = r4_spill=spill64#5 = r4_spill=d4 = r1=int64#1 = r1=u0 = r2=int64#2 = r2=u1 = r3=int64#3 = r3=u2 = r0_spill=spill64#1 = r0_spill=d0 = i=int32#1 = i=i0 = i_stack=stack32#2 = i_stack=o1 = w8=int64#1 = w8=u0 = w9=int64#2 = w9=u1 = w6=int64#3 = w6=u2 = w1=int64#4 = w1=u3 = w1_spill=spill64#10 = w1_spill=d9 = w7=int64#4 = w7=u3 = w8_stack=stack64#16 = w8_stack=m15 = w10=int64#5 = w10=u4 = w2=int64#6 = w2=u5 = w2_spill=spill64#11 = w2_spill=d10 = w1_next=stack64#10 = w1_next=m9 = w11=int64#1 = w11=u0 = w3=int64#6 = w3=u5 = w3_spill=spill64#12 = w3_spill=d11 = w2_next=stack64#11 = w2_next=m10 = w12=int64#2 = w12=u1 = w4=int64#6 = w4=u5 = w4_spill=spill64#13 = w4_spill=d12 = w3_next=stack64#12 = w3_next=m11 = w13=int64#5 = w13=u4 = w5=int64#6 = w5=u5 = w5_spill=spill64#14 = w5_spill=d13 = w4_next=stack64#13 = w4_next=m12 = w14=int64#1 = w14=u0 = w6_spill=spill64#15 = w6_spill=d14 = w5_next=stack64#14 = w5_next=m13 = w15=int64#2 = w15=u1 = w7_spill=spill64#16 = w7_spill=d15 = w6_next=stack64#15 = w6_next=m14 = w0=int64#1 = w0=u0 = w8=int64#3 = w8=u2 = w0_next=stack64#9 = w0_next=m8 = w7_next=stack64#16 = w7_next=m15 = w0_spill=spill64#9 = w0_spill=d8 = w0=int64#1 = w0=u0 = w1=int64#2 = w1=u1 = w2=int64#3 = w2=u2 = w3=int64#4 = w3=u3 = w0_spill=spill64#9 = w0_spill=d8 = w1_spill=spill64#10 = w1_spill=d9 = w2_spill=spill64#11 = w2_spill=d10 = w3_spill=spill64#12 = w3_spill=d11 = w4=int64#1 = w4=u0 = w5=int64#2 = w5=u1 = w6=int64#3 = w6=u2 = w7=int64#4 = w7=u3 = w4_spill=spill64#13 = w4_spill=d12 = w5_spill=spill64#14 = w5_spill=d13 = w6_spill=spill64#15 = w6_spill=d14 = w7_spill=spill64#16 = w7_spill=d15 = r0=int64#1 = r0=u0 = r1=int64#2 = r1=u1 = r2=int64#3 = r2=u2 = r3=int64#4 = r3=u3 = state0=stack64#1 = state0=m0 = state1=stack64#2 = state1=m1 = state2=stack64#3 = state2=m2 = state3=stack64#4 = state3=m3 = r0_spill=spill64#1 = r0_spill=d0 = r1_spill=spill64#2 = r1_spill=d1 = r2_spill=spill64#3 = r2_spill=d2 = r3_spill=spill64#4 = r3_spill=d3 = r4=int64#1 = r4=u0 = r5=int64#2 = r5=u1 = r6=int64#3 = r6=u2 = r7=int64#4 = r7=u3 = state4=stack64#5 = state4=m4 = state5=stack64#6 = state5=m5 = state6=stack64#7 = state6=m6 = state7=stack64#8 = state7=m7 = r4_spill=spill64#5 = r4_spill=d4 = r5_spill=spill64#6 = r5_spill=d5 = r6_spill=spill64#7 = r6_spill=d6 = r7_spill=spill64#8 = r7_spill=d7 = inlen=int32#1 = inlen=i0 = =? inlen -= 128 // asm 1: equal = eq(inlen_stack=stack32#1 = inlen_stack=o0 = = if (unsignedge) goto label_mainloop; // qhasm: endmainloop: label_endmainloop: // qhasm: statebytes = statebytes_stack // asm 1: >statebytes=ptr#1 = statebytes=p0 = r0=int64#1 = r0=u0 = r1=int64#2 = r1=u1 = r2=int64#3 = r2=u2 = r3=int64#4 = r3=u3 = r0=int64#1 = reverse(flip(r0=u0 = reverse(flip(r1=int64#2 = reverse(flip(r1=u1 = reverse(flip(r2=int64#3 = reverse(flip(r2=u2 = reverse(flip(r3=int64#4 = reverse(flip(r3=u3 = reverse(flip(r4=int64#1 = r4=u0 = r5=int64#2 = r5=u1 = r6=int64#3 = r6=u2 = r7=int64#4 = r7=u3 = r4=int64#1 = reverse(flip(r4=u0 = reverse(flip(r5=int64#2 = reverse(flip(r5=u1 = reverse(flip(r6=int64#3 = reverse(flip(r6=u2 = reverse(flip(r7=int64#4 = reverse(flip(r7=u3 = reverse(flip(