5966bd:	8b 7d 0c             	mov    0xc(%ebp),%edi
5966c0:	8b 55 0c             	mov    0xc(%ebp),%edx
5966c3:	8b 52 08             	mov    0x8(%edx),%edx
5966c6:	8b 47 04             	mov    0x4(%edi),%eax
5966c9:	ff 17                	call   *(%edi)
5966cb:	8b 45 0c             	mov    0xc(%ebp),%eax
5966ce:	8b 40 28             	mov    0x28(%eax),%eax
5966d1:	80 38 00             	cmpb   $0x0,(%eax)
5966d4:	0f 85 ac 00 00 00    	jne    0x596786
5966da:	eb 6f                	jmp    0x59674b
5966dc:	43                   	inc    %ebx
5966dd:	0f b6 33             	movzbl (%ebx),%esi
5966e0:	43                   	inc    %ebx
5966e1:	33 c0                	xor    %eax,%eax
5966e3:	8a 03                	mov    (%ebx),%al
5966e5:	29 45 f8             	sub    %eax,-0x8(%ebp)
5966e8:	8b 45 08             	mov    0x8(%ebp),%eax
5966eb:	2b 45 f8             	sub    -0x8(%ebp),%eax
5966ee:	99                   	cltd
5966ef:	33 c2                	xor    %edx,%eax
5966f1:	2b c2                	sub    %edx,%eax
5966f3:	8b d0                	mov    %eax,%edx
5966f5:	8b 45 fc             	mov    -0x4(%ebp),%eax
5966f8:	8b 08                	mov    (%eax),%ecx
5966fa:	ff 11                	call   *(%ecx)
5966fc:	89 45 f0             	mov    %eax,-0x10(%ebp)
5966ff:	01 75 f4             	add    %esi,-0xc(%ebp)
596702:	8b 45 fc             	mov    -0x4(%ebp),%eax
596705:	8b 10                	mov    (%eax),%edx
596707:	ff 52 0c             	call   *0xc(%edx)
59670a:	3b 45 f4             	cmp    -0xc(%ebp),%eax
59670d:	7e 3c                	jle    0x59674b
59670f:	01 75 f0             	add    %esi,-0x10(%ebp)
596712:	eb 37                	jmp    0x59674b
596714:	8b f8                	mov    %eax,%edi
596716:	81 e7 ff 00 00 00    	and    $0xff,%edi
59671c:	4f                   	dec    %edi
59671d:	8b f7                	mov    %edi,%esi
59671f:	85 f6                	test   %esi,%esi
596721:	7c 1f                	jl     0x596742
596723:	46                   	inc    %esi
596724:	43                   	inc    %ebx
596725:	8b 45 f0             	mov    -0x10(%ebp),%eax
596728:	8a 13                	mov    (%ebx),%dl
59672a:	88 10                	mov    %dl,(%eax)
59672c:	ff 45 f4             	incl   -0xc(%ebp)
59672f:	8b 45 fc             	mov    -0x4(%ebp),%eax
596732:	8b 10                	mov    (%eax),%edx
596734:	ff 52 0c             	call   *0xc(%edx)
596737:	3b 45 f4             	cmp    -0xc(%ebp),%eax
59673a:	7e 03                	jle    0x59673f
59673c:	ff 45 f0             	incl   -0x10(%ebp)
59673f:	4e                   	dec    %esi
596740:	75 e2                	jne    0x596724
596742:	f7 c7 01 00 00 00    	test   $0x1,%edi
596748:	75 01                	jne    0x59674b
59674a:	43                   	inc    %ebx
59674b:	43                   	inc    %ebx
59674c:	eb 2f                	jmp    0x59677d
59674e:	8b f8                	mov    %eax,%edi
596750:	81 e7 ff 00 00 00    	and    $0xff,%edi
596756:	4f                   	dec    %edi
596757:	43                   	inc    %ebx
596758:	8b f7                	mov    %edi,%esi
59675a:	85 f6                	test   %esi,%esi
59675c:	7c 1e                	jl     0x59677c
59675e:	46                   	inc    %esi
59675f:	8b 45 f0             	mov    -0x10(%ebp),%eax
596762:	8a 13                	mov    (%ebx),%dl
596764:	88 10                	mov    %dl,(%eax)
596766:	ff 45 f4             	incl   -0xc(%ebp)
596769:	8b 45 fc             	mov    -0x4(%ebp),%eax
59676c:	8b 10                	mov    (%eax),%edx
59676e:	ff 52 0c             	call   *0xc(%edx)
596771:	3b 45 f4             	cmp    -0xc(%ebp),%eax
596774:	7e 03                	jle    0x596779
596776:	ff 45 f0             	incl   -0x10(%ebp)
596779:	4e                   	dec    %esi
59677a:	75 e3                	jne    0x59675f
59677c:	43                   	inc    %ebx
59677d:	ff 4d ec             	decl   -0x14(%ebp)
596780:	0f 85 c3 fe ff ff    	jne    0x596649
596786:	5f                   	pop    %edi
596787:	5e                   	pop    %esi
596788:	5b                   	pop    %ebx
596789:	8b e5                	mov    %ebp,%esp
59678b:	5d                   	pop    %ebp
59678c:	c2 0c 00             	ret    $0xc
59678f:	90                   	nop
596790:	55                   	push   %ebp
596791:	8b ec                	mov    %esp,%ebp
596793:	81 c4 70 ff ff ff    	add    $0xffffff70,%esp
596799:	53                   	push   %ebx
59679a:	56                   	push   %esi
59679b:	57                   	push   %edi
59679c:	89 4d f4             	mov    %ecx,-0xc(%ebp)
59679f:	89 55 f8             	mov    %edx,-0x8(%ebp)
5967a2:	89 45 fc             	mov    %eax,-0x4(%ebp)
5967a5:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
5967a8:	b8 00 04 00 00       	mov    $0x400,%eax
5967ad:	e8 fa bf e6 ff       	call   0x4027ac
5967b2:	89 45 d0             	mov    %eax,-0x30(%ebp)
5967b5:	b8 40 00 00 00       	mov    $0x40,%eax
5967ba:	e8 ed bf e6 ff       	call   0x4027ac
5967bf:	89 45 f0             	mov    %eax,-0x10(%ebp)
5967c2:	b8 0c 00 00 00       	mov    $0xc,%eax
5967c7:	e8 e0 bf e6 ff       	call   0x4027ac
5967cc:	89 45 ec             	mov    %eax,-0x14(%ebp)
5967cf:	33 c9                	xor    %ecx,%ecx
5967d1:	55                   	push   %ebp
5967d2:	68 f4 76 59 00       	push   $0x5976f4
5967d7:	64 ff 31             	push   %fs:(%ecx)
5967da:	64 89 21             	mov    %esp,%fs:(%ecx)
5967dd:	33 c0                	xor    %eax,%eax
5967df:	89 45 d4             	mov    %eax,-0x2c(%ebp)
5967e2:	8b 45 fc             	mov    -0x4(%ebp),%eax
5967e5:	e8 ce 7e e8 ff       	call   0x41e6b8
5967ea:	89 45 e0             	mov    %eax,-0x20(%ebp)
5967ed:	89 55 e4             	mov    %edx,-0x1c(%ebp)
5967f0:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
5967f4:	74 24                	je     0x59681a
5967f6:	66 c7 45 85 42 4d    	movw   $0x4d42,-0x7b(%ebp)
5967fc:	8b 45 fc             	mov    -0x4(%ebp),%eax
5967ff:	e8 e8 7e e8 ff       	call   0x41e6ec
596804:	89 45 87             	mov    %eax,-0x79(%ebp)
596807:	66 c7 45 8b 00 00    	movw   $0x0,-0x75(%ebp)
59680d:	66 c7 45 8d 00 00    	movw   $0x0,-0x73(%ebp)
596813:	33 c0                	xor    %eax,%eax
596815:	89 45 8f             	mov    %eax,-0x71(%ebp)
596818:	eb 10                	jmp    0x59682a
59681a:	8d 55 85             	lea    -0x7b(%ebp),%edx
59681d:	b9 0e 00 00 00       	mov    $0xe,%ecx
596822:	8b 45 fc             	mov    -0x4(%ebp),%eax
596825:	8b 30                	mov    (%eax),%esi
596827:	ff 56 08             	call   *0x8(%esi)
59682a:	83 7d 87 00          	cmpl   $0x0,-0x79(%ebp)
59682e:	76 0c                	jbe    0x59683c
596830:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
596834:	7f 06                	jg     0x59683c
596836:	8b 45 87             	mov    -0x79(%ebp),%eax
596839:	89 45 f4             	mov    %eax,-0xc(%ebp)
59683c:	66 81 7d 85 42 4d    	cmpw   $0x4d42,-0x7b(%ebp)
596842:	74 13                	je     0x596857
596844:	8b 45 18             	mov    0x18(%ebp),%eax
596847:	8b 40 28             	mov    0x28(%eax),%eax
59684a:	c6 00 01             	movb   $0x1,(%eax)
59684d:	e8 9e da e6 ff       	call   0x4042f0
596852:	e9 a4 0e 00 00       	jmp    0x5976fb
596857:	8d 55 e8             	lea    -0x18(%ebp),%edx
59685a:	b9 04 00 00 00       	mov    $0x4,%ecx
59685f:	8b 45 fc             	mov    -0x4(%ebp),%eax
596862:	8b 30                	mov    (%eax),%esi
596864:	ff 56 08             	call   *0x8(%esi)
596867:	66 b9 01 00          	mov    $0x1,%cx
59686b:	ba fc ff ff ff       	mov    $0xfffffffc,%edx
596870:	8b 45 fc             	mov    -0x4(%ebp),%eax
596873:	8b 30                	mov    (%eax),%esi
596875:	ff 56 10             	call   *0x10(%esi)
596878:	8b 03                	mov    (%ebx),%eax
59687a:	83 b8 a8 03 00 00 00 	cmpl   $0x0,0x3a8(%eax)
596881:	74 21                	je     0x5968a4
596883:	8b 03                	mov    (%ebx),%eax
596885:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
59688b:	e8 3c bf e6 ff       	call   0x4027cc
596890:	8b 03                	mov    (%ebx),%eax
596892:	33 d2                	xor    %edx,%edx
596894:	89 90 a8 03 00 00    	mov    %edx,0x3a8(%eax)
59689a:	8b 03                	mov    (%ebx),%eax
59689c:	33 d2                	xor    %edx,%edx
59689e:	89 90 ac 03 00 00    	mov    %edx,0x3ac(%eax)
5968a4:	83 7d e8 0c          	cmpl   $0xc,-0x18(%ebp)
5968a8:	0f 85 d4 00 00 00    	jne    0x596982
5968ae:	8b 55 ec             	mov    -0x14(%ebp),%edx
5968b1:	8b 4d e8             	mov    -0x18(%ebp),%ecx
5968b4:	8b 45 fc             	mov    -0x4(%ebp),%eax
5968b7:	8b 30                	mov    (%eax),%esi
5968b9:	ff 56 08             	call   *0x8(%esi)
5968bc:	8b 03                	mov    (%ebx),%eax
5968be:	c6 80 01 01 00 00 02 	movb   $0x2,0x101(%eax)
5968c5:	8b 45 f0             	mov    -0x10(%ebp),%eax
5968c8:	83 78 08 00          	cmpl   $0x0,0x8(%eax)
5968cc:	7d 1a                	jge    0x5968e8
5968ce:	8b 45 f0             	mov    -0x10(%ebp),%eax
5968d1:	8b 40 08             	mov    0x8(%eax),%eax
5968d4:	f7 d8                	neg    %eax
5968d6:	8b 55 f0             	mov    -0x10(%ebp),%edx
5968d9:	89 42 08             	mov    %eax,0x8(%edx)
5968dc:	8b 45 f0             	mov    -0x10(%ebp),%eax
5968df:	8b 40 08             	mov    0x8(%eax),%eax
5968e2:	48                   	dec    %eax
5968e3:	89 45 94             	mov    %eax,-0x6c(%ebp)
5968e6:	eb 05                	jmp    0x5968ed
5968e8:	33 c0                	xor    %eax,%eax
5968ea:	89 45 94             	mov    %eax,-0x6c(%ebp)
5968ed:	8b 45 ec             	mov    -0x14(%ebp),%eax
5968f0:	0f b7 40 04          	movzwl 0x4(%eax),%eax
5968f4:	8b 13                	mov    (%ebx),%edx
5968f6:	89 42 14             	mov    %eax,0x14(%edx)
5968f9:	8b 45 ec             	mov    -0x14(%ebp),%eax
5968fc:	0f b7 40 06          	movzwl 0x6(%eax),%eax
596900:	8b 13                	mov    (%ebx),%edx
596902:	89 42 18             	mov    %eax,0x18(%edx)
596905:	8b 45 ec             	mov    -0x14(%ebp),%eax
596908:	0f b7 40 0a          	movzwl 0xa(%eax),%eax
59690c:	89 45 dc             	mov    %eax,-0x24(%ebp)
59690f:	33 c0                	xor    %eax,%eax
596911:	89 45 d8             	mov    %eax,-0x28(%ebp)
596914:	8b 15 9c 71 6a 00    	mov    0x6a719c,%edx
59691a:	8b 12                	mov    (%edx),%edx
59691c:	8b 03                	mov    (%ebx),%eax
59691e:	e8 99 6d 03 00       	call   0x5cd6bc
596923:	8b 15 00 71 6a 00    	mov    0x6a7100,%edx
596929:	8b 12                	mov    (%edx),%edx
59692b:	8b 03                	mov    (%ebx),%eax
59692d:	e8 ba 6d 03 00       	call   0x5cd6ec
596932:	83 7d dc 08          	cmpl   $0x8,-0x24(%ebp)
596936:	0f 8f 66 02 00 00    	jg     0x596ba2
59693c:	8b 4d dc             	mov    -0x24(%ebp),%ecx
59693f:	b8 01 00 00 00       	mov    $0x1,%eax
596944:	d3 e0                	shl    %cl,%eax
596946:	89 45 cc             	mov    %eax,-0x34(%ebp)
596949:	8b 03                	mov    (%ebx),%eax
59694b:	8b 55 cc             	mov    -0x34(%ebp),%edx
59694e:	89 90 ac 03 00 00    	mov    %edx,0x3ac(%eax)
596954:	8b 45 cc             	mov    -0x34(%ebp),%eax
596957:	8d 04 40             	lea    (%eax,%eax,2),%eax
59695a:	e8 55 27 e7 ff       	call   0x4090b4
59695f:	8b 13                	mov    (%ebx),%edx
596961:	89 82 a8 03 00 00    	mov    %eax,0x3a8(%edx)
596967:	8b 4d cc             	mov    -0x34(%ebp),%ecx
59696a:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
59696d:	8b 03                	mov    (%ebx),%eax
59696f:	8b 90 a8 03 00 00    	mov    0x3a8(%eax),%edx
596975:	8b 45 fc             	mov    -0x4(%ebp),%eax
596978:	8b 30                	mov    (%eax),%esi
59697a:	ff 56 08             	call   *0x8(%esi)
59697d:	e9 20 02 00 00       	jmp    0x596ba2
596982:	8b 45 f0             	mov    -0x10(%ebp),%eax
596985:	33 c9                	xor    %ecx,%ecx
596987:	ba 40 00 00 00       	mov    $0x40,%edx
59698c:	e8 af c8 e6 ff       	call   0x403240
596991:	8b 55 e8             	mov    -0x18(%ebp),%edx
596994:	b8 40 00 00 00       	mov    $0x40,%eax
596999:	e8 7e 2a 01 00       	call   0x5a941c
59699e:	8b c8                	mov    %eax,%ecx
5969a0:	8b 55 f0             	mov    -0x10(%ebp),%edx
5969a3:	8b 45 fc             	mov    -0x4(%ebp),%eax
5969a6:	8b 30                	mov    (%eax),%esi
5969a8:	ff 56 08             	call   *0x8(%esi)
5969ab:	83 7d e8 40          	cmpl   $0x40,-0x18(%ebp)
5969af:	7e 12                	jle    0x5969c3
5969b1:	8b 55 e8             	mov    -0x18(%ebp),%edx
5969b4:	83 ea 28             	sub    $0x28,%edx
5969b7:	66 b9 01 00          	mov    $0x1,%cx
5969bb:	8b 45 fc             	mov    -0x4(%ebp),%eax
5969be:	8b 30                	mov    (%eax),%esi
5969c0:	ff 56 10             	call   *0x10(%esi)
5969c3:	83 7d e8 40          	cmpl   $0x40,-0x18(%ebp)
5969c7:	75 0b                	jne    0x5969d4
5969c9:	8b 03                	mov    (%ebx),%eax
5969cb:	c6 80 01 01 00 00 03 	movb   $0x3,0x101(%eax)
5969d2:	eb 1a                	jmp    0x5969ee
5969d4:	83 7d e8 28          	cmpl   $0x28,-0x18(%ebp)
5969d8:	75 0b                	jne    0x5969e5
5969da:	8b 03                	mov    (%ebx),%eax
5969dc:	c6 80 01 01 00 00 01 	movb   $0x1,0x101(%eax)
5969e3:	eb 09                	jmp    0x5969ee
5969e5:	8b 03                	mov    (%ebx),%eax
5969e7:	c6 80 01 01 00 00 00 	movb   $0x0,0x101(%eax)
5969ee:	8b 45 f0             	mov    -0x10(%ebp),%eax
5969f1:	83 78 08 00          	cmpl   $0x0,0x8(%eax)
5969f5:	7d 1a                	jge    0x596a11
5969f7:	8b 45 f0             	mov    -0x10(%ebp),%eax
5969fa:	8b 40 08             	mov    0x8(%eax),%eax
5969fd:	f7 d8                	neg    %eax
5969ff:	8b 55 f0             	mov    -0x10(%ebp),%edx
596a02:	89 42 08             	mov    %eax,0x8(%edx)
596a05:	8b 45 f0             	mov    -0x10(%ebp),%eax
596a08:	8b 40 08             	mov    0x8(%eax),%eax
596a0b:	48                   	dec    %eax
596a0c:	89 45 94             	mov    %eax,-0x6c(%ebp)
596a0f:	eb 05                	jmp    0x596a16
596a11:	33 c0                	xor    %eax,%eax
596a13:	89 45 94             	mov    %eax,-0x6c(%ebp)
596a16:	8b 45 f0             	mov    -0x10(%ebp),%eax
596a19:	8b 40 04             	mov    0x4(%eax),%eax
596a1c:	8b 13                	mov    (%ebx),%edx
596a1e:	89 42 14             	mov    %eax,0x14(%edx)
596a21:	8b 45 f0             	mov    -0x10(%ebp),%eax
596a24:	8b 40 08             	mov    0x8(%eax),%eax
596a27:	8b 13                	mov    (%ebx),%edx
596a29:	89 42 18             	mov    %eax,0x18(%edx)
596a2c:	8b 45 f0             	mov    -0x10(%ebp),%eax
596a2f:	0f b7 40 0e          	movzwl 0xe(%eax),%eax
596a33:	89 45 dc             	mov    %eax,-0x24(%ebp)
596a36:	8b 45 f0             	mov    -0x10(%ebp),%eax
596a39:	8b 40 10             	mov    0x10(%eax),%eax
596a3c:	89 45 d8             	mov    %eax,-0x28(%ebp)
596a3f:	8b 45 f0             	mov    -0x10(%ebp),%eax
596a42:	8b 40 14             	mov    0x14(%eax),%eax
596a45:	89 45 d4             	mov    %eax,-0x2c(%ebp)
596a48:	8b 45 f0             	mov    -0x10(%ebp),%eax
596a4b:	db 40 18             	fildl  0x18(%eax)
596a4e:	d8 35 04 77 59 00    	fdivs  0x597704
596a54:	db 2d 08 77 59 00    	fldt   0x597708
596a5a:	de c9                	fmulp  %st,%st(1)
596a5c:	e8 5f c2 e6 ff       	call   0x402cc0
596a61:	8b d0                	mov    %eax,%edx
596a63:	8b 03                	mov    (%ebx),%eax
596a65:	e8 52 6c 03 00       	call   0x5cd6bc
596a6a:	8b 03                	mov    (%ebx),%eax
596a6c:	83 78 1c 00          	cmpl   $0x0,0x1c(%eax)
596a70:	75 0f                	jne    0x596a81
596a72:	8b 15 9c 71 6a 00    	mov    0x6a719c,%edx
596a78:	8b 12                	mov    (%edx),%edx
596a7a:	8b 03                	mov    (%ebx),%eax
596a7c:	e8 3b 6c 03 00       	call   0x5cd6bc
596a81:	8b 45 f0             	mov    -0x10(%ebp),%eax
596a84:	db 40 1c             	fildl  0x1c(%eax)
596a87:	d8 35 04 77 59 00    	fdivs  0x597704
596a8d:	db 2d 08 77 59 00    	fldt   0x597708
596a93:	de c9                	fmulp  %st,%st(1)
596a95:	e8 26 c2 e6 ff       	call   0x402cc0
596a9a:	8b d0                	mov    %eax,%edx
596a9c:	8b 03                	mov    (%ebx),%eax
596a9e:	e8 49 6c 03 00       	call   0x5cd6ec
596aa3:	8b 03                	mov    (%ebx),%eax
596aa5:	83 78 20 00          	cmpl   $0x0,0x20(%eax)
596aa9:	75 0f                	jne    0x596aba
596aab:	8b 15 00 71 6a 00    	mov    0x6a7100,%edx
596ab1:	8b 12                	mov    (%edx),%edx
596ab3:	8b 03                	mov    (%ebx),%eax
596ab5:	e8 32 6c 03 00       	call   0x5cd6ec
596aba:	8b 45 f0             	mov    -0x10(%ebp),%eax
596abd:	81 78 20 00 01 00 00 	cmpl   $0x100,0x20(%eax)
596ac4:	76 08                	jbe    0x596ace
596ac6:	8b 45 f0             	mov    -0x10(%ebp),%eax
596ac9:	33 d2                	xor    %edx,%edx
596acb:	89 50 20             	mov    %edx,0x20(%eax)
596ace:	8b 45 f0             	mov    -0x10(%ebp),%eax
596ad1:	83 78 20 00          	cmpl   $0x0,0x20(%eax)
596ad5:	75 16                	jne    0x596aed
596ad7:	83 7d dc 08          	cmpl   $0x8,-0x24(%ebp)
596adb:	7f 10                	jg     0x596aed
596add:	8b 4d dc             	mov    -0x24(%ebp),%ecx
596ae0:	b8 01 00 00 00       	mov    $0x1,%eax
596ae5:	d3 e0                	shl    %cl,%eax
596ae7:	8b 55 f0             	mov    -0x10(%ebp),%edx
596aea:	89 42 20             	mov    %eax,0x20(%edx)
596aed:	8b 45 f0             	mov    -0x10(%ebp),%eax