4787ee:	52                   	push   %edx
4787ef:	e8 4b 19 00 00       	call   0x47a13f
4787f4:	83 c4 0c             	add    $0xc,%esp
4787f7:	8b f8                	mov    %eax,%edi
4787f9:	8b 45 0c             	mov    0xc(%ebp),%eax
4787fc:	8b 48 04             	mov    0x4(%eax),%ecx
4787ff:	8a 45 08             	mov    0x8(%ebp),%al
478802:	88 01                	mov    %al,(%ecx)
478804:	33 c0                	xor    %eax,%eax
478806:	3b fe                	cmp    %esi,%edi
478808:	0f 94 c0             	sete   %al
47880b:	eb 64                	jmp    0x478871
47880d:	83 fa ff             	cmp    $0xffffffff,%edx
478810:	74 1b                	je     0x47882d
478812:	83 fa fe             	cmp    $0xfffffffe,%edx
478815:	74 16                	je     0x47882d
478817:	8b c2                	mov    %edx,%eax
478819:	8b ca                	mov    %edx,%ecx
47881b:	83 e0 3f             	and    $0x3f,%eax
47881e:	c1 f9 06             	sar    $0x6,%ecx
478821:	6b c0 30             	imul   $0x30,%eax,%eax
478824:	03 04 8d 00 c0 4b 00 	add    0x4bc000(,%ecx,4),%eax
47882b:	eb 05                	jmp    0x478832
47882d:	b8 08 83 4b 00       	mov    $0x4b8308,%eax
478832:	f6 40 28 20          	testb  $0x20,0x28(%eax)
478836:	74 c1                	je     0x4787f9
478838:	6a 02                	push   $0x2
47883a:	57                   	push   %edi
47883b:	57                   	push   %edi
47883c:	52                   	push   %edx
47883d:	e8 d7 12 00 00       	call   0x479b19
478842:	23 c2                	and    %edx,%eax
478844:	83 c4 10             	add    $0x10,%esp
478847:	83 f8 ff             	cmp    $0xffffffff,%eax
47884a:	75 ad                	jne    0x4787f9
47884c:	8b 45 0c             	mov    0xc(%ebp),%eax
47884f:	6a 10                	push   $0x10
478851:	59                   	pop    %ecx
478852:	83 c0 0c             	add    $0xc,%eax
478855:	f0 09 08             	lock or %ecx,(%eax)
478858:	b0 01                	mov    $0x1,%al
47885a:	eb 15                	jmp    0x478871
47885c:	6a 01                	push   $0x1
47885e:	8d 45 08             	lea    0x8(%ebp),%eax
478861:	50                   	push   %eax
478862:	52                   	push   %edx
478863:	e8 d7 18 00 00       	call   0x47a13f
478868:	83 c4 0c             	add    $0xc,%esp
47886b:	48                   	dec    %eax
47886c:	f7 d8                	neg    %eax
47886e:	1b c0                	sbb    %eax,%eax
478870:	40                   	inc    %eax
478871:	5f                   	pop    %edi
478872:	5e                   	pop    %esi
478873:	5d                   	pop    %ebp
478874:	c3                   	ret
478875:	8b ff                	mov    %edi,%edi
478877:	55                   	push   %ebp
478878:	8b ec                	mov    %esp,%ebp
47887a:	56                   	push   %esi
47887b:	57                   	push   %edi
47887c:	ff 75 0c             	push   0xc(%ebp)
47887f:	e8 f2 f8 ff ff       	call   0x478176
478884:	59                   	pop    %ecx
478885:	8b 4d 0c             	mov    0xc(%ebp),%ecx
478888:	8b d0                	mov    %eax,%edx
47888a:	8b 49 0c             	mov    0xc(%ecx),%ecx
47888d:	f6 c1 c0             	test   $0xc0,%cl
478890:	0f 84 98 00 00 00    	je     0x47892e
478896:	8b 4d 0c             	mov    0xc(%ebp),%ecx
478899:	33 ff                	xor    %edi,%edi
47889b:	8b 41 04             	mov    0x4(%ecx),%eax
47889e:	8b 31                	mov    (%ecx),%esi
4788a0:	2b f0                	sub    %eax,%esi
4788a2:	83 c0 02             	add    $0x2,%eax
4788a5:	89 01                	mov    %eax,(%ecx)
4788a7:	8b 45 0c             	mov    0xc(%ebp),%eax
4788aa:	8b 48 18             	mov    0x18(%eax),%ecx
4788ad:	83 e9 02             	sub    $0x2,%ecx
4788b0:	89 48 08             	mov    %ecx,0x8(%eax)
4788b3:	85 f6                	test   %esi,%esi
4788b5:	7e 28                	jle    0x4788df
4788b7:	8b 45 0c             	mov    0xc(%ebp),%eax
4788ba:	56                   	push   %esi
4788bb:	ff 70 04             	push   0x4(%eax)
4788be:	52                   	push   %edx
4788bf:	e8 7b 18 00 00       	call   0x47a13f
4788c4:	83 c4 0c             	add    $0xc,%esp
4788c7:	8b f8                	mov    %eax,%edi
4788c9:	8b 45 0c             	mov    0xc(%ebp),%eax
4788cc:	8b 48 04             	mov    0x4(%eax),%ecx
4788cf:	66 8b 45 08          	mov    0x8(%ebp),%ax
4788d3:	66 89 01             	mov    %ax,(%ecx)
4788d6:	33 c0                	xor    %eax,%eax
4788d8:	3b fe                	cmp    %esi,%edi
4788da:	0f 94 c0             	sete   %al
4788dd:	eb 66                	jmp    0x478945
4788df:	83 fa ff             	cmp    $0xffffffff,%edx
4788e2:	74 1b                	je     0x4788ff
4788e4:	83 fa fe             	cmp    $0xfffffffe,%edx
4788e7:	74 16                	je     0x4788ff
4788e9:	8b c2                	mov    %edx,%eax
4788eb:	8b ca                	mov    %edx,%ecx
4788ed:	83 e0 3f             	and    $0x3f,%eax
4788f0:	c1 f9 06             	sar    $0x6,%ecx
4788f3:	6b c0 30             	imul   $0x30,%eax,%eax
4788f6:	03 04 8d 00 c0 4b 00 	add    0x4bc000(,%ecx,4),%eax
4788fd:	eb 05                	jmp    0x478904
4788ff:	b8 08 83 4b 00       	mov    $0x4b8308,%eax
478904:	f6 40 28 20          	testb  $0x20,0x28(%eax)
478908:	74 bf                	je     0x4788c9
47890a:	6a 02                	push   $0x2
47890c:	57                   	push   %edi
47890d:	57                   	push   %edi
47890e:	52                   	push   %edx
47890f:	e8 05 12 00 00       	call   0x479b19
478914:	23 c2                	and    %edx,%eax
478916:	83 c4 10             	add    $0x10,%esp
478919:	83 f8 ff             	cmp    $0xffffffff,%eax
47891c:	75 ab                	jne    0x4788c9
47891e:	8b 45 0c             	mov    0xc(%ebp),%eax
478921:	6a 10                	push   $0x10
478923:	59                   	pop    %ecx
478924:	83 c0 0c             	add    $0xc,%eax
478927:	f0 09 08             	lock or %ecx,(%eax)
47892a:	b0 01                	mov    $0x1,%al
47892c:	eb 17                	jmp    0x478945
47892e:	6a 02                	push   $0x2
478930:	8d 45 08             	lea    0x8(%ebp),%eax
478933:	50                   	push   %eax
478934:	52                   	push   %edx
478935:	e8 05 18 00 00       	call   0x47a13f
47893a:	83 e8 02             	sub    $0x2,%eax
47893d:	83 c4 0c             	add    $0xc,%esp
478940:	f7 d8                	neg    %eax
478942:	1b c0                	sbb    %eax,%eax
478944:	40                   	inc    %eax
478945:	5f                   	pop    %edi
478946:	5e                   	pop    %esi
478947:	5d                   	pop    %ebp
478948:	c3                   	ret
478949:	8b ff                	mov    %edi,%edi
47894b:	55                   	push   %ebp
47894c:	8b ec                	mov    %esp,%ebp
47894e:	5d                   	pop    %ebp
47894f:	e9 2f fc ff ff       	jmp    0x478583
478954:	8b ff                	mov    %edi,%edi
478956:	55                   	push   %ebp
478957:	8b ec                	mov    %esp,%ebp
478959:	5d                   	pop    %ebp
47895a:	e9 35 fd ff ff       	jmp    0x478694
47895f:	8b ff                	mov    %edi,%edi
478961:	55                   	push   %ebp
478962:	8b ec                	mov    %esp,%ebp
478964:	83 ec 18             	sub    $0x18,%esp
478967:	8b 45 08             	mov    0x8(%ebp),%eax
47896a:	8b 4d 08             	mov    0x8(%ebp),%ecx
47896d:	83 e0 3f             	and    $0x3f,%eax
478970:	8b 55 0c             	mov    0xc(%ebp),%edx
478973:	53                   	push   %ebx
478974:	c1 f9 06             	sar    $0x6,%ecx
478977:	56                   	push   %esi
478978:	57                   	push   %edi
478979:	6b f8 30             	imul   $0x30,%eax,%edi
47897c:	8b 04 8d 00 c0 4b 00 	mov    0x4bc000(,%ecx,4),%eax
478983:	89 4d f0             	mov    %ecx,-0x10(%ebp)
478986:	8b 4c 38 18          	mov    0x18(%eax,%edi,1),%ecx
47898a:	89 4d ec             	mov    %ecx,-0x14(%ebp)
47898d:	8b 4d 10             	mov    0x10(%ebp),%ecx
478990:	85 c9                	test   %ecx,%ecx
478992:	74 0c                	je     0x4789a0
478994:	80 3a 0a             	cmpb   $0xa,(%edx)
478997:	75 07                	jne    0x4789a0
478999:	80 4c 38 28 04       	orb    $0x4,0x28(%eax,%edi,1)
47899e:	eb 05                	jmp    0x4789a5
4789a0:	80 64 38 28 fb       	andb   $0xfb,0x28(%eax,%edi,1)
4789a5:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
4789a8:	8b da                	mov    %edx,%ebx
4789aa:	89 45 f8             	mov    %eax,-0x8(%ebp)
4789ad:	8b f2                	mov    %edx,%esi
4789af:	3b d0                	cmp    %eax,%edx
4789b1:	0f 83 f4 00 00 00    	jae    0x478aab
4789b7:	8d 42 01             	lea    0x1(%edx),%eax
4789ba:	8a 0b                	mov    (%ebx),%cl
4789bc:	80 f9 1a             	cmp    $0x1a,%cl
4789bf:	0f 84 c7 00 00 00    	je     0x478a8c
4789c5:	80 f9 0d             	cmp    $0xd,%cl
4789c8:	74 0a                	je     0x4789d4
4789ca:	88 0e                	mov    %cl,(%esi)
4789cc:	46                   	inc    %esi
4789cd:	43                   	inc    %ebx
4789ce:	40                   	inc    %eax
4789cf:	e9 ab 00 00 00       	jmp    0x478a7f
4789d4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4789d7:	3b c1                	cmp    %ecx,%eax
4789d9:	73 1f                	jae    0x4789fa
4789db:	80 38 0a             	cmpb   $0xa,(%eax)
4789de:	75 0f                	jne    0x4789ef
4789e0:	83 c3 02             	add    $0x2,%ebx
4789e3:	c6 06 0a             	movb   $0xa,(%esi)
4789e6:	83 c0 02             	add    $0x2,%eax
4789e9:	46                   	inc    %esi
4789ea:	e9 93 00 00 00       	jmp    0x478a82
4789ef:	c6 06 0d             	movb   $0xd,(%esi)
4789f2:	46                   	inc    %esi
4789f3:	43                   	inc    %ebx
4789f4:	40                   	inc    %eax
4789f5:	e9 88 00 00 00       	jmp    0x478a82
4789fa:	43                   	inc    %ebx
4789fb:	40                   	inc    %eax
4789fc:	6a 00                	push   $0x0
4789fe:	89 45 f4             	mov    %eax,-0xc(%ebp)
478a01:	8d 45 e8             	lea    -0x18(%ebp),%eax
478a04:	50                   	push   %eax
478a05:	6a 01                	push   $0x1
478a07:	8d 45 ff             	lea    -0x1(%ebp),%eax
478a0a:	50                   	push   %eax
478a0b:	ff 75 ec             	push   -0x14(%ebp)
478a0e:	ff 15 1c 41 49 00    	call   *0x49411c
478a14:	85 c0                	test   %eax,%eax
478a16:	74 5d                	je     0x478a75
478a18:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
478a1c:	74 57                	je     0x478a75
478a1e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
478a21:	8b 04 8d 00 c0 4b 00 	mov    0x4bc000(,%ecx,4),%eax
478a28:	f6 44 38 28 48       	testb  $0x48,0x28(%eax,%edi,1)
478a2d:	74 1c                	je     0x478a4b
478a2f:	8a 55 ff             	mov    -0x1(%ebp),%dl
478a32:	80 fa 0a             	cmp    $0xa,%dl
478a35:	75 04                	jne    0x478a3b
478a37:	88 16                	mov    %dl,(%esi)
478a39:	eb 3d                	jmp    0x478a78
478a3b:	c6 06 0d             	movb   $0xd,(%esi)
478a3e:	8b 04 8d 00 c0 4b 00 	mov    0x4bc000(,%ecx,4),%eax
478a45:	88 54 38 2a          	mov    %dl,0x2a(%eax,%edi,1)
478a49:	eb 2d                	jmp    0x478a78
478a4b:	80 7d ff 0a          	cmpb   $0xa,-0x1(%ebp)
478a4f:	75 0d                	jne    0x478a5e
478a51:	8b 55 0c             	mov    0xc(%ebp),%edx
478a54:	3b f2                	cmp    %edx,%esi
478a56:	75 06                	jne    0x478a5e
478a58:	c6 06 0a             	movb   $0xa,(%esi)
478a5b:	46                   	inc    %esi
478a5c:	eb 1e                	jmp    0x478a7c
478a5e:	6a 01                	push   $0x1
478a60:	6a ff                	push   $0xffffffff
478a62:	6a ff                	push   $0xffffffff
478a64:	ff 75 08             	push   0x8(%ebp)
478a67:	e8 c8 10 00 00       	call   0x479b34
478a6c:	83 c4 10             	add    $0x10,%esp
478a6f:	80 7d ff 0a          	cmpb   $0xa,-0x1(%ebp)
478a73:	74 04                	je     0x478a79
478a75:	c6 06 0d             	movb   $0xd,(%esi)
478a78:	46                   	inc    %esi
478a79:	8b 55 0c             	mov    0xc(%ebp),%edx
478a7c:	8b 45 f4             	mov    -0xc(%ebp),%eax
478a7f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
478a82:	3b d9                	cmp    %ecx,%ebx
478a84:	0f 82 30 ff ff ff    	jb     0x4789ba
478a8a:	eb 1f                	jmp    0x478aab
478a8c:	8b 4d f0             	mov    -0x10(%ebp),%ecx
478a8f:	8b 0c 8d 00 c0 4b 00 	mov    0x4bc000(,%ecx,4),%ecx
478a96:	8a 44 39 28          	mov    0x28(%ecx,%edi,1),%al
478a9a:	a8 40                	test   $0x40,%al
478a9c:	75 08                	jne    0x478aa6
478a9e:	0c 02                	or     $0x2,%al
478aa0:	88 44 39 28          	mov    %al,0x28(%ecx,%edi,1)
478aa4:	eb 05                	jmp    0x478aab
478aa6:	8a 0b                	mov    (%ebx),%cl
478aa8:	88 0e                	mov    %cl,(%esi)
478aaa:	46                   	inc    %esi
478aab:	2b f2                	sub    %edx,%esi
478aad:	5f                   	pop    %edi
478aae:	8b c6                	mov    %esi,%eax
478ab0:	5e                   	pop    %esi
478ab1:	5b                   	pop    %ebx
478ab2:	8b e5                	mov    %ebp,%esp
478ab4:	5d                   	pop    %ebp
478ab5:	c3                   	ret
478ab6:	8b ff                	mov    %edi,%edi
478ab8:	55                   	push   %ebp
478ab9:	8b ec                	mov    %esp,%ebp
478abb:	83 ec 18             	sub    $0x18,%esp
478abe:	8b 45 08             	mov    0x8(%ebp),%eax
478ac1:	8b 4d 08             	mov    0x8(%ebp),%ecx
478ac4:	83 e0 3f             	and    $0x3f,%eax
478ac7:	53                   	push   %ebx
478ac8:	56                   	push   %esi
478ac9:	8b 75 10             	mov    0x10(%ebp),%esi
478acc:	57                   	push   %edi
478acd:	c1 f9 06             	sar    $0x6,%ecx
478ad0:	6b f8 30             	imul   $0x30,%eax,%edi
478ad3:	89 4d f8             	mov    %ecx,-0x8(%ebp)
478ad6:	6a 0a                	push   $0xa
478ad8:	8b 04 8d 00 c0 4b 00 	mov    0x4bc000(,%ecx,4),%eax
478adf:	5b                   	pop    %ebx
478ae0:	8b 54 38 18          	mov    0x18(%eax,%edi,1),%edx
478ae4:	89 55 ec             	mov    %edx,-0x14(%ebp)
478ae7:	8b 55 0c             	mov    0xc(%ebp),%edx
478aea:	85 f6                	test   %esi,%esi
478aec:	74 0c                	je     0x478afa
478aee:	66 39 1a             	cmp    %bx,(%edx)
478af1:	75 07                	jne    0x478afa
478af3:	80 4c 38 28 04       	orb    $0x4,0x28(%eax,%edi,1)
478af8:	eb 05                	jmp    0x478aff
478afa:	80 64 38 28 fb       	andb   $0xfb,0x28(%eax,%edi,1)
478aff:	8d 04 72             	lea    (%edx,%esi,2),%eax
478b02:	8b da                	mov    %edx,%ebx
478b04:	89 45 f0             	mov    %eax,-0x10(%ebp)
478b07:	8b f2                	mov    %edx,%esi
478b09:	3b d0                	cmp    %eax,%edx
478b0b:	0f 83 4e 01 00 00    	jae    0x478c5f
478b11:	8d 42 02             	lea    0x2(%edx),%eax
478b14:	0f b7 0b             	movzwl (%ebx),%ecx
478b17:	89 4d f4             	mov    %ecx,-0xc(%ebp)
478b1a:	83 f9 1a             	cmp    $0x1a,%ecx
478b1d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
478b20:	0f 84 19 01 00 00    	je     0x478c3f
478b26:	6a 0d                	push   $0xd
478b28:	5a                   	pop    %edx
478b29:	66 39 55 f4          	cmp    %dx,-0xc(%ebp)
478b2d:	8b 55 0c             	mov    0xc(%ebp),%edx
478b30:	74 14                	je     0x478b46
478b32:	8b 4d f4             	mov    -0xc(%ebp),%ecx
478b35:	83 c3 02             	add    $0x2,%ebx
478b38:	66 89 0e             	mov    %cx,(%esi)
478b3b:	83 c6 02             	add    $0x2,%esi
478b3e:	83 c0 02             	add    $0x2,%eax
478b41:	e9 ee 00 00 00       	jmp    0x478c34
478b46:	3b 45 f0             	cmp    -0x10(%ebp),%eax
478b49:	73 33                	jae    0x478b7e
478b4b:	6a 0a                	push   $0xa
478b4d:	5a                   	pop    %edx
478b4e:	66 39 10             	cmp    %dx,(%eax)
478b51:	8b 55 0c             	mov    0xc(%ebp),%edx
478b54:	75 14                	jne    0x478b6a
478b56:	6a 0a                	push   $0xa
478b58:	59                   	pop    %ecx
478b59:	83 c3 04             	add    $0x4,%ebx
478b5c:	66 89 0e             	mov    %cx,(%esi)
478b5f:	83 c0 04             	add    $0x4,%eax
478b62:	83 c6 02             	add    $0x2,%esi
478b65:	e9 ca 00 00 00       	jmp    0x478c34
478b6a:	6a 0d                	push   $0xd
478b6c:	5a                   	pop    %edx
478b6d:	66 89 16             	mov    %dx,(%esi)
478b70:	83 c3 02             	add    $0x2,%ebx
478b73:	83 c6 02             	add    $0x2,%esi
478b76:	83 c0 02             	add    $0x2,%eax
478b79:	e9 b3 00 00 00       	jmp    0x478c31