40449d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4044a0:	5f                   	pop    %edi
4044a1:	5e                   	pop    %esi
4044a2:	33 cd                	xor    %ebp,%ecx
4044a4:	5b                   	pop    %ebx
4044a5:	e8 4b 47 00 00       	call   0x408bf5
4044aa:	c9                   	leave
4044ab:	c2 04 00             	ret    $0x4
4044ae:	56                   	push   %esi
4044af:	8b f1                	mov    %ecx,%esi
4044b1:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
4044b5:	74 0d                	je     0x4044c4
4044b7:	ff 76 0c             	push   0xc(%esi)
4044ba:	ff 15 f4 c1 41 00    	call   *0x41c1f4
4044c0:	83 66 0c 00          	andl   $0x0,0xc(%esi)
4044c4:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
4044c8:	74 0d                	je     0x4044d7
4044ca:	ff 76 08             	push   0x8(%esi)
4044cd:	ff 15 00 c1 41 00    	call   *0x41c100
4044d3:	83 66 08 00          	andl   $0x0,0x8(%esi)
4044d7:	83 7e 04 ff          	cmpl   $0xffffffff,0x4(%esi)
4044db:	74 0d                	je     0x4044ea
4044dd:	ff 76 04             	push   0x4(%esi)
4044e0:	ff 15 00 c1 41 00    	call   *0x41c100
4044e6:	83 4e 04 ff          	orl    $0xffffffff,0x4(%esi)
4044ea:	5e                   	pop    %esi
4044eb:	c3                   	ret
4044ec:	55                   	push   %ebp
4044ed:	8b ec                	mov    %esp,%ebp
4044ef:	83 ec 0c             	sub    $0xc,%esp
4044f2:	53                   	push   %ebx
4044f3:	56                   	push   %esi
4044f4:	8b 75 08             	mov    0x8(%ebp),%esi
4044f7:	57                   	push   %edi
4044f8:	8b f9                	mov    %ecx,%edi
4044fa:	85 f6                	test   %esi,%esi
4044fc:	74 5d                	je     0x40455b
4044fe:	56                   	push   %esi
4044ff:	e8 9a 02 00 00       	call   0x40479e
404504:	89 45 fc             	mov    %eax,-0x4(%ebp)
404507:	85 c0                	test   %eax,%eax
404509:	74 50                	je     0x40455b
40450b:	8b 00                	mov    (%eax),%eax
40450d:	03 c6                	add    %esi,%eax
40450f:	89 45 f8             	mov    %eax,-0x8(%ebp)
404512:	8d 58 08             	lea    0x8(%eax),%ebx
404515:	85 db                	test   %ebx,%ebx
404517:	74 42                	je     0x40455b
404519:	8b 4f 10             	mov    0x10(%edi),%ecx
40451c:	8d 43 04             	lea    0x4(%ebx),%eax
40451f:	03 ce                	add    %esi,%ecx
404521:	3b c1                	cmp    %ecx,%eax
404523:	73 36                	jae    0x40455b
404525:	80 3b 30             	cmpb   $0x30,(%ebx)
404528:	75 31                	jne    0x40455b
40452a:	8a 43 01             	mov    0x1(%ebx),%al
40452d:	3c 82                	cmp    $0x82,%al
40452f:	75 2a                	jne    0x40455b
404531:	0f b6 4b 02          	movzbl 0x2(%ebx),%ecx
404535:	0f b6 43 03          	movzbl 0x3(%ebx),%eax
404539:	c1 e1 08             	shl    $0x8,%ecx
40453c:	83 c0 13             	add    $0x13,%eax
40453f:	03 c1                	add    %ecx,%eax
404541:	25 f8 ff ff 0f       	and    $0xffffff8,%eax
404546:	74 13                	je     0x40455b
404548:	8b 45 fc             	mov    -0x4(%ebp),%eax
40454b:	8b 40 04             	mov    0x4(%eax),%eax
40454e:	89 47 14             	mov    %eax,0x14(%edi)
404551:	8b 45 f8             	mov    -0x8(%ebp),%eax
404554:	89 47 18             	mov    %eax,0x18(%edi)
404557:	b0 01                	mov    $0x1,%al
404559:	eb 02                	jmp    0x40455d
40455b:	32 c0                	xor    %al,%al
40455d:	5f                   	pop    %edi
40455e:	5e                   	pop    %esi
40455f:	5b                   	pop    %ebx
404560:	c9                   	leave
404561:	c2 04 00             	ret    $0x4
404564:	55                   	push   %ebp
404565:	8b ec                	mov    %esp,%ebp
404567:	53                   	push   %ebx
404568:	8b 5d 10             	mov    0x10(%ebp),%ebx
40456b:	56                   	push   %esi
40456c:	8b f1                	mov    %ecx,%esi
40456e:	85 db                	test   %ebx,%ebx
404570:	74 35                	je     0x4045a7
404572:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
404576:	74 2f                	je     0x4045a7
404578:	ff 75 08             	push   0x8(%ebp)
40457b:	e8 6c ff ff ff       	call   0x4044ec
404580:	84 c0                	test   %al,%al
404582:	74 23                	je     0x4045a7
404584:	8b 4e 14             	mov    0x14(%esi),%ecx
404587:	8b 46 10             	mov    0x10(%esi),%eax
40458a:	8b 56 18             	mov    0x18(%esi),%edx
40458d:	03 ca                	add    %edx,%ecx
40458f:	03 45 08             	add    0x8(%ebp),%eax
404592:	3b c8                	cmp    %eax,%ecx
404594:	77 11                	ja     0x4045a7
404596:	53                   	push   %ebx
404597:	ff 75 0c             	push   0xc(%ebp)
40459a:	8b ce                	mov    %esi,%ecx
40459c:	52                   	push   %edx
40459d:	0f ae e8             	lfence
4045a0:	e8 0a 00 00 00       	call   0x4045af
4045a5:	eb 02                	jmp    0x4045a9
4045a7:	32 c0                	xor    %al,%al
4045a9:	5e                   	pop    %esi
4045aa:	5b                   	pop    %ebx
4045ab:	5d                   	pop    %ebp
4045ac:	c2 0c 00             	ret    $0xc
4045af:	55                   	push   %ebp
4045b0:	8b ec                	mov    %esp,%ebp
4045b2:	8b 45 10             	mov    0x10(%ebp),%eax
4045b5:	53                   	push   %ebx
4045b6:	56                   	push   %esi
4045b7:	8b 75 0c             	mov    0xc(%ebp),%esi
4045ba:	8b d9                	mov    %ecx,%ebx
4045bc:	57                   	push   %edi
4045bd:	8b 7d 08             	mov    0x8(%ebp),%edi
4045c0:	50                   	push   %eax
4045c1:	56                   	push   %esi
4045c2:	57                   	push   %edi
4045c3:	e8 82 00 00 00       	call   0x40464a
4045c8:	84 c0                	test   %al,%al
4045ca:	74 04                	je     0x4045d0
4045cc:	b0 01                	mov    $0x1,%al
4045ce:	eb 73                	jmp    0x404643
4045d0:	8b 43 14             	mov    0x14(%ebx),%eax
4045d3:	8d 1c 38             	lea    (%eax,%edi,1),%ebx
4045d6:	3b df                	cmp    %edi,%ebx
4045d8:	72 67                	jb     0x404641
4045da:	68 78 34 42 00       	push   $0x423478
4045df:	51                   	push   %ecx
4045e0:	8b d3                	mov    %ebx,%edx
4045e2:	8b cf                	mov    %edi,%ecx
4045e4:	e8 21 02 00 00       	call   0x40480a
4045e9:	8b d0                	mov    %eax,%edx
4045eb:	59                   	pop    %ecx
4045ec:	59                   	pop    %ecx
4045ed:	3b d3                	cmp    %ebx,%edx
4045ef:	74 50                	je     0x404641
4045f1:	8d 42 0e             	lea    0xe(%edx),%eax
4045f4:	3b c3                	cmp    %ebx,%eax
4045f6:	77 49                	ja     0x404641
4045f8:	0f ae e8             	lfence
4045fb:	0f b6 4a 0c          	movzbl 0xc(%edx),%ecx
4045ff:	b8 00 01 00 00       	mov    $0x100,%eax
404604:	0f af c8             	imul   %eax,%ecx
404607:	0f b6 42 0d          	movzbl 0xd(%edx),%eax
40460b:	66 03 c8             	add    %ax,%cx
40460e:	0f b7 c1             	movzwl %cx,%eax
404611:	66 85 c0             	test   %ax,%ax
404614:	74 2b                	je     0x404641
404616:	8b f8                	mov    %eax,%edi
404618:	8b 45 10             	mov    0x10(%ebp),%eax
40461b:	8d 4f 01             	lea    0x1(%edi),%ecx
40461e:	85 f6                	test   %esi,%esi
404620:	75 04                	jne    0x404626
404622:	89 08                	mov    %ecx,(%eax)
404624:	eb a6                	jmp    0x4045cc
404626:	39 08                	cmp    %ecx,(%eax)
404628:	72 17                	jb     0x404641
40462a:	57                   	push   %edi
40462b:	8d 42 0e             	lea    0xe(%edx),%eax
40462e:	50                   	push   %eax
40462f:	56                   	push   %esi
404630:	0f ae e8             	lfence
404633:	e8 98 55 00 00       	call   0x409bd0
404638:	83 c4 0c             	add    $0xc,%esp
40463b:	c6 04 37 00          	movb   $0x0,(%edi,%esi,1)
40463f:	eb 8b                	jmp    0x4045cc
404641:	32 c0                	xor    %al,%al
404643:	5f                   	pop    %edi
404644:	5e                   	pop    %esi
404645:	5b                   	pop    %ebx
404646:	5d                   	pop    %ebp
404647:	c2 0c 00             	ret    $0xc
40464a:	55                   	push   %ebp
40464b:	8b ec                	mov    %esp,%ebp
40464d:	83 ec 30             	sub    $0x30,%esp
404650:	a1 18 60 42 00       	mov    0x426018,%eax
404655:	33 c5                	xor    %ebp,%eax
404657:	89 45 fc             	mov    %eax,-0x4(%ebp)
40465a:	8b 45 0c             	mov    0xc(%ebp),%eax
40465d:	53                   	push   %ebx
40465e:	56                   	push   %esi
40465f:	57                   	push   %edi
404660:	6a 4d                	push   $0x4d
404662:	89 45 d0             	mov    %eax,-0x30(%ebp)
404665:	8b 45 10             	mov    0x10(%ebp),%eax
404668:	8b 75 08             	mov    0x8(%ebp),%esi
40466b:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40466e:	58                   	pop    %eax
40466f:	6a 53                	push   $0x53
404671:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
404675:	58                   	pop    %eax
404676:	6a 45                	push   $0x45
404678:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40467c:	58                   	pop    %eax
40467d:	6a 44                	push   $0x44
40467f:	5a                   	pop    %edx
404680:	6a 47                	push   $0x47
404682:	66 89 55 f2          	mov    %dx,-0xe(%ebp)
404686:	5a                   	pop    %edx
404687:	66 89 45 f0          	mov    %ax,-0x10(%ebp)
40468b:	66 89 45 f6          	mov    %ax,-0xa(%ebp)
40468f:	6a 5f                	push   $0x5f
404691:	58                   	pop    %eax
404692:	66 89 45 f8          	mov    %ax,-0x8(%ebp)
404696:	33 c0                	xor    %eax,%eax
404698:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
40469c:	8b 41 14             	mov    0x14(%ecx),%eax
40469f:	66 89 55 f4          	mov    %dx,-0xc(%ebp)
4046a3:	8d 3c 30             	lea    (%eax,%esi,1),%edi
4046a6:	3b fe                	cmp    %esi,%edi
4046a8:	0f 82 dd 00 00 00    	jb     0x40478b
4046ae:	83 f8 0e             	cmp    $0xe,%eax
4046b1:	0f 8c d4 00 00 00    	jl     0x40478b
4046b7:	0f ae e8             	lfence
4046ba:	8d 5f f2             	lea    -0xe(%edi),%ebx
4046bd:	eb 09                	jmp    0x4046c8
4046bf:	3b f3                	cmp    %ebx,%esi
4046c1:	0f 84 c4 00 00 00    	je     0x40478b
4046c7:	46                   	inc    %esi
4046c8:	6a 0e                	push   $0xe
4046ca:	8d 45 ec             	lea    -0x14(%ebp),%eax
4046cd:	56                   	push   %esi
4046ce:	50                   	push   %eax
4046cf:	e8 6c 51 01 00       	call   0x419840
4046d4:	83 c4 0c             	add    $0xc,%esp
4046d7:	85 c0                	test   %eax,%eax
4046d9:	75 e4                	jne    0x4046bf
4046db:	3b f7                	cmp    %edi,%esi
4046dd:	0f 84 a8 00 00 00    	je     0x40478b
4046e3:	6a 5f                	push   $0x5f
4046e5:	58                   	pop    %eax
4046e6:	6a 45                	push   $0x45
4046e8:	66 89 45 dc          	mov    %ax,-0x24(%ebp)
4046ec:	8d 5e 0e             	lea    0xe(%esi),%ebx
4046ef:	58                   	pop    %eax
4046f0:	6a 47                	push   $0x47
4046f2:	59                   	pop    %ecx
4046f3:	6a 44                	push   $0x44
4046f5:	66 89 45 de          	mov    %ax,-0x22(%ebp)
4046f9:	8b f3                	mov    %ebx,%esi
4046fb:	66 89 45 e4          	mov    %ax,-0x1c(%ebp)
4046ff:	66 89 4d e0          	mov    %cx,-0x20(%ebp)
404703:	59                   	pop    %ecx
404704:	6a 53                	push   $0x53
404706:	58                   	pop    %eax
404707:	66 89 45 e6          	mov    %ax,-0x1a(%ebp)
40470b:	6a 4d                	push   $0x4d
40470d:	58                   	pop    %eax
40470e:	66 89 45 e8          	mov    %ax,-0x18(%ebp)
404712:	33 c0                	xor    %eax,%eax
404714:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
404718:	8b c7                	mov    %edi,%eax
40471a:	2b c3                	sub    %ebx,%eax
40471c:	66 89 4d e2          	mov    %cx,-0x1e(%ebp)
404720:	83 e0 fe             	and    $0xfffffffe,%eax
404723:	83 f8 0e             	cmp    $0xe,%eax
404726:	7c 63                	jl     0x40478b
404728:	6a 0e                	push   $0xe
40472a:	0f ae e8             	lfence
40472d:	53                   	push   %ebx
40472e:	eb 0d                	jmp    0x40473d
404730:	8d 47 f2             	lea    -0xe(%edi),%eax
404733:	3b f0                	cmp    %eax,%esi
404735:	74 54                	je     0x40478b
404737:	83 c6 02             	add    $0x2,%esi
40473a:	6a 0e                	push   $0xe
40473c:	56                   	push   %esi
40473d:	8d 45 dc             	lea    -0x24(%ebp),%eax
404740:	50                   	push   %eax
404741:	e8 fa 50 01 00       	call   0x419840
404746:	83 c4 0c             	add    $0xc,%esp
404749:	85 c0                	test   %eax,%eax
40474b:	75 e3                	jne    0x404730
40474d:	3b f7                	cmp    %edi,%esi
40474f:	74 3a                	je     0x40478b
404751:	8b 55 d0             	mov    -0x30(%ebp),%edx
404754:	2b f3                	sub    %ebx,%esi
404756:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
404759:	d1 fe                	sar    $1,%esi
40475b:	8d 46 01             	lea    0x1(%esi),%eax
40475e:	85 d2                	test   %edx,%edx
404760:	75 06                	jne    0x404768
404762:	89 01                	mov    %eax,(%ecx)
404764:	b0 01                	mov    $0x1,%al
404766:	eb 25                	jmp    0x40478d
404768:	39 01                	cmp    %eax,(%ecx)
40476a:	72 1f                	jb     0x40478b
40476c:	56                   	push   %esi
40476d:	53                   	push   %ebx
40476e:	50                   	push   %eax
40476f:	52                   	push   %edx
404770:	8d 45 d8             	lea    -0x28(%ebp),%eax
404773:	50                   	push   %eax
404774:	0f ae e8             	lfence
404777:	e8 88 6e 01 00       	call   0x41b604
40477c:	83 c4 14             	add    $0x14,%esp
40477f:	85 c0                	test   %eax,%eax
404781:	75 08                	jne    0x40478b
404783:	39 45 d8             	cmp    %eax,-0x28(%ebp)
404786:	0f 97 c0             	seta   %al
404789:	eb 02                	jmp    0x40478d
40478b:	32 c0                	xor    %al,%al
40478d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
404790:	5f                   	pop    %edi
404791:	5e                   	pop    %esi
404792:	33 cd                	xor    %ebp,%ecx
404794:	5b                   	pop    %ebx
404795:	e8 5b 44 00 00       	call   0x408bf5
40479a:	c9                   	leave
40479b:	c2 0c 00             	ret    $0xc
40479e:	55                   	push   %ebp
40479f:	8b ec                	mov    %esp,%ebp
4047a1:	56                   	push   %esi
4047a2:	8b 71 10             	mov    0x10(%ecx),%esi
4047a5:	57                   	push   %edi
4047a6:	83 fe 40             	cmp    $0x40,%esi
4047a9:	72 57                	jb     0x404802
4047ab:	8b 4d 08             	mov    0x8(%ebp),%ecx
4047ae:	b8 4d 5a 00 00       	mov    $0x5a4d,%eax
4047b3:	66 39 01             	cmp    %ax,(%ecx)
4047b6:	75 4a                	jne    0x404802
4047b8:	8b 51 3c             	mov    0x3c(%ecx),%edx
4047bb:	8d 82 f8 00 00 00    	lea    0xf8(%edx),%eax
4047c1:	3b f0                	cmp    %eax,%esi
4047c3:	72 3d                	jb     0x404802
4047c5:	81 3c 0a 50 45 00 00 	cmpl   $0x4550,(%edx,%ecx,1)
4047cc:	75 34                	jne    0x404802
4047ce:	0f b7 44 0a 04       	movzwl 0x4(%edx,%ecx,1),%eax
4047d3:	bf 4c 01 00 00       	mov    $0x14c,%edi
4047d8:	66 3b c7             	cmp    %di,%ax
4047db:	74 0a                	je     0x4047e7
4047dd:	bf 64 86 00 00       	mov    $0x8664,%edi
4047e2:	66 3b c7             	cmp    %di,%ax
4047e5:	74 1b                	je     0x404802
4047e7:	81 c1 98 00 00 00    	add    $0x98,%ecx
4047ed:	03 ca                	add    %edx,%ecx
4047ef:	8b 01                	mov    (%ecx),%eax
4047f1:	85 c0                	test   %eax,%eax
4047f3:	74 0d                	je     0x404802
4047f5:	83 c0 0c             	add    $0xc,%eax
4047f8:	3b f0                	cmp    %eax,%esi
4047fa:	1b c0                	sbb    %eax,%eax
4047fc:	f7 d0                	not    %eax
4047fe:	23 c1                	and    %ecx,%eax