# qhasm: stack32 arg_out # qhasm: stack32 arg_m # qhasm: stack32 arg_l # qhasm: stack32 arg_ltop # qhasm: stack32 arg_k # qhasm: input arg_out # qhasm: input arg_m # qhasm: input arg_l # qhasm: input arg_ltop # qhasm: input arg_k # qhasm: int32 eax # qhasm: int32 ebx # qhasm: int32 esi # qhasm: int32 edi # qhasm: int32 ebp # qhasm: caller eax # qhasm: caller ebx # qhasm: caller esi # qhasm: caller edi # qhasm: caller ebp # qhasm: stack32 eax_stack # qhasm: stack32 ebx_stack # qhasm: stack32 esi_stack # qhasm: stack32 edi_stack # qhasm: stack32 ebp_stack # qhasm: int32 out # qhasm: stack32 out_stack # qhasm: int32 k # qhasm: stack32 k_stack # qhasm: int32 m # qhasm: int32 l # qhasm: int32 m0 # qhasm: int32 m1 # qhasm: int32 m2 # qhasm: int32 m3 # qhasm: float80 a0 # qhasm: float80 a1 # qhasm: float80 a2 # qhasm: float80 a3 # qhasm: float80 h0 # qhasm: float80 h1 # qhasm: float80 h2 # qhasm: float80 h3 # qhasm: float80 x0 # qhasm: float80 x1 # qhasm: float80 x2 # qhasm: float80 x3 # qhasm: float80 y0 # qhasm: float80 y1 # qhasm: float80 y2 # qhasm: float80 y3 # qhasm: float80 r0x0 # qhasm: float80 r1x0 # qhasm: float80 r2x0 # qhasm: float80 r3x0 # qhasm: float80 r0x1 # qhasm: float80 r1x1 # qhasm: float80 r2x1 # qhasm: float80 sr3x1 # qhasm: float80 r0x2 # qhasm: float80 r1x2 # qhasm: float80 sr2x2 # qhasm: float80 sr3x2 # qhasm: float80 r0x3 # qhasm: float80 sr1x3 # qhasm: float80 sr2x3 # qhasm: float80 sr3x3 # qhasm: stack64 d0 # qhasm: stack64 d1 # qhasm: stack64 d2 # qhasm: stack64 d3 # qhasm: stack64 r0 # qhasm: stack64 r1 # qhasm: stack64 r2 # qhasm: stack64 r3 # qhasm: stack64 sr1 # qhasm: stack64 sr2 # qhasm: stack64 sr3 # qhasm: enter crypto_onetimeauth_poly1305_x86 stackaligned4096 crypto_onetimeauth_poly1305_x86_constants .text .p2align 5 .globl _crypto_onetimeauth_poly1305_x86 .globl crypto_onetimeauth_poly1305_x86 _crypto_onetimeauth_poly1305_x86: crypto_onetimeauth_poly1305_x86: mov %esp,%eax sub $crypto_onetimeauth_poly1305_x86_constants,%eax and $4095,%eax add $192,%eax sub %eax,%esp # qhasm: eax_stack = eax # asm 1: movl eax_stack=stack32#1 # asm 2: movl eax_stack=0(%esp) movl %eax,0(%esp) # qhasm: ebx_stack = ebx # asm 1: movl ebx_stack=stack32#2 # asm 2: movl ebx_stack=4(%esp) movl %ebx,4(%esp) # qhasm: esi_stack = esi # asm 1: movl esi_stack=stack32#3 # asm 2: movl esi_stack=8(%esp) movl %esi,8(%esp) # qhasm: edi_stack = edi # asm 1: movl edi_stack=stack32#4 # asm 2: movl edi_stack=12(%esp) movl %edi,12(%esp) # qhasm: ebp_stack = ebp # asm 1: movl ebp_stack=stack32#5 # asm 2: movl ebp_stack=16(%esp) movl %ebp,16(%esp) # qhasm: round *(uint16 *) &crypto_onetimeauth_poly1305_x86_rounding fldcw crypto_onetimeauth_poly1305_x86_rounding # qhasm: k = arg_k # asm 1: movl k=int32#3 # asm 2: movl k=%edx movl 20(%esp,%eax),%edx # qhasm: m0 = *(uint32 *) (k + 0) # asm 1: movl 0(m0=int32#2 # asm 2: movl 0(m0=%ecx movl 0(%edx),%ecx # qhasm: m1 = *(uint32 *) (k + 4) # asm 1: movl 4(m1=int32#4 # asm 2: movl 4(m1=%ebx movl 4(%edx),%ebx # qhasm: m2 = *(uint32 *) (k + 8) # asm 1: movl 8(m2=int32#5 # asm 2: movl 8(m2=%esi movl 8(%edx),%esi # qhasm: m3 = *(uint32 *) (k + 12) # asm 1: movl 12(m3=int32#6 # asm 2: movl 12(m3=%edi movl 12(%edx),%edi # qhasm: d0 top = 0x43300000 # asm 1: movl $0x43300000,>d0=stack64#1 # asm 2: movl $0x43300000,>d0=100(%esp) movl $0x43300000,100(%esp) # qhasm: d1 top = 0x45300000 # asm 1: movl $0x45300000,>d1=stack64#2 # asm 2: movl $0x45300000,>d1=108(%esp) movl $0x45300000,108(%esp) # qhasm: d2 top = 0x47300000 # asm 1: movl $0x47300000,>d2=stack64#3 # asm 2: movl $0x47300000,>d2=116(%esp) movl $0x47300000,116(%esp) # qhasm: d3 top = 0x49300000 # asm 1: movl $0x49300000,>d3=stack64#4 # asm 2: movl $0x49300000,>d3=124(%esp) movl $0x49300000,124(%esp) # qhasm: m0 &= 0x0fffffff # asm 1: and $0x0fffffff,r0=stack64#5 # asm 2: fstpl >r0=128(%esp) fstpl 128(%esp) # comment:fpstackfrombottom:r1=stack64#6 # asm 2: fstl >r1=136(%esp) fstl 136(%esp) # comment:fpstackfrombottom:sr1=stack64#7 # asm 2: fstpl >sr1=144(%esp) fstpl 144(%esp) # comment:fpstackfrombottom:r2=stack64#8 # asm 2: fstl >r2=152(%esp) fstl 152(%esp) # comment:fpstackfrombottom:sr2=stack64#9 # asm 2: fstpl >sr2=160(%esp) fstpl 160(%esp) # comment:fpstackfrombottom:r3=stack64#10 # asm 2: fstl >r3=168(%esp) fstl 168(%esp) # comment:fpstackfrombottom:sr3=stack64#11 # asm 2: fstpl >sr3=176(%esp) fstpl 176(%esp) # comment:fpstackfrombottom: # qhasm: out = arg_out # asm 1: movl out=int32#4 # asm 2: movl out=%ebx movl 4(%esp,%eax),%ebx # qhasm: m = arg_m # asm 1: movl m=int32#5 # asm 2: movl m=%esi movl 8(%esp,%eax),%esi # qhasm: l = arg_l # asm 1: movl l=int32#2 # asm 2: movl l=%ecx movl 12(%esp,%eax),%ecx # qhasm: h3 = 0 fldz # comment:fpstackfrombottom:k_stack=stack32#6 # asm 2: movl k_stack=20(%esp) movl %edx,20(%esp) # comment:fpstackfrombottom:out_stack=stack32#7 # asm 2: movl out_stack=24(%esp) movl %ebx,24(%esp) # comment:fpstackfrombottom:m3=int32#1 # asm 2: movl 12(m3=%eax movl 12(%esi),%eax # comment:fpstackfrombottom:m2=int32#3 # asm 2: movl 8(m2=%edx movl 8(%esi),%edx # comment:fpstackfrombottom:m1=int32#4 # asm 2: movl 4(m1=%ebx movl 4(%esi),%ebx # comment:fpstackfrombottom:m0=int32#6 # asm 2: movl 0(m0=%edi movl 0(%esi),%edi # comment:fpstackfrombottom:m3=int32#1 # asm 2: movl 12(m3=%eax movl 12(%esi),%eax # comment:fpstackfrombottom:m2=int32#3 # asm 2: movl 8(m2=%edx movl 8(%esi),%edx # comment:fpstackfrombottom:m1=int32#4 # asm 2: movl 4(m1=%ebx movl 4(%esi),%ebx # comment:fpstackfrombottom:m0=int32#6 # asm 2: movl 0(m0=%edi movl 0(%esi),%edi # comment:fpstackfrombottom:lastchunk=stack128#1 # asm 2: movl $0,>lastchunk=64(%esp) movl $0,64(%esp) # comment:fpstackfrombottom:destination=int32#6 # asm 2: leal destination=%edi leal 64(%esp),%edi # comment:fpstackfrombottom:m3=int32#1 # asm 2: movl 12+m3=%eax movl 12+64(%esp),%eax # comment:fpstackfrombottom:m2=int32#2 # asm 2: movl 8+m2=%ecx movl 8+64(%esp),%ecx # comment:fpstackfrombottom:m1=int32#3 # asm 2: movl 4+m1=%edx movl 4+64(%esp),%edx # comment:fpstackfrombottom:m0=int32#4 # asm 2: movl m0=%ebx movl 64(%esp),%ebx # comment:fpstackfrombottom:d0=stack64#1 # asm 2: fstpl >d0=96(%esp) fstpl 96(%esp) # comment:fpstackfrombottom:d1=stack64#2 # asm 2: fstpl >d1=104(%esp) fstpl 104(%esp) # comment:fpstackfrombottom:d2=stack64#3 # asm 2: fstpl >d2=112(%esp) fstpl 112(%esp) # comment:fpstackfrombottom:d3=stack64#4 # asm 2: fstpl >d3=120(%esp) fstpl 120(%esp) # comment:fpstackfrombottom: # qhasm: int32 f0 # qhasm: int32 f1 # qhasm: int32 f2 # qhasm: int32 f3 # qhasm: int32 f4 # qhasm: int32 g0 # qhasm: int32 g1 # qhasm: int32 g2 # qhasm: int32 g3 # qhasm: int32 f # qhasm: int32 notf # qhasm: stack32 f1_stack # qhasm: stack32 f2_stack # qhasm: stack32 f3_stack # qhasm: stack32 f4_stack # qhasm: stack32 g0_stack # qhasm: stack32 g1_stack # qhasm: stack32 g2_stack # qhasm: stack32 g3_stack # qhasm: g0 = top d0 # asm 1: movl g0=int32#1 # asm 2: movl g0=%eax movl 100(%esp),%eax # qhasm: g0 &= 63 # asm 1: and $63,g1=int32#2 # asm 2: movl g1=%ecx movl 108(%esp),%ecx # qhasm: g1 &= 63 # asm 1: and $63,g2=int32#3 # asm 2: movl g2=%edx movl 116(%esp),%edx # qhasm: g2 &= 63 # asm 1: and $63,g3=int32#4 # asm 2: movl g3=%ebx movl 124(%esp),%ebx # qhasm: g3 &= 63 # asm 1: and $63,f1=int32#5 # asm 2: movl f1=%esi movl 104(%esp),%esi # qhasm: carry? f1 += g0 # asm 1: addl f1_stack=stack32#8 # asm 2: movl f1_stack=28(%esp) movl %esi,28(%esp) # qhasm: f2 = bottom d2 # asm 1: movl f2=int32#1 # asm 2: movl f2=%eax movl 112(%esp),%eax # qhasm: carry? f2 += g1 + carry # asm 1: adcl f2_stack=stack32#9 # asm 2: movl f2_stack=32(%esp) movl %eax,32(%esp) # qhasm: f3 = bottom d3 # asm 1: movl f3=int32#1 # asm 2: movl f3=%eax movl 120(%esp),%eax # qhasm: carry? f3 += g2 + carry # asm 1: adcl f3_stack=stack32#10 # asm 2: movl f3_stack=36(%esp) movl %eax,36(%esp) # qhasm: f4 = 0 # asm 1: mov $0,>f4=int32#1 # asm 2: mov $0,>f4=%eax mov $0,%eax # qhasm: carry? f4 += g3 + carry # asm 1: adcl f4_stack=stack32#11 # asm 2: movl f4_stack=40(%esp) movl %eax,40(%esp) # qhasm: g0 = 5 # asm 1: mov $5,>g0=int32#1 # asm 2: mov $5,>g0=%eax mov $5,%eax # qhasm: f0 = bottom d0 # asm 1: movl f0=int32#2 # asm 2: movl f0=%ecx movl 96(%esp),%ecx # qhasm: carry? g0 += f0 # asm 1: addl g0_stack=stack32#12 # asm 2: movl g0_stack=44(%esp) movl %eax,44(%esp) # qhasm: g1 = 0 # asm 1: mov $0,>g1=int32#1 # asm 2: mov $0,>g1=%eax mov $0,%eax # qhasm: f1 = f1_stack # asm 1: movl f1=int32#3 # asm 2: movl f1=%edx movl 28(%esp),%edx # qhasm: carry? g1 += f1 + carry # asm 1: adcl g1_stack=stack32#8 # asm 2: movl g1_stack=28(%esp) movl %eax,28(%esp) # qhasm: g2 = 0 # asm 1: mov $0,>g2=int32#1 # asm 2: mov $0,>g2=%eax mov $0,%eax # qhasm: f2 = f2_stack # asm 1: movl f2=int32#4 # asm 2: movl f2=%ebx movl 32(%esp),%ebx # qhasm: carry? g2 += f2 + carry # asm 1: adcl g2_stack=stack32#9 # asm 2: movl g2_stack=32(%esp) movl %eax,32(%esp) # qhasm: g3 = 0 # asm 1: mov $0,>g3=int32#1 # asm 2: mov $0,>g3=%eax mov $0,%eax # qhasm: f3 = f3_stack # asm 1: movl f3=int32#5 # asm 2: movl f3=%esi movl 36(%esp),%esi # qhasm: carry? g3 += f3 + carry # asm 1: adcl g3_stack=stack32#10 # asm 2: movl g3_stack=36(%esp) movl %eax,36(%esp) # qhasm: f = 0xfffffffc # asm 1: mov $0xfffffffc,>f=int32#1 # asm 2: mov $0xfffffffc,>f=%eax mov $0xfffffffc,%eax # qhasm: f4 = f4_stack # asm 1: movl f4=int32#6 # asm 2: movl f4=%edi movl 40(%esp),%edi # qhasm: carry? f += f4 + carry # asm 1: adcl >= 16 # asm 1: sar $16,notf=int32#6 # asm 2: mov notf=%edi mov %eax,%edi # qhasm: notf ^= 0xffffffff # asm 1: xor $0xffffffff,g0=int32#7 # asm 2: movl g0=%ebp movl 44(%esp),%ebp # qhasm: g0 &= notf # asm 1: andl g1=int32#7 # asm 2: movl g1=%ebp movl 28(%esp),%ebp # qhasm: g1 &= notf # asm 1: andl g2=int32#7 # asm 2: movl g2=%ebp movl 32(%esp),%ebp # qhasm: g2 &= notf # asm 1: andl g3=int32#1 # asm 2: movl g3=%eax movl 36(%esp),%eax # qhasm: g3 &= notf # asm 1: andl k=int32#1 # asm 2: movl k=%eax movl 20(%esp),%eax # qhasm: carry? f0 += *(uint32 *) (k + 16) # asm 1: addl 16(out=int32#1 # asm 2: movl out=%eax movl 24(%esp),%eax # qhasm: *(uint32 *) (out + 0) = f0 # asm 1: movl eax=int32#1 # asm 2: movl eax=%eax movl 0(%esp),%eax # qhasm: ebx = ebx_stack # asm 1: movl ebx=int32#4 # asm 2: movl ebx=%ebx movl 4(%esp),%ebx # qhasm: esi = esi_stack # asm 1: movl esi=int32#5 # asm 2: movl esi=%esi movl 8(%esp),%esi # qhasm: edi = edi_stack # asm 1: movl edi=int32#6 # asm 2: movl edi=%edi movl 12(%esp),%edi # qhasm: ebp = ebp_stack # asm 1: movl ebp=int32#7 # asm 2: movl ebp=%ebp movl 16(%esp),%ebp # qhasm: leave add %eax,%esp xor %eax,%eax ret