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
486665:	0f 8e 4d ff ff ff    	jle    0x4865b8
48666b:	8b 55 c8             	mov    -0x38(%ebp),%edx
48666e:	e9 1f 44 f8 ff       	jmp    0x40aa92
486673:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
48667a:	83 f9 01             	cmp    $0x1,%ecx
48667d:	0f 8c 0c 44 f8 ff    	jl     0x40aa8f
486683:	8b 4d f8             	mov    -0x8(%ebp),%ecx
486686:	3b 4b 7c             	cmp    0x7c(%ebx),%ecx
486689:	0f 83 c8 36 00 00    	jae    0x489d57
48668f:	0f b7 11             	movzwl (%ecx),%edx
486692:	83 c1 02             	add    $0x2,%ecx
486695:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
486699:	89 55 f4             	mov    %edx,-0xc(%ebp)
48669c:	89 4d f8             	mov    %ecx,-0x8(%ebp)
48669f:	74 30                	je     0x4866d1
4866a1:	8b c2                	mov    %edx,%eax
4866a3:	25 00 fc 00 00       	and    $0xfc00,%eax
4866a8:	3d 00 d8 00 00       	cmp    $0xd800,%eax
4866ad:	75 22                	jne    0x4866d1
4866af:	0f b7 01             	movzwl (%ecx),%eax
4866b2:	81 e2 ff 03 00 00    	and    $0x3ff,%edx
4866b8:	c1 e2 0a             	shl    $0xa,%edx
4866bb:	25 ff 03 00 00       	and    $0x3ff,%eax
4866c0:	0b d0                	or     %eax,%edx
4866c2:	81 c2 00 00 01 00    	add    $0x10000,%edx
4866c8:	83 c1 02             	add    $0x2,%ecx
4866cb:	89 55 f4             	mov    %edx,-0xc(%ebp)
4866ce:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4866d1:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4866d4:	8b c2                	mov    %edx,%eax
4866d6:	99                   	cltd
4866d7:	83 e2 7f             	and    $0x7f,%edx
4866da:	03 c2                	add    %edx,%eax
4866dc:	c1 f8 07             	sar    $0x7,%eax
4866df:	0f b6 80 a0 c4 4a 00 	movzbl 0x4ac4a0(%eax),%eax
4866e6:	c1 e0 07             	shl    $0x7,%eax
4866e9:	81 e1 7f 00 00 80    	and    $0x8000007f,%ecx
4866ef:	79 05                	jns    0x4866f6
4866f1:	49                   	dec    %ecx
4866f2:	83 c9 80             	or     $0xffffff80,%ecx
4866f5:	41                   	inc    %ecx
4866f6:	8b 55 bc             	mov    -0x44(%ebp),%edx
4866f9:	03 c1                	add    %ecx,%eax
4866fb:	33 c9                	xor    %ecx,%ecx
4866fd:	0f b7 04 45 08 e6 49 	movzwl 0x49e608(,%eax,2),%eax
486704:	00
486705:	0f b6 04 c5 09 b1 4a 	movzbl 0x4ab109(,%eax,8),%eax
48670c:	00
48670d:	39 14 85 80 61 4b 00 	cmp    %edx,0x4b6180(,%eax,4)
486714:	0f 94 c1             	sete   %cl
486717:	3b 4d c4             	cmp    -0x3c(%ebp),%ecx
48671a:	0f 84 54 3e f8 ff    	je     0x40a574
486720:	8b 45 ec             	mov    -0x14(%ebp),%eax
486723:	40                   	inc    %eax
486724:	89 45 ec             	mov    %eax,-0x14(%ebp)
486727:	3b 45 f0             	cmp    -0x10(%ebp),%eax
48672a:	0f 8e 53 ff ff ff    	jle    0x486683
486730:	8b 55 c8             	mov    -0x38(%ebp),%edx
486733:	e9 57 43 f8 ff       	jmp    0x40aa8f
486738:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
48673f:	83 f9 01             	cmp    $0x1,%ecx
486742:	0f 8c 47 43 f8 ff    	jl     0x40aa8f
486748:	8b 4d f8             	mov    -0x8(%ebp),%ecx
48674b:	3b 4b 7c             	cmp    0x7c(%ebx),%ecx
48674e:	0f 83 03 36 00 00    	jae    0x489d57
486754:	0f b7 11             	movzwl (%ecx),%edx
486757:	83 c1 02             	add    $0x2,%ecx
48675a:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
48675e:	89 55 f4             	mov    %edx,-0xc(%ebp)
486761:	89 4d f8             	mov    %ecx,-0x8(%ebp)
486764:	74 30                	je     0x486796
486766:	8b c2                	mov    %edx,%eax
486768:	25 00 fc 00 00       	and    $0xfc00,%eax
48676d:	3d 00 d8 00 00       	cmp    $0xd800,%eax
486772:	75 22                	jne    0x486796
486774:	0f b7 01             	movzwl (%ecx),%eax
486777:	81 e2 ff 03 00 00    	and    $0x3ff,%edx
48677d:	c1 e2 0a             	shl    $0xa,%edx
486780:	25 ff 03 00 00       	and    $0x3ff,%eax
486785:	0b d0                	or     %eax,%edx
486787:	81 c2 00 00 01 00    	add    $0x10000,%edx
48678d:	83 c1 02             	add    $0x2,%ecx
486790:	89 55 f4             	mov    %edx,-0xc(%ebp)
486793:	89 4d f8             	mov    %ecx,-0x8(%ebp)
486796:	8b 4d f4             	mov    -0xc(%ebp),%ecx
486799:	8b c2                	mov    %edx,%eax
48679b:	99                   	cltd
48679c:	83 e2 7f             	and    $0x7f,%edx
48679f:	03 c2                	add    %edx,%eax
4867a1:	c1 f8 07             	sar    $0x7,%eax
4867a4:	0f b6 80 a0 c4 4a 00 	movzbl 0x4ac4a0(%eax),%eax
4867ab:	c1 e0 07             	shl    $0x7,%eax
4867ae:	81 e1 7f 00 00 80    	and    $0x8000007f,%ecx
4867b4:	79 05                	jns    0x4867bb
4867b6:	49                   	dec    %ecx
4867b7:	83 c9 80             	or     $0xffffff80,%ecx
4867ba:	41                   	inc    %ecx
4867bb:	03 c1                	add    %ecx,%eax
4867bd:	33 c9                	xor    %ecx,%ecx
4867bf:	0f b7 04 45 08 e6 49 	movzwl 0x49e608(,%eax,2),%eax
4867c6:	00
4867c7:	0f b6 04 c5 09 b1 4a 	movzbl 0x4ab109(,%eax,8),%eax
4867ce:	00
4867cf:	3b 45 bc             	cmp    -0x44(%ebp),%eax
4867d2:	0f 94 c1             	sete   %cl
4867d5:	3b 4d c4             	cmp    -0x3c(%ebp),%ecx
4867d8:	0f 84 96 3d f8 ff    	je     0x40a574
4867de:	8b 45 ec             	mov    -0x14(%ebp),%eax
4867e1:	40                   	inc    %eax
4867e2:	89 45 ec             	mov    %eax,-0x14(%ebp)
4867e5:	3b 45 f0             	cmp    -0x10(%ebp),%eax
4867e8:	0f 8e 5a ff ff ff    	jle    0x486748
4867ee:	8b 55 c8             	mov    -0x38(%ebp),%edx
4867f1:	e9 99 42 f8 ff       	jmp    0x40aa8f
4867f6:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
4867fd:	83 f9 01             	cmp    $0x1,%ecx
486800:	0f 8c 89 42 f8 ff    	jl     0x40aa8f
486806:	8b 4d f8             	mov    -0x8(%ebp),%ecx
486809:	3b 4b 7c             	cmp    0x7c(%ebx),%ecx
48680c:	0f 83 45 35 00 00    	jae    0x489d57
486812:	0f b7 11             	movzwl (%ecx),%edx
486815:	83 c1 02             	add    $0x2,%ecx
486818:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
48681c:	89 55 f4             	mov    %edx,-0xc(%ebp)
48681f:	89 4d f8             	mov    %ecx,-0x8(%ebp)
486822:	74 30                	je     0x486854
486824:	8b c2                	mov    %edx,%eax
486826:	25 00 fc 00 00       	and    $0xfc00,%eax
48682b:	3d 00 d8 00 00       	cmp    $0xd800,%eax
486830:	75 22                	jne    0x486854
486832:	0f b7 01             	movzwl (%ecx),%eax
486835:	81 e2 ff 03 00 00    	and    $0x3ff,%edx
48683b:	c1 e2 0a             	shl    $0xa,%edx
48683e:	25 ff 03 00 00       	and    $0x3ff,%eax
486843:	0b d0                	or     %eax,%edx
486845:	81 c2 00 00 01 00    	add    $0x10000,%edx
48684b:	83 c1 02             	add    $0x2,%ecx
48684e:	89 55 f4             	mov    %edx,-0xc(%ebp)
486851:	89 4d f8             	mov    %ecx,-0x8(%ebp)
486854:	8b 4d f4             	mov    -0xc(%ebp),%ecx
486857:	8b c2                	mov    %edx,%eax
486859:	99                   	cltd
48685a:	83 e2 7f             	and    $0x7f,%edx
48685d:	03 c2                	add    %edx,%eax
48685f:	c1 f8 07             	sar    $0x7,%eax
486862:	0f b6 80 a0 c4 4a 00 	movzbl 0x4ac4a0(%eax),%eax
486869:	c1 e0 07             	shl    $0x7,%eax
48686c:	81 e1 7f 00 00 80    	and    $0x8000007f,%ecx
486872:	79 05                	jns    0x486879
486874:	49                   	dec    %ecx
486875:	83 c9 80             	or     $0xffffff80,%ecx
486878:	41                   	inc    %ecx
486879:	03 c1                	add    %ecx,%eax
48687b:	33 c9                	xor    %ecx,%ecx
48687d:	0f b7 04 45 08 e6 49 	movzwl 0x49e608(,%eax,2),%eax
486884:	00
486885:	0f b6 04 c5 08 b1 4a 	movzbl 0x4ab108(,%eax,8),%eax
48688c:	00
48688d:	3b 45 bc             	cmp    -0x44(%ebp),%eax
486890:	0f 94 c1             	sete   %cl
486893:	3b 4d c4             	cmp    -0x3c(%ebp),%ecx
486896:	0f 84 d8 3c f8 ff    	je     0x40a574
48689c:	8b 45 ec             	mov    -0x14(%ebp),%eax
48689f:	40                   	inc    %eax
4868a0:	89 45 ec             	mov    %eax,-0x14(%ebp)
4868a3:	3b 45 f0             	cmp    -0x10(%ebp),%eax
4868a6:	0f 8e 5a ff ff ff    	jle    0x486806
4868ac:	8b 55 c8             	mov    -0x38(%ebp),%edx
4868af:	e9 db 41 f8 ff       	jmp    0x40aa8f
4868b4:	83 f9 01             	cmp    $0x1,%ecx
4868b7:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4868ba:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
4868c1:	0f 8c cb 41 f8 ff    	jl     0x40aa92
4868c7:	3b 4b 7c             	cmp    0x7c(%ebx),%ecx
4868ca:	0f 83 87 34 00 00    	jae    0x489d57