44a402:	8b 45 f8             	mov    -0x8(%ebp),%eax
44a405:	89 45 f0             	mov    %eax,-0x10(%ebp)
44a408:	3b 7d e4             	cmp    -0x1c(%ebp),%edi
44a40b:	7c 0a                	jl     0x44a417
44a40d:	8b f8                	mov    %eax,%edi
44a40f:	e9 a0 00 00 00       	jmp    0x44a4b4
44a414:	8b 45 f8             	mov    -0x8(%ebp),%eax
44a417:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
44a41e:	3b 46 7c             	cmp    0x7c(%esi),%eax
44a421:	73 66                	jae    0x44a489
44a423:	8b 55 dc             	mov    -0x24(%ebp),%edx
44a426:	0f b7 08             	movzwl (%eax),%ecx
44a429:	8b 7d f8             	mov    -0x8(%ebp),%edi
44a42c:	85 d2                	test   %edx,%edx
44a42e:	74 2f                	je     0x44a45f
44a430:	8b c1                	mov    %ecx,%eax
44a432:	25 00 fc 00 00       	and    $0xfc00,%eax
44a437:	3d 00 d8 00 00       	cmp    $0xd800,%eax
44a43c:	75 21                	jne    0x44a45f
44a43e:	0f b7 47 02          	movzwl 0x2(%edi),%eax
44a442:	81 e1 ff 03 00 00    	and    $0x3ff,%ecx
44a448:	25 ff 03 00 00       	and    $0x3ff,%eax
44a44d:	c1 e1 0a             	shl    $0xa,%ecx
44a450:	0b c8                	or     %eax,%ecx
44a452:	c7 45 ec 02 00 00 00 	movl   $0x2,-0x14(%ebp)
44a459:	81 c1 00 00 01 00    	add    $0x10000,%ecx
44a45f:	52                   	push   %edx
44a460:	8b 55 d8             	mov    -0x28(%ebp),%edx
44a463:	e8 7e 46 04 00       	call   0x48eae6
44a468:	83 c4 04             	add    $0x4,%esp
44a46b:	85 c0                	test   %eax,%eax
44a46d:	74 42                	je     0x44a4b1
44a46f:	8b 45 f8             	mov    -0x8(%ebp),%eax
44a472:	8b 4d ec             	mov    -0x14(%ebp),%ecx
44a475:	8b 7d e0             	mov    -0x20(%ebp),%edi
44a478:	47                   	inc    %edi
44a479:	89 7d e0             	mov    %edi,-0x20(%ebp)
44a47c:	8d 04 48             	lea    (%eax,%ecx,2),%eax
44a47f:	89 45 f8             	mov    %eax,-0x8(%ebp)
44a482:	3b 7d e4             	cmp    -0x1c(%ebp),%edi
44a485:	7c 8d                	jl     0x44a414
44a487:	eb 25                	jmp    0x44a4ae
44a489:	83 be 8c 00 00 00 00 	cmpl   $0x0,0x8c(%esi)
44a490:	74 1c                	je     0x44a4ae
44a492:	3b 86 88 00 00 00    	cmp    0x88(%esi),%eax
44a498:	76 14                	jbe    0x44a4ae
44a49a:	c7 46 68 01 00 00 00 	movl   $0x1,0x68(%esi)
44a4a1:	83 be 8c 00 00 00 01 	cmpl   $0x1,0x8c(%esi)
44a4a8:	0f 8f 12 ec ff ff    	jg     0x4490c0
44a4ae:	8b 7d f8             	mov    -0x8(%ebp),%edi
44a4b1:	8b 4d cc             	mov    -0x34(%ebp),%ecx
44a4b4:	85 c9                	test   %ecx,%ecx
44a4b6:	0f 85 e4 a7 fc ff    	jne    0x414ca0
44a4bc:	8b 45 18             	mov    0x18(%ebp),%eax
44a4bf:	8b d3                	mov    %ebx,%edx
44a4c1:	40                   	inc    %eax
44a4c2:	8b cf                	mov    %edi,%ecx
44a4c4:	50                   	push   %eax
44a4c5:	ff 75 14             	push   0x14(%ebp)
44a4c8:	56                   	push   %esi
44a4c9:	ff 75 0c             	push   0xc(%ebp)
44a4cc:	ff 75 08             	push   0x8(%ebp)
44a4cf:	e8 ec a4 fc ff       	call   0x4149c0
44a4d4:	83 c4 14             	add    $0x14,%esp
44a4d7:	85 c0                	test   %eax,%eax
44a4d9:	0f 85 5e a6 fc ff    	jne    0x414b3d
44a4df:	8b c7                	mov    %edi,%eax
44a4e1:	83 ef 02             	sub    $0x2,%edi
44a4e4:	3b 45 f0             	cmp    -0x10(%ebp),%eax
44a4e7:	0f 84 71 ab fc ff    	je     0x41505e
44a4ed:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
44a4f1:	74 18                	je     0x44a50b
44a4f3:	66 8b 07             	mov    (%edi),%ax
44a4f6:	b9 00 fc 00 00       	mov    $0xfc00,%ecx
44a4fb:	66 23 c1             	and    %cx,%ax
44a4fe:	b9 00 dc 00 00       	mov    $0xdc00,%ecx
44a503:	66 3b c1             	cmp    %cx,%ax
44a506:	75 03                	jne    0x44a50b
44a508:	83 ef 02             	sub    $0x2,%edi
44a50b:	8b 45 18             	mov    0x18(%ebp),%eax
44a50e:	8b d3                	mov    %ebx,%edx
44a510:	40                   	inc    %eax
44a511:	8b cf                	mov    %edi,%ecx
44a513:	50                   	push   %eax
44a514:	ff 75 14             	push   0x14(%ebp)
44a517:	56                   	push   %esi
44a518:	ff 75 0c             	push   0xc(%ebp)
44a51b:	ff 75 08             	push   0x8(%ebp)
44a51e:	e8 9d a4 fc ff       	call   0x4149c0
44a523:	83 c4 14             	add    $0x14,%esp
44a526:	85 c0                	test   %eax,%eax
44a528:	74 b5                	je     0x44a4df
44a52a:	e9 0e a6 fc ff       	jmp    0x414b3d
44a52f:	8b 46 7c             	mov    0x7c(%esi),%eax
44a532:	8b 4d f8             	mov    -0x8(%ebp),%ecx
44a535:	2b c1                	sub    %ecx,%eax
44a537:	83 e0 fe             	and    $0xfffffffe,%eax
44a53a:	83 f8 02             	cmp    $0x2,%eax
44a53d:	0f 8c e3 41 00 00    	jl     0x44e726
44a543:	66 8b 01             	mov    (%ecx),%ax
44a546:	83 c1 02             	add    $0x2,%ecx
44a549:	89 4d f8             	mov    %ecx,-0x8(%ebp)
44a54c:	66 39 43 02          	cmp    %ax,0x2(%ebx)
44a550:	0f 85 08 ab fc ff    	jne    0x41505e
44a556:	83 c3 04             	add    $0x4,%ebx
44a559:	e9 3f a7 fc ff       	jmp    0x414c9d
44a55e:	0f b7 43 02          	movzwl 0x2(%ebx),%eax
44a562:	81 e7 ff 03 00 00    	and    $0x3ff,%edi
44a568:	25 ff 03 00 00       	and    $0x3ff,%eax
44a56d:	c1 e7 0a             	shl    $0xa,%edi
44a570:	0b f8                	or     %eax,%edi
44a572:	ba 02 00 00 00       	mov    $0x2,%edx
44a577:	81 c7 00 00 01 00    	add    $0x10000,%edi
44a57d:	e9 4c a8 fc ff       	jmp    0x414dce
44a582:	83 c0 02             	add    $0x2,%eax
44a585:	89 4d ec             	mov    %ecx,-0x14(%ebp)
44a588:	89 45 f8             	mov    %eax,-0x8(%ebp)
44a58b:	8b c1                	mov    %ecx,%eax
44a58d:	25 00 fc 00 00       	and    $0xfc00,%eax
44a592:	3d 00 d8 00 00       	cmp    $0xd800,%eax
44a597:	75 23                	jne    0x44a5bc
44a599:	8b 45 f8             	mov    -0x8(%ebp),%eax
44a59c:	81 e1 ff 03 00 00    	and    $0x3ff,%ecx
44a5a2:	c1 e1 0a             	shl    $0xa,%ecx
44a5a5:	0f b7 00             	movzwl (%eax),%eax
44a5a8:	25 ff 03 00 00       	and    $0x3ff,%eax
44a5ad:	0b c8                	or     %eax,%ecx
44a5af:	81 c1 00 00 01 00    	add    $0x10000,%ecx
44a5b5:	83 45 f8 02          	addl   $0x2,-0x8(%ebp)
44a5b9:	89 4d ec             	mov    %ecx,-0x14(%ebp)
44a5bc:	8d 1c 53             	lea    (%ebx,%edx,2),%ebx
44a5bf:	8b 55 f8             	mov    -0x8(%ebp),%edx
44a5c2:	89 5d d0             	mov    %ebx,-0x30(%ebp)
44a5c5:	3b f9                	cmp    %ecx,%edi
44a5c7:	0f 84 52 a4 fc ff    	je     0x414a1f
44a5cd:	8b c7                	mov    %edi,%eax
44a5cf:	99                   	cltd
44a5d0:	83 e2 7f             	and    $0x7f,%edx
44a5d3:	03 c2                	add    %edx,%eax
44a5d5:	c1 f8 07             	sar    $0x7,%eax
44a5d8:	0f b6 88 40 3b 4b 00 	movzbl 0x4b3b40(%eax),%ecx
44a5df:	8b c7                	mov    %edi,%eax
44a5e1:	c1 e1 07             	shl    $0x7,%ecx
44a5e4:	25 7f 00 00 80       	and    $0x8000007f,%eax
44a5e9:	79 05                	jns    0x44a5f0
44a5eb:	48                   	dec    %eax
44a5ec:	83 c8 80             	or     $0xffffff80,%eax
44a5ef:	40                   	inc    %eax
44a5f0:	03 c8                	add    %eax,%ecx
44a5f2:	0f b7 04 4d 40 58 4a 	movzwl 0x4a5840(,%ecx,2),%eax
44a5f9:	00
44a5fa:	8b 04 c5 54 2f 4a 00 	mov    0x4a2f54(,%eax,8),%eax
44a601:	03 c7                	add    %edi,%eax
44a603:	39 45 ec             	cmp    %eax,-0x14(%ebp)
44a606:	0f 85 52 aa fc ff    	jne    0x41505e
44a60c:	e9 8f a6 fc ff       	jmp    0x414ca0
44a611:	0f b7 4b 02          	movzwl 0x2(%ebx),%ecx
44a615:	ba ff 00 00 00       	mov    $0xff,%edx
44a61a:	66 3b ca             	cmp    %dx,%cx
44a61d:	77 0c                	ja     0x44a62b
44a61f:	8b 46 3c             	mov    0x3c(%esi),%eax
44a622:	0f b6 14 08          	movzbl (%eax,%ecx,1),%edx
44a626:	8b 45 f8             	mov    -0x8(%ebp),%eax
44a629:	eb 02                	jmp    0x44a62d
44a62b:	8b d1                	mov    %ecx,%edx
44a62d:	0f b7 08             	movzwl (%eax),%ecx
44a630:	bf ff 00 00 00       	mov    $0xff,%edi
44a635:	66 3b cf             	cmp    %di,%cx
44a638:	77 0a                	ja     0x44a644
44a63a:	8b 46 3c             	mov    0x3c(%esi),%eax
44a63d:	0f b6 0c 08          	movzbl (%eax,%ecx,1),%ecx
44a641:	8b 45 f8             	mov    -0x8(%ebp),%eax
44a644:	3b d1                	cmp    %ecx,%edx
44a646:	0f 85 12 aa fc ff    	jne    0x41505e
44a64c:	83 c0 02             	add    $0x2,%eax
44a64f:	83 c3 04             	add    $0x4,%ebx
44a652:	89 45 f8             	mov    %eax,-0x8(%ebp)
44a655:	e9 43 a6 fc ff       	jmp    0x414c9d
44a65a:	0f b7 43 02          	movzwl 0x2(%ebx),%eax
44a65e:	83 c3 04             	add    $0x4,%ebx
44a661:	8b 55 d4             	mov    -0x2c(%ebp),%edx
44a664:	8b c8                	mov    %eax,%ecx
44a666:	89 45 e8             	mov    %eax,-0x18(%ebp)
44a669:	89 4d f0             	mov    %ecx,-0x10(%ebp)
44a66c:	e9 94 00 00 00       	jmp    0x44a705
44a671:	c7 45 cc 01 00 00 00 	movl   $0x1,-0x34(%ebp)
44a678:	33 c0                	xor    %eax,%eax
44a67a:	89 45 f0             	mov    %eax,-0x10(%ebp)
44a67d:	0f b7 43 02          	movzwl 0x2(%ebx),%eax
44a681:	89 45 e8             	mov    %eax,-0x18(%ebp)
44a684:	83 f9 28             	cmp    $0x28,%ecx
44a687:	74 09                	je     0x44a692
44a689:	83 f9 35             	cmp    $0x35,%ecx
44a68c:	74 04                	je     0x44a692
44a68e:	33 d2                	xor    %edx,%edx
44a690:	eb 05                	jmp    0x44a697
44a692:	ba 01 00 00 00       	mov    $0x1,%edx
44a697:	89 55 d4             	mov    %edx,-0x2c(%ebp)
44a69a:	83 c3 04             	add    $0x4,%ebx
44a69d:	eb 63                	jmp    0x44a702
44a69f:	b9 01 00 00 00       	mov    $0x1,%ecx
44a6a4:	c7 45 e8 ff ff ff 7f 	movl   $0x7fffffff,-0x18(%ebp)
44a6ab:	eb 09                	jmp    0x44a6b6
44a6ad:	33 c9                	xor    %ecx,%ecx
44a6af:	c7 45 e8 01 00 00 00 	movl   $0x1,-0x18(%ebp)
44a6b6:	8b 55 d4             	mov    -0x2c(%ebp),%edx
44a6b9:	83 c3 02             	add    $0x2,%ebx
44a6bc:	c7 45 cc 01 00 00 00 	movl   $0x1,-0x34(%ebp)
44a6c3:	89 4d f0             	mov    %ecx,-0x10(%ebp)
44a6c6:	eb 3d                	jmp    0x44a705
44a6c8:	83 ff 2e             	cmp    $0x2e,%edi
44a6cb:	8b cf                	mov    %edi,%ecx
44a6cd:	1b c0                	sbb    %eax,%eax
44a6cf:	83 c3 02             	add    $0x2,%ebx
44a6d2:	83 e0 f3             	and    $0xfffffff3,%eax
44a6d5:	83 c0 2e             	add    $0x2e,%eax
44a6d8:	2b c8                	sub    %eax,%ecx
44a6da:	0f b6 d1             	movzbl %cl,%edx
44a6dd:	83 e2 01             	and    $0x1,%edx
44a6e0:	89 55 d4             	mov    %edx,-0x2c(%ebp)
44a6e3:	0f be 81 30 57 4a 00 	movsbl 0x4a5730(%ecx),%eax
44a6ea:	89 45 f0             	mov    %eax,-0x10(%ebp)
44a6ed:	0f be 81 3c 57 4a 00 	movsbl 0x4a573c(%ecx),%eax
44a6f4:	89 45 e8             	mov    %eax,-0x18(%ebp)
44a6f7:	85 c0                	test   %eax,%eax
44a6f9:	75 07                	jne    0x44a702
44a6fb:	c7 45 e8 ff ff ff 7f 	movl   $0x7fffffff,-0x18(%ebp)
44a702:	8b 4d f0             	mov    -0x10(%ebp),%ecx
44a705:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
44a709:	0f b7 03             	movzwl (%ebx),%eax
44a70c:	89 45 f4             	mov    %eax,-0xc(%ebp)
44a70f:	0f 84 5d 02 00 00    	je     0x44a972
44a715:	25 00 fc 00 00       	and    $0xfc00,%eax
44a71a:	c7 45 e4 01 00 00 00 	movl   $0x1,-0x1c(%ebp)
44a721:	89 5d ec             	mov    %ebx,-0x14(%ebp)
44a724:	3d 00 d8 00 00       	cmp    $0xd800,%eax
44a729:	75 26                	jne    0x44a751
44a72b:	81 65 f4 ff 03 00 00 	andl   $0x3ff,-0xc(%ebp)
44a732:	0f b7 43 02          	movzwl 0x2(%ebx),%eax
44a736:	c1 65 f4 0a          	shll   $0xa,-0xc(%ebp)
44a73a:	25 ff 03 00 00       	and    $0x3ff,%eax
44a73f:	0b 45 f4             	or     -0xc(%ebp),%eax
44a742:	05 00 00 01 00       	add    $0x10000,%eax
44a747:	c7 45 e4 02 00 00 00 	movl   $0x2,-0x1c(%ebp)
44a74e:	89 45 f4             	mov    %eax,-0xc(%ebp)
44a751:	8b 75 e4             	mov    -0x1c(%ebp),%esi
44a754:	8d 04 36             	lea    (%esi,%esi,1),%eax
44a757:	03 d8                	add    %eax,%ebx
44a759:	89 45 d8             	mov    %eax,-0x28(%ebp)
44a75c:	8b 45 f4             	mov    -0xc(%ebp),%eax
44a75f:	83 fe 01             	cmp    $0x1,%esi
44a762:	8b 75 10             	mov    0x10(%ebp),%esi
44a765:	89 5d d0             	mov    %ebx,-0x30(%ebp)
44a768:	0f 8e 0a 02 00 00    	jle    0x44a978
44a76e:	83 ff 2e             	cmp    $0x2e,%edi
44a771:	72 53                	jb     0x44a7c6
44a773:	99                   	cltd
44a774:	83 e2 7f             	and    $0x7f,%edx
44a777:	03 c2                	add    %edx,%eax
44a779:	8b 55 f4             	mov    -0xc(%ebp),%edx
44a77c:	c1 f8 07             	sar    $0x7,%eax
44a77f:	0f b6 88 40 3b 4b 00 	movzbl 0x4b3b40(%eax),%ecx
44a786:	8b c2                	mov    %edx,%eax
44a788:	c1 e1 07             	shl    $0x7,%ecx
44a78b:	25 7f 00 00 80       	and    $0x8000007f,%eax
44a790:	79 05                	jns    0x44a797
44a792:	48                   	dec    %eax
44a793:	83 c8 80             	or     $0xffffff80,%eax
44a796:	40                   	inc    %eax
44a797:	03 c8                	add    %eax,%ecx
44a799:	0f b7 04 4d 40 58 4a 	movzwl 0x4a5840(,%ecx,2),%eax
44a7a0:	00
44a7a1:	8b 0c c5 54 2f 4a 00 	mov    0x4a2f54(,%eax,8),%ecx
44a7a8:	03 ca                	add    %edx,%ecx
44a7aa:	3b ca                	cmp    %edx,%ecx
44a7ac:	74 12                	je     0x44a7c0
44a7ae:	8d 55 98             	lea    -0x68(%ebp),%edx
44a7b1:	e8 74 47 04 00       	call   0x48ef2a
44a7b6:	8b 55 d4             	mov    -0x2c(%ebp),%edx
44a7b9:	8b f8                	mov    %eax,%edi
44a7bb:	8b 4d f0             	mov    -0x10(%ebp),%ecx
44a7be:	eb 08                	jmp    0x44a7c8
44a7c0:	8b 55 d4             	mov    -0x2c(%ebp),%edx
44a7c3:	8b 4d f0             	mov    -0x10(%ebp),%ecx
44a7c6:	33 ff                	xor    %edi,%edi
44a7c8:	89 7d e0             	mov    %edi,-0x20(%ebp)
44a7cb:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
44a7d2:	83 f9 01             	cmp    $0x1,%ecx
44a7d5:	7d 05                	jge    0x44a7dc
44a7d7:	8b 45 f8             	mov    -0x8(%ebp),%eax
44a7da:	eb 7c                	jmp    0x44a858
44a7dc:	8b 46 7c             	mov    0x7c(%esi),%eax
44a7df:	2b 45 d8             	sub    -0x28(%ebp),%eax
44a7e2:	8b 4d f8             	mov    -0x8(%ebp),%ecx
44a7e5:	3b c8                	cmp    %eax,%ecx
44a7e7:	77 24                	ja     0x44a80d
44a7e9:	8b 45 e4             	mov    -0x1c(%ebp),%eax
44a7ec:	03 c0                	add    %eax,%eax
44a7ee:	50                   	push   %eax
44a7ef:	ff 75 ec             	push   -0x14(%ebp)
44a7f2:	51                   	push   %ecx
44a7f3:	e8 cc 6e fd ff       	call   0x4216c4
44a7f8:	83 c4 0c             	add    $0xc,%esp
44a7fb:	85 c0                	test   %eax,%eax
44a7fd:	75 0b                	jne    0x44a80a
44a7ff:	8b 45 f8             	mov    -0x8(%ebp),%eax
44a802:	03 45 d8             	add    -0x28(%ebp),%eax
44a805:	89 45 f8             	mov    %eax,-0x8(%ebp)
44a808:	eb 3d                	jmp    0x44a847
44a80a:	8b 4d f8             	mov    -0x8(%ebp),%ecx
44a80d:	85 ff                	test   %edi,%edi
44a80f:	0f 8e 8d 40 00 00    	jle    0x44e8a2
44a815:	8b 46 7c             	mov    0x7c(%esi),%eax
44a818:	8d 14 3f             	lea    (%edi,%edi,1),%edx
44a81b:	2b c2                	sub    %edx,%eax
44a81d:	3b c8                	cmp    %eax,%ecx
44a81f:	0f 87 7d 40 00 00    	ja     0x44e8a2
44a825:	8d 04 3f             	lea    (%edi,%edi,1),%eax
44a828:	50                   	push   %eax
44a829:	8d 45 98             	lea    -0x68(%ebp),%eax
44a82c:	50                   	push   %eax
44a82d:	51                   	push   %ecx
44a82e:	e8 91 6e fd ff       	call   0x4216c4
44a833:	83 c4 0c             	add    $0xc,%esp
44a836:	85 c0                	test   %eax,%eax
44a838:	0f 85 61 40 00 00    	jne    0x44e89f
44a83e:	8d 04 3f             	lea    (%edi,%edi,1),%eax
44a841:	01 45 f8             	add    %eax,-0x8(%ebp)
44a844:	8b 45 f8             	mov    -0x8(%ebp),%eax
44a847:	8b 55 f4             	mov    -0xc(%ebp),%edx
44a84a:	8b 4d f0             	mov    -0x10(%ebp),%ecx
44a84d:	42                   	inc    %edx
44a84e:	89 55 f4             	mov    %edx,-0xc(%ebp)
44a851:	3b d1                	cmp    %ecx,%edx
44a853:	7e 87                	jle    0x44a7dc
44a855:	8b 55 d4             	mov    -0x2c(%ebp),%edx
44a858:	3b 4d e8             	cmp    -0x18(%ebp),%ecx
44a85b:	0f 84 3f a4 fc ff    	je     0x414ca0
44a861:	85 d2                	test   %edx,%edx
44a863:	0f 85 54 40 00 00    	jne    0x44e8bd
44a869:	8b d0                	mov    %eax,%edx
44a86b:	89 55 e0             	mov    %edx,-0x20(%ebp)
44a86e:	3b 4d e8             	cmp    -0x18(%ebp),%ecx
44a871:	0f 8d 97 00 00 00    	jge    0x44a90e
44a877:	8b 46 7c             	mov    0x7c(%esi),%eax
44a87a:	2b 45 d8             	sub    -0x28(%ebp),%eax
44a87d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
44a880:	3b c8                	cmp    %eax,%ecx
44a882:	77 1e                	ja     0x44a8a2
44a884:	8b 45 e4             	mov    -0x1c(%ebp),%eax