402ea0:	ff 75 f0             	push   -0x10(%ebp)
402ea3:	f7 d1                	not    %ecx
402ea5:	83 e1 04             	and    $0x4,%ecx
402ea8:	a3 54 f0 41 00       	mov    %eax,0x41f054
402ead:	2b c1                	sub    %ecx,%eax
402eaf:	8b 4d f4             	mov    -0xc(%ebp),%ecx
402eb2:	56                   	push   %esi
402eb3:	53                   	push   %ebx
402eb4:	8d 44 08 e4          	lea    -0x1c(%eax,%ecx,1),%eax
402eb8:	6a ff                	push   $0xffffffff
402eba:	a3 48 70 41 00       	mov    %eax,0x417048
402ebf:	e8 54 00 00 00       	call   0x402f18
402ec4:	3b 45 f0             	cmp    -0x10(%ebp),%eax
402ec7:	74 07                	je     0x402ed0
402ec9:	b8 60 90 40 00       	mov    $0x409060,%eax
402ece:	eb 41                	jmp    0x402f11
402ed0:	f6 45 dc 01          	testb  $0x1,-0x24(%ebp)
402ed4:	89 35 b0 3e 42 00    	mov    %esi,0x423eb0
402eda:	8b 06                	mov    (%esi),%eax
402edc:	a3 b8 3e 42 00       	mov    %eax,0x423eb8
402ee1:	74 06                	je     0x402ee9
402ee3:	ff 05 bc 3e 42 00    	incl   0x423ebc
402ee9:	6a 08                	push   $0x8
402eeb:	8d 46 44             	lea    0x44(%esi),%eax
402eee:	59                   	pop    %ecx
402eef:	83 e8 08             	sub    $0x8,%eax
402ef2:	01 30                	add    %esi,(%eax)
402ef4:	49                   	dec    %ecx
402ef5:	75 f8                	jne    0x402eef
402ef7:	a1 44 70 41 00       	mov    0x417044,%eax
402efc:	6a 40                	push   $0x40
402efe:	89 46 3c             	mov    %eax,0x3c(%esi)
402f01:	83 c6 04             	add    $0x4,%esi
402f04:	56                   	push   %esi
402f05:	68 c0 3e 42 00       	push   $0x423ec0
402f0a:	e8 ef 28 00 00       	call   0x4057fe
402f0f:	33 c0                	xor    %eax,%eax
402f11:	5f                   	pop    %edi
402f12:	5e                   	pop    %esi
402f13:	5b                   	pop    %ebx
402f14:	c9                   	leave
402f15:	c2 04 00             	ret    $0x4
402f18:	55                   	push   %ebp
402f19:	8b ec                	mov    %esp,%ebp
402f1b:	51                   	push   %ecx
402f1c:	51                   	push   %ecx
402f1d:	8b 45 08             	mov    0x8(%ebp),%eax
402f20:	53                   	push   %ebx
402f21:	56                   	push   %esi
402f22:	57                   	push   %edi
402f23:	33 ff                	xor    %edi,%edi
402f25:	3b c7                	cmp    %edi,%eax
402f27:	7c 1c                	jl     0x402f45
402f29:	8b 0d f8 3e 42 00    	mov    0x423ef8,%ecx
402f2f:	57                   	push   %edi
402f30:	03 c1                	add    %ecx,%eax
402f32:	57                   	push   %edi
402f33:	50                   	push   %eax
402f34:	a3 44 70 41 00       	mov    %eax,0x417044
402f39:	ff 35 18 90 40 00    	push   0x409018
402f3f:	ff 15 34 71 40 00    	call   *0x407134
402f45:	6a 04                	push   $0x4
402f47:	5e                   	pop    %esi
402f48:	56                   	push   %esi
402f49:	e8 f5 00 00 00       	call   0x403043
402f4e:	3b c7                	cmp    %edi,%eax
402f50:	0f 8c e6 00 00 00    	jl     0x40303c
402f56:	8d 45 fc             	lea    -0x4(%ebp),%eax
402f59:	8b 1d 2c 71 40 00    	mov    0x40712c,%ebx
402f5f:	57                   	push   %edi
402f60:	50                   	push   %eax
402f61:	8d 45 08             	lea    0x8(%ebp),%eax
402f64:	56                   	push   %esi
402f65:	50                   	push   %eax
402f66:	ff 35 18 90 40 00    	push   0x409018
402f6c:	ff d3                	call   *%ebx
402f6e:	85 c0                	test   %eax,%eax
402f70:	0f 84 c3 00 00 00    	je     0x403039
402f76:	39 75 fc             	cmp    %esi,-0x4(%ebp)
402f79:	0f 85 ba 00 00 00    	jne    0x403039
402f7f:	ff 75 08             	push   0x8(%ebp)
402f82:	01 35 44 70 41 00    	add    %esi,0x417044
402f88:	e8 b6 00 00 00       	call   0x403043
402f8d:	3b c7                	cmp    %edi,%eax
402f8f:	89 45 f8             	mov    %eax,-0x8(%ebp)
402f92:	0f 8c a4 00 00 00    	jl     0x40303c
402f98:	39 7d 10             	cmp    %edi,0x10(%ebp)
402f9b:	75 6b                	jne    0x403008
402f9d:	39 7d 08             	cmp    %edi,0x8(%ebp)
402fa0:	0f 8e 8e 00 00 00    	jle    0x403034
402fa6:	be 40 30 41 00       	mov    $0x413040,%esi
402fab:	bf 00 40 00 00       	mov    $0x4000,%edi
402fb0:	39 7d 08             	cmp    %edi,0x8(%ebp)
402fb3:	7d 03                	jge    0x402fb8
402fb5:	8b 7d 08             	mov    0x8(%ebp),%edi
402fb8:	8d 45 fc             	lea    -0x4(%ebp),%eax
402fbb:	6a 00                	push   $0x0
402fbd:	50                   	push   %eax
402fbe:	57                   	push   %edi
402fbf:	56                   	push   %esi
402fc0:	ff 35 18 90 40 00    	push   0x409018
402fc6:	ff d3                	call   *%ebx
402fc8:	85 c0                	test   %eax,%eax
402fca:	74 6d                	je     0x403039
402fcc:	3b 7d fc             	cmp    -0x4(%ebp),%edi
402fcf:	75 68                	jne    0x403039
402fd1:	8d 45 14             	lea    0x14(%ebp),%eax
402fd4:	6a 00                	push   $0x0
402fd6:	50                   	push   %eax
402fd7:	ff 75 fc             	push   -0x4(%ebp)
402fda:	56                   	push   %esi
402fdb:	ff 75 0c             	push   0xc(%ebp)
402fde:	ff 15 28 71 40 00    	call   *0x407128
402fe4:	85 c0                	test   %eax,%eax
402fe6:	74 1c                	je     0x403004
402fe8:	39 7d 14             	cmp    %edi,0x14(%ebp)
402feb:	75 17                	jne    0x403004
402fed:	8b 45 fc             	mov    -0x4(%ebp),%eax
402ff0:	01 45 f8             	add    %eax,-0x8(%ebp)
402ff3:	29 45 08             	sub    %eax,0x8(%ebp)
402ff6:	01 05 44 70 41 00    	add    %eax,0x417044
402ffc:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
403000:	7f a9                	jg     0x402fab
403002:	eb 30                	jmp    0x403034
403004:	6a fe                	push   $0xfffffffe
403006:	eb 33                	jmp    0x40303b
403008:	8b 45 08             	mov    0x8(%ebp),%eax
40300b:	3b 45 14             	cmp    0x14(%ebp),%eax
40300e:	7c 03                	jl     0x403013
403010:	8b 45 14             	mov    0x14(%ebp),%eax
403013:	8d 4d fc             	lea    -0x4(%ebp),%ecx
403016:	57                   	push   %edi
403017:	51                   	push   %ecx
403018:	50                   	push   %eax
403019:	ff 75 10             	push   0x10(%ebp)
40301c:	ff 35 18 90 40 00    	push   0x409018
403022:	ff d3                	call   *%ebx
403024:	85 c0                	test   %eax,%eax
403026:	74 11                	je     0x403039
403028:	8b 45 fc             	mov    -0x4(%ebp),%eax
40302b:	01 05 44 70 41 00    	add    %eax,0x417044
403031:	89 45 f8             	mov    %eax,-0x8(%ebp)
403034:	8b 45 f8             	mov    -0x8(%ebp),%eax
403037:	eb 03                	jmp    0x40303c
403039:	6a fd                	push   $0xfffffffd
40303b:	58                   	pop    %eax
40303c:	5f                   	pop    %edi
40303d:	5e                   	pop    %esi
40303e:	5b                   	pop    %ebx
40303f:	c9                   	leave
403040:	c2 10 00             	ret    $0x10
403043:	51                   	push   %ecx
403044:	53                   	push   %ebx
403045:	55                   	push   %ebp
403046:	56                   	push   %esi
403047:	8b 35 44 70 41 00    	mov    0x417044,%esi
40304d:	2b 35 b0 af 40 00    	sub    0x40afb0,%esi
403053:	57                   	push   %edi
403054:	03 74 24 18          	add    0x18(%esp),%esi
403058:	ff 15 8c 70 40 00    	call   *0x40708c
40305e:	33 db                	xor    %ebx,%ebx
403060:	05 f4 01 00 00       	add    $0x1f4,%eax
403065:	3b f3                	cmp    %ebx,%esi
403067:	a3 ac 3e 42 00       	mov    %eax,0x423eac
40306c:	0f 8e 3b 01 00 00    	jle    0x4031ad
403072:	ff 35 54 f0 41 00    	push   0x41f054
403078:	e8 74 01 00 00       	call   0x4031f1
40307d:	53                   	push   %ebx
40307e:	53                   	push   %ebx
40307f:	ff 35 b0 af 40 00    	push   0x40afb0
403085:	ff 35 18 90 40 00    	push   0x409018
40308b:	ff 15 34 71 40 00    	call   *0x407134
403091:	89 35 50 f0 41 00    	mov    %esi,0x41f050
403097:	89 1d 40 70 41 00    	mov    %ebx,0x417040
40309d:	bd 40 b0 40 00       	mov    $0x40b040,%ebp
4030a2:	a1 48 70 41 00       	mov    0x417048,%eax
4030a7:	bf 00 40 00 00       	mov    $0x4000,%edi
4030ac:	2b 05 54 f0 41 00    	sub    0x41f054,%eax
4030b2:	3b c7                	cmp    %edi,%eax
4030b4:	7f 02                	jg     0x4030b8
4030b6:	8b f8                	mov    %eax,%edi
4030b8:	be 40 30 41 00       	mov    $0x413040,%esi
4030bd:	57                   	push   %edi
4030be:	56                   	push   %esi
4030bf:	e8 fb 00 00 00       	call   0x4031bf
4030c4:	85 c0                	test   %eax,%eax
4030c6:	0f 84 d3 00 00 00    	je     0x40319f
4030cc:	01 3d 54 f0 41 00    	add    %edi,0x41f054
4030d2:	89 35 d0 af 40 00    	mov    %esi,0x40afd0
4030d8:	89 3d d4 af 40 00    	mov    %edi,0x40afd4
4030de:	39 1d b0 3e 42 00    	cmp    %ebx,0x423eb0
4030e4:	74 29                	je     0x40310f
4030e6:	39 1d 40 3f 42 00    	cmp    %ebx,0x423f40
4030ec:	75 21                	jne    0x40310f
4030ee:	a1 50 f0 41 00       	mov    0x41f050,%eax
4030f3:	53                   	push   %ebx
4030f4:	2b 05 44 70 41 00    	sub    0x417044,%eax
4030fa:	2b 44 24 1c          	sub    0x1c(%esp),%eax
4030fe:	03 05 b0 af 40 00    	add    0x40afb0,%eax
403104:	a3 40 70 41 00       	mov    %eax,0x417040
403109:	e8 c5 fa ff ff       	call   0x402bd3
40310e:	59                   	pop    %ecx
40310f:	b9 b8 af 40 00       	mov    $0x40afb8,%ecx
403114:	89 2d d8 af 40 00    	mov    %ebp,0x40afd8
40311a:	c7 05 dc af 40 00 00 	movl   $0x8000,0x40afdc
403121:	80 00 00
403124:	e8 59 2e 00 00       	call   0x405f82
403129:	85 c0                	test   %eax,%eax
40312b:	7c 7b                	jl     0x4031a8
40312d:	8b 35 d8 af 40 00    	mov    0x40afd8,%esi
403133:	2b f5                	sub    %ebp,%esi
403135:	74 32                	je     0x403169
403137:	8d 44 24 10          	lea    0x10(%esp),%eax
40313b:	53                   	push   %ebx
40313c:	50                   	push   %eax
40313d:	56                   	push   %esi
40313e:	55                   	push   %ebp
40313f:	ff 35 18 90 40 00    	push   0x409018
403145:	ff 15 28 71 40 00    	call   *0x407128
40314b:	85 c0                	test   %eax,%eax
40314d:	74 55                	je     0x4031a4
40314f:	3b 74 24 10          	cmp    0x10(%esp),%esi
403153:	75 4f                	jne    0x4031a4
403155:	01 35 b0 af 40 00    	add    %esi,0x40afb0
40315b:	39 1d d4 af 40 00    	cmp    %ebx,0x40afd4
403161:	0f 85 77 ff ff ff    	jne    0x4030de
403167:	eb 0c                	jmp    0x403175
403169:	39 1d d4 af 40 00    	cmp    %ebx,0x40afd4
40316f:	75 37                	jne    0x4031a8
403171:	3b fb                	cmp    %ebx,%edi
403173:	74 33                	je     0x4031a8
403175:	a1 44 70 41 00       	mov    0x417044,%eax
40317a:	8b c8                	mov    %eax,%ecx
40317c:	2b 0d b0 af 40 00    	sub    0x40afb0,%ecx
403182:	03 4c 24 18          	add    0x18(%esp),%ecx
403186:	85 c9                	test   %ecx,%ecx
403188:	0f 8f 14 ff ff ff    	jg     0x4030a2
40318e:	53                   	push   %ebx
40318f:	53                   	push   %ebx
403190:	50                   	push   %eax
403191:	ff 35 18 90 40 00    	push   0x409018
403197:	ff 15 34 71 40 00    	call   *0x407134
40319d:	eb 0e                	jmp    0x4031ad
40319f:	83 c8 ff             	or     $0xffffffff,%eax
4031a2:	eb 13                	jmp    0x4031b7
4031a4:	6a fe                	push   $0xfffffffe
4031a6:	eb 02                	jmp    0x4031aa
4031a8:	6a fd                	push   $0xfffffffd
4031aa:	58                   	pop    %eax
4031ab:	eb 0a                	jmp    0x4031b7
4031ad:	6a 01                	push   $0x1
4031af:	e8 1f fa ff ff       	call   0x402bd3
4031b4:	59                   	pop    %ecx
4031b5:	33 c0                	xor    %eax,%eax
4031b7:	5f                   	pop    %edi
4031b8:	5e                   	pop    %esi
4031b9:	5d                   	pop    %ebp
4031ba:	5b                   	pop    %ebx
4031bb:	59                   	pop    %ecx
4031bc:	c2 04 00             	ret    $0x4
4031bf:	55                   	push   %ebp
4031c0:	8b ec                	mov    %esp,%ebp
4031c2:	56                   	push   %esi
4031c3:	8b 75 0c             	mov    0xc(%ebp),%esi
4031c6:	8d 45 0c             	lea    0xc(%ebp),%eax
4031c9:	6a 00                	push   $0x0
4031cb:	50                   	push   %eax
4031cc:	56                   	push   %esi
4031cd:	ff 75 08             	push   0x8(%ebp)
4031d0:	ff 35 14 90 40 00    	push   0x409014
4031d6:	ff 15 2c 71 40 00    	call   *0x40712c
4031dc:	85 c0                	test   %eax,%eax
4031de:	74 0a                	je     0x4031ea
4031e0:	39 75 0c             	cmp    %esi,0xc(%ebp)
4031e3:	75 05                	jne    0x4031ea
4031e5:	33 c0                	xor    %eax,%eax
4031e7:	40                   	inc    %eax
4031e8:	eb 02                	jmp    0x4031ec
4031ea:	33 c0                	xor    %eax,%eax
4031ec:	5e                   	pop    %esi
4031ed:	5d                   	pop    %ebp
4031ee:	c2 08 00             	ret    $0x8
4031f1:	6a 00                	push   $0x0
4031f3:	6a 00                	push   $0x0
4031f5:	ff 74 24 0c          	push   0xc(%esp)
4031f9:	ff 35 14 90 40 00    	push   0x409014
4031ff:	ff 15 34 71 40 00    	call   *0x407134
403205:	c2 04 00             	ret    $0x4
403208:	56                   	push   %esi
403209:	be 00 a4 42 00       	mov    $0x42a400,%esi
40320e:	56                   	push   %esi
40320f:	e8 b4 2b 00 00       	call   0x405dc8
403214:	56                   	push   %esi
403215:	e8 ac 24 00 00       	call   0x4056c6
40321a:	85 c0                	test   %eax,%eax
40321c:	75 02                	jne    0x403220
40321e:	5e                   	pop    %esi
40321f:	c3                   	ret
403220:	56                   	push   %esi
403221:	e8 33 24 00 00       	call   0x405659
403226:	6a 00                	push   $0x0
403228:	56                   	push   %esi
403229:	ff 15 80 70 40 00    	call   *0x407080
40322f:	56                   	push   %esi
403230:	68 00 a0 42 00       	push   $0x42a000
403235:	e8 32 26 00 00       	call   0x40586c
40323a:	5e                   	pop    %esi
40323b:	c3                   	ret
40323c:	81 ec 80 01 00 00    	sub    $0x180,%esp
403242:	53                   	push   %ebx
403243:	55                   	push   %ebp
403244:	56                   	push   %esi
403245:	33 db                	xor    %ebx,%ebx
403247:	57                   	push   %edi
403248:	89 5c 24 18          	mov    %ebx,0x18(%esp)
40324c:	c7 44 24 10 30 91 40 	movl   $0x409130,0x10(%esp)
403253:	00
403254:	33 f6                	xor    %esi,%esi
403256:	c6 44 24 14 20       	movb   $0x20,0x14(%esp)
40325b:	ff 15 30 70 40 00    	call   *0x407030
403261:	68 01 80 00 00       	push   $0x8001
403266:	ff 15 b4 70 40 00    	call   *0x4070b4
40326c:	53                   	push   %ebx
40326d:	ff 15 7c 72 40 00    	call   *0x40727c
403273:	6a 08                	push   $0x8
403275:	a3 58 3f 42 00       	mov    %eax,0x423f58
40327a:	e8 09 2c 00 00       	call   0x405e88
40327f:	a3 a4 3e 42 00       	mov    %eax,0x423ea4
403284:	53                   	push   %ebx
403285:	8d 44 24 34          	lea    0x34(%esp),%eax
403289:	68 60 01 00 00       	push   $0x160
40328e:	50                   	push   %eax
40328f:	53                   	push   %ebx
403290:	68 58 f4 41 00       	push   $0x41f458
403295:	ff 15 58 71 40 00    	call   *0x407158
40329b:	68 b8 91 40 00       	push   $0x4091b8
4032a0:	68 a0 36 42 00       	push   $0x4236a0
4032a5:	e8 bc 28 00 00       	call   0x405b66
4032aa:	ff 15 b0 70 40 00    	call   *0x4070b0
4032b0:	bf 00 90 42 00       	mov    $0x429000,%edi
4032b5:	50                   	push   %eax
4032b6:	57                   	push   %edi
4032b7:	e8 aa 28 00 00       	call   0x405b66
4032bc:	53                   	push   %ebx
4032bd:	ff 15 0c 71 40 00    	call   *0x40710c
4032c3:	80 3d 00 90 42 00 22 	cmpb   $0x22,0x429000
4032ca:	a3 a0 3e 42 00       	mov    %eax,0x423ea0
4032cf:	8b c7                	mov    %edi,%eax
4032d1:	75 0a                	jne    0x4032dd
4032d3:	c6 44 24 14 22       	movb   $0x22,0x14(%esp)