59634b:	8b c8                	mov    %eax,%ecx
59634d:	8b 5d 0c             	mov    0xc(%ebp),%ebx
596350:	8b 55 0c             	mov    0xc(%ebp),%edx
596353:	8b 52 08             	mov    0x8(%edx),%edx
596356:	8b 43 04             	mov    0x4(%ebx),%eax
596359:	ff 13                	call   *(%ebx)
59635b:	8b 45 0c             	mov    0xc(%ebp),%eax
59635e:	8b 40 28             	mov    0x28(%eax),%eax
596361:	80 38 00             	cmpb   $0x0,(%eax)
596364:	0f 85 d1 00 00 00    	jne    0x59643b
59636a:	e9 83 00 00 00       	jmp    0x5963f2
59636f:	ff 45 f4             	incl   -0xc(%ebp)
596372:	8b 45 f4             	mov    -0xc(%ebp),%eax
596375:	33 db                	xor    %ebx,%ebx
596377:	8a 18                	mov    (%eax),%bl
596379:	46                   	inc    %esi
59637a:	ff 45 f4             	incl   -0xc(%ebp)
59637d:	8b 45 f4             	mov    -0xc(%ebp),%eax
596380:	0f b6 00             	movzbl (%eax),%eax
596383:	29 45 e8             	sub    %eax,-0x18(%ebp)
596386:	46                   	inc    %esi
596387:	8b 45 08             	mov    0x8(%ebp),%eax
59638a:	2b 45 e8             	sub    -0x18(%ebp),%eax
59638d:	99                   	cltd
59638e:	33 c2                	xor    %edx,%eax
596390:	2b c2                	sub    %edx,%eax
596392:	8b d0                	mov    %eax,%edx
596394:	8b 45 f8             	mov    -0x8(%ebp),%eax
596397:	8b 08                	mov    (%eax),%ecx
596399:	ff 11                	call   *(%ecx)
59639b:	89 45 f0             	mov    %eax,-0x10(%ebp)
59639e:	01 5d f0             	add    %ebx,-0x10(%ebp)
5963a1:	eb 4f                	jmp    0x5963f2
5963a3:	8b f8                	mov    %eax,%edi
5963a5:	81 e7 ff 00 00 00    	and    $0xff,%edi
5963ab:	8b df                	mov    %edi,%ebx
5963ad:	d1 eb                	shr    $1,%ebx
5963af:	4b                   	dec    %ebx
5963b0:	85 db                	test   %ebx,%ebx
5963b2:	7c 16                	jl     0x5963ca
5963b4:	43                   	inc    %ebx
5963b5:	ff 45 f4             	incl   -0xc(%ebp)
5963b8:	46                   	inc    %esi
5963b9:	55                   	push   %ebp
5963ba:	e8 3d fe ff ff       	call   0x5961fc
5963bf:	59                   	pop    %ecx
5963c0:	55                   	push   %ebp
5963c1:	e8 6e fe ff ff       	call   0x596234
5963c6:	59                   	pop    %ecx
5963c7:	4b                   	dec    %ebx
5963c8:	75 eb                	jne    0x5963b5
5963ca:	8b df                	mov    %edi,%ebx
5963cc:	83 e3 01             	and    $0x1,%ebx
5963cf:	85 db                	test   %ebx,%ebx
5963d1:	74 0b                	je     0x5963de
5963d3:	ff 45 f4             	incl   -0xc(%ebp)
5963d6:	46                   	inc    %esi
5963d7:	55                   	push   %ebp
5963d8:	e8 1f fe ff ff       	call   0x5961fc
5963dd:	59                   	pop    %ecx
5963de:	8b c7                	mov    %edi,%eax
5963e0:	d1 e8                	shr    $1,%eax
5963e2:	03 c3                	add    %ebx,%eax
5963e4:	8b f8                	mov    %eax,%edi
5963e6:	f7 c7 01 00 00 00    	test   $0x1,%edi
5963ec:	74 04                	je     0x5963f2
5963ee:	ff 45 f4             	incl   -0xc(%ebp)
5963f1:	46                   	inc    %esi
5963f2:	ff 45 f4             	incl   -0xc(%ebp)
5963f5:	46                   	inc    %esi
5963f6:	eb 3a                	jmp    0x596432
5963f8:	8b f8                	mov    %eax,%edi
5963fa:	81 e7 ff 00 00 00    	and    $0xff,%edi
596400:	ff 45 f4             	incl   -0xc(%ebp)
596403:	46                   	inc    %esi
596404:	8b df                	mov    %edi,%ebx
596406:	d1 eb                	shr    $1,%ebx
596408:	4b                   	dec    %ebx
596409:	85 db                	test   %ebx,%ebx
59640b:	7c 12                	jl     0x59641f
59640d:	43                   	inc    %ebx
59640e:	55                   	push   %ebp
59640f:	e8 e8 fd ff ff       	call   0x5961fc
596414:	59                   	pop    %ecx
596415:	55                   	push   %ebp
596416:	e8 19 fe ff ff       	call   0x596234
59641b:	59                   	pop    %ecx
59641c:	4b                   	dec    %ebx
59641d:	75 ef                	jne    0x59640e
59641f:	f7 c7 01 00 00 00    	test   $0x1,%edi
596425:	74 07                	je     0x59642e
596427:	55                   	push   %ebp
596428:	e8 cf fd ff ff       	call   0x5961fc
59642d:	59                   	pop    %ecx
59642e:	ff 45 f4             	incl   -0xc(%ebp)
596431:	46                   	inc    %esi
596432:	3b 75 ec             	cmp    -0x14(%ebp),%esi
596435:	0f 8c 76 fe ff ff    	jl     0x5962b1
59643b:	5f                   	pop    %edi
59643c:	5e                   	pop    %esi
59643d:	5b                   	pop    %ebx
59643e:	8b e5                	mov    %ebp,%esp
596440:	5d                   	pop    %ebp
596441:	c2 0c 00             	ret    $0xc
596444:	55                   	push   %ebp
596445:	8b ec                	mov    %esp,%ebp
596447:	83 c4 e8             	add    $0xffffffe8,%esp
59644a:	53                   	push   %ebx
59644b:	56                   	push   %esi
59644c:	57                   	push   %edi
59644d:	8b f1                	mov    %ecx,%esi
59644f:	8b da                	mov    %edx,%ebx
596451:	89 45 fc             	mov    %eax,-0x4(%ebp)
596454:	8b 45 fc             	mov    -0x4(%ebp),%eax
596457:	8b 10                	mov    (%eax),%edx
596459:	ff 52 08             	call   *0x8(%edx)
59645c:	48                   	dec    %eax
59645d:	89 45 f8             	mov    %eax,-0x8(%ebp)
596460:	8b 45 08             	mov    0x8(%ebp),%eax
596463:	2b 45 f8             	sub    -0x8(%ebp),%eax
596466:	99                   	cltd
596467:	33 c2                	xor    %edx,%eax
596469:	2b c2                	sub    %edx,%eax
59646b:	8b d0                	mov    %eax,%edx
59646d:	8b 45 fc             	mov    -0x4(%ebp),%eax
596470:	8b 08                	mov    (%eax),%ecx
596472:	ff 11                	call   *(%ecx)
596474:	89 45 f0             	mov    %eax,-0x10(%ebp)
596477:	33 c0                	xor    %eax,%eax
596479:	89 45 f4             	mov    %eax,-0xc(%ebp)
59647c:	4e                   	dec    %esi
59647d:	85 f6                	test   %esi,%esi
59647f:	0f 8c 73 01 00 00    	jl     0x5965f8
596485:	46                   	inc    %esi
596486:	89 75 ec             	mov    %esi,-0x14(%ebp)
596489:	8a 03                	mov    (%ebx),%al
59648b:	84 c0                	test   %al,%al
59648d:	0f 85 16 01 00 00    	jne    0x5965a9
596493:	43                   	inc    %ebx
596494:	8a 03                	mov    (%ebx),%al
596496:	8b d0                	mov    %eax,%edx
596498:	80 ea 01             	sub    $0x1,%dl
59649b:	72 0f                	jb     0x5964ac
59649d:	0f 84 55 01 00 00    	je     0x5965f8
5964a3:	fe ca                	dec    %dl
5964a5:	74 78                	je     0x59651f
5964a7:	e9 ae 00 00 00       	jmp    0x59655a
5964ac:	ff 4d f8             	decl   -0x8(%ebp)
5964af:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
5964b3:	0f 8c 3f 01 00 00    	jl     0x5965f8
5964b9:	8b 45 08             	mov    0x8(%ebp),%eax
5964bc:	2b 45 f8             	sub    -0x8(%ebp),%eax
5964bf:	99                   	cltd
5964c0:	33 c2                	xor    %edx,%eax
5964c2:	2b c2                	sub    %edx,%eax
5964c4:	8b d0                	mov    %eax,%edx
5964c6:	8b 45 fc             	mov    -0x4(%ebp),%eax
5964c9:	8b 08                	mov    (%eax),%ecx
5964cb:	ff 11                	call   *(%ecx)
5964cd:	89 45 f0             	mov    %eax,-0x10(%ebp)
5964d0:	33 c0                	xor    %eax,%eax
5964d2:	89 45 f4             	mov    %eax,-0xc(%ebp)
5964d5:	8b 45 0c             	mov    0xc(%ebp),%eax
5964d8:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
5964dd:	74 2c                	je     0x59650b
5964df:	8b 45 fc             	mov    -0x4(%ebp),%eax
5964e2:	8b 10                	mov    (%eax),%edx
5964e4:	ff 52 08             	call   *0x8(%edx)
5964e7:	2b 45 f8             	sub    -0x8(%ebp),%eax
5964ea:	89 45 e8             	mov    %eax,-0x18(%ebp)
5964ed:	db 45 e8             	fildl  -0x18(%ebp)
5964f0:	8b 45 0c             	mov    0xc(%ebp),%eax
5964f3:	dc 48 18             	fmull  0x18(%eax)
5964f6:	e8 d1 c7 e6 ff       	call   0x402ccc
5964fb:	8b c8                	mov    %eax,%ecx
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