40e27d:	8a 85 5f ff ff ff    	mov    -0xa1(%ebp),%al
40e283:	8b d7                	mov    %edi,%edx
40e285:	8b cb                	mov    %ebx,%ecx
40e287:	88 45 b9             	mov    %al,-0x47(%ebp)
40e28a:	e8 c2 b9 ff ff       	call   0x409c51
40e28f:	83 65 b0 00          	andl   $0x0,-0x50(%ebp)
40e293:	8d 4d ba             	lea    -0x46(%ebp),%ecx
40e296:	89 45 ac             	mov    %eax,-0x54(%ebp)
40e299:	8d 85 60 ff ff ff    	lea    -0xa0(%ebp),%eax
40e29f:	50                   	push   %eax
40e2a0:	6a 20                	push   $0x20
40e2a2:	5a                   	pop    %edx
40e2a3:	e8 b7 57 ff ff       	call   0x403a5f
40e2a8:	85 c0                	test   %eax,%eax
40e2aa:	78 27                	js     0x40e2d3
40e2ac:	8d 85 02 ff ff ff    	lea    -0xfe(%ebp),%eax
40e2b2:	50                   	push   %eax
40e2b3:	8d 45 ba             	lea    -0x46(%ebp),%eax
40e2b6:	50                   	push   %eax
40e2b7:	ff 15 54 31 43 00    	call   *0x433154
40e2bd:	85 c0                	test   %eax,%eax
40e2bf:	74 12                	je     0x40e2d3
40e2c1:	8d 45 a0             	lea    -0x60(%ebp),%eax
40e2c4:	50                   	push   %eax
40e2c5:	6a 01                	push   $0x1
40e2c7:	68 44 04 00 00       	push   $0x444
40e2cc:	56                   	push   %esi
40e2cd:	ff 15 10 33 43 00    	call   *0x433310
40e2d3:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e2d6:	5f                   	pop    %edi
40e2d7:	5e                   	pop    %esi
40e2d8:	33 cd                	xor    %ebp,%ecx
40e2da:	5b                   	pop    %ebx
40e2db:	e8 50 21 00 00       	call   0x410430
40e2e0:	c9                   	leave
40e2e1:	c3                   	ret
40e2e2:	8b ff                	mov    %edi,%edi
40e2e4:	55                   	push   %ebp
40e2e5:	8b ec                	mov    %esp,%ebp
40e2e7:	83 ec 14             	sub    $0x14,%esp
40e2ea:	a1 64 10 41 00       	mov    0x411064,%eax
40e2ef:	33 c5                	xor    %ebp,%eax
40e2f1:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e2f4:	8b 45 08             	mov    0x8(%ebp),%eax
40e2f7:	53                   	push   %ebx
40e2f8:	a3 54 1f 43 00       	mov    %eax,0x431f54
40e2fd:	8b d9                	mov    %ecx,%ebx
40e2ff:	56                   	push   %esi
40e300:	c1 e8 10             	shr    $0x10,%eax
40e303:	0f bf f0             	movswl %ax,%esi
40e306:	8d 45 ec             	lea    -0x14(%ebp),%eax
40e309:	50                   	push   %eax
40e30a:	53                   	push   %ebx
40e30b:	89 15 58 1f 43 00    	mov    %edx,0x431f58
40e311:	ff 15 f0 31 43 00    	call   *0x4331f0
40e317:	3b 75 f0             	cmp    -0x10(%ebp),%esi
40e31a:	7c 10                	jl     0x40e32c
40e31c:	3b 75 f8             	cmp    -0x8(%ebp),%esi
40e31f:	7f 0b                	jg     0x40e32c
40e321:	6a 08                	push   $0x8
40e323:	53                   	push   %ebx
40e324:	ff 15 44 32 43 00    	call   *0x433244
40e32a:	eb 45                	jmp    0x40e371
40e32c:	8b c6                	mov    %esi,%eax
40e32e:	c1 f8 1f             	sar    $0x1f,%eax
40e331:	83 e0 fe             	and    $0xfffffffe,%eax
40e334:	83 c0 28             	add    $0x28,%eax
40e337:	85 f6                	test   %esi,%esi
40e339:	79 04                	jns    0x40e33f
40e33b:	f7 de                	neg    %esi
40e33d:	eb 03                	jmp    0x40e342
40e33f:	2b 75 f8             	sub    -0x8(%ebp),%esi
40e342:	57                   	push   %edi
40e343:	c1 e6 04             	shl    $0x4,%esi
40e346:	bf ee 02 00 00       	mov    $0x2ee,%edi
40e34b:	2b fe                	sub    %esi,%edi
40e34d:	83 ff 01             	cmp    $0x1,%edi
40e350:	7d 03                	jge    0x40e355
40e352:	33 ff                	xor    %edi,%edi
40e354:	47                   	inc    %edi
40e355:	6a 00                	push   $0x0
40e357:	50                   	push   %eax
40e358:	68 00 01 00 00       	push   $0x100
40e35d:	53                   	push   %ebx
40e35e:	ff 15 10 33 43 00    	call   *0x433310
40e364:	6a 00                	push   $0x0
40e366:	57                   	push   %edi
40e367:	6a 08                	push   $0x8
40e369:	53                   	push   %ebx
40e36a:	ff 15 40 32 43 00    	call   *0x433240
40e370:	5f                   	pop    %edi
40e371:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e374:	33 c0                	xor    %eax,%eax
40e376:	5e                   	pop    %esi
40e377:	33 cd                	xor    %ebp,%ecx
40e379:	5b                   	pop    %ebx
40e37a:	e8 b1 20 00 00       	call   0x410430
40e37f:	c9                   	leave
40e380:	c2 04 00             	ret    $0x4
40e383:	8b ff                	mov    %edi,%edi
40e385:	55                   	push   %ebp
40e386:	8b ec                	mov    %esp,%ebp
40e388:	83 ec 10             	sub    $0x10,%esp
40e38b:	53                   	push   %ebx
40e38c:	56                   	push   %esi
40e38d:	8b f1                	mov    %ecx,%esi
40e38f:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e392:	57                   	push   %edi
40e393:	8b fa                	mov    %edx,%edi
40e395:	33 db                	xor    %ebx,%ebx
40e397:	89 7d f8             	mov    %edi,-0x8(%ebp)
40e39a:	8d 56 02             	lea    0x2(%esi),%edx
40e39d:	66 8b 06             	mov    (%esi),%ax
40e3a0:	83 c6 02             	add    $0x2,%esi
40e3a3:	66 3b c3             	cmp    %bx,%ax
40e3a6:	75 f5                	jne    0x40e39d
40e3a8:	2b f2                	sub    %edx,%esi
40e3aa:	6a 04                	push   $0x4
40e3ac:	d1 fe                	sar    $1,%esi
40e3ae:	58                   	pop    %eax
40e3af:	3b f0                	cmp    %eax,%esi
40e3b1:	76 07                	jbe    0x40e3ba
40e3b3:	33 c0                	xor    %eax,%eax
40e3b5:	66 89 07             	mov    %ax,(%edi)
40e3b8:	eb 58                	jmp    0x40e412
40e3ba:	8b d3                	mov    %ebx,%edx
40e3bc:	89 55 f4             	mov    %edx,-0xc(%ebp)
40e3bf:	2b c6                	sub    %esi,%eax
40e3c1:	74 1b                	je     0x40e3de
40e3c3:	8b d0                	mov    %eax,%edx
40e3c5:	b8 30 00 30 00       	mov    $0x300030,%eax
40e3ca:	8b ca                	mov    %edx,%ecx
40e3cc:	89 55 f4             	mov    %edx,-0xc(%ebp)
40e3cf:	d1 e9                	shr    $1,%ecx
40e3d1:	f3 ab                	rep stos %eax,%es:(%edi)
40e3d3:	13 c9                	adc    %ecx,%ecx
40e3d5:	66 f3 ab             	rep stos %ax,%es:(%edi)
40e3d8:	8b 7d f8             	mov    -0x8(%ebp),%edi
40e3db:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e3de:	85 f6                	test   %esi,%esi
40e3e0:	74 25                	je     0x40e407
40e3e2:	8d 04 57             	lea    (%edi,%edx,2),%eax
40e3e5:	89 45 f0             	mov    %eax,-0x10(%ebp)
40e3e8:	8b f8                	mov    %eax,%edi
40e3ea:	0f b7 04 59          	movzwl (%ecx,%ebx,2),%eax
40e3ee:	50                   	push   %eax
40e3ef:	ff 15 d8 33 43 00    	call   *0x4333d8
40e3f5:	43                   	inc    %ebx
40e3f6:	66 89 07             	mov    %ax,(%edi)
40e3f9:	8d 7f 02             	lea    0x2(%edi),%edi
40e3fc:	59                   	pop    %ecx
40e3fd:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e400:	3b de                	cmp    %esi,%ebx
40e402:	72 e6                	jb     0x40e3ea
40e404:	8b 7d f8             	mov    -0x8(%ebp),%edi
40e407:	8b 45 f4             	mov    -0xc(%ebp),%eax
40e40a:	03 c3                	add    %ebx,%eax
40e40c:	33 c9                	xor    %ecx,%ecx
40e40e:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
40e412:	5f                   	pop    %edi
40e413:	5e                   	pop    %esi
40e414:	5b                   	pop    %ebx
40e415:	c9                   	leave
40e416:	c2 04 00             	ret    $0x4
40e419:	8b ff                	mov    %edi,%edi
40e41b:	55                   	push   %ebp
40e41c:	8b ec                	mov    %esp,%ebp
40e41e:	81 ec 04 02 00 00    	sub    $0x204,%esp
40e424:	a1 64 10 41 00       	mov    0x411064,%eax
40e429:	33 c5                	xor    %ebp,%eax
40e42b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e42e:	53                   	push   %ebx
40e42f:	56                   	push   %esi
40e430:	57                   	push   %edi
40e431:	8b f9                	mov    %ecx,%edi
40e433:	33 f6                	xor    %esi,%esi
40e435:	bb bd 02 00 00       	mov    $0x2bd,%ebx
40e43a:	39 9e c0 10 41 00    	cmp    %ebx,0x4110c0(%esi)
40e440:	75 30                	jne    0x40e472
40e442:	ff b6 cc 10 41 00    	push   0x4110cc(%esi)
40e448:	8d 85 fc fd ff ff    	lea    -0x204(%ebp),%eax
40e44e:	68 1c 19 40 00       	push   $0x40191c
40e453:	68 00 01 00 00       	push   $0x100
40e458:	50                   	push   %eax
40e459:	e8 4a 55 ff ff       	call   0x4039a8
40e45e:	83 c4 10             	add    $0x10,%esp
40e461:	85 c0                	test   %eax,%eax
40e463:	78 15                	js     0x40e47a
40e465:	68 5c 15 40 00       	push   $0x40155c
40e46a:	53                   	push   %ebx
40e46b:	57                   	push   %edi
40e46c:	ff 15 10 32 43 00    	call   *0x433210
40e472:	83 c6 14             	add    $0x14,%esi
40e475:	83 fe 28             	cmp    $0x28,%esi
40e478:	72 c0                	jb     0x40e43a
40e47a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e47d:	33 c0                	xor    %eax,%eax
40e47f:	5f                   	pop    %edi
40e480:	5e                   	pop    %esi
40e481:	33 cd                	xor    %ebp,%ecx
40e483:	5b                   	pop    %ebx
40e484:	e8 a7 1f 00 00       	call   0x410430
40e489:	c9                   	leave
40e48a:	c3                   	ret
40e48b:	8b ff                	mov    %edi,%edi
40e48d:	55                   	push   %ebp
40e48e:	8b ec                	mov    %esp,%ebp
40e490:	51                   	push   %ecx
40e491:	53                   	push   %ebx
40e492:	33 db                	xor    %ebx,%ebx
40e494:	56                   	push   %esi
40e495:	43                   	inc    %ebx
40e496:	8b f1                	mov    %ecx,%esi
40e498:	57                   	push   %edi
40e499:	85 d2                	test   %edx,%edx
40e49b:	0f 85 95 00 00 00    	jne    0x40e536
40e4a1:	bf 82 00 00 00       	mov    $0x82,%edi
40e4a6:	57                   	push   %edi
40e4a7:	56                   	push   %esi
40e4a8:	ff 15 14 33 43 00    	call   *0x433314
40e4ae:	50                   	push   %eax
40e4af:	ff 15 e0 32 43 00    	call   *0x4332e0
40e4b5:	85 c0                	test   %eax,%eax
40e4b7:	74 7d                	je     0x40e536
40e4b9:	57                   	push   %edi
40e4ba:	56                   	push   %esi
40e4bb:	ff 15 14 33 43 00    	call   *0x433314
40e4c1:	33 ff                	xor    %edi,%edi
40e4c3:	85 c0                	test   %eax,%eax
40e4c5:	75 05                	jne    0x40e4cc
40e4c7:	89 7d fc             	mov    %edi,-0x4(%ebp)
40e4ca:	eb 0a                	jmp    0x40e4d6
40e4cc:	8b c8                	mov    %eax,%ecx
40e4ce:	e8 08 59 ff ff       	call   0x403ddb
40e4d3:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e4d6:	57                   	push   %edi
40e4d7:	57                   	push   %edi
40e4d8:	68 47 01 00 00       	push   $0x147
40e4dd:	68 ca 00 00 00       	push   $0xca
40e4e2:	56                   	push   %esi
40e4e3:	ff 15 18 33 43 00    	call   *0x433318
40e4e9:	81 7d fc b0 04 00 00 	cmpl   $0x4b0,-0x4(%ebp)
40e4f0:	75 04                	jne    0x40e4f6
40e4f2:	85 c0                	test   %eax,%eax
40e4f4:	74 02                	je     0x40e4f8
40e4f6:	8b df                	mov    %edi,%ebx
40e4f8:	53                   	push   %ebx
40e4f9:	68 bc 02 00 00       	push   $0x2bc
40e4fe:	56                   	push   %esi
40e4ff:	ff 15 14 33 43 00    	call   *0x433314
40e505:	50                   	push   %eax
40e506:	ff 15 14 32 43 00    	call   *0x433214
40e50c:	85 db                	test   %ebx,%ebx
40e50e:	75 09                	jne    0x40e519
40e510:	8b ce                	mov    %esi,%ecx
40e512:	e8 02 ff ff ff       	call   0x40e419
40e517:	eb 3a                	jmp    0x40e553
40e519:	53                   	push   %ebx
40e51a:	68 bd 02 00 00       	push   $0x2bd
40e51f:	56                   	push   %esi
40e520:	ff 15 14 33 43 00    	call   *0x433314
40e526:	50                   	push   %eax
40e527:	ff 15 14 32 43 00    	call   *0x433214
40e52d:	8b ce                	mov    %esi,%ecx
40e52f:	e8 e5 fe ff ff       	call   0x40e419
40e534:	eb 31                	jmp    0x40e567
40e536:	8b ce                	mov    %esi,%ecx
40e538:	e8 dc fe ff ff       	call   0x40e419
40e53d:	33 ff                	xor    %edi,%edi
40e53f:	57                   	push   %edi
40e540:	68 bc 02 00 00       	push   $0x2bc
40e545:	56                   	push   %esi
40e546:	ff 15 14 33 43 00    	call   *0x433314
40e54c:	50                   	push   %eax
40e54d:	ff 15 14 32 43 00    	call   *0x433214
40e553:	57                   	push   %edi
40e554:	68 bd 02 00 00       	push   $0x2bd
40e559:	56                   	push   %esi
40e55a:	ff 15 14 33 43 00    	call   *0x433314
40e560:	50                   	push   %eax
40e561:	ff 15 14 32 43 00    	call   *0x433214
40e567:	5f                   	pop    %edi
40e568:	5e                   	pop    %esi
40e569:	33 c0                	xor    %eax,%eax
40e56b:	c7 05 2c 13 41 00 fd 	movl   $0xfffd,0x41132c
40e572:	ff 00 00
40e575:	c7 05 30 13 41 00 21 	movl   $0x21,0x411330
40e57c:	00 00 00
40e57f:	5b                   	pop    %ebx
40e580:	c9                   	leave
40e581:	c3                   	ret
40e582:	8b ff                	mov    %edi,%edi
40e584:	55                   	push   %ebp
40e585:	8b ec                	mov    %esp,%ebp
40e587:	81 ec 14 02 00 00    	sub    $0x214,%esp
40e58d:	a1 64 10 41 00       	mov    0x411064,%eax
40e592:	33 c5                	xor    %ebp,%eax
40e594:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e597:	53                   	push   %ebx
40e598:	56                   	push   %esi
40e599:	57                   	push   %edi
40e59a:	6a 05                	push   $0x5
40e59c:	8d 45 f0             	lea    -0x10(%ebp),%eax
40e59f:	8b f1                	mov    %ecx,%esi
40e5a1:	50                   	push   %eax
40e5a2:	68 bd 02 00 00       	push   $0x2bd
40e5a7:	56                   	push   %esi
40e5a8:	ff 15 b4 32 43 00    	call   *0x4332b4
40e5ae:	8b f8                	mov    %eax,%edi
40e5b0:	6a 21                	push   $0x21
40e5b2:	5b                   	pop    %ebx
40e5b3:	85 ff                	test   %edi,%edi
40e5b5:	74 26                	je     0x40e5dd
40e5b7:	8d 85 ec fd ff ff    	lea    -0x214(%ebp),%eax
40e5bd:	50                   	push   %eax
40e5be:	8d 45 f0             	lea    -0x10(%ebp),%eax
40e5c1:	68 cc 13 40 00       	push   $0x4013cc
40e5c6:	50                   	push   %eax
40e5c7:	ff 15 e0 33 43 00    	call   *0x4333e0
40e5cd:	83 c4 0c             	add    $0xc,%esp
40e5d0:	83 f8 ff             	cmp    $0xffffffff,%eax
40e5d3:	74 08                	je     0x40e5dd
40e5d5:	8b 85 ec fd ff ff    	mov    -0x214(%ebp),%eax
40e5db:	eb 08                	jmp    0x40e5e5
40e5dd:	8b c3                	mov    %ebx,%eax
40e5df:	89 85 ec fd ff ff    	mov    %eax,-0x214(%ebp)
40e5e5:	b9 fd ff 00 00       	mov    $0xfffd,%ecx
40e5ea:	3b c3                	cmp    %ebx,%eax
40e5ec:	7c 04                	jl     0x40e5f2
40e5ee:	3b c1                	cmp    %ecx,%eax
40e5f0:	7e 08                	jle    0x40e5fa
40e5f2:	8b c3                	mov    %ebx,%eax
40e5f4:	89 85 ec fd ff ff    	mov    %eax,-0x214(%ebp)
40e5fa:	39 05 30 13 41 00    	cmp    %eax,0x411330
40e600:	75 0c                	jne    0x40e60e
40e602:	39 0d 2c 13 41 00    	cmp    %ecx,0x41132c
40e608:	0f 84 d9 00 00 00    	je     0x40e6e7
40e60e:	8b 0d 14 19 43 00    	mov    0x431914,%ecx
40e614:	ba 70 1f 43 00       	mov    $0x431f70,%edx
40e619:	e8 55 f6 ff ff       	call   0x40dc73
40e61e:	8b 95 ec fd ff ff    	mov    -0x214(%ebp),%edx
40e624:	33 c0                	xor    %eax,%eax
40e626:	51                   	push   %ecx
40e627:	8b ce                	mov    %esi,%ecx
40e629:	66 a3 c4 1f 43 00    	mov    %ax,0x431fc4
40e62f:	e8 fa f1 ff ff       	call   0x40d82e
40e634:	8b 85 ec fd ff ff    	mov    -0x214(%ebp),%eax
40e63a:	33 db                	xor    %ebx,%ebx
40e63c:	a3 30 13 41 00       	mov    %eax,0x411330
40e641:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax