5964fd:	8b 7d 0c             	mov    0xc(%ebp),%edi
596500:	8b 55 0c             	mov    0xc(%ebp),%edx
596503:	8b 52 08             	mov    0x8(%edx),%edx
596506:	8b 47 04             	mov    0x4(%edi),%eax
596509:	ff 17                	call   *(%edi)
59650b:	8b 45 0c             	mov    0xc(%ebp),%eax
59650e:	8b 40 28             	mov    0x28(%eax),%eax
596511:	80 38 00             	cmpb   $0x0,(%eax)
596514:	0f 85 de 00 00 00    	jne    0x5965f8
59651a:	e9 87 00 00 00       	jmp    0x5965a6
59651f:	43                   	inc    %ebx
596520:	0f b6 33             	movzbl (%ebx),%esi
596523:	43                   	inc    %ebx
596524:	33 c0                	xor    %eax,%eax
596526:	8a 03                	mov    (%ebx),%al
596528:	29 45 f8             	sub    %eax,-0x8(%ebp)
59652b:	8b 45 08             	mov    0x8(%ebp),%eax
59652e:	2b 45 f8             	sub    -0x8(%ebp),%eax
596531:	99                   	cltd
596532:	33 c2                	xor    %edx,%eax
596534:	2b c2                	sub    %edx,%eax
596536:	8b d0                	mov    %eax,%edx
596538:	8b 45 fc             	mov    -0x4(%ebp),%eax
59653b:	8b 08                	mov    (%eax),%ecx
59653d:	ff 11                	call   *(%ecx)
59653f:	89 45 f0             	mov    %eax,-0x10(%ebp)
596542:	01 75 f4             	add    %esi,-0xc(%ebp)
596545:	8b 45 fc             	mov    -0x4(%ebp),%eax
596548:	8b 10                	mov    (%eax),%edx
59654a:	ff 52 0c             	call   *0xc(%edx)
59654d:	3b 45 f4             	cmp    -0xc(%ebp),%eax
596550:	7e 54                	jle    0x5965a6
596552:	8d 04 76             	lea    (%esi,%esi,2),%eax
596555:	01 45 f0             	add    %eax,-0x10(%ebp)
596558:	eb 4c                	jmp    0x5965a6
59655a:	8b f8                	mov    %eax,%edi
59655c:	81 e7 ff 00 00 00    	and    $0xff,%edi
596562:	4f                   	dec    %edi
596563:	8b f7                	mov    %edi,%esi
596565:	85 f6                	test   %esi,%esi
596567:	7c 34                	jl     0x59659d
596569:	46                   	inc    %esi
59656a:	43                   	inc    %ebx
59656b:	33 c0                	xor    %eax,%eax
59656d:	8a 03                	mov    (%ebx),%al
59656f:	8d 04 40             	lea    (%eax,%eax,2),%eax
596572:	8b 55 10             	mov    0x10(%ebp),%edx
596575:	8b 4d f0             	mov    -0x10(%ebp),%ecx
596578:	03 d0                	add    %eax,%edx
59657a:	66 8b 02             	mov    (%edx),%ax
59657d:	66 89 01             	mov    %ax,(%ecx)
596580:	8a 42 02             	mov    0x2(%edx),%al
596583:	88 41 02             	mov    %al,0x2(%ecx)
596586:	ff 45 f4             	incl   -0xc(%ebp)
596589:	8b 45 fc             	mov    -0x4(%ebp),%eax
59658c:	8b 10                	mov    (%eax),%edx
59658e:	ff 52 0c             	call   *0xc(%edx)
596591:	3b 45 f4             	cmp    -0xc(%ebp),%eax
596594:	7e 04                	jle    0x59659a
596596:	83 45 f0 03          	addl   $0x3,-0x10(%ebp)
59659a:	4e                   	dec    %esi
59659b:	75 cd                	jne    0x59656a
59659d:	f7 c7 01 00 00 00    	test   $0x1,%edi
5965a3:	75 01                	jne    0x5965a6
5965a5:	43                   	inc    %ebx
5965a6:	43                   	inc    %ebx
5965a7:	eb 46                	jmp    0x5965ef
5965a9:	8b f8                	mov    %eax,%edi
5965ab:	81 e7 ff 00 00 00    	and    $0xff,%edi
5965b1:	4f                   	dec    %edi
5965b2:	43                   	inc    %ebx
5965b3:	8b f7                	mov    %edi,%esi
5965b5:	85 f6                	test   %esi,%esi
5965b7:	7c 35                	jl     0x5965ee
5965b9:	46                   	inc    %esi
5965ba:	33 c0                	xor    %eax,%eax
5965bc:	8a 03                	mov    (%ebx),%al
5965be:	8d 04 40             	lea    (%eax,%eax,2),%eax
5965c1:	8b 55 10             	mov    0x10(%ebp),%edx
5965c4:	8b 4d f0             	mov    -0x10(%ebp),%ecx
5965c7:	8b f9                	mov    %ecx,%edi
5965c9:	66 8b 0c 02          	mov    (%edx,%eax,1),%cx
5965cd:	66 89 0f             	mov    %cx,(%edi)
5965d0:	8a 4c 02 02          	mov    0x2(%edx,%eax,1),%cl
5965d4:	88 4f 02             	mov    %cl,0x2(%edi)
5965d7:	ff 45 f4             	incl   -0xc(%ebp)
5965da:	8b 45 fc             	mov    -0x4(%ebp),%eax
5965dd:	8b 10                	mov    (%eax),%edx
5965df:	ff 52 0c             	call   *0xc(%edx)
5965e2:	3b 45 f4             	cmp    -0xc(%ebp),%eax
5965e5:	7e 04                	jle    0x5965eb
5965e7:	83 45 f0 03          	addl   $0x3,-0x10(%ebp)
5965eb:	4e                   	dec    %esi
5965ec:	75 cc                	jne    0x5965ba
5965ee:	43                   	inc    %ebx
5965ef:	ff 4d ec             	decl   -0x14(%ebp)
5965f2:	0f 85 91 fe ff ff    	jne    0x596489
5965f8:	5f                   	pop    %edi
5965f9:	5e                   	pop    %esi
5965fa:	5b                   	pop    %ebx
5965fb:	8b e5                	mov    %ebp,%esp
5965fd:	5d                   	pop    %ebp
5965fe:	c2 0c 00             	ret    $0xc
596601:	8d 40 00             	lea    0x0(%eax),%eax
596604:	55                   	push   %ebp
596605:	8b ec                	mov    %esp,%ebp
596607:	83 c4 e8             	add    $0xffffffe8,%esp
59660a:	53                   	push   %ebx
59660b:	56                   	push   %esi
59660c:	57                   	push   %edi
59660d:	8b f1                	mov    %ecx,%esi
59660f:	8b da                	mov    %edx,%ebx
596611:	89 45 fc             	mov    %eax,-0x4(%ebp)
596614:	8b 45 fc             	mov    -0x4(%ebp),%eax
596617:	8b 10                	mov    (%eax),%edx
596619:	ff 52 08             	call   *0x8(%edx)
59661c:	48                   	dec    %eax
59661d:	89 45 f8             	mov    %eax,-0x8(%ebp)
596620:	8b 45 08             	mov    0x8(%ebp),%eax
596623:	2b 45 f8             	sub    -0x8(%ebp),%eax
596626:	99                   	cltd
596627:	33 c2                	xor    %edx,%eax
596629:	2b c2                	sub    %edx,%eax
59662b:	8b d0                	mov    %eax,%edx
59662d:	8b 45 fc             	mov    -0x4(%ebp),%eax
596630:	8b 08                	mov    (%eax),%ecx
596632:	ff 11                	call   *(%ecx)
596634:	89 45 f0             	mov    %eax,-0x10(%ebp)
596637:	33 c0                	xor    %eax,%eax
596639:	89 45 f4             	mov    %eax,-0xc(%ebp)
59663c:	4e                   	dec    %esi
59663d:	85 f6                	test   %esi,%esi
59663f:	0f 8c 41 01 00 00    	jl     0x596786
596645:	46                   	inc    %esi
596646:	89 75 ec             	mov    %esi,-0x14(%ebp)
596649:	8a 03                	mov    (%ebx),%al
59664b:	84 c0                	test   %al,%al
59664d:	0f 85 fb 00 00 00    	jne    0x59674e
596653:	43                   	inc    %ebx
596654:	8a 03                	mov    (%ebx),%al
596656:	8b d0                	mov    %eax,%edx
596658:	80 ea 01             	sub    $0x1,%dl
59665b:	72 0f                	jb     0x59666c
59665d:	0f 84 23 01 00 00    	je     0x596786
596663:	fe ca                	dec    %dl
596665:	74 75                	je     0x5966dc
596667:	e9 a8 00 00 00       	jmp    0x596714
59666c:	ff 4d f8             	decl   -0x8(%ebp)
59666f:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
596673:	0f 8c 0d 01 00 00    	jl     0x596786
596679:	8b 45 08             	mov    0x8(%ebp),%eax
59667c:	2b 45 f8             	sub    -0x8(%ebp),%eax
59667f:	99                   	cltd
596680:	33 c2                	xor    %edx,%eax
596682:	2b c2                	sub    %edx,%eax
596684:	8b d0                	mov    %eax,%edx
596686:	8b 45 fc             	mov    -0x4(%ebp),%eax
596689:	8b 08                	mov    (%eax),%ecx
59668b:	ff 11                	call   *(%ecx)
59668d:	89 45 f0             	mov    %eax,-0x10(%ebp)
596690:	33 c0                	xor    %eax,%eax
596692:	89 45 f4             	mov    %eax,-0xc(%ebp)
596695:	8b 45 0c             	mov    0xc(%ebp),%eax
596698:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
59669d:	74 2c                	je     0x5966cb
59669f:	8b 45 fc             	mov    -0x4(%ebp),%eax
5966a2:	8b 10                	mov    (%eax),%edx
5966a4:	ff 52 08             	call   *0x8(%edx)
5966a7:	2b 45 f8             	sub    -0x8(%ebp),%eax
5966aa:	89 45 e8             	mov    %eax,-0x18(%ebp)
5966ad:	db 45 e8             	fildl  -0x18(%ebp)
5966b0:	8b 45 0c             	mov    0xc(%ebp),%eax
5966b3:	dc 48 18             	fmull  0x18(%eax)
5966b6:	e8 11 c6 e6 ff       	call   0x402ccc
5966bb:	8b c8                	mov    %eax,%ecx
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