580508:	83 c4 04             	add    $0x4,%esp
58050b:	8b d0                	mov    %eax,%edx
58050d:	f6 c3 01             	test   $0x1,%bl
580510:	74 0c                	je     0x58051e
580512:	83 7a 04 00          	cmpl   $0x0,0x4(%edx)
580516:	b8 02 00 00 00       	mov    $0x2,%eax
58051b:	0f 44 d8             	cmove  %eax,%ebx
58051e:	85 ff                	test   %edi,%edi
580520:	7e 1b                	jle    0x58053d
580522:	f6 44 24 18 20       	testb  $0x20,0x18(%esp)
580527:	8d 47 ff             	lea    -0x1(%edi),%eax
58052a:	0f 45 c7             	cmovne %edi,%eax
58052d:	8b f8                	mov    %eax,%edi
58052f:	8b 42 0c             	mov    0xc(%edx),%eax
580532:	8b cf                	mov    %edi,%ecx
580534:	85 c0                	test   %eax,%eax
580536:	78 05                	js     0x58053d
580538:	3b c1                	cmp    %ecx,%eax
58053a:	0f 4c f8             	cmovl  %eax,%edi
58053d:	83 ee 01             	sub    $0x1,%esi
580540:	79 8e                	jns    0x5804d0
580542:	8b c3                	mov    %ebx,%eax
580544:	83 c8 04             	or     $0x4,%eax
580547:	85 ff                	test   %edi,%edi
580549:	0f 45 c3             	cmovne %ebx,%eax
58054c:	89 44 24 14          	mov    %eax,0x14(%esp)
580550:	a8 01                	test   $0x1,%al
580552:	0f 84 f2 00 00 00    	je     0x58064a
580558:	68 a6 00 00 00       	push   $0xa6
58055d:	68 c4 b6 65 00       	push   $0x65b6c4
580562:	6a 18                	push   $0x18
580564:	e8 d7 04 f6 ff       	call   0x4e0a40
580569:	8b d8                	mov    %eax,%ebx
58056b:	83 c4 0c             	add    $0xc,%esp
58056e:	89 5c 24 18          	mov    %ebx,0x18(%esp)
580572:	85 db                	test   %ebx,%ebx
580574:	75 30                	jne    0x5805a6
580576:	68 a7 00 00 00       	push   $0xa7
58057b:	68 c4 b6 65 00       	push   $0x65b6c4
580580:	6a 41                	push   $0x41
580582:	68 ac 00 00 00       	push   $0xac
580587:	6a 22                	push   $0x22
580589:	e8 f2 89 f5 ff       	call   0x4d8f80
58058e:	83 c4 14             	add    $0x14,%esp
580591:	33 c0                	xor    %eax,%eax
580593:	5f                   	pop    %edi
580594:	5e                   	pop    %esi
580595:	5d                   	pop    %ebp
580596:	5b                   	pop    %ebx
580597:	83 c4 14             	add    $0x14,%esp
58059a:	c3                   	ret
58059b:	5f                   	pop    %edi
58059c:	5e                   	pop    %esi
58059d:	5d                   	pop    %ebp
58059e:	83 c8 ff             	or     $0xffffffff,%eax
5805a1:	5b                   	pop    %ebx
5805a2:	83 c4 14             	add    $0x14,%esp
5805a5:	c3                   	ret
5805a6:	8b 44 24 1c          	mov    0x1c(%esp),%eax
5805aa:	68 b2 00 00 00       	push   $0xb2
5805af:	40                   	inc    %eax
5805b0:	c1 e0 04             	shl    $0x4,%eax
5805b3:	68 c4 b6 65 00       	push   $0x65b6c4
5805b8:	50                   	push   %eax
5805b9:	e8 82 04 f6 ff       	call   0x4e0a40
5805be:	83 c4 0c             	add    $0xc,%esp
5805c1:	89 03                	mov    %eax,(%ebx)
5805c3:	85 c0                	test   %eax,%eax
5805c5:	75 35                	jne    0x5805fc
5805c7:	68 b3 00 00 00       	push   $0xb3
5805cc:	68 c4 b6 65 00       	push   $0x65b6c4
5805d1:	53                   	push   %ebx
5805d2:	e8 a9 01 f6 ff       	call   0x4e0780
5805d7:	68 b4 00 00 00       	push   $0xb4
5805dc:	68 c4 b6 65 00       	push   $0x65b6c4
5805e1:	6a 41                	push   $0x41
5805e3:	68 ac 00 00 00       	push   $0xac
5805e8:	6a 22                	push   $0x22
5805ea:	e8 91 89 f5 ff       	call   0x4d8f80
5805ef:	83 c4 20             	add    $0x20,%esp
5805f2:	33 c0                	xor    %eax,%eax
5805f4:	5f                   	pop    %edi
5805f5:	5e                   	pop    %esi
5805f6:	5d                   	pop    %ebp
5805f7:	5b                   	pop    %ebx
5805f8:	83 c4 14             	add    $0x14,%esp
5805fb:	c3                   	ret
5805fc:	8b 44 24 20          	mov    0x20(%esp),%eax
580600:	8b 3b                	mov    (%ebx),%edi
580602:	6a 00                	push   $0x0
580604:	68 ea 02 00 00       	push   $0x2ea
580609:	89 43 04             	mov    %eax,0x4(%ebx)
58060c:	e8 cf ee f6 ff       	call   0x4ef4e0
580611:	83 c4 04             	add    $0x4,%esp
580614:	50                   	push   %eax
580615:	6a 00                	push   $0x0
580617:	e8 34 b9 ff ff       	call   0x57bf50
58061c:	8b f0                	mov    %eax,%esi
58061e:	83 c4 0c             	add    $0xc,%esp
580621:	85 f6                	test   %esi,%esi
580623:	74 1a                	je     0x58063f
580625:	53                   	push   %ebx
580626:	6a 00                	push   $0x0
580628:	56                   	push   %esi
580629:	57                   	push   %edi
58062a:	e8 b1 40 00 00       	call   0x5846e0
58062f:	83 c4 10             	add    $0x10,%esp
580632:	85 c0                	test   %eax,%eax
580634:	75 1c                	jne    0x580652
580636:	56                   	push   %esi
580637:	e8 c4 b8 ff ff       	call   0x57bf00
58063c:	83 c4 04             	add    $0x4,%esp
58063f:	53                   	push   %ebx
580640:	e8 2b f9 ff ff       	call   0x57ff70
580645:	83 c4 04             	add    $0x4,%esp
580648:	33 c0                	xor    %eax,%eax
58064a:	5f                   	pop    %edi
58064b:	5e                   	pop    %esi
58064c:	5d                   	pop    %ebp
58064d:	5b                   	pop    %ebx
58064e:	83 c4 14             	add    $0x14,%esp
580651:	c3                   	ret
580652:	8b 44 24 30          	mov    0x30(%esp),%eax
580656:	85 c0                	test   %eax,%eax
580658:	0f 88 b5 00 00 00    	js     0x580713
58065e:	83 c7 0c             	add    $0xc,%edi
580661:	50                   	push   %eax
580662:	ff 74 24 30          	push   0x30(%esp)
580666:	e8 15 4c f6 ff       	call   0x4e5280
58066b:	8b f0                	mov    %eax,%esi
58066d:	56                   	push   %esi
58066e:	e8 2d bf fd ff       	call   0x55c5a0
580673:	56                   	push   %esi
580674:	8b d8                	mov    %eax,%ebx
580676:	e8 05 11 ff ff       	call   0x571780
58067b:	56                   	push   %esi
58067c:	89 44 24 34          	mov    %eax,0x34(%esp)
580680:	e8 2b 08 fa ff       	call   0x520eb0
580685:	8d 7f 10             	lea    0x10(%edi),%edi
580688:	83 c4 14             	add    $0x14,%esp
58068b:	89 77 f4             	mov    %esi,-0xc(%edi)
58068e:	8b 74 24 20          	mov    0x20(%esp),%esi
580692:	83 3e 00             	cmpl   $0x0,(%esi)
580695:	75 06                	jne    0x58069d
580697:	81 0f 00 02 00 00    	orl    $0x200,(%edi)
58069d:	8b 4c 24 10          	mov    0x10(%esp),%ecx
5806a1:	83 e3 20             	and    $0x20,%ebx
5806a4:	85 c9                	test   %ecx,%ecx
5806a6:	75 12                	jne    0x5806ba
5806a8:	85 db                	test   %ebx,%ebx
5806aa:	74 06                	je     0x5806b2
5806ac:	39 4c 24 30          	cmp    %ecx,0x30(%esp)
5806b0:	75 28                	jne    0x5806da
5806b2:	81 0f 00 02 00 00    	orl    $0x200,(%edi)
5806b8:	eb 20                	jmp    0x5806da
5806ba:	85 db                	test   %ebx,%ebx
5806bc:	8d 41 ff             	lea    -0x1(%ecx),%eax
5806bf:	0f 45 c1             	cmovne %ecx,%eax
5806c2:	89 44 24 10          	mov    %eax,0x10(%esp)
5806c6:	8b d0                	mov    %eax,%edx
5806c8:	8b 46 08             	mov    0x8(%esi),%eax
5806cb:	85 c0                	test   %eax,%eax
5806cd:	78 0b                	js     0x5806da
5806cf:	3b c2                	cmp    %edx,%eax
5806d1:	8b ca                	mov    %edx,%ecx
5806d3:	0f 4c c8             	cmovl  %eax,%ecx
5806d6:	89 4c 24 10          	mov    %ecx,0x10(%esp)
5806da:	85 ed                	test   %ebp,%ebp
5806dc:	75 08                	jne    0x5806e6
5806de:	81 0f 00 04 00 00    	orl    $0x400,(%edi)
5806e4:	eb 18                	jmp    0x5806fe
5806e6:	85 db                	test   %ebx,%ebx
5806e8:	8d 45 ff             	lea    -0x1(%ebp),%eax
5806eb:	0f 45 c5             	cmovne %ebp,%eax
5806ee:	8b e8                	mov    %eax,%ebp
5806f0:	8b 46 10             	mov    0x10(%esi),%eax
5806f3:	8b cd                	mov    %ebp,%ecx
5806f5:	85 c0                	test   %eax,%eax
5806f7:	78 05                	js     0x5806fe
5806f9:	3b c1                	cmp    %ecx,%eax
5806fb:	0f 4c e8             	cmovl  %eax,%ebp
5806fe:	8b 44 24 30          	mov    0x30(%esp),%eax
580702:	83 e8 01             	sub    $0x1,%eax
580705:	89 44 24 30          	mov    %eax,0x30(%esp)
580709:	0f 89 52 ff ff ff    	jns    0x580661
58070f:	8b 5c 24 18          	mov    0x18(%esp),%ebx
580713:	8b 44 24 28          	mov    0x28(%esp),%eax
580717:	5f                   	pop    %edi
580718:	5e                   	pop    %esi
580719:	5d                   	pop    %ebp
58071a:	89 18                	mov    %ebx,(%eax)
58071c:	8b 44 24 08          	mov    0x8(%esp),%eax
580720:	5b                   	pop    %ebx
580721:	83 c4 14             	add    $0x14,%esp
580724:	c3                   	ret
580725:	cc                   	int3
580726:	cc                   	int3
580727:	cc                   	int3
580728:	cc                   	int3
580729:	cc                   	int3
58072a:	cc                   	int3
58072b:	cc                   	int3
58072c:	cc                   	int3
58072d:	cc                   	int3
58072e:	cc                   	int3
58072f:	cc                   	int3
580730:	b8 04 00 00 00       	mov    $0x4,%eax
580735:	e8 76 10 05 00       	call   0x5d17b0
58073a:	53                   	push   %ebx
58073b:	55                   	push   %ebp
58073c:	8b 6c 24 10          	mov    0x10(%esp),%ebp
580740:	33 db                	xor    %ebx,%ebx
580742:	56                   	push   %esi
580743:	57                   	push   %edi
580744:	89 5c 24 10          	mov    %ebx,0x10(%esp)
580748:	ff 75 f4             	push   -0xc(%ebp)
58074b:	e8 70 49 f6 ff       	call   0x4e50c0
580750:	83 c4 04             	add    $0x4,%esp
580753:	85 c0                	test   %eax,%eax
580755:	0f 8e 2d 01 00 00    	jle    0x580888
58075b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
580760:	53                   	push   %ebx
580761:	ff 75 f4             	push   -0xc(%ebp)
580764:	e8 17 4b f6 ff       	call   0x4e5280
580769:	83 c4 08             	add    $0x8,%esp
58076c:	8b d8                	mov    %eax,%ebx
58076e:	f7 45 fc 00 04 00 00 	testl  $0x400,-0x4(%ebp)
580775:	0f 85 ad 00 00 00    	jne    0x580828
58077b:	8b 33                	mov    (%ebx),%esi
58077d:	f6 06 01             	testb  $0x1,(%esi)
580780:	0f 84 a2 00 00 00    	je     0x580828
580786:	8b 76 0c             	mov    0xc(%esi),%esi
580789:	56                   	push   %esi
58078a:	89 74 24 1c          	mov    %esi,0x1c(%esp)
58078e:	e8 2d 49 f6 ff       	call   0x4e50c0
580793:	83 c4 04             	add    $0x4,%esp
580796:	39 43 08             	cmp    %eax,0x8(%ebx)
580799:	0f 84 cd 00 00 00    	je     0x58086c
58079f:	56                   	push   %esi
5807a0:	33 ff                	xor    %edi,%edi
5807a2:	e8 19 49 f6 ff       	call   0x4e50c0
5807a7:	83 c4 04             	add    $0x4,%esp
5807aa:	85 c0                	test   %eax,%eax
5807ac:	0f 8e ba 00 00 00    	jle    0x58086c
5807b2:	57                   	push   %edi
5807b3:	56                   	push   %esi
5807b4:	e8 c7 4a f6 ff       	call   0x4e5280
5807b9:	8b f0                	mov    %eax,%esi
5807bb:	56                   	push   %esi
5807bc:	53                   	push   %ebx
5807bd:	55                   	push   %ebp
5807be:	e8 2d 40 00 00       	call   0x5847f0
5807c3:	83 c4 14             	add    $0x14,%esp
5807c6:	85 c0                	test   %eax,%eax
5807c8:	75 4a                	jne    0x580814
5807ca:	8b 03                	mov    (%ebx),%eax
5807cc:	85 f6                	test   %esi,%esi
5807ce:	75 03                	jne    0x5807d3
5807d0:	8b 70 04             	mov    0x4(%eax),%esi
5807d3:	8b 00                	mov    (%eax),%eax
5807d5:	83 e0 10             	and    $0x10,%eax
5807d8:	50                   	push   %eax
5807d9:	56                   	push   %esi
5807da:	6a 00                	push   $0x0
5807dc:	e8 6f b7 ff ff       	call   0x57bf50
5807e1:	8b f0                	mov    %eax,%esi
5807e3:	83 c4 0c             	add    $0xc,%esp
5807e6:	85 f6                	test   %esi,%esi
5807e8:	0f 84 b7 00 00 00    	je     0x5808a5
5807ee:	8b 44 24 1c          	mov    0x1c(%esp),%eax
5807f2:	ff 74 24 20          	push   0x20(%esp)
5807f6:	53                   	push   %ebx
5807f7:	8b 00                	mov    (%eax),%eax
5807f9:	56                   	push   %esi
5807fa:	55                   	push   %ebp
5807fb:	8b 40 08             	mov    0x8(%eax),%eax
5807fe:	83 0e 04             	orl    $0x4,(%esi)
580801:	89 46 08             	mov    %eax,0x8(%esi)
580804:	e8 d7 3e 00 00       	call   0x5846e0
580809:	83 c4 10             	add    $0x10,%esp
58080c:	85 c0                	test   %eax,%eax
58080e:	0f 84 99 00 00 00    	je     0x5808ad
580814:	8b 74 24 18          	mov    0x18(%esp),%esi
580818:	47                   	inc    %edi
580819:	56                   	push   %esi
58081a:	e8 a1 48 f6 ff       	call   0x4e50c0
58081f:	83 c4 04             	add    $0x4,%esp
580822:	3b f8                	cmp    %eax,%edi
580824:	7c 8c                	jl     0x5807b2
580826:	eb 44                	jmp    0x58086c
580828:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
58082c:	75 3e                	jne    0x58086c
58082e:	8b 03                	mov    (%ebx),%eax
580830:	8b 48 04             	mov    0x4(%eax),%ecx
580833:	8b 00                	mov    (%eax),%eax
580835:	83 e0 10             	and    $0x10,%eax
580838:	50                   	push   %eax
580839:	51                   	push   %ecx
58083a:	6a 00                	push   $0x0
58083c:	e8 0f b7 ff ff       	call   0x57bf50
580841:	8b f0                	mov    %eax,%esi
580843:	83 c4 0c             	add    $0xc,%esp
580846:	85 f6                	test   %esi,%esi
580848:	74 5b                	je     0x5808a5
58084a:	8b 44 24 1c          	mov    0x1c(%esp),%eax
58084e:	ff 74 24 20          	push   0x20(%esp)
580852:	53                   	push   %ebx
580853:	8b 08                	mov    (%eax),%ecx
580855:	56                   	push   %esi
580856:	55                   	push   %ebp
580857:	8b 49 08             	mov    0x8(%ecx),%ecx
58085a:	83 0e 04             	orl    $0x4,(%esi)
58085d:	89 4e 08             	mov    %ecx,0x8(%esi)
580860:	e8 7b 3e 00 00       	call   0x5846e0
580865:	83 c4 10             	add    $0x10,%esp
580868:	85 c0                	test   %eax,%eax
58086a:	74 41                	je     0x5808ad
58086c:	8b 5c 24 10          	mov    0x10(%esp),%ebx
580870:	ff 75 f4             	push   -0xc(%ebp)
580873:	43                   	inc    %ebx
580874:	89 5c 24 14          	mov    %ebx,0x14(%esp)
580878:	e8 43 48 f6 ff       	call   0x4e50c0
58087d:	83 c4 04             	add    $0x4,%esp
580880:	3b d8                	cmp    %eax,%ebx
580882:	0f 8c d8 fe ff ff    	jl     0x580760
580888:	8b 45 f8             	mov    -0x8(%ebp),%eax
58088b:	85 c0                	test   %eax,%eax
58088d:	74 2f                	je     0x5808be
58088f:	6a 00                	push   $0x0
580891:	50                   	push   %eax
580892:	8b 44 24 24          	mov    0x24(%esp),%eax
580896:	ff 30                	push   (%eax)
580898:	55                   	push   %ebp
580899:	e8 42 3e 00 00       	call   0x5846e0
58089e:	83 c4 10             	add    $0x10,%esp
5808a1:	85 c0                	test   %eax,%eax
5808a3:	75 19                	jne    0x5808be
5808a5:	5f                   	pop    %edi
5808a6:	5e                   	pop    %esi
5808a7:	5d                   	pop    %ebp
5808a8:	33 c0                	xor    %eax,%eax
5808aa:	5b                   	pop    %ebx
5808ab:	59                   	pop    %ecx
5808ac:	c3                   	ret
5808ad:	56                   	push   %esi
5808ae:	e8 4d b6 ff ff       	call   0x57bf00
5808b3:	83 c4 04             	add    $0x4,%esp
5808b6:	33 c0                	xor    %eax,%eax
5808b8:	5f                   	pop    %edi
5808b9:	5e                   	pop    %esi