// [TypeInfo RVA: 0x0]
public class FlareBillboard : MonoBehaviour
{
	public UnityEngine.Camera cam; // 0x20
	public bool autoScale; // 0x28
	public float scaleMultiplier; // 0x2C
	public UnityEngine.Vector3 upAxisOffset; // 0x30
	public bool enablePulse; // 0x3C
	public float pulseSpeed; // 0x40
	public float pulseAmount; // 0x44
	private UnityEngine.Vector3 baseScale; // 0x48

	// RVA: 0x3212E58 VA: 0x78188FDE58
	private void Start();
	/*
	 *   undefined *puVar1;
	 *   ulong uVar2;
	 *   void *extraout_x1;
	 *   void **ppvVar3;
	 *   void *pvVar4;
	 *   UnityEngine_Vector3 UVar5;
	 *
	 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
	 *   if ((bRam000000000754a82e & 1) == 0) {
	 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
	 *     bRam000000000754a82e = 1;
	 *     methodInfo = extraout_x1;
	 *   }
	 *   ppvVar3 = &this.cam;
	 *   pvVar4 = *ppvVar3;
	 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
	 *     func_0x031fde08(*(long *)puVar1,methodInfo);
	 *   }
	 *   uVar2 = UnityEngine.Object.op_Equality(pvVar4,null);
	 *   if ((uVar2 & 1) != 0) {
	 *     pvVar4 = UnityEngine.Camera.get_main();
	 *     *ppvVar3 = pvVar4;
	 *     func_0x031fdc38(ppvVar3,pvVar4);
	 *   }
	 *   pvVar4 = UnityEngine.Component.get_transform(this);
	 *   if (pvVar4 != null) {
	 *     UVar5 = UnityEngine.Transform.get_localScale(pvVar4);
	 *     (this.baseScale).x = UVar5.x;
	 *     (this.baseScale).y = UVar5.y;
	 *     (this.baseScale).z = UVar5.z;
	 *     return;
	 *   }
	 *   IL2CPP.ThrowNullReferenceException();
	 */
	// RVA: 0x3212F00 VA: 0x78188FDF00
	private void Update();
	/*
	 *   undefined *puVar1;
	 *   undefined *puVar2;
	 *   ulong uVar3;
	 *   void *extraout_x1;
	 *   float *pfVar4;
	 *   undefined8 *puVar5;
	 *   float *pfVar6;
	 *   long lVar7;
	 *   void *pvVar8;
	 *   UnityEngine_Vector3 *pUVar9;
	 *   float fVar10;
	 *   float fVar11;
	 *   float fVar12;
	 *   float fVar13;
	 *   float fVar14;
	 *   float fVar15;
	 *   undefined4 uVar16;
	 *   undefined4 uVar17;
	 *   UnityEngine_Vector3 UVar18;
	 *   UnityEngine_Vector3 UVar19;
	 *   UnityEngine_Vector4 value;
	 *
	 *   puVar1 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
	 *   if ((bRam000000000754a82f & 1) == 0) {
	 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8);
	 *     bRam000000000754a82f = 1;
	 *     methodInfo = extraout_x1;
	 *   }
	 *   pvVar8 = this.cam;
	 *   if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
	 *     func_0x031fde08(*(long *)puVar1,methodInfo);
	 *   }
	 *   uVar3 = UnityEngine.Object.op_Equality(pvVar8,null);
	 *   if ((uVar3 & 1) != 0) {
	 *     return;
	 *   }
	 *   pvVar8 = UnityEngine.Component.get_transform(this);
	 *   if (pvVar8 != null) {
	 *     UVar18 = UnityEngine.Transform.get_position(pvVar8);
	 *     if ((this.cam != null) &&
	 *        (pvVar8 = UnityEngine.Component.get_transform(this.cam),
	 *        pvVar8 != null)) {
	 *       UVar19 = UnityEngine.Transform.get_position(pvVar8);
	 *       if (cRam000000000754a7cc == '\0') {
	 *         func_0x031fdc8c(typeinfo_ptr_mscorlib_Math_6FC0738);
	 *         cRam000000000754a7cc = '\x01';
	 *       }
	 *       puVar1 = typeinfo_ptr_mscorlib_Math_6FC0738;
	 *       fVar13 = UVar18.x - UVar19.x;
	 *       fVar14 = UVar18.y - UVar19.y;
	 *       fVar15 = UVar18.z - UVar19.z;
	 *       if (*(int *)(*(long *)typeinfo_ptr_mscorlib_Math_6FC0738 + 0xe4) == 0) {
	 *         func_0x031fde08();
	 *       }
	 *       puVar2 = typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08;
	 *       fVar10 = SQRT(fVar15 * fVar15 + fVar13 * fVar13 + fVar14 * fVar14);
	 *       if (fVar10 <= _UNK_0134eeec) {
	 *         if (cRam000000000754a7ce == '\0') {
	 *           func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
	 *           cRam000000000754a7ce = '\x01';
	 *         }
	 *         pfVar4 = *(float **)(*(long *)puVar2 + 0xb8);
	 *         fVar13 = *pfVar4;
	 *         fVar14 = pfVar4[1];
	 *         fVar15 = pfVar4[2];
	 *       }
	 *       else {
	 *         fVar13 = fVar13 / fVar10;
	 *         fVar14 = fVar14 / fVar10;
	 *         fVar15 = fVar15 / fVar10;
	 *       }
	 *       pvVar8 = UnityEngine.Component.get_transform(this);
	 *       pUVar9 = &this.upAxisOffset;
	 *       uVar16 = pUVar9->x;
	 *       uVar17 = pUVar9->y;
	 *       pfVar4 = &(this.upAxisOffset).z;
	 *       fVar10 = *pfVar4;
	 *       if (cRam000000000754a7ce == '\0') {
	 *         func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
	 *         cRam000000000754a7ce = '\x01';
	 *       }
	 *       puVar5 = *(undefined8 **)(*(long *)puVar2 + 0xb8);
	 *       fVar11 = (float)uVar16 - (float)*puVar5;
	 *       fVar12 = (float)uVar17 - (float)((ulong)*puVar5 >> 0x20);
	 *       if (_UNK_0134e4ac <=
	 *           (fVar10 - *(float *)(puVar5 + 1)) * (fVar10 - *(float *)(puVar5 + 1)) +
	 *           fVar11 * fVar11 + fVar12 * fVar12) {
	 *         pfVar6 = &(this.upAxisOffset).y;
	 *       }
	 *       else {
	 *         if (cRam000000000754a7cb == '\0') {
	 *           func_0x031fdc8c(puVar2);
	 *           cRam000000000754a7cb = '\x01';
	 *           puVar5 = *(undefined8 **)(*(long *)puVar2 + 0xb8);
	 *         }
	 *         pUVar9 = (UnityEngine_Vector3 *)(puVar5 + 3);
	 *         pfVar6 = (float *)((long)puVar5 + 0x1c);
	 *         pfVar4 = (float *)(puVar5 + 4);
	 *       }
	 *       UVar19.x = pUVar9->x;
	 *       UVar19.y = *pfVar6;
	 *       UVar19.z = *pfVar4;
	 *       UVar18.y = fVar14;
	 *       UVar18.x = fVar13;
	 *       UVar18.z = fVar15;
	 *       value = UnityEngine.Quaternion.LookRotation(UVar18,UVar19);
	 *       if (pvVar8 != null) {
	 *         UnityEngine.Transform.set_rotation(pvVar8,value);
	 *         if ((this.cam != null) &&
	 *            (pvVar8 = UnityEngine.Component.get_transform(this.cam)
	 *            , pvVar8 != null)) {
	 *           UnityEngine.Transform.get_position(pvVar8);
	 *           pvVar8 = UnityEngine.Component.get_transform(this);
	 *           if (pvVar8 != null) {
	 *             UnityEngine.Transform.get_position(pvVar8);
	 *             if (cRam000000000754a7c9 == '\0') {
	 *               func_0x031fdc8c(typeinfo_ptr_mscorlib_Math_6FC0738);
	 *               cRam000000000754a7c9 = '\x01';
	 *             }
	 *             if (*(int *)(*(long *)puVar1 + 0xe4) == 0) {
	 *               func_0x031fde08();
	 *             }
	 *             if ((this.autoScale != false) && (cRam000000000754a89c == '\0')) {
	 *               func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
	 *               cRam000000000754a89c = '\x01';
	 *             }
	 *             if (this.enablePulse != false) {
	 *               fVar13 = UnityEngine.Time.get_time();
	 *               func_0x06cb3950(fVar13 * this.pulseSpeed);
	 *             }
	 *             pvVar8 = UnityEngine.Component.get_transform(this);
	 *             if (pvVar8 != null) {
	 *               if ((bRam000000000755ff21 & 1) == 0) {
	 *                 func_0x031fdc8c(PTR_DAT_0714f6d0,0);
	 *                 bRam000000000755ff21 = 1;
	 *               }
	 *               if (pvVar8 != null) {
	 *                 lVar7 = *(long *)((long)pvVar8 + 0x10);
	 *                 if (lVar7 == 0) {
	 *                   UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(pvVar8);
	 *                 }
	 *                 if (pcRam000000000755ff90 == null) {
	 *                   pcRam000000000755ff90 = (code *)func_0x031fdc50(&UNK_01396719);
	 *                 }
	 *                 (*pcRam000000000755ff90)(lVar7,&stack0xffffffffffffffd4);
	 *                 return;
	 *               }
	 *               IL2CPP.ThrowNullReferenceException();
	 *             }
	 *           }
	 *         }
	 *       }
	 *     }
	 *   }
	 *   IL2CPP.ThrowNullReferenceException();
	 */
	// RVA: 0x3213300 VA: 0x78188FE300
	public void .ctor();
	/*
	 *   undefined8 uVar1;
	 *   undefined4 uVar2;
	 *   undefined *puVar3;
	 *   char cVar4;
	 *   undefined8 uVar5;
	 *   undefined8 uVar6;
	 *   float fVar7;
	 *
	 *   cVar4 = cRam000000000754a7ce;
	 *   this.autoScale = true;
	 *   this.scaleMultiplier = 1.0;
	 *   if (cVar4 == '\0') {
	 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
	 *     cRam000000000754a7ce = '\x01';
	 *   }
	 *   uVar1 = _UNK_0134cb90;
	 *   uVar6 = **(undefined8 **)(*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8);
	 *   fVar7 = *(float *)(*(undefined8 **)
	 *                       (*(long *)typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 + 0xb8) + 1);
	 *   this.enablePulse = true;
	 *   uVar5 = _UNK_0134cb90;
	 *   _UNK_0134cb90 = (undefined4)uVar1;
	 *   _UNK_0134cb94 = SUB84(uVar1,4);
	 *   uVar2 = _UNK_0134cb94;
	 *   this.pulseSpeed = (float)_UNK_0134cb90;
	 *   _UNK_0134cb90 = uVar5;
	 *   this.pulseAmount = (float)uVar2;
	 *   (this.upAxisOffset).x = (float)(int)uVar6;
	 *   (this.upAxisOffset).y = (float)(int)((ulong)uVar6 >> 0x20);
	 *   (this.upAxisOffset).z = fVar7;
	 *   puVar3 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
	 *   if ((bRam000000000755f76f & 1) == 0) {
	 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8,0);
	 *     bRam000000000755f76f = 1;
	 *   }
	 *   if (*(int *)(*(long *)puVar3 + 0xe4) == 0) {
	 *     func_0x031fde08();
	 *   }
	 *   return;
	 */
}
