40691c:	83 c4 0c             	add    $0xc,%esp
40691f:	85 ff                	test   %edi,%edi
406921:	75 27                	jne    0x40694a
406923:	39 05 c0 38 41 00    	cmp    %eax,0x4138c0
406929:	76 1f                	jbe    0x40694a
40692b:	56                   	push   %esi
40692c:	ff 15 f4 f0 40 00    	call   *0x40f0f4
406932:	8d 86 e8 03 00 00    	lea    0x3e8(%esi),%eax
406938:	3b 05 c0 38 41 00    	cmp    0x4138c0,%eax
40693e:	76 03                	jbe    0x406943
406940:	83 c8 ff             	or     $0xffffffff,%eax
406943:	8b f0                	mov    %eax,%esi
406945:	83 f8 ff             	cmp    $0xffffffff,%eax
406948:	75 c3                	jne    0x40690d
40694a:	8b c7                	mov    %edi,%eax
40694c:	5f                   	pop    %edi
40694d:	5e                   	pop    %esi
40694e:	5d                   	pop    %ebp
40694f:	c3                   	ret
406950:	8b ff                	mov    %edi,%edi
406952:	55                   	push   %ebp
406953:	8b ec                	mov    %esp,%ebp
406955:	56                   	push   %esi
406956:	57                   	push   %edi
406957:	33 f6                	xor    %esi,%esi
406959:	ff 75 0c             	push   0xc(%ebp)
40695c:	ff 75 08             	push   0x8(%ebp)
40695f:	e8 62 58 00 00       	call   0x40c1c6
406964:	8b f8                	mov    %eax,%edi
406966:	59                   	pop    %ecx
406967:	59                   	pop    %ecx
406968:	85 ff                	test   %edi,%edi
40696a:	75 2c                	jne    0x406998
40696c:	39 45 0c             	cmp    %eax,0xc(%ebp)
40696f:	74 27                	je     0x406998
406971:	39 05 c0 38 41 00    	cmp    %eax,0x4138c0
406977:	76 1f                	jbe    0x406998
406979:	56                   	push   %esi
40697a:	ff 15 f4 f0 40 00    	call   *0x40f0f4
406980:	8d 86 e8 03 00 00    	lea    0x3e8(%esi),%eax
406986:	3b 05 c0 38 41 00    	cmp    0x4138c0,%eax
40698c:	76 03                	jbe    0x406991
40698e:	83 c8 ff             	or     $0xffffffff,%eax
406991:	8b f0                	mov    %eax,%esi
406993:	83 f8 ff             	cmp    $0xffffffff,%eax
406996:	75 c1                	jne    0x406959
406998:	8b c7                	mov    %edi,%eax
40699a:	5f                   	pop    %edi
40699b:	5e                   	pop    %esi
40699c:	5d                   	pop    %ebp
40699d:	c3                   	ret
40699e:	8b ff                	mov    %edi,%edi
4069a0:	55                   	push   %ebp
4069a1:	8b ec                	mov    %esp,%ebp
4069a3:	56                   	push   %esi
4069a4:	57                   	push   %edi
4069a5:	33 f6                	xor    %esi,%esi
4069a7:	ff 75 10             	push   0x10(%ebp)
4069aa:	ff 75 0c             	push   0xc(%ebp)
4069ad:	ff 75 08             	push   0x8(%ebp)
4069b0:	e8 be 58 00 00       	call   0x40c273
4069b5:	8b f8                	mov    %eax,%edi
4069b7:	83 c4 0c             	add    $0xc,%esp
4069ba:	85 ff                	test   %edi,%edi
4069bc:	75 2c                	jne    0x4069ea
4069be:	39 45 10             	cmp    %eax,0x10(%ebp)
4069c1:	74 27                	je     0x4069ea
4069c3:	39 05 c0 38 41 00    	cmp    %eax,0x4138c0
4069c9:	76 1f                	jbe    0x4069ea
4069cb:	56                   	push   %esi
4069cc:	ff 15 f4 f0 40 00    	call   *0x40f0f4
4069d2:	8d 86 e8 03 00 00    	lea    0x3e8(%esi),%eax
4069d8:	3b 05 c0 38 41 00    	cmp    0x4138c0,%eax
4069de:	76 03                	jbe    0x4069e3
4069e0:	83 c8 ff             	or     $0xffffffff,%eax
4069e3:	8b f0                	mov    %eax,%esi
4069e5:	83 f8 ff             	cmp    $0xffffffff,%eax
4069e8:	75 bd                	jne    0x4069a7
4069ea:	8b c7                	mov    %edi,%eax
4069ec:	5f                   	pop    %edi
4069ed:	5e                   	pop    %esi
4069ee:	5d                   	pop    %ebp
4069ef:	c3                   	ret
4069f0:	6a 10                	push   $0x10
4069f2:	68 c8 12 41 00       	push   $0x4112c8
4069f7:	e8 74 d7 ff ff       	call   0x404170
4069fc:	33 db                	xor    %ebx,%ebx
4069fe:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
406a01:	6a 01                	push   $0x1
406a03:	e8 91 03 00 00       	call   0x406d99
406a08:	59                   	pop    %ecx
406a09:	89 5d fc             	mov    %ebx,-0x4(%ebp)
406a0c:	6a 03                	push   $0x3
406a0e:	5f                   	pop    %edi
406a0f:	89 7d e0             	mov    %edi,-0x20(%ebp)
406a12:	3b 3d 60 57 41 00    	cmp    0x415760,%edi
406a18:	7d 54                	jge    0x406a6e
406a1a:	8b f7                	mov    %edi,%esi
406a1c:	a1 44 47 41 00       	mov    0x414744,%eax
406a21:	39 1c b0             	cmp    %ebx,(%eax,%esi,4)
406a24:	74 45                	je     0x406a6b
406a26:	8b 04 b0             	mov    (%eax,%esi,4),%eax
406a29:	f6 40 0c 83          	testb  $0x83,0xc(%eax)
406a2d:	74 0f                	je     0x406a3e
406a2f:	50                   	push   %eax
406a30:	e8 56 ce ff ff       	call   0x40388b
406a35:	59                   	pop    %ecx
406a36:	83 f8 ff             	cmp    $0xffffffff,%eax
406a39:	74 03                	je     0x406a3e
406a3b:	ff 45 e4             	incl   -0x1c(%ebp)
406a3e:	83 ff 14             	cmp    $0x14,%edi
406a41:	7c 28                	jl     0x406a6b
406a43:	a1 44 47 41 00       	mov    0x414744,%eax
406a48:	8b 04 b0             	mov    (%eax,%esi,4),%eax
406a4b:	83 c0 20             	add    $0x20,%eax
406a4e:	50                   	push   %eax
406a4f:	ff 15 f0 f0 40 00    	call   *0x40f0f0
406a55:	a1 44 47 41 00       	mov    0x414744,%eax
406a5a:	ff 34 b0             	push   (%eax,%esi,4)
406a5d:	e8 09 b5 ff ff       	call   0x401f6b
406a62:	59                   	pop    %ecx
406a63:	a1 44 47 41 00       	mov    0x414744,%eax
406a68:	89 1c b0             	mov    %ebx,(%eax,%esi,4)
406a6b:	47                   	inc    %edi
406a6c:	eb a1                	jmp    0x406a0f
406a6e:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406a75:	e8 09 00 00 00       	call   0x406a83
406a7a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
406a7d:	e8 33 d7 ff ff       	call   0x4041b5
406a82:	c3                   	ret
406a83:	6a 01                	push   $0x1
406a85:	e8 36 02 00 00       	call   0x406cc0
406a8a:	59                   	pop    %ecx
406a8b:	c3                   	ret
406a8c:	8b ff                	mov    %edi,%edi
406a8e:	55                   	push   %ebp
406a8f:	8b ec                	mov    %esp,%ebp
406a91:	53                   	push   %ebx
406a92:	56                   	push   %esi
406a93:	8b 75 08             	mov    0x8(%ebp),%esi
406a96:	8b 46 0c             	mov    0xc(%esi),%eax
406a99:	8b c8                	mov    %eax,%ecx
406a9b:	80 e1 03             	and    $0x3,%cl
406a9e:	33 db                	xor    %ebx,%ebx
406aa0:	80 f9 02             	cmp    $0x2,%cl
406aa3:	75 40                	jne    0x406ae5
406aa5:	a9 08 01 00 00       	test   $0x108,%eax
406aaa:	74 39                	je     0x406ae5
406aac:	8b 46 08             	mov    0x8(%esi),%eax
406aaf:	57                   	push   %edi
406ab0:	8b 3e                	mov    (%esi),%edi
406ab2:	2b f8                	sub    %eax,%edi
406ab4:	85 ff                	test   %edi,%edi
406ab6:	7e 2c                	jle    0x406ae4
406ab8:	57                   	push   %edi
406ab9:	50                   	push   %eax
406aba:	56                   	push   %esi
406abb:	e8 f0 bf ff ff       	call   0x402ab0
406ac0:	59                   	pop    %ecx
406ac1:	50                   	push   %eax
406ac2:	e8 17 5f 00 00       	call   0x40c9de
406ac7:	83 c4 0c             	add    $0xc,%esp
406aca:	3b c7                	cmp    %edi,%eax
406acc:	75 0f                	jne    0x406add
406ace:	8b 46 0c             	mov    0xc(%esi),%eax
406ad1:	84 c0                	test   %al,%al
406ad3:	79 0f                	jns    0x406ae4
406ad5:	83 e0 fd             	and    $0xfffffffd,%eax
406ad8:	89 46 0c             	mov    %eax,0xc(%esi)
406adb:	eb 07                	jmp    0x406ae4
406add:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
406ae1:	83 cb ff             	or     $0xffffffff,%ebx
406ae4:	5f                   	pop    %edi
406ae5:	8b 46 08             	mov    0x8(%esi),%eax
406ae8:	83 66 04 00          	andl   $0x0,0x4(%esi)
406aec:	89 06                	mov    %eax,(%esi)
406aee:	5e                   	pop    %esi
406aef:	8b c3                	mov    %ebx,%eax
406af1:	5b                   	pop    %ebx
406af2:	5d                   	pop    %ebp
406af3:	c3                   	ret
406af4:	8b ff                	mov    %edi,%edi
406af6:	55                   	push   %ebp
406af7:	8b ec                	mov    %esp,%ebp
406af9:	56                   	push   %esi
406afa:	8b 75 08             	mov    0x8(%ebp),%esi
406afd:	85 f6                	test   %esi,%esi
406aff:	75 09                	jne    0x406b0a
406b01:	56                   	push   %esi
406b02:	e8 35 00 00 00       	call   0x406b3c
406b07:	59                   	pop    %ecx
406b08:	eb 2f                	jmp    0x406b39
406b0a:	56                   	push   %esi
406b0b:	e8 7c ff ff ff       	call   0x406a8c
406b10:	59                   	pop    %ecx
406b11:	85 c0                	test   %eax,%eax
406b13:	74 05                	je     0x406b1a
406b15:	83 c8 ff             	or     $0xffffffff,%eax
406b18:	eb 1f                	jmp    0x406b39
406b1a:	f7 46 0c 00 40 00 00 	testl  $0x4000,0xc(%esi)
406b21:	74 14                	je     0x406b37
406b23:	56                   	push   %esi
406b24:	e8 87 bf ff ff       	call   0x402ab0
406b29:	50                   	push   %eax
406b2a:	e8 83 5f 00 00       	call   0x40cab2
406b2f:	59                   	pop    %ecx
406b30:	f7 d8                	neg    %eax
406b32:	59                   	pop    %ecx
406b33:	1b c0                	sbb    %eax,%eax
406b35:	eb 02                	jmp    0x406b39
406b37:	33 c0                	xor    %eax,%eax
406b39:	5e                   	pop    %esi
406b3a:	5d                   	pop    %ebp
406b3b:	c3                   	ret
406b3c:	6a 14                	push   $0x14
406b3e:	68 e8 12 41 00       	push   $0x4112e8
406b43:	e8 28 d6 ff ff       	call   0x404170
406b48:	33 ff                	xor    %edi,%edi
406b4a:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406b4d:	89 7d dc             	mov    %edi,-0x24(%ebp)
406b50:	6a 01                	push   $0x1
406b52:	e8 42 02 00 00       	call   0x406d99
406b57:	59                   	pop    %ecx
406b58:	89 7d fc             	mov    %edi,-0x4(%ebp)
406b5b:	33 f6                	xor    %esi,%esi
406b5d:	89 75 e0             	mov    %esi,-0x20(%ebp)
406b60:	3b 35 60 57 41 00    	cmp    0x415760,%esi
406b66:	0f 8d 83 00 00 00    	jge    0x406bef
406b6c:	a1 44 47 41 00       	mov    0x414744,%eax
406b71:	8d 04 b0             	lea    (%eax,%esi,4),%eax
406b74:	39 38                	cmp    %edi,(%eax)
406b76:	74 5e                	je     0x406bd6
406b78:	8b 00                	mov    (%eax),%eax
406b7a:	f6 40 0c 83          	testb  $0x83,0xc(%eax)
406b7e:	74 56                	je     0x406bd6
406b80:	50                   	push   %eax
406b81:	56                   	push   %esi
406b82:	e8 14 b8 ff ff       	call   0x40239b
406b87:	59                   	pop    %ecx
406b88:	59                   	pop    %ecx
406b89:	33 d2                	xor    %edx,%edx
406b8b:	42                   	inc    %edx
406b8c:	89 55 fc             	mov    %edx,-0x4(%ebp)
406b8f:	a1 44 47 41 00       	mov    0x414744,%eax
406b94:	8b 04 b0             	mov    (%eax,%esi,4),%eax
406b97:	8b 48 0c             	mov    0xc(%eax),%ecx
406b9a:	f6 c1 83             	test   $0x83,%cl
406b9d:	74 2f                	je     0x406bce
406b9f:	39 55 08             	cmp    %edx,0x8(%ebp)
406ba2:	75 11                	jne    0x406bb5
406ba4:	50                   	push   %eax
406ba5:	e8 4a ff ff ff       	call   0x406af4
406baa:	59                   	pop    %ecx
406bab:	83 f8 ff             	cmp    $0xffffffff,%eax
406bae:	74 1e                	je     0x406bce
406bb0:	ff 45 e4             	incl   -0x1c(%ebp)
406bb3:	eb 19                	jmp    0x406bce
406bb5:	39 7d 08             	cmp    %edi,0x8(%ebp)
406bb8:	75 14                	jne    0x406bce
406bba:	f6 c1 02             	test   $0x2,%cl
406bbd:	74 0f                	je     0x406bce
406bbf:	50                   	push   %eax
406bc0:	e8 2f ff ff ff       	call   0x406af4
406bc5:	59                   	pop    %ecx
406bc6:	83 f8 ff             	cmp    $0xffffffff,%eax
406bc9:	75 03                	jne    0x406bce
406bcb:	09 45 dc             	or     %eax,-0x24(%ebp)
406bce:	89 7d fc             	mov    %edi,-0x4(%ebp)
406bd1:	e8 08 00 00 00       	call   0x406bde
406bd6:	46                   	inc    %esi
406bd7:	eb 84                	jmp    0x406b5d
406bd9:	33 ff                	xor    %edi,%edi
406bdb:	8b 75 e0             	mov    -0x20(%ebp),%esi
406bde:	a1 44 47 41 00       	mov    0x414744,%eax
406be3:	ff 34 b0             	push   (%eax,%esi,4)
406be6:	56                   	push   %esi
406be7:	e8 1d b8 ff ff       	call   0x402409
406bec:	59                   	pop    %ecx
406bed:	59                   	pop    %ecx
406bee:	c3                   	ret
406bef:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406bf6:	e8 12 00 00 00       	call   0x406c0d
406bfb:	83 7d 08 01          	cmpl   $0x1,0x8(%ebp)
406bff:	8b 45 e4             	mov    -0x1c(%ebp),%eax
406c02:	74 03                	je     0x406c07
406c04:	8b 45 dc             	mov    -0x24(%ebp),%eax
406c07:	e8 a9 d5 ff ff       	call   0x4041b5
406c0c:	c3                   	ret
406c0d:	6a 01                	push   $0x1
406c0f:	e8 ac 00 00 00       	call   0x406cc0
406c14:	59                   	pop    %ecx
406c15:	c3                   	ret
406c16:	6a 01                	push   $0x1
406c18:	e8 1f ff ff ff       	call   0x406b3c
406c1d:	59                   	pop    %ecx
406c1e:	c3                   	ret
406c1f:	8b ff                	mov    %edi,%edi
406c21:	56                   	push   %esi
406c22:	57                   	push   %edi
406c23:	33 f6                	xor    %esi,%esi
406c25:	bf c8 38 41 00       	mov    $0x4138c8,%edi
406c2a:	83 3c f5 bc 2b 41 00 	cmpl   $0x1,0x412bbc(,%esi,8)
406c31:	01
406c32:	75 1d                	jne    0x406c51
406c34:	8d 04 f5 b8 2b 41 00 	lea    0x412bb8(,%esi,8),%eax
406c3b:	89 38                	mov    %edi,(%eax)
406c3d:	68 a0 0f 00 00       	push   $0xfa0
406c42:	ff 30                	push   (%eax)
406c44:	83 c7 18             	add    $0x18,%edi
406c47:	ff 15 9c f0 40 00    	call   *0x40f09c
406c4d:	85 c0                	test   %eax,%eax
406c4f:	74 0c                	je     0x406c5d
406c51:	46                   	inc    %esi
406c52:	83 fe 24             	cmp    $0x24,%esi
406c55:	7c d3                	jl     0x406c2a
406c57:	33 c0                	xor    %eax,%eax
406c59:	40                   	inc    %eax
406c5a:	5f                   	pop    %edi
406c5b:	5e                   	pop    %esi
406c5c:	c3                   	ret
406c5d:	83 24 f5 b8 2b 41 00 	andl   $0x0,0x412bb8(,%esi,8)
406c64:	00
406c65:	33 c0                	xor    %eax,%eax
406c67:	eb f1                	jmp    0x406c5a
406c69:	8b ff                	mov    %edi,%edi
406c6b:	53                   	push   %ebx
406c6c:	8b 1d f0 f0 40 00    	mov    0x40f0f0,%ebx
406c72:	56                   	push   %esi
406c73:	be b8 2b 41 00       	mov    $0x412bb8,%esi
406c78:	57                   	push   %edi
406c79:	8b 3e                	mov    (%esi),%edi
406c7b:	85 ff                	test   %edi,%edi
406c7d:	74 13                	je     0x406c92
406c7f:	83 7e 04 01          	cmpl   $0x1,0x4(%esi)
406c83:	74 0d                	je     0x406c92
406c85:	57                   	push   %edi
406c86:	ff d3                	call   *%ebx
406c88:	57                   	push   %edi
406c89:	e8 dd b2 ff ff       	call   0x401f6b
406c8e:	83 26 00             	andl   $0x0,(%esi)
406c91:	59                   	pop    %ecx
406c92:	83 c6 08             	add    $0x8,%esi
406c95:	81 fe d8 2c 41 00    	cmp    $0x412cd8,%esi
406c9b:	7c dc                	jl     0x406c79
406c9d:	be b8 2b 41 00       	mov    $0x412bb8,%esi
406ca2:	5f                   	pop    %edi
406ca3:	8b 06                	mov    (%esi),%eax
406ca5:	85 c0                	test   %eax,%eax
406ca7:	74 09                	je     0x406cb2
406ca9:	83 7e 04 01          	cmpl   $0x1,0x4(%esi)