47f615:	89 95 78 ff ff ff    	mov    %edx,-0x88(%ebp)
47f61b:	83 c2 08             	add    $0x8,%edx
47f61e:	89 55 f8             	mov    %edx,-0x8(%ebp)
47f621:	e9 2f 84 f8 ff       	jmp    0x407a55
47f626:	8b 4d 28             	mov    0x28(%ebp),%ecx
47f629:	8b 45 dc             	mov    -0x24(%ebp),%eax
47f62c:	81 fe ff 00 00 00    	cmp    $0xff,%esi
47f632:	77 1d                	ja     0x47f651
47f634:	8b 41 0c             	mov    0xc(%ecx),%eax
47f637:	f6 04 30 01          	testb  $0x1,(%eax,%esi,1)
47f63b:	74 11                	je     0x47f64e
47f63d:	83 c7 02             	add    $0x2,%edi
47f640:	89 7d fc             	mov    %edi,-0x4(%ebp)
47f643:	0f b7 37             	movzwl (%edi),%esi
47f646:	81 fe ff 00 00 00    	cmp    $0xff,%esi
47f64c:	76 e9                	jbe    0x47f637
47f64e:	8b 45 dc             	mov    -0x24(%ebp),%eax
47f651:	83 fe 23             	cmp    $0x23,%esi
47f654:	0f 85 bd 00 00 00    	jne    0x47f717
47f65a:	83 c7 02             	add    $0x2,%edi
47f65d:	89 7d fc             	mov    %edi,-0x4(%ebp)
47f660:	0f b7 17             	movzwl (%edi),%edx
47f663:	66 85 d2             	test   %dx,%dx
47f666:	74 3d                	je     0x47f6a5
47f668:	8b 71 7c             	mov    0x7c(%ecx),%esi
47f66b:	85 f6                	test   %esi,%esi
47f66d:	74 3b                	je     0x47f6aa
47f66f:	8b 49 1c             	mov    0x1c(%ecx),%ecx
47f672:	3b f9                	cmp    %ecx,%edi
47f674:	0f 83 98 00 00 00    	jae    0x47f712
47f67a:	50                   	push   %eax
47f67b:	8b 45 28             	mov    0x28(%ebp),%eax
47f67e:	83 e8 80             	sub    $0xffffff80,%eax
47f681:	50                   	push   %eax
47f682:	51                   	push   %ecx
47f683:	8b d6                	mov    %esi,%edx
47f685:	8b cf                	mov    %edi,%ecx
47f687:	e8 72 99 f8 ff       	call   0x408ffe
47f68c:	8b 4d 28             	mov    0x28(%ebp),%ecx
47f68f:	83 c4 0c             	add    $0xc,%esp
47f692:	85 c0                	test   %eax,%eax
47f694:	74 44                	je     0x47f6da
47f696:	8b 81 80 00 00 00    	mov    0x80(%ecx),%eax
47f69c:	8d 3c 47             	lea    (%edi,%eax,2),%edi
47f69f:	8b 45 dc             	mov    -0x24(%ebp),%eax
47f6a2:	89 7d fc             	mov    %edi,-0x4(%ebp)
47f6a5:	0f b7 37             	movzwl (%edi),%esi
47f6a8:	eb 82                	jmp    0x47f62c
47f6aa:	8b b1 80 00 00 00    	mov    0x80(%ecx),%esi
47f6b0:	8b 49 1c             	mov    0x1c(%ecx),%ecx
47f6b3:	8d 04 36             	lea    (%esi,%esi,1),%eax
47f6b6:	2b c8                	sub    %eax,%ecx
47f6b8:	3b f9                	cmp    %ecx,%edi
47f6ba:	8b 4d 28             	mov    0x28(%ebp),%ecx
47f6bd:	77 1b                	ja     0x47f6da
47f6bf:	66 3b 91 84 00 00 00 	cmp    0x84(%ecx),%dx
47f6c6:	75 12                	jne    0x47f6da
47f6c8:	83 fe 01             	cmp    $0x1,%esi
47f6cb:	74 c9                	je     0x47f696
47f6cd:	66 8b 47 02          	mov    0x2(%edi),%ax
47f6d1:	66 3b 81 86 00 00 00 	cmp    0x86(%ecx),%ax
47f6d8:	74 bc                	je     0x47f696
47f6da:	8b 45 dc             	mov    -0x24(%ebp),%eax
47f6dd:	83 c7 02             	add    $0x2,%edi
47f6e0:	89 7d fc             	mov    %edi,-0x4(%ebp)
47f6e3:	85 c0                	test   %eax,%eax
47f6e5:	74 1e                	je     0x47f705
47f6e7:	66 8b 07             	mov    (%edi),%ax
47f6ea:	ba 00 fc 00 00       	mov    $0xfc00,%edx
47f6ef:	66 23 c2             	and    %dx,%ax
47f6f2:	ba 00 dc 00 00       	mov    $0xdc00,%edx
47f6f7:	66 3b c2             	cmp    %dx,%ax
47f6fa:	8b 45 dc             	mov    -0x24(%ebp),%eax
47f6fd:	75 06                	jne    0x47f705
47f6ff:	83 c7 02             	add    $0x2,%edi
47f702:	89 7d fc             	mov    %edi,-0x4(%ebp)
47f705:	0f b7 17             	movzwl (%edi),%edx
47f708:	66 85 d2             	test   %dx,%dx
47f70b:	74 98                	je     0x47f6a5
47f70d:	e9 56 ff ff ff       	jmp    0x47f668
47f712:	8b 4d 28             	mov    0x28(%ebp),%ecx
47f715:	eb c6                	jmp    0x47f6dd
47f717:	8b 55 f8             	mov    -0x8(%ebp),%edx
47f71a:	e9 41 82 f8 ff       	jmp    0x407960
47f71f:	8d 4f 02             	lea    0x2(%edi),%ecx
47f722:	e8 73 18 ff ff       	call   0x470f9a
47f727:	8b 55 f8             	mov    -0x8(%ebp),%edx
47f72a:	85 c0                	test   %eax,%eax
47f72c:	0f 85 2b 88 f8 ff    	jne    0x407f5d
47f732:	e9 4d 82 f8 ff       	jmp    0x407984
47f737:	39 4d 84             	cmp    %ecx,-0x7c(%ebp)
47f73a:	0f 85 52 82 f8 ff    	jne    0x407992
47f740:	8b 85 58 ff ff ff    	mov    -0xa8(%ebp),%eax
47f746:	ff 8d 58 ff ff ff    	decl   -0xa8(%ebp)
47f74c:	85 c0                	test   %eax,%eax
47f74e:	0f 8f 3e 82 f8 ff    	jg     0x407992
47f754:	39 4d 2c             	cmp    %ecx,0x2c(%ebp)
47f757:	75 19                	jne    0x47f772
47f759:	8b 45 28             	mov    0x28(%ebp),%eax
47f75c:	2b 78 18             	sub    0x18(%eax),%edi
47f75f:	8b 85 78 ff ff ff    	mov    -0x88(%ebp),%eax
47f765:	d1 ff                	sar    $1,%edi
47f767:	66 2b 78 04          	sub    0x4(%eax),%di
47f76b:	66 89 78 06          	mov    %di,0x6(%eax)
47f76f:	8b 7d fc             	mov    -0x4(%ebp),%edi
47f772:	89 8d 78 ff ff ff    	mov    %ecx,-0x88(%ebp)
47f778:	e9 15 82 f8 ff       	jmp    0x407992
47f77d:	85 c9                	test   %ecx,%ecx
47f77f:	0f 85 1b 82 f8 ff    	jne    0x4079a0
47f785:	39 4d 84             	cmp    %ecx,-0x7c(%ebp)
47f788:	0f 85 12 82 f8 ff    	jne    0x4079a0
47f78e:	c7 02 76 00 ff 00    	movl   $0xff0076,(%edx)
47f794:	8d 42 04             	lea    0x4(%edx),%eax
47f797:	89 95 78 ff ff ff    	mov    %edx,-0x88(%ebp)
47f79d:	8b 55 28             	mov    0x28(%ebp),%edx
47f7a0:	2b 7a 18             	sub    0x18(%edx),%edi
47f7a3:	d1 ff                	sar    $1,%edi
47f7a5:	33 d2                	xor    %edx,%edx
47f7a7:	66 89 50 02          	mov    %dx,0x2(%eax)
47f7ab:	8d 50 04             	lea    0x4(%eax),%edx
47f7ae:	66 89 38             	mov    %di,(%eax)
47f7b1:	8b 7d fc             	mov    -0x4(%ebp),%edi
47f7b4:	8b 45 f4             	mov    -0xc(%ebp),%eax
47f7b7:	89 55 f8             	mov    %edx,-0x8(%ebp)
47f7ba:	e9 e1 81 f8 ff       	jmp    0x4079a0
47f7bf:	8b 5d f4             	mov    -0xc(%ebp),%ebx
47f7c2:	dd d8                	fstp   %st(0)
47f7c4:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
47f7cb:	f6 c3 02             	test   $0x2,%bl
47f7ce:	74 23                	je     0x47f7f3
47f7d0:	83 7d d0 fe          	cmpl   $0xfffffffe,-0x30(%ebp)
47f7d4:	75 07                	jne    0x47f7dd
47f7d6:	c7 45 d0 ff ff ff ff 	movl   $0xffffffff,-0x30(%ebp)
47f7dd:	b8 1c 00 00 00       	mov    $0x1c,%eax
47f7e2:	66 89 02             	mov    %ax,(%edx)
47f7e5:	8b 7d fc             	mov    -0x4(%ebp),%edi
47f7e8:	83 c2 02             	add    $0x2,%edx
47f7eb:	89 55 f8             	mov    %edx,-0x8(%ebp)
47f7ee:	e9 90 83 f8 ff       	jmp    0x407b83
47f7f3:	b8 1b 00 00 00       	mov    $0x1b,%eax
47f7f8:	66 89 02             	mov    %ax,(%edx)
47f7fb:	8b 7d fc             	mov    -0x4(%ebp),%edi
47f7fe:	83 c2 02             	add    $0x2,%edx
47f801:	89 55 f8             	mov    %edx,-0x8(%ebp)
47f804:	e9 7a 83 f8 ff       	jmp    0x407b83
47f809:	8b 5d f4             	mov    -0xc(%ebp),%ebx
47f80c:	dd d8                	fstp   %st(0)
47f80e:	f6 c3 02             	test   $0x2,%bl
47f811:	b8 00 00 00 00       	mov    $0x0,%eax
47f816:	0f 95 c0             	setne  %al
47f819:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
47f820:	83 c0 19             	add    $0x19,%eax
47f823:	66 89 02             	mov    %ax,(%edx)
47f826:	8b 7d fc             	mov    -0x4(%ebp),%edi
47f829:	83 c2 02             	add    $0x2,%edx
47f82c:	89 55 f8             	mov    %edx,-0x8(%ebp)
47f82f:	e9 4f 83 f8 ff       	jmp    0x407b83
47f834:	8b 45 28             	mov    0x28(%ebp),%eax
47f837:	dd d8                	fstp   %st(0)
47f839:	f7 40 60 00 00 00 02 	testl  $0x2000000,0x60(%eax)
47f840:	0f 84 0f 82 f8 ff    	je     0x407a55
47f846:	8b 45 0c             	mov    0xc(%ebp),%eax
47f849:	c7 00 40 00 00 00    	movl   $0x40,(%eax)
47f84f:	8b 45 08             	mov    0x8(%ebp),%eax
47f852:	89 38                	mov    %edi,(%eax)
47f854:	33 c0                	xor    %eax,%eax
47f856:	e9 d7 81 f8 ff       	jmp    0x407a32
47f85b:	8d 47 0e             	lea    0xe(%edi),%eax
47f85e:	bf c0 4d 4b 00       	mov    $0x4b4dc0,%edi
47f863:	89 45 84             	mov    %eax,-0x7c(%ebp)
47f866:	83 ef 02             	sub    $0x2,%edi
47f869:	8b 55 f8             	mov    -0x8(%ebp),%edx
47f86c:	e9 0f 83 f8 ff       	jmp    0x407b80
47f871:	8b 55 f8             	mov    -0x8(%ebp),%edx
47f874:	8d 47 0e             	lea    0xe(%edi),%eax
47f877:	bf 70 4e 4b 00       	mov    $0x4b4e70,%edi
47f87c:	89 45 84             	mov    %eax,-0x7c(%ebp)
47f87f:	83 ef 02             	sub    $0x2,%edi
47f882:	e9 f9 82 f8 ff       	jmp    0x407b80
47f887:	8d 55 80             	lea    -0x80(%ebp),%edx
47f88a:	8b cf                	mov    %edi,%ecx
47f88c:	e8 4b 11 ff ff       	call   0x4709dc
47f891:	85 c0                	test   %eax,%eax
47f893:	0f 84 db 84 f8 ff    	je     0x407d74
47f899:	8b 4d 0c             	mov    0xc(%ebp),%ecx
47f89c:	33 c0                	xor    %eax,%eax
47f89e:	66 83 7f 02 3a       	cmpw   $0x3a,0x2(%edi)
47f8a3:	0f 95 c0             	setne  %al
47f8a6:	48                   	dec    %eax
47f8a7:	83 e0 ee             	and    $0xffffffee,%eax
47f8aa:	83 c0 1f             	add    $0x1f,%eax
47f8ad:	89 01                	mov    %eax,(%ecx)
47f8af:	8b 45 08             	mov    0x8(%ebp),%eax
47f8b2:	89 38                	mov    %edi,(%eax)
47f8b4:	33 c0                	xor    %eax,%eax
47f8b6:	e9 77 81 f8 ff       	jmp    0x407a32
47f8bb:	8b 4d 28             	mov    0x28(%ebp),%ecx
47f8be:	f7 41 60 00 00 00 02 	testl  $0x2000000,0x60(%ecx)
47f8c5:	0f 84 dd 84 f8 ff    	je     0x407da8
47f8cb:	8b 55 f8             	mov    -0x8(%ebp),%edx
47f8ce:	f7 d8                	neg    %eax
47f8d0:	1b c0                	sbb    %eax,%eax
47f8d2:	25 70 ff ff ff       	and    $0xffffff70,%eax
47f8d7:	05 9d 00 00 00       	add    $0x9d,%eax
47f8dc:	66 89 02             	mov    %ax,(%edx)
47f8df:	8b 45 d0             	mov    -0x30(%ebp),%eax
47f8e2:	83 c2 02             	add    $0x2,%edx
47f8e5:	89 55 f8             	mov    %edx,-0x8(%ebp)
47f8e8:	83 f8 fe             	cmp    $0xfffffffe,%eax
47f8eb:	75 06                	jne    0x47f8f3
47f8ed:	83 c8 ff             	or     $0xffffffff,%eax
47f8f0:	89 45 d0             	mov    %eax,-0x30(%ebp)
47f8f3:	8b 4d 90             	mov    -0x70(%ebp),%ecx
47f8f6:	8b 7d fc             	mov    -0x4(%ebp),%edi
47f8f9:	89 8d 7c ff ff ff    	mov    %ecx,-0x84(%ebp)
47f8ff:	89 45 8c             	mov    %eax,-0x74(%ebp)
47f902:	e9 79 82 f8 ff       	jmp    0x407b80
47f907:	0f b7 1f             	movzwl (%edi),%ebx
47f90a:	8b c3                	mov    %ebx,%eax
47f90c:	25 00 fc 00 00       	and    $0xfc00,%eax
47f911:	3d 00 d8 00 00       	cmp    $0xd800,%eax
47f916:	0f 85 df 84 f8 ff    	jne    0x407dfb
47f91c:	0f b7 47 02          	movzwl 0x2(%edi),%eax
47f920:	83 c7 02             	add    $0x2,%edi
47f923:	81 e3 ff 03 00 00    	and    $0x3ff,%ebx
47f929:	c1 e3 0a             	shl    $0xa,%ebx
47f92c:	25 ff 03 00 00       	and    $0x3ff,%eax
47f931:	0b d8                	or     %eax,%ebx
47f933:	81 c3 00 00 01 00    	add    $0x10000,%ebx
47f939:	89 7d fc             	mov    %edi,-0x4(%ebp)
47f93c:	e9 ba 84 f8 ff       	jmp    0x407dfb
47f941:	2b f2                	sub    %edx,%esi
47f943:	d1 fe                	sar    $1,%esi
47f945:	01 31                	add    %esi,(%ecx)
47f947:	8b f2                	mov    %edx,%esi
47f949:	c7 45 b0 01 00 00 00 	movl   $0x1,-0x50(%ebp)
47f950:	89 75 e8             	mov    %esi,-0x18(%ebp)
47f953:	89 75 a4             	mov    %esi,-0x5c(%ebp)
47f956:	e9 af 84 f8 ff       	jmp    0x407e0a
47f95b:	83 fb 5c             	cmp    $0x5c,%ebx
47f95e:	0f 85 c2 84 f8 ff    	jne    0x407e26
47f964:	66 83 7f 02 45       	cmpw   $0x45,0x2(%edi)
47f969:	0f 85 b7 84 f8 ff    	jne    0x407e26
47f96f:	8b 4d d8             	mov    -0x28(%ebp),%ecx
47f972:	83 c7 02             	add    $0x2,%edi
47f975:	c7 45 cc 00 00 00 00 	movl   $0x0,-0x34(%ebp)
47f97c:	33 c0                	xor    %eax,%eax
47f97e:	e9 19 85 f8 ff       	jmp    0x407e9c
47f983:	0f b7 77 02          	movzwl 0x2(%edi),%esi
47f987:	83 fe 3a             	cmp    $0x3a,%esi
47f98a:	74 0e                	je     0x47f99a
47f98c:	83 fe 2e             	cmp    $0x2e,%esi
47f98f:	74 09                	je     0x47f99a
47f991:	83 fe 3d             	cmp    $0x3d,%esi
47f994:	0f 85 8c 84 f8 ff    	jne    0x407e26
47f99a:	8d 55 80             	lea    -0x80(%ebp),%edx
47f99d:	8b cf                	mov    %edi,%ecx
47f99f:	e8 38 10 ff ff       	call   0x4709dc
47f9a4:	85 c0                	test   %eax,%eax
47f9a6:	0f 84 7a 84 f8 ff    	je     0x407e26
47f9ac:	33 c0                	xor    %eax,%eax
47f9ae:	89 45 98             	mov    %eax,-0x68(%ebp)
47f9b1:	8b 45 28             	mov    0x28(%ebp),%eax
47f9b4:	8b 58 08             	mov    0x8(%eax),%ebx
47f9b7:	83 fe 3a             	cmp    $0x3a,%esi
47f9ba:	0f 85 7e 26 00 00    	jne    0x48203e
47f9c0:	83 c7 04             	add    $0x4,%edi
47f9c3:	89 7d fc             	mov    %edi,-0x4(%ebp)
47f9c6:	66 83 3f 5e          	cmpw   $0x5e,(%edi)
47f9ca:	75 13                	jne    0x47f9df
47f9cc:	be 01 00 00 00       	mov    $0x1,%esi
47f9d1:	83 c7 02             	add    $0x2,%edi
47f9d4:	89 75 98             	mov    %esi,-0x68(%ebp)
47f9d7:	89 75 e4             	mov    %esi,-0x1c(%ebp)
47f9da:	89 7d fc             	mov    %edi,-0x4(%ebp)
47f9dd:	eb 03                	jmp    0x47f9e2
47f9df:	8b 75 98             	mov    -0x68(%ebp),%esi
47f9e2:	8b 55 80             	mov    -0x80(%ebp),%edx
47f9e5:	2b d7                	sub    %edi,%edx
47f9e7:	d1 fa                	sar    $1,%edx
47f9e9:	8b cf                	mov    %edi,%ecx
47f9eb:	e8 a1 0f ff ff       	call   0x470991
47f9f0:	8b c8                	mov    %eax,%ecx
47f9f2:	85 c9                	test   %ecx,%ecx
47f9f4:	0f 88 2f 26 00 00    	js     0x482029
47f9fa:	8b 55 f4             	mov    -0xc(%ebp),%edx
47f9fd:	f6 c2 01             	test   $0x1,%dl
47fa00:	74 0b                	je     0x47fa0d
47fa02:	33 c0                	xor    %eax,%eax
47fa04:	83 f9 02             	cmp    $0x2,%ecx
47fa07:	0f 9e c0             	setle  %al
47fa0a:	48                   	dec    %eax
47fa0b:	23 c8                	and    %eax,%ecx
47fa0d:	f7 c2 00 00 00 20    	test   $0x20000000,%edx
47fa13:	74 7a                	je     0x47fa8f
47fa15:	8b c6                	mov    %esi,%eax
47fa17:	f7 d8                	neg    %eax
47fa19:	1b c0                	sbb    %eax,%eax
47fa1b:	83 e0 0e             	and    $0xe,%eax
47fa1e:	03 c1                	add    %ecx,%eax
47fa20:	8b 3c 85 88 ff 4b 00 	mov    0x4bff88(,%eax,4),%edi
47fa27:	85 ff                	test   %edi,%edi
47fa29:	74 17                	je     0x47fa42
47fa2b:	8b 45 80             	mov    -0x80(%ebp),%eax
47fa2e:	8b 75 e8             	mov    -0x18(%ebp),%esi
47fa31:	8b 4d d8             	mov    -0x28(%ebp),%ecx
47fa34:	83 c0 02             	add    $0x2,%eax
47fa37:	89 45 84             	mov    %eax,-0x7c(%ebp)
47fa3a:	83 c7 fe             	add    $0xfffffffe,%edi
47fa3d:	e9 54 84 f8 ff       	jmp    0x407e96
47fa42:	8b c1                	mov    %ecx,%eax
47fa44:	83 e8 08             	sub    $0x8,%eax
47fa47:	74 12                	je     0x47fa5b
47fa49:	48                   	dec    %eax
47fa4a:	74 08                	je     0x47fa54
47fa4c:	48                   	dec    %eax
47fa4d:	75 40                	jne    0x47fa8f
47fa4f:	8d 48 0d             	lea    0xd(%eax),%ecx
47fa52:	eb 0c                	jmp    0x47fa60
47fa54:	b9 0c 00 00 00       	mov    $0xc,%ecx
47fa59:	eb 05                	jmp    0x47fa60
47fa5b:	b9 0b 00 00 00       	mov    $0xb,%ecx
47fa60:	8b 7d 80             	mov    -0x80(%ebp),%edi
47fa63:	33 c0                	xor    %eax,%eax
47fa65:	85 f6                	test   %esi,%esi
47fa67:	8b 75 e8             	mov    -0x18(%ebp),%esi
47fa6a:	0f 95 c0             	setne  %al
47fa6d:	83 c6 06             	add    $0x6,%esi
47fa70:	89 75 a4             	mov    %esi,-0x5c(%ebp)
47fa73:	83 c0 03             	add    $0x3,%eax
47fa76:	66 89 46 fa          	mov    %ax,-0x6(%esi)
47fa7a:	66 89 4e fc          	mov    %cx,-0x4(%esi)
47fa7e:	8b 4d d8             	mov    -0x28(%ebp),%ecx
47fa81:	33 c0                	xor    %eax,%eax
47fa83:	66 89 46 fe          	mov    %ax,-0x2(%esi)
47fa87:	83 c7 02             	add    $0x2,%edi
47fa8a:	e9 04 84 f8 ff       	jmp    0x407e93
47fa8f:	8d 34 49             	lea    (%ecx,%ecx,2),%esi
47fa92:	6a 20                	push   $0x20
47fa94:	8b 04 b5 28 60 4b 00 	mov    0x4b6028(,%esi,4),%eax
47fa9b:	03 c3                	add    %ebx,%eax
47fa9d:	50                   	push   %eax
47fa9e:	8d 85 c8 fe ff ff    	lea    -0x138(%ebp),%eax
47faa4:	50                   	push   %eax
47faa5:	e8 d6 f3 f9 ff       	call   0x41ee80
47faaa:	8b 04 b5 2c 60 4b 00 	mov    0x4b602c(,%esi,4),%eax
47fab1:	8b 0c b5 30 60 4b 00 	mov    0x4b6030(,%esi,4),%ecx
47fab8:	83 c4 0c             	add    $0xc,%esp
47fabb:	85 c0                	test   %eax,%eax
47fabd:	78 2d                	js     0x47faec