407ad9:	0f 83 a9 00 00 00    	jae    0x407b88
407adf:	33 c0                	xor    %eax,%eax
407ae1:	66 89 84 0d d8 f9 ff 	mov    %ax,-0x628(%ebp,%ecx,1)
407ae8:	ff
407ae9:	8d 85 d8 f9 ff ff    	lea    -0x628(%ebp),%eax
407aef:	50                   	push   %eax
407af0:	68 34 25 40 00       	push   $0x402534
407af5:	8d 85 ac f5 ff ff    	lea    -0xa54(%ebp),%eax
407afb:	50                   	push   %eax
407afc:	e8 5f e7 ff ff       	call   0x406260
407b01:	8b f0                	mov    %eax,%esi
407b03:	85 f6                	test   %esi,%esi
407b05:	78 1e                	js     0x407b25
407b07:	8d 85 c8 f5 ff ff    	lea    -0xa38(%ebp),%eax
407b0d:	50                   	push   %eax
407b0e:	68 44 25 40 00       	push   $0x402544
407b13:	8d 85 ac f5 ff ff    	lea    -0xa54(%ebp),%eax
407b19:	50                   	push   %eax
407b1a:	e8 41 e7 ff ff       	call   0x406260
407b1f:	8b f0                	mov    %eax,%esi
407b21:	85 f6                	test   %esi,%esi
407b23:	79 29                	jns    0x407b4e
407b25:	8d 8d c4 f5 ff ff    	lea    -0xa3c(%ebp),%ecx
407b2b:	e8 5c eb ff ff       	call   0x40668c
407b30:	8d 8d ac f5 ff ff    	lea    -0xa54(%ebp),%ecx
407b36:	e8 79 e4 ff ff       	call   0x405fb4
407b3b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407b3e:	8b c6                	mov    %esi,%eax
407b40:	5f                   	pop    %edi
407b41:	5e                   	pop    %esi
407b42:	33 cd                	xor    %ebp,%ecx
407b44:	5b                   	pop    %ebx
407b45:	e8 16 1d 00 00       	call   0x409860
407b4a:	c9                   	leave
407b4b:	c2 08 00             	ret    $0x8
407b4e:	8d 8d ac f5 ff ff    	lea    -0xa54(%ebp),%ecx
407b54:	0f b7 c3             	movzwl %bx,%eax
407b57:	89 bd c0 f5 ff ff    	mov    %edi,-0xa40(%ebp)
407b5d:	39 7d 08             	cmp    %edi,0x8(%ebp)
407b60:	74 04                	je     0x407b66
407b62:	6a 01                	push   $0x1
407b64:	eb 01                	jmp    0x407b67
407b66:	57                   	push   %edi
407b67:	68 5c 25 40 00       	push   $0x40255c
407b6c:	50                   	push   %eax
407b6d:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
407b73:	50                   	push   %eax
407b74:	e8 37 fc ff ff       	call   0x4077b0
407b79:	8d 8d c0 f5 ff ff    	lea    -0xa40(%ebp),%ecx
407b7f:	8b f0                	mov    %eax,%esi
407b81:	e8 06 eb ff ff       	call   0x40668c
407b86:	eb 9d                	jmp    0x407b25
407b88:	e8 d2 1f 00 00       	call   0x409b5f
407b8d:	cc                   	int3
407b8e:	cc                   	int3
407b8f:	cc                   	int3
407b90:	8b ff                	mov    %edi,%edi
407b92:	55                   	push   %ebp
407b93:	8b ec                	mov    %esp,%ebp
407b95:	ff 75 14             	push   0x14(%ebp)
407b98:	8b 55 0c             	mov    0xc(%ebp),%edx
407b9b:	ff 75 10             	push   0x10(%ebp)
407b9e:	8b 4d 08             	mov    0x8(%ebp),%ecx
407ba1:	e8 d8 fd ff ff       	call   0x40797e
407ba6:	5d                   	pop    %ebp
407ba7:	c2 10 00             	ret    $0x10
407baa:	6a 10                	push   $0x10
407bac:	68 e0 ac 40 00       	push   $0x40ace0
407bb1:	e8 32 26 00 00       	call   0x40a1e8
407bb6:	c7 05 1c ee 40 00 01 	movl   $0x1,0x40ee1c
407bbd:	00 00 00
407bc0:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
407bc4:	68 a0 0f 00 00       	push   $0xfa0
407bc9:	68 04 ee 40 00       	push   $0x40ee04
407bce:	ff 15 c4 f0 40 00    	call   *0x40f0c4
407bd4:	eb 1c                	jmp    0x407bf2
407bd6:	8b 45 ec             	mov    -0x14(%ebp),%eax
407bd9:	8b 00                	mov    (%eax),%eax
407bdb:	8b 00                	mov    (%eax),%eax
407bdd:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407be0:	33 c0                	xor    %eax,%eax
407be2:	40                   	inc    %eax
407be3:	c3                   	ret
407be4:	8b 65 e8             	mov    -0x18(%ebp),%esp
407be7:	ff 75 e4             	push   -0x1c(%ebp)
407bea:	ff 15 6c f0 40 00    	call   *0x40f06c
407bf0:	33 c0                	xor    %eax,%eax
407bf2:	a3 1c ee 40 00       	mov    %eax,0x40ee1c
407bf7:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407bfe:	85 c0                	test   %eax,%eax
407c00:	74 17                	je     0x407c19
407c02:	b8 04 ee 40 00       	mov    $0x40ee04,%eax
407c07:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407c0a:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
407c11:	59                   	pop    %ecx
407c12:	5f                   	pop    %edi
407c13:	5e                   	pop    %esi
407c14:	5b                   	pop    %ebx
407c15:	c9                   	leave
407c16:	c2 04 00             	ret    $0x4
407c19:	ff 15 7c f0 40 00    	call   *0x40f07c
407c1f:	89 45 e0             	mov    %eax,-0x20(%ebp)
407c22:	68 a4 af 40 00       	push   $0x40afa4
407c27:	8d 45 e0             	lea    -0x20(%ebp),%eax
407c2a:	50                   	push   %eax
407c2b:	e8 66 21 00 00       	call   0x409d96
407c30:	cc                   	int3
407c31:	cc                   	int3
407c32:	cc                   	int3
407c33:	cc                   	int3
407c34:	cc                   	int3
407c35:	cc                   	int3
407c36:	cc                   	int3
407c37:	cc                   	int3
407c38:	cc                   	int3
407c39:	cc                   	int3
407c3a:	cc                   	int3
407c3b:	cc                   	int3
407c3c:	cc                   	int3
407c3d:	cc                   	int3
407c3e:	cc                   	int3
407c3f:	cc                   	int3
407c40:	8b ff                	mov    %edi,%edi
407c42:	55                   	push   %ebp
407c43:	8b ec                	mov    %esp,%ebp
407c45:	83 ec 14             	sub    $0x14,%esp
407c48:	53                   	push   %ebx
407c49:	56                   	push   %esi
407c4a:	57                   	push   %edi
407c4b:	33 ff                	xor    %edi,%edi
407c4d:	68 04 ee 40 00       	push   $0x40ee04
407c52:	89 7d fc             	mov    %edi,-0x4(%ebp)
407c55:	ff 15 60 f0 40 00    	call   *0x40f060
407c5b:	8d 45 fc             	lea    -0x4(%ebp),%eax
407c5e:	50                   	push   %eax
407c5f:	68 ff 01 0f 00       	push   $0xf01ff
407c64:	ff 15 70 f0 40 00    	call   *0x40f070
407c6a:	50                   	push   %eax
407c6b:	ff 15 20 f0 40 00    	call   *0x40f020
407c71:	bb 00 00 07 80       	mov    $0x80070000,%ebx
407c76:	85 c0                	test   %eax,%eax
407c78:	75 50                	jne    0x407cca
407c7a:	ff 15 7c f0 40 00    	call   *0x40f07c
407c80:	8b f0                	mov    %eax,%esi
407c82:	85 f6                	test   %esi,%esi
407c84:	7e 07                	jle    0x407c8d
407c86:	0f b7 f6             	movzwl %si,%esi
407c89:	0b f3                	or     %ebx,%esi
407c8b:	85 f6                	test   %esi,%esi
407c8d:	79 3b                	jns    0x407cca
407c8f:	83 3d 80 c0 40 00 03 	cmpl   $0x3,0x40c080
407c96:	0f 86 96 00 00 00    	jbe    0x407d32
407c9c:	8d 45 f8             	lea    -0x8(%ebp),%eax
407c9f:	c7 45 f8 68 28 40 00 	movl   $0x402868,-0x8(%ebp)
407ca6:	50                   	push   %eax
407ca7:	8d 45 f4             	lea    -0xc(%ebp),%eax
407caa:	89 75 f4             	mov    %esi,-0xc(%ebp)
407cad:	50                   	push   %eax
407cae:	8d 45 f0             	lea    -0x10(%ebp),%eax
407cb1:	c7 45 f0 88 28 40 00 	movl   $0x402888,-0x10(%ebp)
407cb8:	50                   	push   %eax
407cb9:	c7 45 ec 9c 28 40 00 	movl   $0x40289c,-0x14(%ebp)
407cc0:	8d 45 ec             	lea    -0x14(%ebp),%eax
407cc3:	ba b7 30 40 00       	mov    $0x4030b7,%edx
407cc8:	eb 60                	jmp    0x407d2a
407cca:	ff 75 14             	push   0x14(%ebp)
407ccd:	39 7d 0c             	cmp    %edi,0xc(%ebp)
407cd0:	75 0d                	jne    0x407cdf
407cd2:	8b 55 10             	mov    0x10(%ebp),%edx
407cd5:	51                   	push   %ecx
407cd6:	e8 9f 0a 00 00       	call   0x40877a
407cdb:	8b f8                	mov    %eax,%edi
407cdd:	eb 05                	jmp    0x407ce4
407cdf:	e8 82 0d 00 00       	call   0x408a66
407ce4:	85 ff                	test   %edi,%edi
407ce6:	7f 04                	jg     0x407cec
407ce8:	8b f7                	mov    %edi,%esi
407cea:	eb 05                	jmp    0x407cf1
407cec:	0f b7 f7             	movzwl %di,%esi
407cef:	0b f3                	or     %ebx,%esi
407cf1:	85 f6                	test   %esi,%esi
407cf3:	79 3d                	jns    0x407d32
407cf5:	83 3d 80 c0 40 00 03 	cmpl   $0x3,0x40c080
407cfc:	76 34                	jbe    0x407d32
407cfe:	8d 45 ec             	lea    -0x14(%ebp),%eax
407d01:	c7 45 ec 68 28 40 00 	movl   $0x402868,-0x14(%ebp)
407d08:	50                   	push   %eax
407d09:	8d 45 f0             	lea    -0x10(%ebp),%eax
407d0c:	89 75 f0             	mov    %esi,-0x10(%ebp)
407d0f:	50                   	push   %eax
407d10:	8d 45 f4             	lea    -0xc(%ebp),%eax
407d13:	c7 45 f4 b4 28 40 00 	movl   $0x4028b4,-0xc(%ebp)
407d1a:	50                   	push   %eax
407d1b:	c7 45 f8 9c 28 40 00 	movl   $0x40289c,-0x8(%ebp)
407d22:	8d 45 f8             	lea    -0x8(%ebp),%eax
407d25:	ba b7 30 40 00       	mov    $0x4030b7,%edx
407d2a:	50                   	push   %eax
407d2b:	51                   	push   %ecx
407d2c:	51                   	push   %ecx
407d2d:	e8 f4 b8 ff ff       	call   0x403626
407d32:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
407d36:	74 09                	je     0x407d41
407d38:	ff 75 fc             	push   -0x4(%ebp)
407d3b:	ff 15 74 f0 40 00    	call   *0x40f074
407d41:	68 04 ee 40 00       	push   $0x40ee04
407d46:	ff 15 64 f0 40 00    	call   *0x40f064
407d4c:	5f                   	pop    %edi
407d4d:	8b c6                	mov    %esi,%eax
407d4f:	5e                   	pop    %esi
407d50:	5b                   	pop    %ebx
407d51:	c9                   	leave
407d52:	c2 10 00             	ret    $0x10
407d55:	a1 e0 c0 40 00       	mov    0x40c0e0,%eax
407d5a:	85 c0                	test   %eax,%eax
407d5c:	74 0f                	je     0x407d6d
407d5e:	50                   	push   %eax
407d5f:	ff 15 f0 f1 40 00    	call   *0x40f1f0
407d65:	83 25 e0 c0 40 00 00 	andl   $0x0,0x40c0e0
407d6c:	59                   	pop    %ecx
407d6d:	83 25 e4 c0 40 00 00 	andl   $0x0,0x40c0e4
407d74:	83 25 e8 c0 40 00 00 	andl   $0x0,0x40c0e8
407d7b:	c3                   	ret
407d7c:	a1 00 c2 40 00       	mov    0x40c200,%eax
407d81:	57                   	push   %edi
407d82:	8b fa                	mov    %edx,%edi
407d84:	85 c0                	test   %eax,%eax
407d86:	74 74                	je     0x407dfc
407d88:	83 f8 2c             	cmp    $0x2c,%eax
407d8b:	74 07                	je     0x407d94
407d8d:	b8 57 00 07 80       	mov    $0x80070057,%eax
407d92:	5f                   	pop    %edi
407d93:	c3                   	ret
407d94:	a1 24 c2 40 00       	mov    0x40c224,%eax
407d99:	56                   	push   %esi
407d9a:	33 f6                	xor    %esi,%esi
407d9c:	85 c0                	test   %eax,%eax
407d9e:	7e 23                	jle    0x407dc3
407da0:	85 f6                	test   %esi,%esi
407da2:	78 5c                	js     0x407e00
407da4:	3b f0                	cmp    %eax,%esi
407da6:	7d 58                	jge    0x407e00
407da8:	a1 20 c2 40 00       	mov    0x40c220,%eax
407dad:	57                   	push   %edi
407dae:	0f b7 04 70          	movzwl (%eax,%esi,2),%eax
407db2:	50                   	push   %eax
407db3:	ff 15 00 f1 40 00    	call   *0x40f100
407db9:	a1 24 c2 40 00       	mov    0x40c224,%eax
407dbe:	46                   	inc    %esi
407dbf:	3b f0                	cmp    %eax,%esi
407dc1:	7c dd                	jl     0x407da0
407dc3:	a1 20 c2 40 00       	mov    0x40c220,%eax
407dc8:	5e                   	pop    %esi
407dc9:	85 c0                	test   %eax,%eax
407dcb:	74 0f                	je     0x407ddc
407dcd:	50                   	push   %eax
407dce:	ff 15 f0 f1 40 00    	call   *0x40f1f0
407dd4:	83 25 20 c2 40 00 00 	andl   $0x0,0x40c220
407ddb:	59                   	pop    %ecx
407ddc:	83 25 24 c2 40 00 00 	andl   $0x0,0x40c224
407de3:	83 25 28 c2 40 00 00 	andl   $0x0,0x40c228
407dea:	68 04 c2 40 00       	push   $0x40c204
407def:	ff 15 48 f0 40 00    	call   *0x40f048
407df5:	83 25 00 c2 40 00 00 	andl   $0x0,0x40c200
407dfc:	33 c0                	xor    %eax,%eax
407dfe:	5f                   	pop    %edi
407dff:	c3                   	ret
407e00:	b9 8c 00 00 c0       	mov    $0xc000008c,%ecx
407e05:	e8 09 e5 ff ff       	call   0x406313
407e0a:	cc                   	int3
407e0b:	a1 20 c2 40 00       	mov    0x40c220,%eax
407e10:	85 c0                	test   %eax,%eax
407e12:	74 0f                	je     0x407e23
407e14:	50                   	push   %eax
407e15:	ff 15 f0 f1 40 00    	call   *0x40f1f0
407e1b:	83 25 20 c2 40 00 00 	andl   $0x0,0x40c220
407e22:	59                   	pop    %ecx
407e23:	83 25 24 c2 40 00 00 	andl   $0x0,0x40c224
407e2a:	83 25 28 c2 40 00 00 	andl   $0x0,0x40c228
407e31:	c3                   	ret
407e32:	83 3d c4 c5 40 00 00 	cmpl   $0x0,0x40c5c4
407e39:	75 0f                	jne    0x407e4a
407e3b:	e8 db b8 ff ff       	call   0x40371b
407e40:	c7 05 c4 c5 40 00 01 	movl   $0x1,0x40c5c4
407e47:	00 00 00
407e4a:	c3                   	ret
407e4b:	8b ff                	mov    %edi,%edi
407e4d:	55                   	push   %ebp
407e4e:	8b ec                	mov    %esp,%ebp
407e50:	8b 45 0c             	mov    0xc(%ebp),%eax
407e53:	56                   	push   %esi
407e54:	33 f6                	xor    %esi,%esi
407e56:	85 c0                	test   %eax,%eax
407e58:	74 07                	je     0x407e61
407e5a:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
407e5f:	76 05                	jbe    0x407e66
407e61:	be 57 00 07 80       	mov    $0x80070057,%esi
407e66:	85 f6                	test   %esi,%esi
407e68:	78 37                	js     0x407ea1
407e6a:	53                   	push   %ebx
407e6b:	8b 5d 08             	mov    0x8(%ebp),%ebx
407e6e:	33 f6                	xor    %esi,%esi
407e70:	57                   	push   %edi
407e71:	8d 78 ff             	lea    -0x1(%eax),%edi
407e74:	8d 45 14             	lea    0x14(%ebp),%eax
407e77:	50                   	push   %eax
407e78:	ff 75 10             	push   0x10(%ebp)
407e7b:	57                   	push   %edi
407e7c:	53                   	push   %ebx
407e7d:	ff 15 0c f2 40 00    	call   *0x40f20c
407e83:	83 c4 10             	add    $0x10,%esp
407e86:	85 c0                	test   %eax,%eax
407e88:	78 08                	js     0x407e92
407e8a:	3b c7                	cmp    %edi,%eax
407e8c:	77 04                	ja     0x407e92
407e8e:	75 0d                	jne    0x407e9d
407e90:	eb 05                	jmp    0x407e97
407e92:	be 7a 00 07 80       	mov    $0x8007007a,%esi
407e97:	33 c0                	xor    %eax,%eax
407e99:	66 89 04 7b          	mov    %ax,(%ebx,%edi,2)
407e9d:	5f                   	pop    %edi
407e9e:	5b                   	pop    %ebx
407e9f:	eb 0c                	jmp    0x407ead
407ea1:	85 c0                	test   %eax,%eax
407ea3:	74 08                	je     0x407ead
407ea5:	8b 4d 08             	mov    0x8(%ebp),%ecx
407ea8:	33 c0                	xor    %eax,%eax
407eaa:	66 89 01             	mov    %ax,(%ecx)
407ead:	8b c6                	mov    %esi,%eax
407eaf:	5e                   	pop    %esi
407eb0:	5d                   	pop    %ebp
407eb1:	c3                   	ret
407eb2:	8b ff                	mov    %edi,%edi
407eb4:	55                   	push   %ebp
407eb5:	8b ec                	mov    %esp,%ebp
407eb7:	81 ec a8 02 00 00    	sub    $0x2a8,%esp
407ebd:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
407ec2:	33 c5                	xor    %ebp,%eax
407ec4:	89 45 f8             	mov    %eax,-0x8(%ebp)
407ec7:	53                   	push   %ebx
407ec8:	8b 5d 18             	mov    0x18(%ebp),%ebx
407ecb:	56                   	push   %esi
407ecc:	33 f6                	xor    %esi,%esi
407ece:	89 95 68 fd ff ff    	mov    %edx,-0x298(%ebp)
407ed4:	21 b5 60 fd ff ff    	and    %esi,-0x2a0(%ebp)
407eda:	57                   	push   %edi
407edb:	8b 7d 10             	mov    0x10(%ebp),%edi
407ede:	39 75 20             	cmp    %esi,0x20(%ebp)
407ee1:	0f 84 0a 01 00 00    	je     0x407ff1
407ee7:	ff 75 08             	push   0x8(%ebp)
407eea:	8d 85 6c fd ff ff    	lea    -0x294(%ebp),%eax