40806e:	8b 55 f8             	mov    -0x8(%ebp),%edx
408071:	8d 46 fa             	lea    -0x6(%esi),%eax
408074:	83 f8 10             	cmp    $0x10,%eax
408077:	0f 87 35 8d 07 00    	ja     0x480db2
40807d:	89 55 e0             	mov    %edx,-0x20(%ebp)
408080:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
408084:	0f 84 34 8d 07 00    	je     0x480dbe
40808a:	8b 4d 84             	mov    -0x7c(%ebp),%ecx
40808d:	66 89 32             	mov    %si,(%edx)
408090:	8b 7d fc             	mov    -0x4(%ebp),%edi
408093:	83 c2 02             	add    $0x2,%edx
408096:	83 c7 02             	add    $0x2,%edi
408099:	89 55 f8             	mov    %edx,-0x8(%ebp)
40809c:	89 7d fc             	mov    %edi,-0x4(%ebp)
40809f:	e9 ef f7 ff ff       	jmp    0x407893
4080a4:	66 83 7f 02 5d       	cmpw   $0x5d,0x2(%edi)
4080a9:	0f 85 bd fd ff ff    	jne    0x407e6c
4080af:	e9 df 7e 07 00       	jmp    0x47ff93
4080b4:	33 f6                	xor    %esi,%esi
4080b6:	83 c8 ff             	or     $0xffffffff,%eax
4080b9:	89 75 ac             	mov    %esi,-0x54(%ebp)
4080bc:	89 45 c4             	mov    %eax,-0x3c(%ebp)
4080bf:	8b 4d e0             	mov    -0x20(%ebp),%ecx
4080c2:	85 c9                	test   %ecx,%ecx
4080c4:	0f 84 fa 9f 07 00    	je     0x4820c4
4080ca:	85 f6                	test   %esi,%esi
4080cc:	75 1e                	jne    0x4080ec
4080ce:	8b b5 7c ff ff ff    	mov    -0x84(%ebp),%esi
4080d4:	89 75 90             	mov    %esi,-0x70(%ebp)
4080d7:	8b 75 8c             	mov    -0x74(%ebp),%esi
4080da:	89 75 d0             	mov    %esi,-0x30(%ebp)
4080dd:	8b 75 d8             	mov    -0x28(%ebp),%esi
4080e0:	89 75 a0             	mov    %esi,-0x60(%ebp)
4080e3:	8b 75 98             	mov    -0x68(%ebp),%esi
4080e6:	89 75 a8             	mov    %esi,-0x58(%ebp)
4080e9:	8b 75 ac             	mov    -0x54(%ebp),%esi
4080ec:	3b f0                	cmp    %eax,%esi
4080ee:	0f 84 99 80 07 00    	je     0x48018d
4080f4:	c7 45 88 02 00 00 00 	movl   $0x2,-0x78(%ebp)
4080fb:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
408102:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
408105:	85 db                	test   %ebx,%ebx
408107:	0f 85 8c 80 07 00    	jne    0x480199
40810d:	0f b7 47 02          	movzwl 0x2(%edi),%eax
408111:	83 f8 2b             	cmp    $0x2b,%eax
408114:	0f 84 6b 81 07 00    	je     0x480285
40811a:	83 f8 3f             	cmp    $0x3f,%eax
40811d:	0f 85 54 03 00 00    	jne    0x408477
408123:	8b 85 1c ff ff ff    	mov    -0xe4(%ebp),%eax
408129:	83 c7 02             	add    $0x2,%edi
40812c:	89 7d fc             	mov    %edi,-0x4(%ebp)
40812f:	8b 5d e0             	mov    -0x20(%ebp),%ebx
408132:	89 45 f0             	mov    %eax,-0x10(%ebp)
408135:	66 83 3b 75          	cmpw   $0x75,(%ebx)
408139:	0f 84 5a 81 07 00    	je     0x480299
40813f:	0f b7 0b             	movzwl (%ebx),%ecx
408142:	83 f9 1d             	cmp    $0x1d,%ecx
408145:	0f 84 49 87 07 00    	je     0x480894
40814b:	83 f9 1e             	cmp    $0x1e,%ecx
40814e:	0f 84 40 87 07 00    	je     0x480894
408154:	83 f9 1f             	cmp    $0x1f,%ecx
408157:	0f 84 37 87 07 00    	je     0x480894
40815d:	83 f9 20             	cmp    $0x20,%ecx
408160:	0f 84 2e 87 07 00    	je     0x480894
408166:	83 f9 17             	cmp    $0x17,%ecx
408169:	0f 83 13 03 00 00    	jae    0x408482
40816f:	dd d8                	fstp   %st(0)
408171:	be 34 00 00 00       	mov    $0x34,%esi
408176:	8b d9                	mov    %ecx,%ebx
408178:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40817b:	0f b7 01             	movzwl (%ecx),%eax
40817e:	83 f8 10             	cmp    $0x10,%eax
408181:	0f 84 d2 87 07 00    	je     0x480959
408187:	83 f8 0f             	cmp    $0xf,%eax
40818a:	0f 84 c9 87 07 00    	je     0x480959
408190:	83 c8 ff             	or     $0xffffffff,%eax
408193:	c7 45 ec ff ff ff ff 	movl   $0xffffffff,-0x14(%ebp)
40819a:	89 45 e8             	mov    %eax,-0x18(%ebp)
40819d:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
4081a1:	8b ca                	mov    %edx,%ecx
4081a3:	8b 55 e0             	mov    -0x20(%ebp),%edx
4081a6:	89 55 f8             	mov    %edx,-0x8(%ebp)
4081a9:	74 67                	je     0x408212
4081ab:	8b 55 f0             	mov    -0x10(%ebp),%edx
4081ae:	8b 45 ac             	mov    -0x54(%ebp),%eax
4081b1:	03 d6                	add    %esi,%edx
4081b3:	89 55 f0             	mov    %edx,-0x10(%ebp)
4081b6:	85 c0                	test   %eax,%eax
4081b8:	0f 85 e6 87 07 00    	jne    0x4809a4
4081be:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
4081c1:	83 f9 ff             	cmp    $0xffffffff,%ecx
4081c4:	0f 85 a2 87 07 00    	jne    0x48096c
4081ca:	8d 42 21             	lea    0x21(%edx),%eax
4081cd:	8b 4d e0             	mov    -0x20(%ebp),%ecx
4081d0:	66 89 01             	mov    %ax,(%ecx)
4081d3:	8d 51 02             	lea    0x2(%ecx),%edx
4081d6:	89 55 f8             	mov    %edx,-0x8(%ebp)
4081d9:	8b 7d ec             	mov    -0x14(%ebp),%edi
4081dc:	8b 75 e8             	mov    -0x18(%ebp),%esi
4081df:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
4081e3:	74 0c                	je     0x4081f1
4081e5:	f7 c3 00 00 00 10    	test   $0x10000000,%ebx
4081eb:	0f 85 0e 89 07 00    	jne    0x480aff
4081f1:	66 89 1a             	mov    %bx,(%edx)
4081f4:	83 c2 02             	add    $0x2,%edx
4081f7:	8b 5d 28             	mov    0x28(%ebp),%ebx
4081fa:	89 55 f8             	mov    %edx,-0x8(%ebp)
4081fd:	85 f6                	test   %esi,%esi
4081ff:	0f 89 1c 89 07 00    	jns    0x480b21
408205:	8b 7d fc             	mov    -0x4(%ebp),%edi
408208:	83 7d d4 00          	cmpl   $0x0,-0x2c(%ebp)
40820c:	0f 85 21 89 07 00    	jne    0x480b33
408212:	8b 4d 28             	mov    0x28(%ebp),%ecx
408215:	8b 45 88             	mov    -0x78(%ebp),%eax
408218:	09 41 68             	or     %eax,0x68(%ecx)
40821b:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40821e:	8b 4d 84             	mov    -0x7c(%ebp),%ecx
408221:	83 c7 02             	add    $0x2,%edi
408224:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
40822b:	89 7d fc             	mov    %edi,-0x4(%ebp)
40822e:	e9 60 f6 ff ff       	jmp    0x407893
408233:	8b 4d 2c             	mov    0x2c(%ebp),%ecx
408236:	a9 00 10 00 00       	test   $0x1000,%eax
40823b:	0f 85 db 9c 07 00    	jne    0x481f1c
408241:	8b 45 28             	mov    0x28(%ebp),%eax
408244:	ff 40 40             	incl   0x40(%eax)
408247:	8b 55 f8             	mov    -0x8(%ebp),%edx
40824a:	66 8b 40 40          	mov    0x40(%eax),%ax
40824e:	66 89 42 04          	mov    %ax,0x4(%edx)
408252:	8b 7d fc             	mov    -0x4(%ebp),%edi
408255:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40825c:	8b 45 28             	mov    0x28(%ebp),%eax
40825f:	ff 40 58             	incl   0x58(%eax)
408262:	81 78 58 fa 00 00 00 	cmpl   $0xfa,0x58(%eax)
408269:	0f 8f 91 a0 07 00    	jg     0x482300
40826f:	66 89 32             	mov    %si,(%edx)
408272:	89 55 e0             	mov    %edx,-0x20(%ebp)
408275:	89 55 b4             	mov    %edx,-0x4c(%ebp)
408278:	8b d0                	mov    %eax,%edx
40827a:	f7 d9                	neg    %ecx
40827c:	8b 42 68             	mov    0x68(%edx),%eax
40827f:	8b 7a 40             	mov    0x40(%edx),%edi
408282:	89 45 bc             	mov    %eax,-0x44(%ebp)
408285:	1b c0                	sbb    %eax,%eax
408287:	8d 8d 74 ff ff ff    	lea    -0x8c(%ebp),%ecx
40828d:	23 c1                	and    %ecx,%eax
40828f:	c7 85 74 ff ff ff 00 	movl   $0x0,-0x8c(%ebp)
408296:	00 00 00
408299:	81 fe 87 00 00 00    	cmp    $0x87,%esi
40829f:	0f 84 33 05 00 00    	je     0x4087d8
4082a5:	33 d2                	xor    %edx,%edx
4082a7:	83 fe 7f             	cmp    $0x7f,%esi
4082aa:	0f 84 32 05 00 00    	je     0x4087e2
4082b0:	81 fe 80 00 00 00    	cmp    $0x80,%esi
4082b6:	0f 84 26 05 00 00    	je     0x4087e2
4082bc:	33 c9                	xor    %ecx,%ecx
4082be:	50                   	push   %eax
4082bf:	ff 75 28             	push   0x28(%ebp)
4082c2:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
4082c8:	ff 75 20             	push   0x20(%ebp)
4082cb:	50                   	push   %eax
4082cc:	8d 85 4c ff ff ff    	lea    -0xb4(%ebp),%eax
4082d2:	50                   	push   %eax
4082d3:	8d 85 5c ff ff ff    	lea    -0xa4(%ebp),%eax
4082d9:	50                   	push   %eax
4082da:	8d 85 14 ff ff ff    	lea    -0xec(%ebp),%eax
4082e0:	50                   	push   %eax
4082e1:	8b 45 24             	mov    0x24(%ebp),%eax
4082e4:	03 c2                	add    %edx,%eax
4082e6:	50                   	push   %eax
4082e7:	ff 75 f0             	push   -0x10(%ebp)
4082ea:	8d 45 fc             	lea    -0x4(%ebp),%eax
4082ed:	ff 75 b0             	push   -0x50(%ebp)
4082f0:	8d 55 b4             	lea    -0x4c(%ebp),%edx
4082f3:	51                   	push   %ecx
4082f4:	ff 75 0c             	push   0xc(%ebp)
4082f7:	8b cb                	mov    %ebx,%ecx
4082f9:	50                   	push   %eax
4082fa:	e8 75 f1 ff ff       	call   0x407474
4082ff:	83 c4 34             	add    $0x34,%esp
408302:	85 c0                	test   %eax,%eax
408304:	0f 84 e2 04 00 00    	je     0x4087ec
40830a:	8b 45 28             	mov    0x28(%ebp),%eax
40830d:	ff 48 58             	decl   0x58(%eax)
408310:	81 fe 81 00 00 00    	cmp    $0x81,%esi
408316:	0f 84 0d 9c 07 00    	je     0x481f29
40831c:	81 fe 80 00 00 00    	cmp    $0x80,%esi
408322:	0f 8e 1d 9c 07 00    	jle    0x481f45
408328:	8b 5d 2c             	mov    0x2c(%ebp),%ebx
40832b:	8b 55 f8             	mov    -0x8(%ebp),%edx
40832e:	81 fe 87 00 00 00    	cmp    $0x87,%esi
408334:	0f 84 1c 9c 07 00    	je     0x481f56
40833a:	8b 85 6c ff ff ff    	mov    -0x94(%ebp),%eax
408340:	8b 8d 5c ff ff ff    	mov    -0xa4(%ebp),%ecx
408346:	8b 7d fc             	mov    -0x4(%ebp),%edi
408349:	66 83 3f 29          	cmpw   $0x29,(%edi)
40834d:	0f 85 98 9f 07 00    	jne    0x4822eb
408353:	85 db                	test   %ebx,%ebx
408355:	0f 84 a3 00 00 00    	je     0x4083fe
40835b:	8b 33                	mov    (%ebx),%esi
40835d:	8b 9d 74 ff ff ff    	mov    -0x8c(%ebp),%ebx
408363:	b9 eb ff ff 7f       	mov    $0x7fffffeb,%ecx
408368:	2b ce                	sub    %esi,%ecx
40836a:	8d 43 fc             	lea    -0x4(%ebx),%eax
40836d:	3b c8                	cmp    %eax,%ecx
40836f:	0f 8c 66 9d 07 00    	jl     0x4820db
408375:	8b 4d 2c             	mov    0x2c(%ebp),%ecx
408378:	8d 43 fc             	lea    -0x4(%ebx),%eax
40837b:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40837e:	03 c6                	add    %esi,%eax
408380:	89 01                	mov    %eax,(%ecx)
408382:	8b 4d 84             	mov    -0x7c(%ebp),%ecx
408385:	c7 42 02 02 00 78 00 	movl   $0x780002,0x2(%edx)
40838c:	b8 02 00 00 00       	mov    $0x2,%eax
408391:	66 89 42 06          	mov    %ax,0x6(%edx)
408395:	8b 7d fc             	mov    -0x4(%ebp),%edi
408398:	83 c2 08             	add    $0x8,%edx
40839b:	03 f8                	add    %eax,%edi
40839d:	89 55 f8             	mov    %edx,-0x8(%ebp)
4083a0:	89 7d fc             	mov    %edi,-0x4(%ebp)
4083a3:	e9 eb f4 ff ff       	jmp    0x407893
4083a8:	8b 45 d0             	mov    -0x30(%ebp),%eax
4083ab:	dd d8                	fstp   %st(0)
4083ad:	83 f8 fe             	cmp    $0xfffffffe,%eax
4083b0:	75 06                	jne    0x4083b8
4083b2:	83 c8 ff             	or     $0xffffffff,%eax
4083b5:	89 45 d0             	mov    %eax,-0x30(%ebp)
4083b8:	8b 5d f4             	mov    -0xc(%ebp),%ebx
4083bb:	8b 4d 90             	mov    -0x70(%ebp),%ecx
4083be:	89 45 8c             	mov    %eax,-0x74(%ebp)
4083c1:	8b 45 a0             	mov    -0x60(%ebp),%eax
4083c4:	89 45 d8             	mov    %eax,-0x28(%ebp)
4083c7:	8b 45 a8             	mov    -0x58(%ebp),%eax
4083ca:	89 8d 7c ff ff ff    	mov    %ecx,-0x84(%ebp)
4083d0:	89 45 98             	mov    %eax,-0x68(%ebp)
4083d3:	89 55 e0             	mov    %edx,-0x20(%ebp)
4083d6:	f6 c3 04             	test   $0x4,%bl
4083d9:	0f 85 9b 03 00 00    	jne    0x40877a
4083df:	b8 0c 00 00 00       	mov    $0xc,%eax
4083e4:	8b 4d 84             	mov    -0x7c(%ebp),%ecx
4083e7:	66 89 02             	mov    %ax,(%edx)
4083ea:	8b 7d fc             	mov    -0x4(%ebp),%edi
4083ed:	83 c2 02             	add    $0x2,%edx
4083f0:	83 c7 02             	add    $0x2,%edi
4083f3:	89 55 f8             	mov    %edx,-0x8(%ebp)
4083f6:	89 7d fc             	mov    %edi,-0x4(%ebp)
4083f9:	e9 95 f4 ff ff       	jmp    0x407893
4083fe:	8b 55 b4             	mov    -0x4c(%ebp),%edx
408401:	89 55 f8             	mov    %edx,-0x8(%ebp)
408404:	81 fe 91 00 00 00    	cmp    $0x91,%esi
40840a:	0f 84 70 f7 ff ff    	je     0x407b80
408410:	8b 5d a0             	mov    -0x60(%ebp),%ebx
408413:	89 5d d8             	mov    %ebx,-0x28(%ebp)
408416:	8b 5d a8             	mov    -0x58(%ebp),%ebx
408419:	89 5d 98             	mov    %ebx,-0x68(%ebp)
40841c:	8b 5d 90             	mov    -0x70(%ebp),%ebx
40841f:	89 9d 7c ff ff ff    	mov    %ebx,-0x84(%ebp)
408425:	8b 5d d0             	mov    -0x30(%ebp),%ebx
408428:	89 5d 8c             	mov    %ebx,-0x74(%ebp)
40842b:	c7 85 64 ff ff ff 00 	movl   $0x0,-0x9c(%ebp)
408432:	00 00 00
408435:	81 fe 81 00 00 00    	cmp    $0x81,%esi
40843b:	0f 8c ac 9b 07 00    	jl     0x481fed
408441:	83 fb fe             	cmp    $0xfffffffe,%ebx
408444:	0f 84 6a 9b 07 00    	je     0x481fb4
40844a:	85 c9                	test   %ecx,%ecx
40844c:	0f 89 e8 02 00 00    	jns    0x40873a
408452:	85 c0                	test   %eax,%eax
408454:	0f 88 26 f7 ff ff    	js     0x407b80
40845a:	8b 8d 4c ff ff ff    	mov    -0xb4(%ebp),%ecx
408460:	8b 5d f4             	mov    -0xc(%ebp),%ebx
408463:	83 c7 02             	add    $0x2,%edi
408466:	89 4d a0             	mov    %ecx,-0x60(%ebp)
408469:	8b 4d 84             	mov    -0x7c(%ebp),%ecx
40846c:	89 45 a8             	mov    %eax,-0x58(%ebp)
40846f:	89 7d fc             	mov    %edi,-0x4(%ebp)
408472:	e9 1c f4 ff ff       	jmp    0x407893
408477:	8b 85 60 ff ff ff    	mov    -0xa0(%ebp),%eax
40847d:	e9 ad fc ff ff       	jmp    0x40812f
408482:	83 f9 6e             	cmp    $0x6e,%ecx
408485:	0f 85 1a 01 00 00    	jne    0x4085a5
40848b:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
40848e:	dd d8                	fstp   %st(0)
408490:	85 c9                	test   %ecx,%ecx
408492:	0f 84 22 03 00 00    	je     0x4087ba
408498:	85 f6                	test   %esi,%esi
40849a:	0f 85 c0 83 07 00    	jne    0x480860
4084a0:	83 f9 ff             	cmp    $0xffffffff,%ecx
4084a3:	74 53                	je     0x4084f8
4084a5:	83 f9 01             	cmp    $0x1,%ecx
4084a8:	0f 85 c4 83 07 00    	jne    0x480872
4084ae:	8b 5d 28             	mov    0x28(%ebp),%ebx
4084b1:	83 c0 66             	add    $0x66,%eax
4084b4:	66 89 02             	mov    %ax,(%edx)
4084b7:	8b 7d fc             	mov    -0x4(%ebp),%edi
4084ba:	83 c2 02             	add    $0x2,%edx
4084bd:	89 55 f8             	mov    %edx,-0x8(%ebp)
4084c0:	e9 43 fd ff ff       	jmp    0x408208
4084c5:	8b 9d 54 ff ff ff    	mov    -0xac(%ebp),%ebx
4084cb:	81 fb ff ff 00 00    	cmp    $0xffff,%ebx
4084d1:	0f 87 a2 7b 07 00    	ja     0x480079
4084d7:	8b 55 f8             	mov    -0x8(%ebp),%edx
4084da:	be 01 00 00 00       	mov    $0x1,%esi
4084df:	66 89 9d f8 fe ff ff 	mov    %bx,-0x108(%ebp)
4084e6:	89 75 f0             	mov    %esi,-0x10(%ebp)
4084e9:	e9 97 f5 ff ff       	jmp    0x407a85
4084ee:	33 f6                	xor    %esi,%esi
4084f0:	8d 46 01             	lea    0x1(%esi),%eax
4084f3:	e9 c1 fb ff ff       	jmp    0x4080b9
4084f8:	83 c0 62             	add    $0x62,%eax
4084fb:	66 89 02             	mov    %ax,(%edx)
4084fe:	83 c2 02             	add    $0x2,%edx
408501:	89 55 f8             	mov    %edx,-0x8(%ebp)
408504:	8b 7d fc             	mov    -0x4(%ebp),%edi
408507:	8b 5d 28             	mov    0x28(%ebp),%ebx
40850a:	e9 f9 fc ff ff       	jmp    0x408208
40850f:	83 c7 04             	add    $0x4,%edi
408512:	89 7d fc             	mov    %edi,-0x4(%ebp)
408515:	66 83 3f 5c          	cmpw   $0x5c,(%edi)
408519:	0f 84 1b 79 07 00    	je     0x47fe3a
40851f:	0f b7 0f             	movzwl (%edi),%ecx
408522:	66 85 c9             	test   %cx,%cx
408525:	0f 84 6a 02 00 00    	je     0x408795
40852b:	85 f6                	test   %esi,%esi
40852d:	75 09                	jne    0x408538
40852f:	83 f9 5d             	cmp    $0x5d,%ecx
408532:	0f 84 5d 02 00 00    	je     0x408795
408538:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
40853c:	8b f1                	mov    %ecx,%esi
40853e:	89 b5 68 ff ff ff    	mov    %esi,-0x98(%ebp)
408544:	74 12                	je     0x408558
408546:	8b c6                	mov    %esi,%eax
408548:	25 00 fc 00 00       	and    $0xfc00,%eax
40854d:	3d 00 d8 00 00       	cmp    $0xd800,%eax
408552:	0f 84 40 79 07 00    	je     0x47fe98
408558:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
40855c:	75 12                	jne    0x408570
40855e:	83 fe 5c             	cmp    $0x5c,%esi
408561:	0f 84 5c 79 07 00    	je     0x47fec3
408567:	83 fe 5b             	cmp    $0x5b,%esi
40856a:	0f 84 af 79 07 00    	je     0x47ff1f
408570:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408573:	3b f3                	cmp    %ebx,%esi
408575:	0f 82 1f 9b 07 00    	jb     0x48209a
40857b:	0f 84 d9 f8 ff ff    	je     0x407e5a
408581:	c7 45 f0 02 00 00 00 	movl   $0x2,-0x10(%ebp)
408588:	83 fe 0d             	cmp    $0xd,%esi
40858b:	0f 84 bf 79 07 00    	je     0x47ff50
408591:	83 fe 0a             	cmp    $0xa,%esi
408594:	0f 84 b6 79 07 00    	je     0x47ff50