597171:	8b 55 b4             	mov    -0x4c(%ebp),%edx
597174:	8b 45 f8             	mov    -0x8(%ebp),%eax
597177:	e8 88 f4 ff ff       	call   0x596604
59717c:	eb 1f                	jmp    0x59719d
59717e:	8b 03                	mov    (%ebx),%eax
597180:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
597186:	50                   	push   %eax
597187:	8b 45 18             	mov    0x18(%ebp),%eax
59718a:	50                   	push   %eax
59718b:	8b 45 94             	mov    -0x6c(%ebp),%eax
59718e:	50                   	push   %eax
59718f:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
597192:	8b 55 b4             	mov    -0x4c(%ebp),%edx
597195:	8b 45 f8             	mov    -0x8(%ebp),%eax
597198:	e8 a7 f2 ff ff       	call   0x596444
59719d:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5971a0:	e8 27 b6 e6 ff       	call   0x4027cc
5971a5:	e9 24 05 00 00       	jmp    0x5976ce
5971aa:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
5971ae:	0f 85 1a 05 00 00    	jne    0x5976ce
5971b4:	8b 45 f8             	mov    -0x8(%ebp),%eax
5971b7:	8b 10                	mov    (%eax),%edx
5971b9:	ff 52 08             	call   *0x8(%edx)
5971bc:	f7 6d c0             	imull  -0x40(%ebp)
5971bf:	e8 e8 b5 e6 ff       	call   0x4027ac
5971c4:	89 45 b4             	mov    %eax,-0x4c(%ebp)
5971c7:	8b 45 f8             	mov    -0x8(%ebp),%eax
5971ca:	8b 10                	mov    (%eax),%edx
5971cc:	ff 52 08             	call   *0x8(%edx)
5971cf:	8b c8                	mov    %eax,%ecx
5971d1:	0f af 4d c0          	imul   -0x40(%ebp),%ecx
5971d5:	8b 55 b4             	mov    -0x4c(%ebp),%edx
5971d8:	8b 45 fc             	mov    -0x4(%ebp),%eax
5971db:	8b 30                	mov    (%eax),%esi
5971dd:	ff 56 08             	call   *0x8(%esi)
5971e0:	8b 45 f8             	mov    -0x8(%ebp),%eax
5971e3:	8b 10                	mov    (%eax),%edx
5971e5:	ff 52 08             	call   *0x8(%edx)
5971e8:	48                   	dec    %eax
5971e9:	89 45 98             	mov    %eax,-0x68(%ebp)
5971ec:	8b 45 f8             	mov    -0x8(%ebp),%eax
5971ef:	8b 10                	mov    (%eax),%edx
5971f1:	ff 52 0c             	call   *0xc(%edx)
5971f4:	48                   	dec    %eax
5971f5:	89 45 9c             	mov    %eax,-0x64(%ebp)
5971f8:	8b 45 98             	mov    -0x68(%ebp),%eax
5971fb:	83 f8 00             	cmp    $0x0,%eax
5971fe:	0f 8c e9 00 00 00    	jl     0x5972ed
597204:	89 45 c4             	mov    %eax,-0x3c(%ebp)
597207:	8b 45 18             	mov    0x18(%ebp),%eax
59720a:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
59720f:	74 2d                	je     0x59723e
597211:	8b 45 98             	mov    -0x68(%ebp),%eax
597214:	2b 45 c4             	sub    -0x3c(%ebp),%eax
597217:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
59721d:	db 85 74 ff ff ff    	fildl  -0x8c(%ebp)
597223:	8b 45 18             	mov    0x18(%ebp),%eax
597226:	dc 48 18             	fmull  0x18(%eax)
597229:	e8 9e ba e6 ff       	call   0x402ccc
59722e:	8b c8                	mov    %eax,%ecx
597230:	8b 75 18             	mov    0x18(%ebp),%esi
597233:	8b 55 18             	mov    0x18(%ebp),%edx
597236:	8b 52 08             	mov    0x8(%edx),%edx
597239:	8b 46 04             	mov    0x4(%esi),%eax
59723c:	ff 16                	call   *(%esi)
59723e:	8b 45 18             	mov    0x18(%ebp),%eax
597241:	8b 40 28             	mov    0x28(%eax),%eax
597244:	80 38 00             	cmpb   $0x0,(%eax)
597247:	0f 85 a0 00 00 00    	jne    0x5972ed
59724d:	8b 7d b4             	mov    -0x4c(%ebp),%edi
597250:	8b 45 98             	mov    -0x68(%ebp),%eax
597253:	2b 45 c4             	sub    -0x3c(%ebp),%eax
597256:	f7 6d c0             	imull  -0x40(%ebp)
597259:	03 f8                	add    %eax,%edi
59725b:	8b 03                	mov    (%ebx),%eax
59725d:	80 b8 a5 03 00 00 00 	cmpb   $0x0,0x3a5(%eax)
597264:	74 33                	je     0x597299
597266:	8b 45 f8             	mov    -0x8(%ebp),%eax
597269:	c7 40 50 00 01 00 00 	movl   $0x100,0x50(%eax)
597270:	8b 45 94             	mov    -0x6c(%ebp),%eax
597273:	2b 45 c4             	sub    -0x3c(%ebp),%eax
597276:	99                   	cltd
597277:	33 c2                	xor    %edx,%eax
597279:	2b c2                	sub    %edx,%eax
59727b:	8b d0                	mov    %eax,%edx
59727d:	8b 45 f8             	mov    -0x8(%ebp),%eax
597280:	8b 08                	mov    (%eax),%ecx
597282:	ff 11                	call   *(%ecx)
597284:	50                   	push   %eax
597285:	8b 45 f8             	mov    -0x8(%ebp),%eax
597288:	8b 10                	mov    (%eax),%edx
59728a:	ff 52 0c             	call   *0xc(%edx)
59728d:	8b c8                	mov    %eax,%ecx
59728f:	8b d7                	mov    %edi,%edx
597291:	58                   	pop    %eax
597292:	e8 29 0c e7 ff       	call   0x407ec0
597297:	eb 47                	jmp    0x5972e0
597299:	8b 45 94             	mov    -0x6c(%ebp),%eax
59729c:	2b 45 c4             	sub    -0x3c(%ebp),%eax
59729f:	99                   	cltd
5972a0:	33 c2                	xor    %edx,%eax
5972a2:	2b c2                	sub    %edx,%eax
5972a4:	8b d0                	mov    %eax,%edx
5972a6:	8b 45 f8             	mov    -0x8(%ebp),%eax
5972a9:	8b 08                	mov    (%eax),%ecx
5972ab:	ff 11                	call   *(%ecx)
5972ad:	89 45 bc             	mov    %eax,-0x44(%ebp)
5972b0:	8b 75 9c             	mov    -0x64(%ebp),%esi
5972b3:	85 f6                	test   %esi,%esi
5972b5:	7c 29                	jl     0x5972e0
5972b7:	46                   	inc    %esi
5972b8:	33 c0                	xor    %eax,%eax
5972ba:	8a 07                	mov    (%edi),%al
5972bc:	8d 04 40             	lea    (%eax,%eax,2),%eax
5972bf:	8b 13                	mov    (%ebx),%edx
5972c1:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
5972c7:	8b 4d bc             	mov    -0x44(%ebp),%ecx
5972ca:	03 d0                	add    %eax,%edx
5972cc:	66 8b 02             	mov    (%edx),%ax
5972cf:	66 89 01             	mov    %ax,(%ecx)
5972d2:	8a 42 02             	mov    0x2(%edx),%al
5972d5:	88 41 02             	mov    %al,0x2(%ecx)
5972d8:	47                   	inc    %edi
5972d9:	83 45 bc 03          	addl   $0x3,-0x44(%ebp)
5972dd:	4e                   	dec    %esi
5972de:	75 d8                	jne    0x5972b8
5972e0:	ff 4d c4             	decl   -0x3c(%ebp)
5972e3:	83 7d c4 ff          	cmpl   $0xffffffff,-0x3c(%ebp)
5972e7:	0f 85 1a ff ff ff    	jne    0x597207
5972ed:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5972f0:	e8 d7 b4 e6 ff       	call   0x4027cc
5972f5:	e9 d4 03 00 00       	jmp    0x5976ce
5972fa:	8b 03                	mov    (%ebx),%eax
5972fc:	c7 40 08 05 00 00 00 	movl   $0x5,0x8(%eax)
597303:	8b 03                	mov    (%ebx),%eax
597305:	c7 40 10 03 00 00 00 	movl   $0x3,0x10(%eax)
59730c:	80 7d 14 00          	cmpb   $0x0,0x14(%ebp)
597310:	0f 85 b8 03 00 00    	jne    0x5976ce
597316:	8b 45 c0             	mov    -0x40(%ebp),%eax
597319:	e8 8e b4 e6 ff       	call   0x4027ac
59731e:	89 45 b4             	mov    %eax,-0x4c(%ebp)
597321:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
597325:	75 1b                	jne    0x597342
597327:	c7 85 78 ff ff ff 00 	movl   $0x7c00,-0x88(%ebp)
59732e:	7c 00 00
597331:	c7 85 7c ff ff ff e0 	movl   $0x3e0,-0x84(%ebp)
597338:	03 00 00
59733b:	c7 45 80 1f 00 00 00 	movl   $0x1f,-0x80(%ebp)
597342:	8b 85 78 ff ff ff    	mov    -0x88(%ebp),%eax
597348:	e8 33 97 05 00       	call   0x5f0a80
59734d:	89 45 ac             	mov    %eax,-0x54(%ebp)
597350:	8b 85 7c ff ff ff    	mov    -0x84(%ebp),%eax
597356:	e8 25 97 05 00       	call   0x5f0a80
59735b:	89 45 b0             	mov    %eax,-0x50(%ebp)
59735e:	8b 45 80             	mov    -0x80(%ebp),%eax
597361:	e8 1a 97 05 00       	call   0x5f0a80
597366:	89 45 a8             	mov    %eax,-0x58(%ebp)
597369:	8b 5d b0             	mov    -0x50(%ebp),%ebx
59736c:	03 5d a8             	add    -0x58(%ebp),%ebx
59736f:	b8 08 00 00 00       	mov    $0x8,%eax
597374:	2b 45 ac             	sub    -0x54(%ebp),%eax
597377:	2b d8                	sub    %eax,%ebx
597379:	b8 08 00 00 00       	mov    $0x8,%eax
59737e:	2b 45 b0             	sub    -0x50(%ebp),%eax
597381:	8b 55 a8             	mov    -0x58(%ebp),%edx
597384:	2b d0                	sub    %eax,%edx
597386:	89 55 a4             	mov    %edx,-0x5c(%ebp)
597389:	b8 08 00 00 00       	mov    $0x8,%eax
59738e:	2b 45 a8             	sub    -0x58(%ebp),%eax
597391:	89 45 a0             	mov    %eax,-0x60(%ebp)
597394:	8b 45 f8             	mov    -0x8(%ebp),%eax
597397:	8b 10                	mov    (%eax),%edx
597399:	ff 52 08             	call   *0x8(%edx)
59739c:	48                   	dec    %eax
59739d:	89 45 98             	mov    %eax,-0x68(%ebp)
5973a0:	8b 45 f8             	mov    -0x8(%ebp),%eax
5973a3:	8b 10                	mov    (%eax),%edx
5973a5:	ff 52 0c             	call   *0xc(%edx)
5973a8:	48                   	dec    %eax
5973a9:	89 45 9c             	mov    %eax,-0x64(%ebp)
5973ac:	8b 45 98             	mov    -0x68(%ebp),%eax
5973af:	83 f8 00             	cmp    $0x0,%eax
5973b2:	0f 8c c2 00 00 00    	jl     0x59747a
5973b8:	89 45 c4             	mov    %eax,-0x3c(%ebp)
5973bb:	8b 45 18             	mov    0x18(%ebp),%eax
5973be:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
5973c3:	74 2d                	je     0x5973f2
5973c5:	8b 45 98             	mov    -0x68(%ebp),%eax
5973c8:	2b 45 c4             	sub    -0x3c(%ebp),%eax
5973cb:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
5973d1:	db 85 74 ff ff ff    	fildl  -0x8c(%ebp)
5973d7:	8b 45 18             	mov    0x18(%ebp),%eax
5973da:	dc 48 18             	fmull  0x18(%eax)
5973dd:	e8 ea b8 e6 ff       	call   0x402ccc
5973e2:	8b c8                	mov    %eax,%ecx
5973e4:	8b 75 18             	mov    0x18(%ebp),%esi
5973e7:	8b 55 18             	mov    0x18(%ebp),%edx
5973ea:	8b 52 08             	mov    0x8(%edx),%edx
5973ed:	8b 46 04             	mov    0x4(%esi),%eax
5973f0:	ff 16                	call   *(%esi)
5973f2:	8b 45 18             	mov    0x18(%ebp),%eax
5973f5:	8b 40 28             	mov    0x28(%eax),%eax
5973f8:	80 38 00             	cmpb   $0x0,(%eax)
5973fb:	75 7d                	jne    0x59747a
5973fd:	8b 55 b4             	mov    -0x4c(%ebp),%edx
597400:	8b 4d c0             	mov    -0x40(%ebp),%ecx
597403:	8b 45 fc             	mov    -0x4(%ebp),%eax
597406:	8b 30                	mov    (%eax),%esi
597408:	ff 56 08             	call   *0x8(%esi)
59740b:	8b 45 94             	mov    -0x6c(%ebp),%eax
59740e:	2b 45 c4             	sub    -0x3c(%ebp),%eax
597411:	99                   	cltd
597412:	33 c2                	xor    %edx,%eax
597414:	2b c2                	sub    %edx,%eax
597416:	8b d0                	mov    %eax,%edx
597418:	8b 45 f8             	mov    -0x8(%ebp),%eax
59741b:	8b 08                	mov    (%eax),%ecx
59741d:	ff 11                	call   *(%ecx)
59741f:	89 45 bc             	mov    %eax,-0x44(%ebp)
597422:	8b 45 b4             	mov    -0x4c(%ebp),%eax
597425:	8b 75 9c             	mov    -0x64(%ebp),%esi
597428:	85 f6                	test   %esi,%esi
59742a:	7c 41                	jl     0x59746d
59742c:	46                   	inc    %esi
59742d:	8b cb                	mov    %ebx,%ecx
59742f:	0f b7 10             	movzwl (%eax),%edx
597432:	23 95 78 ff ff ff    	and    -0x88(%ebp),%edx
597438:	d3 ea                	shr    %cl,%edx
59743a:	8b 4d bc             	mov    -0x44(%ebp),%ecx
59743d:	88 51 02             	mov    %dl,0x2(%ecx)
597440:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
597443:	0f b7 10             	movzwl (%eax),%edx
597446:	23 95 7c ff ff ff    	and    -0x84(%ebp),%edx
59744c:	d3 ea                	shr    %cl,%edx
59744e:	8b 4d bc             	mov    -0x44(%ebp),%ecx
597451:	88 51 01             	mov    %dl,0x1(%ecx)
597454:	8b 4d a0             	mov    -0x60(%ebp),%ecx
597457:	8a 10                	mov    (%eax),%dl
597459:	22 55 80             	and    -0x80(%ebp),%dl
59745c:	d2 e2                	shl    %cl,%dl
59745e:	8b 4d bc             	mov    -0x44(%ebp),%ecx
597461:	88 11                	mov    %dl,(%ecx)
597463:	83 45 bc 03          	addl   $0x3,-0x44(%ebp)
597467:	83 c0 02             	add    $0x2,%eax
59746a:	4e                   	dec    %esi
59746b:	75 c0                	jne    0x59742d
59746d:	ff 4d c4             	decl   -0x3c(%ebp)
597470:	83 7d c4 ff          	cmpl   $0xffffffff,-0x3c(%ebp)
597474:	0f 85 41 ff ff ff    	jne    0x5973bb
59747a:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59747d:	e8 4a b3 e6 ff       	call   0x4027cc
597482:	e9 47 02 00 00       	jmp    0x5976ce
597487:	8b 03                	mov    (%ebx),%eax
597489:	c7 40 08 08 00 00 00 	movl   $0x8,0x8(%eax)
597490:	8b 03                	mov    (%ebx),%eax
597492:	c7 40 10 03 00 00 00 	movl   $0x3,0x10(%eax)
597499:	80 7d 14 00          	cmpb   $0x0,0x14(%ebp)
59749d:	0f 85 2b 02 00 00    	jne    0x5976ce
5974a3:	8b 45 f8             	mov    -0x8(%ebp),%eax
5974a6:	8b 10                	mov    (%eax),%edx
5974a8:	ff 52 08             	call   *0x8(%edx)
5974ab:	48                   	dec    %eax
5974ac:	89 45 98             	mov    %eax,-0x68(%ebp)
5974af:	8b 45 98             	mov    -0x68(%ebp),%eax
5974b2:	83 f8 00             	cmp    $0x0,%eax
5974b5:	0f 8c 13 02 00 00    	jl     0x5976ce
5974bb:	89 45 c4             	mov    %eax,-0x3c(%ebp)
5974be:	8b 45 18             	mov    0x18(%ebp),%eax
5974c1:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
5974c6:	74 2d                	je     0x5974f5
5974c8:	8b 45 98             	mov    -0x68(%ebp),%eax
5974cb:	2b 45 c4             	sub    -0x3c(%ebp),%eax
5974ce:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
5974d4:	db 85 74 ff ff ff    	fildl  -0x8c(%ebp)
5974da:	8b 45 18             	mov    0x18(%ebp),%eax
5974dd:	dc 48 18             	fmull  0x18(%eax)
5974e0:	e8 e7 b7 e6 ff       	call   0x402ccc
5974e5:	8b c8                	mov    %eax,%ecx
5974e7:	8b 5d 18             	mov    0x18(%ebp),%ebx
5974ea:	8b 55 18             	mov    0x18(%ebp),%edx
5974ed:	8b 52 08             	mov    0x8(%edx),%edx
5974f0:	8b 43 04             	mov    0x4(%ebx),%eax
5974f3:	ff 13                	call   *(%ebx)
5974f5:	8b 45 18             	mov    0x18(%ebp),%eax
5974f8:	8b 40 28             	mov    0x28(%eax),%eax
5974fb:	80 38 00             	cmpb   $0x0,(%eax)
5974fe:	0f 85 ca 01 00 00    	jne    0x5976ce
597504:	8b 45 94             	mov    -0x6c(%ebp),%eax
597507:	2b 45 c4             	sub    -0x3c(%ebp),%eax
59750a:	99                   	cltd
59750b:	33 c2                	xor    %edx,%eax
59750d:	2b c2                	sub    %edx,%eax
59750f:	8b d0                	mov    %eax,%edx
597511:	8b 45 f8             	mov    -0x8(%ebp),%eax
597514:	8b 08                	mov    (%eax),%ecx
597516:	ff 11                	call   *(%ecx)
597518:	8b d0                	mov    %eax,%edx
59751a:	8b 4d c0             	mov    -0x40(%ebp),%ecx
59751d:	8b 45 fc             	mov    -0x4(%ebp),%eax
597520:	8b 18                	mov    (%eax),%ebx
597522:	ff 53 08             	call   *0x8(%ebx)
597525:	ff 4d c4             	decl   -0x3c(%ebp)
597528:	83 7d c4 ff          	cmpl   $0xffffffff,-0x3c(%ebp)
59752c:	75 90                	jne    0x5974be
59752e:	e9 9b 01 00 00       	jmp    0x5976ce
597533:	8b 03                	mov    (%ebx),%eax
597535:	c7 40 08 08 00 00 00 	movl   $0x8,0x8(%eax)
59753c:	8b 03                	mov    (%ebx),%eax
59753e:	c7 40 10 04 00 00 00 	movl   $0x4,0x10(%eax)
597545:	80 7d 14 00          	cmpb   $0x0,0x14(%ebp)
597549:	0f 85 7f 01 00 00    	jne    0x5976ce
59754f:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
597553:	75 48                	jne    0x59759d
597555:	8b 45 0c             	mov    0xc(%ebp),%eax
597558:	83 38 00             	cmpl   $0x0,(%eax)
59755b:	75 11                	jne    0x59756e
59755d:	b2 01                	mov    $0x1,%dl
59755f:	a1 a4 fd 5e 00       	mov    0x5efda4,%eax
597564:	e8 0b b6 05 00       	call   0x5f2b74
597569:	8b 55 0c             	mov    0xc(%ebp),%edx
59756c:	89 02                	mov    %eax,(%edx)
59756e:	6a 08                	push   $0x8
597570:	8b 45 f8             	mov    -0x8(%ebp),%eax
597573:	8b 10                	mov    (%eax),%edx
597575:	ff 52 08             	call   *0x8(%edx)
597578:	50                   	push   %eax
597579:	8b 45 f8             	mov    -0x8(%ebp),%eax
59757c:	8b 10                	mov    (%eax),%edx
59757e:	ff 52 0c             	call   *0xc(%edx)
597581:	8b d0                	mov    %eax,%edx
597583:	8b 45 0c             	mov    0xc(%ebp),%eax
597586:	8b 00                	mov    (%eax),%eax
597588:	59                   	pop    %ecx
597589:	e8 b2 b9 05 00       	call   0x5f2f40
59758e:	8b 45 0c             	mov    0xc(%ebp),%eax
597591:	8b 00                	mov    (%eax),%eax
597593:	ba ff 00 00 00       	mov    $0xff,%edx
597598:	e8 87 d1 05 00       	call   0x5f4724
59759d:	b3 01                	mov    $0x1,%bl
59759f:	8b 45 c0             	mov    -0x40(%ebp),%eax
5975a2:	e8 05 b2 e6 ff       	call   0x4027ac
5975a7:	89 45 b4             	mov    %eax,-0x4c(%ebp)
5975aa:	8b 45 f8             	mov    -0x8(%ebp),%eax
5975ad:	8b 10                	mov    (%eax),%edx
5975af:	ff 52 08             	call   *0x8(%edx)
5975b2:	48                   	dec    %eax
5975b3:	89 45 98             	mov    %eax,-0x68(%ebp)
5975b6:	8b 45 f8             	mov    -0x8(%ebp),%eax
5975b9:	8b 10                	mov    (%eax),%edx
5975bb:	ff 52 0c             	call   *0xc(%edx)