40a951:	8b 75 f4             	mov    -0xc(%ebp),%esi
40a954:	85 f6                	test   %esi,%esi
40a956:	74 05                	je     0x40a95d
40a958:	8b 4e fc             	mov    -0x4(%esi),%ecx
40a95b:	f3 a4                	rep movsb %ds:(%esi),%es:(%edi)
40a95d:	5e                   	pop    %esi
40a95e:	c3                   	ret
40a95f:	24 2a                	and    $0x2a,%al
40a961:	40                   	inc    %eax
40a962:	40                   	inc    %eax
40a963:	40                   	inc    %eax
40a964:	2a 24 40             	sub    (%eax,%eax,2),%ah
40a967:	40                   	inc    %eax
40a968:	40                   	inc    %eax
40a969:	24 20                	and    $0x20,%al
40a96b:	2a 40 40             	sub    0x40(%eax),%al
40a96e:	2a 20                	sub    (%eax),%ah
40a970:	24 40                	and    $0x40,%al
40a972:	40                   	inc    %eax
40a973:	28 24 2a             	sub    %ah,(%edx,%ebp,1)
40a976:	29 40 2d             	sub    %eax,0x2d(%eax)
40a979:	24 2a                	and    $0x2a,%al
40a97b:	40                   	inc    %eax
40a97c:	40                   	inc    %eax
40a97d:	24 2d                	and    $0x2d,%al
40a97f:	2a 40 40             	sub    0x40(%eax),%al
40a982:	24 2a                	and    $0x2a,%al
40a984:	2d 40 40 28 2a       	sub    $0x2a284040,%eax
40a989:	24 29                	and    $0x29,%al
40a98b:	40                   	inc    %eax
40a98c:	2d 2a 24 40 40       	sub    $0x4040242a,%eax
40a991:	2a 2d 24 40 40 2a    	sub    0x2a404024,%ch
40a997:	24 2d                	and    $0x2d,%al
40a999:	40                   	inc    %eax
40a99a:	40                   	inc    %eax
40a99b:	2d 2a 20 24 40       	sub    $0x4024202a,%eax
40a9a0:	2d 24 20 2a 40       	sub    $0x402a2024,%eax
40a9a5:	2a 20                	sub    (%eax),%ah
40a9a7:	24 2d                	and    $0x2d,%al
40a9a9:	40                   	inc    %eax
40a9aa:	24 20                	and    $0x20,%al
40a9ac:	2a 2d 40 24 20 2d    	sub    0x2d202440,%ch
40a9b2:	2a 40 2a             	sub    0x2a(%eax),%al
40a9b5:	2d 20 24 40 28       	sub    $0x28402420,%eax
40a9ba:	24 20                	and    $0x20,%al
40a9bc:	2a 29                	sub    (%ecx),%ch
40a9be:	28 2a                	sub    %ch,(%edx)
40a9c0:	20 24 29             	and    %ah,(%ecx,%ebp,1)
40a9c3:	8b e5                	mov    %ebp,%esp
40a9c5:	5d                   	pop    %ebp
40a9c6:	c2 0c 00             	ret    $0xc
40a9c9:	8d 40 00             	lea    0x0(%eax),%eax
40a9cc:	55                   	push   %ebp
40a9cd:	8b ec                	mov    %esp,%ebp
40a9cf:	83 c4 e0             	add    $0xffffffe0,%esp
40a9d2:	57                   	push   %edi
40a9d3:	56                   	push   %esi
40a9d4:	53                   	push   %ebx
40a9d5:	89 c3                	mov    %eax,%ebx
40a9d7:	89 d6                	mov    %edx,%esi
40a9d9:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40a9e0:	80 f9 00             	cmp    $0x0,%cl
40a9e3:	74 0a                	je     0x40a9ef
40a9e5:	e8 31 01 00 00       	call   0x40ab1b
40a9ea:	e9 00 02 00 00       	jmp    0x40abef
40a9ef:	e8 05 00 00 00       	call   0x40a9f9
40a9f4:	e9 f6 01 00 00       	jmp    0x40abef
40a9f9:	66 8b 46 08          	mov    0x8(%esi),%ax
40a9fd:	89 c2                	mov    %eax,%edx
40a9ff:	25 ff 7f 00 00       	and    $0x7fff,%eax
40aa04:	74 1e                	je     0x40aa24
40aa06:	3d ff 7f 00 00       	cmp    $0x7fff,%eax
40aa0b:	75 22                	jne    0x40aa2f
40aa0d:	66 f7 46 06 00 80    	testw  $0x8000,0x6(%esi)
40aa13:	74 11                	je     0x40aa26
40aa15:	83 3e 00             	cmpl   $0x0,(%esi)
40aa18:	75 09                	jne    0x40aa23
40aa1a:	81 7e 04 00 00 00 80 	cmpl   $0x80000000,0x4(%esi)
40aa21:	74 03                	je     0x40aa26
40aa23:	40                   	inc    %eax
40aa24:	31 d2                	xor    %edx,%edx
40aa26:	c6 43 03 00          	movb   $0x0,0x3(%ebx)
40aa2a:	e9 cd 00 00 00       	jmp    0x40aafc
40aa2f:	db 2e                	fldt   (%esi)
40aa31:	2d ff 3f 00 00       	sub    $0x3fff,%eax
40aa36:	69 c0 10 4d 00 00    	imul   $0x4d10,%eax,%eax
40aa3c:	c1 f8 10             	sar    $0x10,%eax
40aa3f:	40                   	inc    %eax
40aa40:	89 45 f8             	mov    %eax,-0x8(%ebp)
40aa43:	b8 12 00 00 00       	mov    $0x12,%eax
40aa48:	2b 45 f8             	sub    -0x8(%ebp),%eax
40aa4b:	d9 e1                	fabs
40aa4d:	53                   	push   %ebx
40aa4e:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40aa51:	e8 72 8b ff ff       	call   0x4035c8
40aa56:	5b                   	pop    %ebx
40aa57:	d9 fc                	frndint
40aa59:	8b 7d fc             	mov    -0x4(%ebp),%edi
40aa5c:	db af 7c a1 68 00    	fldt   0x68a17c(%edi)
40aa62:	d8 d9                	fcomp  %st(1)
40aa64:	9b dd 7d f6          	fstsw  -0xa(%ebp)
40aa68:	9b                   	fwait
40aa69:	66 f7 45 f6 00 41    	testw  $0x4100,-0xa(%ebp)
40aa6f:	74 09                	je     0x40aa7a
40aa71:	da b7 88 a1 68 00    	fidivl 0x68a188(%edi)
40aa77:	ff 45 f8             	incl   -0x8(%ebp)
40aa7a:	df 75 e8             	fbstp  -0x18(%ebp)
40aa7d:	8d 7b 03             	lea    0x3(%ebx),%edi
40aa80:	ba 09 00 00 00       	mov    $0x9,%edx
40aa85:	9b                   	fwait
40aa86:	8a 44 2a e7          	mov    -0x19(%edx,%ebp,1),%al
40aa8a:	88 c4                	mov    %al,%ah
40aa8c:	c0 e8 04             	shr    $0x4,%al
40aa8f:	80 e4 0f             	and    $0xf,%ah
40aa92:	66 05 30 30          	add    $0x3030,%ax
40aa96:	66 ab                	stos   %ax,%es:(%edi)
40aa98:	4a                   	dec    %edx
40aa99:	75 eb                	jne    0x40aa86
40aa9b:	32 c0                	xor    %al,%al
40aa9d:	aa                   	stos   %al,%es:(%edi)
40aa9e:	8b 7d f8             	mov    -0x8(%ebp),%edi
40aaa1:	03 7d 08             	add    0x8(%ebp),%edi
40aaa4:	79 07                	jns    0x40aaad
40aaa6:	31 c0                	xor    %eax,%eax
40aaa8:	e9 77 ff ff ff       	jmp    0x40aa24
40aaad:	3b 7d 0c             	cmp    0xc(%ebp),%edi
40aab0:	72 03                	jb     0x40aab5
40aab2:	8b 7d 0c             	mov    0xc(%ebp),%edi
40aab5:	83 ff 12             	cmp    $0x12,%edi
40aab8:	73 27                	jae    0x40aae1
40aaba:	80 7c 3b 03 35       	cmpb   $0x35,0x3(%ebx,%edi,1)
40aabf:	72 25                	jb     0x40aae6
40aac1:	c6 44 3b 03 00       	movb   $0x0,0x3(%ebx,%edi,1)
40aac6:	4f                   	dec    %edi
40aac7:	78 0d                	js     0x40aad6
40aac9:	fe 44 3b 03          	incb   0x3(%ebx,%edi,1)
40aacd:	80 7c 3b 03 39       	cmpb   $0x39,0x3(%ebx,%edi,1)
40aad2:	77 ed                	ja     0x40aac1
40aad4:	eb 1f                	jmp    0x40aaf5
40aad6:	66 c7 43 03 31 00    	movw   $0x31,0x3(%ebx)
40aadc:	ff 45 f8             	incl   -0x8(%ebp)
40aadf:	eb 14                	jmp    0x40aaf5
40aae1:	bf 12 00 00 00       	mov    $0x12,%edi
40aae6:	c6 44 3b 03 00       	movb   $0x0,0x3(%ebx,%edi,1)
40aaeb:	4f                   	dec    %edi
40aaec:	78 19                	js     0x40ab07
40aaee:	80 7c 3b 03 30       	cmpb   $0x30,0x3(%ebx,%edi,1)
40aaf3:	74 f1                	je     0x40aae6
40aaf5:	66 8b 56 08          	mov    0x8(%esi),%dx
40aaf9:	8b 45 f8             	mov    -0x8(%ebp),%eax
40aafc:	66 c1 ea 0f          	shr    $0xf,%dx
40ab00:	66 89 03             	mov    %ax,(%ebx)
40ab03:	88 53 02             	mov    %dl,0x2(%ebx)
40ab06:	c3                   	ret
40ab07:	31 d2                	xor    %edx,%edx
40ab09:	eb ee                	jmp    0x40aaf9
40ab0b:	0a 00                	or     (%eax),%al
40ab0d:	00 00                	add    %al,(%eax)
40ab0f:	64 00 00             	add    %al,%fs:(%eax)
40ab12:	00 e8                	add    %ch,%al
40ab14:	03 00                	add    (%eax),%eax
40ab16:	00 10                	add    %dl,(%eax)
40ab18:	27                   	daa
40ab19:	00 00                	add    %al,(%eax)
40ab1b:	8b 06                	mov    (%esi),%eax
40ab1d:	8b 56 04             	mov    0x4(%esi),%edx
40ab20:	89 c1                	mov    %eax,%ecx
40ab22:	09 d1                	or     %edx,%ecx
40ab24:	0f 84 b7 00 00 00    	je     0x40abe1
40ab2a:	09 d2                	or     %edx,%edx
40ab2c:	79 07                	jns    0x40ab35
40ab2e:	f7 da                	neg    %edx
40ab30:	f7 d8                	neg    %eax
40ab32:	83 da 00             	sbb    $0x0,%edx
40ab35:	31 c9                	xor    %ecx,%ecx
40ab37:	8b 7d 08             	mov    0x8(%ebp),%edi
40ab3a:	09 ff                	or     %edi,%edi
40ab3c:	7d 02                	jge    0x40ab40
40ab3e:	31 ff                	xor    %edi,%edi
40ab40:	83 ff 04             	cmp    $0x4,%edi
40ab43:	7c 1f                	jl     0x40ab64
40ab45:	bf 04 00 00 00       	mov    $0x4,%edi
40ab4a:	41                   	inc    %ecx
40ab4b:	2d 00 00 64 a7       	sub    $0xa7640000,%eax
40ab50:	81 da b3 b6 e0 0d    	sbb    $0xde0b6b3,%edx
40ab56:	73 f2                	jae    0x40ab4a
40ab58:	49                   	dec    %ecx
40ab59:	05 00 00 64 a7       	add    $0xa7640000,%eax
40ab5e:	81 d2 b3 b6 e0 0d    	adc    $0xde0b6b3,%edx
40ab64:	89 45 e0             	mov    %eax,-0x20(%ebp)
40ab67:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40ab6a:	df 6d e0             	fildll -0x20(%ebp)
40ab6d:	89 fa                	mov    %edi,%edx
40ab6f:	b8 04 00 00 00       	mov    $0x4,%eax
40ab74:	29 d0                	sub    %edx,%eax
40ab76:	74 0a                	je     0x40ab82
40ab78:	8b 7d fc             	mov    -0x4(%ebp),%edi
40ab7b:	da b4 87 07 ab 40 00 	fidivl 0x40ab07(%edi,%eax,4)
40ab82:	df 75 e8             	fbstp  -0x18(%ebp)
40ab85:	8d 7b 03             	lea    0x3(%ebx),%edi
40ab88:	9b                   	fwait
40ab89:	09 c9                	or     %ecx,%ecx
40ab8b:	75 1b                	jne    0x40aba8
40ab8d:	b9 09 00 00 00       	mov    $0x9,%ecx
40ab92:	8a 44 29 e7          	mov    -0x19(%ecx,%ebp,1),%al
40ab96:	88 c4                	mov    %al,%ah
40ab98:	c0 e8 04             	shr    $0x4,%al
40ab9b:	75 1e                	jne    0x40abbb
40ab9d:	88 e0                	mov    %ah,%al
40ab9f:	24 0f                	and    $0xf,%al
40aba1:	75 1f                	jne    0x40abc2
40aba3:	49                   	dec    %ecx
40aba4:	75 ec                	jne    0x40ab92
40aba6:	eb 39                	jmp    0x40abe1
40aba8:	88 c8                	mov    %cl,%al
40abaa:	04 30                	add    $0x30,%al
40abac:	aa                   	stos   %al,%es:(%edi)
40abad:	b9 09 00 00 00       	mov    $0x9,%ecx
40abb2:	8a 44 29 e7          	mov    -0x19(%ecx,%ebp,1),%al
40abb6:	88 c4                	mov    %al,%ah
40abb8:	c0 e8 04             	shr    $0x4,%al
40abbb:	04 30                	add    $0x30,%al
40abbd:	aa                   	stos   %al,%es:(%edi)
40abbe:	88 e0                	mov    %ah,%al
40abc0:	24 0f                	and    $0xf,%al
40abc2:	04 30                	add    $0x30,%al
40abc4:	aa                   	stos   %al,%es:(%edi)
40abc5:	49                   	dec    %ecx
40abc6:	75 ea                	jne    0x40abb2
40abc8:	89 f8                	mov    %edi,%eax
40abca:	8d 4c 13 03          	lea    0x3(%ebx,%edx,1),%ecx
40abce:	29 c8                	sub    %ecx,%eax
40abd0:	c6 07 00             	movb   $0x0,(%edi)
40abd3:	4f                   	dec    %edi
40abd4:	80 3f 30             	cmpb   $0x30,(%edi)
40abd7:	74 f7                	je     0x40abd0
40abd9:	8b 56 04             	mov    0x4(%esi),%edx
40abdc:	c1 ea 1f             	shr    $0x1f,%edx
40abdf:	eb 07                	jmp    0x40abe8
40abe1:	31 c0                	xor    %eax,%eax
40abe3:	31 d2                	xor    %edx,%edx
40abe5:	88 43 03             	mov    %al,0x3(%ebx)
40abe8:	66 89 03             	mov    %ax,(%ebx)
40abeb:	88 53 02             	mov    %dl,0x2(%ebx)
40abee:	c3                   	ret
40abef:	5b                   	pop    %ebx
40abf0:	5e                   	pop    %esi
40abf1:	5f                   	pop    %edi
40abf2:	8b e5                	mov    %ebp,%esp
40abf4:	5d                   	pop    %ebp
40abf5:	c2 08 00             	ret    $0x8
40abf8:	55                   	push   %ebp
40abf9:	8b ec                	mov    %esp,%ebp
40abfb:	83 c4 f4             	add    $0xfffffff4,%esp
40abfe:	57                   	push   %edi
40abff:	56                   	push   %esi
40ac00:	53                   	push   %ebx
40ac01:	89 c6                	mov    %eax,%esi
40ac03:	89 d7                	mov    %edx,%edi
40ac05:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40ac0c:	a0 3b 87 6a 00       	mov    0x6a873b,%al
40ac11:	88 45 fb             	mov    %al,-0x5(%ebp)
40ac14:	89 cb                	mov    %ecx,%ebx
40ac16:	9b d9 7d f8          	fstcw  -0x8(%ebp)
40ac1a:	9b db e2             	fclex
40ac1d:	d9 2d 8c a1 68 00    	fldcw  0x68a18c
40ac23:	d9 ee                	fldz
40ac25:	e8 85 00 00 00       	call   0x40acaf
40ac2a:	8a 3e                	mov    (%esi),%bh
40ac2c:	80 ff 2b             	cmp    $0x2b,%bh
40ac2f:	74 05                	je     0x40ac36
40ac31:	80 ff 2d             	cmp    $0x2d,%bh
40ac34:	75 01                	jne    0x40ac37
40ac36:	46                   	inc    %esi
40ac37:	89 f1                	mov    %esi,%ecx
40ac39:	e8 7c 00 00 00       	call   0x40acba
40ac3e:	31 d2                	xor    %edx,%edx
40ac40:	8a 06                	mov    (%esi),%al
40ac42:	3a 45 fb             	cmp    -0x5(%ebp),%al
40ac45:	75 08                	jne    0x40ac4f
40ac47:	46                   	inc    %esi
40ac48:	e8 6d 00 00 00       	call   0x40acba
40ac4d:	f7 da                	neg    %edx
40ac4f:	39 f1                	cmp    %esi,%ecx
40ac51:	74 4f                	je     0x40aca2
40ac53:	8a 06                	mov    (%esi),%al
40ac55:	24 df                	and    $0xdf,%al
40ac57:	3c 45                	cmp    $0x45,%al
40ac59:	75 0a                	jne    0x40ac65
40ac5b:	46                   	inc    %esi
40ac5c:	52                   	push   %edx
40ac5d:	e8 74 00 00 00       	call   0x40acd6
40ac62:	58                   	pop    %eax
40ac63:	01 c2                	add    %eax,%edx
40ac65:	e8 45 00 00 00       	call   0x40acaf
40ac6a:	80 3e 00             	cmpb   $0x0,(%esi)
40ac6d:	75 33                	jne    0x40aca2
40ac6f:	89 d0                	mov    %edx,%eax
40ac71:	80 fb 01             	cmp    $0x1,%bl
40ac74:	75 03                	jne    0x40ac79
40ac76:	83 c0 04             	add    $0x4,%eax
40ac79:	53                   	push   %ebx
40ac7a:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40ac7d:	e8 46 89 ff ff       	call   0x4035c8
40ac82:	5b                   	pop    %ebx
40ac83:	80 ff 2d             	cmp    $0x2d,%bh
40ac86:	75 02                	jne    0x40ac8a
40ac88:	d9 e0                	fchs
40ac8a:	80 fb 00             	cmp    $0x0,%bl
40ac8d:	74 04                	je     0x40ac93
40ac8f:	df 3f                	fistpll (%edi)
40ac91:	eb 02                	jmp    0x40ac95
40ac93:	db 3f                	fstpt  (%edi)
40ac95:	9b df e0             	fstsw  %ax
40ac98:	66 a9 09 00          	test   $0x9,%ax
40ac9c:	75 06                	jne    0x40aca4
40ac9e:	b0 01                	mov    $0x1,%al
40aca0:	eb 04                	jmp    0x40aca6
40aca2:	dd d8                	fstp   %st(0)
40aca4:	31 c0                	xor    %eax,%eax
40aca6:	9b db e2             	fclex
40aca9:	d9 6d f8             	fldcw  -0x8(%ebp)
40acac:	9b                   	fwait
40acad:	eb 56                	jmp    0x40ad05
40acaf:	ac                   	lods   %ds:(%esi),%al
40acb0:	08 c0                	or     %al,%al
40acb2:	74 04                	je     0x40acb8
40acb4:	3c 20                	cmp    $0x20,%al
40acb6:	74 f7                	je     0x40acaf
40acb8:	4e                   	dec    %esi
40acb9:	c3                   	ret
40acba:	31 c0                	xor    %eax,%eax
40acbc:	31 d2                	xor    %edx,%edx
40acbe:	ac                   	lods   %ds:(%esi),%al
40acbf:	2c 3a                	sub    $0x3a,%al
40acc1:	04 0a                	add    $0xa,%al
40acc3:	73 0f                	jae    0x40acd4
40acc5:	da 0d 88 a1 68 00    	fimull 0x68a188
40accb:	89 45 f4             	mov    %eax,-0xc(%ebp)
40acce:	da 45 f4             	fiaddl -0xc(%ebp)
40acd1:	42                   	inc    %edx
40acd2:	eb ea                	jmp    0x40acbe
40acd4:	4e                   	dec    %esi
40acd5:	c3                   	ret
40acd6:	31 c0                	xor    %eax,%eax
40acd8:	31 d2                	xor    %edx,%edx
40acda:	8a 0e                	mov    (%esi),%cl
40acdc:	80 f9 2b             	cmp    $0x2b,%cl
40acdf:	74 05                	je     0x40ace6
40ace1:	80 f9 2d             	cmp    $0x2d,%cl