4053b4:	66 8b 04 24          	mov    (%esp),%ax
4053b8:	66 83 e0 7f          	and    $0x7f,%ax
4053bc:	66 83 f8 7f          	cmp    $0x7f,%ax
4053c0:	8d 64 24 08          	lea    0x8(%esp),%esp
4053c4:	75 05                	jne    0x4053cb
4053c6:	e9 75 60 00 00       	jmp    0x40b440
4053cb:	83 ec 0c             	sub    $0xc,%esp
4053ce:	dd 14 24             	fstl   (%esp)
4053d1:	e8 02 69 00 00       	call   0x40bcd8
4053d6:	e8 0d 00 00 00       	call   0x4053e8
4053db:	83 c4 0c             	add    $0xc,%esp
4053de:	c3                   	ret
4053df:	8d 54 24 04          	lea    0x4(%esp),%edx
4053e3:	e8 ad 68 00 00       	call   0x40bc95
4053e8:	52                   	push   %edx
4053e9:	9b d9 3c 24          	fstcw  (%esp)
4053ed:	74 6d                	je     0x40545c
4053ef:	66 81 3c 24 7f 02    	cmpw   $0x27f,(%esp)
4053f5:	74 05                	je     0x4053fc
4053f7:	e8 69 68 00 00       	call   0x40bc65
4053fc:	3d 00 00 f0 3f       	cmp    $0x3ff00000,%eax
405401:	73 2d                	jae    0x405430
405403:	d9 e8                	fld1
405405:	d8 c1                	fadd   %st(1),%st
405407:	d9 e8                	fld1
405409:	d8 e2                	fsub   %st(2),%st
40540b:	de c9                	fmulp  %st,%st(1)
40540d:	d9 fa                	fsqrt
40540f:	d9 c9                	fxch   %st(1)
405411:	d9 f3                	fpatan
405413:	83 3d 78 09 43 00 00 	cmpl   $0x0,0x430978
40541a:	0f 85 ce 68 00 00    	jne    0x40bcee
405420:	ba 0d 00 00 00       	mov    $0xd,%edx
405425:	8d 0d c0 b0 42 00    	lea    0x42b0c0,%ecx
40542b:	e9 cb 68 00 00       	jmp    0x40bcfb
405430:	77 38                	ja     0x40546a
405432:	8b 44 24 0c          	mov    0xc(%esp),%eax
405436:	8b c8                	mov    %eax,%ecx
405438:	25 ff ff 0f 00       	and    $0xfffff,%eax
40543d:	0b 44 24 08          	or     0x8(%esp),%eax
405441:	75 27                	jne    0x40546a
405443:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
405449:	dd d8                	fstp   %st(0)
40544b:	74 04                	je     0x405451
40544d:	d9 eb                	fldpi
40544f:	eb c2                	jmp    0x405413
405451:	d9 ee                	fldz
405453:	eb be                	jmp    0x405413
405455:	e8 22 68 00 00       	call   0x40bc7c
40545a:	eb 1b                	jmp    0x405477
40545c:	a9 ff ff 0f 00       	test   $0xfffff,%eax
405461:	75 f2                	jne    0x405455
405463:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
405468:	75 eb                	jne    0x405455
40546a:	dd d8                	fstp   %st(0)
40546c:	db 2d 40 b6 42 00    	fldt   0x42b640
405472:	b8 01 00 00 00       	mov    $0x1,%eax
405477:	83 3d 78 09 43 00 00 	cmpl   $0x0,0x430978
40547e:	0f 85 6a 68 00 00    	jne    0x40bcee
405484:	ba 0d 00 00 00       	mov    $0xd,%edx
405489:	8d 0d c0 b0 42 00    	lea    0x42b0c0,%ecx
40548f:	e8 73 67 00 00       	call   0x40bc07
405494:	5a                   	pop    %edx
405495:	c3                   	ret
405496:	8b ff                	mov    %edi,%edi
405498:	55                   	push   %ebp
405499:	8b ec                	mov    %esp,%ebp
40549b:	56                   	push   %esi
40549c:	8b 75 14             	mov    0x14(%ebp),%esi
40549f:	57                   	push   %edi
4054a0:	33 ff                	xor    %edi,%edi
4054a2:	3b f7                	cmp    %edi,%esi
4054a4:	75 04                	jne    0x4054aa
4054a6:	33 c0                	xor    %eax,%eax
4054a8:	eb 65                	jmp    0x40550f
4054aa:	39 7d 08             	cmp    %edi,0x8(%ebp)
4054ad:	75 1b                	jne    0x4054ca
4054af:	e8 21 06 00 00       	call   0x405ad5
4054b4:	6a 16                	push   $0x16
4054b6:	5e                   	pop    %esi
4054b7:	89 30                	mov    %esi,(%eax)
4054b9:	57                   	push   %edi
4054ba:	57                   	push   %edi
4054bb:	57                   	push   %edi
4054bc:	57                   	push   %edi
4054bd:	57                   	push   %edi
4054be:	e8 62 fd ff ff       	call   0x405225
4054c3:	83 c4 14             	add    $0x14,%esp
4054c6:	8b c6                	mov    %esi,%eax
4054c8:	eb 45                	jmp    0x40550f
4054ca:	39 7d 10             	cmp    %edi,0x10(%ebp)
4054cd:	74 16                	je     0x4054e5
4054cf:	39 75 0c             	cmp    %esi,0xc(%ebp)
4054d2:	72 11                	jb     0x4054e5
4054d4:	56                   	push   %esi
4054d5:	ff 75 10             	push   0x10(%ebp)
4054d8:	ff 75 08             	push   0x8(%ebp)
4054db:	e8 20 2c 00 00       	call   0x408100
4054e0:	83 c4 0c             	add    $0xc,%esp
4054e3:	eb c1                	jmp    0x4054a6
4054e5:	ff 75 0c             	push   0xc(%ebp)
4054e8:	57                   	push   %edi
4054e9:	ff 75 08             	push   0x8(%ebp)
4054ec:	e8 0f 52 00 00       	call   0x40a700
4054f1:	83 c4 0c             	add    $0xc,%esp
4054f4:	39 7d 10             	cmp    %edi,0x10(%ebp)
4054f7:	74 b6                	je     0x4054af
4054f9:	39 75 0c             	cmp    %esi,0xc(%ebp)
4054fc:	73 0e                	jae    0x40550c
4054fe:	e8 d2 05 00 00       	call   0x405ad5
405503:	6a 22                	push   $0x22
405505:	59                   	pop    %ecx
405506:	89 08                	mov    %ecx,(%eax)
405508:	8b f1                	mov    %ecx,%esi
40550a:	eb ad                	jmp    0x4054b9
40550c:	6a 16                	push   $0x16
40550e:	58                   	pop    %eax
40550f:	5f                   	pop    %edi
405510:	5e                   	pop    %esi
405511:	5d                   	pop    %ebp
405512:	c3                   	ret
405513:	8b ff                	mov    %edi,%edi
405515:	55                   	push   %ebp
405516:	8b ec                	mov    %esp,%ebp
405518:	83 ec 0c             	sub    $0xc,%esp
40551b:	53                   	push   %ebx
40551c:	57                   	push   %edi
40551d:	8b 7d 08             	mov    0x8(%ebp),%edi
405520:	33 db                	xor    %ebx,%ebx
405522:	3b fb                	cmp    %ebx,%edi
405524:	75 20                	jne    0x405546
405526:	e8 aa 05 00 00       	call   0x405ad5
40552b:	53                   	push   %ebx
40552c:	53                   	push   %ebx
40552d:	53                   	push   %ebx
40552e:	53                   	push   %ebx
40552f:	53                   	push   %ebx
405530:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
405536:	e8 ea fc ff ff       	call   0x405225
40553b:	83 c4 14             	add    $0x14,%esp
40553e:	83 c8 ff             	or     $0xffffffff,%eax
405541:	e9 66 01 00 00       	jmp    0x4056ac
405546:	57                   	push   %edi
405547:	e8 35 6c 00 00       	call   0x40c181
40554c:	39 5f 04             	cmp    %ebx,0x4(%edi)
40554f:	59                   	pop    %ecx
405550:	89 45 fc             	mov    %eax,-0x4(%ebp)
405553:	7d 03                	jge    0x405558
405555:	89 5f 04             	mov    %ebx,0x4(%edi)
405558:	6a 01                	push   $0x1
40555a:	53                   	push   %ebx
40555b:	50                   	push   %eax
40555c:	e8 44 6b 00 00       	call   0x40c0a5
405561:	83 c4 0c             	add    $0xc,%esp
405564:	3b c3                	cmp    %ebx,%eax
405566:	89 45 f8             	mov    %eax,-0x8(%ebp)
405569:	7c d3                	jl     0x40553e
40556b:	8b 57 0c             	mov    0xc(%edi),%edx
40556e:	f7 c2 08 01 00 00    	test   $0x108,%edx
405574:	75 08                	jne    0x40557e
405576:	2b 47 04             	sub    0x4(%edi),%eax
405579:	e9 2e 01 00 00       	jmp    0x4056ac
40557e:	8b 07                	mov    (%edi),%eax
405580:	8b 4f 08             	mov    0x8(%edi),%ecx
405583:	56                   	push   %esi
405584:	8b f0                	mov    %eax,%esi
405586:	2b f1                	sub    %ecx,%esi
405588:	89 75 f4             	mov    %esi,-0xc(%ebp)
40558b:	f6 c2 03             	test   $0x3,%dl
40558e:	74 41                	je     0x4055d1
405590:	8b 55 fc             	mov    -0x4(%ebp),%edx
405593:	8b 75 fc             	mov    -0x4(%ebp),%esi
405596:	c1 fa 05             	sar    $0x5,%edx
405599:	8b 14 95 60 12 c7 00 	mov    0xc71260(,%edx,4),%edx
4055a0:	83 e6 1f             	and    $0x1f,%esi
4055a3:	c1 e6 06             	shl    $0x6,%esi
4055a6:	f6 44 32 04 80       	testb  $0x80,0x4(%edx,%esi,1)
4055ab:	74 17                	je     0x4055c4
4055ad:	8b d1                	mov    %ecx,%edx
4055af:	3b d0                	cmp    %eax,%edx
4055b1:	73 11                	jae    0x4055c4
4055b3:	8b f0                	mov    %eax,%esi
4055b5:	80 3a 0a             	cmpb   $0xa,(%edx)
4055b8:	75 05                	jne    0x4055bf
4055ba:	ff 45 f4             	incl   -0xc(%ebp)
4055bd:	33 db                	xor    %ebx,%ebx
4055bf:	42                   	inc    %edx
4055c0:	3b d6                	cmp    %esi,%edx
4055c2:	72 f1                	jb     0x4055b5
4055c4:	39 5d f8             	cmp    %ebx,-0x8(%ebp)
4055c7:	75 1c                	jne    0x4055e5
4055c9:	8b 45 f4             	mov    -0xc(%ebp),%eax
4055cc:	e9 da 00 00 00       	jmp    0x4056ab
4055d1:	84 d2                	test   %dl,%dl
4055d3:	78 ef                	js     0x4055c4
4055d5:	e8 fb 04 00 00       	call   0x405ad5
4055da:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4055e0:	e9 87 00 00 00       	jmp    0x40566c
4055e5:	f6 47 0c 01          	testb  $0x1,0xc(%edi)
4055e9:	0f 84 b4 00 00 00    	je     0x4056a3
4055ef:	8b 57 04             	mov    0x4(%edi),%edx
4055f2:	3b d3                	cmp    %ebx,%edx
4055f4:	75 08                	jne    0x4055fe
4055f6:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4055f9:	e9 a5 00 00 00       	jmp    0x4056a3
4055fe:	8b 5d fc             	mov    -0x4(%ebp),%ebx
405601:	8b 75 fc             	mov    -0x4(%ebp),%esi
405604:	2b c1                	sub    %ecx,%eax
405606:	03 c2                	add    %edx,%eax
405608:	c1 fb 05             	sar    $0x5,%ebx
40560b:	83 e6 1f             	and    $0x1f,%esi
40560e:	8d 1c 9d 60 12 c7 00 	lea    0xc71260(,%ebx,4),%ebx
405615:	89 45 08             	mov    %eax,0x8(%ebp)
405618:	8b 03                	mov    (%ebx),%eax
40561a:	c1 e6 06             	shl    $0x6,%esi
40561d:	f6 44 30 04 80       	testb  $0x80,0x4(%eax,%esi,1)
405622:	74 79                	je     0x40569d
405624:	6a 02                	push   $0x2
405626:	6a 00                	push   $0x0
405628:	ff 75 fc             	push   -0x4(%ebp)
40562b:	e8 75 6a 00 00       	call   0x40c0a5
405630:	83 c4 0c             	add    $0xc,%esp
405633:	3b 45 f8             	cmp    -0x8(%ebp),%eax
405636:	75 20                	jne    0x405658
405638:	8b 47 08             	mov    0x8(%edi),%eax
40563b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40563e:	03 c8                	add    %eax,%ecx
405640:	eb 09                	jmp    0x40564b
405642:	80 38 0a             	cmpb   $0xa,(%eax)
405645:	75 03                	jne    0x40564a
405647:	ff 45 08             	incl   0x8(%ebp)
40564a:	40                   	inc    %eax
40564b:	3b c1                	cmp    %ecx,%eax
40564d:	72 f3                	jb     0x405642
40564f:	f7 47 0c 00 20 00 00 	testl  $0x2000,0xc(%edi)
405656:	eb 40                	jmp    0x405698
405658:	6a 00                	push   $0x0
40565a:	ff 75 f8             	push   -0x8(%ebp)
40565d:	ff 75 fc             	push   -0x4(%ebp)
405660:	e8 40 6a 00 00       	call   0x40c0a5
405665:	83 c4 0c             	add    $0xc,%esp
405668:	85 c0                	test   %eax,%eax
40566a:	7d 05                	jge    0x405671
40566c:	83 c8 ff             	or     $0xffffffff,%eax
40566f:	eb 3a                	jmp    0x4056ab
405671:	b8 00 02 00 00       	mov    $0x200,%eax
405676:	39 45 08             	cmp    %eax,0x8(%ebp)
405679:	77 10                	ja     0x40568b
40567b:	8b 4f 0c             	mov    0xc(%edi),%ecx
40567e:	f6 c1 08             	test   $0x8,%cl
405681:	74 08                	je     0x40568b
405683:	f7 c1 00 04 00 00    	test   $0x400,%ecx
405689:	74 03                	je     0x40568e
40568b:	8b 47 18             	mov    0x18(%edi),%eax
40568e:	89 45 08             	mov    %eax,0x8(%ebp)
405691:	8b 03                	mov    (%ebx),%eax
405693:	f6 44 30 04 04       	testb  $0x4,0x4(%eax,%esi,1)
405698:	74 03                	je     0x40569d
40569a:	ff 45 08             	incl   0x8(%ebp)
40569d:	8b 45 08             	mov    0x8(%ebp),%eax
4056a0:	29 45 f8             	sub    %eax,-0x8(%ebp)
4056a3:	8b 45 f4             	mov    -0xc(%ebp),%eax
4056a6:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4056a9:	03 c1                	add    %ecx,%eax
4056ab:	5e                   	pop    %esi
4056ac:	5f                   	pop    %edi
4056ad:	5b                   	pop    %ebx
4056ae:	c9                   	leave
4056af:	c3                   	ret
4056b0:	6a 0c                	push   $0xc
4056b2:	68 30 95 42 00       	push   $0x429530
4056b7:	e8 20 4d 00 00       	call   0x40a3dc
4056bc:	33 c0                	xor    %eax,%eax
4056be:	33 f6                	xor    %esi,%esi
4056c0:	39 75 08             	cmp    %esi,0x8(%ebp)
4056c3:	0f 95 c0             	setne  %al
4056c6:	3b c6                	cmp    %esi,%eax
4056c8:	75 1d                	jne    0x4056e7
4056ca:	e8 06 04 00 00       	call   0x405ad5
4056cf:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4056d5:	56                   	push   %esi
4056d6:	56                   	push   %esi
4056d7:	56                   	push   %esi
4056d8:	56                   	push   %esi
4056d9:	56                   	push   %esi
4056da:	e8 46 fb ff ff       	call   0x405225
4056df:	83 c4 14             	add    $0x14,%esp
4056e2:	83 c8 ff             	or     $0xffffffff,%eax
4056e5:	eb 27                	jmp    0x40570e
4056e7:	ff 75 08             	push   0x8(%ebp)
4056ea:	e8 ff 56 00 00       	call   0x40adee
4056ef:	59                   	pop    %ecx
4056f0:	89 75 fc             	mov    %esi,-0x4(%ebp)
4056f3:	ff 75 08             	push   0x8(%ebp)
4056f6:	e8 18 fe ff ff       	call   0x405513
4056fb:	59                   	pop    %ecx
4056fc:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4056ff:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
405706:	e8 09 00 00 00       	call   0x405714
40570b:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40570e:	e8 0e 4d 00 00       	call   0x40a421
405713:	c3                   	ret
405714:	ff 75 08             	push   0x8(%ebp)
405717:	e8 45 57 00 00       	call   0x40ae61
40571c:	59                   	pop    %ecx
40571d:	c3                   	ret
40571e:	8b ff                	mov    %edi,%edi
405720:	51                   	push   %ecx
405721:	c7 01 a4 a2 41 00    	movl   $0x41a2a4,(%ecx)
405727:	e8 87 6a 00 00       	call   0x40c1b3
40572c:	59                   	pop    %ecx
40572d:	c3                   	ret
40572e:	8b ff                	mov    %edi,%edi
405730:	55                   	push   %ebp
405731:	8b ec                	mov    %esp,%ebp
405733:	56                   	push   %esi
405734:	8b f1                	mov    %ecx,%esi
405736:	e8 e3 ff ff ff       	call   0x40571e
40573b:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
40573f:	74 07                	je     0x405748
405741:	56                   	push   %esi
405742:	e8 ef fb ff ff       	call   0x405336
405747:	59                   	pop    %ecx
405748:	8b c6                	mov    %esi,%eax
40574a:	5e                   	pop    %esi
40574b:	5d                   	pop    %ebp
40574c:	c2 04 00             	ret    $0x4
40574f:	8b ff                	mov    %edi,%edi
405751:	55                   	push   %ebp
405752:	8b ec                	mov    %esp,%ebp
405754:	8b 45 08             	mov    0x8(%ebp),%eax
405757:	83 c1 09             	add    $0x9,%ecx
40575a:	51                   	push   %ecx
40575b:	83 c0 09             	add    $0x9,%eax
40575e:	50                   	push   %eax
40575f:	e8 cc 6a 00 00       	call   0x40c230
405764:	f7 d8                	neg    %eax
405766:	59                   	pop    %ecx
405767:	1b c0                	sbb    %eax,%eax
405769:	59                   	pop    %ecx
40576a:	40                   	inc    %eax
40576b:	5d                   	pop    %ebp
40576c:	c2 04 00             	ret    $0x4
40576f:	8b ff                	mov    %edi,%edi
405771:	55                   	push   %ebp
405772:	8b ec                	mov    %esp,%ebp
405774:	53                   	push   %ebx
405775:	56                   	push   %esi
405776:	8b 75 08             	mov    0x8(%ebp),%esi
405779:	57                   	push   %edi