40511b:	8b 45 f4             	mov    -0xc(%ebp),%eax
40511e:	81 78 08 39 fe ff ff 	cmpl   $0xfffffe39,0x8(%eax)
405125:	75 28                	jne    0x40514f
405127:	83 78 0c 02          	cmpl   $0x2,0xc(%eax)
40512b:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40512e:	8b 40 5c             	mov    0x5c(%eax),%eax
405131:	75 0f                	jne    0x405142
405133:	69 c0 18 08 00 00    	imul   $0x818,%eax,%eax
405139:	8d 44 08 08          	lea    0x8(%eax,%ecx,1),%eax
40513d:	83 08 20             	orl    $0x20,(%eax)
405140:	eb 0d                	jmp    0x40514f
405142:	69 c0 18 08 00 00    	imul   $0x818,%eax,%eax
405148:	8d 44 08 08          	lea    0x8(%eax,%ecx,1),%eax
40514c:	83 20 df             	andl   $0xffffffdf,(%eax)
40514f:	81 7d 0c 11 01 00 00 	cmpl   $0x111,0xc(%ebp)
405156:	75 6f                	jne    0x4051c7
405158:	66 81 7d 10 f9 03    	cmpw   $0x3f9,0x10(%ebp)
40515e:	0f 85 4b 02 00 00    	jne    0x4053af
405164:	8b 45 10             	mov    0x10(%ebp),%eax
405167:	c1 e8 10             	shr    $0x10,%eax
40516a:	66 3d 01 00          	cmp    $0x1,%ax
40516e:	0f 85 3b 02 00 00    	jne    0x4053af
405174:	53                   	push   %ebx
405175:	53                   	push   %ebx
405176:	68 47 01 00 00       	push   $0x147
40517b:	ff 75 f8             	push   -0x8(%ebp)
40517e:	ff d6                	call   *%esi
405180:	83 f8 ff             	cmp    $0xffffffff,%eax
405183:	0f 84 26 02 00 00    	je     0x4053af
405189:	53                   	push   %ebx
40518a:	50                   	push   %eax
40518b:	68 50 01 00 00       	push   $0x150
405190:	ff 75 f8             	push   -0x8(%ebp)
405193:	ff d6                	call   *%esi
405195:	8b f8                	mov    %eax,%edi
405197:	83 ff ff             	cmp    $0xffffffff,%edi
40519a:	74 08                	je     0x4051a4
40519c:	8b 45 ec             	mov    -0x14(%ebp),%eax
40519f:	39 1c b8             	cmp    %ebx,(%eax,%edi,4)
4051a2:	75 03                	jne    0x4051a7
4051a4:	6a 20                	push   $0x20
4051a6:	5f                   	pop    %edi
4051a7:	57                   	push   %edi
4051a8:	e8 ec c0 ff ff       	call   0x401299
4051ad:	57                   	push   %edi
4051ae:	53                   	push   %ebx
4051af:	68 20 04 00 00       	push   $0x420
4051b4:	ff 75 08             	push   0x8(%ebp)
4051b7:	ff d6                	call   *%esi
4051b9:	83 4d 10 ff          	orl    $0xffffffff,0x10(%ebp)
4051bd:	89 5d 14             	mov    %ebx,0x14(%ebp)
4051c0:	c7 45 0c 0f 04 00 00 	movl   $0x40f,0xc(%ebp)
4051c7:	b8 00 02 00 00       	mov    $0x200,%eax
4051cc:	39 45 0c             	cmp    %eax,0xc(%ebp)
4051cf:	75 08                	jne    0x4051d9
4051d1:	53                   	push   %ebx
4051d2:	53                   	push   %ebx
4051d3:	50                   	push   %eax
4051d4:	ff 75 fc             	push   -0x4(%ebp)
4051d7:	ff d6                	call   *%esi
4051d9:	81 7d 0c 0b 04 00 00 	cmpl   $0x40b,0xc(%ebp)
4051e0:	75 32                	jne    0x405214
4051e2:	a1 0c 37 42 00       	mov    0x42370c,%eax
4051e7:	3b c3                	cmp    %ebx,%eax
4051e9:	74 07                	je     0x4051f2
4051eb:	50                   	push   %eax
4051ec:	ff 15 40 80 40 00    	call   *0x408040
4051f2:	a1 20 37 42 00       	mov    0x423720,%eax
4051f7:	3b c3                	cmp    %ebx,%eax
4051f9:	74 07                	je     0x405202
4051fb:	50                   	push   %eax
4051fc:	ff 15 28 81 40 00    	call   *0x408128
405202:	89 1d 0c 37 42 00    	mov    %ebx,0x42370c
405208:	89 1d 20 37 42 00    	mov    %ebx,0x423720
40520e:	89 1d c0 a2 42 00    	mov    %ebx,0x42a2c0
405214:	81 7d 0c 0f 04 00 00 	cmpl   $0x40f,0xc(%ebp)
40521b:	0f 85 50 01 00 00    	jne    0x405371
405221:	53                   	push   %ebx
405222:	53                   	push   %ebx
405223:	e8 c7 bf ff ff       	call   0x4011ef
405228:	8b 45 10             	mov    0x10(%ebp),%eax
40522b:	3b c3                	cmp    %ebx,%eax
40522d:	74 0e                	je     0x40523d
40522f:	83 f8 ff             	cmp    $0xffffffff,%eax
405232:	74 01                	je     0x405235
405234:	48                   	dec    %eax
405235:	50                   	push   %eax
405236:	6a 08                	push   $0x8
405238:	e8 5d fb ff ff       	call   0x404d9a
40523d:	39 5d 14             	cmp    %ebx,0x14(%ebp)
405240:	74 3f                	je     0x405281
405242:	ff 35 20 37 42 00    	push   0x423720
405248:	e8 95 c0 ff ff       	call   0x4012e2
40524d:	8b f8                	mov    %eax,%edi
40524f:	57                   	push   %edi
405250:	e8 44 c0 ff ff       	call   0x401299
405255:	33 c0                	xor    %eax,%eax
405257:	33 c9                	xor    %ecx,%ecx
405259:	3b fb                	cmp    %ebx,%edi
40525b:	7e 0e                	jle    0x40526b
40525d:	8b 55 ec             	mov    -0x14(%ebp),%edx
405260:	39 1c 82             	cmp    %ebx,(%edx,%eax,4)
405263:	74 01                	je     0x405266
405265:	41                   	inc    %ecx
405266:	40                   	inc    %eax
405267:	3b c7                	cmp    %edi,%eax
405269:	7c f2                	jl     0x40525d
40526b:	53                   	push   %ebx
40526c:	51                   	push   %ecx
40526d:	68 4e 01 00 00       	push   $0x14e
405272:	ff 75 f8             	push   -0x8(%ebp)
405275:	ff d6                	call   *%esi
405277:	89 7d 14             	mov    %edi,0x14(%ebp)
40527a:	c7 45 0c 20 04 00 00 	movl   $0x420,0xc(%ebp)
405281:	53                   	push   %ebx
405282:	53                   	push   %ebx
405283:	e8 67 bf ff ff       	call   0x4011ef
405288:	a1 20 37 42 00       	mov    0x423720,%eax
40528d:	39 1d 8c a2 42 00    	cmp    %ebx,0x42a28c
405293:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405296:	a1 88 a2 42 00       	mov    0x42a288,%eax
40529b:	c7 45 c8 30 f0 00 00 	movl   $0xf030,-0x38(%ebp)
4052a2:	89 5d f0             	mov    %ebx,-0x10(%ebp)
4052a5:	0f 8e 9c 00 00 00    	jle    0x405347
4052ab:	8d 78 08             	lea    0x8(%eax),%edi
4052ae:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4052b1:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4052b4:	8b 04 88             	mov    (%eax,%ecx,4),%eax
4052b7:	3b c3                	cmp    %ebx,%eax
4052b9:	74 74                	je     0x40532f
4052bb:	8b 0f                	mov    (%edi),%ecx
4052bd:	89 45 c0             	mov    %eax,-0x40(%ebp)
4052c0:	f6 c5 01             	test   $0x1,%ch
4052c3:	c7 45 bc 08 00 00 00 	movl   $0x8,-0x44(%ebp)
4052ca:	74 11                	je     0x4052dd
4052cc:	8d 47 10             	lea    0x10(%edi),%eax
4052cf:	c7 45 bc 09 00 00 00 	movl   $0x9,-0x44(%ebp)
4052d6:	89 45 cc             	mov    %eax,-0x34(%ebp)
4052d9:	80 67 01 fe          	andb   $0xfe,0x1(%edi)
4052dd:	f6 c1 40             	test   $0x40,%cl
4052e0:	74 05                	je     0x4052e7
4052e2:	6a 03                	push   $0x3
4052e4:	58                   	pop    %eax
4052e5:	eb 0e                	jmp    0x4052f5
4052e7:	8b c1                	mov    %ecx,%eax
4052e9:	83 e0 01             	and    $0x1,%eax
4052ec:	40                   	inc    %eax
4052ed:	f6 c1 10             	test   $0x10,%cl
4052f0:	74 03                	je     0x4052f5
4052f2:	83 c0 03             	add    $0x3,%eax
4052f5:	8b d1                	mov    %ecx,%edx
4052f7:	ff 75 c0             	push   -0x40(%ebp)
4052fa:	c1 e0 0b             	shl    $0xb,%eax
4052fd:	83 e2 08             	and    $0x8,%edx
405300:	0b c2                	or     %edx,%eax
405302:	8b d1                	mov    %ecx,%edx
405304:	c1 f9 05             	sar    $0x5,%ecx
405307:	03 c0                	add    %eax,%eax
405309:	83 e2 20             	and    $0x20,%edx
40530c:	83 e1 01             	and    $0x1,%ecx
40530f:	0b c2                	or     %edx,%eax
405311:	41                   	inc    %ecx
405312:	89 45 c4             	mov    %eax,-0x3c(%ebp)
405315:	51                   	push   %ecx
405316:	68 02 11 00 00       	push   $0x1102
40531b:	ff 75 fc             	push   -0x4(%ebp)
40531e:	ff d6                	call   *%esi
405320:	8d 45 bc             	lea    -0x44(%ebp),%eax
405323:	50                   	push   %eax
405324:	53                   	push   %ebx
405325:	68 3f 11 00 00       	push   $0x113f
40532a:	ff 75 fc             	push   -0x4(%ebp)
40532d:	ff d6                	call   *%esi
40532f:	ff 45 f0             	incl   -0x10(%ebp)
405332:	81 c7 18 08 00 00    	add    $0x818,%edi
405338:	8b 45 f0             	mov    -0x10(%ebp),%eax
40533b:	3b 05 8c a2 42 00    	cmp    0x42a28c,%eax
405341:	0f 8c 67 ff ff ff    	jl     0x4052ae
405347:	6a 01                	push   $0x1
405349:	53                   	push   %ebx
40534a:	ff 75 fc             	push   -0x4(%ebp)
40534d:	ff 15 14 82 40 00    	call   *0x408214
405353:	a1 1c 92 42 00       	mov    0x42921c,%eax
405358:	39 58 10             	cmp    %ebx,0x10(%eax)
40535b:	74 14                	je     0x405371
40535d:	6a 05                	push   $0x5
40535f:	e8 89 f9 ff ff       	call   0x404ced
405364:	50                   	push   %eax
405365:	6a fb                	push   $0xfffffffb
405367:	68 ff 03 00 00       	push   $0x3ff
40536c:	e8 64 f9 ff ff       	call   0x404cd5
405371:	81 7d 0c 20 04 00 00 	cmpl   $0x420,0xc(%ebp)
405378:	75 35                	jne    0x4053af
40537a:	f6 05 5d a2 42 00 01 	testb  $0x1,0x42a25d
405381:	74 2c                	je     0x4053af
405383:	33 c0                	xor    %eax,%eax
405385:	83 7d 14 20          	cmpl   $0x20,0x14(%ebp)
405389:	8b 35 68 82 40 00    	mov    0x408268,%esi
40538f:	0f 94 c0             	sete   %al
405392:	c1 e0 03             	shl    $0x3,%eax
405395:	8b f8                	mov    %eax,%edi
405397:	57                   	push   %edi
405398:	ff 75 fc             	push   -0x4(%ebp)
40539b:	ff d6                	call   *%esi
40539d:	57                   	push   %edi
40539e:	68 fe 03 00 00       	push   $0x3fe
4053a3:	ff 75 08             	push   0x8(%ebp)
4053a6:	ff 15 e4 81 40 00    	call   *0x4081e4
4053ac:	50                   	push   %eax
4053ad:	ff d6                	call   *%esi
4053af:	ff 75 14             	push   0x14(%ebp)
4053b2:	ff 75 10             	push   0x10(%ebp)
4053b5:	ff 75 0c             	push   0xc(%ebp)
4053b8:	e8 09 f0 ff ff       	call   0x4043c6
4053bd:	5f                   	pop    %edi
4053be:	5e                   	pop    %esi
4053bf:	5b                   	pop    %ebx
4053c0:	c9                   	leave
4053c1:	c2 10 00             	ret    $0x10
4053c4:	55                   	push   %ebp
4053c5:	8b ec                	mov    %esp,%ebp
4053c7:	53                   	push   %ebx
4053c8:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4053cb:	81 fb 02 01 00 00    	cmp    $0x102,%ebx
4053d1:	57                   	push   %edi
4053d2:	75 14                	jne    0x4053e8
4053d4:	83 7d 10 20          	cmpl   $0x20,0x10(%ebp)
4053d8:	75 59                	jne    0x405433
4053da:	68 13 04 00 00       	push   $0x413
4053df:	e8 c7 ef ff ff       	call   0x4043ab
4053e4:	33 c0                	xor    %eax,%eax
4053e6:	eb 62                	jmp    0x40544a
4053e8:	81 fb 00 02 00 00    	cmp    $0x200,%ebx
4053ee:	75 20                	jne    0x405410
4053f0:	ff 75 08             	push   0x8(%ebp)
4053f3:	ff 15 c8 81 40 00    	call   *0x4081c8
4053f9:	85 c0                	test   %eax,%eax
4053fb:	74 36                	je     0x405433
4053fd:	6a 01                	push   $0x1
4053ff:	ff 75 08             	push   0x8(%ebp)
405402:	e8 13 f9 ff ff       	call   0x404d1a
405407:	8b f8                	mov    %eax,%edi
405409:	bb 19 04 00 00       	mov    $0x419,%ebx
40540e:	eb 03                	jmp    0x405413
405410:	8b 7d 14             	mov    0x14(%ebp),%edi
405413:	81 fb 19 04 00 00    	cmp    $0x419,%ebx
405419:	75 1b                	jne    0x405436
40541b:	39 3d 14 37 42 00    	cmp    %edi,0x423714
405421:	74 13                	je     0x405436
405423:	57                   	push   %edi
405424:	6a 06                	push   $0x6
405426:	89 3d 14 37 42 00    	mov    %edi,0x423714
40542c:	e8 69 f9 ff ff       	call   0x404d9a
405431:	eb 03                	jmp    0x405436
405433:	8b 7d 14             	mov    0x14(%ebp),%edi
405436:	57                   	push   %edi
405437:	ff 75 10             	push   0x10(%ebp)
40543a:	53                   	push   %ebx
40543b:	ff 75 08             	push   0x8(%ebp)
40543e:	ff 35 1c 37 42 00    	push   0x42371c
405444:	ff 15 c4 81 40 00    	call   *0x4081c4
40544a:	5f                   	pop    %edi
40544b:	5b                   	pop    %ebx
40544c:	5d                   	pop    %ebp
40544d:	c2 10 00             	ret    $0x10
405450:	55                   	push   %ebp
405451:	8b ec                	mov    %esp,%ebp
405453:	83 ec 30             	sub    $0x30,%esp
405456:	a1 24 92 42 00       	mov    0x429224,%eax
40545b:	53                   	push   %ebx
40545c:	56                   	push   %esi
40545d:	57                   	push   %edi
40545e:	33 ff                	xor    %edi,%edi
405460:	89 45 fc             	mov    %eax,-0x4(%ebp)
405463:	3b c7                	cmp    %edi,%eax
405465:	0f 84 b1 00 00 00    	je     0x40551c
40546b:	8b 1d 14 a3 42 00    	mov    0x42a314,%ebx
405471:	be 08 27 42 00       	mov    $0x422708,%esi
405476:	89 5d f8             	mov    %ebx,-0x8(%ebp)
405479:	83 e3 01             	and    $0x1,%ebx
40547c:	75 09                	jne    0x405487
40547e:	ff 75 08             	push   0x8(%ebp)
405481:	56                   	push   %esi
405482:	e8 83 0f 00 00       	call   0x40640a
405487:	56                   	push   %esi
405488:	e8 71 0f 00 00       	call   0x4063fe
40548d:	39 7d 0c             	cmp    %edi,0xc(%ebp)
405490:	89 45 08             	mov    %eax,0x8(%ebp)
405493:	74 1b                	je     0x4054b0
405495:	ff 75 0c             	push   0xc(%ebp)
405498:	e8 61 0f 00 00       	call   0x4063fe
40549d:	03 45 08             	add    0x8(%ebp),%eax
4054a0:	3d 00 10 00 00       	cmp    $0x1000,%eax
4054a5:	73 75                	jae    0x40551c
4054a7:	ff 75 0c             	push   0xc(%ebp)
4054aa:	56                   	push   %esi
4054ab:	e8 54 0f 00 00       	call   0x406404
4054b0:	f6 45 f8 04          	testb  $0x4,-0x8(%ebp)
4054b4:	75 0d                	jne    0x4054c3
4054b6:	56                   	push   %esi
4054b7:	ff 35 08 92 42 00    	push   0x429208
4054bd:	ff 15 5c 82 40 00    	call   *0x40825c
4054c3:	f6 45 f8 02          	testb  $0x2,-0x8(%ebp)
4054c7:	75 44                	jne    0x40550d
4054c9:	57                   	push   %edi
4054ca:	57                   	push   %edi
4054cb:	68 04 10 00 00       	push   $0x1004
4054d0:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4054d3:	ff 75 fc             	push   -0x4(%ebp)
4054d6:	8b 35 18 82 40 00    	mov    0x408218,%esi
4054dc:	c7 45 d0 01 00 00 00 	movl   $0x1,-0x30(%ebp)
4054e3:	ff d6                	call   *%esi
4054e5:	2b c3                	sub    %ebx,%eax
4054e7:	89 7d d8             	mov    %edi,-0x28(%ebp)
4054ea:	89 45 d4             	mov    %eax,-0x2c(%ebp)
4054ed:	8d 45 d0             	lea    -0x30(%ebp),%eax
4054f0:	50                   	push   %eax
4054f1:	b8 4d 10 00 00       	mov    $0x104d,%eax
4054f6:	2b c3                	sub    %ebx,%eax
4054f8:	57                   	push   %edi
4054f9:	50                   	push   %eax
4054fa:	ff 75 fc             	push   -0x4(%ebp)
4054fd:	ff d6                	call   *%esi
4054ff:	57                   	push   %edi
405500:	ff 75 d4             	push   -0x2c(%ebp)
405503:	68 13 10 00 00       	push   $0x1013
405508:	ff 75 fc             	push   -0x4(%ebp)
40550b:	ff d6                	call   *%esi
40550d:	3b df                	cmp    %edi,%ebx
40550f:	74 0b                	je     0x40551c
405511:	8b 45 08             	mov    0x8(%ebp),%eax
405514:	66 89 3c 45 08 27 42 	mov    %di,0x422708(,%eax,2)
40551b:	00
40551c:	5f                   	pop    %edi
40551d:	5e                   	pop    %esi
40551e:	5b                   	pop    %ebx
40551f:	c9                   	leave
405520:	c2 08 00             	ret    $0x8
405523:	56                   	push   %esi
405524:	8b 35 88 a2 42 00    	mov    0x42a288,%esi
40552a:	57                   	push   %edi
40552b:	8b 3d 8c a2 42 00    	mov    0x42a28c,%edi
405531:	6a 00                	push   $0x0
405533:	ff 15 a0 82 40 00    	call   *0x4082a0
405539:	09 05 18 a3 42 00    	or     %eax,0x42a318
40553f:	6a 00                	push   $0x0
405541:	e8 65 ee ff ff       	call   0x4043ab
405546:	85 ff                	test   %edi,%edi
405548:	74 2b                	je     0x405575
40554a:	83 c6 0c             	add    $0xc,%esi