630668:	8b ec                	mov    %esp,%ebp
63066a:	56                   	push   %esi
63066b:	8b f1                	mov    %ecx,%esi
63066d:	57                   	push   %edi
63066e:	f6 46 0c 01          	testb  $0x1,0xc(%esi)
630672:	75 14                	jne    0x630688
630674:	8b 46 10             	mov    0x10(%esi),%eax
630677:	83 c0 02             	add    $0x2,%eax
63067a:	d1 e8                	shr    $1,%eax
63067c:	39 46 08             	cmp    %eax,0x8(%esi)
63067f:	77 07                	ja     0x630688
630681:	6a 01                	push   $0x1
630683:	e8 f0 f0 ff ff       	call   0x62f778
630688:	8b 46 08             	mov    0x8(%esi),%eax
63068b:	8d 04 45 ff ff ff ff 	lea    -0x1(,%eax,2),%eax
630692:	21 46 0c             	and    %eax,0xc(%esi)
630695:	8b 7e 0c             	mov    0xc(%esi),%edi
630698:	75 05                	jne    0x63069f
63069a:	8b 7e 08             	mov    0x8(%esi),%edi
63069d:	03 ff                	add    %edi,%edi
63069f:	4f                   	dec    %edi
6306a0:	53                   	push   %ebx
6306a1:	8b 5e 08             	mov    0x8(%esi),%ebx
6306a4:	8b c7                	mov    %edi,%eax
6306a6:	d1 e8                	shr    $1,%eax
6306a8:	4b                   	dec    %ebx
6306a9:	23 d8                	and    %eax,%ebx
6306ab:	8b 46 04             	mov    0x4(%esi),%eax
6306ae:	83 3c 98 00          	cmpl   $0x0,(%eax,%ebx,4)
6306b2:	75 14                	jne    0x6306c8
6306b4:	6a 01                	push   $0x1
6306b6:	6a 08                	push   $0x8
6306b8:	6a 02                	push   $0x2
6306ba:	e8 e1 70 e0 ff       	call   0x4377a0
6306bf:	8b 4e 04             	mov    0x4(%esi),%ecx
6306c2:	83 c4 0c             	add    $0xc,%esp
6306c5:	89 04 99             	mov    %eax,(%ecx,%ebx,4)
6306c8:	8b 46 04             	mov    0x4(%esi),%eax
6306cb:	8b cf                	mov    %edi,%ecx
6306cd:	83 e1 01             	and    $0x1,%ecx
6306d0:	8b 04 98             	mov    (%eax,%ebx,4),%eax
6306d3:	5b                   	pop    %ebx
6306d4:	8d 14 c8             	lea    (%eax,%ecx,8),%edx
6306d7:	85 d2                	test   %edx,%edx
6306d9:	74 0d                	je     0x6306e8
6306db:	8b 4d 08             	mov    0x8(%ebp),%ecx
6306de:	8b 01                	mov    (%ecx),%eax
6306e0:	89 02                	mov    %eax,(%edx)
6306e2:	8b 41 04             	mov    0x4(%ecx),%eax
6306e5:	89 42 04             	mov    %eax,0x4(%edx)
6306e8:	89 7e 0c             	mov    %edi,0xc(%esi)
6306eb:	ff 46 10             	incl   0x10(%esi)
6306ee:	5f                   	pop    %edi
6306ef:	5e                   	pop    %esi
6306f0:	5d                   	pop    %ebp
6306f1:	c2 04 00             	ret    $0x4
6306f4:	55                   	push   %ebp
6306f5:	8b ec                	mov    %esp,%ebp
6306f7:	51                   	push   %ecx
6306f8:	8b 4d 10             	mov    0x10(%ebp),%ecx
6306fb:	8b c1                	mov    %ecx,%eax
6306fd:	53                   	push   %ebx
6306fe:	8b 5d 08             	mov    0x8(%ebp),%ebx
630701:	2b c3                	sub    %ebx,%eax
630703:	56                   	push   %esi
630704:	6a 0c                	push   $0xc
630706:	99                   	cltd
630707:	5e                   	pop    %esi
630708:	f7 fe                	idiv   %esi
63070a:	83 f8 28             	cmp    $0x28,%eax
63070d:	7e 65                	jle    0x630774
63070f:	40                   	inc    %eax
630710:	99                   	cltd
630711:	83 e2 07             	and    $0x7,%edx
630714:	03 c2                	add    %edx,%eax
630716:	c1 f8 03             	sar    $0x3,%eax
630719:	57                   	push   %edi
63071a:	ff 75 14             	push   0x14(%ebp)
63071d:	6b c8 18             	imul   $0x18,%eax,%ecx
630720:	6b f8 0c             	imul   $0xc,%eax,%edi
630723:	89 4d fc             	mov    %ecx,-0x4(%ebp)
630726:	8d 04 19             	lea    (%ecx,%ebx,1),%eax
630729:	50                   	push   %eax
63072a:	8d 14 1f             	lea    (%edi,%ebx,1),%edx
63072d:	52                   	push   %edx
63072e:	53                   	push   %ebx
63072f:	e8 25 01 00 00       	call   0x630859
630734:	8b 5d 0c             	mov    0xc(%ebp),%ebx
630737:	ff 75 14             	push   0x14(%ebp)
63073a:	8d 04 1f             	lea    (%edi,%ebx,1),%eax
63073d:	50                   	push   %eax
63073e:	8b c3                	mov    %ebx,%eax
630740:	2b c7                	sub    %edi,%eax
630742:	53                   	push   %ebx
630743:	50                   	push   %eax
630744:	e8 10 01 00 00       	call   0x630859
630749:	8b 45 10             	mov    0x10(%ebp),%eax
63074c:	8b f0                	mov    %eax,%esi
63074e:	ff 75 14             	push   0x14(%ebp)
630751:	2b f7                	sub    %edi,%esi
630753:	50                   	push   %eax
630754:	2b 45 fc             	sub    -0x4(%ebp),%eax
630757:	56                   	push   %esi
630758:	50                   	push   %eax
630759:	e8 fb 00 00 00       	call   0x630859
63075e:	ff 75 14             	push   0x14(%ebp)
630761:	8b 45 08             	mov    0x8(%ebp),%eax
630764:	56                   	push   %esi
630765:	03 c7                	add    %edi,%eax
630767:	53                   	push   %ebx
630768:	50                   	push   %eax
630769:	e8 eb 00 00 00       	call   0x630859
63076e:	83 c4 40             	add    $0x40,%esp
630771:	5f                   	pop    %edi
630772:	eb 10                	jmp    0x630784
630774:	ff 75 14             	push   0x14(%ebp)
630777:	51                   	push   %ecx
630778:	ff 75 0c             	push   0xc(%ebp)
63077b:	53                   	push   %ebx
63077c:	e8 d8 00 00 00       	call   0x630859
630781:	83 c4 10             	add    $0x10,%esp
630784:	5e                   	pop    %esi
630785:	5b                   	pop    %ebx
630786:	8b e5                	mov    %ebp,%esp
630788:	5d                   	pop    %ebp
630789:	c3                   	ret
63078a:	55                   	push   %ebp
63078b:	8b ec                	mov    %esp,%ebp
63078d:	8b 4d 08             	mov    0x8(%ebp),%ecx
630790:	83 ec 10             	sub    $0x10,%esp
630793:	3b 4d 0c             	cmp    0xc(%ebp),%ecx
630796:	74 41                	je     0x6307d9
630798:	53                   	push   %ebx
630799:	8d 59 0c             	lea    0xc(%ecx),%ebx
63079c:	3b 5d 0c             	cmp    0xc(%ebp),%ebx
63079f:	74 37                	je     0x6307d8
6307a1:	56                   	push   %esi
6307a2:	57                   	push   %edi
6307a3:	8b f3                	mov    %ebx,%esi
6307a5:	89 5d fc             	mov    %ebx,-0x4(%ebp)
6307a8:	8d 7d f0             	lea    -0x10(%ebp),%edi
6307ab:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6307ac:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6307ad:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6307ae:	8b 55 f0             	mov    -0x10(%ebp),%edx
6307b1:	3b 11                	cmp    (%ecx),%edx
6307b3:	73 28                	jae    0x6307dd
6307b5:	8d 43 0c             	lea    0xc(%ebx),%eax
6307b8:	50                   	push   %eax
6307b9:	53                   	push   %ebx
6307ba:	51                   	push   %ecx
6307bb:	e8 e2 69 fe ff       	call   0x6171a2
6307c0:	8b 4d 08             	mov    0x8(%ebp),%ecx
6307c3:	83 c4 0c             	add    $0xc,%esp
6307c6:	8b f9                	mov    %ecx,%edi
6307c8:	8d 75 f0             	lea    -0x10(%ebp),%esi
6307cb:	83 c3 0c             	add    $0xc,%ebx
6307ce:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6307cf:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6307d0:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6307d1:	3b 5d 0c             	cmp    0xc(%ebp),%ebx
6307d4:	75 cd                	jne    0x6307a3
6307d6:	5f                   	pop    %edi
6307d7:	5e                   	pop    %esi
6307d8:	5b                   	pop    %ebx
6307d9:	8b e5                	mov    %ebp,%esp
6307db:	5d                   	pop    %ebp
6307dc:	c3                   	ret
6307dd:	8b 7d fc             	mov    -0x4(%ebp),%edi
6307e0:	8d 43 f4             	lea    -0xc(%ebx),%eax
6307e3:	3b 10                	cmp    (%eax),%edx
6307e5:	73 e1                	jae    0x6307c8
6307e7:	8b f0                	mov    %eax,%esi
6307e9:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6307ea:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6307eb:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6307ec:	8b f8                	mov    %eax,%edi
6307ee:	83 e8 0c             	sub    $0xc,%eax
6307f1:	eb f0                	jmp    0x6307e3
6307f3:	55                   	push   %ebp
6307f4:	8b ec                	mov    %esp,%ebp
6307f6:	83 ec 10             	sub    $0x10,%esp
6307f9:	8b 45 0c             	mov    0xc(%ebp),%eax
6307fc:	2b 45 08             	sub    0x8(%ebp),%eax
6307ff:	56                   	push   %esi
630800:	6a 0c                	push   $0xc
630802:	99                   	cltd
630803:	5e                   	pop    %esi
630804:	f7 fe                	idiv   %esi
630806:	8b c8                	mov    %eax,%ecx
630808:	89 4d fc             	mov    %ecx,-0x4(%ebp)
63080b:	83 f9 02             	cmp    $0x2,%ecx
63080e:	7c 44                	jl     0x630854
630810:	99                   	cltd
630811:	2b c2                	sub    %edx,%eax
630813:	53                   	push   %ebx
630814:	8b d8                	mov    %eax,%ebx
630816:	d1 fb                	sar    $1,%ebx
630818:	85 db                	test   %ebx,%ebx
63081a:	7e 37                	jle    0x630853
63081c:	6b c3 0c             	imul   $0xc,%ebx,%eax
63081f:	57                   	push   %edi
630820:	03 45 08             	add    0x8(%ebp),%eax
630823:	ff 75 10             	push   0x10(%ebp)
630826:	2b c6                	sub    %esi,%eax
630828:	8d 7d f0             	lea    -0x10(%ebp),%edi
63082b:	8b f0                	mov    %eax,%esi
63082d:	89 45 0c             	mov    %eax,0xc(%ebp)
630830:	8d 45 f0             	lea    -0x10(%ebp),%eax
630833:	4b                   	dec    %ebx
630834:	50                   	push   %eax
630835:	51                   	push   %ecx
630836:	a5                   	movsl  %ds:(%esi),%es:(%edi)
630837:	53                   	push   %ebx
630838:	ff 75 08             	push   0x8(%ebp)
63083b:	a5                   	movsl  %ds:(%esi),%es:(%edi)
63083c:	a5                   	movsl  %ds:(%esi),%es:(%edi)
63083d:	e8 43 02 00 00       	call   0x630a85
630842:	8b 45 0c             	mov    0xc(%ebp),%eax
630845:	83 c4 14             	add    $0x14,%esp
630848:	8b 4d fc             	mov    -0x4(%ebp),%ecx
63084b:	6a 0c                	push   $0xc
63084d:	5e                   	pop    %esi
63084e:	85 db                	test   %ebx,%ebx
630850:	7f d1                	jg     0x630823
630852:	5f                   	pop    %edi
630853:	5b                   	pop    %ebx
630854:	5e                   	pop    %esi
630855:	8b e5                	mov    %ebp,%esp
630857:	5d                   	pop    %ebp
630858:	c3                   	ret
630859:	55                   	push   %ebp
63085a:	8b ec                	mov    %esp,%ebp
63085c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
63085f:	83 ec 0c             	sub    $0xc,%esp
630862:	8b 55 08             	mov    0x8(%ebp),%edx
630865:	8b 01                	mov    (%ecx),%eax
630867:	53                   	push   %ebx
630868:	56                   	push   %esi
630869:	57                   	push   %edi
63086a:	3b 02                	cmp    (%edx),%eax
63086c:	73 17                	jae    0x630885
63086e:	8b f1                	mov    %ecx,%esi
630870:	8d 7d f4             	lea    -0xc(%ebp),%edi
630873:	a5                   	movsl  %ds:(%esi),%es:(%edi)
630874:	a5                   	movsl  %ds:(%esi),%es:(%edi)
630875:	a5                   	movsl  %ds:(%esi),%es:(%edi)
630876:	8b f2                	mov    %edx,%esi
630878:	8b f9                	mov    %ecx,%edi
63087a:	a5                   	movsl  %ds:(%esi),%es:(%edi)
63087b:	a5                   	movsl  %ds:(%esi),%es:(%edi)
63087c:	a5                   	movsl  %ds:(%esi),%es:(%edi)
63087d:	8b fa                	mov    %edx,%edi
63087f:	8d 75 f4             	lea    -0xc(%ebp),%esi
630882:	a5                   	movsl  %ds:(%esi),%es:(%edi)
630883:	a5                   	movsl  %ds:(%esi),%es:(%edi)
630884:	a5                   	movsl  %ds:(%esi),%es:(%edi)
630885:	8b 5d 10             	mov    0x10(%ebp),%ebx
630888:	8b 03                	mov    (%ebx),%eax
63088a:	3b 01                	cmp    (%ecx),%eax
63088c:	73 2c                	jae    0x6308ba
63088e:	8b f3                	mov    %ebx,%esi
630890:	8d 7d f4             	lea    -0xc(%ebp),%edi
630893:	a5                   	movsl  %ds:(%esi),%es:(%edi)
630894:	a5                   	movsl  %ds:(%esi),%es:(%edi)
630895:	a5                   	movsl  %ds:(%esi),%es:(%edi)
630896:	8b f1                	mov    %ecx,%esi
630898:	8b fb                	mov    %ebx,%edi
63089a:	a5                   	movsl  %ds:(%esi),%es:(%edi)
63089b:	a5                   	movsl  %ds:(%esi),%es:(%edi)
63089c:	a5                   	movsl  %ds:(%esi),%es:(%edi)
63089d:	8b f9                	mov    %ecx,%edi
63089f:	8d 75 f4             	lea    -0xc(%ebp),%esi
6308a2:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6308a3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6308a4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6308a5:	8b 01                	mov    (%ecx),%eax
6308a7:	3b 02                	cmp    (%edx),%eax
6308a9:	73 0f                	jae    0x6308ba
6308ab:	8b f2                	mov    %edx,%esi
6308ad:	8b f9                	mov    %ecx,%edi
6308af:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6308b0:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6308b1:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6308b2:	8b fa                	mov    %edx,%edi
6308b4:	8d 75 f4             	lea    -0xc(%ebp),%esi
6308b7:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6308b8:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6308b9:	a5                   	movsl  %ds:(%esi),%es:(%edi)
6308ba:	5f                   	pop    %edi
6308bb:	5e                   	pop    %esi
6308bc:	5b                   	pop    %ebx
6308bd:	8b e5                	mov    %ebp,%esp
6308bf:	5d                   	pop    %ebp
6308c0:	c3                   	ret
6308c1:	55                   	push   %ebp
6308c2:	8b ec                	mov    %esp,%ebp
6308c4:	83 ec 5c             	sub    $0x5c,%esp
6308c7:	53                   	push   %ebx
6308c8:	56                   	push   %esi
6308c9:	8b 75 10             	mov    0x10(%ebp),%esi
6308cc:	8b c6                	mov    %esi,%eax
6308ce:	2b 45 0c             	sub    0xc(%ebp),%eax
6308d1:	57                   	push   %edi
6308d2:	6a 18                	push   $0x18
6308d4:	59                   	pop    %ecx
6308d5:	99                   	cltd
6308d6:	f7 f9                	idiv   %ecx
6308d8:	ff 75 14             	push   0x14(%ebp)
6308db:	6b d8 0c             	imul   $0xc,%eax,%ebx
6308de:	8d 46 f4             	lea    -0xc(%esi),%eax
6308e1:	50                   	push   %eax
6308e2:	03 5d 0c             	add    0xc(%ebp),%ebx
6308e5:	53                   	push   %ebx
6308e6:	ff 75 0c             	push   0xc(%ebp)
6308e9:	e8 06 fe ff ff       	call   0x6306f4
6308ee:	83 c4 10             	add    $0x10,%esp
6308f1:	8d 53 0c             	lea    0xc(%ebx),%edx
6308f4:	eb 0f                	jmp    0x630905
6308f6:	8b 0b                	mov    (%ebx),%ecx
6308f8:	8d 43 f4             	lea    -0xc(%ebx),%eax
6308fb:	39 08                	cmp    %ecx,(%eax)
6308fd:	72 0b                	jb     0x63090a
6308ff:	3b 08                	cmp    (%eax),%ecx
630901:	72 07                	jb     0x63090a
630903:	8b d8                	mov    %eax,%ebx
630905:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
630908:	72 ec                	jb     0x6308f6
63090a:	3b d6                	cmp    %esi,%edx
63090c:	73 11                	jae    0x63091f
63090e:	8b 03                	mov    (%ebx),%eax
630910:	39 02                	cmp    %eax,(%edx)
630912:	72 0b                	jb     0x63091f
630914:	3b 02                	cmp    (%edx),%eax
630916:	72 07                	jb     0x63091f
630918:	83 c2 0c             	add    $0xc,%edx
63091b:	3b d6                	cmp    %esi,%edx
63091d:	72 f1                	jb     0x630910
63091f:	8b ca                	mov    %edx,%ecx
630921:	8b c3                	mov    %ebx,%eax
630923:	89 4d f8             	mov    %ecx,-0x8(%ebp)
630926:	89 45 fc             	mov    %eax,-0x4(%ebp)
630929:	3b ce                	cmp    %esi,%ecx
63092b:	73 47                	jae    0x630974
63092d:	8d 7a f4             	lea    -0xc(%edx),%edi
630930:	8b 01                	mov    (%ecx),%eax
630932:	39 03                	cmp    %eax,(%ebx)
630934:	72 31                	jb     0x630967
630936:	3b 03                	cmp    (%ebx),%eax
630938:	72 34                	jb     0x63096e