# qhasm: int32 a # qhasm: int32 p # qhasm: int32 s # qhasm: int32 t # qhasm: int32 w # qhasm: int32 r # qhasm: int32 v # qhasm: stack32 arg1 # qhasm: stack32 arg2 # qhasm: stack32 arg3 # qhasm: stack32 arg4 # qhasm: input arg1 # qhasm: input arg2 # qhasm: input arg3 # qhasm: input arg4 # 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: int32 k # qhasm: int32 kbits # qhasm: int32 iv # qhasm: int32 i # qhasm: stack32 x_backup # qhasm: int32 x # qhasm: stack32 m_backup # qhasm: int32 m # qhasm: stack32 out_backup # qhasm: int32 out # qhasm: stack32 bytes_backup # qhasm: int32 bytes # qhasm: stack32 eax_stack # qhasm: stack32 ebx_stack # qhasm: stack32 esi_stack # qhasm: stack32 edi_stack # qhasm: stack32 ebp_stack # qhasm: int32 in0 # qhasm: int32 in1 # qhasm: int32 in2 # qhasm: int32 in3 # qhasm: int32 in4 # qhasm: int32 in5 # qhasm: int32 in6 # qhasm: int32 in7 # qhasm: int32 in8 # qhasm: int32 in9 # qhasm: int32 in10 # qhasm: int32 in11 # qhasm: int32 in12 # qhasm: int32 in13 # qhasm: int32 in14 # qhasm: int32 in15 # qhasm: stack32 x0 # qhasm: stack32 x1 # qhasm: stack32 x2 # qhasm: stack32 x3 # qhasm: stack32 x4 # qhasm: stack32 x5 # qhasm: stack32 x6 # qhasm: stack32 x7 # qhasm: stack32 x8 # qhasm: stack32 x9 # qhasm: stack32 x10 # qhasm: stack32 x11 # qhasm: stack32 x12 # qhasm: stack32 x13 # qhasm: stack32 x14 # qhasm: stack32 x15 # qhasm: stack32 j0 # qhasm: stack32 j1 # qhasm: stack32 j2 # qhasm: stack32 j3 # qhasm: stack32 j4 # qhasm: stack32 j5 # qhasm: stack32 j6 # qhasm: stack32 j7 # qhasm: stack32 j8 # qhasm: stack32 j9 # qhasm: stack32 j10 # qhasm: stack32 j11 # qhasm: stack32 j12 # qhasm: stack32 j13 # qhasm: stack32 j14 # qhasm: stack32 j15 # qhasm: stack512 tmp # qhasm: stack32 ctarget # qhasm: enter ECRYPT_keystream_bytes .text .p2align 5 .globl _ECRYPT_keystream_bytes .globl ECRYPT_keystream_bytes _ECRYPT_keystream_bytes: ECRYPT_keystream_bytes: mov %esp,%eax and $31,%eax add $256,%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: x = arg1 # asm 1: movl x=int32#3 # asm 2: movl x=%edx movl 4(%esp,%eax),%edx # qhasm: m = arg2 # asm 1: movl m=int32#5 # asm 2: movl m=%esi movl 8(%esp,%eax),%esi # qhasm: out = m # asm 1: mov out=int32#6 # asm 2: mov out=%edi mov %esi,%edi # qhasm: bytes = arg3 # asm 1: movl bytes=int32#4 # asm 2: movl bytes=%ebx movl 12(%esp,%eax),%ebx # qhasm: unsigned>? bytes - 0 # asm 1: cmp $0, jbe ._done # qhasm: a = 0 # asm 1: mov $0,>a=int32#1 # asm 2: mov $0,>a=%eax mov $0,%eax # qhasm: i = bytes # asm 1: mov i=int32#2 # asm 2: mov i=%ecx mov %ebx,%ecx # qhasm: while (i) { *out++ = a; --i } rep stosb # qhasm: out -= bytes # asm 1: sub x0=stack32#6 # asm 2: movl x0=20(%esp) movl %eax,20(%esp) # qhasm: x1 = a # asm 1: movl x1=stack32#7 # asm 2: movl x1=24(%esp) movl %eax,24(%esp) # qhasm: x2 = a # asm 1: movl x2=stack32#8 # asm 2: movl x2=28(%esp) movl %eax,28(%esp) # qhasm: x3 = a # asm 1: movl x3=stack32#9 # asm 2: movl x3=32(%esp) movl %eax,32(%esp) # qhasm: x4 = a # asm 1: movl x4=stack32#10 # asm 2: movl x4=36(%esp) movl %eax,36(%esp) # qhasm: x5 = a # asm 1: movl x5=stack32#11 # asm 2: movl x5=40(%esp) movl %eax,40(%esp) # qhasm: x6 = a # asm 1: movl x6=stack32#12 # asm 2: movl x6=44(%esp) movl %eax,44(%esp) # qhasm: x7 = a # asm 1: movl x7=stack32#13 # asm 2: movl x7=48(%esp) movl %eax,48(%esp) # qhasm: x8 = a # asm 1: movl x8=stack32#14 # asm 2: movl x8=52(%esp) movl %eax,52(%esp) # qhasm: x9 = a # asm 1: movl x9=stack32#15 # asm 2: movl x9=56(%esp) movl %eax,56(%esp) # qhasm: x10 = a # asm 1: movl x10=stack32#16 # asm 2: movl x10=60(%esp) movl %eax,60(%esp) # qhasm: x11 = a # asm 1: movl x11=stack32#17 # asm 2: movl x11=64(%esp) movl %eax,64(%esp) # qhasm: x12 = a # asm 1: movl x12=stack32#18 # asm 2: movl x12=68(%esp) movl %eax,68(%esp) # qhasm: x13 = a # asm 1: movl x13=stack32#19 # asm 2: movl x13=72(%esp) movl %eax,72(%esp) # qhasm: x14 = a # asm 1: movl x14=stack32#20 # asm 2: movl x14=76(%esp) movl %eax,76(%esp) # qhasm: x15 = a # asm 1: movl x15=stack32#21 # asm 2: movl x15=80(%esp) movl %eax,80(%esp) # comment:fp stack unchanged by jump # qhasm: goto start jmp ._start # qhasm: enter ECRYPT_decrypt_bytes .text .p2align 5 .globl _ECRYPT_decrypt_bytes .globl ECRYPT_decrypt_bytes _ECRYPT_decrypt_bytes: ECRYPT_decrypt_bytes: mov %esp,%eax and $31,%eax add $256,%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: x = arg1 # asm 1: movl x=int32#3 # asm 2: movl x=%edx movl 4(%esp,%eax),%edx # qhasm: m = arg2 # asm 1: movl m=int32#5 # asm 2: movl m=%esi movl 8(%esp,%eax),%esi # qhasm: out = arg3 # asm 1: movl out=int32#6 # asm 2: movl out=%edi movl 12(%esp,%eax),%edi # qhasm: bytes = arg4 # asm 1: movl bytes=int32#4 # asm 2: movl bytes=%ebx movl 16(%esp,%eax),%ebx # qhasm: unsigned>? bytes - 0 # asm 1: cmp $0, jbe ._done # comment:fp stack unchanged by jump # qhasm: goto start jmp ._start # qhasm: enter ECRYPT_encrypt_bytes .text .p2align 5 .globl _ECRYPT_encrypt_bytes .globl ECRYPT_encrypt_bytes _ECRYPT_encrypt_bytes: ECRYPT_encrypt_bytes: mov %esp,%eax and $31,%eax add $256,%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: x = arg1 # asm 1: movl x=int32#3 # asm 2: movl x=%edx movl 4(%esp,%eax),%edx # qhasm: m = arg2 # asm 1: movl m=int32#5 # asm 2: movl m=%esi movl 8(%esp,%eax),%esi # qhasm: out = arg3 # asm 1: movl out=int32#6 # asm 2: movl out=%edi movl 12(%esp,%eax),%edi # qhasm: bytes = arg4 # asm 1: movl bytes=int32#4 # asm 2: movl bytes=%ebx movl 16(%esp,%eax),%ebx # qhasm: unsigned>? bytes - 0 # asm 1: cmp $0, jbe ._done # comment:fp stack unchanged by fallthrough # qhasm: start: ._start: # qhasm: in0 = *(uint32 *) (x + 0) # asm 1: movl 0(in0=int32#1 # asm 2: movl 0(in0=%eax movl 0(%edx),%eax # qhasm: in1 = *(uint32 *) (x + 4) # asm 1: movl 4(in1=int32#2 # asm 2: movl 4(in1=%ecx movl 4(%edx),%ecx # qhasm: in2 = *(uint32 *) (x + 8) # asm 1: movl 8(in2=int32#7 # asm 2: movl 8(in2=%ebp movl 8(%edx),%ebp # qhasm: j0 = in0 # asm 1: movl j0=stack32#22 # asm 2: movl j0=84(%esp) movl %eax,84(%esp) # qhasm: in3 = *(uint32 *) (x + 12) # asm 1: movl 12(in3=int32#1 # asm 2: movl 12(in3=%eax movl 12(%edx),%eax # qhasm: j1 = in1 # asm 1: movl j1=stack32#23 # asm 2: movl j1=88(%esp) movl %ecx,88(%esp) # qhasm: in4 = *(uint32 *) (x + 16) # asm 1: movl 16(in4=int32#2 # asm 2: movl 16(in4=%ecx movl 16(%edx),%ecx # qhasm: j2 = in2 # asm 1: movl j2=stack32#24 # asm 2: movl j2=92(%esp) movl %ebp,92(%esp) # qhasm: in5 = *(uint32 *) (x + 20) # asm 1: movl 20(in5=int32#7 # asm 2: movl 20(in5=%ebp movl 20(%edx),%ebp # qhasm: j3 = in3 # asm 1: movl j3=stack32#25 # asm 2: movl j3=96(%esp) movl %eax,96(%esp) # qhasm: in6 = *(uint32 *) (x + 24) # asm 1: movl 24(in6=int32#1 # asm 2: movl 24(in6=%eax movl 24(%edx),%eax # qhasm: j4 = in4 # asm 1: movl j4=stack32#26 # asm 2: movl j4=100(%esp) movl %ecx,100(%esp) # qhasm: in7 = *(uint32 *) (x + 28) # asm 1: movl 28(in7=int32#2 # asm 2: movl 28(in7=%ecx movl 28(%edx),%ecx # qhasm: j5 = in5 # asm 1: movl j5=stack32#27 # asm 2: movl j5=104(%esp) movl %ebp,104(%esp) # qhasm: in8 = *(uint32 *) (x + 32) # asm 1: movl 32(in8=int32#7 # asm 2: movl 32(in8=%ebp movl 32(%edx),%ebp # qhasm: j6 = in6 # asm 1: movl j6=stack32#28 # asm 2: movl j6=108(%esp) movl %eax,108(%esp) # qhasm: in9 = *(uint32 *) (x + 36) # asm 1: movl 36(in9=int32#1 # asm 2: movl 36(in9=%eax movl 36(%edx),%eax # qhasm: j7 = in7 # asm 1: movl j7=stack32#29 # asm 2: movl j7=112(%esp) movl %ecx,112(%esp) # qhasm: in10 = *(uint32 *) (x + 40) # asm 1: movl 40(in10=int32#2 # asm 2: movl 40(in10=%ecx movl 40(%edx),%ecx # qhasm: j8 = in8 # asm 1: movl j8=stack32#30 # asm 2: movl j8=116(%esp) movl %ebp,116(%esp) # qhasm: in11 = *(uint32 *) (x + 44) # asm 1: movl 44(in11=int32#7 # asm 2: movl 44(in11=%ebp movl 44(%edx),%ebp # qhasm: j9 = in9 # asm 1: movl j9=stack32#31 # asm 2: movl j9=120(%esp) movl %eax,120(%esp) # qhasm: in12 = *(uint32 *) (x + 48) # asm 1: movl 48(in12=int32#1 # asm 2: movl 48(in12=%eax movl 48(%edx),%eax # qhasm: j10 = in10 # asm 1: movl j10=stack32#32 # asm 2: movl j10=124(%esp) movl %ecx,124(%esp) # qhasm: in13 = *(uint32 *) (x + 52) # asm 1: movl 52(in13=int32#2 # asm 2: movl 52(in13=%ecx movl 52(%edx),%ecx # qhasm: j11 = in11 # asm 1: movl j11=stack32#33 # asm 2: movl j11=128(%esp) movl %ebp,128(%esp) # qhasm: in14 = *(uint32 *) (x + 56) # asm 1: movl 56(in14=int32#7 # asm 2: movl 56(in14=%ebp movl 56(%edx),%ebp # qhasm: j12 = in12 # asm 1: movl j12=stack32#34 # asm 2: movl j12=132(%esp) movl %eax,132(%esp) # qhasm: in15 = *(uint32 *) (x + 60) # asm 1: movl 60(in15=int32#1 # asm 2: movl 60(in15=%eax movl 60(%edx),%eax # qhasm: j13 = in13 # asm 1: movl j13=stack32#35 # asm 2: movl j13=136(%esp) movl %ecx,136(%esp) # qhasm: j14 = in14 # asm 1: movl j14=stack32#36 # asm 2: movl j14=140(%esp) movl %ebp,140(%esp) # qhasm: j15 = in15 # asm 1: movl j15=stack32#37 # asm 2: movl j15=144(%esp) movl %eax,144(%esp) # qhasm: x_backup = x # asm 1: movl x_backup=stack32#38 # asm 2: movl x_backup=148(%esp) movl %edx,148(%esp) # qhasm: bytesatleast1: ._bytesatleast1: # qhasm: unsignedctarget=stack32#39 # asm 2: movl ctarget=152(%esp) movl %edi,152(%esp) # qhasm: out = &tmp # asm 1: leal out=int32#6 # asm 2: leal out=%edi leal 192(%esp),%edi # qhasm: i = bytes # asm 1: mov i=int32#2 # asm 2: mov i=%ecx mov %ebx,%ecx # qhasm: while (i) { *out++ = *m++; --i } rep movsb # qhasm: out = &tmp # asm 1: leal out=int32#6 # asm 2: leal out=%edi leal 192(%esp),%edi # qhasm: m = &tmp # asm 1: leal m=int32#5 # asm 2: leal m=%esi leal 192(%esp),%esi # comment:fp stack unchanged by fallthrough # qhasm: nocopy: ._nocopy: # qhasm: out_backup = out # asm 1: movl out_backup=stack32#40 # asm 2: movl out_backup=156(%esp) movl %edi,156(%esp) # qhasm: m_backup = m # asm 1: movl m_backup=stack32#41 # asm 2: movl m_backup=160(%esp) movl %esi,160(%esp) # qhasm: bytes_backup = bytes # asm 1: movl bytes_backup=stack32#42 # asm 2: movl bytes_backup=164(%esp) movl %ebx,164(%esp) # qhasm: in0 = j0 # asm 1: movl in0=int32#1 # asm 2: movl in0=%eax movl 84(%esp),%eax # qhasm: in1 = j1 # asm 1: movl in1=int32#2 # asm 2: movl in1=%ecx movl 88(%esp),%ecx # qhasm: in2 = j2 # asm 1: movl in2=int32#3 # asm 2: movl in2=%edx movl 92(%esp),%edx # qhasm: in3 = j3 # asm 1: movl in3=int32#4 # asm 2: movl in3=%ebx movl 96(%esp),%ebx # qhasm: x0 = in0 # asm 1: movl x0=stack32#6 # asm 2: movl x0=20(%esp) movl %eax,20(%esp) # qhasm: x1 = in1 # asm 1: movl x1=stack32#7 # asm 2: movl x1=24(%esp) movl %ecx,24(%esp) # qhasm: x2 = in2 # asm 1: movl x2=stack32#8 # asm 2: movl x2=28(%esp) movl %edx,28(%esp) # qhasm: x3 = in3 # asm 1: movl x3=stack32#9 # asm 2: movl x3=32(%esp) movl %ebx,32(%esp) # qhasm: in4 = j4 # asm 1: movl in4=int32#1 # asm 2: movl in4=%eax movl 100(%esp),%eax # qhasm: in5 = j5 # asm 1: movl in5=int32#2 # asm 2: movl in5=%ecx movl 104(%esp),%ecx # qhasm: in6 = j6 # asm 1: movl in6=int32#3 # asm 2: movl in6=%edx movl 108(%esp),%edx # qhasm: in7 = j7 # asm 1: movl in7=int32#4 # asm 2: movl in7=%ebx movl 112(%esp),%ebx # qhasm: x4 = in4 # asm 1: movl x4=stack32#10 # asm 2: movl x4=36(%esp) movl %eax,36(%esp) # qhasm: x5 = in5 # asm 1: movl x5=stack32#11 # asm 2: movl x5=40(%esp) movl %ecx,40(%esp) # qhasm: x6 = in6 # asm 1: movl x6=stack32#12 # asm 2: movl x6=44(%esp) movl %edx,44(%esp) # qhasm: x7 = in7 # asm 1: movl x7=stack32#13 # asm 2: movl x7=48(%esp) movl %ebx,48(%esp) # qhasm: in8 = j8 # asm 1: movl in8=int32#1 # asm 2: movl in8=%eax movl 116(%esp),%eax # qhasm: in9 = j9 # asm 1: movl in9=int32#2 # asm 2: movl in9=%ecx movl 120(%esp),%ecx # qhasm: in10 = j10 # asm 1: movl in10=int32#3 # asm 2: movl in10=%edx movl 124(%esp),%edx # qhasm: in11 = j11 # asm 1: movl in11=int32#4 # asm 2: movl in11=%ebx movl 128(%esp),%ebx # qhasm: x8 = in8 # asm 1: movl x8=stack32#14 # asm 2: movl x8=52(%esp) movl %eax,52(%esp) # qhasm: x9 = in9 # asm 1: movl x9=stack32#15 # asm 2: movl x9=56(%esp) movl %ecx,56(%esp) # qhasm: x10 = in10 # asm 1: movl x10=stack32#16 # asm 2: movl x10=60(%esp) movl %edx,60(%esp) # qhasm: x11 = in11 # asm 1: movl x11=stack32#17 # asm 2: movl x11=64(%esp) movl %ebx,64(%esp) # qhasm: in12 = j12 # asm 1: movl in12=int32#1 # asm 2: movl in12=%eax movl 132(%esp),%eax # qhasm: in13 = j13 # asm 1: movl in13=int32#2 # asm 2: movl in13=%ecx movl 136(%esp),%ecx # qhasm: in14 = j14 # asm 1: movl in14=int32#3 # asm 2: movl in14=%edx movl 140(%esp),%edx # qhasm: in15 = j15 # asm 1: movl in15=int32#4 # asm 2: movl in15=%ebx movl 144(%esp),%ebx # qhasm: x12 = in12 # asm 1: movl x12=stack32#18 # asm 2: movl x12=68(%esp) movl %eax,68(%esp) # qhasm: x13 = in13 # asm 1: movl x13=stack32#19 # asm 2: movl x13=72(%esp) movl %ecx,72(%esp) # qhasm: x14 = in14 # asm 1: movl x14=stack32#20 # asm 2: movl x14=76(%esp) movl %edx,76(%esp) # qhasm: x15 = in15 # asm 1: movl x15=stack32#21 # asm 2: movl x15=80(%esp) movl %ebx,80(%esp) # qhasm: i = 20 # asm 1: mov $20,>i=int32#2 # asm 2: mov $20,>i=%ecx mov $20,%ecx # qhasm: p = x0 # asm 1: movl p=int32#1 # asm 2: movl p=%eax movl 20(%esp),%eax # qhasm: s = x5 # asm 1: movl s=int32#3 # asm 2: movl s=%edx movl 40(%esp),%edx # qhasm: t = x10 # asm 1: movl t=int32#4 # asm 2: movl t=%ebx movl 60(%esp),%ebx # qhasm: w = x15 # asm 1: movl w=int32#5 # asm 2: movl w=%esi movl 80(%esp),%esi # qhasm: mainloop: ._mainloop: # qhasm: x0 = p # asm 1: movl x0=stack32#6 # asm 2: movl x0=20(%esp) movl %eax,20(%esp) # qhasm: x10 = t # asm 1: movl x10=stack32#11 # asm 2: movl x10=40(%esp) movl %ebx,40(%esp) # qhasm: p += x12 # asm 1: addl x5=stack32#16 # asm 2: movl x5=60(%esp) movl %edx,60(%esp) # qhasm: t += x6 # asm 1: addl x15=stack32#21 # asm 2: movl x15=80(%esp) movl %esi,80(%esp) # qhasm: r = x1 # asm 1: movl r=int32#6 # asm 2: movl r=%edi movl 24(%esp),%edi # qhasm: r += s # asm 1: add v=int32#7 # asm 2: movl v=%ebp movl 64(%esp),%ebp # qhasm: v += w # asm 1: add x4=stack32#9 # asm 2: movl x4=32(%esp) movl %eax,32(%esp) # qhasm: x14 = t # asm 1: movl x14=stack32#10 # asm 2: movl x14=36(%esp) movl %ebx,36(%esp) # qhasm: p += x0 # asm 1: addl x9=stack32#15 # asm 2: movl x9=56(%esp) movl %edi,56(%esp) # qhasm: t += x10 # asm 1: addl x3=stack32#20 # asm 2: movl x3=76(%esp) movl %ebp,76(%esp) # qhasm: p <<<= 9 # asm 1: rol $9,x8=stack32#8 # asm 2: movl x8=28(%esp) movl %eax,28(%esp) # qhasm: x2 = t # asm 1: movl x2=stack32#13 # asm 2: movl x2=48(%esp) movl %ebx,48(%esp) # qhasm: p += x4 # asm 1: addl x13=stack32#14 # asm 2: movl x13=52(%esp) movl %edx,52(%esp) # qhasm: t += x14 # asm 1: addl x7=stack32#19 # asm 2: movl x7=72(%esp) movl %esi,72(%esp) # qhasm: p <<<= 13 # asm 1: rol $13,x12=stack32#7 # asm 2: movl x12=24(%esp) movl %eax,24(%esp) # qhasm: x6 = t # asm 1: movl x6=stack32#12 # asm 2: movl x6=44(%esp) movl %ebx,44(%esp) # qhasm: p += x8 # asm 1: addl x1=stack32#17 # asm 2: movl x1=64(%esp) movl %edi,64(%esp) # qhasm: t += x2 # asm 1: addl x11=stack32#18 # asm 2: movl x11=68(%esp) movl %ebp,68(%esp) # qhasm: p <<<= 18 # asm 1: rol $18,x0=stack32#6 # asm 2: movl x0=20(%esp) movl %eax,20(%esp) # qhasm: x10 = t # asm 1: movl x10=stack32#11 # asm 2: movl x10=40(%esp) movl %ebx,40(%esp) # qhasm: p += x3 # asm 1: addl x5=stack32#16 # asm 2: movl x5=60(%esp) movl %edx,60(%esp) # qhasm: t += x9 # asm 1: addl x15=stack32#21 # asm 2: movl x15=80(%esp) movl %esi,80(%esp) # qhasm: r = x4 # asm 1: movl r=int32#6 # asm 2: movl r=%edi movl 32(%esp),%edi # qhasm: r += s # asm 1: add v=int32#7 # asm 2: movl v=%ebp movl 36(%esp),%ebp # qhasm: v += w # asm 1: add x1=stack32#7 # asm 2: movl x1=24(%esp) movl %eax,24(%esp) # qhasm: x11 = t # asm 1: movl x11=stack32#12 # asm 2: movl x11=44(%esp) movl %ebx,44(%esp) # qhasm: p += x0 # asm 1: addl x6=stack32#17 # asm 2: movl x6=64(%esp) movl %edi,64(%esp) # qhasm: t += x10 # asm 1: addl x12=stack32#18 # asm 2: movl x12=68(%esp) movl %ebp,68(%esp) # qhasm: p <<<= 9 # asm 1: rol $9,x2=stack32#8 # asm 2: movl x2=28(%esp) movl %eax,28(%esp) # qhasm: x8 = t # asm 1: movl x8=stack32#13 # asm 2: movl x8=48(%esp) movl %ebx,48(%esp) # qhasm: p += x1 # asm 1: addl x7=stack32#14 # asm 2: movl x7=52(%esp) movl %edx,52(%esp) # qhasm: t += x11 # asm 1: addl x13=stack32#19 # asm 2: movl x13=72(%esp) movl %esi,72(%esp) # qhasm: p <<<= 13 # asm 1: rol $13,x3=stack32#9 # asm 2: movl x3=32(%esp) movl %eax,32(%esp) # qhasm: x9 = t # asm 1: movl x9=stack32#10 # asm 2: movl x9=36(%esp) movl %ebx,36(%esp) # qhasm: p += x2 # asm 1: addl x4=stack32#15 # asm 2: movl x4=56(%esp) movl %edi,56(%esp) # qhasm: t += x8 # asm 1: addl x14=stack32#20 # asm 2: movl x14=76(%esp) movl %ebp,76(%esp) # qhasm: p <<<= 18 # asm 1: rol $18,x0=stack32#6 # asm 2: movl x0=20(%esp) movl %eax,20(%esp) # qhasm: x10 = t # asm 1: movl x10=stack32#11 # asm 2: movl x10=40(%esp) movl %ebx,40(%esp) # qhasm: p += x12 # asm 1: addl x5=stack32#16 # asm 2: movl x5=60(%esp) movl %edx,60(%esp) # qhasm: t += x6 # asm 1: addl x15=stack32#21 # asm 2: movl x15=80(%esp) movl %esi,80(%esp) # qhasm: r = x1 # asm 1: movl r=int32#6 # asm 2: movl r=%edi movl 24(%esp),%edi # qhasm: r += s # asm 1: add v=int32#7 # asm 2: movl v=%ebp movl 44(%esp),%ebp # qhasm: v += w # asm 1: add x4=stack32#9 # asm 2: movl x4=32(%esp) movl %eax,32(%esp) # qhasm: x14 = t # asm 1: movl x14=stack32#10 # asm 2: movl x14=36(%esp) movl %ebx,36(%esp) # qhasm: p += x0 # asm 1: addl x9=stack32#15 # asm 2: movl x9=56(%esp) movl %edi,56(%esp) # qhasm: t += x10 # asm 1: addl x3=stack32#20 # asm 2: movl x3=76(%esp) movl %ebp,76(%esp) # qhasm: p <<<= 9 # asm 1: rol $9,x8=stack32#8 # asm 2: movl x8=28(%esp) movl %eax,28(%esp) # qhasm: x2 = t # asm 1: movl x2=stack32#13 # asm 2: movl x2=48(%esp) movl %ebx,48(%esp) # qhasm: p += x4 # asm 1: addl x13=stack32#14 # asm 2: movl x13=52(%esp) movl %edx,52(%esp) # qhasm: t += x14 # asm 1: addl x7=stack32#19 # asm 2: movl x7=72(%esp) movl %esi,72(%esp) # qhasm: p <<<= 13 # asm 1: rol $13,x12=stack32#7 # asm 2: movl x12=24(%esp) movl %eax,24(%esp) # qhasm: x6 = t # asm 1: movl x6=stack32#12 # asm 2: movl x6=44(%esp) movl %ebx,44(%esp) # qhasm: p += x8 # asm 1: addl x1=stack32#17 # asm 2: movl x1=64(%esp) movl %edi,64(%esp) # qhasm: t += x2 # asm 1: addl x11=stack32#18 # asm 2: movl x11=68(%esp) movl %ebp,68(%esp) # qhasm: p <<<= 18 # asm 1: rol $18,x0=stack32#6 # asm 2: movl x0=20(%esp) movl %eax,20(%esp) # qhasm: x10 = t # asm 1: movl x10=stack32#16 # asm 2: movl x10=60(%esp) movl %ebx,60(%esp) # qhasm: p += x3 # asm 1: addl x5=stack32#11 # asm 2: movl x5=40(%esp) movl %edx,40(%esp) # qhasm: t += x9 # asm 1: addl x15=stack32#21 # asm 2: movl x15=80(%esp) movl %esi,80(%esp) # qhasm: r = x4 # asm 1: movl r=int32#6 # asm 2: movl r=%edi movl 32(%esp),%edi # qhasm: r += s # asm 1: add v=int32#7 # asm 2: movl v=%ebp movl 36(%esp),%ebp # qhasm: v += w # asm 1: add x1=stack32#7 # asm 2: movl x1=24(%esp) movl %eax,24(%esp) # qhasm: x11 = t # asm 1: movl x11=stack32#17 # asm 2: movl x11=64(%esp) movl %ebx,64(%esp) # qhasm: p += x0 # asm 1: addl x6=stack32#12 # asm 2: movl x6=44(%esp) movl %edi,44(%esp) # qhasm: t += x10 # asm 1: addl x12=stack32#18 # asm 2: movl x12=68(%esp) movl %ebp,68(%esp) # qhasm: p <<<= 9 # asm 1: rol $9,x2=stack32#8 # asm 2: movl x2=28(%esp) movl %eax,28(%esp) # qhasm: x8 = t # asm 1: movl x8=stack32#14 # asm 2: movl x8=52(%esp) movl %ebx,52(%esp) # qhasm: p += x1 # asm 1: addl x7=stack32#13 # asm 2: movl x7=48(%esp) movl %edx,48(%esp) # qhasm: t += x11 # asm 1: addl x13=stack32#19 # asm 2: movl x13=72(%esp) movl %esi,72(%esp) # qhasm: p <<<= 13 # asm 1: rol $13,x3=stack32#9 # asm 2: movl x3=32(%esp) movl %eax,32(%esp) # qhasm: x9 = t # asm 1: movl x9=stack32#15 # asm 2: movl x9=56(%esp) movl %ebx,56(%esp) # qhasm: p += x2 # asm 1: addl x4=stack32#10 # asm 2: movl x4=36(%esp) movl %edi,36(%esp) # qhasm: t += x8 # asm 1: addl x14=stack32#20 # asm 2: movl x14=76(%esp) movl %ebp,76(%esp) # qhasm: p <<<= 18 # asm 1: rol $18,? i -= 4 # asm 1: sub $4, ja ._mainloop # qhasm: x0 = p # asm 1: movl x0=stack32#6 # asm 2: movl x0=20(%esp) movl %eax,20(%esp) # qhasm: x5 = s # asm 1: movl x5=stack32#11 # asm 2: movl x5=40(%esp) movl %edx,40(%esp) # qhasm: x10 = t # asm 1: movl x10=stack32#16 # asm 2: movl x10=60(%esp) movl %ebx,60(%esp) # qhasm: x15 = w # asm 1: movl x15=stack32#21 # asm 2: movl x15=80(%esp) movl %esi,80(%esp) # qhasm: out = out_backup # asm 1: movl out=int32#6 # asm 2: movl out=%edi movl 156(%esp),%edi # qhasm: m = m_backup # asm 1: movl m=int32#5 # asm 2: movl m=%esi movl 160(%esp),%esi # qhasm: in0 = x0 # asm 1: movl in0=int32#1 # asm 2: movl in0=%eax movl 20(%esp),%eax # qhasm: in1 = x1 # asm 1: movl in1=int32#2 # asm 2: movl in1=%ecx movl 24(%esp),%ecx # qhasm: in0 += j0 # asm 1: addl in2=int32#7 # asm 2: movl in2=%ebp movl 28(%esp),%ebp # qhasm: in3 = x3 # asm 1: movl in3=int32#1 # asm 2: movl in3=%eax movl 32(%esp),%eax # qhasm: in2 += j2 # asm 1: addl in4=int32#2 # asm 2: movl in4=%ecx movl 36(%esp),%ecx # qhasm: in5 = x5 # asm 1: movl in5=int32#7 # asm 2: movl in5=%ebp movl 40(%esp),%ebp # qhasm: in4 += j4 # asm 1: addl in6=int32#1 # asm 2: movl in6=%eax movl 44(%esp),%eax # qhasm: in7 = x7 # asm 1: movl in7=int32#2 # asm 2: movl in7=%ecx movl 48(%esp),%ecx # qhasm: in6 += j6 # asm 1: addl in8=int32#1 # asm 2: movl in8=%eax movl 52(%esp),%eax # qhasm: in9 = x9 # asm 1: movl in9=int32#2 # asm 2: movl in9=%ecx movl 56(%esp),%ecx # qhasm: in8 += j8 # asm 1: addl in10=int32#2 # asm 2: movl in10=%ecx movl 60(%esp),%ecx # qhasm: in11 = x11 # asm 1: movl in11=int32#7 # asm 2: movl in11=%ebp movl 64(%esp),%ebp # qhasm: in10 += j10 # asm 1: addl in12=int32#1 # asm 2: movl in12=%eax movl 68(%esp),%eax # qhasm: in13 = x13 # asm 1: movl in13=int32#2 # asm 2: movl in13=%ecx movl 72(%esp),%ecx # qhasm: in12 += j12 # asm 1: addl in14=int32#7 # asm 2: movl in14=%ebp movl 76(%esp),%ebp # qhasm: in15 = x15 # asm 1: movl in15=int32#1 # asm 2: movl in15=%eax movl 80(%esp),%eax # qhasm: in14 += j14 # asm 1: addl bytes=int32#4 # asm 2: movl bytes=%ebx movl 164(%esp),%ebx # qhasm: in8 = j8 # asm 1: movl in8=int32#7 # asm 2: movl in8=%ebp movl 116(%esp),%ebp # qhasm: in9 = j9 # asm 1: movl in9=int32#1 # asm 2: movl in9=%eax movl 120(%esp),%eax # qhasm: in8 += 1 # asm 1: add $1,j8=stack32#30 # asm 2: movl j8=116(%esp) movl %ebp,116(%esp) # qhasm: j9 = in9 # asm 1: movl j9=stack32#31 # asm 2: movl j9=120(%esp) movl %eax,120(%esp) # qhasm: unsigned>? unsigned ja ._bytesatleast65 # comment:fp stack unchanged by jump # qhasm: goto bytesatleast64 if !unsigned< jae ._bytesatleast64 # qhasm: m = out # asm 1: mov m=int32#5 # asm 2: mov m=%esi mov %edi,%esi # qhasm: out = ctarget # asm 1: movl out=int32#6 # asm 2: movl out=%edi movl 152(%esp),%edi # qhasm: i = bytes # asm 1: mov i=int32#2 # asm 2: mov i=%ecx mov %ebx,%ecx # qhasm: while (i) { *out++ = *m++; --i } rep movsb # comment:fp stack unchanged by fallthrough # qhasm: bytesatleast64: ._bytesatleast64: # qhasm: x = x_backup # asm 1: movl x=int32#3 # asm 2: movl x=%edx movl 148(%esp),%edx # qhasm: in8 = j8 # asm 1: movl in8=int32#1 # asm 2: movl in8=%eax movl 116(%esp),%eax # qhasm: in9 = j9 # asm 1: movl in9=int32#2 # asm 2: movl in9=%ecx movl 120(%esp),%ecx # qhasm: *(uint32 *) (x + 32) = in8 # 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 ret # qhasm: bytesatleast65: ._bytesatleast65: # qhasm: bytes -= 64 # asm 1: sub $64,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: k = arg2 # asm 1: movl k=int32#2 # asm 2: movl k=%ecx movl 8(%esp,%eax),%ecx # qhasm: kbits = arg3 # asm 1: movl kbits=int32#3 # asm 2: movl kbits=%edx movl 12(%esp,%eax),%edx # qhasm: x = arg1 # asm 1: movl x=int32#1 # asm 2: movl x=%eax movl 4(%esp,%eax),%eax # qhasm: in1 = *(uint32 *) (k + 0) # asm 1: movl 0(in1=int32#4 # asm 2: movl 0(in1=%ebx movl 0(%ecx),%ebx # qhasm: in2 = *(uint32 *) (k + 4) # asm 1: movl 4(in2=int32#5 # asm 2: movl 4(in2=%esi movl 4(%ecx),%esi # qhasm: in3 = *(uint32 *) (k + 8) # asm 1: movl 8(in3=int32#6 # asm 2: movl 8(in3=%edi movl 8(%ecx),%edi # qhasm: in4 = *(uint32 *) (k + 12) # asm 1: movl 12(in4=int32#7 # asm 2: movl 12(in4=%ebp movl 12(%ecx),%ebp # qhasm: *(uint32 *) (x + 4) = in1 # asm 1: movl in11=int32#3 # asm 2: movl 16(in11=%edx movl 16(%ecx),%edx # qhasm: in12 = *(uint32 *) (k + 20) # asm 1: movl 20(in12=int32#4 # asm 2: movl 20(in12=%ebx movl 20(%ecx),%ebx # qhasm: in13 = *(uint32 *) (k + 24) # asm 1: movl 24(in13=int32#5 # asm 2: movl 24(in13=%esi movl 24(%ecx),%esi # qhasm: in14 = *(uint32 *) (k + 28) # asm 1: movl 28(in14=int32#2 # asm 2: movl 28(in14=%ecx movl 28(%ecx),%ecx # qhasm: *(uint32 *) (x + 44) = in11 # asm 1: movl in0=int32#2 # asm 2: mov $1634760805,>in0=%ecx mov $1634760805,%ecx # qhasm: in5 = 857760878 # asm 1: mov $857760878,>in5=int32#3 # asm 2: mov $857760878,>in5=%edx mov $857760878,%edx # qhasm: in10 = 2036477234 # asm 1: mov $2036477234,>in10=int32#4 # asm 2: mov $2036477234,>in10=%ebx mov $2036477234,%ebx # qhasm: in15 = 1797285236 # asm 1: mov $1797285236,>in15=int32#5 # asm 2: mov $1797285236,>in15=%esi mov $1797285236,%esi # qhasm: *(uint32 *) (x + 0) = in0 # asm 1: movl in11=int32#3 # asm 2: movl 0(in11=%edx movl 0(%ecx),%edx # qhasm: in12 = *(uint32 *) (k + 4) # asm 1: movl 4(in12=int32#4 # asm 2: movl 4(in12=%ebx movl 4(%ecx),%ebx # qhasm: in13 = *(uint32 *) (k + 8) # asm 1: movl 8(in13=int32#5 # asm 2: movl 8(in13=%esi movl 8(%ecx),%esi # qhasm: in14 = *(uint32 *) (k + 12) # asm 1: movl 12(in14=int32#2 # asm 2: movl 12(in14=%ecx movl 12(%ecx),%ecx # qhasm: *(uint32 *) (x + 44) = in11 # asm 1: movl in0=int32#2 # asm 2: mov $1634760805,>in0=%ecx mov $1634760805,%ecx # qhasm: in5 = 824206446 # asm 1: mov $824206446,>in5=int32#3 # asm 2: mov $824206446,>in5=%edx mov $824206446,%edx # qhasm: in10 = 2036477238 # asm 1: mov $2036477238,>in10=int32#4 # asm 2: mov $2036477238,>in10=%ebx mov $2036477238,%ebx # qhasm: in15 = 1797285236 # asm 1: mov $1797285236,>in15=int32#5 # asm 2: mov $1797285236,>in15=%esi mov $1797285236,%esi # qhasm: *(uint32 *) (x + 0) = in0 # 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 ret # qhasm: enter ECRYPT_ivsetup .text .p2align 5 .globl _ECRYPT_ivsetup .globl ECRYPT_ivsetup _ECRYPT_ivsetup: ECRYPT_ivsetup: mov %esp,%eax and $31,%eax add $256,%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: iv = arg2 # asm 1: movl iv=int32#2 # asm 2: movl iv=%ecx movl 8(%esp,%eax),%ecx # qhasm: x = arg1 # asm 1: movl x=int32#1 # asm 2: movl x=%eax movl 4(%esp,%eax),%eax # qhasm: in6 = *(uint32 *) (iv + 0) # asm 1: movl 0(in6=int32#3 # asm 2: movl 0(in6=%edx movl 0(%ecx),%edx # qhasm: in7 = *(uint32 *) (iv + 4) # asm 1: movl 4(in7=int32#2 # asm 2: movl 4(in7=%ecx movl 4(%ecx),%ecx # qhasm: in8 = 0 # asm 1: mov $0,>in8=int32#4 # asm 2: mov $0,>in8=%ebx mov $0,%ebx # qhasm: in9 = 0 # asm 1: mov $0,>in9=int32#5 # asm 2: mov $0,>in9=%esi mov $0,%esi # qhasm: *(uint32 *) (x + 24) = in6 # 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 ret