401566:	56                   	push   %esi
401567:	57                   	push   %edi
401568:	8b 7d 10             	mov    0x10(%ebp),%edi
40156b:	57                   	push   %edi
40156c:	ff 75 0c             	push   0xc(%ebp)
40156f:	53                   	push   %ebx
401570:	e8 30 0c 00 00       	call   0x4021a5
401575:	8b f0                	mov    %eax,%esi
401577:	85 f6                	test   %esi,%esi
401579:	78 60                	js     0x4015db
40157b:	85 ff                	test   %edi,%edi
40157d:	75 19                	jne    0x401598
40157f:	8d 45 10             	lea    0x10(%ebp),%eax
401582:	50                   	push   %eax
401583:	68 ff ff ff 7f       	push   $0x7fffffff
401588:	ff 33                	push   (%ebx)
40158a:	e8 c8 06 00 00       	call   0x401c57
40158f:	8b f0                	mov    %eax,%esi
401591:	85 f6                	test   %esi,%esi
401593:	78 46                	js     0x4015db
401595:	8b 7d 10             	mov    0x10(%ebp),%edi
401598:	57                   	push   %edi
401599:	ff 33                	push   (%ebx)
40159b:	57                   	push   %edi
40159c:	ff 33                	push   (%ebx)
40159e:	ff 75 14             	push   0x14(%ebp)
4015a1:	6a 7f                	push   $0x7f
4015a3:	ff 15 04 b1 44 00    	call   *0x44b104
4015a9:	85 c0                	test   %eax,%eax
4015ab:	75 2e                	jne    0x4015db
4015ad:	ff 15 e8 b0 44 00    	call   *0x44b0e8
4015b3:	0f b7 f0             	movzwl %ax,%esi
4015b6:	81 ce 00 00 07 80    	or     $0x80070000,%esi
4015bc:	85 c0                	test   %eax,%eax
4015be:	0f 4e f0             	cmovle %eax,%esi
4015c1:	b8 05 40 00 80       	mov    $0x80004005,%eax
4015c6:	85 f6                	test   %esi,%esi
4015c8:	0f 49 f0             	cmovns %eax,%esi
4015cb:	56                   	push   %esi
4015cc:	68 51 0a 00 00       	push   $0xa51
4015d1:	68 90 b5 44 00       	push   $0x44b590
4015d6:	e8 f8 21 00 00       	call   0x4037d3
4015db:	5f                   	pop    %edi
4015dc:	8b c6                	mov    %esi,%eax
4015de:	5e                   	pop    %esi
4015df:	5b                   	pop    %ebx
4015e0:	5d                   	pop    %ebp
4015e1:	c2 10 00             	ret    $0x10
4015e4:	55                   	push   %ebp
4015e5:	8b ec                	mov    %esp,%ebp
4015e7:	51                   	push   %ecx
4015e8:	51                   	push   %ecx
4015e9:	56                   	push   %esi
4015ea:	33 f6                	xor    %esi,%esi
4015ec:	f7 45 20 00 01 00 00 	testl  $0x100,0x20(%ebp)
4015f3:	57                   	push   %edi
4015f4:	8b 7d 0c             	mov    0xc(%ebp),%edi
4015f7:	74 36                	je     0x40162f
4015f9:	8b 45 08             	mov    0x8(%ebp),%eax
4015fc:	85 c0                	test   %eax,%eax
4015fe:	75 04                	jne    0x401604
401600:	85 ff                	test   %edi,%edi
401602:	75 08                	jne    0x40160c
401604:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
40160a:	76 05                	jbe    0x401611
40160c:	be 57 00 07 80       	mov    $0x80070057,%esi
401611:	85 f6                	test   %esi,%esi
401613:	78 16                	js     0x40162b
401615:	85 ff                	test   %edi,%edi
401617:	74 12                	je     0x40162b
401619:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40161c:	51                   	push   %ecx
40161d:	57                   	push   %edi
40161e:	50                   	push   %eax
40161f:	e8 31 08 00 00       	call   0x401e55
401624:	8b 4d 0c             	mov    0xc(%ebp),%ecx
401627:	8b f0                	mov    %eax,%esi
401629:	eb 26                	jmp    0x401651
40162b:	33 c9                	xor    %ecx,%ecx
40162d:	eb 25                	jmp    0x401654
40162f:	85 ff                	test   %edi,%edi
401631:	74 08                	je     0x40163b
401633:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
401639:	76 05                	jbe    0x401640
40163b:	be 57 00 07 80       	mov    $0x80070057,%esi
401640:	85 f6                	test   %esi,%esi
401642:	78 0b                	js     0x40164f
401644:	8b 4d 08             	mov    0x8(%ebp),%ecx
401647:	8d 45 0c             	lea    0xc(%ebp),%eax
40164a:	50                   	push   %eax
40164b:	57                   	push   %edi
40164c:	51                   	push   %ecx
40164d:	eb d0                	jmp    0x40161f
40164f:	33 c9                	xor    %ecx,%ecx
401651:	8b 45 08             	mov    0x8(%ebp),%eax
401654:	89 4d fc             	mov    %ecx,-0x4(%ebp)
401657:	85 f6                	test   %esi,%esi
401659:	78 7f                	js     0x4016da
40165b:	53                   	push   %ebx
40165c:	ff 75 20             	push   0x20(%ebp)
40165f:	03 c1                	add    %ecx,%eax
401661:	8b df                	mov    %edi,%ebx
401663:	89 45 0c             	mov    %eax,0xc(%ebp)
401666:	2b d9                	sub    %ecx,%ebx
401668:	68 ff ff ff 7f       	push   $0x7fffffff
40166d:	8d 45 14             	lea    0x14(%ebp),%eax
401670:	89 5d f8             	mov    %ebx,-0x8(%ebp)
401673:	50                   	push   %eax
401674:	8d 45 10             	lea    0x10(%ebp),%eax
401677:	50                   	push   %eax
401678:	e8 60 07 00 00       	call   0x401ddd
40167d:	8b f0                	mov    %eax,%esi
40167f:	85 f6                	test   %esi,%esi
401681:	78 0e                	js     0x401691
401683:	f7 45 20 00 e0 ff ff 	testl  $0xffffe000,0x20(%ebp)
40168a:	74 58                	je     0x4016e4
40168c:	be 57 00 07 80       	mov    $0x80070057,%esi
401691:	8b 4d 08             	mov    0x8(%ebp),%ecx
401694:	8b 45 20             	mov    0x20(%ebp),%eax
401697:	a9 00 1c 00 00       	test   $0x1c00,%eax
40169c:	74 1a                	je     0x4016b8
40169e:	85 ff                	test   %edi,%edi
4016a0:	74 16                	je     0x4016b8
4016a2:	50                   	push   %eax
4016a3:	8d 45 f8             	lea    -0x8(%ebp),%eax
4016a6:	50                   	push   %eax
4016a7:	8d 45 0c             	lea    0xc(%ebp),%eax
4016aa:	50                   	push   %eax
4016ab:	ff 75 fc             	push   -0x4(%ebp)
4016ae:	57                   	push   %edi
4016af:	51                   	push   %ecx
4016b0:	e8 8f 06 00 00       	call   0x401d44
4016b5:	8b 5d f8             	mov    -0x8(%ebp),%ebx
4016b8:	85 f6                	test   %esi,%esi
4016ba:	79 08                	jns    0x4016c4
4016bc:	81 fe 7a 00 07 80    	cmp    $0x8007007a,%esi
4016c2:	75 15                	jne    0x4016d9
4016c4:	8b 4d 18             	mov    0x18(%ebp),%ecx
4016c7:	85 c9                	test   %ecx,%ecx
4016c9:	74 05                	je     0x4016d0
4016cb:	8b 45 0c             	mov    0xc(%ebp),%eax
4016ce:	89 01                	mov    %eax,(%ecx)
4016d0:	8b 45 1c             	mov    0x1c(%ebp),%eax
4016d3:	85 c0                	test   %eax,%eax
4016d5:	74 02                	je     0x4016d9
4016d7:	89 18                	mov    %ebx,(%eax)
4016d9:	5b                   	pop    %ebx
4016da:	5f                   	pop    %edi
4016db:	8b c6                	mov    %esi,%eax
4016dd:	5e                   	pop    %esi
4016de:	8b e5                	mov    %ebp,%esp
4016e0:	5d                   	pop    %ebp
4016e1:	c2 1c 00             	ret    $0x1c
4016e4:	83 fb 01             	cmp    $0x1,%ebx
4016e7:	77 23                	ja     0x40170c
4016e9:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
4016ed:	8b 4d 08             	mov    0x8(%ebp),%ecx
4016f0:	74 72                	je     0x401764
4016f2:	8b 45 10             	mov    0x10(%ebp),%eax
4016f5:	80 38 00             	cmpb   $0x0,(%eax)
4016f8:	74 6a                	je     0x401764
4016fa:	85 c9                	test   %ecx,%ecx
4016fc:	75 07                	jne    0x401705
4016fe:	be 57 00 07 80       	mov    $0x80070057,%esi
401703:	eb 8f                	jmp    0x401694
401705:	be 7a 00 07 80       	mov    $0x8007007a,%esi
40170a:	eb 58                	jmp    0x401764
40170c:	ff 75 14             	push   0x14(%ebp)
40170f:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
401713:	8d 45 f8             	lea    -0x8(%ebp),%eax
401716:	ff 75 10             	push   0x10(%ebp)
401719:	50                   	push   %eax
40171a:	8b 45 0c             	mov    0xc(%ebp),%eax
40171d:	53                   	push   %ebx
40171e:	50                   	push   %eax
40171f:	e8 c3 05 00 00       	call   0x401ce7
401724:	8b 55 0c             	mov    0xc(%ebp),%edx
401727:	8b f0                	mov    %eax,%esi
401729:	03 55 f8             	add    -0x8(%ebp),%edx
40172c:	2b 5d f8             	sub    -0x8(%ebp),%ebx
40172f:	89 55 0c             	mov    %edx,0xc(%ebp)
401732:	89 5d f8             	mov    %ebx,-0x8(%ebp)
401735:	85 f6                	test   %esi,%esi
401737:	0f 88 54 ff ff ff    	js     0x401691
40173d:	8b 4d 20             	mov    0x20(%ebp),%ecx
401740:	f7 c1 00 02 00 00    	test   $0x200,%ecx
401746:	74 19                	je     0x401761
401748:	83 fb 01             	cmp    $0x1,%ebx
40174b:	76 14                	jbe    0x401761
40174d:	8d 43 ff             	lea    -0x1(%ebx),%eax
401750:	50                   	push   %eax
401751:	0f b6 c1             	movzbl %cl,%eax
401754:	50                   	push   %eax
401755:	8d 42 01             	lea    0x1(%edx),%eax
401758:	50                   	push   %eax
401759:	e8 12 df 02 00       	call   0x42f670
40175e:	83 c4 0c             	add    $0xc,%esp
401761:	8b 4d 08             	mov    0x8(%ebp),%ecx
401764:	85 f6                	test   %esi,%esi
401766:	0f 89 58 ff ff ff    	jns    0x4016c4
40176c:	e9 23 ff ff ff       	jmp    0x401694
401771:	55                   	push   %ebp
401772:	8b ec                	mov    %esp,%ebp
401774:	51                   	push   %ecx
401775:	51                   	push   %ecx
401776:	56                   	push   %esi
401777:	33 c0                	xor    %eax,%eax
401779:	f7 45 20 00 01 00 00 	testl  $0x100,0x20(%ebp)
401780:	57                   	push   %edi
401781:	8b 7d 0c             	mov    0xc(%ebp),%edi
401784:	8b f0                	mov    %eax,%esi
401786:	74 36                	je     0x4017be
401788:	8b 4d 08             	mov    0x8(%ebp),%ecx
40178b:	85 c9                	test   %ecx,%ecx
40178d:	75 04                	jne    0x401793
40178f:	85 ff                	test   %edi,%edi
401791:	75 08                	jne    0x40179b
401793:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
401799:	76 05                	jbe    0x4017a0
40179b:	be 57 00 07 80       	mov    $0x80070057,%esi
4017a0:	85 f6                	test   %esi,%esi
4017a2:	78 16                	js     0x4017ba
4017a4:	85 ff                	test   %edi,%edi
4017a6:	74 12                	je     0x4017ba
4017a8:	8d 45 0c             	lea    0xc(%ebp),%eax
4017ab:	50                   	push   %eax
4017ac:	57                   	push   %edi
4017ad:	51                   	push   %ecx
4017ae:	e8 e4 06 00 00       	call   0x401e97
4017b3:	8b 55 0c             	mov    0xc(%ebp),%edx
4017b6:	8b f0                	mov    %eax,%esi
4017b8:	eb 20                	jmp    0x4017da
4017ba:	8b d0                	mov    %eax,%edx
4017bc:	eb 1f                	jmp    0x4017dd
4017be:	85 ff                	test   %edi,%edi
4017c0:	74 08                	je     0x4017ca
4017c2:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
4017c8:	76 05                	jbe    0x4017cf
4017ca:	be 57 00 07 80       	mov    $0x80070057,%esi
4017cf:	85 f6                	test   %esi,%esi
4017d1:	78 05                	js     0x4017d8
4017d3:	8b 4d 08             	mov    0x8(%ebp),%ecx
4017d6:	eb d0                	jmp    0x4017a8
4017d8:	8b d0                	mov    %eax,%edx
4017da:	8b 4d 08             	mov    0x8(%ebp),%ecx
4017dd:	89 55 fc             	mov    %edx,-0x4(%ebp)
4017e0:	85 f6                	test   %esi,%esi
4017e2:	0f 88 83 00 00 00    	js     0x40186b
4017e8:	53                   	push   %ebx
4017e9:	ff 75 20             	push   0x20(%ebp)
4017ec:	8d 04 51             	lea    (%ecx,%edx,2),%eax
4017ef:	8b df                	mov    %edi,%ebx
4017f1:	89 45 0c             	mov    %eax,0xc(%ebp)
4017f4:	2b da                	sub    %edx,%ebx
4017f6:	68 ff ff ff 7f       	push   $0x7fffffff
4017fb:	8d 45 14             	lea    0x14(%ebp),%eax
4017fe:	89 5d f8             	mov    %ebx,-0x8(%ebp)
401801:	50                   	push   %eax
401802:	8d 45 10             	lea    0x10(%ebp),%eax
401805:	50                   	push   %eax
401806:	e8 0e 06 00 00       	call   0x401e19
40180b:	8b f0                	mov    %eax,%esi
40180d:	85 f6                	test   %esi,%esi
40180f:	78 0e                	js     0x40181f
401811:	f7 45 20 00 e0 ff ff 	testl  $0xffffe000,0x20(%ebp)
401818:	74 5b                	je     0x401875
40181a:	be 57 00 07 80       	mov    $0x80070057,%esi
40181f:	8b 4d 08             	mov    0x8(%ebp),%ecx
401822:	8b 45 20             	mov    0x20(%ebp),%eax
401825:	a9 00 1c 00 00       	test   $0x1c00,%eax
40182a:	74 1d                	je     0x401849
40182c:	85 ff                	test   %edi,%edi
40182e:	74 19                	je     0x401849
401830:	50                   	push   %eax
401831:	8d 45 f8             	lea    -0x8(%ebp),%eax
401834:	50                   	push   %eax
401835:	8d 45 0c             	lea    0xc(%ebp),%eax
401838:	50                   	push   %eax
401839:	ff 75 fc             	push   -0x4(%ebp)
40183c:	8d 04 3f             	lea    (%edi,%edi,1),%eax
40183f:	50                   	push   %eax
401840:	51                   	push   %ecx
401841:	e8 c5 e2 01 00       	call   0x41fb0b
401846:	8b 5d f8             	mov    -0x8(%ebp),%ebx
401849:	85 f6                	test   %esi,%esi
40184b:	79 08                	jns    0x401855
40184d:	81 fe 7a 00 07 80    	cmp    $0x8007007a,%esi
401853:	75 15                	jne    0x40186a
401855:	8b 4d 18             	mov    0x18(%ebp),%ecx
401858:	85 c9                	test   %ecx,%ecx
40185a:	74 05                	je     0x401861
40185c:	8b 45 0c             	mov    0xc(%ebp),%eax
40185f:	89 01                	mov    %eax,(%ecx)
401861:	8b 45 1c             	mov    0x1c(%ebp),%eax
401864:	85 c0                	test   %eax,%eax
401866:	74 02                	je     0x40186a
401868:	89 18                	mov    %ebx,(%eax)
40186a:	5b                   	pop    %ebx
40186b:	5f                   	pop    %edi
40186c:	8b c6                	mov    %esi,%eax
40186e:	5e                   	pop    %esi
40186f:	8b e5                	mov    %ebp,%esp
401871:	5d                   	pop    %ebp
401872:	c2 1c 00             	ret    $0x1c
401875:	83 fb 01             	cmp    $0x1,%ebx
401878:	77 25                	ja     0x40189f
40187a:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
40187e:	74 7f                	je     0x4018ff
401880:	8b 45 10             	mov    0x10(%ebp),%eax
401883:	33 c9                	xor    %ecx,%ecx
401885:	66 39 08             	cmp    %cx,(%eax)
401888:	8b 4d 08             	mov    0x8(%ebp),%ecx
40188b:	74 75                	je     0x401902
40188d:	85 c9                	test   %ecx,%ecx
40188f:	75 07                	jne    0x401898
401891:	be 57 00 07 80       	mov    $0x80070057,%esi
401896:	eb 8a                	jmp    0x401822
401898:	be 7a 00 07 80       	mov    $0x8007007a,%esi
40189d:	eb 63                	jmp    0x401902
40189f:	ff 75 14             	push   0x14(%ebp)
4018a2:	8d 45 f8             	lea    -0x8(%ebp),%eax
4018a5:	33 c9                	xor    %ecx,%ecx
4018a7:	ff 75 10             	push   0x10(%ebp)
4018aa:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4018ad:	50                   	push   %eax
4018ae:	8b 45 0c             	mov    0xc(%ebp),%eax
4018b1:	53                   	push   %ebx
4018b2:	50                   	push   %eax
4018b3:	e8 f6 e1 01 00       	call   0x41faae
4018b8:	8b 55 0c             	mov    0xc(%ebp),%edx
4018bb:	8b f0                	mov    %eax,%esi
4018bd:	8b 45 f8             	mov    -0x8(%ebp),%eax
4018c0:	2b d8                	sub    %eax,%ebx
4018c2:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4018c5:	8d 14 42             	lea    (%edx,%eax,2),%edx
4018c8:	89 55 0c             	mov    %edx,0xc(%ebp)
4018cb:	85 f6                	test   %esi,%esi
4018cd:	0f 88 4c ff ff ff    	js     0x40181f
4018d3:	8b 4d 20             	mov    0x20(%ebp),%ecx
4018d6:	f7 c1 00 02 00 00    	test   $0x200,%ecx
4018dc:	74 21                	je     0x4018ff
4018de:	83 fb 01             	cmp    $0x1,%ebx
4018e1:	76 1c                	jbe    0x4018ff
4018e3:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
4018e6:	83 f8 02             	cmp    $0x2,%eax
4018e9:	76 14                	jbe    0x4018ff
4018eb:	83 c0 fe             	add    $0xfffffffe,%eax
4018ee:	50                   	push   %eax
4018ef:	0f b6 c1             	movzbl %cl,%eax
4018f2:	50                   	push   %eax