# qhasm: stack32 arg1 # qhasm: stack32 arg2 # qhasm: input arg1 # qhasm: input arg2 # 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 c # qhasm: int32 k # qhasm: int32 x0 # qhasm: int32 x1 # qhasm: int32 x2 # qhasm: int32 x3 # qhasm: int32 e # qhasm: int32 q0 # qhasm: int32 q1 # qhasm: int32 q2 # qhasm: int32 q3 # qhasm: enter aes128_x86mmx1_expand .text .p2align 5 .globl _aes128_x86mmx1_expand .globl aes128_x86mmx1_expand _aes128_x86mmx1_expand: aes128_x86mmx1_expand: mov %esp,%eax and $31,%eax add $32,%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: c = arg1 # asm 1: movl c=int32#2 # asm 2: movl c=%ecx movl 4(%esp,%eax),%ecx # qhasm: k = arg2 # asm 1: movl k=int32#1 # asm 2: movl k=%eax movl 8(%esp,%eax),%eax # qhasm: x0 = *(uint32 *) (k + 0) # asm 1: movl 0(x0=int32#3 # asm 2: movl 0(x0=%edx movl 0(%eax),%edx # qhasm: x1 = *(uint32 *) (k + 4) # asm 1: movl 4(x1=int32#4 # asm 2: movl 4(x1=%ebx movl 4(%eax),%ebx # qhasm: x2 = *(uint32 *) (k + 8) # asm 1: movl 8(x2=int32#5 # asm 2: movl 8(x2=%esi movl 8(%eax),%esi # qhasm: x3 = *(uint32 *) (k + 12) # asm 1: movl 12(x3=int32#1 # asm 2: movl 12(x3=%eax movl 12(%eax),%eax # qhasm: *(uint32 *) (c + 0) = x0 # asm 1: movl > 8) & 255 # asm 1: movzbl e=int32#6 # asm 2: movzbl e=%edi movzbl %ah,%edi # qhasm: e = *(uint8 *) (&aes128_x86mmx1_table2 + e * 8) # asm 1: movzbl aes128_x86mmx1_table2(,e=int32#6 # asm 2: movzbl aes128_x86mmx1_table2(,e=%edi movzbl aes128_x86mmx1_table2(,%edi,8),%edi # qhasm: e ^= 0x01 # asm 1: xor $0x01,q3=int32#7 # asm 2: movzbl q3=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q3=int32#7 # asm 2: movl aes128_x86mmx1_table1(,q3=%ebp movl aes128_x86mmx1_table1(,%ebp,8),%ebp # qhasm: q3 &= 0xff000000 # asm 1: and $0xff000000,> 8) & 255 # asm 1: movzbl q2=int32#7 # asm 2: movzbl q2=%ebp movzbl %ah,%ebp # qhasm: q2 = *(uint32 *) (&aes128_x86mmx1_table0 + q2 * 8) # asm 1: movl aes128_x86mmx1_table0(,q2=int32#7 # asm 2: movl aes128_x86mmx1_table0(,q2=%ebp movl aes128_x86mmx1_table0(,%ebp,8),%ebp # qhasm: q2 &= 0x00ff0000 # asm 1: and $0x00ff0000,q1=int32#7 # asm 2: movzbl q1=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q1=int32#7 # asm 2: movzwl aes128_x86mmx1_tablex(,q1=%ebp movzwl aes128_x86mmx1_tablex(,%ebp,8),%ebp # qhasm: e ^= q1 # asm 1: xorl > 8) & 255 # asm 1: movzbl e=int32#6 # asm 2: movzbl e=%edi movzbl %ah,%edi # qhasm: e = *(uint8 *) (&aes128_x86mmx1_table2 + e * 8) # asm 1: movzbl aes128_x86mmx1_table2(,e=int32#6 # asm 2: movzbl aes128_x86mmx1_table2(,e=%edi movzbl aes128_x86mmx1_table2(,%edi,8),%edi # qhasm: e ^= 0x02 # asm 1: xor $0x02,q3=int32#7 # asm 2: movzbl q3=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q3=int32#7 # asm 2: movl aes128_x86mmx1_table1(,q3=%ebp movl aes128_x86mmx1_table1(,%ebp,8),%ebp # qhasm: q3 &= 0xff000000 # asm 1: and $0xff000000,> 8) & 255 # asm 1: movzbl q2=int32#7 # asm 2: movzbl q2=%ebp movzbl %ah,%ebp # qhasm: q2 = *(uint32 *) (&aes128_x86mmx1_table0 + q2 * 8) # asm 1: movl aes128_x86mmx1_table0(,q2=int32#7 # asm 2: movl aes128_x86mmx1_table0(,q2=%ebp movl aes128_x86mmx1_table0(,%ebp,8),%ebp # qhasm: q2 &= 0x00ff0000 # asm 1: and $0x00ff0000,q1=int32#7 # asm 2: movzbl q1=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q1=int32#7 # asm 2: movzwl aes128_x86mmx1_tablex(,q1=%ebp movzwl aes128_x86mmx1_tablex(,%ebp,8),%ebp # qhasm: e ^= q1 # asm 1: xorl > 8) & 255 # asm 1: movzbl e=int32#6 # asm 2: movzbl e=%edi movzbl %ah,%edi # qhasm: e = *(uint8 *) (&aes128_x86mmx1_table2 + e * 8) # asm 1: movzbl aes128_x86mmx1_table2(,e=int32#6 # asm 2: movzbl aes128_x86mmx1_table2(,e=%edi movzbl aes128_x86mmx1_table2(,%edi,8),%edi # qhasm: e ^= 0x04 # asm 1: xor $0x04,q3=int32#7 # asm 2: movzbl q3=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q3=int32#7 # asm 2: movl aes128_x86mmx1_table1(,q3=%ebp movl aes128_x86mmx1_table1(,%ebp,8),%ebp # qhasm: q3 &= 0xff000000 # asm 1: and $0xff000000,> 8) & 255 # asm 1: movzbl q2=int32#7 # asm 2: movzbl q2=%ebp movzbl %ah,%ebp # qhasm: q2 = *(uint32 *) (&aes128_x86mmx1_table0 + q2 * 8) # asm 1: movl aes128_x86mmx1_table0(,q2=int32#7 # asm 2: movl aes128_x86mmx1_table0(,q2=%ebp movl aes128_x86mmx1_table0(,%ebp,8),%ebp # qhasm: q2 &= 0x00ff0000 # asm 1: and $0x00ff0000,q1=int32#7 # asm 2: movzbl q1=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q1=int32#7 # asm 2: movzwl aes128_x86mmx1_tablex(,q1=%ebp movzwl aes128_x86mmx1_tablex(,%ebp,8),%ebp # qhasm: e ^= q1 # asm 1: xorl > 8) & 255 # asm 1: movzbl e=int32#6 # asm 2: movzbl e=%edi movzbl %ah,%edi # qhasm: e = *(uint8 *) (&aes128_x86mmx1_table2 + e * 8) # asm 1: movzbl aes128_x86mmx1_table2(,e=int32#6 # asm 2: movzbl aes128_x86mmx1_table2(,e=%edi movzbl aes128_x86mmx1_table2(,%edi,8),%edi # qhasm: e ^= 0x08 # asm 1: xor $0x08,q3=int32#7 # asm 2: movzbl q3=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q3=int32#7 # asm 2: movl aes128_x86mmx1_table1(,q3=%ebp movl aes128_x86mmx1_table1(,%ebp,8),%ebp # qhasm: q3 &= 0xff000000 # asm 1: and $0xff000000,> 8) & 255 # asm 1: movzbl q2=int32#7 # asm 2: movzbl q2=%ebp movzbl %ah,%ebp # qhasm: q2 = *(uint32 *) (&aes128_x86mmx1_table0 + q2 * 8) # asm 1: movl aes128_x86mmx1_table0(,q2=int32#7 # asm 2: movl aes128_x86mmx1_table0(,q2=%ebp movl aes128_x86mmx1_table0(,%ebp,8),%ebp # qhasm: q2 &= 0x00ff0000 # asm 1: and $0x00ff0000,q1=int32#7 # asm 2: movzbl q1=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q1=int32#7 # asm 2: movzwl aes128_x86mmx1_tablex(,q1=%ebp movzwl aes128_x86mmx1_tablex(,%ebp,8),%ebp # qhasm: e ^= q1 # asm 1: xorl > 8) & 255 # asm 1: movzbl e=int32#6 # asm 2: movzbl e=%edi movzbl %ah,%edi # qhasm: e = *(uint8 *) (&aes128_x86mmx1_table2 + e * 8) # asm 1: movzbl aes128_x86mmx1_table2(,e=int32#6 # asm 2: movzbl aes128_x86mmx1_table2(,e=%edi movzbl aes128_x86mmx1_table2(,%edi,8),%edi # qhasm: e ^= 0x10 # asm 1: xor $0x10,q3=int32#7 # asm 2: movzbl q3=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q3=int32#7 # asm 2: movl aes128_x86mmx1_table1(,q3=%ebp movl aes128_x86mmx1_table1(,%ebp,8),%ebp # qhasm: q3 &= 0xff000000 # asm 1: and $0xff000000,> 8) & 255 # asm 1: movzbl q2=int32#7 # asm 2: movzbl q2=%ebp movzbl %ah,%ebp # qhasm: q2 = *(uint32 *) (&aes128_x86mmx1_table0 + q2 * 8) # asm 1: movl aes128_x86mmx1_table0(,q2=int32#7 # asm 2: movl aes128_x86mmx1_table0(,q2=%ebp movl aes128_x86mmx1_table0(,%ebp,8),%ebp # qhasm: q2 &= 0x00ff0000 # asm 1: and $0x00ff0000,q1=int32#7 # asm 2: movzbl q1=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q1=int32#7 # asm 2: movzwl aes128_x86mmx1_tablex(,q1=%ebp movzwl aes128_x86mmx1_tablex(,%ebp,8),%ebp # qhasm: e ^= q1 # asm 1: xorl > 8) & 255 # asm 1: movzbl e=int32#6 # asm 2: movzbl e=%edi movzbl %ah,%edi # qhasm: e = *(uint8 *) (&aes128_x86mmx1_table2 + e * 8) # asm 1: movzbl aes128_x86mmx1_table2(,e=int32#6 # asm 2: movzbl aes128_x86mmx1_table2(,e=%edi movzbl aes128_x86mmx1_table2(,%edi,8),%edi # qhasm: e ^= 0x20 # asm 1: xor $0x20,q3=int32#7 # asm 2: movzbl q3=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q3=int32#7 # asm 2: movl aes128_x86mmx1_table1(,q3=%ebp movl aes128_x86mmx1_table1(,%ebp,8),%ebp # qhasm: q3 &= 0xff000000 # asm 1: and $0xff000000,> 8) & 255 # asm 1: movzbl q2=int32#7 # asm 2: movzbl q2=%ebp movzbl %ah,%ebp # qhasm: q2 = *(uint32 *) (&aes128_x86mmx1_table0 + q2 * 8) # asm 1: movl aes128_x86mmx1_table0(,q2=int32#7 # asm 2: movl aes128_x86mmx1_table0(,q2=%ebp movl aes128_x86mmx1_table0(,%ebp,8),%ebp # qhasm: q2 &= 0x00ff0000 # asm 1: and $0x00ff0000,q1=int32#7 # asm 2: movzbl q1=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q1=int32#7 # asm 2: movzwl aes128_x86mmx1_tablex(,q1=%ebp movzwl aes128_x86mmx1_tablex(,%ebp,8),%ebp # qhasm: e ^= q1 # asm 1: xorl > 8) & 255 # asm 1: movzbl e=int32#6 # asm 2: movzbl e=%edi movzbl %ah,%edi # qhasm: e = *(uint8 *) (&aes128_x86mmx1_table2 + e * 8) # asm 1: movzbl aes128_x86mmx1_table2(,e=int32#6 # asm 2: movzbl aes128_x86mmx1_table2(,e=%edi movzbl aes128_x86mmx1_table2(,%edi,8),%edi # qhasm: e ^= 0x40 # asm 1: xor $0x40,q3=int32#7 # asm 2: movzbl q3=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q3=int32#7 # asm 2: movl aes128_x86mmx1_table1(,q3=%ebp movl aes128_x86mmx1_table1(,%ebp,8),%ebp # qhasm: q3 &= 0xff000000 # asm 1: and $0xff000000,> 8) & 255 # asm 1: movzbl q2=int32#7 # asm 2: movzbl q2=%ebp movzbl %ah,%ebp # qhasm: q2 = *(uint32 *) (&aes128_x86mmx1_table0 + q2 * 8) # asm 1: movl aes128_x86mmx1_table0(,q2=int32#7 # asm 2: movl aes128_x86mmx1_table0(,q2=%ebp movl aes128_x86mmx1_table0(,%ebp,8),%ebp # qhasm: q2 &= 0x00ff0000 # asm 1: and $0x00ff0000,q1=int32#7 # asm 2: movzbl q1=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q1=int32#7 # asm 2: movzwl aes128_x86mmx1_tablex(,q1=%ebp movzwl aes128_x86mmx1_tablex(,%ebp,8),%ebp # qhasm: e ^= q1 # asm 1: xorl > 8) & 255 # asm 1: movzbl e=int32#6 # asm 2: movzbl e=%edi movzbl %ah,%edi # qhasm: e = *(uint8 *) (&aes128_x86mmx1_table2 + e * 8) # asm 1: movzbl aes128_x86mmx1_table2(,e=int32#6 # asm 2: movzbl aes128_x86mmx1_table2(,e=%edi movzbl aes128_x86mmx1_table2(,%edi,8),%edi # qhasm: e ^= 0x80 # asm 1: xor $0x80,q3=int32#7 # asm 2: movzbl q3=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q3=int32#7 # asm 2: movl aes128_x86mmx1_table1(,q3=%ebp movl aes128_x86mmx1_table1(,%ebp,8),%ebp # qhasm: q3 &= 0xff000000 # asm 1: and $0xff000000,> 8) & 255 # asm 1: movzbl q2=int32#7 # asm 2: movzbl q2=%ebp movzbl %ah,%ebp # qhasm: q2 = *(uint32 *) (&aes128_x86mmx1_table0 + q2 * 8) # asm 1: movl aes128_x86mmx1_table0(,q2=int32#7 # asm 2: movl aes128_x86mmx1_table0(,q2=%ebp movl aes128_x86mmx1_table0(,%ebp,8),%ebp # qhasm: q2 &= 0x00ff0000 # asm 1: and $0x00ff0000,q1=int32#7 # asm 2: movzbl q1=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q1=int32#7 # asm 2: movzwl aes128_x86mmx1_tablex(,q1=%ebp movzwl aes128_x86mmx1_tablex(,%ebp,8),%ebp # qhasm: e ^= q1 # asm 1: xorl > 8) & 255 # asm 1: movzbl e=int32#6 # asm 2: movzbl e=%edi movzbl %ah,%edi # qhasm: e = *(uint8 *) (&aes128_x86mmx1_table2 + e * 8) # asm 1: movzbl aes128_x86mmx1_table2(,e=int32#6 # asm 2: movzbl aes128_x86mmx1_table2(,e=%edi movzbl aes128_x86mmx1_table2(,%edi,8),%edi # qhasm: e ^= 0x1b # asm 1: xor $0x1b,q3=int32#7 # asm 2: movzbl q3=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q3=int32#7 # asm 2: movl aes128_x86mmx1_table1(,q3=%ebp movl aes128_x86mmx1_table1(,%ebp,8),%ebp # qhasm: q3 &= 0xff000000 # asm 1: and $0xff000000,> 8) & 255 # asm 1: movzbl q2=int32#7 # asm 2: movzbl q2=%ebp movzbl %ah,%ebp # qhasm: q2 = *(uint32 *) (&aes128_x86mmx1_table0 + q2 * 8) # asm 1: movl aes128_x86mmx1_table0(,q2=int32#7 # asm 2: movl aes128_x86mmx1_table0(,q2=%ebp movl aes128_x86mmx1_table0(,%ebp,8),%ebp # qhasm: q2 &= 0x00ff0000 # asm 1: and $0x00ff0000,q1=int32#7 # asm 2: movzbl q1=%ebp movzbl %al,%ebp # qhasm: x3 <<<= 16 # asm 1: rol $16,q1=int32#7 # asm 2: movzwl aes128_x86mmx1_tablex(,q1=%ebp movzwl aes128_x86mmx1_tablex(,%ebp,8),%ebp # qhasm: e ^= q1 # asm 1: xorl > 8) & 255 # asm 1: movzbl e=int32#4 # asm 2: movzbl e=%ebx movzbl %ah,%ebx # qhasm: e = *(uint8 *) (&aes128_x86mmx1_table2 + e * 8) # asm 1: movzbl aes128_x86mmx1_table2(,e=int32#4 # asm 2: movzbl aes128_x86mmx1_table2(,e=%ebx movzbl aes128_x86mmx1_table2(,%ebx,8),%ebx # qhasm: e ^= 0x36 # asm 1: xor $0x36,q3=int32#5 # asm 2: movzbl q3=%esi movzbl %al,%esi # qhasm: x3 <<<= 16 # asm 1: rol $16,q3=int32#5 # asm 2: movl aes128_x86mmx1_table1(,q3=%esi movl aes128_x86mmx1_table1(,%esi,8),%esi # qhasm: q3 &= 0xff000000 # asm 1: and $0xff000000,> 8) & 255 # asm 1: movzbl q2=int32#5 # asm 2: movzbl q2=%esi movzbl %ah,%esi # qhasm: q2 = *(uint32 *) (&aes128_x86mmx1_table0 + q2 * 8) # asm 1: movl aes128_x86mmx1_table0(,q2=int32#5 # asm 2: movl aes128_x86mmx1_table0(,q2=%esi movl aes128_x86mmx1_table0(,%esi,8),%esi # qhasm: q2 &= 0x00ff0000 # asm 1: and $0x00ff0000,q1=int32#5 # asm 2: movzbl q1=%esi movzbl %al,%esi # qhasm: x3 <<<= 16 # asm 1: rol $16,q1=int32#1 # asm 2: movzwl aes128_x86mmx1_tablex(,q1=%eax movzwl aes128_x86mmx1_tablex(,%esi,8),%eax # qhasm: e ^= q1 # asm 1: xorl 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