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
5808ba:	5d                   	pop    %ebp
5808bb:	5b                   	pop    %ebx
5808bc:	59                   	pop    %ecx
5808bd:	c3                   	ret
5808be:	5f                   	pop    %edi
5808bf:	5e                   	pop    %esi
5808c0:	5d                   	pop    %ebp
5808c1:	b8 01 00 00 00       	mov    $0x1,%eax
5808c6:	5b                   	pop    %ebx
5808c7:	59                   	pop    %ecx
5808c8:	c3                   	ret
5808c9:	cc                   	int3
5808ca:	cc                   	int3
5808cb:	cc                   	int3
5808cc:	cc                   	int3
5808cd:	cc                   	int3
5808ce:	cc                   	int3
5808cf:	cc                   	int3
5808d0:	8b 44 24 0c          	mov    0xc(%esp),%eax
5808d4:	83 c8 18             	or     $0x18,%eax
5808d7:	50                   	push   %eax
5808d8:	8b 44 24 08          	mov    0x8(%esp),%eax
5808dc:	ff 74 24 0c          	push   0xc(%esp)
5808e0:	ff 70 10             	push   0x10(%eax)
5808e3:	e8 68 00 00 00       	call   0x580950
5808e8:	83 c4 0c             	add    $0xc,%esp
5808eb:	c3                   	ret
5808ec:	cc                   	int3
5808ed:	cc                   	int3
5808ee:	cc                   	int3
5808ef:	cc                   	int3
5808f0:	8b 44 24 0c          	mov    0xc(%esp),%eax
5808f4:	83 e0 e7             	and    $0xffffffe7,%eax
5808f7:	50                   	push   %eax
5808f8:	8b 44 24 08          	mov    0x8(%esp),%eax
5808fc:	ff 74 24 0c          	push   0xc(%esp)
580900:	ff 70 10             	push   0x10(%eax)
580903:	e8 48 00 00 00       	call   0x580950
580908:	83 c4 0c             	add    $0xc,%esp
58090b:	c3                   	ret
58090c:	cc                   	int3
58090d:	cc                   	int3
58090e:	cc                   	int3
58090f:	cc                   	int3
580910:	56                   	push   %esi
580911:	8b 74 24 0c          	mov    0xc(%esp),%esi
580915:	6a 00                	push   $0x0
580917:	6a ff                	push   $0xffffffff
580919:	56                   	push   %esi
58091a:	e8 f1 bb fd ff       	call   0x55c510
58091f:	83 c4 0c             	add    $0xc,%esp
580922:	83 f8 01             	cmp    $0x1,%eax
580925:	75 13                	jne    0x58093a
580927:	f6 44 24 10 04       	testb  $0x4,0x10(%esp)
58092c:	75 0c                	jne    0x58093a
58092e:	f7 86 80 00 00 00 00 	testl  $0x2000,0x80(%esi)
580935:	20 00 00
580938:	75 05                	jne    0x58093f
58093a:	b8 03 00 00 00       	mov    $0x3,%eax
58093f:	5e                   	pop    %esi
580940:	c3                   	ret
580941:	cc                   	int3
580942:	cc                   	int3
580943:	cc                   	int3
580944:	cc                   	int3
580945:	cc                   	int3
580946:	cc                   	int3
580947:	cc                   	int3
580948:	cc                   	int3
580949:	cc                   	int3
58094a:	cc                   	int3
58094b:	cc                   	int3
58094c:	cc                   	int3
58094d:	cc                   	int3
58094e:	cc                   	int3
58094f:	cc                   	int3
580950:	53                   	push   %ebx
580951:	8b 5c 24 10          	mov    0x10(%esp),%ebx
580955:	55                   	push   %ebp
580956:	8b 6c 24 10          	mov    0x10(%esp),%ebp
58095a:	56                   	push   %esi
58095b:	57                   	push   %edi
58095c:	8b bd c4 00 00 00    	mov    0xc4(%ebp),%edi
580962:	85 ff                	test   %edi,%edi
580964:	0f 84 ac 00 00 00    	je     0x580a16
58096a:	8b 4f 04             	mov    0x4(%edi),%ecx
58096d:	85 c9                	test   %ecx,%ecx
58096f:	74 43                	je     0x5809b4
580971:	51                   	push   %ecx
580972:	33 f6                	xor    %esi,%esi
580974:	e8 47 47 f6 ff       	call   0x4e50c0
580979:	83 c4 04             	add    $0x4,%esp
58097c:	85 c0                	test   %eax,%eax
58097e:	7e 34                	jle    0x5809b4
580980:	56                   	push   %esi
580981:	ff 77 04             	push   0x4(%edi)
580984:	e8 f7 48 f6 ff       	call   0x4e5280
580989:	50                   	push   %eax
58098a:	e8 71 ec f6 ff       	call   0x4ef600
58098f:	83 c4 0c             	add    $0xc,%esp
580992:	3b 44 24 14          	cmp    0x14(%esp),%eax
580996:	74 6a                	je     0x580a02
580998:	3d 8e 03 00 00       	cmp    $0x38e,%eax
58099d:	75 05                	jne    0x5809a4
58099f:	f6 c3 10             	test   $0x10,%bl
5809a2:	75 5e                	jne    0x580a02
5809a4:	ff 77 04             	push   0x4(%edi)
5809a7:	46                   	inc    %esi
5809a8:	e8 13 47 f6 ff       	call   0x4e50c0
5809ad:	83 c4 04             	add    $0x4,%esp
5809b0:	3b f0                	cmp    %eax,%esi
5809b2:	7c cc                	jl     0x580980
5809b4:	8b 07                	mov    (%edi),%eax
5809b6:	85 c0                	test   %eax,%eax
5809b8:	74 5c                	je     0x580a16
5809ba:	50                   	push   %eax
5809bb:	33 f6                	xor    %esi,%esi
5809bd:	e8 fe 46 f6 ff       	call   0x4e50c0
5809c2:	83 c4 04             	add    $0x4,%esp
5809c5:	85 c0                	test   %eax,%eax
5809c7:	7e 39                	jle    0x580a02
5809c9:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
5809d0:	56                   	push   %esi
5809d1:	ff 37                	push   (%edi)
5809d3:	e8 a8 48 f6 ff       	call   0x4e5280
5809d8:	50                   	push   %eax
5809d9:	e8 22 ec f6 ff       	call   0x4ef600
5809de:	83 c4 0c             	add    $0xc,%esp
5809e1:	3b 44 24 14          	cmp    0x14(%esp),%eax
5809e5:	74 25                	je     0x580a0c
5809e7:	3d 8e 03 00 00       	cmp    $0x38e,%eax
5809ec:	75 05                	jne    0x5809f3
5809ee:	f6 c3 10             	test   $0x10,%bl
5809f1:	75 19                	jne    0x580a0c
5809f3:	ff 37                	push   (%edi)
5809f5:	46                   	inc    %esi
5809f6:	e8 c5 46 f6 ff       	call   0x4e50c0
5809fb:	83 c4 04             	add    $0x4,%esp
5809fe:	3b f0                	cmp    %eax,%esi
580a00:	7c ce                	jl     0x5809d0
580a02:	5f                   	pop    %edi
580a03:	5e                   	pop    %esi
580a04:	5d                   	pop    %ebp
580a05:	b8 02 00 00 00       	mov    $0x2,%eax
580a0a:	5b                   	pop    %ebx
580a0b:	c3                   	ret
580a0c:	5f                   	pop    %edi
580a0d:	5e                   	pop    %esi
580a0e:	5d                   	pop    %ebp
580a0f:	b8 01 00 00 00       	mov    $0x1,%eax
580a14:	5b                   	pop    %ebx
580a15:	c3                   	ret
580a16:	f6 c3 08             	test   $0x8,%bl
580a19:	74 23                	je     0x580a3e
580a1b:	6a 00                	push   $0x0
580a1d:	6a ff                	push   $0xffffffff
580a1f:	55                   	push   %ebp
580a20:	e8 eb ba fd ff       	call   0x55c510
580a25:	83 c4 0c             	add    $0xc,%esp
580a28:	83 f8 01             	cmp    $0x1,%eax
580a2b:	75 11                	jne    0x580a3e
580a2d:	f6 c3 04             	test   $0x4,%bl
580a30:	75 0c                	jne    0x580a3e
580a32:	f7 85 80 00 00 00 00 	testl  $0x2000,0x80(%ebp)
580a39:	20 00 00
580a3c:	75 05                	jne    0x580a43
580a3e:	b8 03 00 00 00       	mov    $0x3,%eax
580a43:	5f                   	pop    %edi
580a44:	5e                   	pop    %esi
580a45:	5d                   	pop    %ebp
580a46:	5b                   	pop    %ebx
580a47:	c3                   	ret
580a48:	cc                   	int3
580a49:	cc                   	int3
580a4a:	cc                   	int3