476935:	a8 01                	test   $0x1,%al
476937:	8d 41 04             	lea    0x4(%ecx),%eax
47693a:	89 46 10             	mov    %eax,0x10(%esi)
47693d:	74 05                	je     0x476944
47693f:	0f be 01             	movsbl (%ecx),%eax
476942:	eb 03                	jmp    0x476947
476944:	0f b6 01             	movzbl (%ecx),%eax
476947:	99                   	cltd
476948:	89 55 f8             	mov    %edx,-0x8(%ebp)
47694b:	8b 55 f8             	mov    -0x8(%ebp),%edx
47694e:	89 45 fc             	mov    %eax,-0x4(%ebp)
476951:	8b c7                	mov    %edi,%eax
476953:	8b 4d fc             	mov    -0x4(%ebp),%ecx
476956:	c1 e8 04             	shr    $0x4,%eax
476959:	a8 01                	test   $0x1,%al
47695b:	74 16                	je     0x476973
47695d:	3b d3                	cmp    %ebx,%edx
47695f:	7f 12                	jg     0x476973
476961:	7c 04                	jl     0x476967
476963:	3b cb                	cmp    %ebx,%ecx
476965:	73 0c                	jae    0x476973
476967:	f7 d9                	neg    %ecx
476969:	13 d3                	adc    %ebx,%edx
47696b:	f7 da                	neg    %edx
47696d:	83 cf 40             	or     $0x40,%edi
476970:	89 7e 1c             	mov    %edi,0x1c(%esi)
476973:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
476977:	89 55 f8             	mov    %edx,-0x8(%ebp)
47697a:	89 4d fc             	mov    %ecx,-0x4(%ebp)
47697d:	7d 09                	jge    0x476988
47697f:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
476986:	eb 1a                	jmp    0x4769a2
476988:	ff 76 08             	push   0x8(%esi)
47698b:	83 e7 f7             	and    $0xfffffff7,%edi
47698e:	8d 4e 3c             	lea    0x3c(%esi),%ecx
476991:	ff 76 24             	push   0x24(%esi)
476994:	89 7e 1c             	mov    %edi,0x1c(%esi)
476997:	e8 bf ee ff ff       	call   0x47585b
47699c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
47699f:	8b 55 f8             	mov    -0x8(%ebp),%edx
4769a2:	8b c1                	mov    %ecx,%eax
4769a4:	0b c2                	or     %edx,%eax
4769a6:	75 04                	jne    0x4769ac
4769a8:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
4769ac:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
4769b0:	ff 75 08             	push   0x8(%ebp)
4769b3:	88 5e 38             	mov    %bl,0x38(%esi)
4769b6:	75 0b                	jne    0x4769c3
4769b8:	52                   	push   %edx
4769b9:	51                   	push   %ecx
4769ba:	8b ce                	mov    %esi,%ecx
4769bc:	e8 2b 07 00 00       	call   0x4770ec
4769c1:	eb 08                	jmp    0x4769cb
4769c3:	51                   	push   %ecx
4769c4:	8b ce                	mov    %esi,%ecx
4769c6:	e8 b7 03 00 00       	call   0x476d82
4769cb:	8b 46 1c             	mov    0x1c(%esi),%eax
4769ce:	c1 e8 07             	shr    $0x7,%eax
4769d1:	a8 01                	test   $0x1,%al
4769d3:	74 19                	je     0x4769ee
4769d5:	39 5e 34             	cmp    %ebx,0x34(%esi)
4769d8:	74 08                	je     0x4769e2
4769da:	8b 46 30             	mov    0x30(%esi),%eax
4769dd:	80 38 30             	cmpb   $0x30,(%eax)
4769e0:	74 0c                	je     0x4769ee
4769e2:	ff 4e 30             	decl   0x30(%esi)
4769e5:	8b 4e 30             	mov    0x30(%esi),%ecx
4769e8:	c6 01 30             	movb   $0x30,(%ecx)
4769eb:	ff 46 34             	incl   0x34(%esi)
4769ee:	b0 01                	mov    $0x1,%al
4769f0:	5f                   	pop    %edi
4769f1:	5e                   	pop    %esi
4769f2:	5b                   	pop    %ebx
4769f3:	c9                   	leave
4769f4:	c2 04 00             	ret    $0x4
4769f7:	8b ff                	mov    %edi,%edi
4769f9:	55                   	push   %ebp
4769fa:	8b ec                	mov    %esp,%ebp
4769fc:	83 ec 0c             	sub    $0xc,%esp
4769ff:	53                   	push   %ebx
476a00:	56                   	push   %esi
476a01:	8b f1                	mov    %ecx,%esi
476a03:	57                   	push   %edi
476a04:	ff 76 28             	push   0x28(%esi)
476a07:	e8 f0 1e 00 00       	call   0x4788fc
476a0c:	59                   	pop    %ecx
476a0d:	8b c8                	mov    %eax,%ecx
476a0f:	89 45 f4             	mov    %eax,-0xc(%ebp)
476a12:	6a 00                	push   $0x0
476a14:	5b                   	pop    %ebx
476a15:	83 e9 01             	sub    $0x1,%ecx
476a18:	0f 84 99 00 00 00    	je     0x476ab7
476a1e:	83 e9 01             	sub    $0x1,%ecx
476a21:	74 75                	je     0x476a98
476a23:	49                   	dec    %ecx
476a24:	83 e9 01             	sub    $0x1,%ecx
476a27:	74 46                	je     0x476a6f
476a29:	83 e9 04             	sub    $0x4,%ecx
476a2c:	74 27                	je     0x476a55
476a2e:	8b 46 08             	mov    0x8(%esi),%eax
476a31:	83 c0 18             	add    $0x18,%eax
476a34:	c6 40 04 01          	movb   $0x1,0x4(%eax)
476a38:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
476a3e:	ff 76 08             	push   0x8(%esi)
476a41:	53                   	push   %ebx
476a42:	53                   	push   %ebx
476a43:	53                   	push   %ebx
476a44:	53                   	push   %ebx
476a45:	53                   	push   %ebx
476a46:	e8 59 2b 00 00       	call   0x4795a4
476a4b:	83 c4 18             	add    $0x18,%esp
476a4e:	32 c0                	xor    %al,%al
476a50:	e9 2d 01 00 00       	jmp    0x476b82
476a55:	8b 4e 10             	mov    0x10(%esi),%ecx
476a58:	8b 7e 1c             	mov    0x1c(%esi),%edi
476a5b:	8b c7                	mov    %edi,%eax
476a5d:	c1 e8 04             	shr    $0x4,%eax
476a60:	a8 01                	test   $0x1,%al
476a62:	8d 41 08             	lea    0x8(%ecx),%eax
476a65:	89 46 10             	mov    %eax,0x10(%esi)
476a68:	8b 01                	mov    (%ecx),%eax
476a6a:	8b 51 04             	mov    0x4(%ecx),%edx
476a6d:	eb 66                	jmp    0x476ad5
476a6f:	8b 7e 1c             	mov    0x1c(%esi),%edi
476a72:	8b c7                	mov    %edi,%eax
476a74:	c1 e8 04             	shr    $0x4,%eax
476a77:	a8 01                	test   $0x1,%al
476a79:	74 0d                	je     0x476a88
476a7b:	8b 46 10             	mov    0x10(%esi),%eax
476a7e:	8d 48 04             	lea    0x4(%eax),%ecx
476a81:	89 4e 10             	mov    %ecx,0x10(%esi)
476a84:	8b 00                	mov    (%eax),%eax
476a86:	eb 4c                	jmp    0x476ad4
476a88:	8b 4e 10             	mov    0x10(%esi),%ecx
476a8b:	89 5d f8             	mov    %ebx,-0x8(%ebp)
476a8e:	8d 41 04             	lea    0x4(%ecx),%eax
476a91:	89 46 10             	mov    %eax,0x10(%esi)
476a94:	8b 01                	mov    (%ecx),%eax
476a96:	eb 40                	jmp    0x476ad8
476a98:	8b 7e 1c             	mov    0x1c(%esi),%edi
476a9b:	8b c7                	mov    %edi,%eax
476a9d:	8b 4e 10             	mov    0x10(%esi),%ecx
476aa0:	c1 e8 04             	shr    $0x4,%eax
476aa3:	a8 01                	test   $0x1,%al
476aa5:	8d 41 04             	lea    0x4(%ecx),%eax
476aa8:	89 46 10             	mov    %eax,0x10(%esi)
476aab:	74 05                	je     0x476ab2
476aad:	0f bf 01             	movswl (%ecx),%eax
476ab0:	eb 22                	jmp    0x476ad4
476ab2:	0f b7 01             	movzwl (%ecx),%eax
476ab5:	eb 1d                	jmp    0x476ad4
476ab7:	8b 7e 1c             	mov    0x1c(%esi),%edi
476aba:	8b c7                	mov    %edi,%eax
476abc:	8b 4e 10             	mov    0x10(%esi),%ecx
476abf:	c1 e8 04             	shr    $0x4,%eax
476ac2:	a8 01                	test   $0x1,%al
476ac4:	8d 41 04             	lea    0x4(%ecx),%eax
476ac7:	89 46 10             	mov    %eax,0x10(%esi)
476aca:	74 05                	je     0x476ad1
476acc:	0f be 01             	movsbl (%ecx),%eax
476acf:	eb 03                	jmp    0x476ad4
476ad1:	0f b6 01             	movzbl (%ecx),%eax
476ad4:	99                   	cltd
476ad5:	89 55 f8             	mov    %edx,-0x8(%ebp)
476ad8:	8b 55 f8             	mov    -0x8(%ebp),%edx
476adb:	89 45 fc             	mov    %eax,-0x4(%ebp)
476ade:	8b c7                	mov    %edi,%eax
476ae0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
476ae3:	c1 e8 04             	shr    $0x4,%eax
476ae6:	a8 01                	test   $0x1,%al
476ae8:	74 16                	je     0x476b00
476aea:	3b d3                	cmp    %ebx,%edx
476aec:	7f 12                	jg     0x476b00
476aee:	7c 04                	jl     0x476af4
476af0:	3b cb                	cmp    %ebx,%ecx
476af2:	73 0c                	jae    0x476b00
476af4:	f7 d9                	neg    %ecx
476af6:	13 d3                	adc    %ebx,%edx
476af8:	f7 da                	neg    %edx
476afa:	83 cf 40             	or     $0x40,%edi
476afd:	89 7e 1c             	mov    %edi,0x1c(%esi)
476b00:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
476b04:	89 55 f8             	mov    %edx,-0x8(%ebp)
476b07:	89 4d fc             	mov    %ecx,-0x4(%ebp)
476b0a:	7d 09                	jge    0x476b15
476b0c:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
476b13:	eb 1a                	jmp    0x476b2f
476b15:	ff 76 08             	push   0x8(%esi)
476b18:	83 e7 f7             	and    $0xfffffff7,%edi
476b1b:	8d 4e 3c             	lea    0x3c(%esi),%ecx
476b1e:	ff 76 24             	push   0x24(%esi)
476b21:	89 7e 1c             	mov    %edi,0x1c(%esi)
476b24:	e8 b3 ed ff ff       	call   0x4758dc
476b29:	8b 4d fc             	mov    -0x4(%ebp),%ecx
476b2c:	8b 55 f8             	mov    -0x8(%ebp),%edx
476b2f:	8b c1                	mov    %ecx,%eax
476b31:	0b c2                	or     %edx,%eax
476b33:	75 04                	jne    0x476b39
476b35:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
476b39:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
476b3d:	ff 75 08             	push   0x8(%ebp)
476b40:	c6 46 38 01          	movb   $0x1,0x38(%esi)
476b44:	75 0b                	jne    0x476b51
476b46:	52                   	push   %edx
476b47:	51                   	push   %ecx
476b48:	8b ce                	mov    %esi,%ecx
476b4a:	e8 27 06 00 00       	call   0x477176
476b4f:	eb 08                	jmp    0x476b59
476b51:	51                   	push   %ecx
476b52:	8b ce                	mov    %esi,%ecx
476b54:	e8 a6 02 00 00       	call   0x476dff
476b59:	8b 46 1c             	mov    0x1c(%esi),%eax
476b5c:	c1 e8 07             	shr    $0x7,%eax
476b5f:	a8 01                	test   $0x1,%al
476b61:	74 1d                	je     0x476b80
476b63:	6a 30                	push   $0x30
476b65:	5a                   	pop    %edx
476b66:	39 5e 34             	cmp    %ebx,0x34(%esi)
476b69:	74 08                	je     0x476b73
476b6b:	8b 46 30             	mov    0x30(%esi),%eax
476b6e:	66 39 10             	cmp    %dx,(%eax)
476b71:	74 0d                	je     0x476b80
476b73:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
476b77:	8b 4e 30             	mov    0x30(%esi),%ecx
476b7a:	66 89 11             	mov    %dx,(%ecx)
476b7d:	ff 46 34             	incl   0x34(%esi)
476b80:	b0 01                	mov    $0x1,%al
476b82:	5f                   	pop    %edi
476b83:	5e                   	pop    %esi
476b84:	5b                   	pop    %ebx
476b85:	c9                   	leave
476b86:	c2 04 00             	ret    $0x4
476b89:	8b ff                	mov    %edi,%edi
476b8b:	55                   	push   %ebp
476b8c:	8b ec                	mov    %esp,%ebp
476b8e:	53                   	push   %ebx
476b8f:	56                   	push   %esi
476b90:	8b f1                	mov    %ecx,%esi
476b92:	57                   	push   %edi
476b93:	8d 4e 3c             	lea    0x3c(%esi),%ecx
476b96:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
476b9c:	85 ff                	test   %edi,%edi
476b9e:	75 02                	jne    0x476ba2
476ba0:	8b f9                	mov    %ecx,%edi
476ba2:	e8 83 ec ff ff       	call   0x47582a
476ba7:	8b 55 08             	mov    0x8(%ebp),%edx
476baa:	8d 48 ff             	lea    -0x1(%eax),%ecx
476bad:	03 cf                	add    %edi,%ecx
476baf:	89 4e 30             	mov    %ecx,0x30(%esi)
476bb2:	8b c1                	mov    %ecx,%eax
476bb4:	8b d9                	mov    %ecx,%ebx
476bb6:	8b 7e 24             	mov    0x24(%esi),%edi
476bb9:	85 ff                	test   %edi,%edi
476bbb:	7f 04                	jg     0x476bc1
476bbd:	85 d2                	test   %edx,%edx
476bbf:	74 1b                	je     0x476bdc
476bc1:	8d 47 ff             	lea    -0x1(%edi),%eax
476bc4:	89 46 24             	mov    %eax,0x24(%esi)
476bc7:	8a c2                	mov    %dl,%al
476bc9:	24 07                	and    $0x7,%al
476bcb:	c1 ea 03             	shr    $0x3,%edx
476bce:	04 30                	add    $0x30,%al
476bd0:	88 03                	mov    %al,(%ebx)
476bd2:	ff 4e 30             	decl   0x30(%esi)
476bd5:	8b 46 30             	mov    0x30(%esi),%eax
476bd8:	8b d8                	mov    %eax,%ebx
476bda:	eb da                	jmp    0x476bb6
476bdc:	2b c8                	sub    %eax,%ecx
476bde:	40                   	inc    %eax
476bdf:	89 4e 34             	mov    %ecx,0x34(%esi)
476be2:	5f                   	pop    %edi
476be3:	89 46 30             	mov    %eax,0x30(%esi)
476be6:	5e                   	pop    %esi
476be7:	5b                   	pop    %ebx
476be8:	5d                   	pop    %ebp
476be9:	c2 08 00             	ret    $0x8
476bec:	8b ff                	mov    %edi,%edi
476bee:	55                   	push   %ebp
476bef:	8b ec                	mov    %esp,%ebp
476bf1:	51                   	push   %ecx
476bf2:	51                   	push   %ecx
476bf3:	53                   	push   %ebx
476bf4:	56                   	push   %esi
476bf5:	8b f1                	mov    %ecx,%esi
476bf7:	57                   	push   %edi
476bf8:	8d 4e 3c             	lea    0x3c(%esi),%ecx
476bfb:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
476c01:	85 ff                	test   %edi,%edi
476c03:	75 02                	jne    0x476c07
476c05:	8b f9                	mov    %ecx,%edi
476c07:	e8 36 ec ff ff       	call   0x475842
476c0c:	8b 55 08             	mov    0x8(%ebp),%edx
476c0f:	48                   	dec    %eax
476c10:	8d 0c 47             	lea    (%edi,%eax,2),%ecx
476c13:	89 4d f8             	mov    %ecx,-0x8(%ebp)
476c16:	8b c1                	mov    %ecx,%eax
476c18:	89 4e 30             	mov    %ecx,0x30(%esi)
476c1b:	89 4d fc             	mov    %ecx,-0x4(%ebp)
476c1e:	8b 5e 24             	mov    0x24(%esi),%ebx
476c21:	8b fa                	mov    %edx,%edi
476c23:	85 db                	test   %ebx,%ebx
476c25:	7f 04                	jg     0x476c2b
476c27:	85 d2                	test   %edx,%edx
476c29:	74 1d                	je     0x476c48
476c2b:	83 e7 07             	and    $0x7,%edi
476c2e:	c1 ea 03             	shr    $0x3,%edx
476c31:	8d 43 ff             	lea    -0x1(%ebx),%eax
476c34:	83 c7 30             	add    $0x30,%edi
476c37:	89 46 24             	mov    %eax,0x24(%esi)
476c3a:	66 89 39             	mov    %di,(%ecx)
476c3d:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
476c41:	8b 46 30             	mov    0x30(%esi),%eax
476c44:	8b c8                	mov    %eax,%ecx
476c46:	eb d6                	jmp    0x476c1e
476c48:	8b 4d f8             	mov    -0x8(%ebp),%ecx
476c4b:	2b c8                	sub    %eax,%ecx
476c4d:	d1 f9                	sar    $1,%ecx
476c4f:	83 c0 02             	add    $0x2,%eax
476c52:	89 4e 34             	mov    %ecx,0x34(%esi)
476c55:	5f                   	pop    %edi
476c56:	89 46 30             	mov    %eax,0x30(%esi)
476c59:	5e                   	pop    %esi
476c5a:	5b                   	pop    %ebx
476c5b:	c9                   	leave
476c5c:	c2 08 00             	ret    $0x8
476c5f:	8b ff                	mov    %edi,%edi
476c61:	55                   	push   %ebp
476c62:	8b ec                	mov    %esp,%ebp
476c64:	51                   	push   %ecx
476c65:	51                   	push   %ecx
476c66:	53                   	push   %ebx
476c67:	56                   	push   %esi
476c68:	8b f1                	mov    %ecx,%esi
476c6a:	57                   	push   %edi
476c6b:	8d 4e 3c             	lea    0x3c(%esi),%ecx
476c6e:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
476c74:	85 ff                	test   %edi,%edi
476c76:	75 02                	jne    0x476c7a
476c78:	8b f9                	mov    %ecx,%edi
476c7a:	e8 ab eb ff ff       	call   0x47582a
476c7f:	8b 5d 08             	mov    0x8(%ebp),%ebx
476c82:	48                   	dec    %eax
476c83:	03 f8                	add    %eax,%edi
476c85:	89 7d f8             	mov    %edi,-0x8(%ebp)
476c88:	8b c7                	mov    %edi,%eax
476c8a:	89 7e 30             	mov    %edi,0x30(%esi)
476c8d:	89 7d fc             	mov    %edi,-0x4(%ebp)
476c90:	8b 4e 24             	mov    0x24(%esi),%ecx
476c93:	85 c9                	test   %ecx,%ecx
476c95:	7f 04                	jg     0x476c9b