6304b8:	50                   	push   %eax
6304b9:	e8 f5 fc ff ff       	call   0x6301b3
6304be:	8b c8                	mov    %eax,%ecx
6304c0:	e8 c5 ed ff ff       	call   0x62f28a
6304c5:	8b 45 08             	mov    0x8(%ebp),%eax
6304c8:	5f                   	pop    %edi
6304c9:	5e                   	pop    %esi
6304ca:	5b                   	pop    %ebx
6304cb:	8b e5                	mov    %ebp,%esp
6304cd:	5d                   	pop    %ebp
6304ce:	c2 1c 00             	ret    $0x1c
6304d1:	55                   	push   %ebp
6304d2:	8b ec                	mov    %esp,%ebp
6304d4:	56                   	push   %esi
6304d5:	8b f1                	mov    %ecx,%esi
6304d7:	8b 46 0c             	mov    0xc(%esi),%eax
6304da:	8b 4e 10             	mov    0x10(%esi),%ecx
6304dd:	03 c1                	add    %ecx,%eax
6304df:	a8 03                	test   $0x3,%al
6304e1:	75 14                	jne    0x6304f7
6304e3:	8d 41 04             	lea    0x4(%ecx),%eax
6304e6:	c1 e8 02             	shr    $0x2,%eax
6304e9:	39 46 08             	cmp    %eax,0x8(%esi)
6304ec:	77 09                	ja     0x6304f7
6304ee:	6a 01                	push   $0x1
6304f0:	8b ce                	mov    %esi,%ecx
6304f2:	e8 6b f1 ff ff       	call   0x62f662
6304f7:	8b 46 08             	mov    0x8(%esi),%eax
6304fa:	53                   	push   %ebx
6304fb:	57                   	push   %edi
6304fc:	8d 04 85 ff ff ff ff 	lea    -0x1(,%eax,4),%eax
630503:	21 46 0c             	and    %eax,0xc(%esi)
630506:	8b 7e 10             	mov    0x10(%esi),%edi
630509:	03 7e 0c             	add    0xc(%esi),%edi
63050c:	8b 5e 08             	mov    0x8(%esi),%ebx
63050f:	8b c7                	mov    %edi,%eax
630511:	c1 e8 02             	shr    $0x2,%eax
630514:	4b                   	dec    %ebx
630515:	23 d8                	and    %eax,%ebx
630517:	8b 46 04             	mov    0x4(%esi),%eax
63051a:	83 3c 98 00          	cmpl   $0x0,(%eax,%ebx,4)
63051e:	75 14                	jne    0x630534
630520:	6a 01                	push   $0x1
630522:	6a 04                	push   $0x4
630524:	6a 04                	push   $0x4
630526:	e8 75 72 e0 ff       	call   0x4377a0
63052b:	8b 4e 04             	mov    0x4(%esi),%ecx
63052e:	83 c4 0c             	add    $0xc,%esp
630531:	89 04 99             	mov    %eax,(%ecx,%ebx,4)
630534:	8b 46 04             	mov    0x4(%esi),%eax
630537:	83 e7 03             	and    $0x3,%edi
63053a:	8b 04 98             	mov    (%eax,%ebx,4),%eax
63053d:	8d 0c b8             	lea    (%eax,%edi,4),%ecx
630540:	5f                   	pop    %edi
630541:	5b                   	pop    %ebx
630542:	85 c9                	test   %ecx,%ecx
630544:	74 07                	je     0x63054d
630546:	8b 45 08             	mov    0x8(%ebp),%eax
630549:	8b 00                	mov    (%eax),%eax
63054b:	89 01                	mov    %eax,(%ecx)
63054d:	ff 46 10             	incl   0x10(%esi)
630550:	5e                   	pop    %esi
630551:	5d                   	pop    %ebp
630552:	c2 04 00             	ret    $0x4
630555:	55                   	push   %ebp
630556:	8b ec                	mov    %esp,%ebp
630558:	56                   	push   %esi
630559:	8b f1                	mov    %ecx,%esi
63055b:	8b 46 0c             	mov    0xc(%esi),%eax
63055e:	8b 4e 10             	mov    0x10(%esi),%ecx
630561:	03 c1                	add    %ecx,%eax
630563:	a8 01                	test   $0x1,%al
630565:	75 13                	jne    0x63057a
630567:	8d 41 02             	lea    0x2(%ecx),%eax
63056a:	d1 e8                	shr    $1,%eax
63056c:	39 46 08             	cmp    %eax,0x8(%esi)
63056f:	77 09                	ja     0x63057a
630571:	6a 01                	push   $0x1
630573:	8b ce                	mov    %esi,%ecx
630575:	e8 fe f1 ff ff       	call   0x62f778
63057a:	8b 46 08             	mov    0x8(%esi),%eax
63057d:	53                   	push   %ebx
63057e:	57                   	push   %edi
63057f:	8d 04 45 ff ff ff ff 	lea    -0x1(,%eax,2),%eax
630586:	21 46 0c             	and    %eax,0xc(%esi)
630589:	8b 5e 10             	mov    0x10(%esi),%ebx
63058c:	03 5e 0c             	add    0xc(%esi),%ebx
63058f:	8b 7e 08             	mov    0x8(%esi),%edi
630592:	8b c3                	mov    %ebx,%eax
630594:	d1 e8                	shr    $1,%eax
630596:	4f                   	dec    %edi
630597:	23 f8                	and    %eax,%edi
630599:	8b 46 04             	mov    0x4(%esi),%eax
63059c:	83 3c b8 00          	cmpl   $0x0,(%eax,%edi,4)
6305a0:	75 14                	jne    0x6305b6
6305a2:	6a 01                	push   $0x1
6305a4:	6a 08                	push   $0x8
6305a6:	6a 02                	push   $0x2
6305a8:	e8 f3 71 e0 ff       	call   0x4377a0
6305ad:	8b 4e 04             	mov    0x4(%esi),%ecx
6305b0:	83 c4 0c             	add    $0xc,%esp
6305b3:	89 04 b9             	mov    %eax,(%ecx,%edi,4)
6305b6:	8b 46 04             	mov    0x4(%esi),%eax
6305b9:	83 e3 01             	and    $0x1,%ebx
6305bc:	8b 04 b8             	mov    (%eax,%edi,4),%eax
6305bf:	5f                   	pop    %edi
6305c0:	8d 14 d8             	lea    (%eax,%ebx,8),%edx
6305c3:	5b                   	pop    %ebx
6305c4:	85 d2                	test   %edx,%edx
6305c6:	74 0d                	je     0x6305d5
6305c8:	8b 4d 08             	mov    0x8(%ebp),%ecx
6305cb:	8b 01                	mov    (%ecx),%eax
6305cd:	89 02                	mov    %eax,(%edx)
6305cf:	8b 41 04             	mov    0x4(%ecx),%eax
6305d2:	89 42 04             	mov    %eax,0x4(%edx)
6305d5:	ff 46 10             	incl   0x10(%esi)
6305d8:	5e                   	pop    %esi
6305d9:	5d                   	pop    %ebp
6305da:	c2 04 00             	ret    $0x4
6305dd:	55                   	push   %ebp
6305de:	8b ec                	mov    %esp,%ebp
6305e0:	56                   	push   %esi
6305e1:	8b f1                	mov    %ecx,%esi
6305e3:	57                   	push   %edi
6305e4:	f6 46 0c 03          	testb  $0x3,0xc(%esi)
6305e8:	75 15                	jne    0x6305ff
6305ea:	8b 46 10             	mov    0x10(%esi),%eax
6305ed:	83 c0 04             	add    $0x4,%eax
6305f0:	c1 e8 02             	shr    $0x2,%eax
6305f3:	39 46 08             	cmp    %eax,0x8(%esi)
6305f6:	77 07                	ja     0x6305ff
6305f8:	6a 01                	push   $0x1
6305fa:	e8 63 f0 ff ff       	call   0x62f662
6305ff:	8b 46 08             	mov    0x8(%esi),%eax
630602:	8d 04 85 ff ff ff ff 	lea    -0x1(,%eax,4),%eax
630609:	21 46 0c             	and    %eax,0xc(%esi)
63060c:	8b 7e 0c             	mov    0xc(%esi),%edi
63060f:	75 06                	jne    0x630617
630611:	8b 7e 08             	mov    0x8(%esi),%edi
630614:	c1 e7 02             	shl    $0x2,%edi
630617:	4f                   	dec    %edi
630618:	53                   	push   %ebx
630619:	8b 5e 08             	mov    0x8(%esi),%ebx
63061c:	8b c7                	mov    %edi,%eax
63061e:	c1 e8 02             	shr    $0x2,%eax
630621:	4b                   	dec    %ebx
630622:	23 d8                	and    %eax,%ebx
630624:	8b 46 04             	mov    0x4(%esi),%eax
630627:	83 3c 98 00          	cmpl   $0x0,(%eax,%ebx,4)
63062b:	75 14                	jne    0x630641
63062d:	6a 01                	push   $0x1
63062f:	6a 04                	push   $0x4
630631:	6a 04                	push   $0x4
630633:	e8 68 71 e0 ff       	call   0x4377a0
630638:	8b 4e 04             	mov    0x4(%esi),%ecx
63063b:	83 c4 0c             	add    $0xc,%esp
63063e:	89 04 99             	mov    %eax,(%ecx,%ebx,4)
630641:	8b 46 04             	mov    0x4(%esi),%eax
630644:	8b cf                	mov    %edi,%ecx
630646:	83 e1 03             	and    $0x3,%ecx
630649:	8b 04 98             	mov    (%eax,%ebx,4),%eax
63064c:	5b                   	pop    %ebx
63064d:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
630650:	85 c9                	test   %ecx,%ecx
630652:	74 07                	je     0x63065b
630654:	8b 45 08             	mov    0x8(%ebp),%eax
630657:	8b 00                	mov    (%eax),%eax
630659:	89 01                	mov    %eax,(%ecx)
63065b:	89 7e 0c             	mov    %edi,0xc(%esi)
63065e:	ff 46 10             	incl   0x10(%esi)
630661:	5f                   	pop    %edi
630662:	5e                   	pop    %esi
630663:	5d                   	pop    %ebp
630664:	c2 04 00             	ret    $0x4
630667:	55                   	push   %ebp
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)