4765b4:	a8 01                	test   $0x1,%al
4765b6:	8d 41 08             	lea    0x8(%ecx),%eax
4765b9:	89 46 10             	mov    %eax,0x10(%esi)
4765bc:	8b 01                	mov    (%ecx),%eax
4765be:	8b 51 04             	mov    0x4(%ecx),%edx
4765c1:	eb 66                	jmp    0x476629
4765c3:	8b 7e 1c             	mov    0x1c(%esi),%edi
4765c6:	8b c7                	mov    %edi,%eax
4765c8:	c1 e8 04             	shr    $0x4,%eax
4765cb:	a8 01                	test   $0x1,%al
4765cd:	74 0d                	je     0x4765dc
4765cf:	8b 46 10             	mov    0x10(%esi),%eax
4765d2:	8d 48 04             	lea    0x4(%eax),%ecx
4765d5:	89 4e 10             	mov    %ecx,0x10(%esi)
4765d8:	8b 00                	mov    (%eax),%eax
4765da:	eb 4c                	jmp    0x476628
4765dc:	8b 4e 10             	mov    0x10(%esi),%ecx
4765df:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4765e2:	8d 41 04             	lea    0x4(%ecx),%eax
4765e5:	89 46 10             	mov    %eax,0x10(%esi)
4765e8:	8b 01                	mov    (%ecx),%eax
4765ea:	eb 40                	jmp    0x47662c
4765ec:	8b 7e 1c             	mov    0x1c(%esi),%edi
4765ef:	8b c7                	mov    %edi,%eax
4765f1:	8b 4e 10             	mov    0x10(%esi),%ecx
4765f4:	c1 e8 04             	shr    $0x4,%eax
4765f7:	a8 01                	test   $0x1,%al
4765f9:	8d 41 04             	lea    0x4(%ecx),%eax
4765fc:	89 46 10             	mov    %eax,0x10(%esi)
4765ff:	74 05                	je     0x476606
476601:	0f bf 01             	movswl (%ecx),%eax
476604:	eb 22                	jmp    0x476628
476606:	0f b7 01             	movzwl (%ecx),%eax
476609:	eb 1d                	jmp    0x476628
47660b:	8b 7e 1c             	mov    0x1c(%esi),%edi
47660e:	8b c7                	mov    %edi,%eax
476610:	8b 4e 10             	mov    0x10(%esi),%ecx
476613:	c1 e8 04             	shr    $0x4,%eax
476616:	a8 01                	test   $0x1,%al
476618:	8d 41 04             	lea    0x4(%ecx),%eax
47661b:	89 46 10             	mov    %eax,0x10(%esi)
47661e:	74 05                	je     0x476625
476620:	0f be 01             	movsbl (%ecx),%eax
476623:	eb 03                	jmp    0x476628
476625:	0f b6 01             	movzbl (%ecx),%eax
476628:	99                   	cltd
476629:	89 55 f8             	mov    %edx,-0x8(%ebp)
47662c:	8b 55 f8             	mov    -0x8(%ebp),%edx
47662f:	89 45 fc             	mov    %eax,-0x4(%ebp)
476632:	8b c7                	mov    %edi,%eax
476634:	8b 4d fc             	mov    -0x4(%ebp),%ecx
476637:	c1 e8 04             	shr    $0x4,%eax
47663a:	a8 01                	test   $0x1,%al
47663c:	74 16                	je     0x476654
47663e:	3b d3                	cmp    %ebx,%edx
476640:	7f 12                	jg     0x476654
476642:	7c 04                	jl     0x476648
476644:	3b cb                	cmp    %ebx,%ecx
476646:	73 0c                	jae    0x476654
476648:	f7 d9                	neg    %ecx
47664a:	13 d3                	adc    %ebx,%edx
47664c:	f7 da                	neg    %edx
47664e:	83 cf 40             	or     $0x40,%edi
476651:	89 7e 1c             	mov    %edi,0x1c(%esi)
476654:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
476658:	89 55 f8             	mov    %edx,-0x8(%ebp)
47665b:	89 4d fc             	mov    %ecx,-0x4(%ebp)
47665e:	7d 09                	jge    0x476669
476660:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
476667:	eb 1a                	jmp    0x476683
476669:	ff 76 08             	push   0x8(%esi)
47666c:	83 e7 f7             	and    $0xfffffff7,%edi
47666f:	8d 4e 3c             	lea    0x3c(%esi),%ecx
476672:	ff 76 24             	push   0x24(%esi)
476675:	89 7e 1c             	mov    %edi,0x1c(%esi)
476678:	e8 de f1 ff ff       	call   0x47585b
47667d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
476680:	8b 55 f8             	mov    -0x8(%ebp),%edx
476683:	8b c1                	mov    %ecx,%eax
476685:	0b c2                	or     %edx,%eax
476687:	75 04                	jne    0x47668d
476689:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
47668d:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
476691:	ff 75 08             	push   0x8(%ebp)
476694:	88 5e 38             	mov    %bl,0x38(%esi)
476697:	75 0b                	jne    0x4766a4
476699:	52                   	push   %edx
47669a:	51                   	push   %ecx
47669b:	8b ce                	mov    %esi,%ecx
47669d:	e8 e6 08 00 00       	call   0x476f88
4766a2:	eb 08                	jmp    0x4766ac
4766a4:	51                   	push   %ecx
4766a5:	8b ce                	mov    %esi,%ecx
4766a7:	e8 b3 05 00 00       	call   0x476c5f
4766ac:	8b 46 1c             	mov    0x1c(%esi),%eax
4766af:	c1 e8 07             	shr    $0x7,%eax
4766b2:	a8 01                	test   $0x1,%al
4766b4:	74 19                	je     0x4766cf
4766b6:	39 5e 34             	cmp    %ebx,0x34(%esi)
4766b9:	74 08                	je     0x4766c3
4766bb:	8b 46 30             	mov    0x30(%esi),%eax
4766be:	80 38 30             	cmpb   $0x30,(%eax)
4766c1:	74 0c                	je     0x4766cf
4766c3:	ff 4e 30             	decl   0x30(%esi)
4766c6:	8b 4e 30             	mov    0x30(%esi),%ecx
4766c9:	c6 01 30             	movb   $0x30,(%ecx)
4766cc:	ff 46 34             	incl   0x34(%esi)
4766cf:	b0 01                	mov    $0x1,%al
4766d1:	5f                   	pop    %edi
4766d2:	5e                   	pop    %esi
4766d3:	5b                   	pop    %ebx
4766d4:	c9                   	leave
4766d5:	c2 04 00             	ret    $0x4
4766d8:	8b ff                	mov    %edi,%edi
4766da:	55                   	push   %ebp
4766db:	8b ec                	mov    %esp,%ebp
4766dd:	83 ec 0c             	sub    $0xc,%esp
4766e0:	53                   	push   %ebx
4766e1:	56                   	push   %esi
4766e2:	8b f1                	mov    %ecx,%esi
4766e4:	57                   	push   %edi
4766e5:	ff 76 28             	push   0x28(%esi)
4766e8:	e8 0f 22 00 00       	call   0x4788fc
4766ed:	59                   	pop    %ecx
4766ee:	8b c8                	mov    %eax,%ecx
4766f0:	89 45 f4             	mov    %eax,-0xc(%ebp)
4766f3:	6a 00                	push   $0x0
4766f5:	5b                   	pop    %ebx
4766f6:	83 e9 01             	sub    $0x1,%ecx
4766f9:	0f 84 99 00 00 00    	je     0x476798
4766ff:	83 e9 01             	sub    $0x1,%ecx
476702:	74 75                	je     0x476779
476704:	49                   	dec    %ecx
476705:	83 e9 01             	sub    $0x1,%ecx
476708:	74 46                	je     0x476750
47670a:	83 e9 04             	sub    $0x4,%ecx
47670d:	74 27                	je     0x476736
47670f:	8b 46 08             	mov    0x8(%esi),%eax
476712:	83 c0 18             	add    $0x18,%eax
476715:	c6 40 04 01          	movb   $0x1,0x4(%eax)
476719:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
47671f:	ff 76 08             	push   0x8(%esi)
476722:	53                   	push   %ebx
476723:	53                   	push   %ebx
476724:	53                   	push   %ebx
476725:	53                   	push   %ebx
476726:	53                   	push   %ebx
476727:	e8 78 2e 00 00       	call   0x4795a4
47672c:	83 c4 18             	add    $0x18,%esp
47672f:	32 c0                	xor    %al,%al
476731:	e9 2d 01 00 00       	jmp    0x476863
476736:	8b 4e 10             	mov    0x10(%esi),%ecx
476739:	8b 7e 1c             	mov    0x1c(%esi),%edi
47673c:	8b c7                	mov    %edi,%eax
47673e:	c1 e8 04             	shr    $0x4,%eax
476741:	a8 01                	test   $0x1,%al
476743:	8d 41 08             	lea    0x8(%ecx),%eax
476746:	89 46 10             	mov    %eax,0x10(%esi)
476749:	8b 01                	mov    (%ecx),%eax
47674b:	8b 51 04             	mov    0x4(%ecx),%edx
47674e:	eb 66                	jmp    0x4767b6
476750:	8b 7e 1c             	mov    0x1c(%esi),%edi
476753:	8b c7                	mov    %edi,%eax
476755:	c1 e8 04             	shr    $0x4,%eax
476758:	a8 01                	test   $0x1,%al
47675a:	74 0d                	je     0x476769
47675c:	8b 46 10             	mov    0x10(%esi),%eax
47675f:	8d 48 04             	lea    0x4(%eax),%ecx
476762:	89 4e 10             	mov    %ecx,0x10(%esi)
476765:	8b 00                	mov    (%eax),%eax
476767:	eb 4c                	jmp    0x4767b5
476769:	8b 4e 10             	mov    0x10(%esi),%ecx
47676c:	89 5d f8             	mov    %ebx,-0x8(%ebp)
47676f:	8d 41 04             	lea    0x4(%ecx),%eax
476772:	89 46 10             	mov    %eax,0x10(%esi)
476775:	8b 01                	mov    (%ecx),%eax
476777:	eb 40                	jmp    0x4767b9
476779:	8b 7e 1c             	mov    0x1c(%esi),%edi
47677c:	8b c7                	mov    %edi,%eax
47677e:	8b 4e 10             	mov    0x10(%esi),%ecx
476781:	c1 e8 04             	shr    $0x4,%eax
476784:	a8 01                	test   $0x1,%al
476786:	8d 41 04             	lea    0x4(%ecx),%eax
476789:	89 46 10             	mov    %eax,0x10(%esi)
47678c:	74 05                	je     0x476793
47678e:	0f bf 01             	movswl (%ecx),%eax
476791:	eb 22                	jmp    0x4767b5
476793:	0f b7 01             	movzwl (%ecx),%eax
476796:	eb 1d                	jmp    0x4767b5
476798:	8b 7e 1c             	mov    0x1c(%esi),%edi
47679b:	8b c7                	mov    %edi,%eax
47679d:	8b 4e 10             	mov    0x10(%esi),%ecx
4767a0:	c1 e8 04             	shr    $0x4,%eax
4767a3:	a8 01                	test   $0x1,%al
4767a5:	8d 41 04             	lea    0x4(%ecx),%eax
4767a8:	89 46 10             	mov    %eax,0x10(%esi)
4767ab:	74 05                	je     0x4767b2
4767ad:	0f be 01             	movsbl (%ecx),%eax
4767b0:	eb 03                	jmp    0x4767b5
4767b2:	0f b6 01             	movzbl (%ecx),%eax
4767b5:	99                   	cltd
4767b6:	89 55 f8             	mov    %edx,-0x8(%ebp)
4767b9:	8b 55 f8             	mov    -0x8(%ebp),%edx
4767bc:	89 45 fc             	mov    %eax,-0x4(%ebp)
4767bf:	8b c7                	mov    %edi,%eax
4767c1:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4767c4:	c1 e8 04             	shr    $0x4,%eax
4767c7:	a8 01                	test   $0x1,%al
4767c9:	74 16                	je     0x4767e1
4767cb:	3b d3                	cmp    %ebx,%edx
4767cd:	7f 12                	jg     0x4767e1
4767cf:	7c 04                	jl     0x4767d5
4767d1:	3b cb                	cmp    %ebx,%ecx
4767d3:	73 0c                	jae    0x4767e1
4767d5:	f7 d9                	neg    %ecx
4767d7:	13 d3                	adc    %ebx,%edx
4767d9:	f7 da                	neg    %edx
4767db:	83 cf 40             	or     $0x40,%edi
4767de:	89 7e 1c             	mov    %edi,0x1c(%esi)
4767e1:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
4767e5:	89 55 f8             	mov    %edx,-0x8(%ebp)
4767e8:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4767eb:	7d 09                	jge    0x4767f6
4767ed:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
4767f4:	eb 1a                	jmp    0x476810
4767f6:	ff 76 08             	push   0x8(%esi)
4767f9:	83 e7 f7             	and    $0xfffffff7,%edi
4767fc:	8d 4e 3c             	lea    0x3c(%esi),%ecx
4767ff:	ff 76 24             	push   0x24(%esi)
476802:	89 7e 1c             	mov    %edi,0x1c(%esi)
476805:	e8 d2 f0 ff ff       	call   0x4758dc
47680a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
47680d:	8b 55 f8             	mov    -0x8(%ebp),%edx
476810:	8b c1                	mov    %ecx,%eax
476812:	0b c2                	or     %edx,%eax
476814:	75 04                	jne    0x47681a
476816:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
47681a:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
47681e:	ff 75 08             	push   0x8(%ebp)
476821:	c6 46 38 01          	movb   $0x1,0x38(%esi)
476825:	75 0b                	jne    0x476832
476827:	52                   	push   %edx
476828:	51                   	push   %ecx
476829:	8b ce                	mov    %esi,%ecx
47682b:	e8 ff 07 00 00       	call   0x47702f
476830:	eb 08                	jmp    0x47683a
476832:	51                   	push   %ecx
476833:	8b ce                	mov    %esi,%ecx
476835:	e8 ac 04 00 00       	call   0x476ce6
47683a:	8b 46 1c             	mov    0x1c(%esi),%eax
47683d:	c1 e8 07             	shr    $0x7,%eax
476840:	a8 01                	test   $0x1,%al
476842:	74 1d                	je     0x476861
476844:	6a 30                	push   $0x30
476846:	5a                   	pop    %edx
476847:	39 5e 34             	cmp    %ebx,0x34(%esi)
47684a:	74 08                	je     0x476854
47684c:	8b 46 30             	mov    0x30(%esi),%eax
47684f:	66 39 10             	cmp    %dx,(%eax)
476852:	74 0d                	je     0x476861
476854:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
476858:	8b 4e 30             	mov    0x30(%esi),%ecx
47685b:	66 89 11             	mov    %dx,(%ecx)
47685e:	ff 46 34             	incl   0x34(%esi)
476861:	b0 01                	mov    $0x1,%al
476863:	5f                   	pop    %edi
476864:	5e                   	pop    %esi
476865:	5b                   	pop    %ebx
476866:	c9                   	leave
476867:	c2 04 00             	ret    $0x4
47686a:	8b ff                	mov    %edi,%edi
47686c:	55                   	push   %ebp
47686d:	8b ec                	mov    %esp,%ebp
47686f:	83 ec 0c             	sub    $0xc,%esp
476872:	53                   	push   %ebx
476873:	56                   	push   %esi
476874:	8b f1                	mov    %ecx,%esi
476876:	57                   	push   %edi
476877:	ff 76 28             	push   0x28(%esi)
47687a:	e8 7d 20 00 00       	call   0x4788fc
47687f:	59                   	pop    %ecx
476880:	8b c8                	mov    %eax,%ecx
476882:	89 45 f4             	mov    %eax,-0xc(%ebp)
476885:	6a 00                	push   $0x0
476887:	5b                   	pop    %ebx
476888:	83 e9 01             	sub    $0x1,%ecx
47688b:	0f 84 99 00 00 00    	je     0x47692a
476891:	83 e9 01             	sub    $0x1,%ecx
476894:	74 75                	je     0x47690b
476896:	49                   	dec    %ecx
476897:	83 e9 01             	sub    $0x1,%ecx
47689a:	74 46                	je     0x4768e2
47689c:	83 e9 04             	sub    $0x4,%ecx
47689f:	74 27                	je     0x4768c8
4768a1:	8b 46 08             	mov    0x8(%esi),%eax
4768a4:	83 c0 18             	add    $0x18,%eax
4768a7:	c6 40 04 01          	movb   $0x1,0x4(%eax)
4768ab:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4768b1:	ff 76 08             	push   0x8(%esi)
4768b4:	53                   	push   %ebx
4768b5:	53                   	push   %ebx
4768b6:	53                   	push   %ebx
4768b7:	53                   	push   %ebx
4768b8:	53                   	push   %ebx
4768b9:	e8 e6 2c 00 00       	call   0x4795a4
4768be:	83 c4 18             	add    $0x18,%esp
4768c1:	32 c0                	xor    %al,%al
4768c3:	e9 28 01 00 00       	jmp    0x4769f0
4768c8:	8b 4e 10             	mov    0x10(%esi),%ecx
4768cb:	8b 7e 1c             	mov    0x1c(%esi),%edi
4768ce:	8b c7                	mov    %edi,%eax
4768d0:	c1 e8 04             	shr    $0x4,%eax
4768d3:	a8 01                	test   $0x1,%al
4768d5:	8d 41 08             	lea    0x8(%ecx),%eax
4768d8:	89 46 10             	mov    %eax,0x10(%esi)
4768db:	8b 01                	mov    (%ecx),%eax
4768dd:	8b 51 04             	mov    0x4(%ecx),%edx
4768e0:	eb 66                	jmp    0x476948
4768e2:	8b 7e 1c             	mov    0x1c(%esi),%edi
4768e5:	8b c7                	mov    %edi,%eax
4768e7:	c1 e8 04             	shr    $0x4,%eax
4768ea:	a8 01                	test   $0x1,%al
4768ec:	74 0d                	je     0x4768fb
4768ee:	8b 46 10             	mov    0x10(%esi),%eax
4768f1:	8d 48 04             	lea    0x4(%eax),%ecx
4768f4:	89 4e 10             	mov    %ecx,0x10(%esi)
4768f7:	8b 00                	mov    (%eax),%eax
4768f9:	eb 4c                	jmp    0x476947
4768fb:	8b 4e 10             	mov    0x10(%esi),%ecx
4768fe:	89 5d f8             	mov    %ebx,-0x8(%ebp)
476901:	8d 41 04             	lea    0x4(%ecx),%eax
476904:	89 46 10             	mov    %eax,0x10(%esi)
476907:	8b 01                	mov    (%ecx),%eax
476909:	eb 40                	jmp    0x47694b
47690b:	8b 7e 1c             	mov    0x1c(%esi),%edi
47690e:	8b c7                	mov    %edi,%eax
476910:	8b 4e 10             	mov    0x10(%esi),%ecx
476913:	c1 e8 04             	shr    $0x4,%eax
476916:	a8 01                	test   $0x1,%al
476918:	8d 41 04             	lea    0x4(%ecx),%eax
47691b:	89 46 10             	mov    %eax,0x10(%esi)
47691e:	74 05                	je     0x476925
476920:	0f bf 01             	movswl (%ecx),%eax
476923:	eb 22                	jmp    0x476947
476925:	0f b7 01             	movzwl (%ecx),%eax
476928:	eb 1d                	jmp    0x476947
47692a:	8b 7e 1c             	mov    0x1c(%esi),%edi
47692d:	8b c7                	mov    %edi,%eax
47692f:	8b 4e 10             	mov    0x10(%esi),%ecx
476932:	c1 e8 04             	shr    $0x4,%eax