408fcc:	50                   	push   %eax
408fcd:	e8 96 db ff ff       	call   0x406b68
408fd2:	8b 07                	mov    (%edi),%eax
408fd4:	6a 00                	push   $0x0
408fd6:	8b 48 04             	mov    0x4(%eax),%ecx
408fd9:	56                   	push   %esi
408fda:	03 cf                	add    %edi,%ecx
408fdc:	e8 40 a3 ff ff       	call   0x403321
408fe1:	8d 4c 24 20          	lea    0x20(%esp),%ecx
408fe5:	e8 4d 3b 00 00       	call   0x40cb37
408fea:	8d 4c 24 30          	lea    0x30(%esp),%ecx
408fee:	e8 27 fe ff ff       	call   0x408e1a
408ff3:	5f                   	pop    %edi
408ff4:	5e                   	pop    %esi
408ff5:	33 c0                	xor    %eax,%eax
408ff7:	5b                   	pop    %ebx
408ff8:	8b e5                	mov    %ebp,%esp
408ffa:	5d                   	pop    %ebp
408ffb:	c2 08 00             	ret    $0x8
408ffe:	55                   	push   %ebp
408fff:	8b ec                	mov    %esp,%ebp
409001:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
409005:	53                   	push   %ebx
409006:	56                   	push   %esi
409007:	0f b7 31             	movzwl (%ecx),%esi
40900a:	57                   	push   %edi
40900b:	74 12                	je     0x40901f
40900d:	8b c6                	mov    %esi,%eax
40900f:	25 00 fc 00 00       	and    $0xfc00,%eax
409014:	3d 00 d8 00 00       	cmp    $0xd800,%eax
409019:	0f 84 9b 34 08 00    	je     0x48c4ba
40901f:	6a 02                	push   $0x2
409021:	5f                   	pop    %edi
409022:	6a 0a                	push   $0xa
409024:	5b                   	pop    %ebx
409025:	3b d7                	cmp    %edi,%edx
409027:	0f 85 e3 34 08 00    	jne    0x48c510
40902d:	3b f3                	cmp    %ebx,%esi
40902f:	74 10                	je     0x409041
409031:	83 fe 0d             	cmp    $0xd,%esi
409034:	0f 84 9d 34 08 00    	je     0x48c4d7
40903a:	33 c0                	xor    %eax,%eax
40903c:	5f                   	pop    %edi
40903d:	5e                   	pop    %esi
40903e:	5b                   	pop    %ebx
40903f:	5d                   	pop    %ebp
409040:	c3                   	ret
409041:	33 d2                	xor    %edx,%edx
409043:	e9 bb 34 08 00       	jmp    0x48c503
409048:	55                   	push   %ebp
409049:	8b ec                	mov    %esp,%ebp
40904b:	56                   	push   %esi
40904c:	6a 10                	push   $0x10
40904e:	8b f1                	mov    %ecx,%esi
409050:	e8 95 64 01 00       	call   0x41f4ea
409055:	8b d0                	mov    %eax,%edx
409057:	59                   	pop    %ecx
409058:	85 d2                	test   %edx,%edx
40905a:	0f 84 7e b4 06 00    	je     0x4744de
409060:	8b 45 08             	mov    0x8(%ebp),%eax
409063:	8b 08                	mov    (%eax),%ecx
409065:	89 0a                	mov    %ecx,(%edx)
409067:	8b 48 04             	mov    0x4(%eax),%ecx
40906a:	89 4a 04             	mov    %ecx,0x4(%edx)
40906d:	8b 48 08             	mov    0x8(%eax),%ecx
409070:	89 4a 08             	mov    %ecx,0x8(%edx)
409073:	8b 40 0c             	mov    0xc(%eax),%eax
409076:	89 42 0c             	mov    %eax,0xc(%edx)
409079:	ff 00                	incl   (%eax)
40907b:	89 56 08             	mov    %edx,0x8(%esi)
40907e:	c7 46 0c 04 00 00 00 	movl   $0x4,0xc(%esi)
409085:	8b c6                	mov    %esi,%eax
409087:	5e                   	pop    %esi
409088:	5d                   	pop    %ebp
409089:	c2 04 00             	ret    $0x4
40908c:	55                   	push   %ebp
40908d:	8b ec                	mov    %esp,%ebp
40908f:	83 e4 f8             	and    $0xfffffff8,%esp
409092:	83 ec 5c             	sub    $0x5c,%esp
409095:	53                   	push   %ebx
409096:	8b 5d 08             	mov    0x8(%ebp),%ebx
409099:	56                   	push   %esi
40909a:	8b 43 04             	mov    0x4(%ebx),%eax
40909d:	89 4c 24 30          	mov    %ecx,0x30(%esp)
4090a1:	8b 30                	mov    (%eax),%esi
4090a3:	57                   	push   %edi
4090a4:	8b ce                	mov    %esi,%ecx
4090a6:	e8 c1 02 00 00       	call   0x40936c
4090ab:	8b 46 08             	mov    0x8(%esi),%eax
4090ae:	8b 00                	mov    (%eax),%eax
4090b0:	89 44 24 10          	mov    %eax,0x10(%esp)
4090b4:	8b 43 04             	mov    0x4(%ebx),%eax
4090b7:	8b 30                	mov    (%eax),%esi
4090b9:	8b ce                	mov    %esi,%ecx
4090bb:	e8 ac 02 00 00       	call   0x40936c
4090c0:	8b 46 08             	mov    0x8(%esi),%eax
4090c3:	8b 78 04             	mov    0x4(%eax),%edi
4090c6:	8b 43 04             	mov    0x4(%ebx),%eax
4090c9:	8b 70 04             	mov    0x4(%eax),%esi
4090cc:	8b ce                	mov    %esi,%ecx
4090ce:	e8 99 02 00 00       	call   0x40936c
4090d3:	8b 46 08             	mov    0x8(%esi),%eax
4090d6:	8b 00                	mov    (%eax),%eax
4090d8:	89 44 24 1c          	mov    %eax,0x1c(%esp)
4090dc:	8b 43 04             	mov    0x4(%ebx),%eax
4090df:	8b 70 04             	mov    0x4(%eax),%esi
4090e2:	8b ce                	mov    %esi,%ecx
4090e4:	e8 83 02 00 00       	call   0x40936c
4090e9:	8b 46 08             	mov    0x8(%esi),%eax
4090ec:	57                   	push   %edi
4090ed:	8b 70 04             	mov    0x4(%eax),%esi
4090f0:	8d 4c 24 3c          	lea    0x3c(%esp),%ecx
4090f4:	89 74 24 18          	mov    %esi,0x18(%esp)
4090f8:	e8 12 da ff ff       	call   0x406b0f
4090fd:	8b 45 08             	mov    0x8(%ebp),%eax
409100:	33 db                	xor    %ebx,%ebx
409102:	33 c9                	xor    %ecx,%ecx
409104:	8a d3                	mov    %bl,%dl
409106:	41                   	inc    %ecx
409107:	83 78 08 03          	cmpl   $0x3,0x8(%eax)
40910b:	89 5c 24 2c          	mov    %ebx,0x2c(%esp)
40910f:	88 54 24 0f          	mov    %dl,0xf(%esp)
409113:	0f 82 1e 02 00 00    	jb     0x409337
409119:	8b 40 04             	mov    0x4(%eax),%eax
40911c:	8b 48 08             	mov    0x8(%eax),%ecx
40911f:	e8 62 41 00 00       	call   0x40d286
409124:	33 c9                	xor    %ecx,%ecx
409126:	41                   	inc    %ecx
409127:	89 44 24 2c          	mov    %eax,0x2c(%esp)
40912b:	a8 02                	test   $0x2,%al
40912d:	0f 84 fd 01 00 00    	je     0x409330
409133:	8a d1                	mov    %cl,%dl
409135:	23 c1                	and    %ecx,%eax
409137:	88 54 24 0f          	mov    %dl,0xf(%esp)
40913b:	89 44 24 2c          	mov    %eax,0x2c(%esp)
40913f:	85 f6                	test   %esi,%esi
409141:	0f 84 3b 38 07 00    	je     0x47c982
409147:	2b c3                	sub    %ebx,%eax
409149:	0f 84 d9 38 07 00    	je     0x47ca28
40914f:	48                   	dec    %eax
409150:	0f 85 e8 01 00 00    	jne    0x40933e
409156:	89 5c 24 18          	mov    %ebx,0x18(%esp)
40915a:	85 ff                	test   %edi,%edi
40915c:	7e 5f                	jle    0x4091bd
40915e:	8b 74 24 10          	mov    0x10(%esp),%esi
409162:	8b 44 24 1c          	mov    0x1c(%esp),%eax
409166:	57                   	push   %edi
409167:	66 8b 10             	mov    (%eax),%dx
40916a:	8b ce                	mov    %esi,%ecx
40916c:	e8 de 01 00 00       	call   0x40934f
409171:	8b d0                	mov    %eax,%edx
409173:	59                   	pop    %ecx
409174:	89 54 24 30          	mov    %edx,0x30(%esp)
409178:	85 d2                	test   %edx,%edx
40917a:	0f 84 99 01 00 00    	je     0x409319
409180:	8b 44 24 14          	mov    0x14(%esp),%eax
409184:	8b ca                	mov    %edx,%ecx
409186:	2b ce                	sub    %esi,%ecx
409188:	d1 f9                	sar    $1,%ecx
40918a:	03 c8                	add    %eax,%ecx
40918c:	2b f9                	sub    %ecx,%edi
40918e:	0f 88 85 01 00 00    	js     0x409319
409194:	50                   	push   %eax
409195:	ff 74 24 20          	push   0x20(%esp)
409199:	52                   	push   %edx
40919a:	e8 56 85 01 00       	call   0x4216f5
40919f:	8b 4c 24 20          	mov    0x20(%esp),%ecx
4091a3:	8b 74 24 3c          	mov    0x3c(%esp),%esi
4091a7:	83 c4 0c             	add    $0xc,%esp
4091aa:	85 c0                	test   %eax,%eax
4091ac:	0f 85 6b 38 07 00    	jne    0x47ca1d
4091b2:	ff 44 24 18          	incl   0x18(%esp)
4091b6:	8d 34 4e             	lea    (%esi,%ecx,2),%esi
4091b9:	85 ff                	test   %edi,%edi
4091bb:	7f a5                	jg     0x409162
4091bd:	8b 7d 08             	mov    0x8(%ebp),%edi
4091c0:	8b 47 04             	mov    0x4(%edi),%eax
4091c3:	8b 30                	mov    (%eax),%esi
4091c5:	8b ce                	mov    %esi,%ecx
4091c7:	e8 a0 01 00 00       	call   0x40936c
4091cc:	8b 46 08             	mov    0x8(%esi),%eax
4091cf:	8b 00                	mov    (%eax),%eax
4091d1:	89 44 24 10          	mov    %eax,0x10(%esp)
4091d5:	8b 47 04             	mov    0x4(%edi),%eax
4091d8:	8b 30                	mov    (%eax),%esi
4091da:	8b ce                	mov    %esi,%ecx
4091dc:	e8 8b 01 00 00       	call   0x40936c
4091e1:	8b 46 08             	mov    0x8(%esi),%eax
4091e4:	8b 74 24 18          	mov    0x18(%esp),%esi
4091e8:	8b 78 04             	mov    0x4(%eax),%edi
4091eb:	85 f6                	test   %esi,%esi
4091ed:	0f 8e 51 39 07 00    	jle    0x47cb44
4091f3:	8d 46 01             	lea    0x1(%esi),%eax
4091f6:	33 f6                	xor    %esi,%esi
4091f8:	46                   	inc    %esi
4091f9:	80 7c 24 0f 00       	cmpb   $0x0,0xf(%esp)
4091fe:	89 44 24 30          	mov    %eax,0x30(%esp)
409202:	0f 84 67 38 07 00    	je     0x47ca6f
409208:	50                   	push   %eax
409209:	56                   	push   %esi
40920a:	ff 75 0c             	push   0xc(%ebp)
40920d:	e8 3e 2e 01 00       	call   0x41c050
409212:	83 c4 0c             	add    $0xc,%esp
409215:	89 5c 24 18          	mov    %ebx,0x18(%esp)
409219:	8d 4c 24 38          	lea    0x38(%esp),%ecx
40921d:	89 5c 24 24          	mov    %ebx,0x24(%esp)
409221:	89 5c 24 28          	mov    %ebx,0x28(%esp)
409225:	e8 a4 2a 00 00       	call   0x40bcce
40922a:	83 7c 24 30 00       	cmpl   $0x0,0x30(%esp)
40922f:	0f 8e d0 00 00 00    	jle    0x409305
409235:	8b 44 24 2c          	mov    0x2c(%esp),%eax
409239:	2b c3                	sub    %ebx,%eax
40923b:	0f 84 84 38 07 00    	je     0x47cac5
409241:	48                   	dec    %eax
409242:	0f 85 af 00 00 00    	jne    0x4092f7
409248:	8b 44 24 10          	mov    0x10(%esp),%eax
40924c:	89 44 24 34          	mov    %eax,0x34(%esp)
409250:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
409254:	57                   	push   %edi
409255:	66 8b 11             	mov    (%ecx),%dx
409258:	8b c8                	mov    %eax,%ecx
40925a:	e8 f0 00 00 00       	call   0x40934f
40925f:	8b d0                	mov    %eax,%edx
409261:	59                   	pop    %ecx
409262:	89 54 24 20          	mov    %edx,0x20(%esp)
409266:	85 d2                	test   %edx,%edx
409268:	0f 84 b2 00 00 00    	je     0x409320
40926e:	8b 44 24 14          	mov    0x14(%esp),%eax
409272:	8b ca                	mov    %edx,%ecx
409274:	2b 4c 24 10          	sub    0x10(%esp),%ecx
409278:	d1 f9                	sar    $1,%ecx
40927a:	03 c8                	add    %eax,%ecx
40927c:	2b f9                	sub    %ecx,%edi
40927e:	0f 88 c4 00 00 00    	js     0x409348
409284:	50                   	push   %eax
409285:	ff 74 24 20          	push   0x20(%esp)
409289:	52                   	push   %edx
40928a:	e8 cc 85 01 00       	call   0x42185b
40928f:	83 c4 0c             	add    $0xc,%esp
409292:	85 c0                	test   %eax,%eax
409294:	0f 85 14 38 07 00    	jne    0x47caae
40929a:	8b 54 24 20          	mov    0x20(%esp),%edx
40929e:	8b 4c 24 34          	mov    0x34(%esp),%ecx
4092a2:	8b c2                	mov    %edx,%eax
4092a4:	2b c1                	sub    %ecx,%eax
4092a6:	d1 f8                	sar    $1,%eax
4092a8:	50                   	push   %eax
4092a9:	53                   	push   %ebx
4092aa:	51                   	push   %ecx
4092ab:	8d 4c 24 44          	lea    0x44(%esp),%ecx
4092af:	e8 9b 2f 00 00       	call   0x40c24f
4092b4:	8d 44 24 38          	lea    0x38(%esp),%eax
4092b8:	50                   	push   %eax
4092b9:	8d 4c 24 4c          	lea    0x4c(%esp),%ecx
4092bd:	e8 86 fd ff ff       	call   0x409048
4092c2:	ff 74 24 18          	push   0x18(%esp)
4092c6:	8d 44 24 4c          	lea    0x4c(%esp),%eax
4092ca:	56                   	push   %esi
4092cb:	50                   	push   %eax
4092cc:	ff 75 0c             	push   0xc(%ebp)
4092cf:	e8 fc 96 00 00       	call   0x4129d0
4092d4:	83 c4 10             	add    $0x10,%esp
4092d7:	ff 44 24 18          	incl   0x18(%esp)
4092db:	8d 4c 24 48          	lea    0x48(%esp),%ecx
4092df:	e8 3c 99 00 00       	call   0x412c20
4092e4:	8b 44 24 14          	mov    0x14(%esp),%eax
4092e8:	8b 4c 24 20          	mov    0x20(%esp),%ecx
4092ec:	ff 44 24 24          	incl   0x24(%esp)
4092f0:	8d 04 41             	lea    (%ecx,%eax,2),%eax
4092f3:	89 44 24 10          	mov    %eax,0x10(%esp)
4092f7:	8b 44 24 24          	mov    0x24(%esp),%eax
4092fb:	3b 44 24 30          	cmp    0x30(%esp),%eax
4092ff:	0f 8c 30 ff ff ff    	jl     0x409235
409305:	8d 4c 24 38          	lea    0x38(%esp),%ecx
409309:	e8 29 38 00 00       	call   0x40cb37
40930e:	5f                   	pop    %edi
40930f:	5e                   	pop    %esi
409310:	33 c0                	xor    %eax,%eax
409312:	5b                   	pop    %ebx
409313:	8b e5                	mov    %ebp,%esp
409315:	5d                   	pop    %ebp
409316:	c2 08 00             	ret    $0x8
409319:	8b fb                	mov    %ebx,%edi
40931b:	e9 99 fe ff ff       	jmp    0x4091b9
409320:	8b 44 24 10          	mov    0x10(%esp),%eax
409324:	8d 14 78             	lea    (%eax,%edi,2),%edx
409327:	89 54 24 20          	mov    %edx,0x20(%esp)
40932b:	e9 6e ff ff ff       	jmp    0x40929e
409330:	8a d3                	mov    %bl,%dl
409332:	e9 08 fe ff ff       	jmp    0x40913f
409337:	8b c3                	mov    %ebx,%eax
409339:	e9 01 fe ff ff       	jmp    0x40913f
40933e:	83 4c 24 18 ff       	orl    $0xffffffff,0x18(%esp)
409343:	e9 fc 37 07 00       	jmp    0x47cb44
409348:	03 c7                	add    %edi,%eax
40934a:	8d 14 42             	lea    (%edx,%eax,2),%edx
40934d:	eb d8                	jmp    0x409327
40934f:	55                   	push   %ebp
409350:	8b ec                	mov    %esp,%ebp
409352:	8b 45 08             	mov    0x8(%ebp),%eax
409355:	85 c0                	test   %eax,%eax
409357:	74 0b                	je     0x409364
409359:	66 39 11             	cmp    %dx,(%ecx)
40935c:	74 0a                	je     0x409368
40935e:	83 c1 02             	add    $0x2,%ecx
409361:	48                   	dec    %eax
409362:	75 f5                	jne    0x409359
409364:	33 c0                	xor    %eax,%eax
409366:	5d                   	pop    %ebp
409367:	c3                   	ret
409368:	8b c1                	mov    %ecx,%eax
40936a:	5d                   	pop    %ebp
40936b:	c3                   	ret
40936c:	55                   	push   %ebp
40936d:	8b ec                	mov    %esp,%ebp
40936f:	81 ec 94 00 00 00    	sub    $0x94,%esp
409375:	56                   	push   %esi
409376:	57                   	push   %edi
409377:	8b f1                	mov    %ecx,%esi
409379:	33 ff                	xor    %edi,%edi
40937b:	39 7e 08             	cmp    %edi,0x8(%esi)
40937e:	74 04                	je     0x409384
409380:	5f                   	pop    %edi
409381:	5e                   	pop    %esi
409382:	c9                   	leave
409383:	c3                   	ret
409384:	8b 46 0c             	mov    0xc(%esi),%eax
409387:	48                   	dec    %eax
409388:	74 4a                	je     0x4093d4
40938a:	48                   	dec    %eax
40938b:	0f 84 2c b9 06 00    	je     0x474cbd
409391:	48                   	dec    %eax
409392:	0f 85 27 b8 06 00    	jne    0x474bbf
409398:	dd 06                	fldl   (%esi)
40939a:	51                   	push   %ecx
40939b:	51                   	push   %ecx
40939c:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
4093a2:	dd 1c 24             	fstpl  (%esp)
4093a5:	68 e4 ee 4a 00       	push   $0x4aeee4
4093aa:	50                   	push   %eax
4093ab:	e8 7b 83 01 00       	call   0x42172b
4093b0:	83 c4 10             	add    $0x10,%esp
4093b3:	6a 10                	push   $0x10
4093b5:	e8 30 61 01 00       	call   0x41f4ea
4093ba:	59                   	pop    %ecx
4093bb:	85 c0                	test   %eax,%eax
4093bd:	74 10                	je     0x4093cf
4093bf:	8d 8d 6c ff ff ff    	lea    -0x94(%ebp),%ecx
4093c5:	51                   	push   %ecx
4093c6:	8b c8                	mov    %eax,%ecx