40e9b8:	f7 c1 ff ff 0f 00    	test   $0xfffff,%ecx
40e9be:	75 04                	jne    0x40e9c4
40e9c0:	85 d2                	test   %edx,%edx
40e9c2:	74 68                	je     0x40ea2c
40e9c4:	de d9                	fcompp
40e9c6:	be 03 fc ff ff       	mov    $0xfffffc03,%esi
40e9cb:	df e0                	fnstsw %ax
40e9cd:	53                   	push   %ebx
40e9ce:	33 db                	xor    %ebx,%ebx
40e9d0:	f6 c4 41             	test   $0x41,%ah
40e9d3:	75 01                	jne    0x40e9d6
40e9d5:	43                   	inc    %ebx
40e9d6:	f6 45 0e 10          	testb  $0x10,0xe(%ebp)
40e9da:	75 1f                	jne    0x40e9fb
40e9dc:	03 c9                	add    %ecx,%ecx
40e9de:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40e9e1:	85 d2                	test   %edx,%edx
40e9e3:	79 06                	jns    0x40e9eb
40e9e5:	83 c9 01             	or     $0x1,%ecx
40e9e8:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40e9eb:	03 d2                	add    %edx,%edx
40e9ed:	4e                   	dec    %esi
40e9ee:	f6 45 0e 10          	testb  $0x10,0xe(%ebp)
40e9f2:	74 e8                	je     0x40e9dc
40e9f4:	66 8b 7d 0e          	mov    0xe(%ebp),%di
40e9f8:	89 55 08             	mov    %edx,0x8(%ebp)
40e9fb:	b8 ef ff 00 00       	mov    $0xffef,%eax
40ea00:	66 23 f8             	and    %ax,%di
40ea03:	85 db                	test   %ebx,%ebx
40ea05:	0f b7 c7             	movzwl %di,%eax
40ea08:	66 89 7d 0e          	mov    %di,0xe(%ebp)
40ea0c:	5b                   	pop    %ebx
40ea0d:	74 09                	je     0x40ea18
40ea0f:	0d 00 80 00 00       	or     $0x8000,%eax
40ea14:	66 89 45 0e          	mov    %ax,0xe(%ebp)
40ea18:	dd 45 08             	fldl   0x8(%ebp)
40ea1b:	6a 00                	push   $0x0
40ea1d:	51                   	push   %ecx
40ea1e:	51                   	push   %ecx
40ea1f:	dd 1c 24             	fstpl  (%esp)
40ea22:	e8 31 00 00 00       	call   0x40ea58
40ea27:	83 c4 0c             	add    $0xc,%esp
40ea2a:	eb 23                	jmp    0x40ea4f
40ea2c:	6a 00                	push   $0x0
40ea2e:	51                   	push   %ecx
40ea2f:	dd d8                	fstp   %st(0)
40ea31:	51                   	push   %ecx
40ea32:	dd 1c 24             	fstpl  (%esp)
40ea35:	e8 1e 00 00 00       	call   0x40ea58
40ea3a:	0f b7 f7             	movzwl %di,%esi
40ea3d:	83 c4 0c             	add    $0xc,%esp
40ea40:	c1 ee 04             	shr    $0x4,%esi
40ea43:	81 e6 ff 07 00 00    	and    $0x7ff,%esi
40ea49:	81 ee fe 03 00 00    	sub    $0x3fe,%esi
40ea4f:	5f                   	pop    %edi
40ea50:	8b 45 10             	mov    0x10(%ebp),%eax
40ea53:	89 30                	mov    %esi,(%eax)
40ea55:	5e                   	pop    %esi
40ea56:	5d                   	pop    %ebp
40ea57:	c3                   	ret
40ea58:	8b ff                	mov    %edi,%edi
40ea5a:	55                   	push   %ebp
40ea5b:	8b ec                	mov    %esp,%ebp
40ea5d:	51                   	push   %ecx
40ea5e:	51                   	push   %ecx
40ea5f:	8b 4d 10             	mov    0x10(%ebp),%ecx
40ea62:	0f b7 45 0e          	movzwl 0xe(%ebp),%eax
40ea66:	dd 45 08             	fldl   0x8(%ebp)
40ea69:	25 0f 80 00 00       	and    $0x800f,%eax
40ea6e:	dd 5d f8             	fstpl  -0x8(%ebp)
40ea71:	8d 89 fe 03 00 00    	lea    0x3fe(%ecx),%ecx
40ea77:	c1 e1 04             	shl    $0x4,%ecx
40ea7a:	0b c8                	or     %eax,%ecx
40ea7c:	66 89 4d fe          	mov    %cx,-0x2(%ebp)
40ea80:	dd 45 f8             	fldl   -0x8(%ebp)
40ea83:	c9                   	leave
40ea84:	c3                   	ret
40ea85:	8b ff                	mov    %edi,%edi
40ea87:	55                   	push   %ebp
40ea88:	8b ec                	mov    %esp,%ebp
40ea8a:	81 7d 0c 00 00 f0 7f 	cmpl   $0x7ff00000,0xc(%ebp)
40ea91:	8b 45 08             	mov    0x8(%ebp),%eax
40ea94:	75 07                	jne    0x40ea9d
40ea96:	85 c0                	test   %eax,%eax
40ea98:	75 15                	jne    0x40eaaf
40ea9a:	40                   	inc    %eax
40ea9b:	5d                   	pop    %ebp
40ea9c:	c3                   	ret
40ea9d:	81 7d 0c 00 00 f0 ff 	cmpl   $0xfff00000,0xc(%ebp)
40eaa4:	75 09                	jne    0x40eaaf
40eaa6:	85 c0                	test   %eax,%eax
40eaa8:	75 05                	jne    0x40eaaf
40eaaa:	6a 02                	push   $0x2
40eaac:	58                   	pop    %eax
40eaad:	5d                   	pop    %ebp
40eaae:	c3                   	ret
40eaaf:	66 8b 4d 0e          	mov    0xe(%ebp),%cx
40eab3:	ba f8 7f 00 00       	mov    $0x7ff8,%edx
40eab8:	66 23 ca             	and    %dx,%cx
40eabb:	66 3b ca             	cmp    %dx,%cx
40eabe:	75 04                	jne    0x40eac4
40eac0:	6a 03                	push   $0x3
40eac2:	eb e8                	jmp    0x40eaac
40eac4:	ba f0 7f 00 00       	mov    $0x7ff0,%edx
40eac9:	66 3b ca             	cmp    %dx,%cx
40eacc:	75 16                	jne    0x40eae4
40eace:	f7 45 0c ff ff 07 00 	testl  $0x7ffff,0xc(%ebp)
40ead5:	75 09                	jne    0x40eae0
40ead7:	f7 d8                	neg    %eax
40ead9:	1b c0                	sbb    %eax,%eax
40eadb:	83 e0 04             	and    $0x4,%eax
40eade:	5d                   	pop    %ebp
40eadf:	c3                   	ret
40eae0:	6a 04                	push   $0x4
40eae2:	eb c8                	jmp    0x40eaac
40eae4:	33 c0                	xor    %eax,%eax
40eae6:	5d                   	pop    %ebp
40eae7:	c3                   	ret
40eae8:	8b ff                	mov    %edi,%edi
40eaea:	55                   	push   %ebp
40eaeb:	8b ec                	mov    %esp,%ebp
40eaed:	66 8b 4d 0e          	mov    0xe(%ebp),%cx
40eaf1:	ba f0 7f 00 00       	mov    $0x7ff0,%edx
40eaf6:	66 8b c1             	mov    %cx,%ax
40eaf9:	66 23 c2             	and    %dx,%ax
40eafc:	66 3b c2             	cmp    %dx,%ax
40eaff:	75 33                	jne    0x40eb34
40eb01:	dd 45 08             	fldl   0x8(%ebp)
40eb04:	51                   	push   %ecx
40eb05:	51                   	push   %ecx
40eb06:	dd 1c 24             	fstpl  (%esp)
40eb09:	e8 77 ff ff ff       	call   0x40ea85
40eb0e:	59                   	pop    %ecx
40eb0f:	59                   	pop    %ecx
40eb10:	83 e8 01             	sub    $0x1,%eax
40eb13:	74 18                	je     0x40eb2d
40eb15:	83 e8 01             	sub    $0x1,%eax
40eb18:	74 0e                	je     0x40eb28
40eb1a:	83 e8 01             	sub    $0x1,%eax
40eb1d:	74 05                	je     0x40eb24
40eb1f:	33 c0                	xor    %eax,%eax
40eb21:	40                   	inc    %eax
40eb22:	5d                   	pop    %ebp
40eb23:	c3                   	ret
40eb24:	6a 02                	push   $0x2
40eb26:	eb 02                	jmp    0x40eb2a
40eb28:	6a 04                	push   $0x4
40eb2a:	58                   	pop    %eax
40eb2b:	5d                   	pop    %ebp
40eb2c:	c3                   	ret
40eb2d:	b8 00 02 00 00       	mov    $0x200,%eax
40eb32:	5d                   	pop    %ebp
40eb33:	c3                   	ret
40eb34:	0f b7 c9             	movzwl %cx,%ecx
40eb37:	81 e1 00 80 00 00    	and    $0x8000,%ecx
40eb3d:	66 85 c0             	test   %ax,%ax
40eb40:	75 1e                	jne    0x40eb60
40eb42:	f7 45 0c ff ff 0f 00 	testl  $0xfffff,0xc(%ebp)
40eb49:	75 06                	jne    0x40eb51
40eb4b:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40eb4f:	74 0f                	je     0x40eb60
40eb51:	f7 d9                	neg    %ecx
40eb53:	1b c9                	sbb    %ecx,%ecx
40eb55:	83 e1 90             	and    $0xffffff90,%ecx
40eb58:	8d 81 80 00 00 00    	lea    0x80(%ecx),%eax
40eb5e:	5d                   	pop    %ebp
40eb5f:	c3                   	ret
40eb60:	dd 45 08             	fldl   0x8(%ebp)
40eb63:	d9 ee                	fldz
40eb65:	da e9                	fucompp
40eb67:	df e0                	fnstsw %ax
40eb69:	f6 c4 44             	test   $0x44,%ah
40eb6c:	7a 0c                	jp     0x40eb7a
40eb6e:	f7 d9                	neg    %ecx
40eb70:	1b c9                	sbb    %ecx,%ecx
40eb72:	83 e1 e0             	and    $0xffffffe0,%ecx
40eb75:	8d 41 40             	lea    0x40(%ecx),%eax
40eb78:	5d                   	pop    %ebp
40eb79:	c3                   	ret
40eb7a:	f7 d9                	neg    %ecx
40eb7c:	1b c9                	sbb    %ecx,%ecx
40eb7e:	81 e1 08 ff ff ff    	and    $0xffffff08,%ecx
40eb84:	8d 81 00 01 00 00    	lea    0x100(%ecx),%eax
40eb8a:	5d                   	pop    %ebp
40eb8b:	c3                   	ret
40eb8c:	cc                   	int3
40eb8d:	cc                   	int3
40eb8e:	cc                   	int3
40eb8f:	cc                   	int3
40eb90:	55                   	push   %ebp
40eb91:	8b ec                	mov    %esp,%ebp
40eb93:	8b 45 08             	mov    0x8(%ebp),%eax
40eb96:	33 d2                	xor    %edx,%edx
40eb98:	53                   	push   %ebx
40eb99:	56                   	push   %esi
40eb9a:	57                   	push   %edi
40eb9b:	8b 48 3c             	mov    0x3c(%eax),%ecx
40eb9e:	03 c8                	add    %eax,%ecx
40eba0:	0f b7 41 14          	movzwl 0x14(%ecx),%eax
40eba4:	0f b7 59 06          	movzwl 0x6(%ecx),%ebx
40eba8:	83 c0 18             	add    $0x18,%eax
40ebab:	03 c1                	add    %ecx,%eax
40ebad:	85 db                	test   %ebx,%ebx
40ebaf:	74 1b                	je     0x40ebcc
40ebb1:	8b 7d 0c             	mov    0xc(%ebp),%edi
40ebb4:	8b 70 0c             	mov    0xc(%eax),%esi
40ebb7:	3b fe                	cmp    %esi,%edi
40ebb9:	72 09                	jb     0x40ebc4
40ebbb:	8b 48 08             	mov    0x8(%eax),%ecx
40ebbe:	03 ce                	add    %esi,%ecx
40ebc0:	3b f9                	cmp    %ecx,%edi
40ebc2:	72 0a                	jb     0x40ebce
40ebc4:	42                   	inc    %edx
40ebc5:	83 c0 28             	add    $0x28,%eax
40ebc8:	3b d3                	cmp    %ebx,%edx
40ebca:	72 e8                	jb     0x40ebb4
40ebcc:	33 c0                	xor    %eax,%eax
40ebce:	5f                   	pop    %edi
40ebcf:	5e                   	pop    %esi
40ebd0:	5b                   	pop    %ebx
40ebd1:	5d                   	pop    %ebp
40ebd2:	c3                   	ret
40ebd3:	cc                   	int3
40ebd4:	cc                   	int3
40ebd5:	cc                   	int3
40ebd6:	cc                   	int3
40ebd7:	cc                   	int3
40ebd8:	cc                   	int3
40ebd9:	cc                   	int3
40ebda:	cc                   	int3
40ebdb:	cc                   	int3
40ebdc:	cc                   	int3
40ebdd:	cc                   	int3
40ebde:	cc                   	int3
40ebdf:	cc                   	int3
40ebe0:	55                   	push   %ebp
40ebe1:	8b ec                	mov    %esp,%ebp
40ebe3:	6a fe                	push   $0xfffffffe
40ebe5:	68 78 4d 41 00       	push   $0x414d78
40ebea:	68 10 3e 40 00       	push   $0x403e10
40ebef:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40ebf5:	50                   	push   %eax
40ebf6:	83 ec 08             	sub    $0x8,%esp
40ebf9:	53                   	push   %ebx
40ebfa:	56                   	push   %esi
40ebfb:	57                   	push   %edi
40ebfc:	a1 14 60 41 00       	mov    0x416014,%eax
40ec01:	31 45 f8             	xor    %eax,-0x8(%ebp)
40ec04:	33 c5                	xor    %ebp,%eax
40ec06:	50                   	push   %eax
40ec07:	8d 45 f0             	lea    -0x10(%ebp),%eax
40ec0a:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40ec10:	89 65 e8             	mov    %esp,-0x18(%ebp)
40ec13:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40ec1a:	68 00 00 40 00       	push   $0x400000
40ec1f:	e8 7c 00 00 00       	call   0x40eca0
40ec24:	83 c4 04             	add    $0x4,%esp
40ec27:	85 c0                	test   %eax,%eax
40ec29:	74 54                	je     0x40ec7f
40ec2b:	8b 45 08             	mov    0x8(%ebp),%eax
40ec2e:	2d 00 00 40 00       	sub    $0x400000,%eax
40ec33:	50                   	push   %eax
40ec34:	68 00 00 40 00       	push   $0x400000
40ec39:	e8 52 ff ff ff       	call   0x40eb90
40ec3e:	83 c4 08             	add    $0x8,%esp
40ec41:	85 c0                	test   %eax,%eax
40ec43:	74 3a                	je     0x40ec7f
40ec45:	8b 40 24             	mov    0x24(%eax),%eax
40ec48:	c1 e8 1f             	shr    $0x1f,%eax
40ec4b:	f7 d0                	not    %eax
40ec4d:	83 e0 01             	and    $0x1,%eax
40ec50:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40ec57:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40ec5a:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ec61:	59                   	pop    %ecx
40ec62:	5f                   	pop    %edi
40ec63:	5e                   	pop    %esi
40ec64:	5b                   	pop    %ebx
40ec65:	8b e5                	mov    %ebp,%esp
40ec67:	5d                   	pop    %ebp
40ec68:	c3                   	ret
40ec69:	8b 45 ec             	mov    -0x14(%ebp),%eax
40ec6c:	8b 00                	mov    (%eax),%eax
40ec6e:	33 c9                	xor    %ecx,%ecx
40ec70:	81 38 05 00 00 c0    	cmpl   $0xc0000005,(%eax)
40ec76:	0f 94 c1             	sete   %cl
40ec79:	8b c1                	mov    %ecx,%eax
40ec7b:	c3                   	ret
40ec7c:	8b 65 e8             	mov    -0x18(%ebp),%esp
40ec7f:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40ec86:	33 c0                	xor    %eax,%eax
40ec88:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40ec8b:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ec92:	59                   	pop    %ecx
40ec93:	5f                   	pop    %edi
40ec94:	5e                   	pop    %esi
40ec95:	5b                   	pop    %ebx
40ec96:	8b e5                	mov    %ebp,%esp
40ec98:	5d                   	pop    %ebp
40ec99:	c3                   	ret
40ec9a:	cc                   	int3
40ec9b:	cc                   	int3
40ec9c:	cc                   	int3
40ec9d:	cc                   	int3
40ec9e:	cc                   	int3
40ec9f:	cc                   	int3
40eca0:	55                   	push   %ebp
40eca1:	8b ec                	mov    %esp,%ebp
40eca3:	8b 45 08             	mov    0x8(%ebp),%eax
40eca6:	b9 4d 5a 00 00       	mov    $0x5a4d,%ecx
40ecab:	66 39 08             	cmp    %cx,(%eax)
40ecae:	75 1d                	jne    0x40eccd
40ecb0:	8b 48 3c             	mov    0x3c(%eax),%ecx
40ecb3:	03 c8                	add    %eax,%ecx
40ecb5:	81 39 50 45 00 00    	cmpl   $0x4550,(%ecx)
40ecbb:	75 10                	jne    0x40eccd
40ecbd:	ba 0b 01 00 00       	mov    $0x10b,%edx
40ecc2:	33 c0                	xor    %eax,%eax
40ecc4:	66 39 51 18          	cmp    %dx,0x18(%ecx)
40ecc8:	0f 94 c0             	sete   %al
40eccb:	5d                   	pop    %ebp
40eccc:	c3                   	ret
40eccd:	33 c0                	xor    %eax,%eax
40eccf:	5d                   	pop    %ebp
40ecd0:	c3                   	ret
40ecd1:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40ecd4:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ecdb:	59                   	pop    %ecx
40ecdc:	5f                   	pop    %edi
40ecdd:	5f                   	pop    %edi
40ecde:	5e                   	pop    %esi
40ecdf:	5b                   	pop    %ebx
40ece0:	8b e5                	mov    %ebp,%esp
40ece2:	5d                   	pop    %ebp
40ece3:	51                   	push   %ecx
40ece4:	c3                   	ret
40ece5:	50                   	push   %eax
40ece6:	64 ff 35 00 00 00 00 	push   %fs:0x0
40eced:	8d 44 24 0c          	lea    0xc(%esp),%eax
40ecf1:	2b 64 24 0c          	sub    0xc(%esp),%esp
40ecf5:	53                   	push   %ebx
40ecf6:	56                   	push   %esi
40ecf7:	57                   	push   %edi
40ecf8:	89 28                	mov    %ebp,(%eax)
40ecfa:	8b e8                	mov    %eax,%ebp
40ecfc:	a1 14 60 41 00       	mov    0x416014,%eax
40ed01:	33 c5                	xor    %ebp,%eax
40ed03:	50                   	push   %eax
40ed04:	ff 75 fc             	push   -0x4(%ebp)
40ed07:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)