40456b:	8b 07                	mov    (%edi),%eax
40456d:	8b 70 04             	mov    0x4(%eax),%esi
404570:	8b ce                	mov    %esi,%ecx
404572:	ff 15 20 f2 40 00    	call   *0x40f220
404578:	8b cf                	mov    %edi,%ecx
40457a:	ff d6                	call   *%esi
40457c:	8b 7d 08             	mov    0x8(%ebp),%edi
40457f:	85 ff                	test   %edi,%edi
404581:	74 13                	je     0x404596
404583:	8b 07                	mov    (%edi),%eax
404585:	6a 01                	push   $0x1
404587:	8b 70 20             	mov    0x20(%eax),%esi
40458a:	8b ce                	mov    %esi,%ecx
40458c:	ff 15 20 f2 40 00    	call   *0x40f220
404592:	8b cf                	mov    %edi,%ecx
404594:	ff d6                	call   *%esi
404596:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40459a:	8b 3d a4 c5 40 00    	mov    0x40c5a4,%edi
4045a0:	8b 17                	mov    (%edi),%edx
4045a2:	8b 72 08             	mov    0x8(%edx),%esi
4045a5:	8b ce                	mov    %esi,%ecx
4045a7:	ff 15 20 f2 40 00    	call   *0x40f220
4045ad:	8b cf                	mov    %edi,%ecx
4045af:	ff d6                	call   *%esi
4045b1:	8b c3                	mov    %ebx,%eax
4045b3:	e8 e4 57 00 00       	call   0x409d9c
4045b8:	c2 04 00             	ret    $0x4
4045bb:	8b ff                	mov    %edi,%edi
4045bd:	55                   	push   %ebp
4045be:	8b ec                	mov    %esp,%ebp
4045c0:	6a ff                	push   $0xffffffff
4045c2:	68 4e a4 40 00       	push   $0x40a44e
4045c7:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
4045cd:	50                   	push   %eax
4045ce:	56                   	push   %esi
4045cf:	57                   	push   %edi
4045d0:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
4045d5:	33 c5                	xor    %ebp,%eax
4045d7:	50                   	push   %eax
4045d8:	8d 45 f4             	lea    -0xc(%ebp),%eax
4045db:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
4045e1:	8b 3d a4 c5 40 00    	mov    0x40c5a4,%edi
4045e7:	c7 01 70 15 40 00    	movl   $0x401570,(%ecx)
4045ed:	c7 41 04 01 00 00 c0 	movl   $0xc0000001,0x4(%ecx)
4045f4:	8b 07                	mov    (%edi),%eax
4045f6:	8b 70 08             	mov    0x8(%eax),%esi
4045f9:	8b ce                	mov    %esi,%ecx
4045fb:	ff 15 20 f2 40 00    	call   *0x40f220
404601:	8b cf                	mov    %edi,%ecx
404603:	ff d6                	call   *%esi
404605:	8b 4d f4             	mov    -0xc(%ebp),%ecx
404608:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40460f:	59                   	pop    %ecx
404610:	5f                   	pop    %edi
404611:	5e                   	pop    %esi
404612:	c9                   	leave
404613:	c3                   	ret
404614:	cc                   	int3
404615:	cc                   	int3
404616:	cc                   	int3
404617:	cc                   	int3
404618:	cc                   	int3
404619:	cc                   	int3
40461a:	cc                   	int3
40461b:	cc                   	int3
40461c:	cc                   	int3
40461d:	cc                   	int3
40461e:	cc                   	int3
40461f:	cc                   	int3
404620:	8b ff                	mov    %edi,%edi
404622:	55                   	push   %ebp
404623:	8b ec                	mov    %esp,%ebp
404625:	56                   	push   %esi
404626:	8b f1                	mov    %ecx,%esi
404628:	e8 b1 fe ff ff       	call   0x4044de
40462d:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
404631:	74 08                	je     0x40463b
404633:	56                   	push   %esi
404634:	ff 15 04 f2 40 00    	call   *0x40f204
40463a:	59                   	pop    %ecx
40463b:	8b c6                	mov    %esi,%eax
40463d:	5e                   	pop    %esi
40463e:	5d                   	pop    %ebp
40463f:	c2 04 00             	ret    $0x4
404642:	cc                   	int3
404643:	cc                   	int3
404644:	cc                   	int3
404645:	cc                   	int3
404646:	cc                   	int3
404647:	cc                   	int3
404648:	cc                   	int3
404649:	cc                   	int3
40464a:	cc                   	int3
40464b:	cc                   	int3
40464c:	cc                   	int3
40464d:	cc                   	int3
40464e:	cc                   	int3
40464f:	cc                   	int3
404650:	8b ff                	mov    %edi,%edi
404652:	55                   	push   %ebp
404653:	8b ec                	mov    %esp,%ebp
404655:	56                   	push   %esi
404656:	8b f1                	mov    %ecx,%esi
404658:	e8 5e ff ff ff       	call   0x4045bb
40465d:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
404661:	74 08                	je     0x40466b
404663:	56                   	push   %esi
404664:	ff 15 04 f2 40 00    	call   *0x40f204
40466a:	59                   	pop    %ecx
40466b:	8b c6                	mov    %esi,%eax
40466d:	5e                   	pop    %esi
40466e:	5d                   	pop    %ebp
40466f:	c2 04 00             	ret    $0x4
404672:	6a 10                	push   $0x10
404674:	b8 84 a4 40 00       	mov    $0x40a484,%eax
404679:	e8 b9 57 00 00       	call   0x409e37
40467e:	8b f1                	mov    %ecx,%esi
404680:	89 75 ec             	mov    %esi,-0x14(%ebp)
404683:	85 f6                	test   %esi,%esi
404685:	75 07                	jne    0x40468e
404687:	b8 03 40 00 80       	mov    $0x80004003,%eax
40468c:	eb 62                	jmp    0x4046f0
40468e:	83 26 00             	andl   $0x0,(%esi)
404691:	bf 0e 00 07 80       	mov    $0x8007000e,%edi
404696:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40469a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40469e:	6a 08                	push   $0x8
4046a0:	89 7d e8             	mov    %edi,-0x18(%ebp)
4046a3:	e8 ac 46 00 00       	call   0x408d54
4046a8:	59                   	pop    %ecx
4046a9:	8b c8                	mov    %eax,%ecx
4046ab:	85 c9                	test   %ecx,%ecx
4046ad:	74 0c                	je     0x4046bb
4046af:	83 61 04 00          	andl   $0x0,0x4(%ecx)
4046b3:	c7 01 cc 15 40 00    	movl   $0x4015cc,(%ecx)
4046b9:	eb 13                	jmp    0x4046ce
4046bb:	33 c9                	xor    %ecx,%ecx
4046bd:	eb 0f                	jmp    0x4046ce
4046bf:	b8 c5 46 40 00       	mov    $0x4046c5,%eax
4046c4:	c3                   	ret
4046c5:	8b 75 ec             	mov    -0x14(%ebp),%esi
4046c8:	8b 7d e8             	mov    -0x18(%ebp),%edi
4046cb:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
4046ce:	85 c9                	test   %ecx,%ecx
4046d0:	74 1a                	je     0x4046ec
4046d2:	8b 41 04             	mov    0x4(%ecx),%eax
4046d5:	ba ff ff ff 7f       	mov    $0x7fffffff,%edx
4046da:	3b c2                	cmp    %edx,%eax
4046dc:	74 0c                	je     0x4046ea
4046de:	40                   	inc    %eax
4046df:	89 41 04             	mov    %eax,0x4(%ecx)
4046e2:	3b c2                	cmp    %edx,%eax
4046e4:	74 04                	je     0x4046ea
4046e6:	48                   	dec    %eax
4046e7:	89 41 04             	mov    %eax,0x4(%ecx)
4046ea:	33 ff                	xor    %edi,%edi
4046ec:	89 0e                	mov    %ecx,(%esi)
4046ee:	8b c7                	mov    %edi,%eax
4046f0:	e8 a7 56 00 00       	call   0x409d9c
4046f5:	c3                   	ret
4046f6:	cc                   	int3
4046f7:	cc                   	int3
4046f8:	cc                   	int3
4046f9:	cc                   	int3
4046fa:	cc                   	int3
4046fb:	cc                   	int3
4046fc:	cc                   	int3
4046fd:	cc                   	int3
4046fe:	cc                   	int3
4046ff:	cc                   	int3
404700:	8b ff                	mov    %edi,%edi
404702:	55                   	push   %ebp
404703:	8b ec                	mov    %esp,%ebp
404705:	8b 55 14             	mov    0x14(%ebp),%edx
404708:	b8 03 40 00 80       	mov    $0x80004003,%eax
40470d:	85 d2                	test   %edx,%edx
40470f:	74 33                	je     0x404744
404711:	83 22 00             	andl   $0x0,(%edx)
404714:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
404718:	8b 4d 10             	mov    0x10(%ebp),%ecx
40471b:	74 10                	je     0x40472d
40471d:	e8 88 16 00 00       	call   0x405daa
404722:	85 c0                	test   %eax,%eax
404724:	75 07                	jne    0x40472d
404726:	b8 10 01 04 80       	mov    $0x80040110,%eax
40472b:	eb 17                	jmp    0x404744
40472d:	8b 45 08             	mov    0x8(%ebp),%eax
404730:	56                   	push   %esi
404731:	52                   	push   %edx
404732:	51                   	push   %ecx
404733:	8b 70 24             	mov    0x24(%eax),%esi
404736:	8b ce                	mov    %esi,%ecx
404738:	ff 75 0c             	push   0xc(%ebp)
40473b:	ff 15 20 f2 40 00    	call   *0x40f220
404741:	ff d6                	call   *%esi
404743:	5e                   	pop    %esi
404744:	5d                   	pop    %ebp
404745:	c2 10 00             	ret    $0x10
404748:	cc                   	int3
404749:	cc                   	int3
40474a:	cc                   	int3
40474b:	cc                   	int3
40474c:	cc                   	int3
40474d:	cc                   	int3
40474e:	cc                   	int3
40474f:	cc                   	int3
404750:	8b ff                	mov    %edi,%edi
404752:	55                   	push   %ebp
404753:	8b ec                	mov    %esp,%ebp
404755:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
404759:	56                   	push   %esi
40475a:	57                   	push   %edi
40475b:	8b 3d a4 c5 40 00    	mov    0x40c5a4,%edi
404761:	8b 07                	mov    (%edi),%eax
404763:	74 05                	je     0x40476a
404765:	8b 70 04             	mov    0x4(%eax),%esi
404768:	eb 03                	jmp    0x40476d
40476a:	8b 70 08             	mov    0x8(%eax),%esi
40476d:	8b ce                	mov    %esi,%ecx
40476f:	ff 15 20 f2 40 00    	call   *0x40f220
404775:	8b cf                	mov    %edi,%ecx
404777:	ff d6                	call   *%esi
404779:	5f                   	pop    %edi
40477a:	33 c0                	xor    %eax,%eax
40477c:	5e                   	pop    %esi
40477d:	5d                   	pop    %ebp
40477e:	c2 08 00             	ret    $0x8
404781:	8b ff                	mov    %edi,%edi
404783:	55                   	push   %ebp
404784:	8b ec                	mov    %esp,%ebp
404786:	56                   	push   %esi
404787:	8b 75 0c             	mov    0xc(%ebp),%esi
40478a:	85 f6                	test   %esi,%esi
40478c:	75 07                	jne    0x404795
40478e:	b8 03 40 00 80       	mov    $0x80004003,%eax
404793:	eb 3a                	jmp    0x4047cf
404795:	a1 6c c0 40 00       	mov    0x40c06c,%eax
40479a:	33 c9                	xor    %ecx,%ecx
40479c:	85 c0                	test   %eax,%eax
40479e:	75 0f                	jne    0x4047af
4047a0:	ff 75 08             	push   0x8(%ebp)
4047a3:	e8 b3 04 00 00       	call   0x404c5b
4047a8:	8b c8                	mov    %eax,%ecx
4047aa:	a1 6c c0 40 00       	mov    0x40c06c,%eax
4047af:	89 06                	mov    %eax,(%esi)
4047b1:	8b 15 6c c0 40 00    	mov    0x40c06c,%edx
4047b7:	85 d2                	test   %edx,%edx
4047b9:	74 12                	je     0x4047cd
4047bb:	8b 02                	mov    (%edx),%eax
4047bd:	52                   	push   %edx
4047be:	8b 70 04             	mov    0x4(%eax),%esi
4047c1:	8b ce                	mov    %esi,%ecx
4047c3:	ff 15 20 f2 40 00    	call   *0x40f220
4047c9:	ff d6                	call   *%esi
4047cb:	33 c9                	xor    %ecx,%ecx
4047cd:	8b c1                	mov    %ecx,%eax
4047cf:	5e                   	pop    %esi
4047d0:	5d                   	pop    %ebp
4047d1:	c2 08 00             	ret    $0x8
4047d4:	8b ff                	mov    %edi,%edi
4047d6:	55                   	push   %ebp
4047d7:	8b ec                	mov    %esp,%ebp
4047d9:	83 ec 10             	sub    $0x10,%esp
4047dc:	33 c0                	xor    %eax,%eax
4047de:	56                   	push   %esi
4047df:	57                   	push   %edi
4047e0:	8b 3d 6c c0 40 00    	mov    0x40c06c,%edi
4047e6:	85 ff                	test   %edi,%edi
4047e8:	74 0a                	je     0x4047f4
4047ea:	8b 35 74 c0 40 00    	mov    0x40c074,%esi
4047f0:	85 f6                	test   %esi,%esi
4047f2:	75 14                	jne    0x404808
4047f4:	ff 75 14             	push   0x14(%ebp)
4047f7:	e8 5f 04 00 00       	call   0x404c5b
4047fc:	8b 35 74 c0 40 00    	mov    0x40c074,%esi
404802:	8b 3d 6c c0 40 00    	mov    0x40c06c,%edi
404808:	85 ff                	test   %edi,%edi
40480a:	74 7b                	je     0x404887
40480c:	85 f6                	test   %esi,%esi
40480e:	74 5e                	je     0x40486e
404810:	83 7d 10 01          	cmpl   $0x1,0x10(%ebp)
404814:	75 58                	jne    0x40486e
404816:	8b 45 0c             	mov    0xc(%ebp),%eax
404819:	8b 00                	mov    (%eax),%eax
40481b:	8b c8                	mov    %eax,%ecx
40481d:	89 45 f0             	mov    %eax,-0x10(%ebp)
404820:	e8 34 18 00 00       	call   0x406059
404825:	89 45 f4             	mov    %eax,-0xc(%ebp)
404828:	a1 78 c0 40 00       	mov    0x40c078,%eax
40482d:	83 e8 01             	sub    $0x1,%eax
404830:	89 45 fc             	mov    %eax,-0x4(%ebp)
404833:	78 39                	js     0x40486e
404835:	6b c8 0c             	imul   $0xc,%eax,%ecx
404838:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40483b:	8b 54 31 04          	mov    0x4(%ecx,%esi,1),%edx
40483f:	39 55 f4             	cmp    %edx,-0xc(%ebp)
404842:	75 1c                	jne    0x404860
404844:	8d 04 12             	lea    (%edx,%edx,1),%eax
404847:	50                   	push   %eax
404848:	ff 75 f0             	push   -0x10(%ebp)
40484b:	ff 34 31             	push   (%ecx,%esi,1)
40484e:	e8 88 5b 00 00       	call   0x40a3db
404853:	83 c4 0c             	add    $0xc,%esp
404856:	85 c0                	test   %eax,%eax
404858:	74 33                	je     0x40488d
40485a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40485d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
404860:	48                   	dec    %eax
404861:	83 e9 0c             	sub    $0xc,%ecx
404864:	89 45 fc             	mov    %eax,-0x4(%ebp)
404867:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40486a:	85 c0                	test   %eax,%eax
40486c:	79 cd                	jns    0x40483b
40486e:	ff 75 18             	push   0x18(%ebp)
404871:	8b 37                	mov    (%edi),%esi
404873:	ff 75 10             	push   0x10(%ebp)
404876:	ff 75 0c             	push   0xc(%ebp)
404879:	8b 76 28             	mov    0x28(%esi),%esi
40487c:	8b ce                	mov    %esi,%ecx
40487e:	57                   	push   %edi
40487f:	ff 15 20 f2 40 00    	call   *0x40f220
404885:	ff d6                	call   *%esi
404887:	5f                   	pop    %edi
404888:	5e                   	pop    %esi
404889:	c9                   	leave
40488a:	c2 14 00             	ret    $0x14
40488d:	6b 45 fc 0c          	imul   $0xc,-0x4(%ebp),%eax
404891:	8b 4c 30 08          	mov    0x8(%eax,%esi,1),%ecx
404895:	8b 45 18             	mov    0x18(%ebp),%eax
404898:	89 08                	mov    %ecx,(%eax)
40489a:	33 c0                	xor    %eax,%eax
40489c:	eb e9                	jmp    0x404887
40489e:	8b ff                	mov    %edi,%edi
4048a0:	55                   	push   %ebp
4048a1:	8b ec                	mov    %esp,%ebp
4048a3:	6a ff                	push   $0xffffffff
4048a5:	68 9f a4 40 00       	push   $0x40a49f
4048aa:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
4048b0:	50                   	push   %eax
4048b1:	56                   	push   %esi
4048b2:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
4048b7:	33 c5                	xor    %ebp,%eax
4048b9:	50                   	push   %eax
4048ba:	8d 45 f4             	lea    -0xc(%ebp),%eax
4048bd:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
4048c3:	8b 09                	mov    (%ecx),%ecx
4048c5:	85 c9                	test   %ecx,%ecx
4048c7:	74 10                	je     0x4048d9
4048c9:	8b 01                	mov    (%ecx),%eax
4048cb:	51                   	push   %ecx