40c566:	c1 e8 06             	shr    $0x6,%eax
40c569:	6b c9 38             	imul   $0x38,%ecx,%ecx
40c56c:	8b 04 85 78 70 41 00 	mov    0x417078(,%eax,4),%eax
40c573:	0f b6 44 08 28       	movzbl 0x28(%eax,%ecx,1),%eax
40c578:	83 e0 40             	and    $0x40,%eax
40c57b:	5d                   	pop    %ebp
40c57c:	c3                   	ret
40c57d:	e8 ce b3 ff ff       	call   0x407950
40c582:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40c588:	e8 8f 97 ff ff       	call   0x405d1c
40c58d:	33 c0                	xor    %eax,%eax
40c58f:	5d                   	pop    %ebp
40c590:	c3                   	ret
40c591:	6a 08                	push   $0x8
40c593:	68 18 4d 41 00       	push   $0x414d18
40c598:	e8 73 6e ff ff       	call   0x403410
40c59d:	83 3d bc 69 41 00 01 	cmpl   $0x1,0x4169bc
40c5a4:	7c 5b                	jl     0x40c601
40c5a6:	8b 45 08             	mov    0x8(%ebp),%eax
40c5a9:	a8 40                	test   $0x40,%al
40c5ab:	74 4a                	je     0x40c5f7
40c5ad:	83 3d 50 67 41 00 00 	cmpl   $0x0,0x416750
40c5b4:	74 41                	je     0x40c5f7
40c5b6:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c5ba:	0f ae 55 08          	ldmxcsr 0x8(%ebp)
40c5be:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40c5c5:	eb 3a                	jmp    0x40c601
40c5c7:	8b 45 ec             	mov    -0x14(%ebp),%eax
40c5ca:	8b 00                	mov    (%eax),%eax
40c5cc:	81 38 05 00 00 c0    	cmpl   $0xc0000005,(%eax)
40c5d2:	74 0b                	je     0x40c5df
40c5d4:	81 38 1d 00 00 c0    	cmpl   $0xc000001d,(%eax)
40c5da:	74 03                	je     0x40c5df
40c5dc:	33 c0                	xor    %eax,%eax
40c5de:	c3                   	ret
40c5df:	33 c0                	xor    %eax,%eax
40c5e1:	40                   	inc    %eax
40c5e2:	c3                   	ret
40c5e3:	8b 65 e8             	mov    -0x18(%ebp),%esp
40c5e6:	83 25 50 67 41 00 00 	andl   $0x0,0x416750
40c5ed:	83 65 08 bf          	andl   $0xffffffbf,0x8(%ebp)
40c5f1:	0f ae 55 08          	ldmxcsr 0x8(%ebp)
40c5f5:	eb c7                	jmp    0x40c5be
40c5f7:	83 e0 bf             	and    $0xffffffbf,%eax
40c5fa:	89 45 08             	mov    %eax,0x8(%ebp)
40c5fd:	0f ae 55 08          	ldmxcsr 0x8(%ebp)
40c601:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c604:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c60b:	59                   	pop    %ecx
40c60c:	5f                   	pop    %edi
40c60d:	5e                   	pop    %esi
40c60e:	5b                   	pop    %ebx
40c60f:	c9                   	leave
40c610:	c3                   	ret
40c611:	8b ff                	mov    %edi,%edi
40c613:	55                   	push   %ebp
40c614:	8b ec                	mov    %esp,%ebp
40c616:	51                   	push   %ecx
40c617:	dd 7d fc             	fnstsw -0x4(%ebp)
40c61a:	db e2                	fnclex
40c61c:	0f bf 45 fc          	movswl -0x4(%ebp),%eax
40c620:	c9                   	leave
40c621:	c3                   	ret
40c622:	8b ff                	mov    %edi,%edi
40c624:	55                   	push   %ebp
40c625:	8b ec                	mov    %esp,%ebp
40c627:	51                   	push   %ecx
40c628:	51                   	push   %ecx
40c629:	9b d9 7d fc          	fstcw  -0x4(%ebp)
40c62d:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40c630:	8b 45 08             	mov    0x8(%ebp),%eax
40c633:	f7 d1                	not    %ecx
40c635:	66 23 4d fc          	and    -0x4(%ebp),%cx
40c639:	23 45 0c             	and    0xc(%ebp),%eax
40c63c:	66 0b c8             	or     %ax,%cx
40c63f:	66 89 4d f8          	mov    %cx,-0x8(%ebp)
40c643:	d9 6d f8             	fldcw  -0x8(%ebp)
40c646:	0f bf 45 fc          	movswl -0x4(%ebp),%eax
40c64a:	c9                   	leave
40c64b:	c3                   	ret
40c64c:	8b ff                	mov    %edi,%edi
40c64e:	55                   	push   %ebp
40c64f:	8b ec                	mov    %esp,%ebp
40c651:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c654:	83 ec 0c             	sub    $0xc,%esp
40c657:	f6 c1 01             	test   $0x1,%cl
40c65a:	74 0a                	je     0x40c666
40c65c:	db 2d 98 30 41 00    	fldt   0x413098
40c662:	db 5d fc             	fistpl -0x4(%ebp)
40c665:	9b                   	fwait
40c666:	f6 c1 08             	test   $0x8,%cl
40c669:	74 10                	je     0x40c67b
40c66b:	9b df e0             	fstsw  %ax
40c66e:	db 2d 98 30 41 00    	fldt   0x413098
40c674:	dd 5d f4             	fstpl  -0xc(%ebp)
40c677:	9b 9b df e0          	fstsw  %ax
40c67b:	f6 c1 10             	test   $0x10,%cl
40c67e:	74 0a                	je     0x40c68a
40c680:	db 2d a4 30 41 00    	fldt   0x4130a4
40c686:	dd 5d f4             	fstpl  -0xc(%ebp)
40c689:	9b                   	fwait
40c68a:	f6 c1 04             	test   $0x4,%cl
40c68d:	74 09                	je     0x40c698
40c68f:	d9 ee                	fldz
40c691:	d9 e8                	fld1
40c693:	de f1                	fdivp  %st,%st(1)
40c695:	dd d8                	fstp   %st(0)
40c697:	9b                   	fwait
40c698:	f6 c1 20             	test   $0x20,%cl
40c69b:	74 06                	je     0x40c6a3
40c69d:	d9 eb                	fldpi
40c69f:	dd 5d f4             	fstpl  -0xc(%ebp)
40c6a2:	9b                   	fwait
40c6a3:	c9                   	leave
40c6a4:	c3                   	ret
40c6a5:	8b ff                	mov    %edi,%edi
40c6a7:	55                   	push   %ebp
40c6a8:	8b ec                	mov    %esp,%ebp
40c6aa:	51                   	push   %ecx
40c6ab:	9b dd 7d fc          	fstsw  -0x4(%ebp)
40c6af:	0f bf 45 fc          	movswl -0x4(%ebp),%eax
40c6b3:	c9                   	leave
40c6b4:	c3                   	ret
40c6b5:	e8 72 07 00 00       	call   0x40ce2c
40c6ba:	50                   	push   %eax
40c6bb:	e8 4a 07 00 00       	call   0x40ce0a
40c6c0:	59                   	pop    %ecx
40c6c1:	c3                   	ret
40c6c2:	8b ff                	mov    %edi,%edi
40c6c4:	55                   	push   %ebp
40c6c5:	8b ec                	mov    %esp,%ebp
40c6c7:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c6ca:	80 39 00             	cmpb   $0x0,(%ecx)
40c6cd:	75 05                	jne    0x40c6d4
40c6cf:	33 c0                	xor    %eax,%eax
40c6d1:	40                   	inc    %eax
40c6d2:	eb 16                	jmp    0x40c6ea
40c6d4:	80 79 01 00          	cmpb   $0x0,0x1(%ecx)
40c6d8:	75 05                	jne    0x40c6df
40c6da:	6a 02                	push   $0x2
40c6dc:	58                   	pop    %eax
40c6dd:	eb 0b                	jmp    0x40c6ea
40c6df:	33 c0                	xor    %eax,%eax
40c6e1:	38 41 02             	cmp    %al,0x2(%ecx)
40c6e4:	0f 95 c0             	setne  %al
40c6e7:	83 c0 03             	add    $0x3,%eax
40c6ea:	5d                   	pop    %ebp
40c6eb:	c2 04 00             	ret    $0x4
40c6ee:	8b ff                	mov    %edi,%edi
40c6f0:	55                   	push   %ebp
40c6f1:	8b ec                	mov    %esp,%ebp
40c6f3:	51                   	push   %ecx
40c6f4:	ff 75 18             	push   0x18(%ebp)
40c6f7:	8d 45 fc             	lea    -0x4(%ebp),%eax
40c6fa:	ff 75 14             	push   0x14(%ebp)
40c6fd:	ff 75 10             	push   0x10(%ebp)
40c700:	ff 75 0c             	push   0xc(%ebp)
40c703:	50                   	push   %eax
40c704:	e8 d9 07 00 00       	call   0x40cee2
40c709:	8b d0                	mov    %eax,%edx
40c70b:	83 c4 14             	add    $0x14,%esp
40c70e:	83 fa 04             	cmp    $0x4,%edx
40c711:	77 1a                	ja     0x40c72d
40c713:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c716:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
40c71c:	76 05                	jbe    0x40c723
40c71e:	b9 fd ff 00 00       	mov    $0xfffd,%ecx
40c723:	8b 45 08             	mov    0x8(%ebp),%eax
40c726:	85 c0                	test   %eax,%eax
40c728:	74 03                	je     0x40c72d
40c72a:	66 89 08             	mov    %cx,(%eax)
40c72d:	8b c2                	mov    %edx,%eax
40c72f:	c9                   	leave
40c730:	c3                   	ret
40c731:	8b ff                	mov    %edi,%edi
40c733:	55                   	push   %ebp
40c734:	8b ec                	mov    %esp,%ebp
40c736:	51                   	push   %ecx
40c737:	51                   	push   %ecx
40c738:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40c73c:	53                   	push   %ebx
40c73d:	56                   	push   %esi
40c73e:	57                   	push   %edi
40c73f:	8b 7d 0c             	mov    0xc(%ebp),%edi
40c742:	8b 3f                	mov    (%edi),%edi
40c744:	0f 84 a4 00 00 00    	je     0x40c7ee
40c74a:	8b 5d 10             	mov    0x10(%ebp),%ebx
40c74d:	8b 75 08             	mov    0x8(%ebp),%esi
40c750:	85 db                	test   %ebx,%ebx
40c752:	74 6b                	je     0x40c7bf
40c754:	57                   	push   %edi
40c755:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40c758:	e8 65 ff ff ff       	call   0x40c6c2
40c75d:	ff 75 18             	push   0x18(%ebp)
40c760:	ff 75 14             	push   0x14(%ebp)
40c763:	50                   	push   %eax
40c764:	8d 45 f8             	lea    -0x8(%ebp),%eax
40c767:	57                   	push   %edi
40c768:	50                   	push   %eax
40c769:	e8 74 07 00 00       	call   0x40cee2
40c76e:	8b d0                	mov    %eax,%edx
40c770:	83 c4 14             	add    $0x14,%esp
40c773:	83 fa ff             	cmp    $0xffffffff,%edx
40c776:	74 5e                	je     0x40c7d6
40c778:	85 d2                	test   %edx,%edx
40c77a:	74 51                	je     0x40c7cd
40c77c:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40c77f:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
40c785:	76 2b                	jbe    0x40c7b2
40c787:	83 fb 01             	cmp    $0x1,%ebx
40c78a:	76 33                	jbe    0x40c7bf
40c78c:	81 e9 00 00 01 00    	sub    $0x10000,%ecx
40c792:	4b                   	dec    %ebx
40c793:	8b c1                	mov    %ecx,%eax
40c795:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40c798:	c1 e8 0a             	shr    $0xa,%eax
40c79b:	81 e1 ff 03 00 00    	and    $0x3ff,%ecx
40c7a1:	0d 00 d8 00 00       	or     $0xd800,%eax
40c7a6:	66 89 06             	mov    %ax,(%esi)
40c7a9:	83 c6 02             	add    $0x2,%esi
40c7ac:	81 c9 00 dc 00 00    	or     $0xdc00,%ecx
40c7b2:	66 89 0e             	mov    %cx,(%esi)
40c7b5:	03 fa                	add    %edx,%edi
40c7b7:	83 c6 02             	add    $0x2,%esi
40c7ba:	83 eb 01             	sub    $0x1,%ebx
40c7bd:	75 95                	jne    0x40c754
40c7bf:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40c7c2:	2b 75 08             	sub    0x8(%ebp),%esi
40c7c5:	d1 fe                	sar    $1,%esi
40c7c7:	89 3b                	mov    %edi,(%ebx)
40c7c9:	8b c6                	mov    %esi,%eax
40c7cb:	eb 67                	jmp    0x40c834
40c7cd:	33 ff                	xor    %edi,%edi
40c7cf:	33 c0                	xor    %eax,%eax
40c7d1:	66 89 06             	mov    %ax,(%esi)
40c7d4:	eb e9                	jmp    0x40c7bf
40c7d6:	8b 45 0c             	mov    0xc(%ebp),%eax
40c7d9:	89 38                	mov    %edi,(%eax)
40c7db:	8b 45 18             	mov    0x18(%ebp),%eax
40c7de:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40c7e2:	c7 40 18 2a 00 00 00 	movl   $0x2a,0x18(%eax)
40c7e9:	83 c8 ff             	or     $0xffffffff,%eax
40c7ec:	eb 46                	jmp    0x40c834
40c7ee:	57                   	push   %edi
40c7ef:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40c7f2:	33 f6                	xor    %esi,%esi
40c7f4:	e8 c9 fe ff ff       	call   0x40c6c2
40c7f9:	8b 5d 18             	mov    0x18(%ebp),%ebx
40c7fc:	eb 16                	jmp    0x40c814
40c7fe:	85 c0                	test   %eax,%eax
40c800:	74 c7                	je     0x40c7c9
40c802:	83 f8 04             	cmp    $0x4,%eax
40c805:	75 01                	jne    0x40c808
40c807:	46                   	inc    %esi
40c808:	03 f8                	add    %eax,%edi
40c80a:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40c80d:	57                   	push   %edi
40c80e:	46                   	inc    %esi
40c80f:	e8 ae fe ff ff       	call   0x40c6c2
40c814:	53                   	push   %ebx
40c815:	ff 75 14             	push   0x14(%ebp)
40c818:	50                   	push   %eax
40c819:	57                   	push   %edi
40c81a:	6a 00                	push   $0x0
40c81c:	e8 c1 06 00 00       	call   0x40cee2
40c821:	83 c4 14             	add    $0x14,%esp
40c824:	83 f8 ff             	cmp    $0xffffffff,%eax
40c827:	75 d5                	jne    0x40c7fe
40c829:	c6 43 1c 01          	movb   $0x1,0x1c(%ebx)
40c82d:	c7 43 18 2a 00 00 00 	movl   $0x2a,0x18(%ebx)
40c834:	5f                   	pop    %edi
40c835:	5e                   	pop    %esi
40c836:	5b                   	pop    %ebx
40c837:	c9                   	leave
40c838:	c3                   	ret
40c839:	8b ff                	mov    %edi,%edi
40c83b:	55                   	push   %ebp
40c83c:	8b ec                	mov    %esp,%ebp
40c83e:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c841:	33 c0                	xor    %eax,%eax
40c843:	38 01                	cmp    %al,(%ecx)
40c845:	74 0c                	je     0x40c853
40c847:	3b 45 0c             	cmp    0xc(%ebp),%eax
40c84a:	74 07                	je     0x40c853
40c84c:	40                   	inc    %eax
40c84d:	80 3c 08 00          	cmpb   $0x0,(%eax,%ecx,1)
40c851:	75 f4                	jne    0x40c847
40c853:	5d                   	pop    %ebp
40c854:	c3                   	ret
40c855:	8b ff                	mov    %edi,%edi
40c857:	55                   	push   %ebp
40c858:	8b ec                	mov    %esp,%ebp
40c85a:	51                   	push   %ecx
40c85b:	51                   	push   %ecx
40c85c:	56                   	push   %esi
40c85d:	8b 75 08             	mov    0x8(%ebp),%esi
40c860:	57                   	push   %edi
40c861:	56                   	push   %esi
40c862:	e8 8b c9 ff ff       	call   0x4091f2
40c867:	83 cf ff             	or     $0xffffffff,%edi
40c86a:	59                   	pop    %ecx
40c86b:	3b c7                	cmp    %edi,%eax
40c86d:	75 14                	jne    0x40c883
40c86f:	8b 45 18             	mov    0x18(%ebp),%eax
40c872:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40c876:	c7 40 18 09 00 00 00 	movl   $0x9,0x18(%eax)
40c87d:	8b c7                	mov    %edi,%eax
40c87f:	8b d7                	mov    %edi,%edx
40c881:	eb 51                	jmp    0x40c8d4
40c883:	ff 75 14             	push   0x14(%ebp)
40c886:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40c889:	51                   	push   %ecx
40c88a:	ff 75 10             	push   0x10(%ebp)
40c88d:	ff 75 0c             	push   0xc(%ebp)
40c890:	50                   	push   %eax
40c891:	ff 15 00 f1 40 00    	call   *0x40f100
40c897:	85 c0                	test   %eax,%eax
40c899:	75 13                	jne    0x40c8ae
40c89b:	ff 75 18             	push   0x18(%ebp)
40c89e:	ff 15 58 f0 40 00    	call   *0x40f058
40c8a4:	50                   	push   %eax
40c8a5:	e8 6f b0 ff ff       	call   0x407919
40c8aa:	59                   	pop    %ecx
40c8ab:	59                   	pop    %ecx
40c8ac:	eb cf                	jmp    0x40c87d
40c8ae:	8b 45 f8             	mov    -0x8(%ebp),%eax
40c8b1:	8b 55 fc             	mov    -0x4(%ebp),%edx
40c8b4:	23 c2                	and    %edx,%eax
40c8b6:	3b c7                	cmp    %edi,%eax
40c8b8:	74 c3                	je     0x40c87d
40c8ba:	8b 45 f8             	mov    -0x8(%ebp),%eax
40c8bd:	8b ce                	mov    %esi,%ecx
40c8bf:	83 e6 3f             	and    $0x3f,%esi
40c8c2:	c1 f9 06             	sar    $0x6,%ecx
40c8c5:	6b f6 38             	imul   $0x38,%esi,%esi
40c8c8:	8b 0c 8d 78 70 41 00 	mov    0x417078(,%ecx,4),%ecx
40c8cf:	80 64 31 28 fd       	andb   $0xfd,0x28(%ecx,%esi,1)
40c8d4:	5f                   	pop    %edi
40c8d5:	5e                   	pop    %esi
40c8d6:	c9                   	leave
40c8d7:	c3                   	ret
40c8d8:	8b ff                	mov    %edi,%edi
40c8da:	55                   	push   %ebp
40c8db:	8b ec                	mov    %esp,%ebp
40c8dd:	ff 75 18             	push   0x18(%ebp)
40c8e0:	ff 75 14             	push   0x14(%ebp)
40c8e3:	ff 75 10             	push   0x10(%ebp)
40c8e6:	ff 75 0c             	push   0xc(%ebp)
40c8e9:	ff 75 08             	push   0x8(%ebp)
40c8ec:	e8 64 ff ff ff       	call   0x40c855