405d05:	0f b7 c0             	movzwl %ax,%eax
405d08:	85 c0                	test   %eax,%eax
405d0a:	89 45 b8             	mov    %eax,-0x48(%ebp)
405d0d:	75 12                	jne    0x405d21
405d0f:	83 4d c8 ff          	orl    $0xffffffff,-0x38(%ebp)
405d13:	8d 45 c8             	lea    -0x38(%ebp),%eax
405d16:	68 d8 a5 40 00       	push   $0x40a5d8
405d1b:	50                   	push   %eax
405d1c:	e8 15 32 00 00       	call   0x408f36
405d21:	8d 45 a8             	lea    -0x58(%ebp),%eax
405d24:	c7 45 a8 0c 00 00 00 	movl   $0xc,-0x58(%ebp)
405d2b:	50                   	push   %eax
405d2c:	ff 15 f8 d7 40 00    	call   *0x40d7f8
405d32:	85 c0                	test   %eax,%eax
405d34:	74 15                	je     0x405d4b
405d36:	8d 45 c4             	lea    -0x3c(%ebp),%eax
405d39:	68 d8 a5 40 00       	push   $0x40a5d8
405d3e:	50                   	push   %eax
405d3f:	c7 45 c4 fe ff ff ff 	movl   $0xfffffffe,-0x3c(%ebp)
405d46:	e8 eb 31 00 00       	call   0x408f36
405d4b:	8b 4d c0             	mov    -0x40(%ebp),%ecx
405d4e:	6a fe                	push   $0xfffffffe
405d50:	e8 f2 f1 ff ff       	call   0x404f47
405d55:	8b 4d f4             	mov    -0xc(%ebp),%ecx
405d58:	5f                   	pop    %edi
405d59:	5e                   	pop    %esi
405d5a:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
405d61:	5b                   	pop    %ebx
405d62:	c9                   	leave
405d63:	c2 08 00             	ret    $0x8
405d66:	83 4d bc ff          	orl    $0xffffffff,-0x44(%ebp)
405d6a:	8d 45 bc             	lea    -0x44(%ebp),%eax
405d6d:	68 d8 a5 40 00       	push   $0x40a5d8
405d72:	50                   	push   %eax
405d73:	e8 be 31 00 00       	call   0x408f36
405d78:	83 7d ec fe          	cmpl   $0xfffffffe,-0x14(%ebp)
405d7c:	75 07                	jne    0x405d85
405d7e:	68 68 cb 40 00       	push   $0x40cb68
405d83:	eb 18                	jmp    0x405d9d
405d85:	83 7d ec ff          	cmpl   $0xffffffff,-0x14(%ebp)
405d89:	75 07                	jne    0x405d92
405d8b:	68 40 cb 40 00       	push   $0x40cb40
405d90:	eb 0b                	jmp    0x405d9d
405d92:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
405d96:	75 0f                	jne    0x405da7
405d98:	68 20 cb 40 00       	push   $0x40cb20
405d9d:	ff 75 08             	push   0x8(%ebp)
405da0:	e8 60 28 00 00       	call   0x408605
405da5:	59                   	pop    %ecx
405da6:	59                   	pop    %ecx
405da7:	b8 55 5d 40 00       	mov    $0x405d55,%eax
405dac:	c3                   	ret
405dad:	b8 a0 94 40 00       	mov    $0x4094a0,%eax
405db2:	e8 79 31 00 00       	call   0x408f30
405db7:	81 ec 44 02 00 00    	sub    $0x244,%esp
405dbd:	53                   	push   %ebx
405dbe:	56                   	push   %esi
405dbf:	57                   	push   %edi
405dc0:	33 ff                	xor    %edi,%edi
405dc2:	39 3d 04 d8 40 00    	cmp    %edi,0x40d804
405dc8:	89 65 f0             	mov    %esp,-0x10(%ebp)
405dcb:	8b d9                	mov    %ecx,%ebx
405dcd:	0f 84 d9 01 00 00    	je     0x405fac
405dd3:	68 3f 00 0f 00       	push   $0xf003f
405dd8:	57                   	push   %edi
405dd9:	57                   	push   %edi
405dda:	89 7d e8             	mov    %edi,-0x18(%ebp)
405ddd:	89 7d d8             	mov    %edi,-0x28(%ebp)
405de0:	89 7d e0             	mov    %edi,-0x20(%ebp)
405de3:	89 7d e4             	mov    %edi,-0x1c(%ebp)
405de6:	89 7d dc             	mov    %edi,-0x24(%ebp)
405de9:	89 7d fc             	mov    %edi,-0x4(%ebp)
405dec:	ff 15 10 a0 40 00    	call   *0x40a010
405df2:	8b f0                	mov    %eax,%esi
405df4:	3b f7                	cmp    %edi,%esi
405df6:	89 75 b8             	mov    %esi,-0x48(%ebp)
405df9:	75 11                	jne    0x405e0c
405dfb:	8d 45 d0             	lea    -0x30(%ebp),%eax
405dfe:	68 d8 a5 40 00       	push   $0x40a5d8
405e03:	50                   	push   %eax
405e04:	89 7d d0             	mov    %edi,-0x30(%ebp)
405e07:	e8 2a 31 00 00       	call   0x408f36
405e0c:	8d 45 e0             	lea    -0x20(%ebp),%eax
405e0f:	57                   	push   %edi
405e10:	50                   	push   %eax
405e11:	8d 45 d8             	lea    -0x28(%ebp),%eax
405e14:	50                   	push   %eax
405e15:	8d 45 e8             	lea    -0x18(%ebp),%eax
405e18:	50                   	push   %eax
405e19:	57                   	push   %edi
405e1a:	57                   	push   %edi
405e1b:	6a 01                	push   $0x1
405e1d:	6a 30                	push   $0x30
405e1f:	57                   	push   %edi
405e20:	56                   	push   %esi
405e21:	ff 15 04 d8 40 00    	call   *0x40d804
405e27:	ff 75 e8             	push   -0x18(%ebp)
405e2a:	ff 15 44 a1 40 00    	call   *0x40a144
405e30:	3b c7                	cmp    %edi,%eax
405e32:	59                   	pop    %ecx
405e33:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405e36:	75 11                	jne    0x405e49
405e38:	8d 45 bc             	lea    -0x44(%ebp),%eax
405e3b:	68 d8 a5 40 00       	push   $0x40a5d8
405e40:	50                   	push   %eax
405e41:	89 7d bc             	mov    %edi,-0x44(%ebp)
405e44:	e8 ed 30 00 00       	call   0x408f36
405e49:	8d 4d e0             	lea    -0x20(%ebp),%ecx
405e4c:	57                   	push   %edi
405e4d:	51                   	push   %ecx
405e4e:	8d 4d d8             	lea    -0x28(%ebp),%ecx
405e51:	51                   	push   %ecx
405e52:	8d 4d e8             	lea    -0x18(%ebp),%ecx
405e55:	51                   	push   %ecx
405e56:	89 7d e0             	mov    %edi,-0x20(%ebp)
405e59:	ff 75 e8             	push   -0x18(%ebp)
405e5c:	50                   	push   %eax
405e5d:	6a 01                	push   $0x1
405e5f:	6a 30                	push   $0x30
405e61:	57                   	push   %edi
405e62:	56                   	push   %esi
405e63:	ff 15 04 d8 40 00    	call   *0x40d804
405e69:	3b c7                	cmp    %edi,%eax
405e6b:	75 11                	jne    0x405e7e
405e6d:	8d 45 c4             	lea    -0x3c(%ebp),%eax
405e70:	68 d8 a5 40 00       	push   $0x40a5d8
405e75:	50                   	push   %eax
405e76:	89 7d c4             	mov    %edi,-0x3c(%ebp)
405e79:	e8 b8 30 00 00       	call   0x408f36
405e7e:	89 7d ec             	mov    %edi,-0x14(%ebp)
405e81:	8b 45 ec             	mov    -0x14(%ebp),%eax
405e84:	3b 45 d8             	cmp    -0x28(%ebp),%eax
405e87:	0f 83 eb 00 00 00    	jae    0x405f78
405e8d:	6b c0 2c             	imul   $0x2c,%eax,%eax
405e90:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
405e93:	8d 34 08             	lea    (%eax,%ecx,1),%esi
405e96:	8b 44 08 24          	mov    0x24(%eax,%ecx,1),%eax
405e9a:	3b 45 08             	cmp    0x8(%ebp),%eax
405e9d:	0f 85 cd 00 00 00    	jne    0x405f70
405ea3:	39 7d dc             	cmp    %edi,-0x24(%ebp)
405ea6:	75 17                	jne    0x405ebf
405ea8:	6a 15                	push   $0x15
405eaa:	8b cb                	mov    %ebx,%ecx
405eac:	ff 73 20             	push   0x20(%ebx)
405eaf:	ff 73 4c             	push   0x4c(%ebx)
405eb2:	68 ac cb 40 00       	push   $0x40cbac
405eb7:	e8 17 f0 ff ff       	call   0x404ed3
405ebc:	89 45 dc             	mov    %eax,-0x24(%ebp)
405ebf:	6a 16                	push   $0x16
405ec1:	8b cb                	mov    %ebx,%ecx
405ec3:	ff 73 20             	push   0x20(%ebx)
405ec6:	ff 75 dc             	push   -0x24(%ebp)
405ec9:	ff 36                	push   (%esi)
405ecb:	e8 03 f0 ff ff       	call   0x404ed3
405ed0:	6a 14                	push   $0x14
405ed2:	8b cb                	mov    %ebx,%ecx
405ed4:	ff 73 20             	push   0x20(%ebx)
405ed7:	89 45 c8             	mov    %eax,-0x38(%ebp)
405eda:	50                   	push   %eax
405edb:	ff 76 04             	push   0x4(%esi)
405ede:	e8 f0 ef ff ff       	call   0x404ed3
405ee3:	8d 85 b4 fd ff ff    	lea    -0x24c(%ebp),%eax
405ee9:	68 88 cb 40 00       	push   $0x40cb88
405eee:	50                   	push   %eax
405eef:	e8 54 31 00 00       	call   0x409048
405ef4:	ff 36                	push   (%esi)
405ef6:	8d 85 b4 fd ff ff    	lea    -0x24c(%ebp),%eax
405efc:	50                   	push   %eax
405efd:	e8 40 30 00 00       	call   0x408f42
405f02:	83 c4 10             	add    $0x10,%esp
405f05:	8d 45 d4             	lea    -0x2c(%ebp),%eax
405f08:	50                   	push   %eax
405f09:	6a 01                	push   $0x1
405f0b:	8d 85 b4 fd ff ff    	lea    -0x24c(%ebp),%eax
405f11:	57                   	push   %edi
405f12:	50                   	push   %eax
405f13:	68 02 00 00 80       	push   $0x80000002
405f18:	ff 15 04 a0 40 00    	call   *0x40a004
405f1e:	85 c0                	test   %eax,%eax
405f20:	75 4e                	jne    0x405f70
405f22:	8d 45 b4             	lea    -0x4c(%ebp),%eax
405f25:	c7 45 b4 00 02 00 00 	movl   $0x200,-0x4c(%ebp)
405f2c:	50                   	push   %eax
405f2d:	8d 85 b4 fd ff ff    	lea    -0x24c(%ebp),%eax
405f33:	50                   	push   %eax
405f34:	8d 45 cc             	lea    -0x34(%ebp),%eax
405f37:	50                   	push   %eax
405f38:	57                   	push   %edi
405f39:	68 94 c5 40 00       	push   $0x40c594
405f3e:	ff 75 d4             	push   -0x2c(%ebp)
405f41:	ff 15 30 a0 40 00    	call   *0x40a030
405f47:	85 c0                	test   %eax,%eax
405f49:	75 1c                	jne    0x405f67
405f4b:	83 7d cc 01          	cmpl   $0x1,-0x34(%ebp)
405f4f:	75 16                	jne    0x405f67
405f51:	6a 14                	push   $0x14
405f53:	8d 85 b4 fd ff ff    	lea    -0x24c(%ebp),%eax
405f59:	ff 73 20             	push   0x20(%ebx)
405f5c:	8b cb                	mov    %ebx,%ecx
405f5e:	ff 75 c8             	push   -0x38(%ebp)
405f61:	50                   	push   %eax
405f62:	e8 6c ef ff ff       	call   0x404ed3
405f67:	ff 75 d4             	push   -0x2c(%ebp)
405f6a:	ff 15 00 a0 40 00    	call   *0x40a000
405f70:	ff 45 ec             	incl   -0x14(%ebp)
405f73:	e9 09 ff ff ff       	jmp    0x405e81
405f78:	8d 45 c0             	lea    -0x40(%ebp),%eax
405f7b:	68 d8 a5 40 00       	push   $0x40a5d8
405f80:	50                   	push   %eax
405f81:	c7 45 c0 01 00 00 00 	movl   $0x1,-0x40(%ebp)
405f88:	e8 a9 2f 00 00       	call   0x408f36
405f8d:	ff 75 b8             	push   -0x48(%ebp)
405f90:	ff 15 0c a0 40 00    	call   *0x40a00c
405f96:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
405f9a:	74 0a                	je     0x405fa6
405f9c:	ff 75 e4             	push   -0x1c(%ebp)
405f9f:	ff 15 48 a1 40 00    	call   *0x40a148
405fa5:	59                   	pop    %ecx
405fa6:	b8 ac 5f 40 00       	mov    $0x405fac,%eax
405fab:	c3                   	ret
405fac:	8b 4d f4             	mov    -0xc(%ebp),%ecx
405faf:	5f                   	pop    %edi
405fb0:	5e                   	pop    %esi
405fb1:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
405fb8:	5b                   	pop    %ebx
405fb9:	c9                   	leave
405fba:	c2 04 00             	ret    $0x4
405fbd:	8b 54 24 04          	mov    0x4(%esp),%edx
405fc1:	8b c1                	mov    %ecx,%eax
405fc3:	33 c9                	xor    %ecx,%ecx
405fc5:	89 0a                	mov    %ecx,(%edx)
405fc7:	39 0d 0c d8 40 00    	cmp    %ecx,0x40d80c
405fcd:	74 30                	je     0x405fff
405fcf:	39 0d 08 d8 40 00    	cmp    %ecx,0x40d808
405fd5:	74 28                	je     0x405fff
405fd7:	39 0d cc d7 40 00    	cmp    %ecx,0x40d7cc
405fdd:	74 20                	je     0x405fff
405fdf:	56                   	push   %esi
405fe0:	8b 74 24 0c          	mov    0xc(%esp),%esi
405fe4:	89 30                	mov    %esi,(%eax)
405fe6:	89 48 08             	mov    %ecx,0x8(%eax)
405fe9:	89 48 0c             	mov    %ecx,0xc(%eax)
405fec:	89 48 18             	mov    %ecx,0x18(%eax)
405fef:	89 48 1c             	mov    %ecx,0x1c(%eax)
405ff2:	88 48 04             	mov    %cl,0x4(%eax)
405ff5:	88 48 05             	mov    %cl,0x5(%eax)
405ff8:	c7 02 01 00 00 00    	movl   $0x1,(%edx)
405ffe:	5e                   	pop    %esi
405fff:	c2 08 00             	ret    $0x8
406002:	b8 ac 94 40 00       	mov    $0x4094ac,%eax
406007:	e8 24 2f 00 00       	call   0x408f30
40600c:	81 ec 2c 02 00 00    	sub    $0x22c,%esp
406012:	8b 45 08             	mov    0x8(%ebp),%eax
406015:	53                   	push   %ebx
406016:	56                   	push   %esi
406017:	57                   	push   %edi
406018:	8b f9                	mov    %ecx,%edi
40601a:	8b f0                	mov    %eax,%esi
40601c:	33 db                	xor    %ebx,%ebx
40601e:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406021:	8b 47 18             	mov    0x18(%edi),%eax
406024:	89 65 f0             	mov    %esp,-0x10(%ebp)
406027:	c1 e6 02             	shl    $0x2,%esi
40602a:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40602d:	51                   	push   %ecx
40602e:	8b 04 06             	mov    (%esi,%eax,1),%eax
406031:	53                   	push   %ebx
406032:	89 5d ec             	mov    %ebx,-0x14(%ebp)
406035:	89 5d fc             	mov    %ebx,-0x4(%ebp)
406038:	ff b0 24 02 00 00    	push   0x224(%eax)
40603e:	ff b0 20 02 00 00    	push   0x220(%eax)
406044:	ff 30                	push   (%eax)
406046:	53                   	push   %ebx
406047:	ff 15 08 d8 40 00    	call   *0x40d808
40604d:	3a c3                	cmp    %bl,%al
40604f:	74 15                	je     0x406066
406051:	8d 45 d8             	lea    -0x28(%ebp),%eax
406054:	68 d8 a5 40 00       	push   $0x40a5d8
406059:	50                   	push   %eax
40605a:	c7 45 d8 fd ff ff ff 	movl   $0xfffffffd,-0x28(%ebp)
406061:	e8 d0 2e 00 00       	call   0x408f36
406066:	ff 75 e8             	push   -0x18(%ebp)
406069:	e8 e0 2e 00 00       	call   0x408f4e
40606e:	3b c3                	cmp    %ebx,%eax
406070:	59                   	pop    %ecx
406071:	89 45 ec             	mov    %eax,-0x14(%ebp)
406074:	75 12                	jne    0x406088
406076:	83 4d d4 ff          	orl    $0xffffffff,-0x2c(%ebp)
40607a:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40607d:	68 d8 a5 40 00       	push   $0x40a5d8
406082:	50                   	push   %eax
406083:	e8 ae 2e 00 00       	call   0x408f36
406088:	8b 47 18             	mov    0x18(%edi),%eax
40608b:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40608e:	51                   	push   %ecx
40608f:	8b 04 06             	mov    (%esi,%eax,1),%eax
406092:	ff 75 ec             	push   -0x14(%ebp)
406095:	ff b0 24 02 00 00    	push   0x224(%eax)
40609b:	ff b0 20 02 00 00    	push   0x220(%eax)
4060a1:	ff 30                	push   (%eax)
4060a3:	53                   	push   %ebx
4060a4:	ff 15 08 d8 40 00    	call   *0x40d808
4060aa:	3a c3                	cmp    %bl,%al
4060ac:	75 15                	jne    0x4060c3
4060ae:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4060b1:	68 d8 a5 40 00       	push   $0x40a5d8
4060b6:	50                   	push   %eax
4060b7:	c7 45 e4 fd ff ff ff 	movl   $0xfffffffd,-0x1c(%ebp)
4060be:	e8 73 2e 00 00       	call   0x408f36
4060c3:	8d 45 08             	lea    0x8(%ebp),%eax
4060c6:	c7 45 08 03 01 00 00 	movl   $0x103,0x8(%ebp)
4060cd:	50                   	push   %eax
4060ce:	8d 85 c8 fd ff ff    	lea    -0x238(%ebp),%eax
4060d4:	50                   	push   %eax
4060d5:	ff 75 ec             	push   -0x14(%ebp)
4060d8:	ff 15 0c d8 40 00    	call   *0x40d80c
4060de:	8b 47 18             	mov    0x18(%edi),%eax
4060e1:	53                   	push   %ebx
4060e2:	53                   	push   %ebx
4060e3:	68 04 01 00 00       	push   $0x104
4060e8:	8b 04 06             	mov    (%esi,%eax,1),%eax
4060eb:	05 0c 01 00 00       	add    $0x10c,%eax
4060f0:	50                   	push   %eax
4060f1:	8b 45 08             	mov    0x8(%ebp),%eax
4060f4:	40                   	inc    %eax
4060f5:	50                   	push   %eax
4060f6:	8d 85 c8 fd ff ff    	lea    -0x238(%ebp),%eax
4060fc:	50                   	push   %eax
4060fd:	53                   	push   %ebx
4060fe:	53                   	push   %ebx
4060ff:	ff 15 e4 a0 40 00    	call   *0x40a0e4
406105:	3b c3                	cmp    %ebx,%eax
406107:	75 15                	jne    0x40611e
406109:	8d 45 e0             	lea    -0x20(%ebp),%eax
40610c:	68 d8 a5 40 00       	push   $0x40a5d8
406111:	50                   	push   %eax
406112:	c7 45 e0 fe ff ff ff 	movl   $0xfffffffe,-0x20(%ebp)
406119:	e8 18 2e 00 00       	call   0x408f36
40611e:	8d 45 dc             	lea    -0x24(%ebp),%eax
406121:	68 d8 a5 40 00       	push   $0x40a5d8
406126:	50                   	push   %eax
406127:	c7 45 dc 01 00 00 00 	movl   $0x1,-0x24(%ebp)
40612e:	e8 03 2e 00 00       	call   0x408f36
406133:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
406137:	74 09                	je     0x406142
406139:	ff 75 ec             	push   -0x14(%ebp)
40613c:	e8 07 2e 00 00       	call   0x408f48
406141:	59                   	pop    %ecx
406142:	b8 48 61 40 00       	mov    $0x406148,%eax
406147:	c3                   	ret