4776f3:	e9 6c ff ff ff       	jmp    0x477664
4776f8:	8b ff                	mov    %edi,%edi
4776fa:	55                   	push   %ebp
4776fb:	8b ec                	mov    %esp,%ebp
4776fd:	51                   	push   %ecx
4776fe:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
477702:	6a 00                	push   $0x0
477704:	ff 75 0c             	push   0xc(%ebp)
477707:	e8 2d 0a ff ff       	call   0x468139
47770c:	50                   	push   %eax
47770d:	ff 75 08             	push   0x8(%ebp)
477710:	8d 45 fc             	lea    -0x4(%ebp),%eax
477713:	50                   	push   %eax
477714:	e8 be fe ff ff       	call   0x4775d7
477719:	83 c4 14             	add    $0x14,%esp
47771c:	85 c0                	test   %eax,%eax
47771e:	74 05                	je     0x477725
477720:	83 c8 ff             	or     $0xffffffff,%eax
477723:	eb 03                	jmp    0x477728
477725:	8b 45 fc             	mov    -0x4(%ebp),%eax
477728:	8b e5                	mov    %ebp,%esp
47772a:	5d                   	pop    %ebp
47772b:	c3                   	ret
47772c:	8b ff                	mov    %edi,%edi
47772e:	55                   	push   %ebp
47772f:	8b ec                	mov    %esp,%ebp
477731:	6a 00                	push   $0x0
477733:	ff 75 14             	push   0x14(%ebp)
477736:	ff 75 10             	push   0x10(%ebp)
477739:	ff 75 0c             	push   0xc(%ebp)
47773c:	ff 75 08             	push   0x8(%ebp)
47773f:	e8 93 fe ff ff       	call   0x4775d7
477744:	83 c4 14             	add    $0x14,%esp
477747:	5d                   	pop    %ebp
477748:	c3                   	ret
477749:	8b ff                	mov    %edi,%edi
47774b:	55                   	push   %ebp
47774c:	8b ec                	mov    %esp,%ebp
47774e:	8b 45 08             	mov    0x8(%ebp),%eax
477751:	b9 ff 07 00 00       	mov    $0x7ff,%ecx
477756:	53                   	push   %ebx
477757:	56                   	push   %esi
477758:	33 d2                	xor    %edx,%edx
47775a:	8b 18                	mov    (%eax),%ebx
47775c:	8b 70 04             	mov    0x4(%eax),%esi
47775f:	8b c6                	mov    %esi,%eax
477761:	c1 e8 14             	shr    $0x14,%eax
477764:	23 c1                	and    %ecx,%eax
477766:	57                   	push   %edi
477767:	3b c1                	cmp    %ecx,%eax
477769:	75 3f                	jne    0x4777aa
47776b:	8b fe                	mov    %esi,%edi
47776d:	8b c3                	mov    %ebx,%eax
47776f:	81 e7 ff ff 0f 00    	and    $0xfffff,%edi
477775:	0b c7                	or     %edi,%eax
477777:	75 03                	jne    0x47777c
477779:	40                   	inc    %eax
47777a:	eb 30                	jmp    0x4777ac
47777c:	8b ce                	mov    %esi,%ecx
47777e:	8b c2                	mov    %edx,%eax
477780:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
477786:	0b c1                	or     %ecx,%eax
477788:	b8 00 00 08 00       	mov    $0x80000,%eax
47778d:	74 0d                	je     0x47779c
47778f:	3b da                	cmp    %edx,%ebx
477791:	75 09                	jne    0x47779c
477793:	3b f8                	cmp    %eax,%edi
477795:	75 05                	jne    0x47779c
477797:	6a 04                	push   $0x4
477799:	58                   	pop    %eax
47779a:	eb 10                	jmp    0x4777ac
47779c:	23 f0                	and    %eax,%esi
47779e:	0b d6                	or     %esi,%edx
4777a0:	74 04                	je     0x4777a6
4777a2:	6a 02                	push   $0x2
4777a4:	eb f3                	jmp    0x477799
4777a6:	6a 03                	push   $0x3
4777a8:	eb ef                	jmp    0x477799
4777aa:	33 c0                	xor    %eax,%eax
4777ac:	5f                   	pop    %edi
4777ad:	5e                   	pop    %esi
4777ae:	5b                   	pop    %ebx
4777af:	5d                   	pop    %ebp
4777b0:	c3                   	ret
4777b1:	8b ff                	mov    %edi,%edi
4777b3:	55                   	push   %ebp
4777b4:	8b ec                	mov    %esp,%ebp
4777b6:	8b 45 08             	mov    0x8(%ebp),%eax
4777b9:	33 d2                	xor    %edx,%edx
4777bb:	8b 48 04             	mov    0x4(%eax),%ecx
4777be:	8b c2                	mov    %edx,%eax
4777c0:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
4777c6:	0b c1                	or     %ecx,%eax
4777c8:	74 01                	je     0x4777cb
4777ca:	42                   	inc    %edx
4777cb:	8a c2                	mov    %dl,%al
4777cd:	5d                   	pop    %ebp
4777ce:	c3                   	ret
4777cf:	8b ff                	mov    %edi,%edi
4777d1:	55                   	push   %ebp
4777d2:	8b ec                	mov    %esp,%ebp
4777d4:	83 ec 30             	sub    $0x30,%esp
4777d7:	53                   	push   %ebx
4777d8:	56                   	push   %esi
4777d9:	8b 75 1c             	mov    0x1c(%ebp),%esi
4777dc:	33 db                	xor    %ebx,%ebx
4777de:	57                   	push   %edi
4777df:	85 f6                	test   %esi,%esi
4777e1:	79 02                	jns    0x4777e5
4777e3:	8b f3                	mov    %ebx,%esi
4777e5:	8b 7d 0c             	mov    0xc(%ebp),%edi
4777e8:	8d 4d d0             	lea    -0x30(%ebp),%ecx
4777eb:	ff 75 28             	push   0x28(%ebp)
4777ee:	88 1f                	mov    %bl,(%edi)
4777f0:	e8 13 78 fd ff       	call   0x44f008
4777f5:	8d 46 0b             	lea    0xb(%esi),%eax
4777f8:	39 45 10             	cmp    %eax,0x10(%ebp)
4777fb:	77 14                	ja     0x477811
4777fd:	e8 2d 56 fd ff       	call   0x44ce2f
477802:	6a 22                	push   $0x22
477804:	5e                   	pop    %esi
477805:	89 30                	mov    %esi,(%eax)
477807:	e8 ca 54 fd ff       	call   0x44ccd6
47780c:	e9 b9 02 00 00       	jmp    0x477aca
477811:	8b 55 08             	mov    0x8(%ebp),%edx
477814:	8b 02                	mov    (%edx),%eax
477816:	8b 4a 04             	mov    0x4(%edx),%ecx
477819:	89 45 e0             	mov    %eax,-0x20(%ebp)
47781c:	8b c1                	mov    %ecx,%eax
47781e:	c1 e8 14             	shr    $0x14,%eax
477821:	25 ff 07 00 00       	and    $0x7ff,%eax
477826:	3d ff 07 00 00       	cmp    $0x7ff,%eax
47782b:	75 4e                	jne    0x47787b
47782d:	53                   	push   %ebx
47782e:	ff 75 24             	push   0x24(%ebp)
477831:	53                   	push   %ebx
477832:	56                   	push   %esi
477833:	ff 75 18             	push   0x18(%ebp)
477836:	ff 75 14             	push   0x14(%ebp)
477839:	ff 75 10             	push   0x10(%ebp)
47783c:	57                   	push   %edi
47783d:	52                   	push   %edx
47783e:	e8 a0 02 00 00       	call   0x477ae3
477843:	8b f0                	mov    %eax,%esi
477845:	83 c4 24             	add    $0x24,%esp
477848:	85 f6                	test   %esi,%esi
47784a:	74 07                	je     0x477853
47784c:	88 1f                	mov    %bl,(%edi)
47784e:	e9 77 02 00 00       	jmp    0x477aca
477853:	6a 65                	push   $0x65
477855:	57                   	push   %edi
477856:	e8 f5 21 01 00       	call   0x489a50
47785b:	59                   	pop    %ecx
47785c:	59                   	pop    %ecx
47785d:	85 c0                	test   %eax,%eax
47785f:	74 13                	je     0x477874
477861:	38 5d 20             	cmp    %bl,0x20(%ebp)
477864:	0f 94 c1             	sete   %cl
477867:	fe c9                	dec    %cl
477869:	80 e1 e0             	and    $0xe0,%cl
47786c:	80 c1 70             	add    $0x70,%cl
47786f:	88 08                	mov    %cl,(%eax)
477871:	88 58 03             	mov    %bl,0x3(%eax)
477874:	8b f3                	mov    %ebx,%esi
477876:	e9 4f 02 00 00       	jmp    0x477aca
47787b:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
477881:	8b c3                	mov    %ebx,%eax
477883:	0b c1                	or     %ecx,%eax
477885:	74 04                	je     0x47788b
477887:	c6 07 2d             	movb   $0x2d,(%edi)
47788a:	47                   	inc    %edi
47788b:	8b 4a 04             	mov    0x4(%edx),%ecx
47788e:	33 db                	xor    %ebx,%ebx
477890:	38 5d 20             	cmp    %bl,0x20(%ebp)
477893:	6a 30                	push   $0x30
477895:	0f 94 c3             	sete   %bl
477898:	c7 45 f4 ff 03 00 00 	movl   $0x3ff,-0xc(%ebp)
47789f:	4b                   	dec    %ebx
4778a0:	33 c0                	xor    %eax,%eax
4778a2:	83 e3 e0             	and    $0xffffffe0,%ebx
4778a5:	81 e1 00 00 f0 7f    	and    $0x7ff00000,%ecx
4778ab:	83 c3 27             	add    $0x27,%ebx
4778ae:	0b c1                	or     %ecx,%eax
4778b0:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
4778b3:	58                   	pop    %eax
4778b4:	75 1f                	jne    0x4778d5
4778b6:	88 07                	mov    %al,(%edi)
4778b8:	47                   	inc    %edi
4778b9:	8b 42 04             	mov    0x4(%edx),%eax
4778bc:	8b 0a                	mov    (%edx),%ecx
4778be:	25 ff ff 0f 00       	and    $0xfffff,%eax
4778c3:	0b c8                	or     %eax,%ecx
4778c5:	75 05                	jne    0x4778cc
4778c7:	21 4d f4             	and    %ecx,-0xc(%ebp)
4778ca:	eb 0d                	jmp    0x4778d9
4778cc:	c7 45 f4 fe 03 00 00 	movl   $0x3fe,-0xc(%ebp)
4778d3:	eb 04                	jmp    0x4778d9
4778d5:	c6 07 31             	movb   $0x31,(%edi)
4778d8:	47                   	inc    %edi
4778d9:	8b cf                	mov    %edi,%ecx
4778db:	47                   	inc    %edi
4778dc:	89 4d e8             	mov    %ecx,-0x18(%ebp)
4778df:	85 f6                	test   %esi,%esi
4778e1:	75 05                	jne    0x4778e8
4778e3:	c6 01 00             	movb   $0x0,(%ecx)
4778e6:	eb 0f                	jmp    0x4778f7
4778e8:	8b 45 d4             	mov    -0x2c(%ebp),%eax
4778eb:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
4778f1:	8b 00                	mov    (%eax),%eax
4778f3:	8a 00                	mov    (%eax),%al
4778f5:	88 01                	mov    %al,(%ecx)
4778f7:	8b 42 04             	mov    0x4(%edx),%eax
4778fa:	25 ff ff 0f 00       	and    $0xfffff,%eax
4778ff:	89 45 f0             	mov    %eax,-0x10(%ebp)
477902:	77 09                	ja     0x47790d
477904:	83 3a 00             	cmpl   $0x0,(%edx)
477907:	0f 86 c5 00 00 00    	jbe    0x4779d2
47790d:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
477911:	b9 00 00 0f 00       	mov    $0xf0000,%ecx
477916:	6a 30                	push   $0x30
477918:	58                   	pop    %eax
477919:	89 45 f8             	mov    %eax,-0x8(%ebp)
47791c:	89 4d f0             	mov    %ecx,-0x10(%ebp)
47791f:	85 f6                	test   %esi,%esi
477921:	7e 53                	jle    0x477976
477923:	8b 02                	mov    (%edx),%eax
477925:	8b 52 04             	mov    0x4(%edx),%edx
477928:	23 45 fc             	and    -0x4(%ebp),%eax
47792b:	23 d1                	and    %ecx,%edx
47792d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
477930:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
477936:	0f bf c9             	movswl %cx,%ecx
477939:	e8 82 84 fc ff       	call   0x43fdc0
47793e:	6a 30                	push   $0x30
477940:	59                   	pop    %ecx
477941:	66 03 c1             	add    %cx,%ax
477944:	0f b7 c0             	movzwl %ax,%eax
477947:	83 f8 39             	cmp    $0x39,%eax
47794a:	76 02                	jbe    0x47794e
47794c:	03 c3                	add    %ebx,%eax
47794e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
477951:	8b 55 08             	mov    0x8(%ebp),%edx
477954:	88 07                	mov    %al,(%edi)
477956:	47                   	inc    %edi
477957:	8b 45 fc             	mov    -0x4(%ebp),%eax
47795a:	0f ac c8 04          	shrd   $0x4,%ecx,%eax
47795e:	89 45 fc             	mov    %eax,-0x4(%ebp)
477961:	8b 45 f8             	mov    -0x8(%ebp),%eax
477964:	c1 e9 04             	shr    $0x4,%ecx
477967:	83 e8 04             	sub    $0x4,%eax
47796a:	4e                   	dec    %esi
47796b:	89 4d f0             	mov    %ecx,-0x10(%ebp)
47796e:	89 45 f8             	mov    %eax,-0x8(%ebp)
477971:	66 85 c0             	test   %ax,%ax
477974:	79 a9                	jns    0x47791f
477976:	66 85 c0             	test   %ax,%ax
477979:	78 57                	js     0x4779d2
47797b:	8b 02                	mov    (%edx),%eax
47797d:	8b 52 04             	mov    0x4(%edx),%edx
477980:	23 45 fc             	and    -0x4(%ebp),%eax
477983:	23 d1                	and    %ecx,%edx
477985:	8b 4d f8             	mov    -0x8(%ebp),%ecx
477988:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
47798e:	0f bf c9             	movswl %cx,%ecx
477991:	e8 2a 84 fc ff       	call   0x43fdc0
477996:	66 83 f8 08          	cmp    $0x8,%ax
47799a:	76 36                	jbe    0x4779d2
47799c:	6a 30                	push   $0x30
47799e:	8d 47 ff             	lea    -0x1(%edi),%eax
4779a1:	5b                   	pop    %ebx
4779a2:	8a 08                	mov    (%eax),%cl
4779a4:	80 f9 66             	cmp    $0x66,%cl
4779a7:	74 05                	je     0x4779ae
4779a9:	80 f9 46             	cmp    $0x46,%cl
4779ac:	75 05                	jne    0x4779b3
4779ae:	88 18                	mov    %bl,(%eax)
4779b0:	48                   	dec    %eax
4779b1:	eb ef                	jmp    0x4779a2
4779b3:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
4779b6:	3b 45 e8             	cmp    -0x18(%ebp),%eax
4779b9:	74 14                	je     0x4779cf
4779bb:	8a 08                	mov    (%eax),%cl
4779bd:	80 f9 39             	cmp    $0x39,%cl
4779c0:	75 07                	jne    0x4779c9
4779c2:	80 c3 3a             	add    $0x3a,%bl
4779c5:	88 18                	mov    %bl,(%eax)
4779c7:	eb 09                	jmp    0x4779d2
4779c9:	fe c1                	inc    %cl
4779cb:	88 08                	mov    %cl,(%eax)
4779cd:	eb 03                	jmp    0x4779d2
4779cf:	fe 40 ff             	incb   -0x1(%eax)
4779d2:	85 f6                	test   %esi,%esi
4779d4:	7e 12                	jle    0x4779e8
4779d6:	56                   	push   %esi
4779d7:	6a 30                	push   $0x30
4779d9:	5b                   	pop    %ebx
4779da:	53                   	push   %ebx
4779db:	57                   	push   %edi
4779dc:	e8 7f c4 fc ff       	call   0x443e60
4779e1:	83 c4 0c             	add    $0xc,%esp
4779e4:	03 fe                	add    %esi,%edi
4779e6:	eb 03                	jmp    0x4779eb
4779e8:	6a 30                	push   $0x30
4779ea:	5b                   	pop    %ebx
4779eb:	8b 45 e8             	mov    -0x18(%ebp),%eax
4779ee:	80 38 00             	cmpb   $0x0,(%eax)
4779f1:	75 02                	jne    0x4779f5
4779f3:	8b f8                	mov    %eax,%edi
4779f5:	80 7d 20 00          	cmpb   $0x0,0x20(%ebp)
4779f9:	b1 34                	mov    $0x34,%cl
4779fb:	8b 55 08             	mov    0x8(%ebp),%edx
4779fe:	0f 94 c0             	sete   %al
477a01:	fe c8                	dec    %al
477a03:	24 e0                	and    $0xe0,%al
477a05:	04 70                	add    $0x70,%al
477a07:	88 07                	mov    %al,(%edi)
477a09:	8b 02                	mov    (%edx),%eax
477a0b:	8b 52 04             	mov    0x4(%edx),%edx
477a0e:	e8 ad 83 fc ff       	call   0x43fdc0
477a13:	8b c8                	mov    %eax,%ecx
477a15:	33 f6                	xor    %esi,%esi
477a17:	81 e1 ff 07 00 00    	and    $0x7ff,%ecx
477a1d:	2b 4d f4             	sub    -0xc(%ebp),%ecx
477a20:	1b f6                	sbb    %esi,%esi
477a22:	78 0f                	js     0x477a33
477a24:	7f 04                	jg     0x477a2a
477a26:	85 c9                	test   %ecx,%ecx
477a28:	72 09                	jb     0x477a33
477a2a:	c6 47 01 2b          	movb   $0x2b,0x1(%edi)
477a2e:	83 c7 02             	add    $0x2,%edi
477a31:	eb 0e                	jmp    0x477a41
477a33:	c6 47 01 2d          	movb   $0x2d,0x1(%edi)
477a37:	83 c7 02             	add    $0x2,%edi
477a3a:	f7 d9                	neg    %ecx
477a3c:	83 d6 00             	adc    $0x0,%esi
477a3f:	f7 de                	neg    %esi
477a41:	89 7d e8             	mov    %edi,-0x18(%ebp)
477a44:	88 1f                	mov    %bl,(%edi)
477a46:	85 f6                	test   %esi,%esi
477a48:	7c 4e                	jl     0x477a98
477a4a:	b8 e8 03 00 00       	mov    $0x3e8,%eax
477a4f:	7f 04                	jg     0x477a55
477a51:	3b c8                	cmp    %eax,%ecx
477a53:	72 1e                	jb     0x477a73
477a55:	53                   	push   %ebx
477a56:	6a 00                	push   $0x0
477a58:	50                   	push   %eax
477a59:	56                   	push   %esi
477a5a:	51                   	push   %ecx
477a5b:	e8 80 81 fc ff       	call   0x43fbe0