4861bd:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4861c0:	8b 45 18             	mov    0x18(%ebp),%eax
4861c3:	40                   	inc    %eax
4861c4:	50                   	push   %eax
4861c5:	ff 75 14             	push   0x14(%ebp)
4861c8:	8b d7                	mov    %edi,%edx
4861ca:	53                   	push   %ebx
4861cb:	ff 75 0c             	push   0xc(%ebp)
4861ce:	ff 75 08             	push   0x8(%ebp)
4861d1:	e8 2a 41 f8 ff       	call   0x40a300
4861d6:	83 c4 14             	add    $0x14,%esp
4861d9:	85 c0                	test   %eax,%eax
4861db:	0f 85 e6 42 f8 ff    	jne    0x40a4c7
4861e1:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4861e4:	83 e9 02             	sub    $0x2,%ecx
4861e7:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4861ea:	3b ce                	cmp    %esi,%ecx
4861ec:	75 d2                	jne    0x4861c0
4861ee:	e9 de 41 f8 ff       	jmp    0x40a3d1
4861f3:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
4861fa:	85 f6                	test   %esi,%esi
4861fc:	74 7b                	je     0x486279
4861fe:	8b 5d 10             	mov    0x10(%ebp),%ebx
486201:	83 f8 01             	cmp    $0x1,%eax
486204:	0f 8c a1 00 00 00    	jl     0x4862ab
48620a:	8b 45 f8             	mov    -0x8(%ebp),%eax
48620d:	3b 43 7c             	cmp    0x7c(%ebx),%eax
486210:	0f 83 8f 49 f8 ff    	jae    0x40aba5
486216:	0f b7 30             	movzwl (%eax),%esi
486219:	83 c0 02             	add    $0x2,%eax
48621c:	89 45 f8             	mov    %eax,-0x8(%ebp)
48621f:	8b c6                	mov    %esi,%eax
486221:	25 00 fc 00 00       	and    $0xfc00,%eax
486226:	3d 00 d8 00 00       	cmp    $0xd800,%eax
48622b:	8b 45 f8             	mov    -0x8(%ebp),%eax
48622e:	89 75 ec             	mov    %esi,-0x14(%ebp)
486231:	75 26                	jne    0x486259
486233:	0f b7 00             	movzwl (%eax),%eax
486236:	8b de                	mov    %esi,%ebx
486238:	25 ff 03 00 00       	and    $0x3ff,%eax
48623d:	81 e3 ff 03 00 00    	and    $0x3ff,%ebx
486243:	c1 e3 0a             	shl    $0xa,%ebx
486246:	0b c3                	or     %ebx,%eax
486248:	05 00 00 01 00       	add    $0x10000,%eax
48624d:	89 45 ec             	mov    %eax,-0x14(%ebp)
486250:	8b 45 f8             	mov    -0x8(%ebp),%eax
486253:	83 c0 02             	add    $0x2,%eax
486256:	89 45 f8             	mov    %eax,-0x8(%ebp)
486259:	8b 75 ec             	mov    -0x14(%ebp),%esi
48625c:	39 75 e8             	cmp    %esi,-0x18(%ebp)
48625f:	8b 75 e4             	mov    -0x1c(%ebp),%esi
486262:	0f 84 0c 43 f8 ff    	je     0x40a574
486268:	8b 5d f4             	mov    -0xc(%ebp),%ebx
48626b:	43                   	inc    %ebx
48626c:	3b 5d dc             	cmp    -0x24(%ebp),%ebx
48626f:	89 5d f4             	mov    %ebx,-0xc(%ebp)
486272:	8b 5d 10             	mov    0x10(%ebp),%ebx
486275:	7e 93                	jle    0x48620a
486277:	eb 35                	jmp    0x4862ae
486279:	83 f8 01             	cmp    $0x1,%eax
48627c:	7c 2d                	jl     0x4862ab
48627e:	8b 75 f8             	mov    -0x8(%ebp),%esi
486281:	3b 73 7c             	cmp    0x7c(%ebx),%esi
486284:	0f 83 28 3c 00 00    	jae    0x489eb2
48628a:	0f b7 06             	movzwl (%esi),%eax
48628d:	83 c6 02             	add    $0x2,%esi
486290:	89 75 f8             	mov    %esi,-0x8(%ebp)
486293:	39 45 e8             	cmp    %eax,-0x18(%ebp)
486296:	0f 84 d8 42 f8 ff    	je     0x40a574
48629c:	8b 45 f4             	mov    -0xc(%ebp),%eax
48629f:	40                   	inc    %eax
4862a0:	89 45 f4             	mov    %eax,-0xc(%ebp)
4862a3:	3b 45 dc             	cmp    -0x24(%ebp),%eax
4862a6:	7e d9                	jle    0x486281
4862a8:	8b 75 e4             	mov    -0x1c(%ebp),%esi
4862ab:	8b 45 f8             	mov    -0x8(%ebp),%eax
4862ae:	8b 5d f0             	mov    -0x10(%ebp),%ebx
4862b1:	39 5d dc             	cmp    %ebx,-0x24(%ebp)
4862b4:	8b 5d 10             	mov    0x10(%ebp),%ebx
4862b7:	0f 84 a3 40 f8 ff    	je     0x40a360
4862bd:	85 d2                	test   %edx,%edx
4862bf:	0f 85 1b 3f 00 00    	jne    0x48a1e0
4862c5:	8b d0                	mov    %eax,%edx
4862c7:	89 55 e0             	mov    %edx,-0x20(%ebp)
4862ca:	85 f6                	test   %esi,%esi
4862cc:	0f 84 ff 00 00 00    	je     0x4863d1
4862d2:	8b 75 dc             	mov    -0x24(%ebp),%esi
4862d5:	3b 75 f0             	cmp    -0x10(%ebp),%esi
4862d8:	7d 69                	jge    0x486343
4862da:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
4862e1:	3b 43 7c             	cmp    0x7c(%ebx),%eax
4862e4:	0f 83 bd 00 00 00    	jae    0x4863a7
4862ea:	0f b7 00             	movzwl (%eax),%eax
4862ed:	8b 55 f8             	mov    -0x8(%ebp),%edx
4862f0:	89 45 d8             	mov    %eax,-0x28(%ebp)
4862f3:	25 00 fc 00 00       	and    $0xfc00,%eax
4862f8:	3d 00 d8 00 00       	cmp    $0xd800,%eax
4862fd:	75 25                	jne    0x486324
4862ff:	0f b7 42 02          	movzwl 0x2(%edx),%eax
486303:	81 65 d8 ff 03 00 00 	andl   $0x3ff,-0x28(%ebp)
48630a:	c1 65 d8 0a          	shll   $0xa,-0x28(%ebp)
48630e:	25 ff 03 00 00       	and    $0x3ff,%eax
486313:	0b 45 d8             	or     -0x28(%ebp),%eax
486316:	c7 45 f4 02 00 00 00 	movl   $0x2,-0xc(%ebp)
48631d:	05 00 00 01 00       	add    $0x10000,%eax
486322:	eb 03                	jmp    0x486327
486324:	8b 45 d8             	mov    -0x28(%ebp),%eax
486327:	39 45 e8             	cmp    %eax,-0x18(%ebp)
48632a:	74 11                	je     0x48633d
48632c:	8b 45 f4             	mov    -0xc(%ebp),%eax
48632f:	46                   	inc    %esi
486330:	8d 14 42             	lea    (%edx,%eax,2),%edx
486333:	89 55 f8             	mov    %edx,-0x8(%ebp)
486336:	8b c2                	mov    %edx,%eax
486338:	3b 75 f0             	cmp    -0x10(%ebp),%esi
48633b:	7c 9d                	jl     0x4862da
48633d:	8b 45 f8             	mov    -0x8(%ebp),%eax
486340:	8b 55 e0             	mov    -0x20(%ebp),%edx
486343:	85 c9                	test   %ecx,%ecx
486345:	0f 85 15 40 f8 ff    	jne    0x40a360
48634b:	3b c2                	cmp    %edx,%eax
48634d:	0f 84 7e 40 f8 ff    	je     0x40a3d1
486353:	8b 4d f8             	mov    -0x8(%ebp),%ecx
486356:	8b 75 e0             	mov    -0x20(%ebp),%esi
486359:	8b 45 18             	mov    0x18(%ebp),%eax
48635c:	40                   	inc    %eax
48635d:	50                   	push   %eax
48635e:	ff 75 14             	push   0x14(%ebp)
486361:	8b d7                	mov    %edi,%edx
486363:	53                   	push   %ebx
486364:	ff 75 0c             	push   0xc(%ebp)
486367:	ff 75 08             	push   0x8(%ebp)
48636a:	e8 91 3f f8 ff       	call   0x40a300
48636f:	83 c4 14             	add    $0x14,%esp
486372:	85 c0                	test   %eax,%eax
486374:	0f 85 4d 41 f8 ff    	jne    0x40a4c7
48637a:	8b 4d f8             	mov    -0x8(%ebp),%ecx
48637d:	83 e9 02             	sub    $0x2,%ecx
486380:	ba 00 fc 00 00       	mov    $0xfc00,%edx
486385:	66 8b 01             	mov    (%ecx),%ax
486388:	66 23 c2             	and    %dx,%ax
48638b:	ba 00 dc 00 00       	mov    $0xdc00,%edx
486390:	89 4d f8             	mov    %ecx,-0x8(%ebp)
486393:	66 3b c2             	cmp    %dx,%ax
486396:	75 06                	jne    0x48639e
486398:	83 e9 02             	sub    $0x2,%ecx
48639b:	89 4d f8             	mov    %ecx,-0x8(%ebp)
48639e:	3b ce                	cmp    %esi,%ecx
4863a0:	75 b7                	jne    0x486359
4863a2:	e9 2a 40 f8 ff       	jmp    0x40a3d1
4863a7:	83 bb 8c 00 00 00 00 	cmpl   $0x0,0x8c(%ebx)
4863ae:	74 90                	je     0x486340
4863b0:	3b 83 88 00 00 00    	cmp    0x88(%ebx),%eax
4863b6:	76 88                	jbe    0x486340
4863b8:	c7 43 68 01 00 00 00 	movl   $0x1,0x68(%ebx)
4863bf:	83 bb 8c 00 00 00 01 	cmpl   $0x1,0x8c(%ebx)
4863c6:	0f 8f 61 dd ff ff    	jg     0x48412d
4863cc:	e9 6f ff ff ff       	jmp    0x486340
4863d1:	8b 55 dc             	mov    -0x24(%ebp),%edx
4863d4:	3b 55 f0             	cmp    -0x10(%ebp),%edx
4863d7:	7d 1f                	jge    0x4863f8
4863d9:	8b 75 e8             	mov    -0x18(%ebp),%esi
4863dc:	3b 43 7c             	cmp    0x7c(%ebx),%eax
4863df:	73 60                	jae    0x486441
4863e1:	0f b7 00             	movzwl (%eax),%eax
4863e4:	3b f0                	cmp    %eax,%esi
4863e6:	74 0d                	je     0x4863f5
4863e8:	83 45 f8 02          	addl   $0x2,-0x8(%ebp)
4863ec:	8b 45 f8             	mov    -0x8(%ebp),%eax
4863ef:	42                   	inc    %edx
4863f0:	3b 55 f0             	cmp    -0x10(%ebp),%edx
4863f3:	7c e7                	jl     0x4863dc
4863f5:	8b 45 f8             	mov    -0x8(%ebp),%eax
4863f8:	85 c9                	test   %ecx,%ecx
4863fa:	0f 85 60 3f f8 ff    	jne    0x40a360
486400:	8b 75 e0             	mov    -0x20(%ebp),%esi
486403:	3b c6                	cmp    %esi,%eax
486405:	0f 84 c6 3f f8 ff    	je     0x40a3d1
48640b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
48640e:	8b 45 18             	mov    0x18(%ebp),%eax
486411:	40                   	inc    %eax
486412:	50                   	push   %eax
486413:	ff 75 14             	push   0x14(%ebp)
486416:	8b d7                	mov    %edi,%edx
486418:	53                   	push   %ebx
486419:	ff 75 0c             	push   0xc(%ebp)
48641c:	ff 75 08             	push   0x8(%ebp)
48641f:	e8 dc 3e f8 ff       	call   0x40a300
486424:	83 c4 14             	add    $0x14,%esp
486427:	85 c0                	test   %eax,%eax
486429:	0f 85 98 40 f8 ff    	jne    0x40a4c7
48642f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
486432:	83 e9 02             	sub    $0x2,%ecx
486435:	89 4d f8             	mov    %ecx,-0x8(%ebp)
486438:	3b ce                	cmp    %esi,%ecx
48643a:	75 d2                	jne    0x48640e
48643c:	e9 90 3f f8 ff       	jmp    0x40a3d1
486441:	83 bb 8c 00 00 00 00 	cmpl   $0x0,0x8c(%ebx)
486448:	74 ae                	je     0x4863f8
48644a:	3b 83 88 00 00 00    	cmp    0x88(%ebx),%eax
486450:	76 a6                	jbe    0x4863f8
486452:	c7 43 68 01 00 00 00 	movl   $0x1,0x68(%ebx)
486459:	83 bb 8c 00 00 00 01 	cmpl   $0x1,0x8c(%ebx)
486460:	7e 96                	jle    0x4863f8
486462:	b8 f4 ff ff ff       	mov    $0xfffffff4,%eax
486467:	e9 5b 40 f8 ff       	jmp    0x40a4c7
48646c:	0f b7 47 02          	movzwl 0x2(%edi),%eax
486470:	8b c8                	mov    %eax,%ecx
486472:	ba 01 00 00 00       	mov    $0x1,%edx
486477:	89 45 dc             	mov    %eax,-0x24(%ebp)
48647a:	89 4d f0             	mov    %ecx,-0x10(%ebp)
48647d:	89 55 c8             	mov    %edx,-0x38(%ebp)
486480:	83 c7 04             	add    $0x4,%edi
486483:	e9 db 45 f8 ff       	jmp    0x40aa63
486488:	0f b7 47 02          	movzwl 0x2(%edi),%eax
48648c:	89 55 f0             	mov    %edx,-0x10(%ebp)
48648f:	33 d2                	xor    %edx,%edx
486491:	83 f9 5c             	cmp    $0x5c,%ecx
486494:	0f 94 c2             	sete   %dl
486497:	83 c7 04             	add    $0x4,%edi
48649a:	89 45 dc             	mov    %eax,-0x24(%ebp)
48649d:	33 c9                	xor    %ecx,%ecx
48649f:	89 55 c8             	mov    %edx,-0x38(%ebp)
4864a2:	e9 bc 45 f8 ff       	jmp    0x40aa63
4864a7:	33 c9                	xor    %ecx,%ecx
4864a9:	be 01 00 00 00       	mov    $0x1,%esi
4864ae:	89 75 d0             	mov    %esi,-0x30(%ebp)
4864b1:	89 4d f0             	mov    %ecx,-0x10(%ebp)
4864b4:	83 c7 02             	add    $0x2,%edi
4864b7:	e9 a0 45 f8 ff       	jmp    0x40aa5c
4864bc:	be 01 00 00 00       	mov    $0x1,%esi
4864c1:	8b ce                	mov    %esi,%ecx
4864c3:	89 75 d0             	mov    %esi,-0x30(%ebp)
4864c6:	89 4d f0             	mov    %ecx,-0x10(%ebp)
4864c9:	83 c7 02             	add    $0x2,%edi
4864cc:	e9 8b 45 f8 ff       	jmp    0x40aa5c
4864d1:	be 01 00 00 00       	mov    $0x1,%esi
4864d6:	33 c9                	xor    %ecx,%ecx
4864d8:	89 75 d0             	mov    %esi,-0x30(%ebp)
4864db:	89 4d f0             	mov    %ecx,-0x10(%ebp)
4864de:	89 75 dc             	mov    %esi,-0x24(%ebp)
4864e1:	83 c7 02             	add    $0x2,%edi
4864e4:	e9 7a 45 f8 ff       	jmp    0x40aa63
4864e9:	0f b7 47 02          	movzwl 0x2(%edi),%eax
4864ed:	33 c9                	xor    %ecx,%ecx
4864ef:	be 01 00 00 00       	mov    $0x1,%esi
4864f4:	89 75 d0             	mov    %esi,-0x30(%ebp)
4864f7:	89 4d f0             	mov    %ecx,-0x10(%ebp)
4864fa:	89 45 dc             	mov    %eax,-0x24(%ebp)
4864fd:	83 c7 04             	add    $0x4,%edi
486500:	e9 5e 45 f8 ff       	jmp    0x40aa63
486505:	c7 45 c4 01 00 00 00 	movl   $0x1,-0x3c(%ebp)
48650c:	eb 07                	jmp    0x486515
48650e:	c7 45 c4 00 00 00 00 	movl   $0x0,-0x3c(%ebp)
486515:	0f b7 77 02          	movzwl 0x2(%edi),%esi
486519:	0f b7 07             	movzwl (%edi),%eax
48651c:	83 c7 04             	add    $0x4,%edi
48651f:	89 75 bc             	mov    %esi,-0x44(%ebp)
486522:	89 7d cc             	mov    %edi,-0x34(%ebp)
486525:	e9 5a 45 f8 ff       	jmp    0x40aa84
48652a:	85 c0                	test   %eax,%eax
48652c:	0f 88 27 08 00 00    	js     0x486d59
486532:	83 f8 0a             	cmp    $0xa,%eax
486535:	0f 87 dc 35 00 00    	ja     0x489b17
48653b:	ff 24 85 1e b9 48 00 	jmp    *0x48b91e(,%eax,4)
486542:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
486546:	0f 85 28 40 f8 ff    	jne    0x40a574
48654c:	8b 45 e4             	mov    -0x1c(%ebp),%eax
48654f:	83 f9 01             	cmp    $0x1,%ecx
486552:	8b 4d f8             	mov    -0x8(%ebp),%ecx
486555:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
48655c:	0f 8c 33 45 f8 ff    	jl     0x40aa95
486562:	3b 4b 7c             	cmp    0x7c(%ebx),%ecx
486565:	0f 83 ec 37 00 00    	jae    0x489d57
48656b:	0f b7 19             	movzwl (%ecx),%ebx
48656e:	83 c1 02             	add    $0x2,%ecx
486571:	89 5d ec             	mov    %ebx,-0x14(%ebp)
486574:	89 4d f8             	mov    %ecx,-0x8(%ebp)
486577:	85 c0                	test   %eax,%eax
486579:	74 16                	je     0x486591
48657b:	81 65 ec 00 fc 00 00 	andl   $0xfc00,-0x14(%ebp)
486582:	81 7d ec 00 d8 00 00 	cmpl   $0xd800,-0x14(%ebp)
486589:	75 06                	jne    0x486591
48658b:	83 c1 02             	add    $0x2,%ecx
48658e:	89 4d f8             	mov    %ecx,-0x8(%ebp)
486591:	8b 5d f4             	mov    -0xc(%ebp),%ebx
486594:	43                   	inc    %ebx
486595:	3b 5d f0             	cmp    -0x10(%ebp),%ebx
486598:	89 5d f4             	mov    %ebx,-0xc(%ebp)
48659b:	8b 5d 10             	mov    0x10(%ebp),%ebx
48659e:	7e c2                	jle    0x486562
4865a0:	e9 f0 44 f8 ff       	jmp    0x40aa95
4865a5:	83 f9 01             	cmp    $0x1,%ecx
4865a8:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4865ab:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
4865b2:	0f 8c da 44 f8 ff    	jl     0x40aa92
4865b8:	3b 4b 7c             	cmp    0x7c(%ebx),%ecx
4865bb:	0f 83 96 37 00 00    	jae    0x489d57
4865c1:	0f b7 11             	movzwl (%ecx),%edx
4865c4:	83 c1 02             	add    $0x2,%ecx
4865c7:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
4865cb:	89 55 f4             	mov    %edx,-0xc(%ebp)
4865ce:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4865d1:	74 30                	je     0x486603
4865d3:	8b c2                	mov    %edx,%eax
4865d5:	25 00 fc 00 00       	and    $0xfc00,%eax
4865da:	3d 00 d8 00 00       	cmp    $0xd800,%eax
4865df:	75 22                	jne    0x486603
4865e1:	0f b7 01             	movzwl (%ecx),%eax
4865e4:	81 e2 ff 03 00 00    	and    $0x3ff,%edx
4865ea:	c1 e2 0a             	shl    $0xa,%edx
4865ed:	25 ff 03 00 00       	and    $0x3ff,%eax
4865f2:	0b d0                	or     %eax,%edx
4865f4:	81 c2 00 00 01 00    	add    $0x10000,%edx
4865fa:	83 c1 02             	add    $0x2,%ecx
4865fd:	89 55 f4             	mov    %edx,-0xc(%ebp)
486600:	89 4d f8             	mov    %ecx,-0x8(%ebp)
486603:	8b c2                	mov    %edx,%eax
486605:	99                   	cltd
486606:	83 e2 7f             	and    $0x7f,%edx
486609:	03 c2                	add    %edx,%eax
48660b:	8b 55 f4             	mov    -0xc(%ebp),%edx
48660e:	c1 f8 07             	sar    $0x7,%eax
486611:	0f b6 80 a0 c4 4a 00 	movzbl 0x4ac4a0(%eax),%eax
486618:	c1 e0 07             	shl    $0x7,%eax
48661b:	81 e2 7f 00 00 80    	and    $0x8000007f,%edx
486621:	79 05                	jns    0x486628
486623:	4a                   	dec    %edx
486624:	83 ca 80             	or     $0xffffff80,%edx
486627:	42                   	inc    %edx
486628:	03 c2                	add    %edx,%eax
48662a:	0f b7 04 45 08 e6 49 	movzwl 0x49e608(,%eax,2),%eax
486631:	00
486632:	0f b6 04 c5 09 b1 4a 	movzbl 0x4ab109(,%eax,8),%eax
486639:	00
48663a:	83 f8 09             	cmp    $0x9,%eax
48663d:	74 0e                	je     0x48664d
48663f:	83 f8 05             	cmp    $0x5,%eax
486642:	74 09                	je     0x48664d
486644:	83 f8 08             	cmp    $0x8,%eax
486647:	74 04                	je     0x48664d
486649:	33 c0                	xor    %eax,%eax
48664b:	eb 05                	jmp    0x486652
48664d:	b8 01 00 00 00       	mov    $0x1,%eax
486652:	3b 45 c4             	cmp    -0x3c(%ebp),%eax
486655:	0f 84 19 3f f8 ff    	je     0x40a574
48665b:	8b 45 ec             	mov    -0x14(%ebp),%eax
48665e:	40                   	inc    %eax
48665f:	89 45 ec             	mov    %eax,-0x14(%ebp)
486662:	3b 45 f0             	cmp    -0x10(%ebp),%eax