52058d:	8b 44 24 2c          	mov    0x2c(%esp),%eax
520591:	68 80 00 00 00       	push   $0x80
520596:	83 c0 04             	add    $0x4,%eax
520599:	50                   	push   %eax
52059a:	57                   	push   %edi
52059b:	e8 a0 89 fd ff       	call   0x4f8f40
5205a0:	83 c4 0c             	add    $0xc,%esp
5205a3:	85 c0                	test   %eax,%eax
5205a5:	74 4f                	je     0x5205f6
5205a7:	8d 43 ff             	lea    -0x1(%ebx),%eax
5205aa:	b9 64 25 60 00       	mov    $0x602564,%ecx
5205af:	3b f0                	cmp    %eax,%esi
5205b1:	b8 5c c0 60 00       	mov    $0x60c05c,%eax
5205b6:	0f 45 c8             	cmovne %eax,%ecx
5205b9:	0f b6 04 2e          	movzbl (%esi,%ebp,1),%eax
5205bd:	51                   	push   %ecx
5205be:	50                   	push   %eax
5205bf:	68 a4 10 64 00       	push   $0x6410a4
5205c4:	57                   	push   %edi
5205c5:	e8 76 1f fc ff       	call   0x4e2540
5205ca:	83 c4 10             	add    $0x10,%esp
5205cd:	85 c0                	test   %eax,%eax
5205cf:	7e 25                	jle    0x5205f6
5205d1:	46                   	inc    %esi
5205d2:	3b f3                	cmp    %ebx,%esi
5205d4:	72 8a                	jb     0x520560
5205d6:	6a 01                	push   $0x1
5205d8:	68 cc 26 60 00       	push   $0x6026cc
5205dd:	57                   	push   %edi
5205de:	e8 dd 8e fd ff       	call   0x4f94c0
5205e3:	33 c9                	xor    %ecx,%ecx
5205e5:	83 c4 0c             	add    $0xc,%esp
5205e8:	85 c0                	test   %eax,%eax
5205ea:	ba 01 00 00 00       	mov    $0x1,%edx
5205ef:	0f 4f ca             	cmovg  %edx,%ecx
5205f2:	89 4c 24 10          	mov    %ecx,0x10(%esp)
5205f6:	6a 5b                	push   $0x5b
5205f8:	68 c8 10 64 00       	push   $0x6410c8
5205fd:	ff 74 24 1c          	push   0x1c(%esp)
520601:	ff 74 24 30          	push   0x30(%esp)
520605:	e8 36 02 fc ff       	call   0x4e0840
52060a:	8b 44 24 20          	mov    0x20(%esp),%eax
52060e:	83 c4 10             	add    $0x10,%esp
520611:	5f                   	pop    %edi
520612:	5e                   	pop    %esi
520613:	5d                   	pop    %ebp
520614:	5b                   	pop    %ebx
520615:	83 c4 08             	add    $0x8,%esp
520618:	c3                   	ret
520619:	5f                   	pop    %edi
52061a:	5e                   	pop    %esi
52061b:	5d                   	pop    %ebp
52061c:	b8 01 00 00 00       	mov    $0x1,%eax
520621:	5b                   	pop    %ebx
520622:	83 c4 08             	add    $0x8,%esp
520625:	c3                   	ret
520626:	cc                   	int3
520627:	cc                   	int3
520628:	cc                   	int3
520629:	cc                   	int3
52062a:	cc                   	int3
52062b:	cc                   	int3
52062c:	cc                   	int3
52062d:	cc                   	int3
52062e:	cc                   	int3
52062f:	cc                   	int3
520630:	53                   	push   %ebx
520631:	8b 5c 24 10          	mov    0x10(%esp),%ebx
520635:	55                   	push   %ebp
520636:	56                   	push   %esi
520637:	33 f6                	xor    %esi,%esi
520639:	57                   	push   %edi
52063a:	8b 7c 24 14          	mov    0x14(%esp),%edi
52063e:	85 db                	test   %ebx,%ebx
520640:	74 77                	je     0x5206b9
520642:	8b 6c 24 20          	mov    0x20(%esp),%ebp
520646:	b8 89 88 88 88       	mov    $0x88888889,%eax
52064b:	f7 e6                	mul    %esi
52064d:	8b c6                	mov    %esi,%eax
52064f:	c1 ea 03             	shr    $0x3,%edx
520652:	8b ca                	mov    %edx,%ecx
520654:	c1 e1 04             	shl    $0x4,%ecx
520657:	2b ca                	sub    %edx,%ecx
520659:	2b c1                	sub    %ecx,%eax
52065b:	75 29                	jne    0x520686
52065d:	85 f6                	test   %esi,%esi
52065f:	74 12                	je     0x520673
520661:	68 cc 26 60 00       	push   $0x6026cc
520666:	57                   	push   %edi
520667:	e8 64 8c fd ff       	call   0x4f92d0
52066c:	83 c4 08             	add    $0x8,%esp
52066f:	85 c0                	test   %eax,%eax
520671:	7e 5a                	jle    0x5206cd
520673:	68 80 00 00 00       	push   $0x80
520678:	55                   	push   %ebp
520679:	57                   	push   %edi
52067a:	e8 c1 88 fd ff       	call   0x4f8f40
52067f:	83 c4 0c             	add    $0xc,%esp
520682:	85 c0                	test   %eax,%eax
520684:	74 47                	je     0x5206cd
520686:	8d 43 ff             	lea    -0x1(%ebx),%eax
520689:	b9 64 25 60 00       	mov    $0x602564,%ecx
52068e:	3b f0                	cmp    %eax,%esi
520690:	b8 5c c0 60 00       	mov    $0x60c05c,%eax
520695:	0f 45 c8             	cmovne %eax,%ecx
520698:	8b 44 24 18          	mov    0x18(%esp),%eax
52069c:	51                   	push   %ecx
52069d:	0f b6 04 06          	movzbl (%esi,%eax,1),%eax
5206a1:	50                   	push   %eax
5206a2:	68 a4 10 64 00       	push   $0x6410a4
5206a7:	57                   	push   %edi
5206a8:	e8 93 1e fc ff       	call   0x4e2540
5206ad:	83 c4 10             	add    $0x10,%esp
5206b0:	85 c0                	test   %eax,%eax
5206b2:	7e 19                	jle    0x5206cd
5206b4:	46                   	inc    %esi
5206b5:	3b f3                	cmp    %ebx,%esi
5206b7:	72 8d                	jb     0x520646
5206b9:	6a 01                	push   $0x1
5206bb:	68 cc 26 60 00       	push   $0x6026cc
5206c0:	57                   	push   %edi
5206c1:	e8 fa 8d fd ff       	call   0x4f94c0
5206c6:	83 c4 0c             	add    $0xc,%esp
5206c9:	85 c0                	test   %eax,%eax
5206cb:	7f 07                	jg     0x5206d4
5206cd:	5f                   	pop    %edi
5206ce:	5e                   	pop    %esi
5206cf:	5d                   	pop    %ebp
5206d0:	33 c0                	xor    %eax,%eax
5206d2:	5b                   	pop    %ebx
5206d3:	c3                   	ret
5206d4:	5f                   	pop    %edi
5206d5:	5e                   	pop    %esi
5206d6:	5d                   	pop    %ebp
5206d7:	b8 01 00 00 00       	mov    $0x1,%eax
5206dc:	5b                   	pop    %ebx
5206dd:	c3                   	ret
5206de:	cc                   	int3
5206df:	cc                   	int3
5206e0:	56                   	push   %esi
5206e1:	8b 74 24 08          	mov    0x8(%esp),%esi
5206e5:	8b 46 10             	mov    0x10(%esi),%eax
5206e8:	8b 00                	mov    (%eax),%eax
5206ea:	8b 40 6c             	mov    0x6c(%eax),%eax
5206ed:	85 c0                	test   %eax,%eax
5206ef:	74 18                	je     0x520709
5206f1:	ff 74 24 18          	push   0x18(%esp)
5206f5:	ff 74 24 18          	push   0x18(%esp)
5206f9:	ff 74 24 18          	push   0x18(%esp)
5206fd:	ff 74 24 18          	push   0x18(%esp)
520701:	56                   	push   %esi
520702:	ff d0                	call   *%eax
520704:	83 c4 14             	add    $0x14,%esp
520707:	5e                   	pop    %esi
520708:	c3                   	ret
520709:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
52070e:	74 19                	je     0x520729
520710:	ff 74 24 18          	push   0x18(%esp)
520714:	ff 74 24 18          	push   0x18(%esp)
520718:	56                   	push   %esi
520719:	e8 b2 a6 ff ff       	call   0x51add0
52071e:	83 c4 0c             	add    $0xc,%esp
520721:	85 c0                	test   %eax,%eax
520723:	7f 04                	jg     0x520729
520725:	33 c0                	xor    %eax,%eax
520727:	5e                   	pop    %esi
520728:	c3                   	ret
520729:	ff 74 24 10          	push   0x10(%esp)
52072d:	ff 74 24 10          	push   0x10(%esp)
520731:	56                   	push   %esi
520732:	e8 09 00 00 00       	call   0x520740
520737:	83 c4 0c             	add    $0xc,%esp
52073a:	5e                   	pop    %esi
52073b:	c3                   	ret
52073c:	cc                   	int3
52073d:	cc                   	int3
52073e:	cc                   	int3
52073f:	cc                   	int3
520740:	b8 50 00 00 00       	mov    $0x50,%eax
520745:	e8 66 10 0b 00       	call   0x5d17b0
52074a:	a1 c0 14 69 00       	mov    0x6914c0,%eax
52074f:	33 c4                	xor    %esp,%eax
520751:	89 44 24 4c          	mov    %eax,0x4c(%esp)
520755:	8b 44 24 58          	mov    0x58(%esp),%eax
520759:	53                   	push   %ebx
52075a:	8b 5c 24 60          	mov    0x60(%esp),%ebx
52075e:	55                   	push   %ebp
52075f:	56                   	push   %esi
520760:	8b 74 24 60          	mov    0x60(%esp),%esi
520764:	57                   	push   %edi
520765:	89 44 24 14          	mov    %eax,0x14(%esp)
520769:	8b 7e 10             	mov    0x10(%esi),%edi
52076c:	8b 2f                	mov    (%edi),%ebp
52076e:	f6 45 04 04          	testb  $0x4,0x4(%ebp)
520772:	0f 84 8e 00 00 00    	je     0x520806
520778:	85 c0                	test   %eax,%eax
52077a:	75 1f                	jne    0x52079b
52077c:	56                   	push   %esi
52077d:	53                   	push   %ebx
52077e:	50                   	push   %eax
52077f:	8b 45 40             	mov    0x40(%ebp),%eax
520782:	57                   	push   %edi
520783:	ff d0                	call   *%eax
520785:	83 c4 10             	add    $0x10,%esp
520788:	5f                   	pop    %edi
520789:	5e                   	pop    %esi
52078a:	5d                   	pop    %ebp
52078b:	5b                   	pop    %ebx
52078c:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
520790:	33 cc                	xor    %esp,%ecx
520792:	e8 8f 12 0b 00       	call   0x5d1a26
520797:	83 c4 50             	add    $0x50,%esp
52079a:	c3                   	ret
52079b:	f7 46 08 00 02 00 00 	testl  $0x200,0x8(%esi)
5207a2:	74 21                	je     0x5207c5
5207a4:	56                   	push   %esi
5207a5:	53                   	push   %ebx
5207a6:	50                   	push   %eax
5207a7:	8b 45 40             	mov    0x40(%ebp),%eax
5207aa:	57                   	push   %edi
5207ab:	ff d0                	call   *%eax
5207ad:	83 c4 10             	add    $0x10,%esp
5207b0:	8b f0                	mov    %eax,%esi
5207b2:	5f                   	pop    %edi
5207b3:	5e                   	pop    %esi
5207b4:	5d                   	pop    %ebp
5207b5:	5b                   	pop    %ebx
5207b6:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
5207ba:	33 cc                	xor    %esp,%ecx
5207bc:	e8 65 12 0b 00       	call   0x5d1a26
5207c1:	83 c4 50             	add    $0x50,%esp
5207c4:	c3                   	ret
5207c5:	57                   	push   %edi
5207c6:	e8 05 69 fc ff       	call   0x4e70d0
5207cb:	8b f8                	mov    %eax,%edi
5207cd:	83 c4 04             	add    $0x4,%esp
5207d0:	85 ff                	test   %edi,%edi
5207d2:	0f 84 1d 01 00 00    	je     0x5208f5
5207d8:	8b 0f                	mov    (%edi),%ecx
5207da:	56                   	push   %esi
5207db:	53                   	push   %ebx
5207dc:	ff 74 24 1c          	push   0x1c(%esp)
5207e0:	8b 49 40             	mov    0x40(%ecx),%ecx
5207e3:	57                   	push   %edi
5207e4:	ff d1                	call   *%ecx
5207e6:	57                   	push   %edi
5207e7:	8b f0                	mov    %eax,%esi
5207e9:	e8 02 6a fc ff       	call   0x4e71f0
5207ee:	83 c4 14             	add    $0x14,%esp
5207f1:	8b c6                	mov    %esi,%eax
5207f3:	5f                   	pop    %edi
5207f4:	5e                   	pop    %esi
5207f5:	5d                   	pop    %ebp
5207f6:	5b                   	pop    %ebx
5207f7:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
5207fb:	33 cc                	xor    %esp,%ecx
5207fd:	e8 24 12 0b 00       	call   0x5d1a26
520802:	83 c4 50             	add    $0x50,%esp
520805:	c3                   	ret
520806:	8b 6d 40             	mov    0x40(%ebp),%ebp
520809:	85 c0                	test   %eax,%eax
52080b:	0f 84 f9 00 00 00    	je     0x52090a
520811:	f7 46 08 00 02 00 00 	testl  $0x200,0x8(%esi)
520818:	c7 44 24 10 00 00 00 	movl   $0x0,0x10(%esp)
52081f:	00
520820:	74 35                	je     0x520857
520822:	85 ed                	test   %ebp,%ebp
520824:	74 1c                	je     0x520842
520826:	56                   	push   %esi
520827:	53                   	push   %ebx
520828:	50                   	push   %eax
520829:	57                   	push   %edi
52082a:	ff d5                	call   *%ebp
52082c:	83 c4 10             	add    $0x10,%esp
52082f:	5f                   	pop    %edi
520830:	5e                   	pop    %esi
520831:	5d                   	pop    %ebp
520832:	5b                   	pop    %ebx
520833:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
520837:	33 cc                	xor    %esp,%ecx
520839:	e8 e8 11 0b 00       	call   0x5d1a26
52083e:	83 c4 50             	add    $0x50,%esp
520841:	c3                   	ret
520842:	8d 44 24 10          	lea    0x10(%esp),%eax
520846:	50                   	push   %eax
520847:	8d 44 24 20          	lea    0x20(%esp),%eax
52084b:	50                   	push   %eax
52084c:	56                   	push   %esi
52084d:	e8 2e a3 ff ff       	call   0x51ab80
520852:	83 c4 0c             	add    $0xc,%esp
520855:	eb 7d                	jmp    0x5208d4
520857:	e8 b4 a8 ff ff       	call   0x51b110
52085c:	8b f8                	mov    %eax,%edi
52085e:	85 ff                	test   %edi,%edi
520860:	0f 84 8f 00 00 00    	je     0x5208f5
520866:	56                   	push   %esi
520867:	57                   	push   %edi
520868:	e8 f3 a6 ff ff       	call   0x51af60
52086d:	83 c4 08             	add    $0x8,%esp
520870:	85 c0                	test   %eax,%eax
520872:	75 1e                	jne    0x520892
520874:	57                   	push   %edi
520875:	e8 76 a8 ff ff       	call   0x51b0f0
52087a:	83 c4 04             	add    $0x4,%esp
52087d:	33 c0                	xor    %eax,%eax
52087f:	5f                   	pop    %edi
520880:	5e                   	pop    %esi
520881:	5d                   	pop    %ebp
520882:	5b                   	pop    %ebx
520883:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
520887:	33 cc                	xor    %esp,%ecx
520889:	e8 98 11 0b 00       	call   0x5d1a26
52088e:	83 c4 50             	add    $0x50,%esp
520891:	c3                   	ret
520892:	85 ed                	test   %ebp,%ebp
520894:	74 16                	je     0x5208ac
520896:	8b 47 10             	mov    0x10(%edi),%eax
520899:	57                   	push   %edi
52089a:	53                   	push   %ebx
52089b:	ff 74 24 1c          	push   0x1c(%esp)
52089f:	8b 08                	mov    (%eax),%ecx
5208a1:	50                   	push   %eax
5208a2:	8b 41 40             	mov    0x40(%ecx),%eax
5208a5:	ff d0                	call   *%eax
5208a7:	83 c4 10             	add    $0x10,%esp
5208aa:	eb 13                	jmp    0x5208bf
5208ac:	8d 44 24 10          	lea    0x10(%esp),%eax
5208b0:	50                   	push   %eax
5208b1:	8d 44 24 20          	lea    0x20(%esp),%eax
5208b5:	50                   	push   %eax
5208b6:	57                   	push   %edi
5208b7:	e8 c4 a2 ff ff       	call   0x51ab80
5208bc:	83 c4 0c             	add    $0xc,%esp
5208bf:	57                   	push   %edi
5208c0:	89 44 24 1c          	mov    %eax,0x1c(%esp)
5208c4:	e8 27 a8 ff ff       	call   0x51b0f0
5208c9:	8b 44 24 1c          	mov    0x1c(%esp),%eax
5208cd:	83 c4 04             	add    $0x4,%esp
5208d0:	85 ed                	test   %ebp,%ebp
5208d2:	75 23                	jne    0x5208f7
5208d4:	85 c0                	test   %eax,%eax
5208d6:	74 1f                	je     0x5208f7
5208d8:	ff 74 24 10          	push   0x10(%esp)
5208dc:	8d 44 24 20          	lea    0x20(%esp),%eax
5208e0:	50                   	push   %eax
5208e1:	53                   	push   %ebx
5208e2:	ff 74 24 20          	push   0x20(%esp)
5208e6:	ff 76 10             	push   0x10(%esi)
5208e9:	e8 c2 a1 03 00       	call   0x55aab0
5208ee:	83 c4 14             	add    $0x14,%esp