408f50:	eb 1a                	jmp    0x408f6c
408f52:	b9 01 00 00 00       	mov    $0x1,%ecx
408f57:	42                   	inc    %edx
408f58:	ac                   	lods   %ds:(%esi),%al
408f59:	08 c0                	or     %al,%al
408f5b:	74 17                	je     0x408f74
408f5d:	aa                   	stos   %al,%es:(%edi)
408f5e:	e2 f8                	loop   0x408f58
408f60:	ac                   	lods   %ds:(%esi),%al
408f61:	08 c0                	or     %al,%al
408f63:	74 13                	je     0x408f78
408f65:	88 c4                	mov    %al,%ah
408f67:	8a 45 fb             	mov    -0x5(%ebp),%al
408f6a:	66 ab                	stos   %ax,%es:(%edi)
408f6c:	ac                   	lods   %ds:(%esi),%al
408f6d:	08 c0                	or     %al,%al
408f6f:	74 07                	je     0x408f78
408f71:	aa                   	stos   %al,%es:(%edi)
408f72:	eb f8                	jmp    0x408f6c
408f74:	b0 30                	mov    $0x30,%al
408f76:	f3 aa                	rep stos %al,%es:(%edi)
408f78:	09 d2                	or     %edx,%edx
408f7a:	74 04                	je     0x408f80
408f7c:	31 c0                	xor    %eax,%eax
408f7e:	eb 1e                	jmp    0x408f9e
408f80:	c3                   	ret
408f81:	e8 95 ff ff ff       	call   0x408f1b
408f86:	e8 87 ff ff ff       	call   0x408f12
408f8b:	8a 65 fb             	mov    -0x5(%ebp),%ah
408f8e:	66 ab                	stos   %ax,%es:(%edi)
408f90:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408f93:	49                   	dec    %ecx
408f94:	e8 79 ff ff ff       	call   0x408f12
408f99:	aa                   	stos   %al,%es:(%edi)
408f9a:	e2 f8                	loop   0x408f94
408f9c:	b4 2b                	mov    $0x2b,%ah
408f9e:	8b 4d 08             	mov    0x8(%ebp),%ecx
408fa1:	83 f9 04             	cmp    $0x4,%ecx
408fa4:	76 02                	jbe    0x408fa8
408fa6:	31 c9                	xor    %ecx,%ecx
408fa8:	b0 45                	mov    $0x45,%al
408faa:	8a 5d d7             	mov    -0x29(%ebp),%bl
408fad:	0f bf 55 d4          	movswl -0x2c(%ebp),%edx
408fb1:	4a                   	dec    %edx
408fb2:	e8 21 fe ff ff       	call   0x408dd8
408fb7:	c3                   	ret
408fb8:	e8 5e ff ff ff       	call   0x408f1b
408fbd:	8b 55 08             	mov    0x8(%ebp),%edx
408fc0:	83 fa 12             	cmp    $0x12,%edx
408fc3:	72 05                	jb     0x408fca
408fc5:	ba 12 00 00 00       	mov    $0x12,%edx
408fca:	0f bf 4d d4          	movswl -0x2c(%ebp),%ecx
408fce:	09 c9                	or     %ecx,%ecx
408fd0:	7f 05                	jg     0x408fd7
408fd2:	b0 30                	mov    $0x30,%al
408fd4:	aa                   	stos   %al,%es:(%edi)
408fd5:	eb 2a                	jmp    0x409001
408fd7:	31 db                	xor    %ebx,%ebx
408fd9:	80 7d 10 02          	cmpb   $0x2,0x10(%ebp)
408fdd:	74 0a                	je     0x408fe9
408fdf:	89 c8                	mov    %ecx,%eax
408fe1:	48                   	dec    %eax
408fe2:	b3 03                	mov    $0x3,%bl
408fe4:	f6 f3                	div    %bl
408fe6:	88 e3                	mov    %ah,%bl
408fe8:	43                   	inc    %ebx
408fe9:	e8 24 ff ff ff       	call   0x408f12
408fee:	aa                   	stos   %al,%es:(%edi)
408fef:	49                   	dec    %ecx
408ff0:	74 0f                	je     0x409001
408ff2:	4b                   	dec    %ebx
408ff3:	75 f4                	jne    0x408fe9
408ff5:	8a 45 fa             	mov    -0x6(%ebp),%al
408ff8:	84 c0                	test   %al,%al
408ffa:	74 ed                	je     0x408fe9
408ffc:	aa                   	stos   %al,%es:(%edi)
408ffd:	b3 03                	mov    $0x3,%bl
408fff:	eb e8                	jmp    0x408fe9
409001:	09 d2                	or     %edx,%edx
409003:	74 1c                	je     0x409021
409005:	8a 45 fb             	mov    -0x5(%ebp),%al
409008:	84 c0                	test   %al,%al
40900a:	74 01                	je     0x40900d
40900c:	aa                   	stos   %al,%es:(%edi)
40900d:	e3 09                	jecxz  0x409018
40900f:	b0 30                	mov    $0x30,%al
409011:	aa                   	stos   %al,%es:(%edi)
409012:	4a                   	dec    %edx
409013:	74 0c                	je     0x409021
409015:	41                   	inc    %ecx
409016:	75 f9                	jne    0x409011
409018:	e8 f5 fe ff ff       	call   0x408f12
40901d:	aa                   	stos   %al,%es:(%edi)
40901e:	4a                   	dec    %edx
40901f:	75 f7                	jne    0x409018
409021:	c3                   	ret
409022:	31 db                	xor    %ebx,%ebx
409024:	8a 5d f3             	mov    -0xd(%ebp),%bl
409027:	b9 03 00 00 00       	mov    $0x3,%ecx
40902c:	80 7d d6 00          	cmpb   $0x0,-0x2a(%ebp)
409030:	74 08                	je     0x40903a
409032:	8a 5d f2             	mov    -0xe(%ebp),%bl
409035:	b9 0f 04 00 00       	mov    $0x40f,%ecx
40903a:	38 cb                	cmp    %cl,%bl
40903c:	76 02                	jbe    0x409040
40903e:	88 cb                	mov    %cl,%bl
409040:	00 eb                	add    %ch,%bl
409042:	8d 9c 9b 85 90 40 00 	lea    0x409085(%ebx,%ebx,4),%ebx
409049:	03 5d ec             	add    -0x14(%ebp),%ebx
40904c:	b9 05 00 00 00       	mov    $0x5,%ecx
409051:	8a 03                	mov    (%ebx),%al
409053:	3c 40                	cmp    $0x40,%al
409055:	74 1e                	je     0x409075
409057:	51                   	push   %ecx
409058:	53                   	push   %ebx
409059:	3c 24                	cmp    $0x24,%al
40905b:	74 07                	je     0x409064
40905d:	3c 2a                	cmp    $0x2a,%al
40905f:	74 0a                	je     0x40906b
409061:	aa                   	stos   %al,%es:(%edi)
409062:	eb 0c                	jmp    0x409070
409064:	e8 0d 00 00 00       	call   0x409076
409069:	eb 05                	jmp    0x409070
40906b:	e8 4d ff ff ff       	call   0x408fbd
409070:	5b                   	pop    %ebx
409071:	59                   	pop    %ecx
409072:	43                   	inc    %ebx
409073:	e2 dc                	loop   0x409051
409075:	c3                   	ret
409076:	56                   	push   %esi
409077:	8b 75 f4             	mov    -0xc(%ebp),%esi
40907a:	85 f6                	test   %esi,%esi
40907c:	74 05                	je     0x409083
40907e:	8b 4e fc             	mov    -0x4(%esi),%ecx
409081:	f3 a4                	rep movsb %ds:(%esi),%es:(%edi)
409083:	5e                   	pop    %esi
409084:	c3                   	ret
409085:	24 2a                	and    $0x2a,%al
409087:	40                   	inc    %eax
409088:	40                   	inc    %eax
409089:	40                   	inc    %eax
40908a:	2a 24 40             	sub    (%eax,%eax,2),%ah
40908d:	40                   	inc    %eax
40908e:	40                   	inc    %eax
40908f:	24 20                	and    $0x20,%al
409091:	2a 40 40             	sub    0x40(%eax),%al
409094:	2a 20                	sub    (%eax),%ah
409096:	24 40                	and    $0x40,%al
409098:	40                   	inc    %eax
409099:	28 24 2a             	sub    %ah,(%edx,%ebp,1)
40909c:	29 40 2d             	sub    %eax,0x2d(%eax)
40909f:	24 2a                	and    $0x2a,%al
4090a1:	40                   	inc    %eax
4090a2:	40                   	inc    %eax
4090a3:	24 2d                	and    $0x2d,%al
4090a5:	2a 40 40             	sub    0x40(%eax),%al
4090a8:	24 2a                	and    $0x2a,%al
4090aa:	2d 40 40 28 2a       	sub    $0x2a284040,%eax
4090af:	24 29                	and    $0x29,%al
4090b1:	40                   	inc    %eax
4090b2:	2d 2a 24 40 40       	sub    $0x4040242a,%eax
4090b7:	2a 2d 24 40 40 2a    	sub    0x2a404024,%ch
4090bd:	24 2d                	and    $0x2d,%al
4090bf:	40                   	inc    %eax
4090c0:	40                   	inc    %eax
4090c1:	2d 2a 20 24 40       	sub    $0x4024202a,%eax
4090c6:	2d 24 20 2a 40       	sub    $0x402a2024,%eax
4090cb:	2a 20                	sub    (%eax),%ah
4090cd:	24 2d                	and    $0x2d,%al
4090cf:	40                   	inc    %eax
4090d0:	24 20                	and    $0x20,%al
4090d2:	2a 2d 40 24 20 2d    	sub    0x2d202440,%ch
4090d8:	2a 40 2a             	sub    0x2a(%eax),%al
4090db:	2d 20 24 40 28       	sub    $0x28402420,%eax
4090e0:	24 20                	and    $0x20,%al
4090e2:	2a 29                	sub    (%ecx),%ch
4090e4:	28 2a                	sub    %ch,(%edx)
4090e6:	20 24 29             	and    %ah,(%ecx,%ebp,1)
4090e9:	8b e5                	mov    %ebp,%esp
4090eb:	5d                   	pop    %ebp
4090ec:	c2 0c 00             	ret    $0xc
4090ef:	90                   	nop
4090f0:	55                   	push   %ebp
4090f1:	8b ec                	mov    %esp,%ebp
4090f3:	83 c4 e0             	add    $0xffffffe0,%esp
4090f6:	57                   	push   %edi
4090f7:	56                   	push   %esi
4090f8:	53                   	push   %ebx
4090f9:	89 c3                	mov    %eax,%ebx
4090fb:	89 d6                	mov    %edx,%esi
4090fd:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
409104:	80 f9 00             	cmp    $0x0,%cl
409107:	74 0a                	je     0x409113
409109:	e8 31 01 00 00       	call   0x40923f
40910e:	e9 00 02 00 00       	jmp    0x409313
409113:	e8 05 00 00 00       	call   0x40911d
409118:	e9 f6 01 00 00       	jmp    0x409313
40911d:	66 8b 46 08          	mov    0x8(%esi),%ax
409121:	89 c2                	mov    %eax,%edx
409123:	25 ff 7f 00 00       	and    $0x7fff,%eax
409128:	74 1e                	je     0x409148
40912a:	3d ff 7f 00 00       	cmp    $0x7fff,%eax
40912f:	75 22                	jne    0x409153
409131:	66 f7 46 06 00 80    	testw  $0x8000,0x6(%esi)
409137:	74 11                	je     0x40914a
409139:	83 3e 00             	cmpl   $0x0,(%esi)
40913c:	75 09                	jne    0x409147
40913e:	81 7e 04 00 00 00 80 	cmpl   $0x80000000,0x4(%esi)
409145:	74 03                	je     0x40914a
409147:	40                   	inc    %eax
409148:	31 d2                	xor    %edx,%edx
40914a:	c6 43 03 00          	movb   $0x0,0x3(%ebx)
40914e:	e9 cd 00 00 00       	jmp    0x409220
409153:	db 2e                	fldt   (%esi)
409155:	2d ff 3f 00 00       	sub    $0x3fff,%eax
40915a:	69 c0 10 4d 00 00    	imul   $0x4d10,%eax,%eax
409160:	c1 f8 10             	sar    $0x10,%eax
409163:	40                   	inc    %eax
409164:	89 45 f8             	mov    %eax,-0x8(%ebp)
409167:	b8 12 00 00 00       	mov    $0x12,%eax
40916c:	2b 45 f8             	sub    -0x8(%ebp),%eax
40916f:	d9 e1                	fabs
409171:	53                   	push   %ebx
409172:	8b 5d fc             	mov    -0x4(%ebp),%ebx
409175:	e8 46 9c ff ff       	call   0x402dc0
40917a:	5b                   	pop    %ebx
40917b:	d9 fc                	frndint
40917d:	8b 7d fc             	mov    -0x4(%ebp),%edi
409180:	db af 68 d1 45 00    	fldt   0x45d168(%edi)
409186:	d8 d9                	fcomp  %st(1)
409188:	9b dd 7d f6          	fstsw  -0xa(%ebp)
40918c:	9b                   	fwait
40918d:	66 f7 45 f6 00 41    	testw  $0x4100,-0xa(%ebp)
409193:	74 09                	je     0x40919e
409195:	da b7 74 d1 45 00    	fidivl 0x45d174(%edi)
40919b:	ff 45 f8             	incl   -0x8(%ebp)
40919e:	df 75 e8             	fbstp  -0x18(%ebp)
4091a1:	8d 7b 03             	lea    0x3(%ebx),%edi
4091a4:	ba 09 00 00 00       	mov    $0x9,%edx
4091a9:	9b                   	fwait
4091aa:	8a 44 2a e7          	mov    -0x19(%edx,%ebp,1),%al
4091ae:	88 c4                	mov    %al,%ah
4091b0:	c0 e8 04             	shr    $0x4,%al
4091b3:	80 e4 0f             	and    $0xf,%ah
4091b6:	66 05 30 30          	add    $0x3030,%ax
4091ba:	66 ab                	stos   %ax,%es:(%edi)
4091bc:	4a                   	dec    %edx
4091bd:	75 eb                	jne    0x4091aa
4091bf:	32 c0                	xor    %al,%al
4091c1:	aa                   	stos   %al,%es:(%edi)
4091c2:	8b 7d f8             	mov    -0x8(%ebp),%edi
4091c5:	03 7d 08             	add    0x8(%ebp),%edi
4091c8:	79 07                	jns    0x4091d1
4091ca:	31 c0                	xor    %eax,%eax
4091cc:	e9 77 ff ff ff       	jmp    0x409148
4091d1:	3b 7d 0c             	cmp    0xc(%ebp),%edi
4091d4:	72 03                	jb     0x4091d9
4091d6:	8b 7d 0c             	mov    0xc(%ebp),%edi
4091d9:	83 ff 12             	cmp    $0x12,%edi
4091dc:	73 27                	jae    0x409205
4091de:	80 7c 3b 03 35       	cmpb   $0x35,0x3(%ebx,%edi,1)
4091e3:	72 25                	jb     0x40920a
4091e5:	c6 44 3b 03 00       	movb   $0x0,0x3(%ebx,%edi,1)
4091ea:	4f                   	dec    %edi
4091eb:	78 0d                	js     0x4091fa
4091ed:	fe 44 3b 03          	incb   0x3(%ebx,%edi,1)
4091f1:	80 7c 3b 03 39       	cmpb   $0x39,0x3(%ebx,%edi,1)
4091f6:	77 ed                	ja     0x4091e5
4091f8:	eb 1f                	jmp    0x409219
4091fa:	66 c7 43 03 31 00    	movw   $0x31,0x3(%ebx)
409200:	ff 45 f8             	incl   -0x8(%ebp)
409203:	eb 14                	jmp    0x409219
409205:	bf 12 00 00 00       	mov    $0x12,%edi
40920a:	c6 44 3b 03 00       	movb   $0x0,0x3(%ebx,%edi,1)
40920f:	4f                   	dec    %edi
409210:	78 19                	js     0x40922b
409212:	80 7c 3b 03 30       	cmpb   $0x30,0x3(%ebx,%edi,1)
409217:	74 f1                	je     0x40920a
409219:	66 8b 56 08          	mov    0x8(%esi),%dx
40921d:	8b 45 f8             	mov    -0x8(%ebp),%eax
409220:	66 c1 ea 0f          	shr    $0xf,%dx
409224:	66 89 03             	mov    %ax,(%ebx)
409227:	88 53 02             	mov    %dl,0x2(%ebx)
40922a:	c3                   	ret
40922b:	31 d2                	xor    %edx,%edx
40922d:	eb ee                	jmp    0x40921d
40922f:	0a 00                	or     (%eax),%al
409231:	00 00                	add    %al,(%eax)
409233:	64 00 00             	add    %al,%fs:(%eax)
409236:	00 e8                	add    %ch,%al
409238:	03 00                	add    (%eax),%eax
40923a:	00 10                	add    %dl,(%eax)
40923c:	27                   	daa
40923d:	00 00                	add    %al,(%eax)
40923f:	8b 06                	mov    (%esi),%eax
409241:	8b 56 04             	mov    0x4(%esi),%edx
409244:	89 c1                	mov    %eax,%ecx
409246:	09 d1                	or     %edx,%ecx
409248:	0f 84 b7 00 00 00    	je     0x409305
40924e:	09 d2                	or     %edx,%edx
409250:	79 07                	jns    0x409259
409252:	f7 da                	neg    %edx
409254:	f7 d8                	neg    %eax
409256:	83 da 00             	sbb    $0x0,%edx
409259:	31 c9                	xor    %ecx,%ecx
40925b:	8b 7d 08             	mov    0x8(%ebp),%edi
40925e:	09 ff                	or     %edi,%edi
409260:	7d 02                	jge    0x409264
409262:	31 ff                	xor    %edi,%edi
409264:	83 ff 04             	cmp    $0x4,%edi
409267:	7c 1f                	jl     0x409288
409269:	bf 04 00 00 00       	mov    $0x4,%edi
40926e:	41                   	inc    %ecx
40926f:	2d 00 00 64 a7       	sub    $0xa7640000,%eax
409274:	81 da b3 b6 e0 0d    	sbb    $0xde0b6b3,%edx
40927a:	73 f2                	jae    0x40926e
40927c:	49                   	dec    %ecx
40927d:	05 00 00 64 a7       	add    $0xa7640000,%eax
409282:	81 d2 b3 b6 e0 0d    	adc    $0xde0b6b3,%edx
409288:	89 45 e0             	mov    %eax,-0x20(%ebp)
40928b:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40928e:	df 6d e0             	fildll -0x20(%ebp)
409291:	89 fa                	mov    %edi,%edx
409293:	b8 04 00 00 00       	mov    $0x4,%eax
409298:	29 d0                	sub    %edx,%eax
40929a:	74 0a                	je     0x4092a6
40929c:	8b 7d fc             	mov    -0x4(%ebp),%edi
40929f:	da b4 87 2b 92 40 00 	fidivl 0x40922b(%edi,%eax,4)
4092a6:	df 75 e8             	fbstp  -0x18(%ebp)
4092a9:	8d 7b 03             	lea    0x3(%ebx),%edi
4092ac:	9b                   	fwait
4092ad:	09 c9                	or     %ecx,%ecx
4092af:	75 1b                	jne    0x4092cc
4092b1:	b9 09 00 00 00       	mov    $0x9,%ecx
4092b6:	8a 44 29 e7          	mov    -0x19(%ecx,%ebp,1),%al
4092ba:	88 c4                	mov    %al,%ah
4092bc:	c0 e8 04             	shr    $0x4,%al
4092bf:	75 1e                	jne    0x4092df
4092c1:	88 e0                	mov    %ah,%al
4092c3:	24 0f                	and    $0xf,%al
4092c5:	75 1f                	jne    0x4092e6
4092c7:	49                   	dec    %ecx
4092c8:	75 ec                	jne    0x4092b6
4092ca:	eb 39                	jmp    0x409305
4092cc:	88 c8                	mov    %cl,%al
4092ce:	04 30                	add    $0x30,%al
4092d0:	aa                   	stos   %al,%es:(%edi)
4092d1:	b9 09 00 00 00       	mov    $0x9,%ecx
4092d6:	8a 44 29 e7          	mov    -0x19(%ecx,%ebp,1),%al
4092da:	88 c4                	mov    %al,%ah