--- ./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)

