40c3d4:	0f 83 8d 7a 06 00    	jae    0x473e67
40c3da:	03 c0                	add    %eax,%eax
40c3dc:	57                   	push   %edi
40c3dd:	50                   	push   %eax
40c3de:	89 46 08             	mov    %eax,0x8(%esi)
40c3e1:	e8 84 23 01 00       	call   0x41e76a
40c3e6:	50                   	push   %eax
40c3e7:	89 46 08             	mov    %eax,0x8(%esi)
40c3ea:	e8 fb 30 01 00       	call   0x41f4ea
40c3ef:	83 3e 00             	cmpl   $0x0,(%esi)
40c3f2:	59                   	pop    %ecx
40c3f3:	8b f8                	mov    %eax,%edi
40c3f5:	74 17                	je     0x40c40e
40c3f7:	8b 4e 04             	mov    0x4(%esi),%ecx
40c3fa:	41                   	inc    %ecx
40c3fb:	51                   	push   %ecx
40c3fc:	ff 36                	push   (%esi)
40c3fe:	57                   	push   %edi
40c3ff:	e8 7c 2a 01 00       	call   0x41ee80
40c404:	ff 36                	push   (%esi)
40c406:	e8 53 31 01 00       	call   0x41f55e
40c40b:	83 c4 10             	add    $0x10,%esp
40c40e:	89 3e                	mov    %edi,(%esi)
40c410:	5f                   	pop    %edi
40c411:	eb b7                	jmp    0x40c3ca
40c413:	55                   	push   %ebp
40c414:	8b ec                	mov    %esp,%ebp
40c416:	51                   	push   %ecx
40c417:	51                   	push   %ecx
40c418:	53                   	push   %ebx
40c419:	56                   	push   %esi
40c41a:	57                   	push   %edi
40c41b:	8b 7d 14             	mov    0x14(%ebp),%edi
40c41e:	8b cf                	mov    %edi,%ecx
40c420:	e8 a9 f8 ff ff       	call   0x40bcce
40c425:	8b 75 0c             	mov    0xc(%ebp),%esi
40c428:	8b 55 08             	mov    0x8(%ebp),%edx
40c42b:	8b 0e                	mov    (%esi),%ecx
40c42d:	6a 30                	push   $0x30
40c42f:	58                   	pop    %eax
40c430:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40c433:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c436:	66 39 04 4a          	cmp    %ax,(%edx,%ecx,2)
40c43a:	0f 84 f3 00 00 00    	je     0x40c533
40c440:	6a 17                	push   $0x17
40c442:	c6 45 17 00          	movb   $0x0,0x17(%ebp)
40c446:	5b                   	pop    %ebx
40c447:	8b 06                	mov    (%esi),%eax
40c449:	0f b7 04 42          	movzwl (%edx,%eax,2),%eax
40c44d:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c450:	0f b7 c0             	movzwl %ax,%eax
40c453:	83 f8 2e             	cmp    $0x2e,%eax
40c456:	0f 84 22 01 00 00    	je     0x40c57e
40c45c:	83 f8 2b             	cmp    $0x2b,%eax
40c45f:	0f 84 87 75 06 00    	je     0x4739ec
40c465:	83 f8 2d             	cmp    $0x2d,%eax
40c468:	0f 84 7e 75 06 00    	je     0x4739ec
40c46e:	83 f8 2f             	cmp    $0x2f,%eax
40c471:	7e 41                	jle    0x40c4b4
40c473:	83 f8 39             	cmp    $0x39,%eax
40c476:	7f 2a                	jg     0x40c4a2
40c478:	83 e3 ef             	and    $0xffffffef,%ebx
40c47b:	83 cb 20             	or     $0x20,%ebx
40c47e:	8a 45 17             	mov    0x17(%ebp),%al
40c481:	f6 c3 20             	test   $0x20,%bl
40c484:	74 4f                	je     0x40c4d5
40c486:	8b 06                	mov    (%esi),%eax
40c488:	0f b7 0c 42          	movzwl (%edx,%eax,2),%ecx
40c48c:	40                   	inc    %eax
40c48d:	51                   	push   %ecx
40c48e:	8b cf                	mov    %edi,%ecx
40c490:	89 06                	mov    %eax,(%esi)
40c492:	e8 02 03 00 00       	call   0x40c799
40c497:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40c49a:	8b 55 08             	mov    0x8(%ebp),%edx
40c49d:	83 e3 df             	and    $0xffffffdf,%ebx
40c4a0:	eb a5                	jmp    0x40c447
40c4a2:	83 f8 45             	cmp    $0x45,%eax
40c4a5:	0f 84 57 01 00 00    	je     0x40c602
40c4ab:	83 f8 65             	cmp    $0x65,%eax
40c4ae:	0f 84 4e 01 00 00    	je     0x40c602
40c4b4:	83 e0 df             	and    $0xffffffdf,%eax
40c4b7:	83 f8 41             	cmp    $0x41,%eax
40c4ba:	7d 70                	jge    0x40c52c
40c4bc:	66 83 7d fc 5f       	cmpw   $0x5f,-0x4(%ebp)
40c4c1:	75 bb                	jne    0x40c47e
40c4c3:	8a 45 17             	mov    0x17(%ebp),%al
40c4c6:	f7 c3 fd ff ff ff    	test   $0xfffffffd,%ebx
40c4cc:	74 b3                	je     0x40c481
40c4ce:	83 cb 10             	or     $0x10,%ebx
40c4d1:	89 0e                	mov    %ecx,(%esi)
40c4d3:	eb ac                	jmp    0x40c481
40c4d5:	f6 c3 10             	test   $0x10,%bl
40c4d8:	0f 85 40 01 00 00    	jne    0x40c61e
40c4de:	84 c0                	test   %al,%al
40c4e0:	0f 85 f1 00 00 00    	jne    0x40c5d7
40c4e6:	ff 37                	push   (%edi)
40c4e8:	e8 3d 51 01 00       	call   0x42162a
40c4ed:	59                   	pop    %ecx
40c4ee:	33 c9                	xor    %ecx,%ecx
40c4f0:	66 83 7d 18 4a       	cmpw   $0x4a,0x18(%ebp)
40c4f5:	8b f8                	mov    %eax,%edi
40c4f7:	8b da                	mov    %edx,%ebx
40c4f9:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40c4fe:	74 77                	je     0x40c577
40c500:	3b d9                	cmp    %ecx,%ebx
40c502:	0f 8f 1d 01 00 00    	jg     0x40c625
40c508:	7c 08                	jl     0x40c512
40c50a:	3b f8                	cmp    %eax,%edi
40c50c:	0f 87 13 01 00 00    	ja     0x40c625
40c512:	6a 05                	push   $0x5
40c514:	8b 75 10             	mov    0x10(%ebp),%esi
40c517:	8b ce                	mov    %esi,%ecx
40c519:	e8 de f6 ff ff       	call   0x40bbfc
40c51e:	89 3e                	mov    %edi,(%esi)
40c520:	89 5e 04             	mov    %ebx,0x4(%esi)
40c523:	b0 01                	mov    $0x1,%al
40c525:	5f                   	pop    %edi
40c526:	5e                   	pop    %esi
40c527:	5b                   	pop    %ebx
40c528:	c9                   	leave
40c529:	c2 14 00             	ret    $0x14
40c52c:	83 f8 5a             	cmp    $0x5a,%eax
40c52f:	7f 8b                	jg     0x40c4bc
40c531:	eb 90                	jmp    0x40c4c3
40c533:	0f b7 44 4a 02       	movzwl 0x2(%edx,%ecx,2),%eax
40c538:	83 f8 78             	cmp    $0x78,%eax
40c53b:	74 09                	je     0x40c546
40c53d:	83 f8 58             	cmp    $0x58,%eax
40c540:	0f 85 fa fe ff ff    	jne    0x40c440
40c546:	8b 5d 14             	mov    0x14(%ebp),%ebx
40c549:	8d 41 02             	lea    0x2(%ecx),%eax
40c54c:	89 06                	mov    %eax,(%esi)
40c54e:	33 ff                	xor    %edi,%edi
40c550:	8b 16                	mov    (%esi),%edx
40c552:	8b 45 08             	mov    0x8(%ebp),%eax
40c555:	6a 39                	push   $0x39
40c557:	0f b7 04 50          	movzwl (%eax,%edx,2),%eax
40c55b:	59                   	pop    %ecx
40c55c:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
40c560:	72 2e                	jb     0x40c590
40c562:	66 3b c1             	cmp    %cx,%ax
40c565:	77 29                	ja     0x40c590
40c567:	50                   	push   %eax
40c568:	8d 42 01             	lea    0x1(%edx),%eax
40c56b:	8b cb                	mov    %ebx,%ecx
40c56d:	89 06                	mov    %eax,(%esi)
40c56f:	e8 25 02 00 00       	call   0x40c799
40c574:	47                   	inc    %edi
40c575:	eb d9                	jmp    0x40c550
40c577:	b8 00 00 00 80       	mov    $0x80000000,%eax
40c57c:	eb 82                	jmp    0x40c500
40c57e:	f6 c3 02             	test   $0x2,%bl
40c581:	74 03                	je     0x40c586
40c583:	6a 25                	push   $0x25
40c585:	5b                   	pop    %ebx
40c586:	b0 01                	mov    $0x1,%al
40c588:	88 45 17             	mov    %al,0x17(%ebp)
40c58b:	e9 f1 fe ff ff       	jmp    0x40c481
40c590:	83 f8 61             	cmp    $0x61,%eax
40c593:	0f 83 37 74 06 00    	jae    0x4739d0
40c599:	6a 41                	push   $0x41
40c59b:	59                   	pop    %ecx
40c59c:	66 3b c1             	cmp    %cx,%ax
40c59f:	0f 83 39 74 06 00    	jae    0x4739de
40c5a5:	8b 0b                	mov    (%ebx),%ecx
40c5a7:	6a 10                	push   $0x10
40c5a9:	8d 55 f8             	lea    -0x8(%ebp),%edx
40c5ac:	e8 a0 fe 00 00       	call   0x41c451
40c5b1:	59                   	pop    %ecx
40c5b2:	84 c0                	test   %al,%al
40c5b4:	74 68                	je     0x40c61e
40c5b6:	8b 75 10             	mov    0x10(%ebp),%esi
40c5b9:	8b ce                	mov    %esi,%ecx
40c5bb:	83 ff 08             	cmp    $0x8,%edi
40c5be:	7f 55                	jg     0x40c615
40c5c0:	6a 05                	push   $0x5
40c5c2:	e8 35 f6 ff ff       	call   0x40bbfc
40c5c7:	8b 45 f8             	mov    -0x8(%ebp),%eax
40c5ca:	89 06                	mov    %eax,(%esi)
40c5cc:	8b 45 fc             	mov    -0x4(%ebp),%eax
40c5cf:	89 46 04             	mov    %eax,0x4(%esi)
40c5d2:	e9 4c ff ff ff       	jmp    0x40c523
40c5d7:	ba b0 da 49 00       	mov    $0x49dab0,%edx
40c5dc:	8b cf                	mov    %edi,%ecx
40c5de:	e8 4c 26 01 00       	call   0x41ec2f
40c5e3:	84 c0                	test   %al,%al
40c5e5:	75 32                	jne    0x40c619
40c5e7:	8b 75 10             	mov    0x10(%ebp),%esi
40c5ea:	6a 20                	push   $0x20
40c5ec:	8b ce                	mov    %esi,%ecx
40c5ee:	e8 09 f6 ff ff       	call   0x40bbfc
40c5f3:	ff 37                	push   (%edi)
40c5f5:	e8 41 5a 01 00       	call   0x42203b
40c5fa:	dd 1e                	fstpl  (%esi)
40c5fc:	59                   	pop    %ecx
40c5fd:	e9 21 ff ff ff       	jmp    0x40c523
40c602:	8b c3                	mov    %ebx,%eax
40c604:	24 14                	and    $0x14,%al
40c606:	3c 04                	cmp    $0x4,%al
40c608:	0f 85 78 ff ff ff    	jne    0x40c586
40c60e:	6a 39                	push   $0x39
40c610:	e9 70 ff ff ff       	jmp    0x40c585
40c615:	6a 10                	push   $0x10
40c617:	eb a9                	jmp    0x40c5c2
40c619:	8b 45 0c             	mov    0xc(%ebp),%eax
40c61c:	89 06                	mov    %eax,(%esi)
40c61e:	32 c0                	xor    %al,%al
40c620:	e9 00 ff ff ff       	jmp    0x40c525
40c625:	6a 10                	push   $0x10
40c627:	e9 e8 fe ff ff       	jmp    0x40c514
40c62c:	55                   	push   %ebp
40c62d:	8b ec                	mov    %esp,%ebp
40c62f:	51                   	push   %ecx
40c630:	8b 4d 14             	mov    0x14(%ebp),%ecx
40c633:	53                   	push   %ebx
40c634:	56                   	push   %esi
40c635:	57                   	push   %edi
40c636:	e8 93 f6 ff ff       	call   0x40bcce
40c63b:	8b 75 10             	mov    0x10(%ebp),%esi
40c63e:	8b 7d 0c             	mov    0xc(%ebp),%edi
40c641:	8b 1e                	mov    (%esi),%ebx
40c643:	33 c9                	xor    %ecx,%ecx
40c645:	0f b7 14 5f          	movzwl (%edi,%ebx,2),%edx
40c649:	8d 43 01             	lea    0x1(%ebx),%eax
40c64c:	89 55 10             	mov    %edx,0x10(%ebp)
40c64f:	89 06                	mov    %eax,(%esi)
40c651:	66 39 0c 47          	cmp    %cx,(%edi,%eax,2)
40c655:	0f 84 a2 73 06 00    	je     0x4739fd
40c65b:	8b 0e                	mov    (%esi),%ecx
40c65d:	0f b7 04 4f          	movzwl (%edi,%ecx,2),%eax
40c661:	66 3b c2             	cmp    %dx,%ax
40c664:	74 1e                	je     0x40c684
40c666:	8b 4d 14             	mov    0x14(%ebp),%ecx
40c669:	50                   	push   %eax
40c66a:	e8 2a 01 00 00       	call   0x40c799
40c66f:	ff 06                	incl   (%esi)
40c671:	8b 06                	mov    (%esi),%eax
40c673:	33 c9                	xor    %ecx,%ecx
40c675:	66 39 0c 47          	cmp    %cx,(%edi,%eax,2)
40c679:	0f 84 7e 73 06 00    	je     0x4739fd
40c67f:	8b 55 10             	mov    0x10(%ebp),%edx
40c682:	eb d7                	jmp    0x40c65b
40c684:	66 39 54 4f 02       	cmp    %dx,0x2(%edi,%ecx,2)
40c689:	74 0c                	je     0x40c697
40c68b:	ff 06                	incl   (%esi)
40c68d:	33 c0                	xor    %eax,%eax
40c68f:	5f                   	pop    %edi
40c690:	5e                   	pop    %esi
40c691:	5b                   	pop    %ebx
40c692:	59                   	pop    %ecx
40c693:	5d                   	pop    %ebp
40c694:	c2 10 00             	ret    $0x10
40c697:	8b 4d 14             	mov    0x14(%ebp),%ecx
40c69a:	50                   	push   %eax
40c69b:	e8 f9 00 00 00       	call   0x40c799
40c6a0:	83 06 02             	addl   $0x2,(%esi)
40c6a3:	eb cc                	jmp    0x40c671
40c6a5:	55                   	push   %ebp
40c6a6:	8b ec                	mov    %esp,%ebp
40c6a8:	53                   	push   %ebx
40c6a9:	56                   	push   %esi
40c6aa:	57                   	push   %edi
40c6ab:	8b 7d 14             	mov    0x14(%ebp),%edi
40c6ae:	8b cf                	mov    %edi,%ecx
40c6b0:	e8 19 f6 ff ff       	call   0x40bcce
40c6b5:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40c6b8:	8b 03                	mov    (%ebx),%eax
40c6ba:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c6bd:	0f b7 34 41          	movzwl (%ecx,%eax,2),%esi
40c6c1:	66 83 fe 5a          	cmp    $0x5a,%si
40c6c5:	76 18                	jbe    0x40c6df
40c6c7:	66 83 fe 61          	cmp    $0x61,%si
40c6cb:	72 1a                	jb     0x40c6e7
40c6cd:	66 83 fe 7a          	cmp    $0x7a,%si
40c6d1:	77 14                	ja     0x40c6e7
40c6d3:	56                   	push   %esi
40c6d4:	8b cf                	mov    %edi,%ecx
40c6d6:	e8 be 00 00 00       	call   0x40c799
40c6db:	ff 03                	incl   (%ebx)
40c6dd:	eb d9                	jmp    0x40c6b8
40c6df:	66 83 fe 41          	cmp    $0x41,%si
40c6e3:	73 ee                	jae    0x40c6d3
40c6e5:	eb e0                	jmp    0x40c6c7
40c6e7:	66 83 fe 30          	cmp    $0x30,%si
40c6eb:	0f 83 99 00 00 00    	jae    0x40c78a
40c6f1:	66 83 fe 5f          	cmp    $0x5f,%si
40c6f5:	74 dc                	je     0x40c6d3
40c6f7:	8b cf                	mov    %edi,%ecx
40c6f9:	e8 fc f6 ff ff       	call   0x40bdfa
40c6fe:	ff 77 04             	push   0x4(%edi)
40c701:	ff 37                	push   (%edi)
40c703:	ff 15 60 d6 48 00    	call   *0x48d660
40c709:	57                   	push   %edi
40c70a:	e8 96 fb 00 00       	call   0x41c2a5
40c70f:	8b d8                	mov    %eax,%ebx
40c711:	85 db                	test   %ebx,%ebx
40c713:	78 1b                	js     0x40c730
40c715:	66 83 fe 20          	cmp    $0x20,%si
40c719:	75 2c                	jne    0x40c747
40c71b:	6a 00                	push   $0x0
40c71d:	8b 75 10             	mov    0x10(%ebp),%esi
40c720:	8b ce                	mov    %esi,%ecx
40c722:	e8 d5 f4 ff ff       	call   0x40bbfc
40c727:	89 1e                	mov    %ebx,(%esi)
40c729:	5f                   	pop    %edi
40c72a:	5e                   	pop    %esi
40c72b:	5b                   	pop    %ebx
40c72c:	5d                   	pop    %ebp
40c72d:	c2 10 00             	ret    $0x10
40c730:	8b 0d 04 21 4c 00    	mov    0x4c2104,%ecx
40c736:	ff 37                	push   (%edi)
40c738:	8b 01                	mov    (%ecx),%eax
40c73a:	ff 50 04             	call   *0x4(%eax)
40c73d:	8b d8                	mov    %eax,%ebx
40c73f:	85 db                	test   %ebx,%ebx
40c741:	78 32                	js     0x40c775
40c743:	6a 01                	push   $0x1
40c745:	eb d6                	jmp    0x40c71d
40c747:	66 83 fe 2c          	cmp    $0x2c,%si
40c74b:	74 ce                	je     0x40c71b
40c74d:	66 83 fe 29          	cmp    $0x29,%si
40c751:	74 c8                	je     0x40c71b
40c753:	66 83 fe 09          	cmp    $0x9,%si
40c757:	74 c2                	je     0x40c71b
40c759:	66 83 fe 3d          	cmp    $0x3d,%si
40c75d:	74 bc                	je     0x40c71b
40c75f:	66 83 fe 28          	cmp    $0x28,%si
40c763:	74 b6                	je     0x40c71b
40c765:	66 83 fe 5d          	cmp    $0x5d,%si
40c769:	74 b0                	je     0x40c71b
40c76b:	66 85 f6             	test   %si,%si
40c76e:	74 ab                	je     0x40c71b
40c770:	e9 47 72 06 00       	jmp    0x4739bc
40c775:	8b 4d 10             	mov    0x10(%ebp),%ecx
40c778:	6a 34                	push   $0x34
40c77a:	e8 7d f4 ff ff       	call   0x40bbfc
40c77f:	8b 4d 10             	mov    0x10(%ebp),%ecx
40c782:	57                   	push   %edi
40c783:	e8 ec f4 ff ff       	call   0x40bc74
40c788:	eb 9f                	jmp    0x40c729
40c78a:	66 83 fe 39          	cmp    $0x39,%si
40c78e:	0f 86 3f ff ff ff    	jbe    0x40c6d3
40c794:	e9 58 ff ff ff       	jmp    0x40c6f1
40c799:	55                   	push   %ebp
40c79a:	8b ec                	mov    %esp,%ebp
40c79c:	51                   	push   %ecx
40c79d:	51                   	push   %ecx
40c79e:	56                   	push   %esi
40c79f:	57                   	push   %edi