40457c:	33 c0                	xor    %eax,%eax
40457e:	5f                   	pop    %edi
40457f:	5e                   	pop    %esi
404580:	5b                   	pop    %ebx
404581:	5d                   	pop    %ebp
404582:	c3                   	ret
404583:	8b ff                	mov    %edi,%edi
404585:	55                   	push   %ebp
404586:	8b ec                	mov    %esp,%ebp
404588:	8b 4d 08             	mov    0x8(%ebp),%ecx
40458b:	56                   	push   %esi
40458c:	33 f6                	xor    %esi,%esi
40458e:	3b ce                	cmp    %esi,%ecx
404590:	7c 1e                	jl     0x4045b0
404592:	83 f9 02             	cmp    $0x2,%ecx
404595:	7e 0c                	jle    0x4045a3
404597:	83 f9 03             	cmp    $0x3,%ecx
40459a:	75 14                	jne    0x4045b0
40459c:	a1 88 06 43 00       	mov    0x430688,%eax
4045a1:	eb 28                	jmp    0x4045cb
4045a3:	a1 88 06 43 00       	mov    0x430688,%eax
4045a8:	89 0d 88 06 43 00    	mov    %ecx,0x430688
4045ae:	eb 1b                	jmp    0x4045cb
4045b0:	e8 97 e8 ff ff       	call   0x402e4c
4045b5:	56                   	push   %esi
4045b6:	56                   	push   %esi
4045b7:	56                   	push   %esi
4045b8:	56                   	push   %esi
4045b9:	56                   	push   %esi
4045ba:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4045c0:	e8 7c f6 ff ff       	call   0x403c41
4045c5:	83 c4 14             	add    $0x14,%esp
4045c8:	83 c8 ff             	or     $0xffffffff,%eax
4045cb:	5e                   	pop    %esi
4045cc:	5d                   	pop    %ebp
4045cd:	c3                   	ret
4045ce:	8b ff                	mov    %edi,%edi
4045d0:	55                   	push   %ebp
4045d1:	8b ec                	mov    %esp,%ebp
4045d3:	8b 45 08             	mov    0x8(%ebp),%eax
4045d6:	56                   	push   %esi
4045d7:	8b f1                	mov    %ecx,%esi
4045d9:	c6 46 0c 00          	movb   $0x0,0xc(%esi)
4045dd:	85 c0                	test   %eax,%eax
4045df:	75 63                	jne    0x404644
4045e1:	e8 94 e2 ff ff       	call   0x40287a
4045e6:	89 46 08             	mov    %eax,0x8(%esi)
4045e9:	8b 48 6c             	mov    0x6c(%eax),%ecx
4045ec:	89 0e                	mov    %ecx,(%esi)
4045ee:	8b 48 68             	mov    0x68(%eax),%ecx
4045f1:	89 4e 04             	mov    %ecx,0x4(%esi)
4045f4:	8b 0e                	mov    (%esi),%ecx
4045f6:	3b 0d 38 fb 41 00    	cmp    0x41fb38,%ecx
4045fc:	74 12                	je     0x404610
4045fe:	8b 0d 50 fb 41 00    	mov    0x41fb50,%ecx
404604:	85 48 70             	test   %ecx,0x70(%eax)
404607:	75 07                	jne    0x404610
404609:	e8 16 0f 00 00       	call   0x405524
40460e:	89 06                	mov    %eax,(%esi)
404610:	8b 46 04             	mov    0x4(%esi),%eax
404613:	3b 05 58 f9 41 00    	cmp    0x41f958,%eax
404619:	74 16                	je     0x404631
40461b:	8b 46 08             	mov    0x8(%esi),%eax
40461e:	8b 0d 50 fb 41 00    	mov    0x41fb50,%ecx
404624:	85 48 70             	test   %ecx,0x70(%eax)
404627:	75 08                	jne    0x404631
404629:	e8 b8 02 00 00       	call   0x4048e6
40462e:	89 46 04             	mov    %eax,0x4(%esi)
404631:	8b 46 08             	mov    0x8(%esi),%eax
404634:	f6 40 70 02          	testb  $0x2,0x70(%eax)
404638:	75 14                	jne    0x40464e
40463a:	83 48 70 02          	orl    $0x2,0x70(%eax)
40463e:	c6 46 0c 01          	movb   $0x1,0xc(%esi)
404642:	eb 0a                	jmp    0x40464e
404644:	8b 08                	mov    (%eax),%ecx
404646:	89 0e                	mov    %ecx,(%esi)
404648:	8b 40 04             	mov    0x4(%eax),%eax
40464b:	89 46 04             	mov    %eax,0x4(%esi)
40464e:	8b c6                	mov    %esi,%eax
404650:	5e                   	pop    %esi
404651:	5d                   	pop    %ebp
404652:	c2 04 00             	ret    $0x4
404655:	8b ff                	mov    %edi,%edi
404657:	55                   	push   %ebp
404658:	8b ec                	mov    %esp,%ebp
40465a:	83 ec 10             	sub    $0x10,%esp
40465d:	ff 75 08             	push   0x8(%ebp)
404660:	8d 4d f0             	lea    -0x10(%ebp),%ecx
404663:	e8 66 ff ff ff       	call   0x4045ce
404668:	0f b6 45 0c          	movzbl 0xc(%ebp),%eax
40466c:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40466f:	8a 55 14             	mov    0x14(%ebp),%dl
404672:	84 54 01 1d          	test   %dl,0x1d(%ecx,%eax,1)
404676:	75 1e                	jne    0x404696
404678:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40467c:	74 12                	je     0x404690
40467e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
404681:	8b 89 c8 00 00 00    	mov    0xc8(%ecx),%ecx
404687:	0f b7 04 41          	movzwl (%ecx,%eax,2),%eax
40468b:	23 45 10             	and    0x10(%ebp),%eax
40468e:	eb 02                	jmp    0x404692
404690:	33 c0                	xor    %eax,%eax
404692:	85 c0                	test   %eax,%eax
404694:	74 03                	je     0x404699
404696:	33 c0                	xor    %eax,%eax
404698:	40                   	inc    %eax
404699:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40469d:	74 07                	je     0x4046a6
40469f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4046a2:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
4046a6:	c9                   	leave
4046a7:	c3                   	ret
4046a8:	8b ff                	mov    %edi,%edi
4046aa:	55                   	push   %ebp
4046ab:	8b ec                	mov    %esp,%ebp
4046ad:	6a 04                	push   $0x4
4046af:	6a 00                	push   $0x0
4046b1:	ff 75 08             	push   0x8(%ebp)
4046b4:	6a 00                	push   $0x0
4046b6:	e8 9a ff ff ff       	call   0x404655
4046bb:	83 c4 10             	add    $0x10,%esp
4046be:	5d                   	pop    %ebp
4046bf:	c3                   	ret
4046c0:	2d a4 03 00 00       	sub    $0x3a4,%eax
4046c5:	74 22                	je     0x4046e9
4046c7:	83 e8 04             	sub    $0x4,%eax
4046ca:	74 17                	je     0x4046e3
4046cc:	83 e8 0d             	sub    $0xd,%eax
4046cf:	74 0c                	je     0x4046dd
4046d1:	48                   	dec    %eax
4046d2:	74 03                	je     0x4046d7
4046d4:	33 c0                	xor    %eax,%eax
4046d6:	c3                   	ret
4046d7:	b8 04 04 00 00       	mov    $0x404,%eax
4046dc:	c3                   	ret
4046dd:	b8 12 04 00 00       	mov    $0x412,%eax
4046e2:	c3                   	ret
4046e3:	b8 04 08 00 00       	mov    $0x804,%eax
4046e8:	c3                   	ret
4046e9:	b8 11 04 00 00       	mov    $0x411,%eax
4046ee:	c3                   	ret
4046ef:	8b ff                	mov    %edi,%edi
4046f1:	56                   	push   %esi
4046f2:	57                   	push   %edi
4046f3:	8b f0                	mov    %eax,%esi
4046f5:	68 01 01 00 00       	push   $0x101
4046fa:	33 ff                	xor    %edi,%edi
4046fc:	8d 46 1c             	lea    0x1c(%esi),%eax
4046ff:	57                   	push   %edi
404700:	50                   	push   %eax
404701:	e8 3a 27 00 00       	call   0x406e40
404706:	33 c0                	xor    %eax,%eax
404708:	0f b7 c8             	movzwl %ax,%ecx
40470b:	8b c1                	mov    %ecx,%eax
40470d:	89 7e 04             	mov    %edi,0x4(%esi)
404710:	89 7e 08             	mov    %edi,0x8(%esi)
404713:	89 7e 0c             	mov    %edi,0xc(%esi)
404716:	c1 e1 10             	shl    $0x10,%ecx
404719:	0b c1                	or     %ecx,%eax
40471b:	8d 7e 10             	lea    0x10(%esi),%edi
40471e:	ab                   	stos   %eax,%es:(%edi)
40471f:	ab                   	stos   %eax,%es:(%edi)
404720:	ab                   	stos   %eax,%es:(%edi)
404721:	b9 30 f5 41 00       	mov    $0x41f530,%ecx
404726:	83 c4 0c             	add    $0xc,%esp
404729:	8d 46 1c             	lea    0x1c(%esi),%eax
40472c:	2b ce                	sub    %esi,%ecx
40472e:	bf 01 01 00 00       	mov    $0x101,%edi
404733:	8a 14 01             	mov    (%ecx,%eax,1),%dl
404736:	88 10                	mov    %dl,(%eax)
404738:	40                   	inc    %eax
404739:	4f                   	dec    %edi
40473a:	75 f7                	jne    0x404733
40473c:	8d 86 1d 01 00 00    	lea    0x11d(%esi),%eax
404742:	be 00 01 00 00       	mov    $0x100,%esi
404747:	8a 14 08             	mov    (%eax,%ecx,1),%dl
40474a:	88 10                	mov    %dl,(%eax)
40474c:	40                   	inc    %eax
40474d:	4e                   	dec    %esi
40474e:	75 f7                	jne    0x404747
404750:	5f                   	pop    %edi
404751:	5e                   	pop    %esi
404752:	c3                   	ret
404753:	8b ff                	mov    %edi,%edi
404755:	55                   	push   %ebp
404756:	8b ec                	mov    %esp,%ebp
404758:	81 ec 1c 05 00 00    	sub    $0x51c,%esp
40475e:	a1 04 f0 41 00       	mov    0x41f004,%eax
404763:	33 c5                	xor    %ebp,%eax
404765:	89 45 fc             	mov    %eax,-0x4(%ebp)
404768:	53                   	push   %ebx
404769:	57                   	push   %edi
40476a:	8d 85 e8 fa ff ff    	lea    -0x518(%ebp),%eax
404770:	50                   	push   %eax
404771:	ff 76 04             	push   0x4(%esi)
404774:	ff 15 f4 d0 41 00    	call   *0x41d0f4
40477a:	bf 00 01 00 00       	mov    $0x100,%edi
40477f:	85 c0                	test   %eax,%eax
404781:	0f 84 fb 00 00 00    	je     0x404882
404787:	33 c0                	xor    %eax,%eax
404789:	88 84 05 fc fe ff ff 	mov    %al,-0x104(%ebp,%eax,1)
404790:	40                   	inc    %eax
404791:	3b c7                	cmp    %edi,%eax
404793:	72 f4                	jb     0x404789
404795:	8a 85 ee fa ff ff    	mov    -0x512(%ebp),%al
40479b:	c6 85 fc fe ff ff 20 	movb   $0x20,-0x104(%ebp)
4047a2:	84 c0                	test   %al,%al
4047a4:	74 2e                	je     0x4047d4
4047a6:	8d 9d ef fa ff ff    	lea    -0x511(%ebp),%ebx
4047ac:	0f b6 c8             	movzbl %al,%ecx
4047af:	0f b6 03             	movzbl (%ebx),%eax
4047b2:	3b c8                	cmp    %eax,%ecx
4047b4:	77 16                	ja     0x4047cc
4047b6:	2b c1                	sub    %ecx,%eax
4047b8:	40                   	inc    %eax
4047b9:	50                   	push   %eax
4047ba:	8d 94 0d fc fe ff ff 	lea    -0x104(%ebp,%ecx,1),%edx
4047c1:	6a 20                	push   $0x20
4047c3:	52                   	push   %edx
4047c4:	e8 77 26 00 00       	call   0x406e40
4047c9:	83 c4 0c             	add    $0xc,%esp
4047cc:	43                   	inc    %ebx
4047cd:	8a 03                	mov    (%ebx),%al
4047cf:	43                   	inc    %ebx
4047d0:	84 c0                	test   %al,%al
4047d2:	75 d8                	jne    0x4047ac
4047d4:	6a 00                	push   $0x0
4047d6:	ff 76 0c             	push   0xc(%esi)
4047d9:	8d 85 fc fa ff ff    	lea    -0x504(%ebp),%eax
4047df:	ff 76 04             	push   0x4(%esi)
4047e2:	50                   	push   %eax
4047e3:	57                   	push   %edi
4047e4:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
4047ea:	50                   	push   %eax
4047eb:	6a 01                	push   $0x1
4047ed:	6a 00                	push   $0x0
4047ef:	e8 b5 2d 00 00       	call   0x4075a9
4047f4:	33 db                	xor    %ebx,%ebx
4047f6:	53                   	push   %ebx
4047f7:	ff 76 04             	push   0x4(%esi)
4047fa:	8d 85 fc fd ff ff    	lea    -0x204(%ebp),%eax
404800:	57                   	push   %edi
404801:	50                   	push   %eax
404802:	57                   	push   %edi
404803:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
404809:	50                   	push   %eax
40480a:	57                   	push   %edi
40480b:	ff 76 0c             	push   0xc(%esi)
40480e:	53                   	push   %ebx
40480f:	e8 96 2b 00 00       	call   0x4073aa
404814:	83 c4 44             	add    $0x44,%esp
404817:	53                   	push   %ebx
404818:	ff 76 04             	push   0x4(%esi)
40481b:	8d 85 fc fc ff ff    	lea    -0x304(%ebp),%eax
404821:	57                   	push   %edi
404822:	50                   	push   %eax
404823:	57                   	push   %edi
404824:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
40482a:	50                   	push   %eax
40482b:	68 00 02 00 00       	push   $0x200
404830:	ff 76 0c             	push   0xc(%esi)
404833:	53                   	push   %ebx
404834:	e8 71 2b 00 00       	call   0x4073aa
404839:	83 c4 24             	add    $0x24,%esp
40483c:	33 c0                	xor    %eax,%eax
40483e:	0f b7 8c 45 fc fa ff 	movzwl -0x504(%ebp,%eax,2),%ecx
404845:	ff
404846:	f6 c1 01             	test   $0x1,%cl
404849:	74 0e                	je     0x404859
40484b:	80 4c 06 1d 10       	orb    $0x10,0x1d(%esi,%eax,1)
404850:	8a 8c 05 fc fd ff ff 	mov    -0x204(%ebp,%eax,1),%cl
404857:	eb 11                	jmp    0x40486a
404859:	f6 c1 02             	test   $0x2,%cl
40485c:	74 15                	je     0x404873
40485e:	80 4c 06 1d 20       	orb    $0x20,0x1d(%esi,%eax,1)
404863:	8a 8c 05 fc fc ff ff 	mov    -0x304(%ebp,%eax,1),%cl
40486a:	88 8c 06 1d 01 00 00 	mov    %cl,0x11d(%esi,%eax,1)
404871:	eb 08                	jmp    0x40487b
404873:	c6 84 06 1d 01 00 00 	movb   $0x0,0x11d(%esi,%eax,1)
40487a:	00
40487b:	40                   	inc    %eax
40487c:	3b c7                	cmp    %edi,%eax
40487e:	72 be                	jb     0x40483e
404880:	eb 56                	jmp    0x4048d8
404882:	8d 86 1d 01 00 00    	lea    0x11d(%esi),%eax
404888:	c7 85 e4 fa ff ff 9f 	movl   $0xffffff9f,-0x51c(%ebp)
40488f:	ff ff ff
404892:	33 c9                	xor    %ecx,%ecx
404894:	29 85 e4 fa ff ff    	sub    %eax,-0x51c(%ebp)
40489a:	8b 95 e4 fa ff ff    	mov    -0x51c(%ebp),%edx
4048a0:	8d 84 0e 1d 01 00 00 	lea    0x11d(%esi,%ecx,1),%eax
4048a7:	03 d0                	add    %eax,%edx
4048a9:	8d 5a 20             	lea    0x20(%edx),%ebx
4048ac:	83 fb 19             	cmp    $0x19,%ebx
4048af:	77 0c                	ja     0x4048bd
4048b1:	80 4c 0e 1d 10       	orb    $0x10,0x1d(%esi,%ecx,1)
4048b6:	8a d1                	mov    %cl,%dl
4048b8:	80 c2 20             	add    $0x20,%dl
4048bb:	eb 0f                	jmp    0x4048cc
4048bd:	83 fa 19             	cmp    $0x19,%edx
4048c0:	77 0e                	ja     0x4048d0
4048c2:	80 4c 0e 1d 20       	orb    $0x20,0x1d(%esi,%ecx,1)
4048c7:	8a d1                	mov    %cl,%dl
4048c9:	80 ea 20             	sub    $0x20,%dl
4048cc:	88 10                	mov    %dl,(%eax)
4048ce:	eb 03                	jmp    0x4048d3
4048d0:	c6 00 00             	movb   $0x0,(%eax)
4048d3:	41                   	inc    %ecx
4048d4:	3b cf                	cmp    %edi,%ecx
4048d6:	72 c2                	jb     0x40489a
4048d8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4048db:	5f                   	pop    %edi
4048dc:	33 cd                	xor    %ebp,%ecx
4048de:	5b                   	pop    %ebx
4048df:	e8 1c c7 ff ff       	call   0x401000
4048e4:	c9                   	leave
4048e5:	c3                   	ret
4048e6:	6a 0c                	push   $0xc
4048e8:	68 a8 e7 41 00       	push   $0x41e7a8
4048ed:	e8 8e e2 ff ff       	call   0x402b80
4048f2:	e8 83 df ff ff       	call   0x40287a
4048f7:	8b f8                	mov    %eax,%edi
4048f9:	a1 50 fb 41 00       	mov    0x41fb50,%eax
4048fe:	85 47 70             	test   %eax,0x70(%edi)
404901:	74 1d                	je     0x404920
404903:	83 7f 6c 00          	cmpl   $0x0,0x6c(%edi)
404907:	74 17                	je     0x404920
404909:	8b 77 68             	mov    0x68(%edi),%esi
40490c:	85 f6                	test   %esi,%esi
40490e:	75 08                	jne    0x404918
404910:	6a 20                	push   $0x20
404912:	e8 e6 ce ff ff       	call   0x4017fd
404917:	59                   	pop    %ecx
404918:	8b c6                	mov    %esi,%eax
40491a:	e8 a6 e2 ff ff       	call   0x402bc5
40491f:	c3                   	ret
404920:	6a 0d                	push   $0xd
404922:	e8 b0 f1 ff ff       	call   0x403ad7
404927:	59                   	pop    %ecx
404928:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40492c:	8b 77 68             	mov    0x68(%edi),%esi
40492f:	89 75 e4             	mov    %esi,-0x1c(%ebp)
404932:	3b 35 58 f9 41 00    	cmp    0x41f958,%esi
404938:	74 36                	je     0x404970
40493a:	85 f6                	test   %esi,%esi
40493c:	74 1a                	je     0x404958
40493e:	56                   	push   %esi
40493f:	ff 15 4c d0 41 00    	call   *0x41d04c
404945:	85 c0                	test   %eax,%eax
404947:	75 0f                	jne    0x404958