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
406148:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40614b:	8b 45 d0             	mov    -0x30(%ebp),%eax
40614e:	5f                   	pop    %edi
40614f:	5e                   	pop    %esi
406150:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406157:	5b                   	pop    %ebx
406158:	c9                   	leave
406159:	c2 04 00             	ret    $0x4
40615c:	53                   	push   %ebx
40615d:	55                   	push   %ebp
40615e:	56                   	push   %esi
40615f:	8b f1                	mov    %ecx,%esi
406161:	33 ed                	xor    %ebp,%ebp
406163:	57                   	push   %edi
406164:	8b 46 08             	mov    0x8(%esi),%eax
406167:	3b c5                	cmp    %ebp,%eax
406169:	74 0d                	je     0x406178
40616b:	68 00 80 00 00       	push   $0x8000
406170:	55                   	push   %ebp
406171:	50                   	push   %eax
406172:	ff 15 98 a0 40 00    	call   *0x40a098
406178:	8b 1d 1c a1 40 00    	mov    0x40a11c,%ebx
40617e:	bf 00 10 00 00       	mov    $0x1000,%edi
406183:	6a 04                	push   $0x4
406185:	57                   	push   %edi
406186:	57                   	push   %edi
406187:	89 7e 0c             	mov    %edi,0xc(%esi)
40618a:	55                   	push   %ebp
40618b:	eb 35                	jmp    0x4061c2
40618d:	55                   	push   %ebp
40618e:	ff 76 0c             	push   0xc(%esi)
406191:	50                   	push   %eax
406192:	6a 05                	push   $0x5
406194:	ff 15 cc d7 40 00    	call   *0x40d7cc
40619a:	3b c5                	cmp    %ebp,%eax
40619c:	74 32                	je     0x4061d0
40619e:	3d 04 00 00 c0       	cmp    $0xc0000004,%eax
4061a3:	75 26                	jne    0x4061cb
4061a5:	68 00 80 00 00       	push   $0x8000
4061aa:	55                   	push   %ebp
4061ab:	ff 76 08             	push   0x8(%esi)
4061ae:	ff 15 98 a0 40 00    	call   *0x40a098
4061b4:	01 7e 0c             	add    %edi,0xc(%esi)
4061b7:	8b 46 0c             	mov    0xc(%esi),%eax
4061ba:	6a 04                	push   $0x4
4061bc:	57                   	push   %edi
4061bd:	50                   	push   %eax
4061be:	89 6e 08             	mov    %ebp,0x8(%esi)
4061c1:	55                   	push   %ebp
4061c2:	ff d3                	call   *%ebx
4061c4:	3b c5                	cmp    %ebp,%eax
4061c6:	89 46 08             	mov    %eax,0x8(%esi)
4061c9:	75 c2                	jne    0x40618d
4061cb:	83 c8 ff             	or     $0xffffffff,%eax
4061ce:	eb 03                	jmp    0x4061d3
4061d0:	6a 01                	push   $0x1
4061d2:	58                   	pop    %eax
4061d3:	5f                   	pop    %edi
4061d4:	5e                   	pop    %esi
4061d5:	5d                   	pop    %ebp
4061d6:	5b                   	pop    %ebx
4061d7:	c3                   	ret
4061d8:	55                   	push   %ebp
4061d9:	8b ec                	mov    %esp,%ebp
4061db:	81 ec 2c 01 00 00    	sub    $0x12c,%esp
4061e1:	53                   	push   %ebx
4061e2:	56                   	push   %esi
4061e3:	8b f1                	mov    %ecx,%esi
4061e5:	57                   	push   %edi
4061e6:	80 7e 04 00          	cmpb   $0x0,0x4(%esi)
4061ea:	0f 85 97 05 00 00    	jne    0x406787
4061f0:	80 7e 05 00          	cmpb   $0x0,0x5(%esi)
4061f4:	0f 85 8d 05 00 00    	jne    0x406787
4061fa:	c6 46 04 01          	movb   $0x1,0x4(%esi)
4061fe:	e8 59 ff ff ff       	call   0x40615c
406203:	83 f8 01             	cmp    $0x1,%eax
406206:	0f 85 7e 05 00 00    	jne    0x40678a
40620c:	8b 46 1c             	mov    0x1c(%esi),%eax
40620f:	33 ff                	xor    %edi,%edi
406211:	33 c9                	xor    %ecx,%ecx
406213:	89 7d dc             	mov    %edi,-0x24(%ebp)
406216:	89 4d fc             	mov    %ecx,-0x4(%ebp)
406219:	89 7d e0             	mov    %edi,-0x20(%ebp)
40621c:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40621f:	89 46 20             	mov    %eax,0x20(%esi)
406222:	8b 5e 08             	mov    0x8(%esi),%ebx
406225:	03 5d dc             	add    -0x24(%ebp),%ebx
406228:	39 7b 44             	cmp    %edi,0x44(%ebx)
40622b:	75 09                	jne    0x406236
40622d:	39 7b 04             	cmp    %edi,0x4(%ebx)
406230:	0f 84 2a 03 00 00    	je     0x406560
406236:	39 4e 1c             	cmp    %ecx,0x1c(%esi)
406239:	77 5c                	ja     0x406297
40623b:	8b f9                	mov    %ecx,%edi
40623d:	c1 e7 02             	shl    $0x2,%edi
406240:	8d 47 04             	lea    0x4(%edi),%eax
406243:	50                   	push   %eax
406244:	ff 76 18             	push   0x18(%esi)
406247:	ff 15 30 a1 40 00    	call   *0x40a130
40624d:	59                   	pop    %ecx
40624e:	89 46 18             	mov    %eax,0x18(%esi)
406251:	85 c0                	test   %eax,%eax
406253:	59                   	pop    %ecx
406254:	0f 84 14 03 00 00    	je     0x40656e
40625a:	68 50 02 00 00       	push   $0x250
40625f:	ff 15 44 a1 40 00    	call   *0x40a144
406265:	59                   	pop    %ecx
406266:	8b 4e 18             	mov    0x18(%esi),%ecx
406269:	89 04 0f             	mov    %eax,(%edi,%ecx,1)
40626c:	8b 46 18             	mov    0x18(%esi),%eax
40626f:	8b 04 07             	mov    (%edi,%eax,1),%eax
406272:	85 c0                	test   %eax,%eax
406274:	0f 84 f4 02 00 00    	je     0x40656e
40627a:	83 08 ff             	orl    $0xffffffff,(%eax)
40627d:	8b 46 18             	mov    0x18(%esi),%eax
406280:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406283:	8b 04 07             	mov    (%edi,%eax,1),%eax
406286:	83 a0 20 02 00 00 00 	andl   $0x0,0x220(%eax)
40628d:	83 a0 24 02 00 00 00 	andl   $0x0,0x224(%eax)
406294:	ff 46 1c             	incl   0x1c(%esi)
406297:	8b 46 18             	mov    0x18(%esi),%eax
40629a:	8b f9                	mov    %ecx,%edi
40629c:	c1 e7 02             	shl    $0x2,%edi
40629f:	8b 04 07             	mov    (%edi,%eax,1),%eax
4062a2:	80 a0 4c 02 00 00 00 	andb   $0x0,0x24c(%eax)
4062a9:	8b 43 30             	mov    0x30(%ebx),%eax
4062ac:	03 43 28             	add    0x28(%ebx),%eax
4062af:	8b 4b 44             	mov    0x44(%ebx),%ecx
4062b2:	89 45 f4             	mov    %eax,-0xc(%ebp)
4062b5:	8b 43 34             	mov    0x34(%ebx),%eax
4062b8:	13 43 2c             	adc    0x2c(%ebx),%eax
4062bb:	89 45 f8             	mov    %eax,-0x8(%ebp)
4062be:	8b 46 18             	mov    0x18(%esi),%eax
4062c1:	8b 04 07             	mov    (%edi,%eax,1),%eax
4062c4:	3b 08                	cmp    (%eax),%ecx
4062c6:	0f 85 52 01 00 00    	jne    0x40641e
4062cc:	8b 53 20             	mov    0x20(%ebx),%edx
4062cf:	8d 88 20 02 00 00    	lea    0x220(%eax),%ecx
4062d5:	3b 11                	cmp    (%ecx),%edx
4062d7:	0f 85 41 01 00 00    	jne    0x40641e
4062dd:	8b 53 24             	mov    0x24(%ebx),%edx
4062e0:	3b 51 04             	cmp    0x4(%ecx),%edx
4062e3:	0f 85 35 01 00 00    	jne    0x40641e
4062e9:	80 a0 4c 02 00 00 00 	andb   $0x0,0x24c(%eax)
4062f0:	8b 46 18             	mov    0x18(%esi),%eax
4062f3:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4062f6:	8b 55 f8             	mov    -0x8(%ebp),%edx
4062f9:	8b 04 07             	mov    (%edi,%eax,1),%eax
4062fc:	05 28 02 00 00       	add    $0x228,%eax
406301:	2b 08                	sub    (%eax),%ecx
406303:	1b 50 04             	sbb    0x4(%eax),%edx
406306:	89 55 ec             	mov    %edx,-0x14(%ebp)
406309:	8b 55 f4             	mov    -0xc(%ebp),%edx
40630c:	89 10                	mov    %edx,(%eax)
40630e:	8b 55 f8             	mov    -0x8(%ebp),%edx
406311:	89 50 04             	mov    %edx,0x4(%eax)
406314:	8b 46 18             	mov    0x18(%esi),%eax
406317:	8b 55 ec             	mov    -0x14(%ebp),%edx
40631a:	8b 04 07             	mov    (%edi,%eax,1),%eax
40631d:	89 88 30 02 00 00    	mov    %ecx,0x230(%eax)
406323:	89 90 34 02 00 00    	mov    %edx,0x234(%eax)
406329:	8b 46 18             	mov    0x18(%esi),%eax
40632c:	8b 04 07             	mov    (%edi,%eax,1),%eax
40632f:	8b 90 10 02 00 00    	mov    0x210(%eax),%edx
406335:	3b 53 68             	cmp    0x68(%ebx),%edx
406338:	74 16                	je     0x406350
40633a:	80 88 4c 02 00 00 08 	orb    $0x8,0x24c(%eax)
406341:	8b 46 18             	mov    0x18(%esi),%eax
406344:	8b 53 68             	mov    0x68(%ebx),%edx
406347:	8b 04 07             	mov    (%edi,%eax,1),%eax
40634a:	89 90 10 02 00 00    	mov    %edx,0x210(%eax)
406350:	8b 46 18             	mov    0x18(%esi),%eax
406353:	8b 53 40             	mov    0x40(%ebx),%edx
406356:	8b 04 07             	mov    (%edi,%eax,1),%eax
406359:	05 48 02 00 00       	add    $0x248,%eax