59967d:	8b 75 18             	mov    0x18(%ebp),%esi
599680:	8b 55 18             	mov    0x18(%ebp),%edx
599683:	8b 52 08             	mov    0x8(%edx),%edx
599686:	8b 46 04             	mov    0x4(%esi),%eax
599689:	ff 16                	call   *(%esi)
59968b:	8b 45 18             	mov    0x18(%ebp),%eax
59968e:	8b 40 28             	mov    0x28(%eax),%eax
599691:	80 38 00             	cmpb   $0x0,(%eax)
599694:	0f 85 fa 0a 00 00    	jne    0x59a194
59969a:	8b c3                	mov    %ebx,%eax
59969c:	8b 10                	mov    (%eax),%edx
59969e:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
5996a4:	8b 55 f8             	mov    -0x8(%ebp),%edx
5996a7:	8b 08                	mov    (%eax),%ecx
5996a9:	ff 51 28             	call   *0x28(%ecx)
5996ac:	8b c3                	mov    %ebx,%eax
5996ae:	8b 10                	mov    (%eax),%edx
5996b0:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
5996b6:	8b 10                	mov    (%eax),%edx
5996b8:	ff 52 10             	call   *0x10(%edx)
5996bb:	3c 01                	cmp    $0x1,%al
5996bd:	74 1b                	je     0x5996da
5996bf:	6a 09                	push   $0x9
5996c1:	8b c3                	mov    %ebx,%eax
5996c3:	e8 20 5d 04 00       	call   0x5df3e8
5996c8:	8b 55 a0             	mov    -0x60(%ebp),%edx
5996cb:	8b 4a 04             	mov    0x4(%edx),%ecx
5996ce:	8b 55 a0             	mov    -0x60(%ebp),%edx
5996d1:	8b 12                	mov    (%edx),%edx
5996d3:	e8 ec 18 01 00       	call   0x5aafc4
5996d8:	eb 19                	jmp    0x5996f3
5996da:	6a 00                	push   $0x0
5996dc:	8b c3                	mov    %ebx,%eax
5996de:	e8 05 5d 04 00       	call   0x5df3e8
5996e3:	8b 55 a0             	mov    -0x60(%ebp),%edx
5996e6:	8b 4a 04             	mov    0x4(%edx),%ecx
5996e9:	8b 55 a0             	mov    -0x60(%ebp),%edx
5996ec:	8b 12                	mov    (%edx),%edx
5996ee:	e8 d1 18 01 00       	call   0x5aafc4
5996f3:	8b c3                	mov    %ebx,%eax
5996f5:	8b 10                	mov    (%eax),%edx
5996f7:	ff 92 88 00 00 00    	call   *0x88(%edx)
5996fd:	8b 45 fc             	mov    -0x4(%ebp),%eax
599700:	e8 b3 4f e8 ff       	call   0x41e6b8
599705:	89 45 c0             	mov    %eax,-0x40(%ebp)
599708:	89 55 c4             	mov    %edx,-0x3c(%ebp)
59970b:	8b 45 c0             	mov    -0x40(%ebp),%eax
59970e:	8b d0                	mov    %eax,%edx
599710:	8b 45 c8             	mov    -0x38(%ebp),%eax
599713:	e8 fc 24 e8 ff       	call   0x41bc14
599718:	c7 85 64 ff ff ff 28 	movl   $0x28,-0x9c(%ebp)
59971f:	00 00 00
599722:	8b c3                	mov    %ebx,%eax
599724:	8b 10                	mov    (%eax),%edx
599726:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
59972c:	8b 10                	mov    (%eax),%edx
59972e:	ff 52 0c             	call   *0xc(%edx)
599731:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
599737:	8b c3                	mov    %ebx,%eax
599739:	8b 10                	mov    (%eax),%edx
59973b:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599741:	8b 10                	mov    (%eax),%edx
599743:	ff 52 08             	call   *0x8(%edx)
599746:	03 c0                	add    %eax,%eax
599748:	89 85 6c ff ff ff    	mov    %eax,-0x94(%ebp)
59974e:	33 c0                	xor    %eax,%eax
599750:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
599756:	33 c0                	xor    %eax,%eax
599758:	89 45 84             	mov    %eax,-0x7c(%ebp)
59975b:	33 c0                	xor    %eax,%eax
59975d:	89 45 88             	mov    %eax,-0x78(%ebp)
599760:	8b 45 f4             	mov    -0xc(%ebp),%eax
599763:	8b 00                	mov    (%eax),%eax
599765:	db 40 1c             	fildl  0x1c(%eax)
599768:	db 2d d0 a2 59 00    	fldt   0x59a2d0
59976e:	de f9                	fdivrp %st,%st(1)
599770:	d8 0d cc a2 59 00    	fmuls  0x59a2cc
599776:	e8 45 95 e6 ff       	call   0x402cc0
59977b:	89 85 7c ff ff ff    	mov    %eax,-0x84(%ebp)
599781:	8b 45 f4             	mov    -0xc(%ebp),%eax
599784:	8b 00                	mov    (%eax),%eax
599786:	db 40 20             	fildl  0x20(%eax)
599789:	db 2d d0 a2 59 00    	fldt   0x59a2d0
59978f:	de f9                	fdivrp %st,%st(1)
599791:	d8 0d cc a2 59 00    	fmuls  0x59a2cc
599797:	e8 24 95 e6 ff       	call   0x402cc0
59979c:	89 45 80             	mov    %eax,-0x80(%ebp)
59979f:	8b 45 9c             	mov    -0x64(%ebp),%eax
5997a2:	8b 00                	mov    (%eax),%eax
5997a4:	83 f8 04             	cmp    $0x4,%eax
5997a7:	7f 0b                	jg     0x5997b4
5997a9:	74 33                	je     0x5997de
5997ab:	83 e8 01             	sub    $0x1,%eax
5997ae:	72 10                	jb     0x5997c0
5997b0:	74 20                	je     0x5997d2
5997b2:	eb 4e                	jmp    0x599802
5997b4:	83 e8 08             	sub    $0x8,%eax
5997b7:	74 31                	je     0x5997ea
5997b9:	83 e8 18             	sub    $0x18,%eax
5997bc:	74 38                	je     0x5997f6
5997be:	eb 42                	jmp    0x599802
5997c0:	8b 45 f4             	mov    -0xc(%ebp),%eax
5997c3:	8b 00                	mov    (%eax),%eax
5997c5:	8b 40 10             	mov    0x10(%eax),%eax
5997c8:	8b 55 f4             	mov    -0xc(%ebp),%edx
5997cb:	8b 12                	mov    (%edx),%edx
5997cd:	8b 52 08             	mov    0x8(%edx),%edx
5997d0:	eb 3a                	jmp    0x59980c
5997d2:	b8 01 00 00 00       	mov    $0x1,%eax
5997d7:	ba 01 00 00 00       	mov    $0x1,%edx
5997dc:	eb 2e                	jmp    0x59980c
5997de:	b8 01 00 00 00       	mov    $0x1,%eax
5997e3:	ba 04 00 00 00       	mov    $0x4,%edx
5997e8:	eb 22                	jmp    0x59980c
5997ea:	b8 01 00 00 00       	mov    $0x1,%eax
5997ef:	ba 08 00 00 00       	mov    $0x8,%edx
5997f4:	eb 16                	jmp    0x59980c
5997f6:	b8 04 00 00 00       	mov    $0x4,%eax
5997fb:	ba 08 00 00 00       	mov    $0x8,%edx
599800:	eb 0a                	jmp    0x59980c
599802:	b8 03 00 00 00       	mov    $0x3,%eax
599807:	ba 08 00 00 00       	mov    $0x8,%edx
59980c:	83 f8 03             	cmp    $0x3,%eax
59980f:	0f 85 9b 00 00 00    	jne    0x5998b0
599815:	83 fa 08             	cmp    $0x8,%edx
599818:	0f 85 92 00 00 00    	jne    0x5998b0
59981e:	ba 18 00 00 00       	mov    $0x18,%edx
599823:	8b 45 b0             	mov    -0x50(%ebp),%eax
599826:	e8 e9 23 e8 ff       	call   0x41bc14
59982b:	66 c7 85 70 ff ff ff 	movw   $0x1,-0x90(%ebp)
599832:	01 00
599834:	66 c7 85 72 ff ff ff 	movw   $0x18,-0x8e(%ebp)
59983b:	18 00
59983d:	33 c0                	xor    %eax,%eax
59983f:	89 85 78 ff ff ff    	mov    %eax,-0x88(%ebp)
599845:	8d 95 64 ff ff ff    	lea    -0x9c(%ebp),%edx
59984b:	b9 28 00 00 00       	mov    $0x28,%ecx
599850:	8b 45 fc             	mov    -0x4(%ebp),%eax
599853:	8b 30                	mov    (%eax),%esi
599855:	ff 56 0c             	call   *0xc(%esi)
599858:	8b c3                	mov    %ebx,%eax
59985a:	8b 10                	mov    (%eax),%edx
59985c:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599862:	8b 10                	mov    (%eax),%edx
599864:	ff 52 08             	call   *0x8(%edx)
599867:	48                   	dec    %eax
599868:	83 f8 00             	cmp    $0x0,%eax
59986b:	0f 8c c8 07 00 00    	jl     0x59a039
599871:	89 45 e4             	mov    %eax,-0x1c(%ebp)
599874:	8b c3                	mov    %ebx,%eax
599876:	8b 10                	mov    (%eax),%edx
599878:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
59987e:	8b 55 e4             	mov    -0x1c(%ebp),%edx
599881:	8b 08                	mov    (%eax),%ecx
599883:	ff 11                	call   *(%ecx)
599885:	8b f8                	mov    %eax,%edi
599887:	8b c3                	mov    %ebx,%eax
599889:	8b 10                	mov    (%eax),%edx
59988b:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599891:	8b 10                	mov    (%eax),%edx
599893:	ff 52 14             	call   *0x14(%edx)
599896:	8b c8                	mov    %eax,%ecx
599898:	8b d7                	mov    %edi,%edx
59989a:	8b 45 fc             	mov    -0x4(%ebp),%eax
59989d:	8b 30                	mov    (%eax),%esi
59989f:	ff 56 0c             	call   *0xc(%esi)
5998a2:	ff 4d e4             	decl   -0x1c(%ebp)
5998a5:	83 7d e4 ff          	cmpl   $0xffffffff,-0x1c(%ebp)
5998a9:	75 c9                	jne    0x599874
5998ab:	e9 89 07 00 00       	jmp    0x59a039
5998b0:	83 f8 04             	cmp    $0x4,%eax
5998b3:	0f 85 31 01 00 00    	jne    0x5999ea
5998b9:	83 fa 08             	cmp    $0x8,%edx
5998bc:	0f 85 28 01 00 00    	jne    0x5999ea
5998c2:	ba 20 00 00 00       	mov    $0x20,%edx
5998c7:	8b 45 b0             	mov    -0x50(%ebp),%eax
5998ca:	e8 45 23 e8 ff       	call   0x41bc14
5998cf:	66 c7 85 70 ff ff ff 	movw   $0x1,-0x90(%ebp)
5998d6:	01 00
5998d8:	66 c7 85 72 ff ff ff 	movw   $0x20,-0x8e(%ebp)
5998df:	20 00
5998e1:	33 c0                	xor    %eax,%eax
5998e3:	89 85 78 ff ff ff    	mov    %eax,-0x88(%ebp)
5998e9:	8d 95 64 ff ff ff    	lea    -0x9c(%ebp),%edx
5998ef:	b9 28 00 00 00       	mov    $0x28,%ecx
5998f4:	8b 45 fc             	mov    -0x4(%ebp),%eax
5998f7:	8b 30                	mov    (%eax),%esi
5998f9:	ff 56 0c             	call   *0xc(%esi)
5998fc:	8b c3                	mov    %ebx,%eax
5998fe:	8b 10                	mov    (%eax),%edx
599900:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599906:	8b 10                	mov    (%eax),%edx
599908:	ff 52 0c             	call   *0xc(%edx)
59990b:	c1 e0 02             	shl    $0x2,%eax
59990e:	e8 99 8e e6 ff       	call   0x4027ac
599913:	89 45 ac             	mov    %eax,-0x54(%ebp)
599916:	8b c3                	mov    %ebx,%eax
599918:	8b 10                	mov    (%eax),%edx
59991a:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599920:	8b 10                	mov    (%eax),%edx
599922:	ff 52 08             	call   *0x8(%edx)
599925:	48                   	dec    %eax
599926:	83 f8 00             	cmp    $0x0,%eax
599929:	0f 8c ae 00 00 00    	jl     0x5999dd
59992f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
599932:	8b c3                	mov    %ebx,%eax
599934:	8b 10                	mov    (%eax),%edx
599936:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
59993c:	8b 55 e4             	mov    -0x1c(%ebp),%edx
59993f:	8b 08                	mov    (%eax),%ecx
599941:	ff 11                	call   *(%ecx)
599943:	89 45 b4             	mov    %eax,-0x4c(%ebp)
599946:	8b c3                	mov    %ebx,%eax
599948:	8b 10                	mov    (%eax),%edx
59994a:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599950:	e8 83 df 05 00       	call   0x5f78d8
599955:	8b 55 e4             	mov    -0x1c(%ebp),%edx
599958:	8b 08                	mov    (%eax),%ecx
59995a:	ff 11                	call   *(%ecx)
59995c:	8b f8                	mov    %eax,%edi
59995e:	8b 45 ac             	mov    -0x54(%ebp),%eax
599961:	89 45 a8             	mov    %eax,-0x58(%ebp)
599964:	8b c3                	mov    %ebx,%eax
599966:	8b 10                	mov    (%eax),%edx
599968:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
59996e:	8b 10                	mov    (%eax),%edx
599970:	ff 52 0c             	call   *0xc(%edx)
599973:	8b f0                	mov    %eax,%esi
599975:	4e                   	dec    %esi
599976:	85 f6                	test   %esi,%esi
599978:	7c 37                	jl     0x5999b1
59997a:	46                   	inc    %esi
59997b:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59997e:	8a 40 02             	mov    0x2(%eax),%al
599981:	8b 55 a8             	mov    -0x58(%ebp),%edx
599984:	88 42 02             	mov    %al,0x2(%edx)
599987:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59998a:	8a 40 01             	mov    0x1(%eax),%al
59998d:	8b 55 a8             	mov    -0x58(%ebp),%edx
599990:	88 42 01             	mov    %al,0x1(%edx)
599993:	8b 45 b4             	mov    -0x4c(%ebp),%eax
599996:	8a 00                	mov    (%eax),%al
599998:	8b 55 a8             	mov    -0x58(%ebp),%edx
59999b:	88 02                	mov    %al,(%edx)
59999d:	8a 07                	mov    (%edi),%al
59999f:	8b 55 a8             	mov    -0x58(%ebp),%edx
5999a2:	88 42 03             	mov    %al,0x3(%edx)
5999a5:	83 45 b4 03          	addl   $0x3,-0x4c(%ebp)
5999a9:	47                   	inc    %edi
5999aa:	83 45 a8 04          	addl   $0x4,-0x58(%ebp)
5999ae:	4e                   	dec    %esi
5999af:	75 ca                	jne    0x59997b
5999b1:	8b c3                	mov    %ebx,%eax
5999b3:	8b 10                	mov    (%eax),%edx
5999b5:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
5999bb:	8b 10                	mov    (%eax),%edx
5999bd:	ff 52 0c             	call   *0xc(%edx)
5999c0:	8b c8                	mov    %eax,%ecx
5999c2:	c1 e1 02             	shl    $0x2,%ecx
5999c5:	8b 55 ac             	mov    -0x54(%ebp),%edx
5999c8:	8b 45 fc             	mov    -0x4(%ebp),%eax
5999cb:	8b 30                	mov    (%eax),%esi
5999cd:	ff 56 0c             	call   *0xc(%esi)
5999d0:	ff 4d e4             	decl   -0x1c(%ebp)
5999d3:	83 7d e4 ff          	cmpl   $0xffffffff,-0x1c(%ebp)
5999d7:	0f 85 55 ff ff ff    	jne    0x599932
5999dd:	8b 45 ac             	mov    -0x54(%ebp),%eax
5999e0:	e8 e7 8d e6 ff       	call   0x4027cc
5999e5:	e9 4f 06 00 00       	jmp    0x59a039
5999ea:	83 f8 01             	cmp    $0x1,%eax
5999ed:	0f 85 36 01 00 00    	jne    0x599b29
5999f3:	83 fa 01             	cmp    $0x1,%edx
5999f6:	0f 85 2d 01 00 00    	jne    0x599b29
5999fc:	ba 01 00 00 00       	mov    $0x1,%edx
599a01:	8b 45 b0             	mov    -0x50(%ebp),%eax
599a04:	e8 0b 22 e8 ff       	call   0x41bc14
599a09:	66 c7 85 70 ff ff ff 	movw   $0x1,-0x90(%ebp)
599a10:	01 00
599a12:	66 c7 85 72 ff ff ff 	movw   $0x1,-0x8e(%ebp)
599a19:	01 00
599a1b:	8b c3                	mov    %ebx,%eax
599a1d:	8b 10                	mov    (%eax),%edx
599a1f:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599a25:	8b 10                	mov    (%eax),%edx
599a27:	ff 52 08             	call   *0x8(%edx)
599a2a:	8b f0                	mov    %eax,%esi
599a2c:	8b c3                	mov    %ebx,%eax
599a2e:	8b 10                	mov    (%eax),%edx
599a30:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599a36:	8b 10                	mov    (%eax),%edx
599a38:	ff 52 14             	call   *0x14(%edx)
599a3b:	0f af f0             	imul   %eax,%esi
599a3e:	8b c3                	mov    %ebx,%eax
599a40:	8b 10                	mov    (%eax),%edx
599a42:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599a48:	8b 10                	mov    (%eax),%edx
599a4a:	ff 52 0c             	call   *0xc(%edx)
599a4d:	8b f8                	mov    %eax,%edi
599a4f:	8b c3                	mov    %ebx,%eax
599a51:	8b 10                	mov    (%eax),%edx
599a53:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599a59:	8b 10                	mov    (%eax),%edx
599a5b:	ff 52 08             	call   *0x8(%edx)
599a5e:	0f af f8             	imul   %eax,%edi
599a61:	85 ff                	test   %edi,%edi
599a63:	79 03                	jns    0x599a68
599a65:	83 c7 07             	add    $0x7,%edi
599a68:	c1 ff 03             	sar    $0x3,%edi
599a6b:	03 f7                	add    %edi,%esi
599a6d:	89 b5 78 ff ff ff    	mov    %esi,-0x88(%ebp)
599a73:	8d 95 64 ff ff ff    	lea    -0x9c(%ebp),%edx
599a79:	b9 28 00 00 00       	mov    $0x28,%ecx
599a7e:	8b 45 fc             	mov    -0x4(%ebp),%eax
599a81:	8b 30                	mov    (%eax),%esi
599a83:	ff 56 0c             	call   *0xc(%esi)
599a86:	c6 85 64 fb ff ff 00 	movb   $0x0,-0x49c(%ebp)
599a8d:	c6 85 65 fb ff ff 00 	movb   $0x0,-0x49b(%ebp)
599a94:	c6 85 66 fb ff ff 00 	movb   $0x0,-0x49a(%ebp)
599a9b:	c6 85 67 fb ff ff 00 	movb   $0x0,-0x499(%ebp)
599aa2:	c6 85 68 fb ff ff ff 	movb   $0xff,-0x498(%ebp)
599aa9:	c6 85 69 fb ff ff ff 	movb   $0xff,-0x497(%ebp)
599ab0:	c6 85 6a fb ff ff ff 	movb   $0xff,-0x496(%ebp)
599ab7:	c6 85 6b fb ff ff 00 	movb   $0x0,-0x495(%ebp)
599abe:	8d 95 64 fb ff ff    	lea    -0x49c(%ebp),%edx
599ac4:	b9 08 00 00 00       	mov    $0x8,%ecx
599ac9:	8b 45 fc             	mov    -0x4(%ebp),%eax
599acc:	8b 30                	mov    (%eax),%esi
599ace:	ff 56 0c             	call   *0xc(%esi)
599ad1:	8b c3                	mov    %ebx,%eax
599ad3:	8b 10                	mov    (%eax),%edx
599ad5:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599adb:	8b 10                	mov    (%eax),%edx
599add:	ff 52 08             	call   *0x8(%edx)
599ae0:	48                   	dec    %eax
599ae1:	83 f8 00             	cmp    $0x0,%eax
599ae4:	0f 8c 4f 05 00 00    	jl     0x59a039
599aea:	89 45 e4             	mov    %eax,-0x1c(%ebp)
599aed:	8b c3                	mov    %ebx,%eax
599aef:	8b 10                	mov    (%eax),%edx
599af1:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599af7:	8b 55 e4             	mov    -0x1c(%ebp),%edx
599afa:	8b 08                	mov    (%eax),%ecx
599afc:	ff 11                	call   *(%ecx)
599afe:	8b f8                	mov    %eax,%edi
599b00:	8b c3                	mov    %ebx,%eax
599b02:	8b 10                	mov    (%eax),%edx
599b04:	ff 92 d0 00 00 00    	call   *0xd0(%edx)
599b0a:	8b 10                	mov    (%eax),%edx
599b0c:	ff 52 14             	call   *0x14(%edx)
599b0f:	8b c8                	mov    %eax,%ecx