406951:	8d 85 28 fd ff ff    	lea    -0x2d8(%ebp),%eax
406957:	8b d7                	mov    %edi,%edx
406959:	50                   	push   %eax
40695a:	6a 07                	push   $0x7
40695c:	e8 be f8 ff ff       	call   0x40621f
406961:	8b f0                	mov    %eax,%esi
406963:	85 f6                	test   %esi,%esi
406965:	75 22                	jne    0x406989
406967:	83 bd 28 fd ff ff 34 	cmpl   $0x34,-0x2d8(%ebp)
40696e:	72 0b                	jb     0x40697b
406970:	8b 95 2c fd ff ff    	mov    -0x2d4(%ebp),%edx
406976:	e8 89 cc ff ff       	call   0x403604
40697b:	ff b5 2c fd ff ff    	push   -0x2d4(%ebp)
406981:	ff 15 b0 f0 40 00    	call   *0x40f0b0
406987:	eb 47                	jmp    0x4069d0
406989:	6a 20                	push   $0x20
40698b:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
406991:	50                   	push   %eax
406992:	68 81 04 00 00       	push   $0x481
406997:	6a 00                	push   $0x0
406999:	ff 15 20 f1 40 00    	call   *0x40f120
40699f:	85 c0                	test   %eax,%eax
4069a1:	75 07                	jne    0x4069aa
4069a3:	66 89 85 78 ff ff ff 	mov    %ax,-0x88(%ebp)
4069aa:	56                   	push   %esi
4069ab:	ba 04 01 00 00       	mov    $0x104,%edx
4069b0:	8d 8d 30 fd ff ff    	lea    -0x2d0(%ebp),%ecx
4069b6:	e8 2a c5 ff ff       	call   0x402ee5
4069bb:	50                   	push   %eax
4069bc:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
4069c2:	50                   	push   %eax
4069c3:	68 c0 1b 40 00       	push   $0x401bc0
4069c8:	e8 ed be ff ff       	call   0x4028ba
4069cd:	83 c4 0c             	add    $0xc,%esp
4069d0:	8b 4b 08             	mov    0x8(%ebx),%ecx
4069d3:	8d 85 2c fd ff ff    	lea    -0x2d4(%ebp),%eax
4069d9:	50                   	push   %eax
4069da:	8d 85 28 fd ff ff    	lea    -0x2d8(%ebp),%eax
4069e0:	8b d7                	mov    %edi,%edx
4069e2:	50                   	push   %eax
4069e3:	6a 04                	push   $0x4
4069e5:	e8 35 f8 ff ff       	call   0x40621f
4069ea:	8b f0                	mov    %eax,%esi
4069ec:	85 f6                	test   %esi,%esi
4069ee:	75 25                	jne    0x406a15
4069f0:	81 bd 28 fd ff ff e8 	cmpl   $0x5e8,-0x2d8(%ebp)
4069f7:	05 00 00
4069fa:	72 0b                	jb     0x406a07
4069fc:	8b 8d 2c fd ff ff    	mov    -0x2d4(%ebp),%ecx
406a02:	e8 89 c8 ff ff       	call   0x403290
406a07:	ff b5 2c fd ff ff    	push   -0x2d4(%ebp)
406a0d:	ff 15 b0 f0 40 00    	call   *0x40f0b0
406a13:	eb 47                	jmp    0x406a5c
406a15:	6a 20                	push   $0x20
406a17:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
406a1d:	50                   	push   %eax
406a1e:	68 82 04 00 00       	push   $0x482
406a23:	6a 00                	push   $0x0
406a25:	ff 15 20 f1 40 00    	call   *0x40f120
406a2b:	85 c0                	test   %eax,%eax
406a2d:	75 07                	jne    0x406a36
406a2f:	66 89 85 78 ff ff ff 	mov    %ax,-0x88(%ebp)
406a36:	56                   	push   %esi
406a37:	ba 04 01 00 00       	mov    $0x104,%edx
406a3c:	8d 8d 30 fd ff ff    	lea    -0x2d0(%ebp),%ecx
406a42:	e8 9e c4 ff ff       	call   0x402ee5
406a47:	50                   	push   %eax
406a48:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
406a4e:	50                   	push   %eax
406a4f:	68 c0 1b 40 00       	push   $0x401bc0
406a54:	e8 61 be ff ff       	call   0x4028ba
406a59:	83 c4 0c             	add    $0xc,%esp
406a5c:	33 f6                	xor    %esi,%esi
406a5e:	68 c4 13 40 00       	push   $0x4013c4
406a63:	e8 52 be ff ff       	call   0x4028ba
406a68:	59                   	pop    %ecx
406a69:	8b c6                	mov    %esi,%eax
406a6b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406a6e:	5f                   	pop    %edi
406a6f:	5e                   	pop    %esi
406a70:	33 cd                	xor    %ebp,%ecx
406a72:	5b                   	pop    %ebx
406a73:	e8 58 20 00 00       	call   0x408ad0
406a78:	c9                   	leave
406a79:	c3                   	ret
406a7a:	8b ff                	mov    %edi,%edi
406a7c:	55                   	push   %ebp
406a7d:	8b ec                	mov    %esp,%ebp
406a7f:	81 ec 74 04 00 00    	sub    $0x474,%esp
406a85:	a1 04 a0 40 00       	mov    0x40a004,%eax
406a8a:	33 c5                	xor    %ebp,%eax
406a8c:	89 45 fc             	mov    %eax,-0x4(%ebp)
406a8f:	53                   	push   %ebx
406a90:	8b da                	mov    %edx,%ebx
406a92:	56                   	push   %esi
406a93:	57                   	push   %edi
406a94:	83 f9 12             	cmp    $0x12,%ecx
406a97:	0f 85 59 01 00 00    	jne    0x406bf6
406a9d:	8b 4b 08             	mov    0x8(%ebx),%ecx
406aa0:	8d 55 e8             	lea    -0x18(%ebp),%edx
406aa3:	e8 ec cf ff ff       	call   0x403a94
406aa8:	84 c0                	test   %al,%al
406aaa:	0f 84 46 01 00 00    	je     0x406bf6
406ab0:	8b 43 0c             	mov    0xc(%ebx),%eax
406ab3:	33 f6                	xor    %esi,%esi
406ab5:	6a 2a                	push   $0x2a
406ab7:	5a                   	pop    %edx
406ab8:	89 85 c4 fb ff ff    	mov    %eax,-0x43c(%ebp)
406abe:	66 39 10             	cmp    %dx,(%eax)
406ac1:	75 06                	jne    0x406ac9
406ac3:	89 b5 c4 fb ff ff    	mov    %esi,-0x43c(%ebp)
406ac9:	8b 4b 10             	mov    0x10(%ebx),%ecx
406acc:	66 39 11             	cmp    %dx,(%ecx)
406acf:	75 09                	jne    0x406ada
406ad1:	83 8d c8 fb ff ff ff 	orl    $0xffffffff,-0x438(%ebp)
406ad8:	eb 0e                	jmp    0x406ae8
406ada:	e8 97 d1 ff ff       	call   0x403c76
406adf:	6a 2a                	push   $0x2a
406ae1:	89 85 c8 fb ff ff    	mov    %eax,-0x438(%ebp)
406ae7:	5a                   	pop    %edx
406ae8:	8b 7b 14             	mov    0x14(%ebx),%edi
406aeb:	66 39 17             	cmp    %dx,(%edi)
406aee:	74 24                	je     0x406b14
406af0:	8b cf                	mov    %edi,%ecx
406af2:	8d 51 02             	lea    0x2(%ecx),%edx
406af5:	66 8b 01             	mov    (%ecx),%ax
406af8:	83 c1 02             	add    $0x2,%ecx
406afb:	66 3b c6             	cmp    %si,%ax
406afe:	75 f5                	jne    0x406af5
406b00:	2b ca                	sub    %edx,%ecx
406b02:	d1 f9                	sar    $1,%ecx
406b04:	81 f9 ff 00 00 00    	cmp    $0xff,%ecx
406b0a:	76 0c                	jbe    0x406b18
406b0c:	6a 57                	push   $0x57
406b0e:	58                   	pop    %eax
406b0f:	e9 ec 00 00 00       	jmp    0x406c00
406b14:	8b fe                	mov    %esi,%edi
406b16:	eb 03                	jmp    0x406b1b
406b18:	6a 2a                	push   $0x2a
406b1a:	5a                   	pop    %edx
406b1b:	85 ff                	test   %edi,%edi
406b1d:	74 32                	je     0x406b51
406b1f:	8b 4b 18             	mov    0x18(%ebx),%ecx
406b22:	66 39 11             	cmp    %dx,(%ecx)
406b25:	74 2a                	je     0x406b51
406b27:	e8 4a d1 ff ff       	call   0x403c76
406b2c:	57                   	push   %edi
406b2d:	ba 00 01 00 00       	mov    $0x100,%edx
406b32:	0f b7 f0             	movzwl %ax,%esi
406b35:	8d 8d d0 fd ff ff    	lea    -0x230(%ebp),%ecx
406b3b:	e8 20 bc ff ff       	call   0x402760
406b40:	33 c0                	xor    %eax,%eax
406b42:	66 89 75 d0          	mov    %si,-0x30(%ebp)
406b46:	66 89 85 d0 fb ff ff 	mov    %ax,-0x430(%ebp)
406b4d:	33 f6                	xor    %esi,%esi
406b4f:	eb 02                	jmp    0x406b53
406b51:	8b fe                	mov    %esi,%edi
406b53:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
406b56:	e8 1b d1 ff ff       	call   0x403c76
406b5b:	6a 08                	push   $0x8
406b5d:	51                   	push   %ecx
406b5e:	8b d3                	mov    %ebx,%edx
406b60:	89 85 c0 fb ff ff    	mov    %eax,-0x440(%ebp)
406b66:	8d 8d 8c fb ff ff    	lea    -0x474(%ebp),%ecx
406b6c:	e8 d5 d1 ff ff       	call   0x403d46
406b71:	8b 4b 44             	mov    0x44(%ebx),%ecx
406b74:	6a 2a                	push   $0x2a
406b76:	58                   	pop    %eax
406b77:	89 b5 cc fb ff ff    	mov    %esi,-0x434(%ebp)
406b7d:	66 39 01             	cmp    %ax,(%ecx)
406b80:	75 04                	jne    0x406b86
406b82:	33 c9                	xor    %ecx,%ecx
406b84:	eb 27                	jmp    0x406bad
406b86:	51                   	push   %ecx
406b87:	8d 95 cc fb ff ff    	lea    -0x434(%ebp),%edx
406b8d:	e8 40 c4 ff ff       	call   0x402fd2
406b92:	8b d8                	mov    %eax,%ebx
406b94:	85 db                	test   %ebx,%ebx
406b96:	75 5a                	jne    0x406bf2
406b98:	8b b5 cc fb ff ff    	mov    -0x434(%ebp),%esi
406b9e:	8b ce                	mov    %esi,%ecx
406ba0:	8d 51 01             	lea    0x1(%ecx),%edx
406ba3:	8a 01                	mov    (%ecx),%al
406ba5:	41                   	inc    %ecx
406ba6:	84 c0                	test   %al,%al
406ba8:	75 f9                	jne    0x406ba3
406baa:	2b ca                	sub    %edx,%ecx
406bac:	41                   	inc    %ecx
406bad:	8d 45 d8             	lea    -0x28(%ebp),%eax
406bb0:	f7 df                	neg    %edi
406bb2:	50                   	push   %eax
406bb3:	56                   	push   %esi
406bb4:	51                   	push   %ecx
406bb5:	8d 85 8c fb ff ff    	lea    -0x474(%ebp),%eax
406bbb:	1b ff                	sbb    %edi,%edi
406bbd:	50                   	push   %eax
406bbe:	6a 00                	push   $0x0
406bc0:	ff b5 c0 fb ff ff    	push   -0x440(%ebp)
406bc6:	8d 85 d0 fb ff ff    	lea    -0x430(%ebp),%eax
406bcc:	23 f8                	and    %eax,%edi
406bce:	8d 45 e8             	lea    -0x18(%ebp),%eax
406bd1:	57                   	push   %edi
406bd2:	ff b5 c8 fb ff ff    	push   -0x438(%ebp)
406bd8:	ff b5 c4 fb ff ff    	push   -0x43c(%ebp)
406bde:	50                   	push   %eax
406bdf:	ff 15 5c f0 40 00    	call   *0x40f05c
406be5:	8b d8                	mov    %eax,%ebx
406be7:	85 f6                	test   %esi,%esi
406be9:	74 07                	je     0x406bf2
406beb:	56                   	push   %esi
406bec:	ff 15 b0 f0 40 00    	call   *0x40f0b0
406bf2:	8b c3                	mov    %ebx,%eax
406bf4:	eb 0a                	jmp    0x406c00
406bf6:	6a 0e                	push   $0xe
406bf8:	59                   	pop    %ecx
406bf9:	e8 61 be ff ff       	call   0x402a5f
406bfe:	33 c0                	xor    %eax,%eax
406c00:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406c03:	5f                   	pop    %edi
406c04:	5e                   	pop    %esi
406c05:	33 cd                	xor    %ebp,%ecx
406c07:	5b                   	pop    %ebx
406c08:	e8 c3 1e 00 00       	call   0x408ad0
406c0d:	c9                   	leave
406c0e:	c3                   	ret
406c0f:	8b ff                	mov    %edi,%edi
406c11:	55                   	push   %ebp
406c12:	8b ec                	mov    %esp,%ebp
406c14:	83 ec 2c             	sub    $0x2c,%esp
406c17:	a1 04 a0 40 00       	mov    0x40a004,%eax
406c1c:	33 c5                	xor    %ebp,%eax
406c1e:	89 45 fc             	mov    %eax,-0x4(%ebp)
406c21:	56                   	push   %esi
406c22:	8b f2                	mov    %edx,%esi
406c24:	83 f9 04             	cmp    $0x4,%ecx
406c27:	75 2e                	jne    0x406c57
406c29:	8b 4e 08             	mov    0x8(%esi),%ecx
406c2c:	8d 55 d8             	lea    -0x28(%ebp),%edx
406c2f:	e8 60 ce ff ff       	call   0x403a94
406c34:	84 c0                	test   %al,%al
406c36:	74 1f                	je     0x406c57
406c38:	8b 4e 0c             	mov    0xc(%esi),%ecx
406c3b:	8d 55 e8             	lea    -0x18(%ebp),%edx
406c3e:	e8 51 ce ff ff       	call   0x403a94
406c43:	84 c0                	test   %al,%al
406c45:	74 10                	je     0x406c57
406c47:	8d 45 e8             	lea    -0x18(%ebp),%eax
406c4a:	50                   	push   %eax
406c4b:	8d 45 d8             	lea    -0x28(%ebp),%eax
406c4e:	50                   	push   %eax
406c4f:	ff 15 14 f0 40 00    	call   *0x40f014
406c55:	eb 0a                	jmp    0x406c61
406c57:	6a 0f                	push   $0xf
406c59:	59                   	pop    %ecx
406c5a:	e8 00 be ff ff       	call   0x402a5f
406c5f:	33 c0                	xor    %eax,%eax
406c61:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406c64:	33 cd                	xor    %ebp,%ecx
406c66:	5e                   	pop    %esi
406c67:	e8 64 1e 00 00       	call   0x408ad0
406c6c:	c9                   	leave
406c6d:	c3                   	ret
406c6e:	8b ff                	mov    %edi,%edi
406c70:	55                   	push   %ebp
406c71:	8b ec                	mov    %esp,%ebp
406c73:	83 ec 48             	sub    $0x48,%esp
406c76:	a1 04 a0 40 00       	mov    0x40a004,%eax
406c7b:	33 c5                	xor    %ebp,%eax
406c7d:	89 45 fc             	mov    %eax,-0x4(%ebp)
406c80:	53                   	push   %ebx
406c81:	56                   	push   %esi
406c82:	57                   	push   %edi
406c83:	33 db                	xor    %ebx,%ebx
406c85:	8d 45 bc             	lea    -0x44(%ebp),%eax
406c88:	6a 40                	push   $0x40
406c8a:	53                   	push   %ebx
406c8b:	50                   	push   %eax
406c8c:	8b f1                	mov    %ecx,%esi
406c8e:	8b fb                	mov    %ebx,%edi
406c90:	e8 4f 24 00 00       	call   0x4090e4
406c95:	83 c4 0c             	add    $0xc,%esp
406c98:	83 fe 02             	cmp    $0x2,%esi
406c9b:	74 0d                	je     0x406caa
406c9d:	6a 14                	push   $0x14
406c9f:	59                   	pop    %ecx
406ca0:	e8 ba bd ff ff       	call   0x402a5f
406ca5:	e9 9c 00 00 00       	jmp    0x406d46
406caa:	53                   	push   %ebx
406cab:	8d 45 b8             	lea    -0x48(%ebp),%eax
406cae:	89 5d b8             	mov    %ebx,-0x48(%ebp)
406cb1:	50                   	push   %eax
406cb2:	ff 15 08 f0 40 00    	call   *0x40f008
406cb8:	8b d8                	mov    %eax,%ebx
406cba:	83 fb 7a             	cmp    $0x7a,%ebx
406cbd:	75 24                	jne    0x406ce3
406cbf:	8b 45 b8             	mov    -0x48(%ebp),%eax
406cc2:	03 c0                	add    %eax,%eax
406cc4:	50                   	push   %eax
406cc5:	ff 15 a4 f0 40 00    	call   *0x40f0a4
406ccb:	8b f8                	mov    %eax,%edi
406ccd:	85 ff                	test   %edi,%edi
406ccf:	75 05                	jne    0x406cd6
406cd1:	6a 08                	push   $0x8
406cd3:	58                   	pop    %eax
406cd4:	eb 72                	jmp    0x406d48
406cd6:	57                   	push   %edi
406cd7:	8d 45 b8             	lea    -0x48(%ebp),%eax
406cda:	50                   	push   %eax
406cdb:	ff 15 08 f0 40 00    	call   *0x40f008
406ce1:	8b d8                	mov    %eax,%ebx
406ce3:	85 db                	test   %ebx,%ebx
406ce5:	75 54                	jne    0x406d3b
406ce7:	6a 20                	push   $0x20
406ce9:	8d 45 bc             	lea    -0x44(%ebp),%eax
406cec:	33 f6                	xor    %esi,%esi
406cee:	50                   	push   %eax
406cef:	68 84 04 00 00       	push   $0x484
406cf4:	56                   	push   %esi
406cf5:	ff 15 20 f1 40 00    	call   *0x40f120
406cfb:	85 c0                	test   %eax,%eax
406cfd:	75 04                	jne    0x406d03
406cff:	66 89 45 bc          	mov    %ax,-0x44(%ebp)
406d03:	8d 45 bc             	lea    -0x44(%ebp),%eax
406d06:	50                   	push   %eax
406d07:	68 0c 1d 40 00       	push   $0x401d0c
406d0c:	e8 a9 bb ff ff       	call   0x4028ba
406d11:	59                   	pop    %ecx
406d12:	59                   	pop    %ecx
406d13:	66 39 37             	cmp    %si,(%edi)
406d16:	74 23                	je     0x406d3b
406d18:	8b f7                	mov    %edi,%esi
406d1a:	56                   	push   %esi
406d1b:	68 18 1d 40 00       	push   $0x401d18
406d20:	e8 95 bb ff ff       	call   0x4028ba
406d25:	59                   	pop    %ecx
406d26:	59                   	pop    %ecx
406d27:	33 c0                	xor    %eax,%eax
406d29:	eb 03                	jmp    0x406d2e
406d2b:	83 c6 02             	add    $0x2,%esi
406d2e:	66 39 06             	cmp    %ax,(%esi)
406d31:	75 f8                	jne    0x406d2b
406d33:	83 c6 02             	add    $0x2,%esi
406d36:	66 39 06             	cmp    %ax,(%esi)
406d39:	75 df                	jne    0x406d1a
406d3b:	85 ff                	test   %edi,%edi
406d3d:	74 07                	je     0x406d46
406d3f:	57                   	push   %edi
406d40:	ff 15 b0 f0 40 00    	call   *0x40f0b0
406d46:	8b c3                	mov    %ebx,%eax
406d48:	8b 4d fc             	mov    -0x4(%ebp),%ecx