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
407ef0:	ff 75 0c             	push   0xc(%ebp)
407ef3:	68 44 01 00 00       	push   $0x144
407ef8:	50                   	push   %eax
407ef9:	e8 4d ff ff ff       	call   0x407e4b
407efe:	83 c4 10             	add    $0x10,%esp
407f01:	85 c0                	test   %eax,%eax
407f03:	79 37                	jns    0x407f3c
407f05:	83 3d 80 c0 40 00 02 	cmpl   $0x2,0x40c080
407f0c:	0f b7 f0             	movzwl %ax,%esi
407f0f:	0f 86 c7 00 00 00    	jbe    0x407fdc
407f15:	89 85 64 fd ff ff    	mov    %eax,-0x29c(%ebp)
407f1b:	ba 4d 31 40 00       	mov    $0x40314d,%edx
407f20:	8d 85 64 fd ff ff    	lea    -0x29c(%ebp),%eax
407f26:	c7 85 68 fd ff ff c8 	movl   $0x402ac8,-0x298(%ebp)
407f2d:	2a 40 00
407f30:	50                   	push   %eax
407f31:	8d 85 68 fd ff ff    	lea    -0x298(%ebp),%eax
407f37:	e9 98 00 00 00       	jmp    0x407fd4
407f3c:	8d 85 5c fd ff ff    	lea    -0x2a4(%ebp),%eax
407f42:	50                   	push   %eax
407f43:	8d 85 60 fd ff ff    	lea    -0x2a0(%ebp),%eax
407f49:	50                   	push   %eax
407f4a:	6a 00                	push   $0x0
407f4c:	68 3f 00 0f 00       	push   $0xf003f
407f51:	6a 01                	push   $0x1
407f53:	68 00 25 40 00       	push   $0x402500
407f58:	6a 00                	push   $0x0
407f5a:	8d 85 6c fd ff ff    	lea    -0x294(%ebp),%eax
407f60:	50                   	push   %eax
407f61:	ff b5 68 fd ff ff    	push   -0x298(%ebp)
407f67:	ff 15 14 f0 40 00    	call   *0x40f014
407f6d:	8b f0                	mov    %eax,%esi
407f6f:	85 f6                	test   %esi,%esi
407f71:	74 1a                	je     0x407f8d
407f73:	83 3d 80 c0 40 00 02 	cmpl   $0x2,0x40c080
407f7a:	76 60                	jbe    0x407fdc
407f7c:	c7 85 64 fd ff ff f4 	movl   $0x402af4,-0x29c(%ebp)
407f83:	2a 40 00
407f86:	ba 4d 31 40 00       	mov    $0x40314d,%edx
407f8b:	eb 34                	jmp    0x407fc1
407f8d:	ff 75 1c             	push   0x1c(%ebp)
407f90:	53                   	push   %ebx
407f91:	ff 75 14             	push   0x14(%ebp)
407f94:	6a 00                	push   $0x0
407f96:	57                   	push   %edi
407f97:	ff b5 60 fd ff ff    	push   -0x2a0(%ebp)
407f9d:	ff 15 10 f0 40 00    	call   *0x40f010
407fa3:	8b f0                	mov    %eax,%esi
407fa5:	85 f6                	test   %esi,%esi
407fa7:	74 33                	je     0x407fdc
407fa9:	83 3d 80 c0 40 00 02 	cmpl   $0x2,0x40c080
407fb0:	76 2a                	jbe    0x407fdc
407fb2:	c7 85 64 fd ff ff 20 	movl   $0x402b20,-0x29c(%ebp)
407fb9:	2b 40 00
407fbc:	ba 4d 31 40 00       	mov    $0x40314d,%edx
407fc1:	8d 85 68 fd ff ff    	lea    -0x298(%ebp),%eax
407fc7:	50                   	push   %eax
407fc8:	8d 85 64 fd ff ff    	lea    -0x29c(%ebp),%eax
407fce:	89 b5 68 fd ff ff    	mov    %esi,-0x298(%ebp)
407fd4:	50                   	push   %eax
407fd5:	51                   	push   %ecx
407fd6:	51                   	push   %ecx
407fd7:	e8 cc b7 ff ff       	call   0x4037a8
407fdc:	83 bd 60 fd ff ff 00 	cmpl   $0x0,-0x2a0(%ebp)
407fe3:	74 0c                	je     0x407ff1
407fe5:	ff b5 60 fd ff ff    	push   -0x2a0(%ebp)
407feb:	ff 15 00 f0 40 00    	call   *0x40f000
407ff1:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407ff4:	8b c6                	mov    %esi,%eax
407ff6:	5f                   	pop    %edi
407ff7:	5e                   	pop    %esi
407ff8:	33 cd                	xor    %ebp,%ecx
407ffa:	5b                   	pop    %ebx
407ffb:	e8 60 18 00 00       	call   0x409860
408000:	c9                   	leave
408001:	c2 1c 00             	ret    $0x1c
408004:	8b ff                	mov    %edi,%edi
408006:	55                   	push   %ebp
408007:	8b ec                	mov    %esp,%ebp
408009:	83 ec 18             	sub    $0x18,%esp
40800c:	53                   	push   %ebx
40800d:	56                   	push   %esi
40800e:	8b c2                	mov    %edx,%eax
408010:	89 4d e8             	mov    %ecx,-0x18(%ebp)
408013:	57                   	push   %edi
408014:	89 45 f0             	mov    %eax,-0x10(%ebp)
408017:	33 f6                	xor    %esi,%esi
408019:	8b 45 10             	mov    0x10(%ebp),%eax
40801c:	33 db                	xor    %ebx,%ebx
40801e:	68 08 01 00 00       	push   $0x108
408023:	6a 40                	push   $0x40
408025:	89 75 f4             	mov    %esi,-0xc(%ebp)
408028:	8b fe                	mov    %esi,%edi
40802a:	89 75 fc             	mov    %esi,-0x4(%ebp)
40802d:	43                   	inc    %ebx
40802e:	89 30                	mov    %esi,(%eax)
408030:	ff 15 a4 f0 40 00    	call   *0x40f0a4
408036:	8b c8                	mov    %eax,%ecx
408038:	8b 45 08             	mov    0x8(%ebp),%eax
40803b:	89 08                	mov    %ecx,(%eax)
40803d:	85 c9                	test   %ecx,%ecx
40803f:	75 38                	jne    0x408079
408041:	ff 15 7c f0 40 00    	call   *0x40f07c
408047:	83 3d 80 c0 40 00 02 	cmpl   $0x2,0x40c080
40804e:	8b f0                	mov    %eax,%esi
408050:	0f 86 5a 04 00 00    	jbe    0x4084b0
408056:	8d 45 ec             	lea    -0x14(%ebp),%eax
408059:	89 75 ec             	mov    %esi,-0x14(%ebp)
40805c:	50                   	push   %eax
40805d:	8d 45 f0             	lea    -0x10(%ebp),%eax
408060:	c7 45 f0 48 2b 40 00 	movl   $0x402b48,-0x10(%ebp)
408067:	50                   	push   %eax
408068:	51                   	push   %ecx
408069:	51                   	push   %ecx
40806a:	ba 4d 31 40 00       	mov    $0x40314d,%edx
40806f:	e8 34 b7 ff ff       	call   0x4037a8
408074:	e9 37 04 00 00       	jmp    0x4084b0
408079:	8b 55 f0             	mov    -0x10(%ebp),%edx
40807c:	33 ff                	xor    %edi,%edi
40807e:	47                   	inc    %edi
40807f:	8b c2                	mov    %edx,%eax
408081:	23 c7                	and    %edi,%eax
408083:	89 01                	mov    %eax,(%ecx)
408085:	c7 41 04 00 29 40 00 	movl   $0x402900,0x4(%ecx)
40808c:	c7 41 08 80 2b 40 00 	movl   $0x402b80,0x8(%ecx)
408093:	c7 41 0c 9c 2b 40 00 	movl   $0x402b9c,0xc(%ecx)
40809a:	c7 41 10 18 00 00 00 	movl   $0x18,0x10(%ecx)
4080a1:	89 79 14             	mov    %edi,0x14(%ecx)
4080a4:	8b fa                	mov    %edx,%edi
4080a6:	83 e7 04             	and    $0x4,%edi
4080a9:	89 79 18             	mov    %edi,0x18(%ecx)
4080ac:	c7 41 1c 48 2a 40 00 	movl   $0x402a48,0x1c(%ecx)
4080b3:	c7 41 20 b4 2b 40 00 	movl   $0x402bb4,0x20(%ecx)
4080ba:	c7 41 24 cc 2b 40 00 	movl   $0x402bcc,0x24(%ecx)
4080c1:	c7 41 28 04 00 00 00 	movl   $0x4,0x28(%ecx)
4080c8:	c7 41 2c 01 00 00 00 	movl   $0x1,0x2c(%ecx)
4080cf:	89 79 30             	mov    %edi,0x30(%ecx)
4080d2:	c7 41 34 00 29 40 00 	movl   $0x402900,0x34(%ecx)
4080d9:	c7 41 38 d0 2b 40 00 	movl   $0x402bd0,0x38(%ecx)
4080e0:	c7 41 3c cc 2f 40 00 	movl   $0x402fcc,0x3c(%ecx)
4080e7:	6a 04                	push   $0x4
4080e9:	89 7d ec             	mov    %edi,-0x14(%ebp)
4080ec:	5f                   	pop    %edi
4080ed:	89 79 40             	mov    %edi,0x40(%ecx)
4080f0:	89 79 44             	mov    %edi,0x44(%ecx)
4080f3:	89 41 48             	mov    %eax,0x48(%ecx)
4080f6:	8b c2                	mov    %edx,%eax
4080f8:	c7 41 4c 08 2a 40 00 	movl   $0x402a08,0x4c(%ecx)
4080ff:	c7 41 50 f4 2b 40 00 	movl   $0x402bf4,0x50(%ecx)
408106:	c7 41 54 00 25 40 00 	movl   $0x402500,0x54(%ecx)
40810d:	c7 41 58 02 00 00 00 	movl   $0x2,0x58(%ecx)
408114:	c7 41 5c 01 00 00 00 	movl   $0x1,0x5c(%ecx)
40811b:	6a 08                	push   $0x8
40811d:	5f                   	pop    %edi
40811e:	23 c7                	and    %edi,%eax
408120:	89 41 60             	mov    %eax,0x60(%ecx)
408123:	8b c2                	mov    %edx,%eax
408125:	c7 41 64 80 29 40 00 	movl   $0x402980,0x64(%ecx)
40812c:	83 e0 02             	and    $0x2,%eax
40812f:	c7 41 68 08 2c 40 00 	movl   $0x402c08,0x68(%ecx)
408136:	c7 41 6c cc 2b 40 00 	movl   $0x402bcc,0x6c(%ecx)
40813d:	c7 41 70 04 00 00 00 	movl   $0x4,0x70(%ecx)
408144:	c7 41 74 01 00 00 00 	movl   $0x1,0x74(%ecx)
40814b:	89 41 78             	mov    %eax,0x78(%ecx)
40814e:	8b 45 ec             	mov    -0x14(%ebp),%eax
408151:	c7 41 7c 08 2a 40 00 	movl   $0x402a08,0x7c(%ecx)
408158:	c7 81 80 00 00 00 20 	movl   $0x402c20,0x80(%ecx)
40815f:	2c 40 00
408162:	c7 81 84 00 00 00 cc 	movl   $0x402bcc,0x84(%ecx)
408169:	2b 40 00
40816c:	c7 81 88 00 00 00 04 	movl   $0x4,0x88(%ecx)
408173:	00 00 00
408176:	c7 81 8c 00 00 00 01 	movl   $0x1,0x8c(%ecx)
40817d:	00 00 00
408180:	89 81 90 00 00 00    	mov    %eax,0x90(%ecx)