namespace TMPro.Examples
{

	// [TypeInfo RVA: 0x0]
	public class TMP_TextSelector_A : MonoBehaviour
	{
		private TMPro.TextMeshPro m_TextMeshPro; // 0x20
		private UnityEngine.Camera m_Camera; // 0x28
		private bool m_isHoveringObject; // 0x30
		private int m_selectedLink; // 0x34
		private int m_lastCharIndex; // 0x38
		private int m_lastWordIndex; // 0x3C

		// RVA: 0x326FAE4 VA: 0x781895AAE4
		private void Awake();
		/*
		 *   void *pvVar1;
		 *   long *plVar2;
		 *   void **ppvVar3;
		 *
		 *   if ((bRam000000000754ac06 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c5570);
		 *     bRam000000000754ac06 = 1;
		 *   }
		 *   pvVar1 = UnityEngine.Component.get_gameObject(this);
		 *   if (pvVar1 != null) {
		 *     pvVar1 = (void *)func_0x037f3038(pvVar1,*(undefined8 *)PTR_DAT_070c5570);
		 *     ppvVar3 = &this.m_TextMeshPro;
		 *     *ppvVar3 = pvVar1;
		 *     func_0x031fdc38(ppvVar3,pvVar1);
		 *     pvVar1 = UnityEngine.Camera.get_main();
		 *     this.m_Camera = pvVar1;
		 *     func_0x031fdc38(&this.m_Camera,pvVar1);
		 *     plVar2 = *ppvVar3;
		 *     if (plVar2 != null) {
		 *       (**(code **)(*plVar2 + 0x7d8))(plVar2,0,0,*(undefined8 *)(*plVar2 + 0x7e0));
		 *       return;
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x326FB88 VA: 0x781895AB88
		private void LateUpdate();
		/*
		 *   uint uVar1;
		 *   undefined *puVar2;
		 *   bool bVar3;
		 *   uint uVar4;
		 *   uint uVar5;
		 *   uint uVar6;
		 *   int iVar7;
		 *   void *pvVar8;
		 *   void *pvVar9;
		 *   long *plVar10;
		 *   long lVar11;
		 *   long lVar12;
		 *   ulong uVar13;
		 *   ulong uVar14;
		 *   float fVar15;
		 *   undefined4 in_s3;
		 *   float in_s4;
		 *   UnityEngine_Vector3 UVar16;
		 *   UnityEngine_Vector3 worldPoint;
		 *   undefined8 uStack_a0;
		 *   undefined4 uStack_98;
		 *   undefined8 uStack_90;
		 *   undefined8 uStack_88;
		 *   undefined8 uStack_80;
		 *   undefined8 uStack_78;
		 *   undefined8 uStack_70;
		 *
		 *   if ((bRam000000000754ac07 & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c5578);
		 *     func_0x031fdc8c(typeinfo_ptr_Unity_TextMeshPro_TMP_TextUtilities_6FC51F0);
		 *     func_0x031fdc8c(PTR_DAT_070c5580);
		 *     func_0x031fdc8c(PTR_DAT_070c5588);
		 *     bRam000000000754ac07 = 1;
		 *   }
		 *   uStack_70 = 0;
		 *   uStack_98 = 0;
		 *   uStack_a0 = 0;
		 *   this.m_isHoveringObject = false;
		 *   puVar2 = typeinfo_ptr_Unity_TextMeshPro_TMP_TextUtilities_6FC51F0;
		 *   uStack_88 = 0;
		 *   uStack_90 = 0;
		 *   uStack_78 = 0;
		 *   uStack_80 = 0;
		 *   if (this.m_TextMeshPro == null) goto LAB_033702bc;
		 *   pvVar8 = TMPro.TMP_Text.get_rectTransform(this.m_TextMeshPro);
		 *   UVar16 = UnityEngine.Input.get_mousePosition();
		 *   pvVar9 = UnityEngine.Camera.get_main();
		 *   if (*(int *)(*(long *)puVar2 + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)puVar2);
		 *   }
		 *   bVar3 = TMP_TextUtilities.IsIntersectingRectTransform(pvVar8,UVar16,pvVar9);
		 *   if (bVar3) {
		 *     this.m_isHoveringObject = true;
		 *   }
		 *   else if (this.m_isHoveringObject == false) {
		 *     return;
		 *   }
		 *   pvVar9 = this.m_TextMeshPro;
		 *   UVar16 = UnityEngine.Input.get_mousePosition();
		 *   pvVar8 = UnityEngine.Camera.get_main();
		 *   if (*(int *)(*(long *)puVar2 + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)puVar2);
		 *   }
		 *   uVar4 = TMP_TextUtilities.FindIntersectingCharacter(pvVar9,UVar16,pvVar8,true);
		 *   if (((uVar4 != 0xffffffff) && (uVar4 != this.m_lastCharIndex)) &&
		 *      ((bVar3 = UnityEngine.Input.GetKey(0x130), bVar3 ||
		 *       (bVar3 = UnityEngine.Input.GetKey(0x12f), bVar3)))) {
		 *     this.m_lastCharIndex = uVar4;
		 *     if (((this.m_TextMeshPro == null) ||
		 *         (pvVar8 = TMPro.TMP_Text.get_textInfo(this.m_TextMeshPro)
		 *         , pvVar8 == null)) || (lVar11 = *(long *)((long)pvVar8 + 0x38), lVar11 == 0))
		 *     goto LAB_033702bc;
		 *     if (*(uint *)(lVar11 + 0x18) <= uVar4) goto LAB_033702c0;
		 *     if (this.m_TextMeshPro == null) goto LAB_033702bc;
		 *     uVar1 = *(uint *)(lVar11 + (long)(int)uVar4 * 0x178 + 0x50);
		 *     pvVar8 = TMPro.TMP_Text.get_textInfo(this.m_TextMeshPro);
		 *     if ((pvVar8 == null) || (lVar11 = *(long *)((long)pvVar8 + 0x38), lVar11 == 0))
		 *     goto LAB_033702bc;
		 *     if (*(uint *)(lVar11 + 0x18) <= uVar4) goto LAB_033702c0;
		 *     uVar4 = *(uint *)(lVar11 + (long)(int)uVar4 * 0x178 + 100);
		 *     uVar5 = Random.Range(0,0xff);
		 *     uVar6 = Random.Range(0,0xff);
		 *     iVar7 = Random.Range(0,0xff);
		 *     if (((this.m_TextMeshPro == null) ||
		 *         (pvVar8 = TMPro.TMP_Text.get_textInfo(this.m_TextMeshPro)
		 *         , pvVar8 == null)) || (lVar11 = *(long *)((long)pvVar8 + 0x60), lVar11 == 0))
		 *     goto LAB_033702bc;
		 *     if (*(uint *)(lVar11 + 0x18) <= uVar1) goto LAB_033702c0;
		 *     pvVar8 = *(void **)(lVar11 + (long)(int)uVar1 * 0x50 + 0x58);
		 *     if (pvVar8 == null) goto LAB_033702bc;
		 *     if (*(uint *)((long)pvVar8 + 0x18) <= uVar4) goto LAB_033702c0;
		 *     uVar5 = (uVar6 & 0xff) << 8 | iVar7 << 0x10 | uVar5 & 0xff | 0xff000000;
		 *     *(uint *)((long)pvVar8 + (long)(int)uVar4 * 4 + 0x20) = uVar5;
		 *     if (*(uint *)((long)pvVar8 + 0x18) <= uVar4 + 1) goto LAB_033702c0;
		 *     *(uint *)((long)pvVar8 + (long)(int)(uVar4 + 1) * 4 + 0x20) = uVar5;
		 *     if (*(uint *)((long)pvVar8 + 0x18) <= uVar4 + 2) goto LAB_033702c0;
		 *     *(uint *)((long)pvVar8 + (long)(int)(uVar4 + 2) * 4 + 0x20) = uVar5;
		 *     if (*(uint *)((long)pvVar8 + 0x18) <= uVar4 + 3) goto LAB_033702c0;
		 *     *(uint *)((long)pvVar8 + (long)(int)(uVar4 + 3) * 4 + 0x20) = uVar5;
		 *     if (((this.m_TextMeshPro == null) ||
		 *         (pvVar9 = TMPro.TMP_Text.get_textInfo(this.m_TextMeshPro)
		 *         , pvVar9 == null)) || (lVar11 = *(long *)((long)pvVar9 + 0x60), lVar11 == 0))
		 *     goto LAB_033702bc;
		 *     if (*(uint *)(lVar11 + 0x18) <= uVar1) goto LAB_033702c0;
		 *     pvVar9 = *(void **)(lVar11 + (long)(int)uVar1 * 0x50 + 0x20);
		 *     if (pvVar9 == null) goto LAB_033702bc;
		 *     UnityEngine.Mesh.set_colors32(pvVar9,pvVar8);
		 *   }
		 *   pvVar8 = this.m_TextMeshPro;
		 *   UVar16 = UnityEngine.Input.get_mousePosition();
		 *   pvVar9 = this.m_Camera;
		 *   if (*(int *)(*(long *)puVar2 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   uVar4 = TMP_TextUtilities.FindIntersectingLink(pvVar8,UVar16,pvVar9);
		 *   if (uVar4 == 0xffffffff) {
		 *     if (this.m_selectedLink != 0xffffffff) {
		 *       this.m_selectedLink = -1;
		 *     }
		 *   }
		 *   else if (uVar4 != this.m_selectedLink) {
		 *     this.m_selectedLink = uVar4;
		 *     if (((this.m_TextMeshPro == null) ||
		 *         (pvVar8 = TMPro.TMP_Text.get_textInfo(this.m_TextMeshPro)
		 *         , pvVar8 == null)) || (lVar11 = *(long *)((long)pvVar8 + 0x48), lVar11 == 0))
		 *     goto LAB_033702bc;
		 *     if (*(uint *)(lVar11 + 0x18) <= uVar4) goto LAB_033702c0;
		 *     lVar11 = lVar11 + (long)(int)uVar4 * 0x28;
		 *     uStack_88 = *(undefined8 *)(lVar11 + 0x28);
		 *     uStack_90 = *(undefined8 *)(lVar11 + 0x20);
		 *     uStack_78 = *(undefined8 *)(lVar11 + 0x38);
		 *     uStack_80 = *(undefined8 *)(lVar11 + 0x30);
		 *     uStack_70 = *(undefined8 *)(lVar11 + 0x40);
		 *     if (this.m_TextMeshPro == null) goto LAB_033702bc;
		 *     pvVar8 = TMPro.TMP_Text.get_rectTransform(this.m_TextMeshPro)
		 *     ;
		 *     UVar16 = UnityEngine.Input.get_mousePosition();
		 *     fVar15 = UVar16.z;
		 *     pvVar9 = this.m_Camera;
		 *     if (*(int *)(*(long *)PTR_DAT_070c5578 + 0xe4) == 0) {
		 *       func_0x031fde08();
		 *     }
		 *     worldPoint.y = (float)in_s3;
		 *     worldPoint.x = fVar15;
		 *     worldPoint.z = in_s4;
		 *     RectTransformUtility.ScreenPointToWorldPointInRectangle(pvVar8,UVar16._0_8_,pvVar9,worldPoint);
		 *     pvVar8 = TMPro.TMP_LinkInfo.GetLinkID(&uStack_90);
		 *     bVar3 = System.String.op_Equality(pvVar8,*(void **)PTR_DAT_070c5580);
		 *     if (!bVar3) {
		 *       System.String.op_Equality(pvVar8,*(void **)PTR_DAT_070c5588);
		 *     }
		 *   }
		 *   pvVar9 = this.m_TextMeshPro;
		 *   UVar16 = UnityEngine.Input.get_mousePosition();
		 *   pvVar8 = UnityEngine.Camera.get_main();
		 *   if (*(int *)(*(long *)puVar2 + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)puVar2);
		 *   }
		 *   uVar4 = TMP_TextUtilities.FindIntersectingWord(pvVar9,UVar16,pvVar8);
		 *   if ((uVar4 == 0xffffffff) || (uVar4 == this.m_lastWordIndex)) {
		 *     return;
		 *   }
		 *   this.m_lastWordIndex = uVar4;
		 *   if (((this.m_TextMeshPro != null) &&
		 *       (pvVar8 = TMPro.TMP_Text.get_textInfo(this.m_TextMeshPro),
		 *       pvVar8 != null)) && (lVar11 = *(long *)((long)pvVar8 + 0x40), lVar11 != 0)) {
		 *     if (*(uint *)(lVar11 + 0x18) <= uVar4) {
		 * LAB_033702c0:
		 *       IL2CPP.ThrowIndexOutOfRangeException();
		 *     }
		 *     if (this.m_TextMeshPro != null) {
		 *       lVar11 = lVar11 + (long)(int)uVar4 * 0x18;
		 *       uVar1 = *(uint *)(lVar11 + 0x28);
		 *       uVar4 = *(uint *)(lVar11 + 0x30);
		 *       uVar13 = (ulong)uVar4;
		 *       pvVar8 = TextMeshPro.get_transform(this.m_TextMeshPro);
		 *       if (((this.m_TextMeshPro != null) &&
		 *           (pvVar9 = TMPro.TMP_Text.get_textInfo(this.m_TextMeshPro), pvVar9 != null)) &&
		 *          (lVar11 = *(long *)((long)pvVar9 + 0x38), lVar11 != 0)) {
		 *         if (*(uint *)(lVar11 + 0x18) <= uVar1) goto LAB_033702c0;
		 *         if (pvVar8 != null) {
		 *           UVar16 = UnityEngine.Transform.TransformPoint(pvVar8,*(UnityEngine_Vector3 *)
		 *                                       (lVar11 + (long)(int)uVar1 * 0x178 + 0x114));
		 *           pvVar8 = UnityEngine.Camera.get_main();
		 *           if (pvVar8 != null) {
		 *             UnityEngine.Camera.WorldToScreenPoint(pvVar8,UVar16);
		 *             if (((this.m_TextMeshPro != null) &&
		 *                 (pvVar8 = TMPro.TMP_Text.get_textInfo(this.m_TextMeshPro), pvVar8 != null)) &&
		 *                (lVar11 = *(long *)((long)pvVar8 + 0x60), lVar11 != 0)) {
		 *               if (*(int *)(lVar11 + 0x18) == 0) goto LAB_033702c0;
		 *               pvVar8 = *(void **)(lVar11 + 0x58);
		 *               uVar5 = Random.Range(0,0xff);
		 *               uVar6 = Random.Range(0,0xff);
		 *               iVar7 = Random.Range(0,0xff);
		 *               if (0 < (int)uVar4) {
		 *                 lVar11 = (long)(int)uVar1 << 0x20;
		 *                 uVar14 = (ulong)uVar1;
		 *                 uVar4 = (uVar6 & 0xff) << 8 | iVar7 << 0x10 | uVar5 & 0xff | 0xff000000;
		 *                 do {
		 *                   if (((this.m_TextMeshPro == null) ||
		 *                       (pvVar9 = TMPro.TMP_Text.get_textInfo(this.m_TextMeshPro), pvVar9 == null))
		 *                      || (lVar12 = *(long *)((long)pvVar9 + 0x38), lVar12 == 0)) goto LAB_033702bc;
		 *                   if (*(uint *)(lVar12 + 0x18) <= uVar14) goto LAB_033702c0;
		 *                   if (pvVar8 == null) goto LAB_033702bc;
		 *                   uVar1 = *(uint *)(lVar12 + (long)(int)((ulong)lVar11 >> 0x20) * 0x178 + 100);
		 *                   if (*(uint *)((long)pvVar8 + 0x18) <= uVar1) goto LAB_033702c0;
		 *                   *(uint *)((long)pvVar8 + (long)(int)uVar1 * 4 + 0x20) = uVar4;
		 *                   if (*(uint *)((long)pvVar8 + 0x18) <= uVar1 + 1) goto LAB_033702c0;
		 *                   *(uint *)((long)pvVar8 + (long)(int)(uVar1 + 1) * 4 + 0x20) = uVar4;
		 *                   if (*(uint *)((long)pvVar8 + 0x18) <= uVar1 + 2) goto LAB_033702c0;
		 *                   *(uint *)((long)pvVar8 + (long)(int)(uVar1 + 2) * 4 + 0x20) = uVar4;
		 *                   if (*(uint *)((long)pvVar8 + 0x18) <= uVar1 + 3) goto LAB_033702c0;
		 *                   uVar13 = uVar13 - 1;
		 *                   lVar11 = lVar11 + 0x100000000;
		 *                   uVar14 = uVar14 + 1;
		 *                   *(uint *)((long)pvVar8 + (long)(int)(uVar1 + 3) * 4 + 0x20) = uVar4;
		 *                 } while (uVar13 != 0);
		 *               }
		 *               plVar10 = this.m_TextMeshPro;
		 *               if ((plVar10 != null) &&
		 *                  (pvVar9 = (void *)(**(code **)(*plVar10 + 0x608))
		 *                                              (plVar10,*(undefined8 *)(*plVar10 + 0x610)),
		 *                  pvVar9 != null)) {
		 *                 UnityEngine.Mesh.set_colors32(pvVar9,pvVar8);
		 *                 return;
		 *               }
		 *             }
		 *           }
		 *         }
		 *       }
		 *     }
		 *   }
		 * LAB_033702bc:
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x32702C4 VA: 0x781895B2C4
		public void OnPointerEnter(UnityEngine.EventSystems.PointerEventData eventData);
		/*
		 *   undefined *puVar1;
		 *   undefined *puVar2;
		 *   void *extraout_x1;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8;
		 *   if ((bRam000000000754ac08 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8);
		 *     func_0x031fdc8c(PTR_DAT_070c5590);
		 *     bRam000000000754ac08 = 1;
		 *     eventData = extraout_x1;
		 *   }
		 *   puVar2 = PTR_DAT_070c5590;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)puVar1,eventData);
		 *   }
		 *   UnityEngine.Debug.Log(*(void **)puVar2);
		 *   this.m_isHoveringObject = true;
		 *   return;
		 */
		// RVA: 0x327033C VA: 0x781895B33C
		public void OnPointerExit(UnityEngine.EventSystems.PointerEventData eventData);
		/*
		 *   undefined *puVar1;
		 *   undefined *puVar2;
		 *   void *extraout_x1;
		 *
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8;
		 *   if ((bRam000000000754ac09 & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Debug_6FC07A8);
		 *     func_0x031fdc8c(PTR_DAT_070c5598);
		 *     bRam000000000754ac09 = 1;
		 *     eventData = extraout_x1;
		 *   }
		 *   puVar2 = PTR_DAT_070c5598;
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08(*(long *)puVar1,eventData);
		 *   }
		 *   UnityEngine.Debug.Log(*(void **)puVar2);
		 *   this.m_isHoveringObject = false;
		 *   return;
		 */
		// RVA: 0x32703B0 VA: 0x781895B3B0
		public void .ctor();
		/*
		 *   undefined *puVar1;
		 *
		 *   this.m_lastWordIndex = -1;
		 *   this.m_selectedLink = -1;
		 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   this.m_lastCharIndex = -1;
		 *   if ((bRam000000000755f76f & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8,0);
		 *     bRam000000000755f76f = 1;
		 *   }
		 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   return;
		 */
	}
}
