59a843:	b1 ff                	mov    $0xff,%cl
59a845:	b2 ff                	mov    $0xff,%dl
59a847:	b0 ff                	mov    $0xff,%al
59a849:	e8 c2 ea 00 00       	call   0x5a9310
59a84e:	8a 85 66 fb ff ff    	mov    -0x49a(%ebp),%al
59a854:	c1 e0 10             	shl    $0x10,%eax
59a857:	66 8b 85 64 fb ff ff 	mov    -0x49c(%ebp),%ax
59a85e:	50                   	push   %eax
59a85f:	e8 f0 eb 00 00       	call   0x5a9454
59a864:	88 45 b3             	mov    %al,-0x4d(%ebp)
59a867:	8b 45 a0             	mov    -0x60(%ebp),%eax
59a86a:	83 f8 00             	cmp    $0x0,%eax
59a86d:	0f 8c e9 04 00 00    	jl     0x59ad5c
59a873:	89 45 d8             	mov    %eax,-0x28(%ebp)
59a876:	8b 55 d8             	mov    -0x28(%ebp),%edx
59a879:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a87c:	8b 08                	mov    (%eax),%ecx
59a87e:	ff 11                	call   *(%ecx)
59a880:	8b f8                	mov    %eax,%edi
59a882:	8b 5d a4             	mov    -0x5c(%ebp),%ebx
59a885:	85 db                	test   %ebx,%ebx
59a887:	7c 43                	jl     0x59a8cc
59a889:	43                   	inc    %ebx
59a88a:	33 f6                	xor    %esi,%esi
59a88c:	8b d6                	mov    %esi,%edx
59a88e:	8b 45 bc             	mov    -0x44(%ebp),%eax
59a891:	e8 6a 52 01 00       	call   0x5afb00
59a896:	85 c0                	test   %eax,%eax
59a898:	74 2e                	je     0x59a8c8
59a89a:	8b d6                	mov    %esi,%edx
59a89c:	8b c7                	mov    %edi,%eax
59a89e:	e8 5d 52 01 00       	call   0x5afb00
59a8a3:	85 c0                	test   %eax,%eax
59a8a5:	0f 95 c0             	setne  %al
59a8a8:	32 45 b3             	xor    -0x4d(%ebp),%al
59a8ab:	74 10                	je     0x59a8bd
59a8ad:	b9 01 00 00 00       	mov    $0x1,%ecx
59a8b2:	8b d6                	mov    %esi,%edx
59a8b4:	8b c7                	mov    %edi,%eax
59a8b6:	e8 61 52 01 00       	call   0x5afb1c
59a8bb:	eb 0b                	jmp    0x59a8c8
59a8bd:	33 c9                	xor    %ecx,%ecx
59a8bf:	8b d6                	mov    %esi,%edx
59a8c1:	8b c7                	mov    %edi,%eax
59a8c3:	e8 54 52 01 00       	call   0x5afb1c
59a8c8:	46                   	inc    %esi
59a8c9:	4b                   	dec    %ebx
59a8ca:	75 c0                	jne    0x59a88c
59a8cc:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59a8cf:	01 45 bc             	add    %eax,-0x44(%ebp)
59a8d2:	ff 4d d8             	decl   -0x28(%ebp)
59a8d5:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
59a8d9:	75 9b                	jne    0x59a876
59a8db:	e9 7c 04 00 00       	jmp    0x59ad5c
59a8e0:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a8e3:	8b 10                	mov    (%eax),%edx
59a8e5:	ff 52 0c             	call   *0xc(%edx)
59a8e8:	d1 e8                	shr    $1,%eax
59a8ea:	89 45 d0             	mov    %eax,-0x30(%ebp)
59a8ed:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a8f0:	8b 10                	mov    (%eax),%edx
59a8f2:	ff 52 0c             	call   *0xc(%edx)
59a8f5:	a8 01                	test   $0x1,%al
59a8f7:	74 03                	je     0x59a8fc
59a8f9:	ff 45 d0             	incl   -0x30(%ebp)
59a8fc:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a8ff:	8b 10                	mov    (%eax),%edx
59a901:	ff 52 08             	call   *0x8(%edx)
59a904:	f7 6d d4             	imull  -0x2c(%ebp)
59a907:	e8 a0 7e e6 ff       	call   0x4027ac
59a90c:	89 45 c8             	mov    %eax,-0x38(%ebp)
59a90f:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a912:	8b 10                	mov    (%eax),%edx
59a914:	ff 52 08             	call   *0x8(%edx)
59a917:	8b c8                	mov    %eax,%ecx
59a919:	0f af 4d d4          	imul   -0x2c(%ebp),%ecx
59a91d:	8b 55 c8             	mov    -0x38(%ebp),%edx
59a920:	8b 45 fc             	mov    -0x4(%ebp),%eax
59a923:	8b 30                	mov    (%eax),%esi
59a925:	ff 56 08             	call   *0x8(%esi)
59a928:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a92b:	8b 10                	mov    (%eax),%edx
59a92d:	ff 52 08             	call   *0x8(%edx)
59a930:	8b c8                	mov    %eax,%ecx
59a932:	0f af 4d b4          	imul   -0x4c(%ebp),%ecx
59a936:	8b 55 b8             	mov    -0x48(%ebp),%edx
59a939:	8b 45 fc             	mov    -0x4(%ebp),%eax
59a93c:	8b 30                	mov    (%eax),%esi
59a93e:	ff 56 08             	call   *0x8(%esi)
59a941:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a944:	8b 10                	mov    (%eax),%edx
59a946:	ff 52 08             	call   *0x8(%edx)
59a949:	48                   	dec    %eax
59a94a:	89 45 a0             	mov    %eax,-0x60(%ebp)
59a94d:	84 db                	test   %bl,%bl
59a94f:	0f 84 25 01 00 00    	je     0x59aa7a
59a955:	8b 45 a0             	mov    -0x60(%ebp),%eax
59a958:	83 f8 00             	cmp    $0x0,%eax
59a95b:	0f 8c 1b 02 00 00    	jl     0x59ab7c
59a961:	89 45 d8             	mov    %eax,-0x28(%ebp)
59a964:	8b 55 d8             	mov    -0x28(%ebp),%edx
59a967:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a96a:	8b 08                	mov    (%eax),%ecx
59a96c:	ff 11                	call   *(%ecx)
59a96e:	8b f8                	mov    %eax,%edi
59a970:	8b 45 c8             	mov    -0x38(%ebp),%eax
59a973:	89 45 c4             	mov    %eax,-0x3c(%ebp)
59a976:	8b 45 a0             	mov    -0x60(%ebp),%eax
59a979:	2b 45 d8             	sub    -0x28(%ebp),%eax
59a97c:	f7 6d d4             	imull  -0x2c(%ebp)
59a97f:	01 45 c4             	add    %eax,-0x3c(%ebp)
59a982:	8b 5d d0             	mov    -0x30(%ebp),%ebx
59a985:	4b                   	dec    %ebx
59a986:	85 db                	test   %ebx,%ebx
59a988:	0f 8c d4 00 00 00    	jl     0x59aa62
59a98e:	43                   	inc    %ebx
59a98f:	33 f6                	xor    %esi,%esi
59a991:	8b d6                	mov    %esi,%edx
59a993:	03 d2                	add    %edx,%edx
59a995:	8b 45 bc             	mov    -0x44(%ebp),%eax
59a998:	e8 63 51 01 00       	call   0x5afb00
59a99d:	85 c0                	test   %eax,%eax
59a99f:	74 13                	je     0x59a9b4
59a9a1:	6a 00                	push   $0x0
59a9a3:	8b d6                	mov    %esi,%edx
59a9a5:	03 d2                	add    %edx,%edx
59a9a7:	8b 45 0c             	mov    0xc(%ebp),%eax
59a9aa:	8b 00                	mov    (%eax),%eax
59a9ac:	8b 4d d8             	mov    -0x28(%ebp),%ecx
59a9af:	e8 a4 82 05 00       	call   0x5f2c58
59a9b4:	8b 45 c4             	mov    -0x3c(%ebp),%eax
59a9b7:	0f b6 00             	movzbl (%eax),%eax
59a9ba:	c1 e8 04             	shr    $0x4,%eax
59a9bd:	8d 04 40             	lea    (%eax,%eax,2),%eax
59a9c0:	8b 55 f4             	mov    -0xc(%ebp),%edx
59a9c3:	8b 12                	mov    (%edx),%edx
59a9c5:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
59a9cb:	66 8b 0c 02          	mov    (%edx,%eax,1),%cx
59a9cf:	66 89 0f             	mov    %cx,(%edi)
59a9d2:	8a 4c 02 02          	mov    0x2(%edx,%eax,1),%cl
59a9d6:	88 4f 02             	mov    %cl,0x2(%edi)
59a9d9:	83 c7 03             	add    $0x3,%edi
59a9dc:	8b d6                	mov    %esi,%edx
59a9de:	03 d2                	add    %edx,%edx
59a9e0:	42                   	inc    %edx
59a9e1:	8b 45 bc             	mov    -0x44(%ebp),%eax
59a9e4:	e8 17 51 01 00       	call   0x5afb00
59a9e9:	85 c0                	test   %eax,%eax
59a9eb:	74 14                	je     0x59aa01
59a9ed:	6a 00                	push   $0x0
59a9ef:	8b d6                	mov    %esi,%edx
59a9f1:	03 d2                	add    %edx,%edx
59a9f3:	42                   	inc    %edx
59a9f4:	8b 45 0c             	mov    0xc(%ebp),%eax
59a9f7:	8b 00                	mov    (%eax),%eax
59a9f9:	8b 4d d8             	mov    -0x28(%ebp),%ecx
59a9fc:	e8 57 82 05 00       	call   0x5f2c58
59aa01:	8b d6                	mov    %esi,%edx
59aa03:	03 d2                	add    %edx,%edx
59aa05:	42                   	inc    %edx
59aa06:	8b 45 bc             	mov    -0x44(%ebp),%eax
59aa09:	e8 f2 50 01 00       	call   0x5afb00
59aa0e:	85 c0                	test   %eax,%eax
59aa10:	75 2a                	jne    0x59aa3c
59aa12:	8b 45 c4             	mov    -0x3c(%ebp),%eax
59aa15:	8a 00                	mov    (%eax),%al
59aa17:	24 0f                	and    $0xf,%al
59aa19:	25 ff 00 00 00       	and    $0xff,%eax
59aa1e:	8d 04 40             	lea    (%eax,%eax,2),%eax
59aa21:	8b 55 f4             	mov    -0xc(%ebp),%edx
59aa24:	8b 12                	mov    (%edx),%edx
59aa26:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
59aa2c:	66 8b 0c 02          	mov    (%edx,%eax,1),%cx
59aa30:	66 89 0f             	mov    %cx,(%edi)
59aa33:	8a 4c 02 02          	mov    0x2(%edx,%eax,1),%cl
59aa37:	88 4f 02             	mov    %cl,0x2(%edi)
59aa3a:	eb 18                	jmp    0x59aa54
59aa3c:	8b 45 f4             	mov    -0xc(%ebp),%eax
59aa3f:	8b 00                	mov    (%eax),%eax
59aa41:	66 8b 90 18 01 00 00 	mov    0x118(%eax),%dx
59aa48:	66 89 17             	mov    %dx,(%edi)
59aa4b:	8a 90 1a 01 00 00    	mov    0x11a(%eax),%dl
59aa51:	88 57 02             	mov    %dl,0x2(%edi)
59aa54:	83 c7 03             	add    $0x3,%edi
59aa57:	ff 45 c4             	incl   -0x3c(%ebp)
59aa5a:	46                   	inc    %esi
59aa5b:	4b                   	dec    %ebx
59aa5c:	0f 85 2f ff ff ff    	jne    0x59a991
59aa62:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59aa65:	01 45 bc             	add    %eax,-0x44(%ebp)
59aa68:	ff 4d d8             	decl   -0x28(%ebp)
59aa6b:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
59aa6f:	0f 85 ef fe ff ff    	jne    0x59a964
59aa75:	e9 02 01 00 00       	jmp    0x59ab7c
59aa7a:	8b 45 a0             	mov    -0x60(%ebp),%eax
59aa7d:	83 f8 00             	cmp    $0x0,%eax
59aa80:	0f 8c f6 00 00 00    	jl     0x59ab7c
59aa86:	89 45 d8             	mov    %eax,-0x28(%ebp)
59aa89:	8b 55 d8             	mov    -0x28(%ebp),%edx
59aa8c:	8b 45 f8             	mov    -0x8(%ebp),%eax
59aa8f:	8b 08                	mov    (%eax),%ecx
59aa91:	ff 11                	call   *(%ecx)
59aa93:	8b f8                	mov    %eax,%edi
59aa95:	8b 45 c8             	mov    -0x38(%ebp),%eax
59aa98:	89 45 c4             	mov    %eax,-0x3c(%ebp)
59aa9b:	8b 45 a0             	mov    -0x60(%ebp),%eax
59aa9e:	2b 45 d8             	sub    -0x28(%ebp),%eax
59aaa1:	f7 6d d4             	imull  -0x2c(%ebp)
59aaa4:	01 45 c4             	add    %eax,-0x3c(%ebp)
59aaa7:	8b 5d d0             	mov    -0x30(%ebp),%ebx
59aaaa:	4b                   	dec    %ebx
59aaab:	85 db                	test   %ebx,%ebx
59aaad:	0f 8c b6 00 00 00    	jl     0x59ab69
59aab3:	43                   	inc    %ebx
59aab4:	33 f6                	xor    %esi,%esi
59aab6:	8b d6                	mov    %esi,%edx
59aab8:	03 d2                	add    %edx,%edx
59aaba:	8b 45 bc             	mov    -0x44(%ebp),%eax
59aabd:	e8 3e 50 01 00       	call   0x5afb00
59aac2:	85 c0                	test   %eax,%eax
59aac4:	75 27                	jne    0x59aaed
59aac6:	8b 45 c4             	mov    -0x3c(%ebp),%eax
59aac9:	0f b6 00             	movzbl (%eax),%eax
59aacc:	c1 e8 04             	shr    $0x4,%eax
59aacf:	8d 04 40             	lea    (%eax,%eax,2),%eax
59aad2:	8b 55 f4             	mov    -0xc(%ebp),%edx
59aad5:	8b 12                	mov    (%edx),%edx
59aad7:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
59aadd:	66 8b 0c 02          	mov    (%edx,%eax,1),%cx
59aae1:	66 89 0f             	mov    %cx,(%edi)
59aae4:	8a 4c 02 02          	mov    0x2(%edx,%eax,1),%cl
59aae8:	88 4f 02             	mov    %cl,0x2(%edi)
59aaeb:	eb 18                	jmp    0x59ab05
59aaed:	8b 45 f4             	mov    -0xc(%ebp),%eax
59aaf0:	8b 00                	mov    (%eax),%eax
59aaf2:	66 8b 90 18 01 00 00 	mov    0x118(%eax),%dx
59aaf9:	66 89 17             	mov    %dx,(%edi)
59aafc:	8a 90 1a 01 00 00    	mov    0x11a(%eax),%dl
59ab02:	88 57 02             	mov    %dl,0x2(%edi)
59ab05:	83 c7 03             	add    $0x3,%edi
59ab08:	8b d6                	mov    %esi,%edx
59ab0a:	03 d2                	add    %edx,%edx
59ab0c:	42                   	inc    %edx
59ab0d:	8b 45 bc             	mov    -0x44(%ebp),%eax
59ab10:	e8 eb 4f 01 00       	call   0x5afb00
59ab15:	85 c0                	test   %eax,%eax
59ab17:	75 2a                	jne    0x59ab43
59ab19:	8b 45 c4             	mov    -0x3c(%ebp),%eax
59ab1c:	8a 00                	mov    (%eax),%al
59ab1e:	24 0f                	and    $0xf,%al
59ab20:	25 ff 00 00 00       	and    $0xff,%eax
59ab25:	8d 04 40             	lea    (%eax,%eax,2),%eax
59ab28:	8b 55 f4             	mov    -0xc(%ebp),%edx
59ab2b:	8b 12                	mov    (%edx),%edx
59ab2d:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
59ab33:	66 8b 0c 02          	mov    (%edx,%eax,1),%cx
59ab37:	66 89 0f             	mov    %cx,(%edi)
59ab3a:	8a 4c 02 02          	mov    0x2(%edx,%eax,1),%cl
59ab3e:	88 4f 02             	mov    %cl,0x2(%edi)
59ab41:	eb 18                	jmp    0x59ab5b
59ab43:	8b 45 f4             	mov    -0xc(%ebp),%eax
59ab46:	8b 00                	mov    (%eax),%eax
59ab48:	66 8b 90 18 01 00 00 	mov    0x118(%eax),%dx
59ab4f:	66 89 17             	mov    %dx,(%edi)
59ab52:	8a 90 1a 01 00 00    	mov    0x11a(%eax),%dl
59ab58:	88 57 02             	mov    %dl,0x2(%edi)
59ab5b:	83 c7 03             	add    $0x3,%edi
59ab5e:	ff 45 c4             	incl   -0x3c(%ebp)
59ab61:	46                   	inc    %esi
59ab62:	4b                   	dec    %ebx
59ab63:	0f 85 4d ff ff ff    	jne    0x59aab6
59ab69:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59ab6c:	01 45 bc             	add    %eax,-0x44(%ebp)
59ab6f:	ff 4d d8             	decl   -0x28(%ebp)
59ab72:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
59ab76:	0f 85 0d ff ff ff    	jne    0x59aa89
59ab7c:	8b 45 c8             	mov    -0x38(%ebp),%eax
59ab7f:	e8 48 7c e6 ff       	call   0x4027cc
59ab84:	e9 d3 01 00 00       	jmp    0x59ad5c
59ab89:	8b 45 f8             	mov    -0x8(%ebp),%eax
59ab8c:	8b 10                	mov    (%eax),%edx
59ab8e:	ff 52 08             	call   *0x8(%edx)
59ab91:	f7 6d d4             	imull  -0x2c(%ebp)
59ab94:	e8 13 7c e6 ff       	call   0x4027ac
59ab99:	89 45 c8             	mov    %eax,-0x38(%ebp)
59ab9c:	8b 45 f8             	mov    -0x8(%ebp),%eax
59ab9f:	8b 10                	mov    (%eax),%edx
59aba1:	ff 52 08             	call   *0x8(%edx)
59aba4:	8b c8                	mov    %eax,%ecx
59aba6:	0f af 4d d4          	imul   -0x2c(%ebp),%ecx
59abaa:	8b 55 c8             	mov    -0x38(%ebp),%edx
59abad:	8b 45 fc             	mov    -0x4(%ebp),%eax
59abb0:	8b 30                	mov    (%eax),%esi
59abb2:	ff 56 08             	call   *0x8(%esi)
59abb5:	8b 45 f8             	mov    -0x8(%ebp),%eax
59abb8:	8b 10                	mov    (%eax),%edx
59abba:	ff 52 08             	call   *0x8(%edx)
59abbd:	8b c8                	mov    %eax,%ecx
59abbf:	0f af 4d b4          	imul   -0x4c(%ebp),%ecx
59abc3:	8b 55 b8             	mov    -0x48(%ebp),%edx
59abc6:	8b 45 fc             	mov    -0x4(%ebp),%eax
59abc9:	8b 30                	mov    (%eax),%esi
59abcb:	ff 56 08             	call   *0x8(%esi)
59abce:	8b 45 f8             	mov    -0x8(%ebp),%eax
59abd1:	8b 10                	mov    (%eax),%edx
59abd3:	ff 52 08             	call   *0x8(%edx)
59abd6:	48                   	dec    %eax
59abd7:	89 45 a0             	mov    %eax,-0x60(%ebp)
59abda:	8b 45 f8             	mov    -0x8(%ebp),%eax
59abdd:	8b 10                	mov    (%eax),%edx
59abdf:	ff 52 0c             	call   *0xc(%edx)
59abe2:	48                   	dec    %eax
59abe3:	89 45 a4             	mov    %eax,-0x5c(%ebp)
59abe6:	84 db                	test   %bl,%bl
59abe8:	0f 84 c8 00 00 00    	je     0x59acb6
59abee:	8b 45 a0             	mov    -0x60(%ebp),%eax
59abf1:	83 f8 00             	cmp    $0x0,%eax
59abf4:	0f 8c 5a 01 00 00    	jl     0x59ad54
59abfa:	89 45 d8             	mov    %eax,-0x28(%ebp)
59abfd:	8b 55 d8             	mov    -0x28(%ebp),%edx
59ac00:	8b 45 f8             	mov    -0x8(%ebp),%eax
59ac03:	8b 08                	mov    (%eax),%ecx
59ac05:	ff 11                	call   *(%ecx)
59ac07:	8b f8                	mov    %eax,%edi
59ac09:	8b 45 c8             	mov    -0x38(%ebp),%eax
59ac0c:	89 45 c4             	mov    %eax,-0x3c(%ebp)
59ac0f:	8b 45 f8             	mov    -0x8(%ebp),%eax
59ac12:	8b 10                	mov    (%eax),%edx
59ac14:	ff 52 08             	call   *0x8(%edx)
59ac17:	48                   	dec    %eax
59ac18:	2b 45 d8             	sub    -0x28(%ebp),%eax
59ac1b:	f7 6d d4             	imull  -0x2c(%ebp)
59ac1e:	01 45 c4             	add    %eax,-0x3c(%ebp)
59ac21:	8b 5d a4             	mov    -0x5c(%ebp),%ebx
59ac24:	85 db                	test   %ebx,%ebx
59ac26:	7c 76                	jl     0x59ac9e
59ac28:	43                   	inc    %ebx
59ac29:	33 f6                	xor    %esi,%esi
59ac2b:	8b d6                	mov    %esi,%edx
59ac2d:	8b 45 bc             	mov    -0x44(%ebp),%eax
59ac30:	e8 cb 4e 01 00       	call   0x5afb00
59ac35:	85 c0                	test   %eax,%eax
59ac37:	74 11                	je     0x59ac4a
59ac39:	6a 00                	push   $0x0
59ac3b:	8b 45 0c             	mov    0xc(%ebp),%eax
59ac3e:	8b 00                	mov    (%eax),%eax
59ac40:	8b 4d d8             	mov    -0x28(%ebp),%ecx
59ac43:	8b d6                	mov    %esi,%edx
59ac45:	e8 0e 80 05 00       	call   0x5f2c58
59ac4a:	8b d6                	mov    %esi,%edx