40ca9a:	3d 80 1f 00 00       	cmp    $0x1f80,%eax
40ca9f:	75 0f                	jne    0x40cab0
40caa1:	d9 3c 24             	fnstcw (%esp)
40caa4:	66 8b 04 24          	mov    (%esp),%ax
40caa8:	66 83 e0 7f          	and    $0x7f,%ax
40caac:	66 83 f8 7f          	cmp    $0x7f,%ax
40cab0:	8d 64 24 08          	lea    0x8(%esp),%esp
40cab4:	75 05                	jne    0x40cabb
40cab6:	e9 15 09 00 00       	jmp    0x40d3d0
40cabb:	83 ec 0c             	sub    $0xc,%esp
40cabe:	dd 14 24             	fstl   (%esp)
40cac1:	e8 92 10 00 00       	call   0x40db58
40cac6:	e8 0d 00 00 00       	call   0x40cad8
40cacb:	83 c4 0c             	add    $0xc,%esp
40cace:	c3                   	ret
40cacf:	8d 54 24 04          	lea    0x4(%esp),%edx
40cad3:	e8 3d 10 00 00       	call   0x40db15
40cad8:	52                   	push   %edx
40cad9:	9b d9 3c 24          	fstcw  (%esp)
40cadd:	74 4c                	je     0x40cb2b
40cadf:	8b 44 24 0c          	mov    0xc(%esp),%eax
40cae3:	66 81 3c 24 7f 02    	cmpw   $0x27f,(%esp)
40cae9:	74 06                	je     0x40caf1
40caeb:	d9 2d c8 32 41 00    	fldcw  0x4132c8
40caf1:	a9 00 00 f0 7f       	test   $0x7ff00000,%eax
40caf6:	74 5e                	je     0x40cb56
40caf8:	a9 00 00 00 80       	test   $0x80000000,%eax
40cafd:	75 41                	jne    0x40cb40
40caff:	d9 ec                	fldlg2
40cb01:	d9 c9                	fxch   %st(1)
40cb03:	d9 f1                	fyl2x
40cb05:	83 3d a0 73 41 00 00 	cmpl   $0x0,0x4173a0
40cb0c:	0f 85 5c 10 00 00    	jne    0x40db6e
40cb12:	8d 0d b0 30 41 00    	lea    0x4130b0,%ecx
40cb18:	ba 1b 00 00 00       	mov    $0x1b,%edx
40cb1d:	e9 59 10 00 00       	jmp    0x40db7b
40cb22:	a9 00 00 00 80       	test   $0x80000000,%eax
40cb27:	75 17                	jne    0x40cb40
40cb29:	eb d4                	jmp    0x40caff
40cb2b:	a9 ff ff 0f 00       	test   $0xfffff,%eax
40cb30:	75 1d                	jne    0x40cb4f
40cb32:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
40cb37:	75 16                	jne    0x40cb4f
40cb39:	25 00 00 00 80       	and    $0x80000000,%eax
40cb3e:	74 c5                	je     0x40cb05
40cb40:	dd d8                	fstp   %st(0)
40cb42:	db 2d 80 32 41 00    	fldt   0x413280
40cb48:	b8 01 00 00 00       	mov    $0x1,%eax
40cb4d:	eb 22                	jmp    0x40cb71
40cb4f:	e8 a8 0f 00 00       	call   0x40dafc
40cb54:	eb 1b                	jmp    0x40cb71
40cb56:	a9 ff ff 0f 00       	test   $0xfffff,%eax
40cb5b:	75 c5                	jne    0x40cb22
40cb5d:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
40cb62:	75 be                	jne    0x40cb22
40cb64:	dd d8                	fstp   %st(0)
40cb66:	db 2d 2a 32 41 00    	fldt   0x41322a
40cb6c:	b8 02 00 00 00       	mov    $0x2,%eax
40cb71:	83 3d a0 73 41 00 00 	cmpl   $0x0,0x4173a0
40cb78:	0f 85 f0 0f 00 00    	jne    0x40db6e
40cb7e:	8d 0d b0 30 41 00    	lea    0x4130b0,%ecx
40cb84:	ba 1b 00 00 00       	mov    $0x1b,%edx
40cb89:	e8 e9 10 00 00       	call   0x40dc77
40cb8e:	5a                   	pop    %edx
40cb8f:	c3                   	ret
40cb90:	83 3d bc 73 41 00 00 	cmpl   $0x0,0x4173bc
40cb97:	0f 84 0a 13 00 00    	je     0x40dea7
40cb9d:	83 ec 08             	sub    $0x8,%esp
40cba0:	0f ae 5c 24 04       	stmxcsr 0x4(%esp)
40cba5:	8b 44 24 04          	mov    0x4(%esp),%eax
40cba9:	25 80 7f 00 00       	and    $0x7f80,%eax
40cbae:	3d 80 1f 00 00       	cmp    $0x1f80,%eax
40cbb3:	75 0f                	jne    0x40cbc4
40cbb5:	d9 3c 24             	fnstcw (%esp)
40cbb8:	66 8b 04 24          	mov    (%esp),%ax
40cbbc:	66 83 e0 7f          	and    $0x7f,%ax
40cbc0:	66 83 f8 7f          	cmp    $0x7f,%ax
40cbc4:	8d 64 24 08          	lea    0x8(%esp),%esp
40cbc8:	0f 85 d9 12 00 00    	jne    0x40dea7
40cbce:	eb 00                	jmp    0x40cbd0
40cbd0:	f3 0f 7e 44 24 04    	movq   0x4(%esp),%xmm0
40cbd6:	66 0f 28 15 d0 30 41 	movapd 0x4130d0,%xmm2
40cbdd:	00
40cbde:	66 0f 28 c8          	movapd %xmm0,%xmm1
40cbe2:	66 0f 28 f8          	movapd %xmm0,%xmm7
40cbe6:	66 0f 73 d0 34       	psrlq  $0x34,%xmm0
40cbeb:	66 0f 7e c0          	movd   %xmm0,%eax
40cbef:	66 0f 54 05 f0 30 41 	andpd  0x4130f0,%xmm0
40cbf6:	00
40cbf7:	66 0f fa d0          	psubd  %xmm0,%xmm2
40cbfb:	66 0f d3 ca          	psrlq  %xmm2,%xmm1
40cbff:	a9 00 08 00 00       	test   $0x800,%eax
40cc04:	74 4c                	je     0x40cc52
40cc06:	3d ff 0b 00 00       	cmp    $0xbff,%eax
40cc0b:	7c 7d                	jl     0x40cc8a
40cc0d:	66 0f f3 ca          	psllq  %xmm2,%xmm1
40cc11:	3d 32 0c 00 00       	cmp    $0xc32,%eax
40cc16:	7f 0b                	jg     0x40cc23
40cc18:	66 0f d6 4c 24 04    	movq   %xmm1,0x4(%esp)
40cc1e:	dd 44 24 04          	fldl   0x4(%esp)
40cc22:	c3                   	ret
40cc23:	66 0f 2e ff          	ucomisd %xmm7,%xmm7
40cc27:	7b 24                	jnp    0x40cc4d
40cc29:	ba ec 03 00 00       	mov    $0x3ec,%edx
40cc2e:	83 ec 10             	sub    $0x10,%esp
40cc31:	89 54 24 0c          	mov    %edx,0xc(%esp)
40cc35:	8b d4                	mov    %esp,%edx
40cc37:	83 c2 14             	add    $0x14,%edx
40cc3a:	89 54 24 08          	mov    %edx,0x8(%esp)
40cc3e:	89 54 24 04          	mov    %edx,0x4(%esp)
40cc42:	89 14 24             	mov    %edx,(%esp)
40cc45:	e8 69 10 00 00       	call   0x40dcb3
40cc4a:	83 c4 10             	add    $0x10,%esp
40cc4d:	dd 44 24 04          	fldl   0x4(%esp)
40cc51:	c3                   	ret
40cc52:	f3 0f 7e 44 24 04    	movq   0x4(%esp),%xmm0
40cc58:	66 0f f3 ca          	psllq  %xmm2,%xmm1
40cc5c:	66 0f 28 d8          	movapd %xmm0,%xmm3
40cc60:	66 0f c2 c1 06       	cmpnlepd %xmm1,%xmm0
40cc65:	3d ff 03 00 00       	cmp    $0x3ff,%eax
40cc6a:	7c 25                	jl     0x40cc91
40cc6c:	3d 32 04 00 00       	cmp    $0x432,%eax
40cc71:	7f b0                	jg     0x40cc23
40cc73:	66 0f 54 05 c0 30 41 	andpd  0x4130c0,%xmm0
40cc7a:	00
40cc7b:	f2 0f 58 c8          	addsd  %xmm0,%xmm1
40cc7f:	66 0f d6 4c 24 04    	movq   %xmm1,0x4(%esp)
40cc85:	dd 44 24 04          	fldl   0x4(%esp)
40cc89:	c3                   	ret
40cc8a:	dd 05 00 31 41 00    	fldl   0x413100
40cc90:	c3                   	ret
40cc91:	66 0f c2 1d e0 30 41 	cmpnlepd 0x4130e0,%xmm3
40cc98:	00 06
40cc9a:	66 0f 54 1d c0 30 41 	andpd  0x4130c0,%xmm3
40cca1:	00
40cca2:	66 0f d6 5c 24 04    	movq   %xmm3,0x4(%esp)
40cca8:	dd 44 24 04          	fldl   0x4(%esp)
40ccac:	c3                   	ret
40ccad:	8b ff                	mov    %edi,%edi
40ccaf:	55                   	push   %ebp
40ccb0:	8b ec                	mov    %esp,%ebp
40ccb2:	53                   	push   %ebx
40ccb3:	56                   	push   %esi
40ccb4:	ba 40 80 00 00       	mov    $0x8040,%edx
40ccb9:	33 f6                	xor    %esi,%esi
40ccbb:	57                   	push   %edi
40ccbc:	8b 7d 08             	mov    0x8(%ebp),%edi
40ccbf:	8b c7                	mov    %edi,%eax
40ccc1:	23 c2                	and    %edx,%eax
40ccc3:	8d 4a c0             	lea    -0x40(%edx),%ecx
40ccc6:	66 3b c1             	cmp    %cx,%ax
40ccc9:	75 07                	jne    0x40ccd2
40cccb:	bb 00 0c 00 00       	mov    $0xc00,%ebx
40ccd0:	eb 19                	jmp    0x40cceb
40ccd2:	66 83 f8 40          	cmp    $0x40,%ax
40ccd6:	75 07                	jne    0x40ccdf
40ccd8:	bb 00 08 00 00       	mov    $0x800,%ebx
40ccdd:	eb 0c                	jmp    0x40cceb
40ccdf:	bb 00 04 00 00       	mov    $0x400,%ebx
40cce4:	66 3b c2             	cmp    %dx,%ax
40cce7:	74 02                	je     0x40cceb
40cce9:	8b de                	mov    %esi,%ebx
40cceb:	8b c7                	mov    %edi,%eax
40cced:	b9 00 60 00 00       	mov    $0x6000,%ecx
40ccf2:	23 c1                	and    %ecx,%eax
40ccf4:	74 25                	je     0x40cd1b
40ccf6:	3d 00 20 00 00       	cmp    $0x2000,%eax
40ccfb:	74 19                	je     0x40cd16
40ccfd:	3d 00 40 00 00       	cmp    $0x4000,%eax
40cd02:	74 0b                	je     0x40cd0f
40cd04:	3b c1                	cmp    %ecx,%eax
40cd06:	75 13                	jne    0x40cd1b
40cd08:	be 00 03 00 00       	mov    $0x300,%esi
40cd0d:	eb 0c                	jmp    0x40cd1b
40cd0f:	be 00 02 00 00       	mov    $0x200,%esi
40cd14:	eb 05                	jmp    0x40cd1b
40cd16:	be 00 01 00 00       	mov    $0x100,%esi
40cd1b:	8b d7                	mov    %edi,%edx
40cd1d:	b9 00 04 00 00       	mov    $0x400,%ecx
40cd22:	c1 ea 02             	shr    $0x2,%edx
40cd25:	8b c7                	mov    %edi,%eax
40cd27:	25 00 08 00 00       	and    $0x800,%eax
40cd2c:	23 d1                	and    %ecx,%edx
40cd2e:	0b d0                	or     %eax,%edx
40cd30:	8b c7                	mov    %edi,%eax
40cd32:	23 c1                	and    %ecx,%eax
40cd34:	c1 ea 02             	shr    $0x2,%edx
40cd37:	0b c2                	or     %edx,%eax
40cd39:	8b cf                	mov    %edi,%ecx
40cd3b:	c1 e8 02             	shr    $0x2,%eax
40cd3e:	81 e1 00 02 00 00    	and    $0x200,%ecx
40cd44:	0b c1                	or     %ecx,%eax
40cd46:	81 e7 80 01 00 00    	and    $0x180,%edi
40cd4c:	c1 e8 03             	shr    $0x3,%eax
40cd4f:	0b c7                	or     %edi,%eax
40cd51:	c1 e8 03             	shr    $0x3,%eax
40cd54:	0b c3                	or     %ebx,%eax
40cd56:	5f                   	pop    %edi
40cd57:	0b c6                	or     %esi,%eax
40cd59:	5e                   	pop    %esi
40cd5a:	5b                   	pop    %ebx
40cd5b:	5d                   	pop    %ebp
40cd5c:	c3                   	ret
40cd5d:	8b ff                	mov    %edi,%edi
40cd5f:	55                   	push   %ebp
40cd60:	8b ec                	mov    %esp,%ebp
40cd62:	51                   	push   %ecx
40cd63:	53                   	push   %ebx
40cd64:	56                   	push   %esi
40cd65:	57                   	push   %edi
40cd66:	8b 7d 08             	mov    0x8(%ebp),%edi
40cd69:	ba 00 10 00 00       	mov    $0x1000,%edx
40cd6e:	0f b7 c7             	movzwl %di,%eax
40cd71:	8b d8                	mov    %eax,%ebx
40cd73:	89 55 fc             	mov    %edx,-0x4(%ebp)
40cd76:	23 da                	and    %edx,%ebx
40cd78:	8b c8                	mov    %eax,%ecx
40cd7a:	c1 e3 02             	shl    $0x2,%ebx
40cd7d:	ba 00 02 00 00       	mov    $0x200,%edx
40cd82:	6a 00                	push   $0x0
40cd84:	5e                   	pop    %esi
40cd85:	81 e1 00 03 00 00    	and    $0x300,%ecx
40cd8b:	74 09                	je     0x40cd96
40cd8d:	3b ca                	cmp    %edx,%ecx
40cd8f:	74 0c                	je     0x40cd9d
40cd91:	89 75 fc             	mov    %esi,-0x4(%ebp)
40cd94:	eb 07                	jmp    0x40cd9d
40cd96:	c7 45 fc 00 20 00 00 	movl   $0x2000,-0x4(%ebp)
40cd9d:	b9 00 0c 00 00       	mov    $0xc00,%ecx
40cda2:	23 c1                	and    %ecx,%eax
40cda4:	74 22                	je     0x40cdc8
40cda6:	3d 00 04 00 00       	cmp    $0x400,%eax
40cdab:	74 16                	je     0x40cdc3
40cdad:	3d 00 08 00 00       	cmp    $0x800,%eax
40cdb2:	74 0b                	je     0x40cdbf
40cdb4:	3b c1                	cmp    %ecx,%eax
40cdb6:	75 10                	jne    0x40cdc8
40cdb8:	be 00 03 00 00       	mov    $0x300,%esi
40cdbd:	eb 09                	jmp    0x40cdc8
40cdbf:	8b f2                	mov    %edx,%esi
40cdc1:	eb 05                	jmp    0x40cdc8
40cdc3:	be 00 01 00 00       	mov    $0x100,%esi
40cdc8:	8b d7                	mov    %edi,%edx
40cdca:	8b c7                	mov    %edi,%eax
40cdcc:	83 e0 10             	and    $0x10,%eax
40cdcf:	c1 ea 02             	shr    $0x2,%edx
40cdd2:	83 e2 08             	and    $0x8,%edx
40cdd5:	8b cf                	mov    %edi,%ecx
40cdd7:	0b d0                	or     %eax,%edx
40cdd9:	83 e1 02             	and    $0x2,%ecx
40cddc:	8b c7                	mov    %edi,%eax
40cdde:	c1 ea 02             	shr    $0x2,%edx
40cde1:	83 e0 08             	and    $0x8,%eax
40cde4:	c1 e1 03             	shl    $0x3,%ecx
40cde7:	0b d0                	or     %eax,%edx
40cde9:	8b c7                	mov    %edi,%eax
40cdeb:	83 e0 04             	and    $0x4,%eax
40cdee:	d1 ea                	shr    $1,%edx
40cdf0:	0b c1                	or     %ecx,%eax
40cdf2:	83 e7 01             	and    $0x1,%edi
40cdf5:	03 c0                	add    %eax,%eax
40cdf7:	c1 e7 04             	shl    $0x4,%edi
40cdfa:	0b c2                	or     %edx,%eax
40cdfc:	0b c7                	or     %edi,%eax
40cdfe:	0b c3                	or     %ebx,%eax
40ce00:	0b 45 fc             	or     -0x4(%ebp),%eax
40ce03:	5f                   	pop    %edi
40ce04:	0b c6                	or     %esi,%eax
40ce06:	5e                   	pop    %esi
40ce07:	5b                   	pop    %ebx
40ce08:	c9                   	leave
40ce09:	c3                   	ret
40ce0a:	8b ff                	mov    %edi,%edi
40ce0c:	55                   	push   %ebp
40ce0d:	8b ec                	mov    %esp,%ebp
40ce0f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ce12:	ba 00 03 00 00       	mov    $0x300,%edx
40ce17:	8b c1                	mov    %ecx,%eax
40ce19:	c1 e9 16             	shr    $0x16,%ecx
40ce1c:	c1 e8 0e             	shr    $0xe,%eax
40ce1f:	23 ca                	and    %edx,%ecx
40ce21:	23 c2                	and    %edx,%eax
40ce23:	3b c1                	cmp    %ecx,%eax
40ce25:	74 03                	je     0x40ce2a
40ce27:	83 c8 ff             	or     $0xffffffff,%eax
40ce2a:	5d                   	pop    %ebp
40ce2b:	c3                   	ret
40ce2c:	8b ff                	mov    %edi,%edi
40ce2e:	55                   	push   %ebp
40ce2f:	8b ec                	mov    %esp,%ebp
40ce31:	83 ec 20             	sub    $0x20,%esp
40ce34:	56                   	push   %esi
40ce35:	57                   	push   %edi
40ce36:	6a 07                	push   $0x7
40ce38:	59                   	pop    %ecx
40ce39:	33 c0                	xor    %eax,%eax
40ce3b:	8d 7d e0             	lea    -0x20(%ebp),%edi
40ce3e:	f3 ab                	rep stos %eax,%es:(%edi)
40ce40:	d9 75 e0             	fnstenv -0x20(%ebp)
40ce43:	d9 65 e0             	fldenv -0x20(%ebp)
40ce46:	8b 45 e0             	mov    -0x20(%ebp),%eax
40ce49:	25 3f 1f 00 00       	and    $0x1f3f,%eax
40ce4e:	50                   	push   %eax
40ce4f:	e8 09 ff ff ff       	call   0x40cd5d
40ce54:	83 3d bc 69 41 00 01 	cmpl   $0x1,0x4169bc
40ce5b:	8b f0                	mov    %eax,%esi
40ce5d:	59                   	pop    %ecx
40ce5e:	7d 04                	jge    0x40ce64
40ce60:	33 c9                	xor    %ecx,%ecx
40ce62:	eb 0d                	jmp    0x40ce71
40ce64:	0f ae 5d fc          	stmxcsr -0x4(%ebp)
40ce68:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ce6b:	81 e1 c0 ff 00 00    	and    $0xffc0,%ecx
40ce71:	51                   	push   %ecx
40ce72:	e8 36 fe ff ff       	call   0x40ccad
40ce77:	59                   	pop    %ecx
40ce78:	8b d0                	mov    %eax,%edx
40ce7a:	8b c8                	mov    %eax,%ecx
40ce7c:	83 e2 3f             	and    $0x3f,%edx
40ce7f:	81 e1 00 ff ff ff    	and    $0xffffff00,%ecx
40ce85:	c1 e2 02             	shl    $0x2,%edx
40ce88:	0b d1                	or     %ecx,%edx
40ce8a:	8b ce                	mov    %esi,%ecx
40ce8c:	c1 e2 06             	shl    $0x6,%edx
40ce8f:	83 e1 3f             	and    $0x3f,%ecx
40ce92:	0b d1                	or     %ecx,%edx
40ce94:	8b ce                	mov    %esi,%ecx
40ce96:	c1 e2 02             	shl    $0x2,%edx
40ce99:	81 e1 00 03 00 00    	and    $0x300,%ecx
40ce9f:	0b d1                	or     %ecx,%edx
40cea1:	c1 e2 0e             	shl    $0xe,%edx
40cea4:	0b c2                	or     %edx,%eax
40cea6:	5f                   	pop    %edi
40cea7:	0b c6                	or     %esi,%eax
40cea9:	5e                   	pop    %esi
40ceaa:	c9                   	leave
40ceab:	c3                   	ret
40ceac:	8b ff                	mov    %edi,%edi
40ceae:	55                   	push   %ebp
40ceaf:	8b ec                	mov    %esp,%ebp
40ceb1:	8b 45 0c             	mov    0xc(%ebp),%eax
40ceb4:	83 20 00             	andl   $0x0,(%eax)
40ceb7:	83 60 04 00          	andl   $0x0,0x4(%eax)
40cebb:	8b 45 08             	mov    0x8(%ebp),%eax
40cebe:	5d                   	pop    %ebp
40cebf:	c3                   	ret
40cec0:	8b ff                	mov    %edi,%edi
40cec2:	55                   	push   %ebp
40cec3:	8b ec                	mov    %esp,%ebp
40cec5:	8b 45 08             	mov    0x8(%ebp),%eax