489444:	5e                   	pop    %esi
489445:	5d                   	pop    %ebp
489446:	c2 04 00             	ret    $0x4
489449:	8b ff                	mov    %edi,%edi
48944b:	55                   	push   %ebp
48944c:	8b ec                	mov    %esp,%ebp
48944e:	51                   	push   %ecx
48944f:	51                   	push   %ecx
489450:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
489454:	8d 45 fc             	lea    -0x4(%ebp),%eax
489457:	56                   	push   %esi
489458:	57                   	push   %edi
489459:	50                   	push   %eax
48945a:	8b f9                	mov    %ecx,%edi
48945c:	ff 15 30 c0 4a 00    	call   *0x4ac030
489462:	db 45 0c             	fildl  0xc(%ebp)
489465:	8b 75 fc             	mov    -0x4(%ebp),%esi
489468:	6a 00                	push   $0x0
48946a:	51                   	push   %ecx
48946b:	51                   	push   %ecx
48946c:	d9 5d f8             	fstps  -0x8(%ebp)
48946f:	d9 45 f8             	flds   -0x8(%ebp)
489472:	d9 5c 24 04          	fstps  0x4(%esp)
489476:	db 45 08             	fildl  0x8(%ebp)
489479:	d9 5d f8             	fstps  -0x8(%ebp)
48947c:	d9 45 f8             	flds   -0x8(%ebp)
48947f:	d9 1c 24             	fstps  (%esp)
489482:	ff 75 fc             	push   -0x4(%ebp)
489485:	ff 15 44 c1 4a 00    	call   *0x4ac144
48948b:	56                   	push   %esi
48948c:	ff 77 18             	push   0x18(%edi)
48948f:	ff 15 38 c0 4a 00    	call   *0x4ac038
489495:	85 c0                	test   %eax,%eax
489497:	74 03                	je     0x48949c
489499:	89 47 1c             	mov    %eax,0x1c(%edi)
48949c:	56                   	push   %esi
48949d:	ff 15 34 c0 4a 00    	call   *0x4ac034
4894a3:	5f                   	pop    %edi
4894a4:	5e                   	pop    %esi
4894a5:	c9                   	leave
4894a6:	c2 08 00             	ret    $0x8
4894a9:	8b ff                	mov    %edi,%edi
4894ab:	55                   	push   %ebp
4894ac:	8b ec                	mov    %esp,%ebp
4894ae:	83 ec 14             	sub    $0x14,%esp
4894b1:	53                   	push   %ebx
4894b2:	56                   	push   %esi
4894b3:	57                   	push   %edi
4894b4:	8d 45 f0             	lea    -0x10(%ebp),%eax
4894b7:	8b f1                	mov    %ecx,%esi
4894b9:	50                   	push   %eax
4894ba:	8b 45 0c             	mov    0xc(%ebp),%eax
4894bd:	33 db                	xor    %ebx,%ebx
4894bf:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4894c2:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4894c5:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4894c8:	ff 70 14             	push   0x14(%eax)
4894cb:	89 5d f0             	mov    %ebx,-0x10(%ebp)
4894ce:	ff 36                	push   (%esi)
4894d0:	ff 15 a8 c1 4a 00    	call   *0x4ac1a8
4894d6:	8b f8                	mov    %eax,%edi
4894d8:	85 ff                	test   %edi,%edi
4894da:	74 05                	je     0x4894e1
4894dc:	89 7e 04             	mov    %edi,0x4(%esi)
4894df:	eb 02                	jmp    0x4894e3
4894e1:	8b fb                	mov    %ebx,%edi
4894e3:	85 ff                	test   %edi,%edi
4894e5:	75 20                	jne    0x489507
4894e7:	8b 75 08             	mov    0x8(%ebp),%esi
4894ea:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4894ed:	8b 45 f8             	mov    -0x8(%ebp),%eax
4894f0:	8b 55 f4             	mov    -0xc(%ebp),%edx
4894f3:	03 c1                	add    %ecx,%eax
4894f5:	89 46 08             	mov    %eax,0x8(%esi)
4894f8:	8b 45 fc             	mov    -0x4(%ebp),%eax
4894fb:	03 c2                	add    %edx,%eax
4894fd:	89 0e                	mov    %ecx,(%esi)
4894ff:	89 56 04             	mov    %edx,0x4(%esi)
489502:	85 ff                	test   %edi,%edi
489504:	89 46 0c             	mov    %eax,0xc(%esi)
489507:	5f                   	pop    %edi
489508:	5e                   	pop    %esi
489509:	0f 94 c0             	sete   %al
48950c:	5b                   	pop    %ebx
48950d:	c9                   	leave
48950e:	c2 08 00             	ret    $0x8
489511:	8b ff                	mov    %edi,%edi
489513:	55                   	push   %ebp
489514:	8b ec                	mov    %esp,%ebp
489516:	83 ec 44             	sub    $0x44,%esp
489519:	57                   	push   %edi
48951a:	6a 1c                	push   $0x1c
48951c:	8d 45 e0             	lea    -0x20(%ebp),%eax
48951f:	89 55 fc             	mov    %edx,-0x4(%ebp)
489522:	8b f9                	mov    %ecx,%edi
489524:	50                   	push   %eax
489525:	57                   	push   %edi
489526:	ff 15 ec 72 4a 00    	call   *0x4a72ec
48952c:	85 c0                	test   %eax,%eax
48952e:	75 05                	jne    0x489535
489530:	6a 19                	push   $0x19
489532:	59                   	pop    %ecx
489533:	cd 29                	int    $0x29
489535:	f6 45 f4 44          	testb  $0x44,-0xc(%ebp)
489539:	74 43                	je     0x48957e
48953b:	53                   	push   %ebx
48953c:	56                   	push   %esi
48953d:	8d 45 bc             	lea    -0x44(%ebp),%eax
489540:	50                   	push   %eax
489541:	ff 15 e8 72 4a 00    	call   *0x4a72e8
489547:	8b 5d c0             	mov    -0x40(%ebp),%ebx
48954a:	33 d2                	xor    %edx,%edx
48954c:	8b f3                	mov    %ebx,%esi
48954e:	f7 de                	neg    %esi
489550:	23 f7                	and    %edi,%esi
489552:	8d 4b ff             	lea    -0x1(%ebx),%ecx
489555:	8b c1                	mov    %ecx,%eax
489557:	23 4d fc             	and    -0x4(%ebp),%ecx
48955a:	23 c7                	and    %edi,%eax
48955c:	49                   	dec    %ecx
48955d:	03 c3                	add    %ebx,%eax
48955f:	03 c1                	add    %ecx,%eax
489561:	f7 f3                	div    %ebx
489563:	33 d2                	xor    %edx,%edx
489565:	8b c8                	mov    %eax,%ecx
489567:	8b 45 fc             	mov    -0x4(%ebp),%eax
48956a:	f7 f3                	div    %ebx
48956c:	03 c8                	add    %eax,%ecx
48956e:	74 0c                	je     0x48957c
489570:	33 c0                	xor    %eax,%eax
489572:	f0 09 06             	lock or %eax,(%esi)
489575:	03 f3                	add    %ebx,%esi
489577:	83 e9 01             	sub    $0x1,%ecx
48957a:	75 f4                	jne    0x489570
48957c:	5e                   	pop    %esi
48957d:	5b                   	pop    %ebx
48957e:	5f                   	pop    %edi
48957f:	c9                   	leave
489580:	c3                   	ret
489581:	8b ff                	mov    %edi,%edi
489583:	55                   	push   %ebp
489584:	8b ec                	mov    %esp,%ebp
489586:	83 ec 10             	sub    $0x10,%esp
489589:	56                   	push   %esi
48958a:	8b 35 3c 00 40 00    	mov    0x40003c,%esi
489590:	8b c2                	mov    %edx,%eax
489592:	57                   	push   %edi
489593:	89 45 f8             	mov    %eax,-0x8(%ebp)
489596:	89 4d f0             	mov    %ecx,-0x10(%ebp)
489599:	83 be 74 00 40 00 0d 	cmpl   $0xd,0x400074(%esi)
4895a0:	0f 86 ae 00 00 00    	jbe    0x489654
4895a6:	8b be e0 00 40 00    	mov    0x4000e0(%esi),%edi
4895ac:	85 ff                	test   %edi,%edi
4895ae:	0f 84 a0 00 00 00    	je     0x489654
4895b4:	0f b7 86 14 00 40 00 	movzwl 0x400014(%esi),%eax
4895bb:	8d 8e 18 00 40 00    	lea    0x400018(%esi),%ecx
4895c1:	0f b7 96 06 00 40 00 	movzwl 0x400006(%esi),%edx
4895c8:	03 c8                	add    %eax,%ecx
4895ca:	8b 87 0c 00 40 00    	mov    0x40000c(%edi),%eax
4895d0:	33 ff                	xor    %edi,%edi
4895d2:	89 45 fc             	mov    %eax,-0x4(%ebp)
4895d5:	89 55 f4             	mov    %edx,-0xc(%ebp)
4895d8:	53                   	push   %ebx
4895d9:	8b df                	mov    %edi,%ebx
4895db:	85 d2                	test   %edx,%edx
4895dd:	74 1e                	je     0x4895fd
4895df:	8b 51 0c             	mov    0xc(%ecx),%edx
4895e2:	3b c2                	cmp    %edx,%eax
4895e4:	72 0e                	jb     0x4895f4
4895e6:	8b 71 08             	mov    0x8(%ecx),%esi
4895e9:	8d 04 16             	lea    (%esi,%edx,1),%eax
4895ec:	39 45 fc             	cmp    %eax,-0x4(%ebp)
4895ef:	72 55                	jb     0x489646
4895f1:	8b 45 fc             	mov    -0x4(%ebp),%eax
4895f4:	43                   	inc    %ebx
4895f5:	83 c1 28             	add    $0x28,%ecx
4895f8:	3b 5d f4             	cmp    -0xc(%ebp),%ebx
4895fb:	72 e2                	jb     0x4895df
4895fd:	8b 45 f0             	mov    -0x10(%ebp),%eax
489600:	8b 75 f0             	mov    -0x10(%ebp),%esi
489603:	5b                   	pop    %ebx
489604:	85 ff                	test   %edi,%edi
489606:	74 49                	je     0x489651
489608:	83 3d d8 66 4a 00 00 	cmpl   $0x0,0x4a66d8
48960f:	75 1c                	jne    0x48962d
489611:	c7 05 d8 66 4a 00 01 	movl   $0x1,0x4a66d8
489618:	00 00 00
48961b:	85 c0                	test   %eax,%eax
48961d:	78 05                	js     0x489624
48961f:	6a 19                	push   $0x19
489621:	59                   	pop    %ecx
489622:	cd 29                	int    $0x29
489624:	8b d6                	mov    %esi,%edx
489626:	8b cf                	mov    %edi,%ecx
489628:	e8 e4 fe ff ff       	call   0x489511
48962d:	ff 75 f8             	push   -0x8(%ebp)
489630:	ff 75 f0             	push   -0x10(%ebp)
489633:	56                   	push   %esi
489634:	57                   	push   %edi
489635:	ff 15 e0 72 4a 00    	call   *0x4a72e0
48963b:	85 c0                	test   %eax,%eax
48963d:	75 1b                	jne    0x48965a
48963f:	6a 19                	push   $0x19
489641:	59                   	pop    %ecx
489642:	cd 29                	int    $0x29
489644:	eb 14                	jmp    0x48965a
489646:	8b 41 24             	mov    0x24(%ecx),%eax
489649:	8d ba 00 00 40 00    	lea    0x400000(%edx),%edi
48964f:	eb b2                	jmp    0x489603
489651:	8b 45 f8             	mov    -0x8(%ebp),%eax
489654:	c7 00 04 00 00 00    	movl   $0x4,(%eax)
48965a:	5f                   	pop    %edi
48965b:	5e                   	pop    %esi
48965c:	c9                   	leave
48965d:	c3                   	ret
48965e:	f7 05 68 10 40 00 00 	testl  $0x1000,0x401068
489665:	10 00 00
489668:	74 32                	je     0x48969c
48966a:	56                   	push   %esi
48966b:	be 08 66 4a 00       	mov    $0x4a6608,%esi
489670:	56                   	push   %esi
489671:	ff 15 34 7f 4a 00    	call   *0x4a7f34
489677:	a1 e0 66 4a 00       	mov    0x4a66e0,%eax
48967c:	40                   	inc    %eax
48967d:	a3 e0 66 4a 00       	mov    %eax,0x4a66e0
489682:	83 f8 01             	cmp    $0x1,%eax
489685:	75 0d                	jne    0x489694
489687:	6a 04                	push   $0x4
489689:	ba dc 66 4a 00       	mov    $0x4a66dc,%edx
48968e:	59                   	pop    %ecx
48968f:	e8 ed fe ff ff       	call   0x489581
489694:	56                   	push   %esi
489695:	ff 15 2c 7f 4a 00    	call   *0x4a7f2c
48969b:	5e                   	pop    %esi
48969c:	c3                   	ret
48969d:	8b ff                	mov    %edi,%edi
48969f:	55                   	push   %ebp
4896a0:	8b ec                	mov    %esp,%ebp
4896a2:	51                   	push   %ecx
4896a3:	f7 05 68 10 40 00 00 	testl  $0x1000,0x401068
4896aa:	10 00 00
4896ad:	74 2c                	je     0x4896db
4896af:	56                   	push   %esi
4896b0:	be 08 66 4a 00       	mov    $0x4a6608,%esi
4896b5:	56                   	push   %esi
4896b6:	ff 15 34 7f 4a 00    	call   *0x4a7f34
4896bc:	83 2d e0 66 4a 00 01 	subl   $0x1,0x4a66e0
4896c3:	75 0e                	jne    0x4896d3
4896c5:	8b 0d dc 66 4a 00    	mov    0x4a66dc,%ecx
4896cb:	8d 55 fc             	lea    -0x4(%ebp),%edx
4896ce:	e8 ae fe ff ff       	call   0x489581
4896d3:	56                   	push   %esi
4896d4:	ff 15 2c 7f 4a 00    	call   *0x4a7f2c
4896da:	5e                   	pop    %esi
4896db:	c9                   	leave
4896dc:	c3                   	ret
4896dd:	8b ff                	mov    %edi,%edi
4896df:	55                   	push   %ebp
4896e0:	8b ec                	mov    %esp,%ebp
4896e2:	83 ec 34             	sub    $0x34,%esp
4896e5:	53                   	push   %ebx
4896e6:	56                   	push   %esi
4896e7:	57                   	push   %edi
4896e8:	e8 71 ff ff ff       	call   0x48965e
4896ed:	8b 4d 08             	mov    0x8(%ebp),%ecx
4896f0:	be 00 00 40 00       	mov    $0x400000,%esi
4896f5:	c7 45 cc 24 00 00 00 	movl   $0x24,-0x34(%ebp)
4896fc:	89 4d d0             	mov    %ecx,-0x30(%ebp)
4896ff:	8b 41 04             	mov    0x4(%ecx),%eax
489702:	8b 59 08             	mov    0x8(%ecx),%ebx
489705:	03 c6                	add    %esi,%eax
489707:	8b 51 0c             	mov    0xc(%ecx),%edx
48970a:	03 de                	add    %esi,%ebx
48970c:	8b 79 10             	mov    0x10(%ecx),%edi
48970f:	03 d6                	add    %esi,%edx
489711:	03 fe                	add    %esi,%edi
489713:	89 5d fc             	mov    %ebx,-0x4(%ebp)
489716:	8b 71 14             	mov    0x14(%ecx),%esi
489719:	81 c6 00 00 40 00    	add    $0x400000,%esi
48971f:	89 45 d8             	mov    %eax,-0x28(%ebp)
489722:	89 75 f0             	mov    %esi,-0x10(%ebp)
489725:	8b 71 1c             	mov    0x1c(%ecx),%esi
489728:	89 75 f8             	mov    %esi,-0x8(%ebp)
48972b:	8b 75 0c             	mov    0xc(%ebp),%esi
48972e:	89 75 d4             	mov    %esi,-0x2c(%ebp)
489731:	33 f6                	xor    %esi,%esi
489733:	f7 01 01 00 00 00    	testl  $0x1,(%ecx)
489739:	89 75 dc             	mov    %esi,-0x24(%ebp)
48973c:	89 75 e0             	mov    %esi,-0x20(%ebp)
48973f:	89 75 e4             	mov    %esi,-0x1c(%ebp)
489742:	89 75 e8             	mov    %esi,-0x18(%ebp)
489745:	89 75 ec             	mov    %esi,-0x14(%ebp)
489748:	75 24                	jne    0x48976e
48974a:	8d 45 cc             	lea    -0x34(%ebp),%eax
48974d:	89 45 fc             	mov    %eax,-0x4(%ebp)
489750:	e8 48 ff ff ff       	call   0x48969d
489755:	8d 45 fc             	lea    -0x4(%ebp),%eax
489758:	50                   	push   %eax
489759:	6a 01                	push   $0x1
48975b:	56                   	push   %esi
48975c:	68 57 00 6d c0       	push   $0xc06d0057
489761:	ff 15 f8 71 4a 00    	call   *0x4a71f8
489767:	33 c0                	xor    %eax,%eax
489769:	e9 1c 02 00 00       	jmp    0x48998a
48976e:	8b 45 0c             	mov    0xc(%ebp),%eax
489771:	8b 33                	mov    (%ebx),%esi
489773:	2b c2                	sub    %edx,%eax
489775:	c1 f8 02             	sar    $0x2,%eax
489778:	89 45 f4             	mov    %eax,-0xc(%ebp)
48977b:	8b 0c 87             	mov    (%edi,%eax,4),%ecx
48977e:	8b c1                	mov    %ecx,%eax
489780:	c1 e8 1f             	shr    $0x1f,%eax
489783:	f7 d0                	not    %eax
489785:	83 e0 01             	and    $0x1,%eax
489788:	89 45 dc             	mov    %eax,-0x24(%ebp)
48978b:	8d 81 02 00 40 00    	lea    0x400002(%ecx),%eax
489791:	75 03                	jne    0x489796
489793:	0f b7 c1             	movzwl %cx,%eax
489796:	8b 1d d0 40 41 00    	mov    0x4140d0,%ebx
48979c:	33 ff                	xor    %edi,%edi
48979e:	89 45 e0             	mov    %eax,-0x20(%ebp)
4897a1:	85 db                	test   %ebx,%ebx
4897a3:	74 19                	je     0x4897be
4897a5:	8d 45 cc             	lea    -0x34(%ebp),%eax
4897a8:	8b cb                	mov    %ebx,%ecx
4897aa:	50                   	push   %eax
4897ab:	57                   	push   %edi
4897ac:	ff 15 2c 81 4a 00    	call   *0x4a812c
4897b2:	ff d3                	call   *%ebx
4897b4:	8b f8                	mov    %eax,%edi
4897b6:	85 ff                	test   %edi,%edi
4897b8:	0f 85 a1 01 00 00    	jne    0x48995f
4897be:	85 f6                	test   %esi,%esi
4897c0:	0f 85 d8 00 00 00    	jne    0x48989e
4897c6:	8b 1d d0 40 41 00    	mov    0x4140d0,%ebx
4897cc:	85 db                	test   %ebx,%ebx
4897ce:	74 16                	je     0x4897e6
4897d0:	8d 45 cc             	lea    -0x34(%ebp),%eax
4897d3:	8b cb                	mov    %ebx,%ecx
4897d5:	50                   	push   %eax
4897d6:	6a 01                	push   $0x1
4897d8:	ff 15 2c 81 4a 00    	call   *0x4a812c
4897de:	ff d3                	call   *%ebx
4897e0:	8b f0                	mov    %eax,%esi
4897e2:	85 f6                	test   %esi,%esi
4897e4:	75 61                	jne    0x489847
4897e6:	33 db                	xor    %ebx,%ebx
4897e8:	53                   	push   %ebx
4897e9:	53                   	push   %ebx
4897ea:	ff 75 d8             	push   -0x28(%ebp)