405dff:	55                   	push   %ebp
405e00:	8b ec                	mov    %esp,%ebp
405e02:	81 ec 10 04 00 00    	sub    $0x410,%esp
405e08:	a1 04 a0 40 00       	mov    0x40a004,%eax
405e0d:	33 c5                	xor    %ebp,%eax
405e0f:	89 45 fc             	mov    %eax,-0x4(%ebp)
405e12:	53                   	push   %ebx
405e13:	56                   	push   %esi
405e14:	8b f2                	mov    %edx,%esi
405e16:	57                   	push   %edi
405e17:	83 f9 07             	cmp    $0x7,%ecx
405e1a:	74 0f                	je     0x405e2b
405e1c:	6a 0d                	push   $0xd
405e1e:	59                   	pop    %ecx
405e1f:	e8 3b cc ff ff       	call   0x402a5f
405e24:	33 c0                	xor    %eax,%eax
405e26:	e9 9e 00 00 00       	jmp    0x405ec9
405e2b:	8b 5e 08             	mov    0x8(%esi),%ebx
405e2e:	33 ff                	xor    %edi,%edi
405e30:	6a 2a                	push   $0x2a
405e32:	58                   	pop    %eax
405e33:	66 39 03             	cmp    %ax,(%ebx)
405e36:	75 02                	jne    0x405e3a
405e38:	8b df                	mov    %edi,%ebx
405e3a:	8b 4e 10             	mov    0x10(%esi),%ecx
405e3d:	66 39 01             	cmp    %ax,(%ecx)
405e40:	75 09                	jne    0x405e4b
405e42:	83 8d f4 fb ff ff ff 	orl    $0xffffffff,-0x40c(%ebp)
405e49:	eb 0e                	jmp    0x405e59
405e4b:	e8 26 de ff ff       	call   0x403c76
405e50:	6a 2a                	push   $0x2a
405e52:	89 85 f4 fb ff ff    	mov    %eax,-0x40c(%ebp)
405e58:	58                   	pop    %eax
405e59:	8b 56 14             	mov    0x14(%esi),%edx
405e5c:	66 39 02             	cmp    %ax,(%edx)
405e5f:	74 57                	je     0x405eb8
405e61:	8b ca                	mov    %edx,%ecx
405e63:	8d 41 02             	lea    0x2(%ecx),%eax
405e66:	89 85 f0 fb ff ff    	mov    %eax,-0x410(%ebp)
405e6c:	66 8b 01             	mov    (%ecx),%ax
405e6f:	83 c1 02             	add    $0x2,%ecx
405e72:	66 3b c7             	cmp    %di,%ax
405e75:	75 f5                	jne    0x405e6c
405e77:	2b 8d f0 fb ff ff    	sub    -0x410(%ebp),%ecx
405e7d:	d1 f9                	sar    $1,%ecx
405e7f:	81 f9 ff 00 00 00    	cmp    $0xff,%ecx
405e85:	76 05                	jbe    0x405e8c
405e87:	6a 57                	push   $0x57
405e89:	58                   	pop    %eax
405e8a:	eb 3d                	jmp    0x405ec9
405e8c:	52                   	push   %edx
405e8d:	ba 00 01 00 00       	mov    $0x100,%edx
405e92:	8d 8d f8 fd ff ff    	lea    -0x208(%ebp),%ecx
405e98:	e8 c3 c8 ff ff       	call   0x402760
405e9d:	8b 4e 18             	mov    0x18(%esi),%ecx
405ea0:	e8 d1 dd ff ff       	call   0x403c76
405ea5:	66 89 45 f8          	mov    %ax,-0x8(%ebp)
405ea9:	8d bd f8 fb ff ff    	lea    -0x408(%ebp),%edi
405eaf:	33 c0                	xor    %eax,%eax
405eb1:	66 89 85 f8 fb ff ff 	mov    %ax,-0x408(%ebp)
405eb8:	57                   	push   %edi
405eb9:	ff 76 0c             	push   0xc(%esi)
405ebc:	ff b5 f4 fb ff ff    	push   -0x40c(%ebp)
405ec2:	53                   	push   %ebx
405ec3:	ff 15 48 f0 40 00    	call   *0x40f048
405ec9:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405ecc:	5f                   	pop    %edi
405ecd:	5e                   	pop    %esi
405ece:	33 cd                	xor    %ebp,%ecx
405ed0:	5b                   	pop    %ebx
405ed1:	e8 fa 2b 00 00       	call   0x408ad0
405ed6:	c9                   	leave
405ed7:	c3                   	ret
405ed8:	8b ff                	mov    %edi,%edi
405eda:	55                   	push   %ebp
405edb:	8b ec                	mov    %esp,%ebp
405edd:	81 ec a4 01 00 00    	sub    $0x1a4,%esp
405ee3:	a1 04 a0 40 00       	mov    0x40a004,%eax
405ee8:	33 c5                	xor    %ebp,%eax
405eea:	89 45 fc             	mov    %eax,-0x4(%ebp)
405eed:	53                   	push   %ebx
405eee:	56                   	push   %esi
405eef:	57                   	push   %edi
405ef0:	6a 40                	push   $0x40
405ef2:	5e                   	pop    %esi
405ef3:	56                   	push   %esi
405ef4:	33 db                	xor    %ebx,%ebx
405ef6:	8d 85 78 fe ff ff    	lea    -0x188(%ebp),%eax
405efc:	53                   	push   %ebx
405efd:	50                   	push   %eax
405efe:	e8 e1 31 00 00       	call   0x4090e4
405f03:	83 c4 0c             	add    $0xc,%esp
405f06:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
405f0c:	56                   	push   %esi
405f0d:	53                   	push   %ebx
405f0e:	50                   	push   %eax
405f0f:	e8 d0 31 00 00       	call   0x4090e4
405f14:	83 c4 0c             	add    $0xc,%esp
405f17:	8d 85 f8 fe ff ff    	lea    -0x108(%ebp),%eax
405f1d:	56                   	push   %esi
405f1e:	53                   	push   %ebx
405f1f:	50                   	push   %eax
405f20:	e8 bf 31 00 00       	call   0x4090e4
405f25:	83 c4 0c             	add    $0xc,%esp
405f28:	8d 45 b8             	lea    -0x48(%ebp),%eax
405f2b:	56                   	push   %esi
405f2c:	53                   	push   %ebx
405f2d:	50                   	push   %eax
405f2e:	e8 b1 31 00 00       	call   0x4090e4
405f33:	83 c4 0c             	add    $0xc,%esp
405f36:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
405f3c:	56                   	push   %esi
405f3d:	53                   	push   %ebx
405f3e:	50                   	push   %eax
405f3f:	e8 a0 31 00 00       	call   0x4090e4
405f44:	83 c4 0c             	add    $0xc,%esp
405f47:	8d 85 38 ff ff ff    	lea    -0xc8(%ebp),%eax
405f4d:	56                   	push   %esi
405f4e:	53                   	push   %ebx
405f4f:	50                   	push   %eax
405f50:	e8 8f 31 00 00       	call   0x4090e4
405f55:	83 c4 0c             	add    $0xc,%esp
405f58:	89 9d 74 fe ff ff    	mov    %ebx,-0x18c(%ebp)
405f5e:	8d 85 70 fe ff ff    	lea    -0x190(%ebp),%eax
405f64:	89 9d 70 fe ff ff    	mov    %ebx,-0x190(%ebp)
405f6a:	50                   	push   %eax
405f6b:	53                   	push   %ebx
405f6c:	8d 85 74 fe ff ff    	lea    -0x18c(%ebp),%eax
405f72:	50                   	push   %eax
405f73:	ff 15 20 f0 40 00    	call   *0x40f020
405f79:	8b d8                	mov    %eax,%ebx
405f7b:	83 fb 7a             	cmp    $0x7a,%ebx
405f7e:	0f 85 8a 02 00 00    	jne    0x40620e
405f84:	ff b5 74 fe ff ff    	push   -0x18c(%ebp)
405f8a:	68 66 04 00 00       	push   $0x466
405f8f:	e8 fb c9 ff ff       	call   0x40298f
405f94:	68 c4 13 40 00       	push   $0x4013c4
405f99:	e8 1c c9 ff ff       	call   0x4028ba
405f9e:	83 c4 0c             	add    $0xc,%esp
405fa1:	ff b5 70 fe ff ff    	push   -0x190(%ebp)
405fa7:	ff 15 a4 f0 40 00    	call   *0x40f0a4
405fad:	8b f8                	mov    %eax,%edi
405faf:	89 bd 60 fe ff ff    	mov    %edi,-0x1a0(%ebp)
405fb5:	85 ff                	test   %edi,%edi
405fb7:	0f 84 51 02 00 00    	je     0x40620e
405fbd:	8d 85 70 fe ff ff    	lea    -0x190(%ebp),%eax
405fc3:	50                   	push   %eax
405fc4:	57                   	push   %edi
405fc5:	8d 85 74 fe ff ff    	lea    -0x18c(%ebp),%eax
405fcb:	50                   	push   %eax
405fcc:	ff 15 20 f0 40 00    	call   *0x40f020
405fd2:	8b d8                	mov    %eax,%ebx
405fd4:	85 db                	test   %ebx,%ebx
405fd6:	0f 85 2b 02 00 00    	jne    0x406207
405fdc:	21 85 64 fe ff ff    	and    %eax,-0x19c(%ebp)
405fe2:	39 85 74 fe ff ff    	cmp    %eax,-0x18c(%ebp)
405fe8:	0f 86 19 02 00 00    	jbe    0x406207
405fee:	8d b7 c8 05 00 00    	lea    0x5c8(%edi),%esi
405ff4:	33 ff                	xor    %edi,%edi
405ff6:	80 be f8 fb ff ff 00 	cmpb   $0x0,-0x408(%esi)
405ffd:	6a 20                	push   $0x20
405fff:	74 1d                	je     0x40601e
406001:	8d 45 b8             	lea    -0x48(%ebp),%eax
406004:	50                   	push   %eax
406005:	68 69 04 00 00       	push   $0x469
40600a:	57                   	push   %edi
40600b:	ff 15 20 f1 40 00    	call   *0x40f120
406011:	85 c0                	test   %eax,%eax
406013:	75 04                	jne    0x406019
406015:	66 89 45 b8          	mov    %ax,-0x48(%ebp)
406019:	8d 45 b8             	lea    -0x48(%ebp),%eax
40601c:	eb 24                	jmp    0x406042
40601e:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
406024:	50                   	push   %eax
406025:	68 6a 04 00 00       	push   $0x46a
40602a:	57                   	push   %edi
40602b:	ff 15 20 f1 40 00    	call   *0x40f120
406031:	85 c0                	test   %eax,%eax
406033:	75 07                	jne    0x40603c
406035:	66 89 85 78 ff ff ff 	mov    %ax,-0x88(%ebp)
40603c:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
406042:	89 85 6c fe ff ff    	mov    %eax,-0x194(%ebp)
406048:	c7 85 68 fe ff ff e0 	movl   $0x4019e0,-0x198(%ebp)
40604f:	19 40 00
406052:	66 39 3e             	cmp    %di,(%esi)
406055:	74 06                	je     0x40605d
406057:	89 b5 68 fe ff ff    	mov    %esi,-0x198(%ebp)
40605d:	6a 20                	push   $0x20
40605f:	8d 85 38 ff ff ff    	lea    -0xc8(%ebp),%eax
406065:	50                   	push   %eax
406066:	68 54 04 00 00       	push   $0x454
40606b:	57                   	push   %edi
40606c:	ff 15 20 f1 40 00    	call   *0x40f120
406072:	85 c0                	test   %eax,%eax
406074:	75 07                	jne    0x40607d
406076:	66 89 85 38 ff ff ff 	mov    %ax,-0xc8(%ebp)
40607d:	6a 20                	push   $0x20
40607f:	8d 85 f8 fe ff ff    	lea    -0x108(%ebp),%eax
406085:	50                   	push   %eax
406086:	68 68 04 00 00       	push   $0x468
40608b:	57                   	push   %edi
40608c:	ff 15 20 f1 40 00    	call   *0x40f120
406092:	85 c0                	test   %eax,%eax
406094:	75 07                	jne    0x40609d
406096:	66 89 85 f8 fe ff ff 	mov    %ax,-0x108(%ebp)
40609d:	6a 20                	push   $0x20
40609f:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
4060a5:	50                   	push   %eax
4060a6:	68 67 04 00 00       	push   $0x467
4060ab:	57                   	push   %edi
4060ac:	ff 15 20 f1 40 00    	call   *0x40f120
4060b2:	85 c0                	test   %eax,%eax
4060b4:	75 07                	jne    0x4060bd
4060b6:	66 89 85 b8 fe ff ff 	mov    %ax,-0x148(%ebp)
4060bd:	6a 20                	push   $0x20
4060bf:	8d 85 78 fe ff ff    	lea    -0x188(%ebp),%eax
4060c5:	50                   	push   %eax
4060c6:	68 25 04 00 00       	push   $0x425
4060cb:	57                   	push   %edi
4060cc:	ff 15 20 f1 40 00    	call   *0x40f120
4060d2:	85 c0                	test   %eax,%eax
4060d4:	75 07                	jne    0x4060dd
4060d6:	66 89 85 78 fe ff ff 	mov    %ax,-0x188(%ebp)
4060dd:	8d 86 fa fb ff ff    	lea    -0x406(%esi),%eax
4060e3:	50                   	push   %eax
4060e4:	8d 85 38 ff ff ff    	lea    -0xc8(%ebp),%eax
4060ea:	50                   	push   %eax
4060eb:	ff b5 6c fe ff ff    	push   -0x194(%ebp)
4060f1:	8d 85 f8 fe ff ff    	lea    -0x108(%ebp),%eax
4060f7:	50                   	push   %eax
4060f8:	0f b7 86 00 02 00 00 	movzwl 0x200(%esi),%eax
4060ff:	50                   	push   %eax
406100:	ff b5 68 fe ff ff    	push   -0x198(%ebp)
406106:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
40610c:	50                   	push   %eax
40610d:	8d 86 38 fa ff ff    	lea    -0x5c8(%esi),%eax
406113:	50                   	push   %eax
406114:	8d 85 78 fe ff ff    	lea    -0x188(%ebp),%eax
40611a:	50                   	push   %eax
40611b:	68 e8 19 40 00       	push   $0x4019e8
406120:	e8 95 c7 ff ff       	call   0x4028ba
406125:	83 c4 28             	add    $0x28,%esp
406128:	83 be fc fd ff ff ff 	cmpl   $0xffffffff,-0x204(%esi)
40612f:	6a 20                	push   $0x20
406131:	75 4a                	jne    0x40617d
406133:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
406139:	50                   	push   %eax
40613a:	68 6c 04 00 00       	push   $0x46c
40613f:	57                   	push   %edi
406140:	ff 15 20 f1 40 00    	call   *0x40f120
406146:	85 c0                	test   %eax,%eax
406148:	75 07                	jne    0x406151
40614a:	66 89 85 78 ff ff ff 	mov    %ax,-0x88(%ebp)
406151:	6a 20                	push   $0x20
406153:	8d 45 b8             	lea    -0x48(%ebp),%eax
406156:	50                   	push   %eax
406157:	68 6b 04 00 00       	push   $0x46b
40615c:	57                   	push   %edi
40615d:	ff 15 20 f1 40 00    	call   *0x40f120
406163:	85 c0                	test   %eax,%eax
406165:	75 04                	jne    0x40616b
406167:	66 89 45 b8          	mov    %ax,-0x48(%ebp)
40616b:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
406171:	50                   	push   %eax
406172:	8d 45 b8             	lea    -0x48(%ebp),%eax
406175:	50                   	push   %eax
406176:	68 9c 1a 40 00       	push   $0x401a9c
40617b:	eb 27                	jmp    0x4061a4
40617d:	8d 45 b8             	lea    -0x48(%ebp),%eax
406180:	50                   	push   %eax
406181:	68 6b 04 00 00       	push   $0x46b
406186:	57                   	push   %edi
406187:	ff 15 20 f1 40 00    	call   *0x40f120
40618d:	85 c0                	test   %eax,%eax
40618f:	75 04                	jne    0x406195
406191:	66 89 45 b8          	mov    %ax,-0x48(%ebp)
406195:	ff b6 fc fd ff ff    	push   -0x204(%esi)
40619b:	8d 45 b8             	lea    -0x48(%ebp),%eax
40619e:	50                   	push   %eax
40619f:	68 d4 1a 40 00       	push   $0x401ad4
4061a4:	e8 11 c7 ff ff       	call   0x4028ba
4061a9:	83 c4 0c             	add    $0xc,%esp
4061ac:	ff b6 0c 02 00 00    	push   0x20c(%esi)
4061b2:	ff b6 08 02 00 00    	push   0x208(%esi)
4061b8:	e8 ce ce ff ff       	call   0x40308b
4061bd:	8d 96 14 02 00 00    	lea    0x214(%esi),%edx
4061c3:	e8 3c d4 ff ff       	call   0x403604
4061c8:	8b 8e 10 02 00 00    	mov    0x210(%esi),%ecx
4061ce:	85 c9                	test   %ecx,%ecx
4061d0:	74 05                	je     0x4061d7
4061d2:	e8 b9 d0 ff ff       	call   0x403290
4061d7:	68 c4 13 40 00       	push   $0x4013c4
4061dc:	e8 d9 c6 ff ff       	call   0x4028ba
4061e1:	8b 85 64 fe ff ff    	mov    -0x19c(%ebp),%eax
4061e7:	81 c6 10 08 00 00    	add    $0x810,%esi
4061ed:	40                   	inc    %eax
4061ee:	59                   	pop    %ecx
4061ef:	89 85 64 fe ff ff    	mov    %eax,-0x19c(%ebp)
4061f5:	3b 85 74 fe ff ff    	cmp    -0x18c(%ebp),%eax
4061fb:	0f 82 f5 fd ff ff    	jb     0x405ff6
406201:	8b bd 60 fe ff ff    	mov    -0x1a0(%ebp),%edi
406207:	57                   	push   %edi
406208:	ff 15 b0 f0 40 00    	call   *0x40f0b0
40620e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406211:	8b c3                	mov    %ebx,%eax
406213:	5f                   	pop    %edi
406214:	5e                   	pop    %esi
406215:	33 cd                	xor    %ebp,%ecx
406217:	5b                   	pop    %ebx
406218:	e8 b3 28 00 00       	call   0x408ad0
40621d:	c9                   	leave
40621e:	c3                   	ret
40621f:	8b ff                	mov    %edi,%edi
406221:	55                   	push   %ebp
406222:	8b ec                	mov    %esp,%ebp
406224:	51                   	push   %ecx
406225:	51                   	push   %ecx
406226:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40622a:	8b c1                	mov    %ecx,%eax
40622c:	53                   	push   %ebx
40622d:	56                   	push   %esi
40622e:	57                   	push   %edi
40622f:	6a 00                	push   $0x0
406231:	8d 4d fc             	lea    -0x4(%ebp),%ecx
406234:	89 45 f8             	mov    %eax,-0x8(%ebp)
406237:	51                   	push   %ecx
406238:	ff 75 08             	push   0x8(%ebp)
40623b:	8b da                	mov    %edx,%ebx
40623d:	53                   	push   %ebx
40623e:	50                   	push   %eax
40623f:	ff 15 88 f0 40 00    	call   *0x40f088
406245:	8b f8                	mov    %eax,%edi
406247:	83 ff 7a             	cmp    $0x7a,%edi
40624a:	75 42                	jne    0x40628e
40624c:	ff 75 fc             	push   -0x4(%ebp)
40624f:	ff 15 a4 f0 40 00    	call   *0x40f0a4
406255:	8b f0                	mov    %eax,%esi
406257:	85 f6                	test   %esi,%esi
406259:	75 05                	jne    0x406260
40625b:	6a 08                	push   $0x8
40625d:	58                   	pop    %eax
40625e:	eb 30                	jmp    0x406290
406260:	56                   	push   %esi
406261:	8d 45 fc             	lea    -0x4(%ebp),%eax
406264:	50                   	push   %eax
406265:	ff 75 08             	push   0x8(%ebp)
406268:	53                   	push   %ebx
406269:	ff 75 f8             	push   -0x8(%ebp)
40626c:	ff 15 88 f0 40 00    	call   *0x40f088
406272:	8b f8                	mov    %eax,%edi