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
4158c9:	e8 59 10 00 00       	call   0x416927
4158ce:	5a                   	pop    %edx
4158cf:	c3                   	ret
4158d0:	83 3d 74 25 42 00 00 	cmpl   $0x0,0x422574
4158d7:	0f 84 7a 12 00 00    	je     0x416b57
4158dd:	83 ec 08             	sub    $0x8,%esp
4158e0:	0f ae 5c 24 04       	stmxcsr 0x4(%esp)
4158e5:	8b 44 24 04          	mov    0x4(%esp),%eax
4158e9:	25 80 7f 00 00       	and    $0x7f80,%eax
4158ee:	3d 80 1f 00 00       	cmp    $0x1f80,%eax
4158f3:	75 0f                	jne    0x415904
4158f5:	d9 3c 24             	fnstcw (%esp)
4158f8:	66 8b 04 24          	mov    (%esp),%ax
4158fc:	66 83 e0 7f          	and    $0x7f,%ax
415900:	66 83 f8 7f          	cmp    $0x7f,%ax
415904:	8d 64 24 08          	lea    0x8(%esp),%esp
415908:	0f 85 49 12 00 00    	jne    0x416b57
41590e:	eb 00                	jmp    0x415910
415910:	f3 0f 7e 44 24 04    	movq   0x4(%esp),%xmm0
415916:	66 0f 28 15 a0 e2 41 	movapd 0x41e2a0,%xmm2
41591d:	00
41591e:	66 0f 28 c8          	movapd %xmm0,%xmm1
415922:	66 0f 28 f8          	movapd %xmm0,%xmm7
415926:	66 0f 73 d0 34       	psrlq  $0x34,%xmm0
41592b:	66 0f 7e c0          	movd   %xmm0,%eax
41592f:	66 0f 54 05 c0 e2 41 	andpd  0x41e2c0,%xmm0
415936:	00
415937:	66 0f fa d0          	psubd  %xmm0,%xmm2
41593b:	66 0f d3 ca          	psrlq  %xmm2,%xmm1
41593f:	a9 00 08 00 00       	test   $0x800,%eax
415944:	74 4c                	je     0x415992
415946:	3d ff 0b 00 00       	cmp    $0xbff,%eax
41594b:	7c 7d                	jl     0x4159ca
41594d:	66 0f f3 ca          	psllq  %xmm2,%xmm1
415951:	3d 32 0c 00 00       	cmp    $0xc32,%eax
415956:	7f 0b                	jg     0x415963
415958:	66 0f d6 4c 24 04    	movq   %xmm1,0x4(%esp)
41595e:	dd 44 24 04          	fldl   0x4(%esp)
415962:	c3                   	ret
415963:	66 0f 2e ff          	ucomisd %xmm7,%xmm7
415967:	7b 24                	jnp    0x41598d
415969:	ba ec 03 00 00       	mov    $0x3ec,%edx
41596e:	83 ec 10             	sub    $0x10,%esp
415971:	89 54 24 0c          	mov    %edx,0xc(%esp)
415975:	8b d4                	mov    %esp,%edx
415977:	83 c2 14             	add    $0x14,%edx
41597a:	89 54 24 08          	mov    %edx,0x8(%esp)
41597e:	89 54 24 04          	mov    %edx,0x4(%esp)
415982:	89 14 24             	mov    %edx,(%esp)
415985:	e8 d9 0f 00 00       	call   0x416963
41598a:	83 c4 10             	add    $0x10,%esp
41598d:	dd 44 24 04          	fldl   0x4(%esp)
415991:	c3                   	ret
415992:	f3 0f 7e 44 24 04    	movq   0x4(%esp),%xmm0
415998:	66 0f f3 ca          	psllq  %xmm2,%xmm1
41599c:	66 0f 28 d8          	movapd %xmm0,%xmm3
4159a0:	66 0f c2 c1 06       	cmpnlepd %xmm1,%xmm0
4159a5:	3d ff 03 00 00       	cmp    $0x3ff,%eax
4159aa:	7c 25                	jl     0x4159d1
4159ac:	3d 32 04 00 00       	cmp    $0x432,%eax
4159b1:	7f b0                	jg     0x415963
4159b3:	66 0f 54 05 90 e2 41 	andpd  0x41e290,%xmm0
4159ba:	00
4159bb:	f2 0f 58 c8          	addsd  %xmm0,%xmm1
4159bf:	66 0f d6 4c 24 04    	movq   %xmm1,0x4(%esp)
4159c5:	dd 44 24 04          	fldl   0x4(%esp)
4159c9:	c3                   	ret
4159ca:	dd 05 d0 e2 41 00    	fldl   0x41e2d0
4159d0:	c3                   	ret
4159d1:	66 0f c2 1d b0 e2 41 	cmpnlepd 0x41e2b0,%xmm3
4159d8:	00 06
4159da:	66 0f 54 1d 90 e2 41 	andpd  0x41e290,%xmm3
4159e1:	00
4159e2:	66 0f d6 5c 24 04    	movq   %xmm3,0x4(%esp)
4159e8:	dd 44 24 04          	fldl   0x4(%esp)
4159ec:	c3                   	ret
4159ed:	8b ff                	mov    %edi,%edi
4159ef:	55                   	push   %ebp
4159f0:	8b ec                	mov    %esp,%ebp
4159f2:	53                   	push   %ebx
4159f3:	56                   	push   %esi
4159f4:	ba 40 80 00 00       	mov    $0x8040,%edx
4159f9:	33 f6                	xor    %esi,%esi
4159fb:	57                   	push   %edi
4159fc:	8b 7d 08             	mov    0x8(%ebp),%edi
4159ff:	8b c7                	mov    %edi,%eax
415a01:	23 c2                	and    %edx,%eax
415a03:	8d 4a c0             	lea    -0x40(%edx),%ecx
415a06:	66 3b c1             	cmp    %cx,%ax
415a09:	75 07                	jne    0x415a12
415a0b:	bb 00 0c 00 00       	mov    $0xc00,%ebx
415a10:	eb 19                	jmp    0x415a2b
415a12:	66 83 f8 40          	cmp    $0x40,%ax
415a16:	75 07                	jne    0x415a1f
415a18:	bb 00 08 00 00       	mov    $0x800,%ebx
415a1d:	eb 0c                	jmp    0x415a2b
415a1f:	bb 00 04 00 00       	mov    $0x400,%ebx
415a24:	66 3b c2             	cmp    %dx,%ax
415a27:	74 02                	je     0x415a2b
415a29:	8b de                	mov    %esi,%ebx
415a2b:	8b c7                	mov    %edi,%eax
415a2d:	b9 00 60 00 00       	mov    $0x6000,%ecx
415a32:	23 c1                	and    %ecx,%eax
415a34:	74 25                	je     0x415a5b
415a36:	3d 00 20 00 00       	cmp    $0x2000,%eax
415a3b:	74 19                	je     0x415a56
415a3d:	3d 00 40 00 00       	cmp    $0x4000,%eax
415a42:	74 0b                	je     0x415a4f
415a44:	3b c1                	cmp    %ecx,%eax
415a46:	75 13                	jne    0x415a5b
415a48:	be 00 03 00 00       	mov    $0x300,%esi
415a4d:	eb 0c                	jmp    0x415a5b
415a4f:	be 00 02 00 00       	mov    $0x200,%esi
415a54:	eb 05                	jmp    0x415a5b
415a56:	be 00 01 00 00       	mov    $0x100,%esi
415a5b:	8b d7                	mov    %edi,%edx
415a5d:	b9 00 04 00 00       	mov    $0x400,%ecx
415a62:	c1 ea 02             	shr    $0x2,%edx
415a65:	8b c7                	mov    %edi,%eax
415a67:	25 00 08 00 00       	and    $0x800,%eax
415a6c:	23 d1                	and    %ecx,%edx
415a6e:	0b d0                	or     %eax,%edx
415a70:	8b c7                	mov    %edi,%eax
415a72:	23 c1                	and    %ecx,%eax
415a74:	c1 ea 02             	shr    $0x2,%edx
415a77:	0b c2                	or     %edx,%eax
415a79:	8b cf                	mov    %edi,%ecx
415a7b:	c1 e8 02             	shr    $0x2,%eax
415a7e:	81 e1 00 02 00 00    	and    $0x200,%ecx
415a84:	0b c1                	or     %ecx,%eax
415a86:	81 e7 80 01 00 00    	and    $0x180,%edi
415a8c:	c1 e8 03             	shr    $0x3,%eax
415a8f:	0b c7                	or     %edi,%eax
415a91:	c1 e8 03             	shr    $0x3,%eax
415a94:	0b c3                	or     %ebx,%eax
415a96:	5f                   	pop    %edi
415a97:	0b c6                	or     %esi,%eax
415a99:	5e                   	pop    %esi
415a9a:	5b                   	pop    %ebx
415a9b:	5d                   	pop    %ebp
415a9c:	c3                   	ret
415a9d:	8b ff                	mov    %edi,%edi
415a9f:	55                   	push   %ebp
415aa0:	8b ec                	mov    %esp,%ebp
415aa2:	51                   	push   %ecx
415aa3:	53                   	push   %ebx
415aa4:	56                   	push   %esi
415aa5:	57                   	push   %edi
415aa6:	8b 7d 08             	mov    0x8(%ebp),%edi
415aa9:	ba 00 10 00 00       	mov    $0x1000,%edx
415aae:	0f b7 c7             	movzwl %di,%eax
415ab1:	8b d8                	mov    %eax,%ebx
415ab3:	89 55 fc             	mov    %edx,-0x4(%ebp)
415ab6:	23 da                	and    %edx,%ebx
415ab8:	8b c8                	mov    %eax,%ecx
415aba:	c1 e3 02             	shl    $0x2,%ebx
415abd:	ba 00 02 00 00       	mov    $0x200,%edx
415ac2:	6a 00                	push   $0x0
415ac4:	5e                   	pop    %esi
415ac5:	81 e1 00 03 00 00    	and    $0x300,%ecx
415acb:	74 09                	je     0x415ad6
415acd:	3b ca                	cmp    %edx,%ecx
415acf:	74 0c                	je     0x415add
415ad1:	89 75 fc             	mov    %esi,-0x4(%ebp)
415ad4:	eb 07                	jmp    0x415add
415ad6:	c7 45 fc 00 20 00 00 	movl   $0x2000,-0x4(%ebp)
415add:	b9 00 0c 00 00       	mov    $0xc00,%ecx
415ae2:	23 c1                	and    %ecx,%eax
415ae4:	74 22                	je     0x415b08
415ae6:	3d 00 04 00 00       	cmp    $0x400,%eax
415aeb:	74 16                	je     0x415b03
415aed:	3d 00 08 00 00       	cmp    $0x800,%eax
415af2:	74 0b                	je     0x415aff
415af4:	3b c1                	cmp    %ecx,%eax
415af6:	75 10                	jne    0x415b08