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
476c97:	85 db                	test   %ebx,%ebx
476c99:	74 38                	je     0x476cd3
476c9b:	49                   	dec    %ecx
476c9c:	33 d2                	xor    %edx,%edx
476c9e:	6a 0a                	push   $0xa
476ca0:	89 4e 24             	mov    %ecx,0x24(%esi)
476ca3:	8b c3                	mov    %ebx,%eax
476ca5:	59                   	pop    %ecx
476ca6:	f7 f1                	div    %ecx
476ca8:	8b c3                	mov    %ebx,%eax
476caa:	6a 0a                	push   $0xa
476cac:	5b                   	pop    %ebx
476cad:	8d 4a 30             	lea    0x30(%edx),%ecx
476cb0:	33 d2                	xor    %edx,%edx
476cb2:	f7 f3                	div    %ebx
476cb4:	8b d8                	mov    %eax,%ebx
476cb6:	80 f9 39             	cmp    $0x39,%cl
476cb9:	7e 0c                	jle    0x476cc7
476cbb:	8a 45 0c             	mov    0xc(%ebp),%al
476cbe:	34 01                	xor    $0x1,%al
476cc0:	c0 e0 05             	shl    $0x5,%al
476cc3:	04 07                	add    $0x7,%al
476cc5:	02 c8                	add    %al,%cl
476cc7:	88 0f                	mov    %cl,(%edi)
476cc9:	ff 4e 30             	decl   0x30(%esi)
476ccc:	8b 46 30             	mov    0x30(%esi),%eax
476ccf:	8b f8                	mov    %eax,%edi
476cd1:	eb bd                	jmp    0x476c90
476cd3:	8b 7d f8             	mov    -0x8(%ebp),%edi
476cd6:	2b f8                	sub    %eax,%edi
476cd8:	40                   	inc    %eax
476cd9:	89 7e 34             	mov    %edi,0x34(%esi)
476cdc:	5f                   	pop    %edi
476cdd:	89 46 30             	mov    %eax,0x30(%esi)
476ce0:	5e                   	pop    %esi
476ce1:	5b                   	pop    %ebx
476ce2:	c9                   	leave
476ce3:	c2 08 00             	ret    $0x8
476ce6:	8b ff                	mov    %edi,%edi
476ce8:	55                   	push   %ebp
476ce9:	8b ec                	mov    %esp,%ebp
476ceb:	51                   	push   %ecx
476cec:	51                   	push   %ecx
476ced:	53                   	push   %ebx
476cee:	56                   	push   %esi
476cef:	8b f1                	mov    %ecx,%esi
476cf1:	57                   	push   %edi
476cf2:	8d 4e 3c             	lea    0x3c(%esi),%ecx
476cf5:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
476cfb:	85 ff                	test   %edi,%edi
476cfd:	75 02                	jne    0x476d01
476cff:	8b f9                	mov    %ecx,%edi
476d01:	e8 3c eb ff ff       	call   0x475842
476d06:	8b 5d 08             	mov    0x8(%ebp),%ebx
476d09:	8d 3c 47             	lea    (%edi,%eax,2),%edi
476d0c:	83 c7 fe             	add    $0xfffffffe,%edi
476d0f:	89 7d f8             	mov    %edi,-0x8(%ebp)
476d12:	8b c7                	mov    %edi,%eax
476d14:	89 7e 30             	mov    %edi,0x30(%esi)
476d17:	89 7d fc             	mov    %edi,-0x4(%ebp)
476d1a:	8b 4e 24             	mov    0x24(%esi),%ecx
476d1d:	85 c9                	test   %ecx,%ecx
476d1f:	7f 04                	jg     0x476d25
476d21:	85 db                	test   %ebx,%ebx
476d23:	74 46                	je     0x476d6b
476d25:	49                   	dec    %ecx
476d26:	33 d2                	xor    %edx,%edx
476d28:	6a 0a                	push   $0xa
476d2a:	89 4e 24             	mov    %ecx,0x24(%esi)
476d2d:	8b c3                	mov    %ebx,%eax
476d2f:	59                   	pop    %ecx
476d30:	f7 f1                	div    %ecx
476d32:	8b c3                	mov    %ebx,%eax
476d34:	83 c2 30             	add    $0x30,%edx
476d37:	0f b7 ca             	movzwl %dx,%ecx
476d3a:	33 d2                	xor    %edx,%edx
476d3c:	6a 0a                	push   $0xa
476d3e:	5b                   	pop    %ebx
476d3f:	f7 f3                	div    %ebx
476d41:	8b d8                	mov    %eax,%ebx
476d43:	83 f9 39             	cmp    $0x39,%ecx
476d46:	76 11                	jbe    0x476d59
476d48:	8a 45 0c             	mov    0xc(%ebp),%al
476d4b:	34 01                	xor    $0x1,%al
476d4d:	c0 e0 05             	shl    $0x5,%al
476d50:	04 07                	add    $0x7,%al
476d52:	02 c1                	add    %cl,%al
476d54:	66 98                	cbtw
476d56:	0f b7 c8             	movzwl %ax,%ecx
476d59:	66 0f be c1          	movsbw %cl,%ax
476d5d:	66 89 07             	mov    %ax,(%edi)
476d60:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
476d64:	8b 46 30             	mov    0x30(%esi),%eax
476d67:	8b f8                	mov    %eax,%edi
476d69:	eb af                	jmp    0x476d1a
476d6b:	8b 7d f8             	mov    -0x8(%ebp),%edi
476d6e:	2b f8                	sub    %eax,%edi
476d70:	d1 ff                	sar    $1,%edi
476d72:	83 c0 02             	add    $0x2,%eax
476d75:	89 7e 34             	mov    %edi,0x34(%esi)
476d78:	5f                   	pop    %edi
476d79:	89 46 30             	mov    %eax,0x30(%esi)
476d7c:	5e                   	pop    %esi
476d7d:	5b                   	pop    %ebx
476d7e:	c9                   	leave
476d7f:	c2 08 00             	ret    $0x8
476d82:	8b ff                	mov    %edi,%edi
476d84:	55                   	push   %ebp
476d85:	8b ec                	mov    %esp,%ebp
476d87:	51                   	push   %ecx
476d88:	53                   	push   %ebx
476d89:	56                   	push   %esi
476d8a:	8b f1                	mov    %ecx,%esi
476d8c:	57                   	push   %edi
476d8d:	8d 4e 3c             	lea    0x3c(%esi),%ecx
476d90:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
476d96:	85 ff                	test   %edi,%edi
476d98:	75 02                	jne    0x476d9c
476d9a:	8b f9                	mov    %ecx,%edi
476d9c:	e8 89 ea ff ff       	call   0x47582a
476da1:	8a 7d 0c             	mov    0xc(%ebp),%bh
476da4:	8b 55 08             	mov    0x8(%ebp),%edx
476da7:	8d 48 ff             	lea    -0x1(%eax),%ecx
476daa:	03 cf                	add    %edi,%ecx
476dac:	89 4e 30             	mov    %ecx,0x30(%esi)
476daf:	8b c1                	mov    %ecx,%eax
476db1:	89 4d fc             	mov    %ecx,-0x4(%ebp)
476db4:	8b 7e 24             	mov    0x24(%esi),%edi
476db7:	85 ff                	test   %edi,%edi
476db9:	7f 04                	jg     0x476dbf
476dbb:	85 d2                	test   %edx,%edx
476dbd:	74 30                	je     0x476def
476dbf:	8d 47 ff             	lea    -0x1(%edi),%eax
476dc2:	89 46 24             	mov    %eax,0x24(%esi)
476dc5:	8a c2                	mov    %dl,%al
476dc7:	24 0f                	and    $0xf,%al
476dc9:	c1 ea 04             	shr    $0x4,%edx
476dcc:	04 30                	add    $0x30,%al
476dce:	8a d8                	mov    %al,%bl
476dd0:	3c 39                	cmp    $0x39,%al
476dd2:	76 0b                	jbe    0x476ddf
476dd4:	8a c7                	mov    %bh,%al
476dd6:	34 01                	xor    $0x1,%al
476dd8:	c0 e0 05             	shl    $0x5,%al
476ddb:	04 07                	add    $0x7,%al
476ddd:	02 c3                	add    %bl,%al
476ddf:	8b 7d fc             	mov    -0x4(%ebp),%edi
476de2:	88 07                	mov    %al,(%edi)
476de4:	ff 4e 30             	decl   0x30(%esi)
476de7:	8b 46 30             	mov    0x30(%esi),%eax
476dea:	89 45 fc             	mov    %eax,-0x4(%ebp)
476ded:	eb c5                	jmp    0x476db4
476def:	2b c8                	sub    %eax,%ecx
476df1:	40                   	inc    %eax
476df2:	89 4e 34             	mov    %ecx,0x34(%esi)
476df5:	5f                   	pop    %edi
476df6:	89 46 30             	mov    %eax,0x30(%esi)
476df9:	5e                   	pop    %esi
476dfa:	5b                   	pop    %ebx
476dfb:	c9                   	leave
476dfc:	c2 08 00             	ret    $0x8
476dff:	8b ff                	mov    %edi,%edi
476e01:	55                   	push   %ebp
476e02:	8b ec                	mov    %esp,%ebp
476e04:	51                   	push   %ecx
476e05:	53                   	push   %ebx
476e06:	56                   	push   %esi
476e07:	8b f1                	mov    %ecx,%esi
476e09:	57                   	push   %edi
476e0a:	8d 4e 3c             	lea    0x3c(%esi),%ecx
476e0d:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
476e13:	85 ff                	test   %edi,%edi
476e15:	75 02                	jne    0x476e19
476e17:	8b f9                	mov    %ecx,%edi
476e19:	e8 24 ea ff ff       	call   0x475842