40c8f1:	83 c4 14             	add    $0x14,%esp
40c8f4:	5d                   	pop    %ebp
40c8f5:	c3                   	ret
40c8f6:	8b ff                	mov    %edi,%edi
40c8f8:	55                   	push   %ebp
40c8f9:	8b ec                	mov    %esp,%ebp
40c8fb:	51                   	push   %ecx
40c8fc:	e8 1f 08 00 00       	call   0x40d120
40c901:	85 c0                	test   %eax,%eax
40c903:	74 1c                	je     0x40c921
40c905:	8d 45 fc             	lea    -0x4(%ebp),%eax
40c908:	50                   	push   %eax
40c909:	8d 45 08             	lea    0x8(%ebp),%eax
40c90c:	6a 01                	push   $0x1
40c90e:	50                   	push   %eax
40c90f:	e8 42 08 00 00       	call   0x40d156
40c914:	83 c4 0c             	add    $0xc,%esp
40c917:	85 c0                	test   %eax,%eax
40c919:	74 06                	je     0x40c921
40c91b:	66 8b 45 08          	mov    0x8(%ebp),%ax
40c91f:	c9                   	leave
40c920:	c3                   	ret
40c921:	b8 ff ff 00 00       	mov    $0xffff,%eax
40c926:	c9                   	leave
40c927:	c3                   	ret
40c928:	6a 10                	push   $0x10
40c92a:	68 38 4d 41 00       	push   $0x414d38
40c92f:	e8 dc 6a ff ff       	call   0x403410
40c934:	8b 75 08             	mov    0x8(%ebp),%esi
40c937:	89 75 e0             	mov    %esi,-0x20(%ebp)
40c93a:	85 f6                	test   %esi,%esi
40c93c:	75 23                	jne    0x40c961
40c93e:	8b 45 0c             	mov    0xc(%ebp),%eax
40c941:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40c945:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40c94c:	50                   	push   %eax
40c94d:	33 ff                	xor    %edi,%edi
40c94f:	57                   	push   %edi
40c950:	57                   	push   %edi
40c951:	57                   	push   %edi
40c952:	57                   	push   %edi
40c953:	57                   	push   %edi
40c954:	e8 46 93 ff ff       	call   0x405c9f
40c959:	83 c4 18             	add    $0x18,%esp
40c95c:	83 c8 ff             	or     $0xffffffff,%eax
40c95f:	eb 40                	jmp    0x40c9a1
40c961:	8b 46 0c             	mov    0xc(%esi),%eax
40c964:	90                   	nop
40c965:	c1 e8 0c             	shr    $0xc,%eax
40c968:	56                   	push   %esi
40c969:	a8 01                	test   $0x1,%al
40c96b:	74 08                	je     0x40c975
40c96d:	e8 0d 0a 00 00       	call   0x40d37f
40c972:	59                   	pop    %ecx
40c973:	eb e7                	jmp    0x40c95c
40c975:	33 ff                	xor    %edi,%edi
40c977:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40c97a:	e8 1d de ff ff       	call   0x40a79c
40c97f:	59                   	pop    %ecx
40c980:	89 7d fc             	mov    %edi,-0x4(%ebp)
40c983:	ff 75 0c             	push   0xc(%ebp)
40c986:	56                   	push   %esi
40c987:	e8 33 00 00 00       	call   0x40c9bf
40c98c:	59                   	pop    %ecx
40c98d:	59                   	pop    %ecx
40c98e:	8b f8                	mov    %eax,%edi
40c990:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40c993:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40c99a:	e8 18 00 00 00       	call   0x40c9b7
40c99f:	8b c7                	mov    %edi,%eax
40c9a1:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c9a4:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c9ab:	59                   	pop    %ecx
40c9ac:	5f                   	pop    %edi
40c9ad:	5e                   	pop    %esi
40c9ae:	5b                   	pop    %ebx
40c9af:	c9                   	leave
40c9b0:	c3                   	ret
40c9b1:	8b 75 e0             	mov    -0x20(%ebp),%esi
40c9b4:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40c9b7:	56                   	push   %esi
40c9b8:	e8 f3 dd ff ff       	call   0x40a7b0
40c9bd:	59                   	pop    %ecx
40c9be:	c3                   	ret
40c9bf:	8b ff                	mov    %edi,%edi
40c9c1:	55                   	push   %ebp
40c9c2:	8b ec                	mov    %esp,%ebp
40c9c4:	56                   	push   %esi
40c9c5:	8b 75 08             	mov    0x8(%ebp),%esi
40c9c8:	85 f6                	test   %esi,%esi
40c9ca:	75 23                	jne    0x40c9ef
40c9cc:	8b 45 0c             	mov    0xc(%ebp),%eax
40c9cf:	50                   	push   %eax
40c9d0:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40c9d4:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40c9db:	33 c0                	xor    %eax,%eax
40c9dd:	50                   	push   %eax
40c9de:	50                   	push   %eax
40c9df:	50                   	push   %eax
40c9e0:	50                   	push   %eax
40c9e1:	50                   	push   %eax
40c9e2:	e8 b8 92 ff ff       	call   0x405c9f
40c9e7:	83 c4 18             	add    $0x18,%esp
40c9ea:	83 c8 ff             	or     $0xffffffff,%eax
40c9ed:	eb 5b                	jmp    0x40ca4a
40c9ef:	8b 46 0c             	mov    0xc(%esi),%eax
40c9f2:	57                   	push   %edi
40c9f3:	83 cf ff             	or     $0xffffffff,%edi
40c9f6:	90                   	nop
40c9f7:	c1 e8 0d             	shr    $0xd,%eax
40c9fa:	a8 01                	test   $0x1,%al
40c9fc:	74 42                	je     0x40ca40
40c9fe:	ff 75 0c             	push   0xc(%ebp)
40ca01:	56                   	push   %esi
40ca02:	e8 aa db ff ff       	call   0x40a5b1
40ca07:	56                   	push   %esi
40ca08:	8b f8                	mov    %eax,%edi
40ca0a:	e8 ec fa ff ff       	call   0x40c4fb
40ca0f:	83 c4 0c             	add    $0xc,%esp
40ca12:	ff 75 0c             	push   0xc(%ebp)
40ca15:	56                   	push   %esi
40ca16:	e8 de e3 ff ff       	call   0x40adf9
40ca1b:	59                   	pop    %ecx
40ca1c:	50                   	push   %eax
40ca1d:	e8 1a 08 00 00       	call   0x40d23c
40ca22:	59                   	pop    %ecx
40ca23:	59                   	pop    %ecx
40ca24:	85 c0                	test   %eax,%eax
40ca26:	79 05                	jns    0x40ca2d
40ca28:	83 cf ff             	or     $0xffffffff,%edi
40ca2b:	eb 13                	jmp    0x40ca40
40ca2d:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
40ca31:	74 0d                	je     0x40ca40
40ca33:	ff 76 1c             	push   0x1c(%esi)
40ca36:	e8 3e ae ff ff       	call   0x407879
40ca3b:	83 66 1c 00          	andl   $0x0,0x1c(%esi)
40ca3f:	59                   	pop    %ecx
40ca40:	56                   	push   %esi
40ca41:	e8 39 09 00 00       	call   0x40d37f
40ca46:	59                   	pop    %ecx
40ca47:	8b c7                	mov    %edi,%eax
40ca49:	5f                   	pop    %edi
40ca4a:	5e                   	pop    %esi
40ca4b:	5d                   	pop    %ebp
40ca4c:	c3                   	ret
40ca4d:	8b ff                	mov    %edi,%edi
40ca4f:	55                   	push   %ebp
40ca50:	8b ec                	mov    %esp,%ebp
40ca52:	83 ec 28             	sub    $0x28,%esp
40ca55:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40ca58:	56                   	push   %esi
40ca59:	6a 00                	push   $0x0
40ca5b:	e8 b0 8f ff ff       	call   0x405a10
40ca60:	8d 45 d8             	lea    -0x28(%ebp),%eax
40ca63:	50                   	push   %eax
40ca64:	ff 75 08             	push   0x8(%ebp)
40ca67:	e8 bc fe ff ff       	call   0x40c928
40ca6c:	59                   	pop    %ecx
40ca6d:	59                   	pop    %ecx
40ca6e:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40ca71:	8b f0                	mov    %eax,%esi
40ca73:	e8 e0 8f ff ff       	call   0x405a58
40ca78:	8b c6                	mov    %esi,%eax
40ca7a:	5e                   	pop    %esi
40ca7b:	c9                   	leave
40ca7c:	c3                   	ret
40ca7d:	cc                   	int3
40ca7e:	cc                   	int3
40ca7f:	cc                   	int3
40ca80:	83 3d bc 73 41 00 00 	cmpl   $0x0,0x4173bc
40ca87:	74 32                	je     0x40cabb
40ca89:	83 ec 08             	sub    $0x8,%esp
40ca8c:	0f ae 5c 24 04       	stmxcsr 0x4(%esp)
40ca91:	8b 44 24 04          	mov    0x4(%esp),%eax
40ca95:	25 80 7f 00 00       	and    $0x7f80,%eax
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