--- ./bf-bool0.asm 2013-01-23 23:25:19.000000000 -0700 +++ ./bf-bool1.asm 2013-01-23 23:26:53.000000000 -0700 @@ -339,156 +339,182 @@ .text .globl main .type main, @function main: .LFB986: .cfi_startproc leal 4(%esp), %ecx .cfi_def_cfa 1, 0 andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp .cfi_escape 0x10,0x5,0x2,0x75,0 pushl %edi pushl %esi pushl %ebx pushl %ecx .cfi_escape 0xf,0x3,0x75,0x70,0x6 .cfi_escape 0x10,0x3,0x2,0x75,0x74 .cfi_escape 0x10,0x6,0x2,0x75,0x78 .cfi_escape 0x10,0x7,0x2,0x75,0x7c subl $104, %esp movl %ecx, %eax movl 4(%eax), %eax addl $4, %eax movl (%eax), %eax movl %eax, (%esp) call atoi movl %eax, -28(%ebp) movl $1, -64(%ebp) - movb $0, -60(%ebp) - movb $0, -59(%ebp) - movb $0, -58(%ebp) + movzbl -60(%ebp), %eax + andl $-2, %eax + movb %al, -60(%ebp) + movzbl -60(%ebp), %eax + andl $-3, %eax + movb %al, -60(%ebp) + movzbl -60(%ebp), %eax + andl $-5, %eax + movb %al, -60(%ebp) movl $0, -56(%ebp) leal -52(%ebp), %eax movl %eax, (%esp) call _Z3nowv subl $4, %esp movl $0, -32(%ebp) jmp .L17 .L22: movzbl -60(%ebp), %eax + andl $1, %eax testb %al, %al je .L18 movl -64(%ebp), %edx movl -56(%ebp), %eax addl %edx, %eax movl %eax, -64(%ebp) jmp .L19 .L18: - movzbl -59(%ebp), %eax + movzbl -60(%ebp), %eax + shrb %al + andl $1, %eax testb %al, %al je .L20 movl -64(%ebp), %edx movl -56(%ebp), %eax movl %edx, %ecx subl %eax, %ecx movl %ecx, %eax movl %eax, -64(%ebp) jmp .L19 .L20: - movzbl -58(%ebp), %eax + movzbl -60(%ebp), %eax + shrb $2, %al + andl $1, %eax testb %al, %al je .L21 movl -56(%ebp), %edx movl -64(%ebp), %eax movl %edx, %ecx subl %eax, %ecx movl %ecx, %eax movl %eax, -56(%ebp) jmp .L19 .L21: movl -64(%ebp), %edx movl -56(%ebp), %eax xorl %edx, %eax movl %eax, -56(%ebp) .L19: movl -32(%ebp), %ecx movl $1431655766, %edx movl %ecx, %eax imull %edx movl %ecx, %eax sarl $31, %eax subl %eax, %edx movl %edx, %eax addl %eax, %eax addl %edx, %eax movl %ecx, %edx subl %eax, %edx testl %edx, %edx setne %al + movl %eax, %edx + andl $1, %edx + movzbl -60(%ebp), %eax + andl $-2, %eax + orl %edx, %eax movb %al, -60(%ebp) movl -32(%ebp), %ecx movl $1717986919, %edx movl %ecx, %eax imull %edx sarl %edx movl %ecx, %eax sarl $31, %eax subl %eax, %edx movl %edx, %eax sall $2, %eax addl %edx, %eax movl %ecx, %edx subl %eax, %edx testl %edx, %edx setne %al - movb %al, -59(%ebp) + andl $1, %eax + leal (%eax,%eax), %edx + movzbl -60(%ebp), %eax + andl $-3, %eax + orl %edx, %eax + movb %al, -60(%ebp) movl -32(%ebp), %ecx movl $-1840700269, %edx movl %ecx, %eax imull %edx leal (%edx,%ecx), %eax movl %eax, %edx sarl $2, %edx movl %ecx, %eax sarl $31, %eax subl %eax, %edx movl %edx, %eax sall $3, %eax subl %edx, %eax movl %ecx, %edx subl %eax, %edx testl %edx, %edx setne %al - movb %al, -58(%ebp) + andl $1, %eax + leal 0(,%eax,4), %edx + movzbl -60(%ebp), %eax + andl $-5, %eax + orl %edx, %eax + movb %al, -60(%ebp) addl $1, -32(%ebp) .L17: movl -32(%ebp), %eax cmpl -28(%ebp), %eax setl %al testb %al, %al jne .L22 leal -44(%ebp), %eax movl %eax, (%esp) call _Z3nowv subl $4, %esp movl $3, 4(%esp) movl $_ZSt4cout+4, (%esp) call _ZNSt8ios_base9precisionEi movl -52(%ebp), %eax movl -48(%ebp), %edx movl %eax, 8(%esp) movl %edx, 12(%esp) movl -44(%ebp), %eax movl -40(%ebp), %edx movl %eax, (%esp) movl %edx, 4(%esp) call _Zmi8timespecS_ fstpl -96(%ebp) fildl -28(%ebp) fldl .LC2 fdivrp %st, %st(1) fldl .LC3 fxch %st(1) fucomi %st(1), %st @@ -519,61 +545,61 @@ movl %ebx, %eax xorb $0, %ah movl %eax, -104(%ebp) movl %esi, %edx xorl $-2147483648, %edx movl %edx, -100(%ebp) movl -104(%ebp), %ebx movl -100(%ebp), %esi .L24: movl -56(%ebp), %edi movl -64(%ebp), %ecx movl %ecx, -80(%ebp) leal -36(%ebp), %eax movl $10, 4(%esp) movl %eax, (%esp) call _ZSt4setwi subl $4, %esp movl $_ZSt5fixedRSt8ios_base, 4(%esp) movl $_ZSt4cout, (%esp) call _ZNSolsEPFRSt8ios_baseS0_E movl -36(%ebp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw movl $.LC4, 4(%esp) movl %eax, (%esp) call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc movl $58, 4(%esp) movl %eax, (%esp) call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c - movl $0, 4(%esp) + movl $1, 4(%esp) movl %eax, (%esp) call _ZNSolsEi movl $.LC5, 4(%esp) movl %eax, (%esp) call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc movl $12, 4(%esp) movl %eax, (%esp) call _ZNSolsEj movl $.LC6, 4(%esp) movl %eax, (%esp) call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc movl -80(%ebp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call _ZNSolsEi movl $46, 4(%esp) movl %eax, (%esp) call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c movl %edi, 4(%esp) movl %eax, (%esp) call _ZNSolsEi movl $.LC7, 4(%esp) movl %eax, (%esp) call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc movl %ebx, 4(%esp) movl %esi, 8(%esp) movl %eax, (%esp) call _ZNSolsEy movl $77, 4(%esp) movl %eax, (%esp)