415509:	8b 4d 0c             	mov    0xc(%ebp),%ecx
41550c:	83 c4 20             	add    $0x20,%esp
41550f:	89 47 08             	mov    %eax,0x8(%edi)
415512:	2b c8                	sub    %eax,%ecx
415514:	8b 45 10             	mov    0x10(%ebp),%eax
415517:	1b c2                	sbb    %edx,%eax
415519:	89 77 18             	mov    %esi,0x18(%edi)
41551c:	89 47 14             	mov    %eax,0x14(%edi)
41551f:	8b c7                	mov    %edi,%eax
415521:	89 57 0c             	mov    %edx,0xc(%edi)
415524:	89 4f 10             	mov    %ecx,0x10(%edi)
415527:	5f                   	pop    %edi
415528:	5e                   	pop    %esi
415529:	5b                   	pop    %ebx
41552a:	5d                   	pop    %ebp
41552b:	c2 0c 00             	ret    $0xc
41552e:	8b ff                	mov    %edi,%edi
415530:	55                   	push   %ebp
415531:	8b ec                	mov    %esp,%ebp
415533:	83 ec 28             	sub    $0x28,%esp
415536:	8d 4d d8             	lea    -0x28(%ebp),%ecx
415539:	56                   	push   %esi
41553a:	6a 00                	push   $0x0
41553c:	e8 29 12 ff ff       	call   0x40676a
415541:	8d 45 d8             	lea    -0x28(%ebp),%eax
415544:	50                   	push   %eax
415545:	ff 75 10             	push   0x10(%ebp)
415548:	ff 75 0c             	push   0xc(%ebp)
41554b:	ff 75 08             	push   0x8(%ebp)
41554e:	e8 12 00 00 00       	call   0x415565
415553:	83 c4 10             	add    $0x10,%esp
415556:	8d 4d d8             	lea    -0x28(%ebp),%ecx
415559:	8b f0                	mov    %eax,%esi
41555b:	e8 52 12 ff ff       	call   0x4067b2
415560:	8b c6                	mov    %esi,%eax
415562:	5e                   	pop    %esi
415563:	c9                   	leave
415564:	c3                   	ret
415565:	8b ff                	mov    %edi,%edi
415567:	55                   	push   %ebp
415568:	8b ec                	mov    %esp,%ebp
41556a:	83 ec 2c             	sub    $0x2c,%esp
41556d:	53                   	push   %ebx
41556e:	8b 5d 08             	mov    0x8(%ebp),%ebx
415571:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
415574:	56                   	push   %esi
415575:	57                   	push   %edi
415576:	ff 75 10             	push   0x10(%ebp)
415579:	8b 7d 14             	mov    0x14(%ebp),%edi
41557c:	ff 75 0c             	push   0xc(%ebp)
41557f:	53                   	push   %ebx
415580:	e8 5c ff ff ff       	call   0x4154e1
415585:	8b 45 d4             	mov    -0x2c(%ebp),%eax
415588:	23 45 d8             	and    -0x28(%ebp),%eax
41558b:	83 f8 ff             	cmp    $0xffffffff,%eax
41558e:	0f 84 40 01 00 00    	je     0x4156d4
415594:	8b 45 dc             	mov    -0x24(%ebp),%eax
415597:	23 45 e0             	and    -0x20(%ebp),%eax
41559a:	83 f8 ff             	cmp    $0xffffffff,%eax
41559d:	0f 84 31 01 00 00    	je     0x4156d4
4155a3:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4155a6:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4155a9:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4155ac:	89 45 fc             	mov    %eax,-0x4(%ebp)
4155af:	85 c9                	test   %ecx,%ecx
4155b1:	0f 8c d2 00 00 00    	jl     0x415689
4155b7:	7f 08                	jg     0x4155c1
4155b9:	85 c0                	test   %eax,%eax
4155bb:	0f 84 be 00 00 00    	je     0x41567f
4155c1:	6a 01                	push   $0x1
4155c3:	68 00 10 00 00       	push   $0x1000
4155c8:	e8 75 51 ff ff       	call   0x40a742
4155cd:	8b f0                	mov    %eax,%esi
4155cf:	59                   	pop    %ecx
4155d0:	59                   	pop    %ecx
4155d1:	85 f6                	test   %esi,%esi
4155d3:	75 0f                	jne    0x4155e4
4155d5:	6a 0c                	push   $0xc
4155d7:	5b                   	pop    %ebx
4155d8:	c6 47 1c 01          	movb   $0x1,0x1c(%edi)
4155dc:	89 5f 18             	mov    %ebx,0x18(%edi)
4155df:	e9 92 00 00 00       	jmp    0x415676
4155e4:	68 00 80 00 00       	push   $0x8000
4155e9:	53                   	push   %ebx
4155ea:	e8 ef 47 ff ff       	call   0x409dde
4155ef:	59                   	pop    %ecx
4155f0:	59                   	pop    %ecx
4155f1:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
4155f4:	89 45 f4             	mov    %eax,-0xc(%ebp)
4155f7:	8b 45 e8             	mov    -0x18(%ebp),%eax
4155fa:	85 c0                	test   %eax,%eax
4155fc:	7c 0f                	jl     0x41560d
4155fe:	7f 08                	jg     0x415608
415600:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
415606:	72 05                	jb     0x41560d
415608:	b9 00 10 00 00       	mov    $0x1000,%ecx
41560d:	57                   	push   %edi
41560e:	51                   	push   %ecx
41560f:	56                   	push   %esi
415610:	53                   	push   %ebx
415611:	e8 be 64 ff ff       	call   0x40bad4
415616:	83 c4 10             	add    $0x10,%esp
415619:	83 f8 ff             	cmp    $0xffffffff,%eax
41561c:	74 34                	je     0x415652
41561e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
415621:	99                   	cltd
415622:	2b c8                	sub    %eax,%ecx
415624:	8b 45 f8             	mov    -0x8(%ebp),%eax
415627:	89 4d fc             	mov    %ecx,-0x4(%ebp)
41562a:	1b c2                	sbb    %edx,%eax
41562c:	89 45 f8             	mov    %eax,-0x8(%ebp)
41562f:	85 c0                	test   %eax,%eax
415631:	7f d5                	jg     0x415608
415633:	7c 04                	jl     0x415639
415635:	85 c9                	test   %ecx,%ecx
415637:	75 c1                	jne    0x4155fa
415639:	ff 75 f4             	push   -0xc(%ebp)
41563c:	53                   	push   %ebx
41563d:	e8 9c 47 ff ff       	call   0x409dde
415642:	56                   	push   %esi
415643:	e8 57 51 ff ff       	call   0x40a79f
415648:	83 c4 0c             	add    $0xc,%esp
41564b:	33 db                	xor    %ebx,%ebx
41564d:	e9 90 00 00 00       	jmp    0x4156e2
415652:	80 7f 24 00          	cmpb   $0x0,0x24(%edi)
415656:	74 11                	je     0x415669
415658:	83 7f 20 05          	cmpl   $0x5,0x20(%edi)
41565c:	75 0b                	jne    0x415669
41565e:	c6 47 1c 01          	movb   $0x1,0x1c(%edi)
415662:	c7 47 18 0d 00 00 00 	movl   $0xd,0x18(%edi)
415669:	80 7f 1c 00          	cmpb   $0x0,0x1c(%edi)
41566d:	74 05                	je     0x415674
41566f:	8b 5f 18             	mov    0x18(%edi),%ebx
415672:	eb 02                	jmp    0x415676
415674:	33 db                	xor    %ebx,%ebx
415676:	56                   	push   %esi
415677:	e8 23 51 ff ff       	call   0x40a79f
41567c:	59                   	pop    %ecx
41567d:	eb 63                	jmp    0x4156e2
41567f:	85 c9                	test   %ecx,%ecx
415681:	7f c8                	jg     0x41564b
415683:	7c 04                	jl     0x415689
415685:	85 c0                	test   %eax,%eax
415687:	73 c2                	jae    0x41564b
415689:	6a 00                	push   $0x0
41568b:	ff 75 10             	push   0x10(%ebp)
41568e:	ff 75 0c             	push   0xc(%ebp)
415691:	53                   	push   %ebx
415692:	e8 a8 b7 ff ff       	call   0x410e3f
415697:	23 c2                	and    %edx,%eax
415699:	83 c4 10             	add    $0x10,%esp
41569c:	83 f8 ff             	cmp    $0xffffffff,%eax
41569f:	75 08                	jne    0x4156a9
4156a1:	80 7f 1c 00          	cmpb   $0x0,0x1c(%edi)
4156a5:	74 a4                	je     0x41564b
4156a7:	eb 31                	jmp    0x4156da
4156a9:	53                   	push   %ebx
4156aa:	e8 4c a2 ff ff       	call   0x40f8fb
4156af:	59                   	pop    %ecx
4156b0:	50                   	push   %eax
4156b1:	ff 15 04 90 41 00    	call   *0x419004
4156b7:	85 c0                	test   %eax,%eax
4156b9:	75 90                	jne    0x41564b
4156bb:	ff 15 28 90 41 00    	call   *0x419028
4156c1:	6a 0d                	push   $0xd
4156c3:	c6 47 24 01          	movb   $0x1,0x24(%edi)
4156c7:	89 47 20             	mov    %eax,0x20(%edi)
4156ca:	5b                   	pop    %ebx
4156cb:	c6 47 1c 01          	movb   $0x1,0x1c(%edi)
4156cf:	89 5f 18             	mov    %ebx,0x18(%edi)
4156d2:	eb 0e                	jmp    0x4156e2
4156d4:	80 7f 1c 00          	cmpb   $0x0,0x1c(%edi)
4156d8:	74 05                	je     0x4156df
4156da:	8b 5f 18             	mov    0x18(%edi),%ebx
4156dd:	eb 03                	jmp    0x4156e2
4156df:	6a 16                	push   $0x16
4156e1:	5b                   	pop    %ebx
4156e2:	6a 00                	push   $0x0
4156e4:	ff 75 d8             	push   -0x28(%ebp)
4156e7:	ff 75 d4             	push   -0x2c(%ebp)
4156ea:	ff 75 ec             	push   -0x14(%ebp)
4156ed:	e8 4d b7 ff ff       	call   0x410e3f
4156f2:	83 c4 10             	add    $0x10,%esp
4156f5:	8b c3                	mov    %ebx,%eax
4156f7:	5f                   	pop    %edi
4156f8:	5e                   	pop    %esi
4156f9:	5b                   	pop    %ebx
4156fa:	c9                   	leave
4156fb:	c3                   	ret
4156fc:	8b ff                	mov    %edi,%edi
4156fe:	55                   	push   %ebp
4156ff:	8b ec                	mov    %esp,%ebp
415701:	56                   	push   %esi
415702:	e8 d1 05 00 00       	call   0x415cd8
415707:	8b 75 08             	mov    0x8(%ebp),%esi
41570a:	89 06                	mov    %eax,(%esi)
41570c:	e8 47 06 00 00       	call   0x415d58
415711:	89 46 04             	mov    %eax,0x4(%esi)
415714:	33 c0                	xor    %eax,%eax
415716:	5e                   	pop    %esi
415717:	5d                   	pop    %ebp
415718:	c3                   	ret
415719:	8b ff                	mov    %edi,%edi
41571b:	55                   	push   %ebp
41571c:	8b ec                	mov    %esp,%ebp
41571e:	51                   	push   %ecx
41571f:	51                   	push   %ecx
415720:	56                   	push   %esi
415721:	8b 75 08             	mov    0x8(%ebp),%esi
415724:	ff 36                	push   (%esi)
415726:	e8 d7 06 00 00       	call   0x415e02
41572b:	ff 76 04             	push   0x4(%esi)
41572e:	e8 4a 07 00 00       	call   0x415e7d
415733:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
415737:	8d 45 f8             	lea    -0x8(%ebp),%eax
41573a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
41573e:	50                   	push   %eax
41573f:	e8 b8 ff ff ff       	call   0x4156fc
415744:	83 c4 0c             	add    $0xc,%esp
415747:	85 c0                	test   %eax,%eax
415749:	75 14                	jne    0x41575f
41574b:	8b 06                	mov    (%esi),%eax
41574d:	3b 45 f8             	cmp    -0x8(%ebp),%eax
415750:	75 0d                	jne    0x41575f
415752:	8b 4e 04             	mov    0x4(%esi),%ecx
415755:	33 c0                	xor    %eax,%eax
415757:	3b 4d fc             	cmp    -0x4(%ebp),%ecx
41575a:	0f 95 c0             	setne  %al
41575d:	eb 03                	jmp    0x415762
41575f:	33 c0                	xor    %eax,%eax
415761:	40                   	inc    %eax
415762:	5e                   	pop    %esi
415763:	c9                   	leave
415764:	c3                   	ret
415765:	8b ff                	mov    %edi,%edi
415767:	55                   	push   %ebp
415768:	8b ec                	mov    %esp,%ebp
41576a:	51                   	push   %ecx
41576b:	51                   	push   %ecx
41576c:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
415770:	8d 45 f8             	lea    -0x8(%ebp),%eax
415773:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
415777:	50                   	push   %eax
415778:	e8 7f ff ff ff       	call   0x4156fc
41577d:	59                   	pop    %ecx
41577e:	85 c0                	test   %eax,%eax
415780:	75 2b                	jne    0x4157ad
415782:	8b 45 08             	mov    0x8(%ebp),%eax
415785:	8b 55 f8             	mov    -0x8(%ebp),%edx
415788:	8b 4d fc             	mov    -0x4(%ebp),%ecx
41578b:	89 10                	mov    %edx,(%eax)
41578d:	83 ca 1f             	or     $0x1f,%edx
415790:	89 48 04             	mov    %ecx,0x4(%eax)
415793:	8d 45 f8             	lea    -0x8(%ebp),%eax
415796:	50                   	push   %eax
415797:	89 55 f8             	mov    %edx,-0x8(%ebp)
41579a:	e8 7a ff ff ff       	call   0x415719
41579f:	59                   	pop    %ecx
4157a0:	85 c0                	test   %eax,%eax
4157a2:	75 09                	jne    0x4157ad
4157a4:	e8 40 ae ff ff       	call   0x4105e9
4157a9:	33 c0                	xor    %eax,%eax
4157ab:	c9                   	leave
4157ac:	c3                   	ret
4157ad:	33 c0                	xor    %eax,%eax
4157af:	40                   	inc    %eax
4157b0:	c9                   	leave
4157b1:	c3                   	ret
4157b2:	cc                   	int3
4157b3:	cc                   	int3
4157b4:	cc                   	int3
4157b5:	cc                   	int3
4157b6:	cc                   	int3
4157b7:	cc                   	int3
4157b8:	cc                   	int3
4157b9:	cc                   	int3
4157ba:	cc                   	int3
4157bb:	cc                   	int3
4157bc:	cc                   	int3
4157bd:	cc                   	int3
4157be:	cc                   	int3
4157bf:	cc                   	int3
4157c0:	83 3d 74 25 42 00 00 	cmpl   $0x0,0x422574
4157c7:	74 32                	je     0x4157fb
4157c9:	83 ec 08             	sub    $0x8,%esp
4157cc:	0f ae 5c 24 04       	stmxcsr 0x4(%esp)
4157d1:	8b 44 24 04          	mov    0x4(%esp),%eax
4157d5:	25 80 7f 00 00       	and    $0x7f80,%eax
4157da:	3d 80 1f 00 00       	cmp    $0x1f80,%eax
4157df:	75 0f                	jne    0x4157f0
4157e1:	d9 3c 24             	fnstcw (%esp)
4157e4:	66 8b 04 24          	mov    (%esp),%ax
4157e8:	66 83 e0 7f          	and    $0x7f,%ax
4157ec:	66 83 f8 7f          	cmp    $0x7f,%ax
4157f0:	8d 64 24 08          	lea    0x8(%esp),%esp
4157f4:	75 05                	jne    0x4157fb
4157f6:	e9 85 08 00 00       	jmp    0x416080
4157fb:	83 ec 0c             	sub    $0xc,%esp
4157fe:	dd 14 24             	fstl   (%esp)
415801:	e8 02 10 00 00       	call   0x416808
415806:	e8 0d 00 00 00       	call   0x415818
41580b:	83 c4 0c             	add    $0xc,%esp
41580e:	c3                   	ret
41580f:	8d 54 24 04          	lea    0x4(%esp),%edx
415813:	e8 ad 0f 00 00       	call   0x4167c5
415818:	52                   	push   %edx
415819:	9b d9 3c 24          	fstcw  (%esp)
41581d:	74 4c                	je     0x41586b
41581f:	8b 44 24 0c          	mov    0xc(%esp),%eax
415823:	66 81 3c 24 7f 02    	cmpw   $0x27f,(%esp)
415829:	74 06                	je     0x415831
41582b:	d9 2d 88 e4 41 00    	fldcw  0x41e488
415831:	a9 00 00 f0 7f       	test   $0x7ff00000,%eax
415836:	74 5e                	je     0x415896
415838:	a9 00 00 00 80       	test   $0x80000000,%eax
41583d:	75 41                	jne    0x415880
41583f:	d9 ec                	fldlg2
415841:	d9 c9                	fxch   %st(1)
415843:	d9 f1                	fyl2x
415845:	83 3d 5c 25 42 00 00 	cmpl   $0x0,0x42255c
41584c:	0f 85 cc 0f 00 00    	jne    0x41681e
415852:	8d 0d 80 e2 41 00    	lea    0x41e280,%ecx
415858:	ba 1b 00 00 00       	mov    $0x1b,%edx
41585d:	e9 c9 0f 00 00       	jmp    0x41682b
415862:	a9 00 00 00 80       	test   $0x80000000,%eax
415867:	75 17                	jne    0x415880
415869:	eb d4                	jmp    0x41583f
41586b:	a9 ff ff 0f 00       	test   $0xfffff,%eax
415870:	75 1d                	jne    0x41588f
415872:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
415877:	75 16                	jne    0x41588f
415879:	25 00 00 00 80       	and    $0x80000000,%eax
41587e:	74 c5                	je     0x415845
415880:	dd d8                	fstp   %st(0)
415882:	db 2d 40 e4 41 00    	fldt   0x41e440
415888:	b8 01 00 00 00       	mov    $0x1,%eax
41588d:	eb 22                	jmp    0x4158b1
41588f:	e8 18 0f 00 00       	call   0x4167ac
415894:	eb 1b                	jmp    0x4158b1
415896:	a9 ff ff 0f 00       	test   $0xfffff,%eax
41589b:	75 c5                	jne    0x415862
41589d:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
4158a2:	75 be                	jne    0x415862
4158a4:	dd d8                	fstp   %st(0)
4158a6:	db 2d ea e3 41 00    	fldt   0x41e3ea
4158ac:	b8 02 00 00 00       	mov    $0x2,%eax
4158b1:	83 3d 5c 25 42 00 00 	cmpl   $0x0,0x42255c
4158b8:	0f 85 60 0f 00 00    	jne    0x41681e
4158be:	8d 0d 80 e2 41 00    	lea    0x41e280,%ecx
4158c4:	ba 1b 00 00 00       	mov    $0x1b,%edx