40699d:	8b ec                	mov    %esp,%ebp
40699f:	8b 45 08             	mov    0x8(%ebp),%eax
4069a2:	85 c0                	test   %eax,%eax
4069a4:	74 12                	je     0x4069b8
4069a6:	83 e8 08             	sub    $0x8,%eax
4069a9:	81 38 dd dd 00 00    	cmpl   $0xdddd,(%eax)
4069af:	75 07                	jne    0x4069b8
4069b1:	50                   	push   %eax
4069b2:	e8 e7 ed ff ff       	call   0x40579e
4069b7:	59                   	pop    %ecx
4069b8:	5d                   	pop    %ebp
4069b9:	c3                   	ret
4069ba:	8b ff                	mov    %edi,%edi
4069bc:	55                   	push   %ebp
4069bd:	8b ec                	mov    %esp,%ebp
4069bf:	83 ec 14             	sub    $0x14,%esp
4069c2:	a1 04 b0 40 00       	mov    0x40b004,%eax
4069c7:	33 c5                	xor    %ebp,%eax
4069c9:	89 45 fc             	mov    %eax,-0x4(%ebp)
4069cc:	53                   	push   %ebx
4069cd:	56                   	push   %esi
4069ce:	33 db                	xor    %ebx,%ebx
4069d0:	57                   	push   %edi
4069d1:	8b f1                	mov    %ecx,%esi
4069d3:	39 1d c0 cf 45 00    	cmp    %ebx,0x45cfc0
4069d9:	75 38                	jne    0x406a13
4069db:	53                   	push   %ebx
4069dc:	53                   	push   %ebx
4069dd:	33 ff                	xor    %edi,%edi
4069df:	47                   	inc    %edi
4069e0:	57                   	push   %edi
4069e1:	68 58 19 40 00       	push   $0x401958
4069e6:	68 00 01 00 00       	push   $0x100
4069eb:	53                   	push   %ebx
4069ec:	ff 15 1c 11 40 00    	call   *0x40111c
4069f2:	85 c0                	test   %eax,%eax
4069f4:	74 08                	je     0x4069fe
4069f6:	89 3d c0 cf 45 00    	mov    %edi,0x45cfc0
4069fc:	eb 15                	jmp    0x406a13
4069fe:	ff 15 c8 10 40 00    	call   *0x4010c8
406a04:	83 f8 78             	cmp    $0x78,%eax
406a07:	75 0a                	jne    0x406a13
406a09:	c7 05 c0 cf 45 00 02 	movl   $0x2,0x45cfc0
406a10:	00 00 00
406a13:	39 5d 14             	cmp    %ebx,0x14(%ebp)
406a16:	7e 22                	jle    0x406a3a
406a18:	8b 4d 14             	mov    0x14(%ebp),%ecx
406a1b:	8b 45 10             	mov    0x10(%ebp),%eax
406a1e:	49                   	dec    %ecx
406a1f:	38 18                	cmp    %bl,(%eax)
406a21:	74 08                	je     0x406a2b
406a23:	40                   	inc    %eax
406a24:	3b cb                	cmp    %ebx,%ecx
406a26:	75 f6                	jne    0x406a1e
406a28:	83 c9 ff             	or     $0xffffffff,%ecx
406a2b:	8b 45 14             	mov    0x14(%ebp),%eax
406a2e:	2b c1                	sub    %ecx,%eax
406a30:	48                   	dec    %eax
406a31:	3b 45 14             	cmp    0x14(%ebp),%eax
406a34:	7d 01                	jge    0x406a37
406a36:	40                   	inc    %eax
406a37:	89 45 14             	mov    %eax,0x14(%ebp)
406a3a:	a1 c0 cf 45 00       	mov    0x45cfc0,%eax
406a3f:	83 f8 02             	cmp    $0x2,%eax
406a42:	0f 84 ac 01 00 00    	je     0x406bf4
406a48:	3b c3                	cmp    %ebx,%eax
406a4a:	0f 84 a4 01 00 00    	je     0x406bf4
406a50:	83 f8 01             	cmp    $0x1,%eax
406a53:	0f 85 cc 01 00 00    	jne    0x406c25
406a59:	89 5d f8             	mov    %ebx,-0x8(%ebp)
406a5c:	39 5d 20             	cmp    %ebx,0x20(%ebp)
406a5f:	75 08                	jne    0x406a69
406a61:	8b 06                	mov    (%esi),%eax
406a63:	8b 40 04             	mov    0x4(%eax),%eax
406a66:	89 45 20             	mov    %eax,0x20(%ebp)
406a69:	8b 35 18 11 40 00    	mov    0x401118,%esi
406a6f:	33 c0                	xor    %eax,%eax
406a71:	39 5d 24             	cmp    %ebx,0x24(%ebp)
406a74:	53                   	push   %ebx
406a75:	53                   	push   %ebx
406a76:	ff 75 14             	push   0x14(%ebp)
406a79:	0f 95 c0             	setne  %al
406a7c:	ff 75 10             	push   0x10(%ebp)
406a7f:	8d 04 c5 01 00 00 00 	lea    0x1(,%eax,8),%eax
406a86:	50                   	push   %eax
406a87:	ff 75 20             	push   0x20(%ebp)
406a8a:	ff d6                	call   *%esi
406a8c:	8b f8                	mov    %eax,%edi
406a8e:	3b fb                	cmp    %ebx,%edi
406a90:	0f 84 8f 01 00 00    	je     0x406c25
406a96:	7e 43                	jle    0x406adb
406a98:	6a e0                	push   $0xffffffe0
406a9a:	33 d2                	xor    %edx,%edx
406a9c:	58                   	pop    %eax
406a9d:	f7 f7                	div    %edi
406a9f:	83 f8 02             	cmp    $0x2,%eax
406aa2:	72 37                	jb     0x406adb
406aa4:	8d 44 3f 08          	lea    0x8(%edi,%edi,1),%eax
406aa8:	3d 00 04 00 00       	cmp    $0x400,%eax
406aad:	77 13                	ja     0x406ac2
406aaf:	e8 8c 18 00 00       	call   0x408340
406ab4:	8b c4                	mov    %esp,%eax
406ab6:	3b c3                	cmp    %ebx,%eax
406ab8:	74 1c                	je     0x406ad6
406aba:	c7 00 cc cc 00 00    	movl   $0xcccc,(%eax)
406ac0:	eb 11                	jmp    0x406ad3
406ac2:	50                   	push   %eax
406ac3:	e8 b2 0a 00 00       	call   0x40757a
406ac8:	59                   	pop    %ecx
406ac9:	3b c3                	cmp    %ebx,%eax
406acb:	74 09                	je     0x406ad6
406acd:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
406ad3:	83 c0 08             	add    $0x8,%eax
406ad6:	89 45 f4             	mov    %eax,-0xc(%ebp)
406ad9:	eb 03                	jmp    0x406ade
406adb:	89 5d f4             	mov    %ebx,-0xc(%ebp)
406ade:	39 5d f4             	cmp    %ebx,-0xc(%ebp)
406ae1:	0f 84 3e 01 00 00    	je     0x406c25
406ae7:	57                   	push   %edi
406ae8:	ff 75 f4             	push   -0xc(%ebp)
406aeb:	ff 75 14             	push   0x14(%ebp)
406aee:	ff 75 10             	push   0x10(%ebp)
406af1:	6a 01                	push   $0x1
406af3:	ff 75 20             	push   0x20(%ebp)
406af6:	ff d6                	call   *%esi
406af8:	85 c0                	test   %eax,%eax
406afa:	0f 84 e3 00 00 00    	je     0x406be3
406b00:	8b 35 1c 11 40 00    	mov    0x40111c,%esi
406b06:	53                   	push   %ebx
406b07:	53                   	push   %ebx
406b08:	57                   	push   %edi
406b09:	ff 75 f4             	push   -0xc(%ebp)
406b0c:	ff 75 0c             	push   0xc(%ebp)
406b0f:	ff 75 08             	push   0x8(%ebp)
406b12:	ff d6                	call   *%esi
406b14:	8b c8                	mov    %eax,%ecx
406b16:	89 4d f8             	mov    %ecx,-0x8(%ebp)
406b19:	3b cb                	cmp    %ebx,%ecx
406b1b:	0f 84 c2 00 00 00    	je     0x406be3
406b21:	f7 45 0c 00 04 00 00 	testl  $0x400,0xc(%ebp)
406b28:	74 29                	je     0x406b53
406b2a:	39 5d 1c             	cmp    %ebx,0x1c(%ebp)
406b2d:	0f 84 b0 00 00 00    	je     0x406be3
406b33:	3b 4d 1c             	cmp    0x1c(%ebp),%ecx
406b36:	0f 8f a7 00 00 00    	jg     0x406be3
406b3c:	ff 75 1c             	push   0x1c(%ebp)
406b3f:	ff 75 18             	push   0x18(%ebp)
406b42:	57                   	push   %edi
406b43:	ff 75 f4             	push   -0xc(%ebp)
406b46:	ff 75 0c             	push   0xc(%ebp)
406b49:	ff 75 08             	push   0x8(%ebp)
406b4c:	ff d6                	call   *%esi
406b4e:	e9 90 00 00 00       	jmp    0x406be3
406b53:	3b cb                	cmp    %ebx,%ecx
406b55:	7e 45                	jle    0x406b9c
406b57:	6a e0                	push   $0xffffffe0
406b59:	33 d2                	xor    %edx,%edx
406b5b:	58                   	pop    %eax
406b5c:	f7 f1                	div    %ecx
406b5e:	83 f8 02             	cmp    $0x2,%eax
406b61:	72 39                	jb     0x406b9c
406b63:	8d 44 09 08          	lea    0x8(%ecx,%ecx,1),%eax
406b67:	3d 00 04 00 00       	cmp    $0x400,%eax
406b6c:	77 16                	ja     0x406b84
406b6e:	e8 cd 17 00 00       	call   0x408340
406b73:	8b f4                	mov    %esp,%esi
406b75:	3b f3                	cmp    %ebx,%esi
406b77:	74 6a                	je     0x406be3
406b79:	c7 06 cc cc 00 00    	movl   $0xcccc,(%esi)
406b7f:	83 c6 08             	add    $0x8,%esi
406b82:	eb 1a                	jmp    0x406b9e
406b84:	50                   	push   %eax
406b85:	e8 f0 09 00 00       	call   0x40757a
406b8a:	59                   	pop    %ecx
406b8b:	3b c3                	cmp    %ebx,%eax
406b8d:	74 09                	je     0x406b98
406b8f:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
406b95:	83 c0 08             	add    $0x8,%eax
406b98:	8b f0                	mov    %eax,%esi
406b9a:	eb 02                	jmp    0x406b9e
406b9c:	33 f6                	xor    %esi,%esi
406b9e:	3b f3                	cmp    %ebx,%esi
406ba0:	74 41                	je     0x406be3
406ba2:	ff 75 f8             	push   -0x8(%ebp)
406ba5:	56                   	push   %esi
406ba6:	57                   	push   %edi
406ba7:	ff 75 f4             	push   -0xc(%ebp)
406baa:	ff 75 0c             	push   0xc(%ebp)
406bad:	ff 75 08             	push   0x8(%ebp)
406bb0:	ff 15 1c 11 40 00    	call   *0x40111c
406bb6:	85 c0                	test   %eax,%eax
406bb8:	74 22                	je     0x406bdc
406bba:	53                   	push   %ebx
406bbb:	53                   	push   %ebx
406bbc:	39 5d 1c             	cmp    %ebx,0x1c(%ebp)
406bbf:	75 04                	jne    0x406bc5
406bc1:	53                   	push   %ebx
406bc2:	53                   	push   %ebx
406bc3:	eb 06                	jmp    0x406bcb
406bc5:	ff 75 1c             	push   0x1c(%ebp)
406bc8:	ff 75 18             	push   0x18(%ebp)
406bcb:	ff 75 f8             	push   -0x8(%ebp)
406bce:	56                   	push   %esi
406bcf:	53                   	push   %ebx
406bd0:	ff 75 20             	push   0x20(%ebp)
406bd3:	ff 15 14 11 40 00    	call   *0x401114
406bd9:	89 45 f8             	mov    %eax,-0x8(%ebp)
406bdc:	56                   	push   %esi
406bdd:	e8 b8 fd ff ff       	call   0x40699a
406be2:	59                   	pop    %ecx
406be3:	ff 75 f4             	push   -0xc(%ebp)
406be6:	e8 af fd ff ff       	call   0x40699a
406beb:	8b 45 f8             	mov    -0x8(%ebp),%eax
406bee:	59                   	pop    %ecx
406bef:	e9 59 01 00 00       	jmp    0x406d4d
406bf4:	89 5d f4             	mov    %ebx,-0xc(%ebp)
406bf7:	89 5d f0             	mov    %ebx,-0x10(%ebp)
406bfa:	39 5d 08             	cmp    %ebx,0x8(%ebp)
406bfd:	75 08                	jne    0x406c07
406bff:	8b 06                	mov    (%esi),%eax
406c01:	8b 40 14             	mov    0x14(%eax),%eax
406c04:	89 45 08             	mov    %eax,0x8(%ebp)
406c07:	39 5d 20             	cmp    %ebx,0x20(%ebp)
406c0a:	75 08                	jne    0x406c14
406c0c:	8b 06                	mov    (%esi),%eax
406c0e:	8b 40 04             	mov    0x4(%eax),%eax
406c11:	89 45 20             	mov    %eax,0x20(%ebp)
406c14:	ff 75 08             	push   0x8(%ebp)
406c17:	e8 19 15 00 00       	call   0x408135
406c1c:	59                   	pop    %ecx
406c1d:	89 45 ec             	mov    %eax,-0x14(%ebp)
406c20:	83 f8 ff             	cmp    $0xffffffff,%eax
406c23:	75 07                	jne    0x406c2c
406c25:	33 c0                	xor    %eax,%eax
406c27:	e9 21 01 00 00       	jmp    0x406d4d
406c2c:	3b 45 20             	cmp    0x20(%ebp),%eax
406c2f:	0f 84 db 00 00 00    	je     0x406d10
406c35:	53                   	push   %ebx
406c36:	53                   	push   %ebx
406c37:	8d 4d 14             	lea    0x14(%ebp),%ecx
406c3a:	51                   	push   %ecx
406c3b:	ff 75 10             	push   0x10(%ebp)
406c3e:	50                   	push   %eax
406c3f:	ff 75 20             	push   0x20(%ebp)
406c42:	e8 37 15 00 00       	call   0x40817e
406c47:	83 c4 18             	add    $0x18,%esp
406c4a:	89 45 f4             	mov    %eax,-0xc(%ebp)
406c4d:	3b c3                	cmp    %ebx,%eax
406c4f:	74 d4                	je     0x406c25
406c51:	8b 35 34 10 40 00    	mov    0x401034,%esi
406c57:	53                   	push   %ebx
406c58:	53                   	push   %ebx
406c59:	ff 75 14             	push   0x14(%ebp)
406c5c:	50                   	push   %eax
406c5d:	ff 75 0c             	push   0xc(%ebp)
406c60:	ff 75 08             	push   0x8(%ebp)
406c63:	ff d6                	call   *%esi
406c65:	89 45 f8             	mov    %eax,-0x8(%ebp)
406c68:	3b c3                	cmp    %ebx,%eax
406c6a:	75 07                	jne    0x406c73
406c6c:	33 f6                	xor    %esi,%esi
406c6e:	e9 b7 00 00 00       	jmp    0x406d2a
406c73:	7e 3d                	jle    0x406cb2
406c75:	83 f8 e0             	cmp    $0xffffffe0,%eax
406c78:	77 38                	ja     0x406cb2
406c7a:	83 c0 08             	add    $0x8,%eax
406c7d:	3d 00 04 00 00       	cmp    $0x400,%eax
406c82:	77 16                	ja     0x406c9a
406c84:	e8 b7 16 00 00       	call   0x408340
406c89:	8b fc                	mov    %esp,%edi
406c8b:	3b fb                	cmp    %ebx,%edi
406c8d:	74 dd                	je     0x406c6c
406c8f:	c7 07 cc cc 00 00    	movl   $0xcccc,(%edi)
406c95:	83 c7 08             	add    $0x8,%edi
406c98:	eb 1a                	jmp    0x406cb4
406c9a:	50                   	push   %eax
406c9b:	e8 da 08 00 00       	call   0x40757a
406ca0:	59                   	pop    %ecx
406ca1:	3b c3                	cmp    %ebx,%eax
406ca3:	74 09                	je     0x406cae
406ca5:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
406cab:	83 c0 08             	add    $0x8,%eax
406cae:	8b f8                	mov    %eax,%edi
406cb0:	eb 02                	jmp    0x406cb4
406cb2:	33 ff                	xor    %edi,%edi
406cb4:	3b fb                	cmp    %ebx,%edi
406cb6:	74 b4                	je     0x406c6c
406cb8:	ff 75 f8             	push   -0x8(%ebp)
406cbb:	53                   	push   %ebx
406cbc:	57                   	push   %edi
406cbd:	e8 5e fc ff ff       	call   0x406920
406cc2:	83 c4 0c             	add    $0xc,%esp
406cc5:	ff 75 f8             	push   -0x8(%ebp)
406cc8:	57                   	push   %edi
406cc9:	ff 75 14             	push   0x14(%ebp)
406ccc:	ff 75 f4             	push   -0xc(%ebp)
406ccf:	ff 75 0c             	push   0xc(%ebp)
406cd2:	ff 75 08             	push   0x8(%ebp)
406cd5:	ff d6                	call   *%esi
406cd7:	89 45 f8             	mov    %eax,-0x8(%ebp)
406cda:	3b c3                	cmp    %ebx,%eax
406cdc:	75 04                	jne    0x406ce2
406cde:	33 f6                	xor    %esi,%esi
406ce0:	eb 25                	jmp    0x406d07
406ce2:	ff 75 1c             	push   0x1c(%ebp)
406ce5:	8d 45 f8             	lea    -0x8(%ebp),%eax
406ce8:	ff 75 18             	push   0x18(%ebp)
406ceb:	50                   	push   %eax
406cec:	57                   	push   %edi
406ced:	ff 75 20             	push   0x20(%ebp)
406cf0:	ff 75 ec             	push   -0x14(%ebp)
406cf3:	e8 86 14 00 00       	call   0x40817e
406cf8:	8b f0                	mov    %eax,%esi
406cfa:	89 75 f0             	mov    %esi,-0x10(%ebp)
406cfd:	83 c4 18             	add    $0x18,%esp
406d00:	f7 de                	neg    %esi
406d02:	1b f6                	sbb    %esi,%esi
406d04:	23 75 f8             	and    -0x8(%ebp),%esi
406d07:	57                   	push   %edi
406d08:	e8 8d fc ff ff       	call   0x40699a
406d0d:	59                   	pop    %ecx
406d0e:	eb 1a                	jmp    0x406d2a
406d10:	ff 75 1c             	push   0x1c(%ebp)
406d13:	ff 75 18             	push   0x18(%ebp)
406d16:	ff 75 14             	push   0x14(%ebp)
406d19:	ff 75 10             	push   0x10(%ebp)
406d1c:	ff 75 0c             	push   0xc(%ebp)
406d1f:	ff 75 08             	push   0x8(%ebp)
406d22:	ff 15 34 10 40 00    	call   *0x401034
406d28:	8b f0                	mov    %eax,%esi
406d2a:	39 5d f4             	cmp    %ebx,-0xc(%ebp)
406d2d:	74 09                	je     0x406d38
406d2f:	ff 75 f4             	push   -0xc(%ebp)
406d32:	e8 67 ea ff ff       	call   0x40579e
406d37:	59                   	pop    %ecx
406d38:	8b 45 f0             	mov    -0x10(%ebp),%eax
406d3b:	3b c3                	cmp    %ebx,%eax
406d3d:	74 0c                	je     0x406d4b
406d3f:	39 45 18             	cmp    %eax,0x18(%ebp)
406d42:	74 07                	je     0x406d4b
406d44:	50                   	push   %eax
406d45:	e8 54 ea ff ff       	call   0x40579e
406d4a:	59                   	pop    %ecx
406d4b:	8b c6                	mov    %esi,%eax
406d4d:	8d 65 e0             	lea    -0x20(%ebp),%esp
406d50:	5f                   	pop    %edi
406d51:	5e                   	pop    %esi
406d52:	5b                   	pop    %ebx
406d53:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406d56:	33 cd                	xor    %ebp,%ecx