612295:	55                   	push   %ebp
612296:	8b ec                	mov    %esp,%ebp
612298:	8b 4d 08             	mov    0x8(%ebp),%ecx
61229b:	53                   	push   %ebx
61229c:	56                   	push   %esi
61229d:	57                   	push   %edi
61229e:	85 c9                	test   %ecx,%ecx
6122a0:	0f 84 83 00 00 00    	je     0x612329
6122a6:	81 f9 00 04 00 00    	cmp    $0x400,%ecx
6122ac:	74 7b                	je     0x612329
6122ae:	81 f9 00 08 00 00    	cmp    $0x800,%ecx
6122b4:	74 73                	je     0x612329
6122b6:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
6122ba:	8b 75 10             	mov    0x10(%ebp),%esi
6122bd:	75 04                	jne    0x6122c3
6122bf:	85 f6                	test   %esi,%esi
6122c1:	7f 66                	jg     0x612329
6122c3:	85 f6                	test   %esi,%esi
6122c5:	78 62                	js     0x612329
6122c7:	33 ff                	xor    %edi,%edi
6122c9:	bb e3 00 00 00       	mov    $0xe3,%ebx
6122ce:	8d 04 3b             	lea    (%ebx,%edi,1),%eax
6122d1:	99                   	cltd
6122d2:	2b c2                	sub    %edx,%eax
6122d4:	8b d1                	mov    %ecx,%edx
6122d6:	d1 f8                	sar    $1,%eax
6122d8:	2b 14 c5 e8 9a 6d 00 	sub    0x6d9ae8(,%eax,8),%edx
6122df:	74 13                	je     0x6122f4
6122e1:	85 d2                	test   %edx,%edx
6122e3:	79 05                	jns    0x6122ea
6122e5:	8d 58 ff             	lea    -0x1(%eax),%ebx
6122e8:	eb 03                	jmp    0x6122ed
6122ea:	8d 78 01             	lea    0x1(%eax),%edi
6122ed:	3b fb                	cmp    %ebx,%edi
6122ef:	7e dd                	jle    0x6122ce
6122f1:	83 c8 ff             	or     $0xffffffff,%eax
6122f4:	85 c0                	test   %eax,%eax
6122f6:	78 31                	js     0x612329
6122f8:	8b 1c c5 ec 9a 6d 00 	mov    0x6d9aec(,%eax,8),%ebx
6122ff:	6a 55                	push   $0x55
612301:	53                   	push   %ebx
612302:	e8 3a 7d fe ff       	call   0x5fa041
612307:	8b f8                	mov    %eax,%edi
612309:	59                   	pop    %ecx
61230a:	59                   	pop    %ecx
61230b:	85 f6                	test   %esi,%esi
61230d:	7e 15                	jle    0x612324
61230f:	3b fe                	cmp    %esi,%edi
612311:	7d 16                	jge    0x612329
612313:	53                   	push   %ebx
612314:	56                   	push   %esi
612315:	ff 75 0c             	push   0xc(%ebp)
612318:	e8 f7 43 fe ff       	call   0x5f6714
61231d:	83 c4 0c             	add    $0xc,%esp
612320:	85 c0                	test   %eax,%eax
612322:	75 0c                	jne    0x612330
612324:	8d 47 01             	lea    0x1(%edi),%eax
612327:	eb 02                	jmp    0x61232b
612329:	33 c0                	xor    %eax,%eax
61232b:	5f                   	pop    %edi
61232c:	5e                   	pop    %esi
61232d:	5b                   	pop    %ebx
61232e:	5d                   	pop    %ebp
61232f:	c3                   	ret
612330:	33 c0                	xor    %eax,%eax
612332:	50                   	push   %eax
612333:	50                   	push   %eax
612334:	50                   	push   %eax
612335:	50                   	push   %eax
612336:	50                   	push   %eax
612337:	e8 10 ac fd ff       	call   0x5ecf4c
61233c:	cc                   	int3
61233d:	8b ff                	mov    %edi,%edi
61233f:	55                   	push   %ebp
612340:	8b ec                	mov    %esp,%ebp
612342:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
612346:	74 1d                	je     0x612365
612348:	ff 75 08             	push   0x8(%ebp)
61234b:	e8 f3 fe ff ff       	call   0x612243
612350:	59                   	pop    %ecx
612351:	85 c0                	test   %eax,%eax
612353:	78 10                	js     0x612365
612355:	3d e4 00 00 00       	cmp    $0xe4,%eax
61235a:	73 09                	jae    0x612365
61235c:	8b 04 c5 e8 9a 6d 00 	mov    0x6d9ae8(,%eax,8),%eax
612363:	5d                   	pop    %ebp
612364:	c3                   	ret
612365:	33 c0                	xor    %eax,%eax
612367:	5d                   	pop    %ebp
612368:	c3                   	ret
612369:	8b ff                	mov    %edi,%edi
61236b:	55                   	push   %ebp
61236c:	8b ec                	mov    %esp,%ebp
61236e:	56                   	push   %esi
61236f:	8b 75 14             	mov    0x14(%ebp),%esi
612372:	85 f6                	test   %esi,%esi
612374:	7e 14                	jle    0x61238a
612376:	56                   	push   %esi
612377:	ff 75 10             	push   0x10(%ebp)
61237a:	e8 c2 7c fe ff       	call   0x5fa041
61237f:	59                   	pop    %ecx
612380:	3b c6                	cmp    %esi,%eax
612382:	59                   	pop    %ecx
612383:	8d 70 01             	lea    0x1(%eax),%esi
612386:	7c 02                	jl     0x61238a
612388:	8b f0                	mov    %eax,%esi
61238a:	33 c0                	xor    %eax,%eax
61238c:	50                   	push   %eax
61238d:	50                   	push   %eax
61238e:	50                   	push   %eax
61238f:	ff 75 1c             	push   0x1c(%ebp)
612392:	ff 75 18             	push   0x18(%ebp)
612395:	56                   	push   %esi
612396:	ff 75 10             	push   0x10(%ebp)
612399:	ff 75 0c             	push   0xc(%ebp)
61239c:	ff 75 08             	push   0x8(%ebp)
61239f:	e8 63 54 ff ff       	call   0x607807
6123a4:	5e                   	pop    %esi
6123a5:	5d                   	pop    %ebp
6123a6:	c3                   	ret
6123a7:	8b ff                	mov    %edi,%edi
6123a9:	55                   	push   %ebp
6123aa:	8b ec                	mov    %esp,%ebp
6123ac:	51                   	push   %ecx
6123ad:	51                   	push   %ecx
6123ae:	8b 55 0c             	mov    0xc(%ebp),%edx
6123b1:	56                   	push   %esi
6123b2:	8b 75 10             	mov    0x10(%ebp),%esi
6123b5:	0f b7 ca             	movzwl %dx,%ecx
6123b8:	57                   	push   %edi
6123b9:	85 f6                	test   %esi,%esi
6123bb:	75 05                	jne    0x6123c2
6123bd:	be c4 14 73 00       	mov    $0x7314c4,%esi
6123c2:	83 3e 00             	cmpl   $0x0,(%esi)
6123c5:	8d 81 00 24 00 00    	lea    0x2400(%ecx),%eax
6123cb:	0f b7 c0             	movzwl %ax,%eax
6123ce:	75 3c                	jne    0x61240c
6123d0:	bf ff 03 00 00       	mov    $0x3ff,%edi
6123d5:	66 3b c7             	cmp    %di,%ax
6123d8:	77 09                	ja     0x6123e3
6123da:	56                   	push   %esi
6123db:	e8 c2 e2 ff ff       	call   0x6106a2
6123e0:	59                   	pop    %ecx
6123e1:	eb 5a                	jmp    0x61243d
6123e3:	8d 82 00 28 00 00    	lea    0x2800(%edx),%eax
6123e9:	66 3b c7             	cmp    %di,%ax
6123ec:	77 12                	ja     0x612400
6123ee:	81 e1 ff 27 ff ff    	and    $0xffff27ff,%ecx
6123f4:	83 c1 40             	add    $0x40,%ecx
6123f7:	c1 e1 0a             	shl    $0xa,%ecx
6123fa:	33 c0                	xor    %eax,%eax
6123fc:	89 0e                	mov    %ecx,(%esi)
6123fe:	eb 3d                	jmp    0x61243d
612400:	56                   	push   %esi
612401:	51                   	push   %ecx
612402:	ff 75 08             	push   0x8(%ebp)
612405:	e8 b7 e2 ff ff       	call   0x6106c1
61240a:	eb 2e                	jmp    0x61243a
61240c:	b9 ff 03 00 00       	mov    $0x3ff,%ecx
612411:	66 3b c1             	cmp    %cx,%ax
612414:	77 c4                	ja     0x6123da
612416:	8d 45 f8             	lea    -0x8(%ebp),%eax
612419:	33 ff                	xor    %edi,%edi
61241b:	50                   	push   %eax
61241c:	0f b7 c2             	movzwl %dx,%eax
61241f:	25 ff 23 ff ff       	and    $0xffff23ff,%eax
612424:	89 7d f8             	mov    %edi,-0x8(%ebp)
612427:	03 06                	add    (%esi),%eax
612429:	50                   	push   %eax
61242a:	ff 75 08             	push   0x8(%ebp)
61242d:	89 7d fc             	mov    %edi,-0x4(%ebp)
612430:	e8 8c e2 ff ff       	call   0x6106c1
612435:	89 3e                	mov    %edi,(%esi)
612437:	89 7e 04             	mov    %edi,0x4(%esi)
61243a:	83 c4 0c             	add    $0xc,%esp
61243d:	5f                   	pop    %edi
61243e:	5e                   	pop    %esi
61243f:	c9                   	leave
612440:	c3                   	ret
612441:	8b ff                	mov    %edi,%edi
612443:	55                   	push   %ebp
612444:	8b ec                	mov    %esp,%ebp
612446:	53                   	push   %ebx
612447:	56                   	push   %esi
612448:	8b 75 08             	mov    0x8(%ebp),%esi
61244b:	33 db                	xor    %ebx,%ebx
61244d:	57                   	push   %edi
61244e:	6a 01                	push   $0x1
612450:	53                   	push   %ebx
612451:	53                   	push   %ebx
612452:	56                   	push   %esi
612453:	8b f9                	mov    %ecx,%edi
612455:	e8 63 34 ff ff       	call   0x6058bd
61245a:	6a 02                	push   $0x2
61245c:	53                   	push   %ebx
61245d:	53                   	push   %ebx
61245e:	56                   	push   %esi
61245f:	89 07                	mov    %eax,(%edi)
612461:	89 57 04             	mov    %edx,0x4(%edi)
612464:	e8 54 34 ff ff       	call   0x6058bd
612469:	8b 4d 0c             	mov    0xc(%ebp),%ecx
61246c:	83 c4 20             	add    $0x20,%esp
61246f:	89 47 08             	mov    %eax,0x8(%edi)
612472:	2b c8                	sub    %eax,%ecx
612474:	8b 45 10             	mov    0x10(%ebp),%eax
612477:	1b c2                	sbb    %edx,%eax
612479:	89 77 18             	mov    %esi,0x18(%edi)
61247c:	89 47 14             	mov    %eax,0x14(%edi)
61247f:	8b c7                	mov    %edi,%eax
612481:	89 57 0c             	mov    %edx,0xc(%edi)
612484:	89 4f 10             	mov    %ecx,0x10(%edi)
612487:	5f                   	pop    %edi
612488:	5e                   	pop    %esi
612489:	5b                   	pop    %ebx
61248a:	5d                   	pop    %ebp
61248b:	c2 0c 00             	ret    $0xc
61248e:	8b ff                	mov    %edi,%edi
612490:	55                   	push   %ebp
612491:	8b ec                	mov    %esp,%ebp
612493:	83 ec 28             	sub    $0x28,%esp
612496:	53                   	push   %ebx
612497:	8b 5d 08             	mov    0x8(%ebp),%ebx
61249a:	8d 4d d8             	lea    -0x28(%ebp),%ecx
61249d:	56                   	push   %esi
61249e:	57                   	push   %edi
61249f:	ff 75 10             	push   0x10(%ebp)
6124a2:	ff 75 0c             	push   0xc(%ebp)
6124a5:	53                   	push   %ebx
6124a6:	e8 96 ff ff ff       	call   0x612441
6124ab:	8b 45 d8             	mov    -0x28(%ebp),%eax
6124ae:	23 45 dc             	and    -0x24(%ebp),%eax
6124b1:	83 f8 ff             	cmp    $0xffffffff,%eax
6124b4:	0f 84 23 01 00 00    	je     0x6125dd
6124ba:	8b 45 e0             	mov    -0x20(%ebp),%eax
6124bd:	23 45 e4             	and    -0x1c(%ebp),%eax
6124c0:	83 f8 ff             	cmp    $0xffffffff,%eax
6124c3:	0f 84 14 01 00 00    	je     0x6125dd
6124c9:	8b 45 ec             	mov    -0x14(%ebp),%eax
6124cc:	8b 7d e8             	mov    -0x18(%ebp),%edi
6124cf:	89 45 fc             	mov    %eax,-0x4(%ebp)
6124d2:	85 c0                	test   %eax,%eax
6124d4:	0f 8c bf 00 00 00    	jl     0x612599
6124da:	7f 08                	jg     0x6124e4
6124dc:	85 ff                	test   %edi,%edi
6124de:	0f 84 ab 00 00 00    	je     0x61258f
6124e4:	6a 01                	push   $0x1
6124e6:	68 00 10 00 00       	push   $0x1000
6124eb:	e8 ec 35 ff ff       	call   0x605adc
6124f0:	8b f0                	mov    %eax,%esi
6124f2:	59                   	pop    %ecx
6124f3:	59                   	pop    %ecx
6124f4:	85 f6                	test   %esi,%esi
6124f6:	75 0d                	jne    0x612505
6124f8:	e8 fc aa fd ff       	call   0x5ecff9
6124fd:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
612503:	eb 7a                	jmp    0x61257f
612505:	68 00 80 00 00       	push   $0x8000
61250a:	53                   	push   %ebx
61250b:	e8 3a d4 fe ff       	call   0x5ff94a
612510:	59                   	pop    %ecx
612511:	89 45 f8             	mov    %eax,-0x8(%ebp)
612514:	8b 45 ec             	mov    -0x14(%ebp),%eax
612517:	59                   	pop    %ecx
612518:	85 c0                	test   %eax,%eax
61251a:	7c 11                	jl     0x61252d
61251c:	7f 08                	jg     0x612526
61251e:	81 ff 00 10 00 00    	cmp    $0x1000,%edi
612524:	72 07                	jb     0x61252d
612526:	b8 00 10 00 00       	mov    $0x1000,%eax
61252b:	eb 02                	jmp    0x61252f
61252d:	8b c7                	mov    %edi,%eax
61252f:	50                   	push   %eax
612530:	56                   	push   %esi
612531:	53                   	push   %ebx
612532:	e8 a7 88 ff ff       	call   0x60adde
612537:	83 c4 0c             	add    $0xc,%esp
61253a:	83 f8 ff             	cmp    $0xffffffff,%eax
61253d:	74 2b                	je     0x61256a
61253f:	99                   	cltd
612540:	2b f8                	sub    %eax,%edi
612542:	8b 45 fc             	mov    -0x4(%ebp),%eax
612545:	1b c2                	sbb    %edx,%eax
612547:	89 45 fc             	mov    %eax,-0x4(%ebp)
61254a:	85 c0                	test   %eax,%eax
61254c:	7f d8                	jg     0x612526
61254e:	7c 04                	jl     0x612554
612550:	85 ff                	test   %edi,%edi
612552:	75 c4                	jne    0x612518
612554:	ff 75 f8             	push   -0x8(%ebp)
612557:	53                   	push   %ebx
612558:	e8 ed d3 fe ff       	call   0x5ff94a
61255d:	56                   	push   %esi
61255e:	e8 c5 22 ff ff       	call   0x604828
612563:	83 c4 0c             	add    $0xc,%esp
612566:	33 ff                	xor    %edi,%edi
612568:	eb 7a                	jmp    0x6125e4
61256a:	e8 77 aa fd ff       	call   0x5ecfe6
61256f:	83 38 05             	cmpl   $0x5,(%eax)
612572:	75 0b                	jne    0x61257f
612574:	e8 80 aa fd ff       	call   0x5ecff9
612579:	c7 00 0d 00 00 00    	movl   $0xd,(%eax)
61257f:	e8 75 aa fd ff       	call   0x5ecff9
612584:	56                   	push   %esi
612585:	8b 38                	mov    (%eax),%edi
612587:	e8 9c 22 ff ff       	call   0x604828
61258c:	59                   	pop    %ecx
61258d:	eb 55                	jmp    0x6125e4
61258f:	85 c0                	test   %eax,%eax
612591:	7f d3                	jg     0x612566
612593:	7c 04                	jl     0x612599
612595:	85 ff                	test   %edi,%edi
612597:	73 cd                	jae    0x612566
612599:	6a 00                	push   $0x0
61259b:	ff 75 10             	push   0x10(%ebp)
61259e:	ff 75 0c             	push   0xc(%ebp)
6125a1:	53                   	push   %ebx
6125a2:	e8 16 33 ff ff       	call   0x6058bd
6125a7:	23 c2                	and    %edx,%eax
6125a9:	83 c4 10             	add    $0x10,%esp
6125ac:	83 f8 ff             	cmp    $0xffffffff,%eax
6125af:	74 2c                	je     0x6125dd
6125b1:	53                   	push   %ebx
6125b2:	e8 be 6f ff ff       	call   0x609575
6125b7:	59                   	pop    %ecx
6125b8:	50                   	push   %eax
6125b9:	ff 15 30 23 68 00    	call   *0x682330
6125bf:	85 c0                	test   %eax,%eax
6125c1:	75 a3                	jne    0x612566
6125c3:	e8 31 aa fd ff       	call   0x5ecff9
6125c8:	c7 00 0d 00 00 00    	movl   $0xd,(%eax)
6125ce:	e8 13 aa fd ff       	call   0x5ecfe6
6125d3:	8b f0                	mov    %eax,%esi
6125d5:	ff 15 e0 21 68 00    	call   *0x6821e0
6125db:	89 06                	mov    %eax,(%esi)
6125dd:	e8 17 aa fd ff       	call   0x5ecff9
6125e2:	8b 38                	mov    (%eax),%edi
6125e4:	6a 00                	push   $0x0
6125e6:	ff 75 dc             	push   -0x24(%ebp)
6125e9:	ff 75 d8             	push   -0x28(%ebp)
6125ec:	ff 75 f0             	push   -0x10(%ebp)
6125ef:	e8 c9 32 ff ff       	call   0x6058bd
6125f4:	83 c4 10             	add    $0x10,%esp
6125f7:	8b c7                	mov    %edi,%eax
6125f9:	5f                   	pop    %edi
6125fa:	5e                   	pop    %esi
6125fb:	5b                   	pop    %ebx
6125fc:	c9                   	leave
6125fd:	c3                   	ret
6125fe:	8b ff                	mov    %edi,%edi
612600:	55                   	push   %ebp