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
40c7a0:	8b f9                	mov    %ecx,%edi
40c7a2:	8b 4f 0c             	mov    0xc(%edi),%ecx
40c7a5:	8b 01                	mov    (%ecx),%eax
40c7a7:	83 f8 01             	cmp    $0x1,%eax
40c7aa:	0f 8f 67 57 06 00    	jg     0x471f17
40c7b0:	8b 47 04             	mov    0x4(%edi),%eax
40c7b3:	6a 02                	push   $0x2
40c7b5:	5e                   	pop    %esi
40c7b6:	03 c6                	add    %esi,%eax
40c7b8:	39 47 08             	cmp    %eax,0x8(%edi)
40c7bb:	72 23                	jb     0x40c7e0
40c7bd:	8b 57 04             	mov    0x4(%edi),%edx
40c7c0:	8b 0f                	mov    (%edi),%ecx
40c7c2:	66 8b 45 08          	mov    0x8(%ebp),%ax
40c7c6:	66 89 04 51          	mov    %ax,(%ecx,%edx,2)
40c7ca:	ff 47 04             	incl   0x4(%edi)
40c7cd:	8b 07                	mov    (%edi),%eax
40c7cf:	8b 4f 04             	mov    0x4(%edi),%ecx
40c7d2:	33 d2                	xor    %edx,%edx
40c7d4:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
40c7d8:	8b c7                	mov    %edi,%eax
40c7da:	5f                   	pop    %edi
40c7db:	5e                   	pop    %esi
40c7dc:	c9                   	leave
40c7dd:	c2 04 00             	ret    $0x4
40c7e0:	3d c2 41 00 00       	cmp    $0x41c2,%eax
40c7e5:	0f 83 72 57 06 00    	jae    0x471f5d
40c7eb:	03 c0                	add    %eax,%eax
40c7ed:	50                   	push   %eax
40c7ee:	89 47 08             	mov    %eax,0x8(%edi)
40c7f1:	e8 00 a3 ff ff       	call   0x406af6
40c7f6:	33 c9                	xor    %ecx,%ecx
40c7f8:	89 47 08             	mov    %eax,0x8(%edi)
40c7fb:	f7 e6                	mul    %esi
40c7fd:	0f 90 c1             	seto   %cl
40c800:	f7 d9                	neg    %ecx
40c802:	0b c8                	or     %eax,%ecx
40c804:	51                   	push   %ecx
40c805:	e8 6b 26 01 00       	call   0x41ee75
40c80a:	83 3f 00             	cmpl   $0x0,(%edi)
40c80d:	59                   	pop    %ecx
40c80e:	8b f0                	mov    %eax,%esi
40c810:	74 1d                	je     0x40c82f
40c812:	8b 4f 04             	mov    0x4(%edi),%ecx
40c815:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40c81c:	51                   	push   %ecx
40c81d:	ff 37                	push   (%edi)
40c81f:	56                   	push   %esi
40c820:	e8 5b 26 01 00       	call   0x41ee80
40c825:	ff 37                	push   (%edi)
40c827:	e8 b4 45 01 00       	call   0x420de0
40c82c:	83 c4 10             	add    $0x10,%esp
40c82f:	89 37                	mov    %esi,(%edi)
40c831:	eb 8a                	jmp    0x40c7bd
40c833:	55                   	push   %ebp
40c834:	8b ec                	mov    %esp,%ebp
40c836:	83 e4 f8             	and    $0xfffffff8,%esp
40c839:	b8 e4 06 01 00       	mov    $0x106e4,%eax
40c83e:	e8 5d 30 02 00       	call   0x42f8a0
40c843:	a1 74 21 4c 00       	mov    0x4c2174,%eax
40c848:	53                   	push   %ebx
40c849:	56                   	push   %esi
40c84a:	40                   	inc    %eax
40c84b:	8b f1                	mov    %ecx,%esi
40c84d:	57                   	push   %edi
40c84e:	89 74 24 1c          	mov    %esi,0x1c(%esp)
40c852:	a3 74 21 4c 00       	mov    %eax,0x4c2174
40c857:	83 f8 30             	cmp    $0x30,%eax
40c85a:	0f 8d 35 68 06 00    	jge    0x473095
40c860:	33 db                	xor    %ebx,%ebx
40c862:	8b c3                	mov    %ebx,%eax
40c864:	8d 8c 24 98 00 00 00 	lea    0x98(%esp),%ecx
40c86b:	89 44 24 14          	mov    %eax,0x14(%esp)
40c86f:	c6 44 24 13 01       	movb   $0x1,0x13(%esp)
40c874:	c6 44 24 23 01       	movb   $0x1,0x23(%esp)
40c879:	88 5c 24 24          	mov    %bl,0x24(%esp)
40c87d:	e8 38 80 ff ff       	call   0x4048ba
40c882:	8b 7d 08             	mov    0x8(%ebp),%edi
40c885:	68 00 20 00 00       	push   $0x2000
40c88a:	57                   	push   %edi
40c88b:	8d 8c 24 a0 00 00 00 	lea    0xa0(%esp),%ecx
40c892:	e8 b9 7c ff ff       	call   0x404550
40c897:	84 c0                	test   %al,%al
40c899:	0f 84 10 68 06 00    	je     0x4730af
40c89f:	8d 8c 24 d0 00 00 00 	lea    0xd0(%esp),%ecx
40c8a6:	e8 4c 0f 00 00       	call   0x40d7f7
40c8ab:	8d 8c 24 d0 00 00 00 	lea    0xd0(%esp),%ecx
40c8b2:	e8 b1 20 01 00       	call   0x41e968
40c8b7:	8d 8c 24 88 00 00 00 	lea    0x88(%esp),%ecx
40c8be:	e8 34 0f 00 00       	call   0x40d7f7
40c8c3:	8d 94 24 88 00 00 00 	lea    0x88(%esp),%edx
40c8ca:	8b cf                	mov    %edi,%ecx
40c8cc:	e8 3e 9d ff ff       	call   0x40660f
40c8d1:	8b bc 24 a8 00 00 00 	mov    0xa8(%esp),%edi
40c8d8:	8b b4 24 ac 00 00 00 	mov    0xac(%esp),%esi
40c8df:	8d 44 24 44          	lea    0x44(%esp),%eax
40c8e3:	50                   	push   %eax
40c8e4:	8d 44 24 54          	lea    0x54(%esp),%eax
40c8e8:	50                   	push   %eax
40c8e9:	8d 8c 24 a0 00 00 00 	lea    0xa0(%esp),%ecx
40c8f0:	c7 44 24 4c 18 00 00 	movl   $0x18,0x4c(%esp)
40c8f7:	00
40c8f8:	e8 69 22 01 00       	call   0x41eb66
40c8fd:	53                   	push   %ebx
40c8fe:	56                   	push   %esi
40c8ff:	57                   	push   %edi
40c900:	8d 8c 24 a4 00 00 00 	lea    0xa4(%esp),%ecx
40c907:	e8 c2 7d ff ff       	call   0x4046ce
40c90c:	81 7c 24 60 41 55 33 	cmpl   $0x21335541,0x60(%esp)
40c913:	21
40c914:	0f 84 af 67 06 00    	je     0x4730c9
40c91a:	8d 84 24 f0 02 00 00 	lea    0x2f0(%esp),%eax
40c921:	50                   	push   %eax
40c922:	8d 84 24 f4 04 00 00 	lea    0x4f4(%esp),%eax
40c929:	50                   	push   %eax
40c92a:	8d 84 24 f8 00 00 00 	lea    0xf8(%esp),%eax
40c931:	50                   	push   %eax
40c932:	8d 44 24 40          	lea    0x40(%esp),%eax
40c936:	50                   	push   %eax
40c937:	ff b4 24 98 00 00 00 	push   0x98(%esp)
40c93e:	e8 b9 54 01 00       	call   0x421dfc
40c943:	83 c4 14             	add    $0x14,%esp
40c946:	8d 44 24 34          	lea    0x34(%esp),%eax
40c94a:	50                   	push   %eax
40c94b:	8d 84 24 f4 06 00 00 	lea    0x6f4(%esp),%eax
40c952:	50                   	push   %eax
40c953:	e8 cb 43 01 00       	call   0x420d23
40c958:	8d 84 24 f8 00 00 00 	lea    0xf8(%esp),%eax
40c95f:	50                   	push   %eax
40c960:	8d 84 24 fc 06 00 00 	lea    0x6fc(%esp),%eax
40c967:	50                   	push   %eax
40c968:	e8 87 43 01 00       	call   0x420cf4
40c96d:	83 c4 10             	add    $0x10,%esp
40c970:	8d 84 24 f0 06 00 00 	lea    0x6f0(%esp),%eax
40c977:	50                   	push   %eax
40c978:	ff 15 18 d3 48 00    	call   *0x48d318
40c97e:	68 00 20 00 00       	push   $0x2000
40c983:	e8 62 2b 01 00       	call   0x41f4ea
40c988:	59                   	pop    %ecx
40c989:	50                   	push   %eax
40c98a:	8d 4c 24 48          	lea    0x48(%esp),%ecx
40c98e:	e8 24 7e ff ff       	call   0x4047b7
40c993:	8b 74 24 44          	mov    0x44(%esp),%esi
40c997:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
40c99b:	80 7c 24 23 01       	cmpb   $0x1,0x23(%esp)
40c9a0:	0f 85 f7 00 00 00    	jne    0x40ca9d
40c9a6:	51                   	push   %ecx
40c9a7:	56                   	push   %esi
40c9a8:	8d 8c 24 a0 00 00 00 	lea    0xa0(%esp),%ecx
40c9af:	e8 83 e9 ff ff       	call   0x40b337
40c9b4:	84 c0                	test   %al,%al
40c9b6:	0f 84 e1 00 00 00    	je     0x40ca9d
40c9bc:	8b 44 24 14          	mov    0x14(%esp),%eax
40c9c0:	40                   	inc    %eax
40c9c1:	56                   	push   %esi
40c9c2:	89 44 24 18          	mov    %eax,0x18(%esp)
40c9c6:	89 44 24 20          	mov    %eax,0x20(%esp)
40c9ca:	e8 89 f8 00 00       	call   0x41c258
40c9cf:	56                   	push   %esi
40c9d0:	e8 be 01 00 00       	call   0x40cb93
40c9d5:	56                   	push   %esi
40c9d6:	84 c0                	test   %al,%al
40c9d8:	0f 84 8e 6a 06 00    	je     0x47346c
40c9de:	e8 77 01 00 00       	call   0x40cb5a
40c9e3:	56                   	push   %esi
40c9e4:	88 5c 24 26          	mov    %bl,0x26(%esp)
40c9e8:	e8 ee 42 01 00       	call   0x420cdb
40c9ed:	59                   	pop    %ecx
40c9ee:	89 44 24 34          	mov    %eax,0x34(%esp)
40c9f2:	83 f8 02             	cmp    $0x2,%eax
40c9f5:	7e 1d                	jle    0x40ca14
40c9f7:	66 8b 44 46 fc       	mov    -0x4(%esi,%eax,2),%ax
40c9fc:	6a 7f                	push   $0x7f
40c9fe:	59                   	pop    %ecx
40c9ff:	66 23 c1             	and    %cx,%ax