59a646:	8b 12                	mov    (%edx),%edx
59a648:	89 82 a8 03 00 00    	mov    %eax,0x3a8(%edx)
59a64e:	8b 5d c0             	mov    -0x40(%ebp),%ebx
59a651:	4b                   	dec    %ebx
59a652:	85 db                	test   %ebx,%ebx
59a654:	7c 41                	jl     0x59a697
59a656:	43                   	inc    %ebx
59a657:	c7 45 dc 00 00 00 00 	movl   $0x0,-0x24(%ebp)
59a65e:	8d 85 6a fb ff ff    	lea    -0x496(%ebp),%eax
59a664:	8b 55 dc             	mov    -0x24(%ebp),%edx
59a667:	8d 14 52             	lea    (%edx,%edx,2),%edx
59a66a:	8b 4d f4             	mov    -0xc(%ebp),%ecx
59a66d:	8b 09                	mov    (%ecx),%ecx
59a66f:	8b b1 a8 03 00 00    	mov    0x3a8(%ecx),%esi
59a675:	8a 08                	mov    (%eax),%cl
59a677:	88 4c 16 02          	mov    %cl,0x2(%esi,%edx,1)
59a67b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
59a67e:	8a 48 ff             	mov    -0x1(%eax),%cl
59a681:	88 4c 16 01          	mov    %cl,0x1(%esi,%edx,1)
59a685:	8b 4d f4             	mov    -0xc(%ebp),%ecx
59a688:	8a 48 fe             	mov    -0x2(%eax),%cl
59a68b:	88 0c 16             	mov    %cl,(%esi,%edx,1)
59a68e:	ff 45 dc             	incl   -0x24(%ebp)
59a691:	83 c0 04             	add    $0x4,%eax
59a694:	4b                   	dec    %ebx
59a695:	75 cd                	jne    0x59a664
59a697:	80 7d 14 00          	cmpb   $0x0,0x14(%ebp)
59a69b:	0f 85 c3 06 00 00    	jne    0x59ad64
59a6a1:	83 7d c0 02          	cmpl   $0x2,-0x40(%ebp)
59a6a5:	75 12                	jne    0x59a6b9
59a6a7:	6a 01                	push   $0x1
59a6a9:	8b 4d ac             	mov    -0x54(%ebp),%ecx
59a6ac:	8b 55 a8             	mov    -0x58(%ebp),%edx
59a6af:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a6b2:	8b 18                	mov    (%eax),%ebx
59a6b4:	ff 53 24             	call   *0x24(%ebx)
59a6b7:	eb 10                	jmp    0x59a6c9
59a6b9:	6a 05                	push   $0x5
59a6bb:	8b 4d ac             	mov    -0x54(%ebp),%ecx
59a6be:	8b 55 a8             	mov    -0x58(%ebp),%edx
59a6c1:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a6c4:	8b 18                	mov    (%eax),%ebx
59a6c6:	ff 53 24             	call   *0x24(%ebx)
59a6c9:	8a 5d 08             	mov    0x8(%ebp),%bl
59a6cc:	80 f3 01             	xor    $0x1,%bl
59a6cf:	84 db                	test   %bl,%bl
59a6d1:	74 3a                	je     0x59a70d
59a6d3:	8b 45 0c             	mov    0xc(%ebp),%eax
59a6d6:	83 38 00             	cmpl   $0x0,(%eax)
59a6d9:	75 11                	jne    0x59a6ec
59a6db:	b2 01                	mov    $0x1,%dl
59a6dd:	a1 a4 fd 5e 00       	mov    0x5efda4,%eax
59a6e2:	e8 8d 84 05 00       	call   0x5f2b74
59a6e7:	8b 55 0c             	mov    0xc(%ebp),%edx
59a6ea:	89 02                	mov    %eax,(%edx)
59a6ec:	6a 08                	push   $0x8
59a6ee:	8b 45 0c             	mov    0xc(%ebp),%eax
59a6f1:	8b 00                	mov    (%eax),%eax
59a6f3:	8b 4d ac             	mov    -0x54(%ebp),%ecx
59a6f6:	8b 55 a8             	mov    -0x58(%ebp),%edx
59a6f9:	e8 42 88 05 00       	call   0x5f2f40
59a6fe:	8b 45 0c             	mov    0xc(%ebp),%eax
59a701:	8b 00                	mov    (%eax),%eax
59a703:	ba ff 00 00 00       	mov    $0xff,%edx
59a708:	e8 17 a0 05 00       	call   0x5f4724
59a70d:	8b 45 a8             	mov    -0x58(%ebp),%eax
59a710:	f7 6d cc             	imull  -0x34(%ebp)
59a713:	83 c0 1f             	add    $0x1f,%eax
59a716:	c1 e8 05             	shr    $0x5,%eax
59a719:	c1 e0 02             	shl    $0x2,%eax
59a71c:	89 45 d4             	mov    %eax,-0x2c(%ebp)
59a71f:	8b 45 a8             	mov    -0x58(%ebp),%eax
59a722:	83 c0 1f             	add    $0x1f,%eax
59a725:	c1 e8 05             	shr    $0x5,%eax
59a728:	c1 e0 02             	shl    $0x2,%eax
59a72b:	89 45 b4             	mov    %eax,-0x4c(%ebp)
59a72e:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a731:	8b 10                	mov    (%eax),%edx
59a733:	ff 52 08             	call   *0x8(%edx)
59a736:	f7 6d b4             	imull  -0x4c(%ebp)
59a739:	e8 6e 80 e6 ff       	call   0x4027ac
59a73e:	89 45 b8             	mov    %eax,-0x48(%ebp)
59a741:	8b 45 b8             	mov    -0x48(%ebp),%eax
59a744:	89 45 bc             	mov    %eax,-0x44(%ebp)
59a747:	84 db                	test   %bl,%bl
59a749:	74 09                	je     0x59a754
59a74b:	8b 45 0c             	mov    0xc(%ebp),%eax
59a74e:	8b 00                	mov    (%eax),%eax
59a750:	c6 40 68 00          	movb   $0x0,0x68(%eax)
59a754:	8b 45 cc             	mov    -0x34(%ebp),%eax
59a757:	48                   	dec    %eax
59a758:	74 17                	je     0x59a771
59a75a:	83 e8 03             	sub    $0x3,%eax
59a75d:	0f 84 7d 01 00 00    	je     0x59a8e0
59a763:	83 e8 04             	sub    $0x4,%eax
59a766:	0f 84 1d 04 00 00    	je     0x59ab89
59a76c:	e9 eb 05 00 00       	jmp    0x59ad5c
59a771:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a774:	8b 10                	mov    (%eax),%edx
59a776:	ff 52 08             	call   *0x8(%edx)
59a779:	48                   	dec    %eax
59a77a:	89 45 a0             	mov    %eax,-0x60(%ebp)
59a77d:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a780:	8b 10                	mov    (%eax),%edx
59a782:	ff 52 0c             	call   *0xc(%edx)
59a785:	48                   	dec    %eax
59a786:	89 45 a4             	mov    %eax,-0x5c(%ebp)
59a789:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a78c:	8b 10                	mov    (%eax),%edx
59a78e:	ff 52 08             	call   *0x8(%edx)
59a791:	48                   	dec    %eax
59a792:	83 f8 00             	cmp    $0x0,%eax
59a795:	7c 23                	jl     0x59a7ba
59a797:	89 45 d8             	mov    %eax,-0x28(%ebp)
59a79a:	8b 55 d8             	mov    -0x28(%ebp),%edx
59a79d:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a7a0:	8b 08                	mov    (%eax),%ecx
59a7a2:	ff 11                	call   *(%ecx)
59a7a4:	8b d0                	mov    %eax,%edx
59a7a6:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
59a7a9:	8b 45 fc             	mov    -0x4(%ebp),%eax
59a7ac:	8b 18                	mov    (%eax),%ebx
59a7ae:	ff 53 08             	call   *0x8(%ebx)
59a7b1:	ff 4d d8             	decl   -0x28(%ebp)
59a7b4:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
59a7b8:	75 e0                	jne    0x59a79a
59a7ba:	8b 45 f8             	mov    -0x8(%ebp),%eax
59a7bd:	8b 10                	mov    (%eax),%edx
59a7bf:	ff 52 08             	call   *0x8(%edx)
59a7c2:	8b c8                	mov    %eax,%ecx
59a7c4:	0f af 4d b4          	imul   -0x4c(%ebp),%ecx
59a7c8:	8b 55 b8             	mov    -0x48(%ebp),%edx
59a7cb:	8b 45 fc             	mov    -0x4(%ebp),%eax
59a7ce:	8b 18                	mov    (%eax),%ebx
59a7d0:	ff 53 08             	call   *0x8(%ebx)
59a7d3:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
59a7d7:	75 47                	jne    0x59a820
59a7d9:	8b 45 a0             	mov    -0x60(%ebp),%eax
59a7dc:	83 f8 00             	cmp    $0x0,%eax
59a7df:	7c 3f                	jl     0x59a820
59a7e1:	89 45 d8             	mov    %eax,-0x28(%ebp)
59a7e4:	8b 5d a4             	mov    -0x5c(%ebp),%ebx
59a7e7:	85 db                	test   %ebx,%ebx
59a7e9:	7c 26                	jl     0x59a811
59a7eb:	43                   	inc    %ebx
59a7ec:	33 f6                	xor    %esi,%esi
59a7ee:	8b d6                	mov    %esi,%edx
59a7f0:	8b 45 bc             	mov    -0x44(%ebp),%eax
59a7f3:	e8 08 53 01 00       	call   0x5afb00
59a7f8:	85 c0                	test   %eax,%eax
59a7fa:	74 11                	je     0x59a80d
59a7fc:	6a 00                	push   $0x0
59a7fe:	8b 45 0c             	mov    0xc(%ebp),%eax
59a801:	8b 00                	mov    (%eax),%eax
59a803:	8b 4d d8             	mov    -0x28(%ebp),%ecx
59a806:	8b d6                	mov    %esi,%edx
59a808:	e8 4b 84 05 00       	call   0x5f2c58
59a80d:	46                   	inc    %esi
59a80e:	4b                   	dec    %ebx
59a80f:	75 dd                	jne    0x59a7ee
59a811:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59a814:	01 45 bc             	add    %eax,-0x44(%ebp)
59a817:	ff 4d d8             	decl   -0x28(%ebp)
59a81a:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
59a81e:	75 c4                	jne    0x59a7e4
59a820:	8b 45 b8             	mov    -0x48(%ebp),%eax
59a823:	89 45 bc             	mov    %eax,-0x44(%ebp)
59a826:	8b 45 f4             	mov    -0xc(%ebp),%eax
59a829:	8b 00                	mov    (%eax),%eax
59a82b:	8a 90 1a 01 00 00    	mov    0x11a(%eax),%dl
59a831:	c1 e2 10             	shl    $0x10,%edx
59a834:	66 8b 90 18 01 00 00 	mov    0x118(%eax),%dx
59a83b:	52                   	push   %edx
59a83c:	8d 85 64 fb ff ff    	lea    -0x49c(%ebp),%eax
59a842:	50                   	push   %eax
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