public VigTuple2 DAT_80_2; //0x80

    //FUN_25B4 (STEELMIL.DLL)
    public override uint UpdateW(int arg1, int arg2)
    {
        VigTuple        ppiVar2;
        List <VigTuple> ppiVar3;
        sbyte           sVar4;
        int             iVar4;
        short           sVar5;
        short           sVar6;
        bool            bVar7;
        int             iVar7;
        VigObject       oVar7;
        Furnace3        fVar7;
        VigTuple2       tVar7;
        int             iVar8;
        int             iVar9;
        VigObject       oVar9;
        VigTuple2       tVar10;
        VigObject       oVar11;
        uint            uVar12;
        uint            uVar13;
        Vector3Int      local_18;
        Vector3Int      local_28;

        switch (arg1)
        {
        case 0:
            switch (((byte)tags - 1) * 0x1000000 >> 0x18)
            {
            case 0:
                tVar10     = DAT_80_2;
                oVar9      = DAT_84;
                local_18   = new Vector3Int(0, 0, 0);
                local_28   = new Vector3Int();
                local_28.x = oVar9.vTransform.position.x - vTransform.position.x;
                local_28.z = oVar9.vTransform.position.z - vTransform.position.z;
                local_28.y = local_18.y;
                iVar7      = local_28.x;

                if (local_28.x < 0)
                {
                    iVar7 = -local_28.x;
                }

                if (0x5000 < iVar7)
                {
                    iVar7 = tVar10.array[0] << 16;

                    if (iVar7 < oVar9.vTransform.position.x)
                    {
                        iVar7 = oVar9.vTransform.position.x;
                    }

                    iVar8 = (tVar10.array[0] + tVar10.array[2]) * 0x10000;

                    if (iVar7 < iVar8)
                    {
                        iVar8 = iVar7;
                    }

                    iVar7  = tVar10.array[1] << 16;
                    iVar8 -= vTransform.position.x;

                    if (iVar7 < oVar9.vTransform.position.z)
                    {
                        iVar7 = oVar9.vTransform.position.z;
                    }

                    iVar9 = (tVar10.array[1] + tVar10.array[3]) * 0x10000;

                    if (iVar7 < iVar9)
                    {
                        iVar9 = iVar7;
                    }

                    iVar9 -= vTransform.position.z;
                    iVar7  = -3051;

                    if (-3052 < iVar8)
                    {
                        iVar7 = 3051;

                        if (iVar8 < 3052)
                        {
                            iVar7 = iVar8;
                        }
                    }

                    vTransform.position.x += iVar7;
                    iVar7 = -3051;

                    if (-3052 < iVar9)
                    {
                        iVar7 = 3051;

                        if (iVar9 < 3052)
                        {
                            iVar7 = iVar9;
                        }
                    }

                    vTransform.position.z += iVar7;
                    local_18.x             = local_28.x;
                    local_18.z             = local_28.z;
                    Utilities.FUN_2A098(local_28, out local_28);
                    iVar7 = local_28.z * vTransform.rotation.V02 - local_28.x * vTransform.rotation.V22;

                    if (iVar7 < 0)
                    {
                        iVar7 += 4095;
                    }

                    iVar7 >>= 12;
                    iVar9   = iVar7;

                    if (iVar7 < 0)
                    {
                        iVar9 = -iVar7;
                    }

                    if (20 < iVar9)
                    {
                        iVar9 = -iVar7;

                        if (0 < iVar7)
                        {
                            iVar9 += 15;
                        }

                        FUN_24700(0, (short)(iVar9 >> 4), 0);
                    }

                    if ((GameManager.instance.DAT_28 - DAT_19 & 15) == 0)
                    {
                        vTransform.rotation = Utilities.MatrixNormal(vTransform.rotation);
                        return(0);
                    }

                    return(0);
                }

                iVar7 = local_28.z;

                if (local_28.z < 0)
                {
                    iVar7 = -local_28.z;
                }

                if (0x5000 < iVar7)
                {
                    iVar7 = tVar10.array[0] << 16;

                    if (iVar7 < oVar9.vTransform.position.x)
                    {
                        iVar7 = oVar9.vTransform.position.x;
                    }

                    iVar8 = (tVar10.array[0] + tVar10.array[2]) * 0x10000;

                    if (iVar7 < iVar8)
                    {
                        iVar8 = iVar7;
                    }

                    iVar7  = tVar10.array[1] << 16;
                    iVar8 -= vTransform.position.x;

                    if (iVar7 < oVar9.vTransform.position.z)
                    {
                        iVar7 = oVar9.vTransform.position.z;
                    }

                    iVar9 = (tVar10.array[1] + tVar10.array[3]) * 0x10000;

                    if (iVar7 < iVar9)
                    {
                        iVar9 = iVar7;
                    }

                    iVar9 -= vTransform.position.z;
                    iVar7  = -3051;

                    if (-3052 < iVar8)
                    {
                        iVar7 = 3051;

                        if (iVar8 < 3052)
                        {
                            iVar7 = iVar8;
                        }
                    }

                    vTransform.position.x += iVar7;
                    iVar7 = -3051;

                    if (-3052 < iVar9)
                    {
                        iVar7 = 3051;

                        if (iVar9 < 3052)
                        {
                            iVar7 = iVar9;
                        }
                    }

                    vTransform.position.z += iVar7;
                    local_18.x             = local_28.x;
                    local_18.z             = local_28.z;
                    Utilities.FUN_2A098(local_28, out local_28);
                    iVar7 = local_28.z * vTransform.rotation.V02 - local_28.x * vTransform.rotation.V22;

                    if (iVar7 < 0)
                    {
                        iVar7 += 4095;
                    }

                    iVar7 >>= 12;
                    iVar9   = iVar7;

                    if (iVar7 < 0)
                    {
                        iVar9 = -iVar7;
                    }

                    if (20 < iVar9)
                    {
                        iVar9 = -iVar7;

                        if (0 < iVar7)
                        {
                            iVar9 += 15;
                        }

                        FUN_24700(0, (short)(iVar9 >> 4), 0);
                    }

                    if ((GameManager.instance.DAT_28 - DAT_19 & 15) == 0)
                    {
                        vTransform.rotation = Utilities.MatrixNormal(vTransform.rotation);
                        return(0);
                    }

                    return(0);
                }

                break;

            case 1:
                oVar7      = child2;
                sVar5      = (short)(oVar7.vr.x - 17);
                oVar7.vr.x = sVar5;

                if (sVar5 < -511)
                {
                    tags++;
                }

                goto LAB_2944;

            case 2:
                fVar7 = FUN_2458();
                iVar4 = GameManager.instance.FUN_1DD9C();
                GameManager.instance.FUN_1E628(iVar4, GameManager.instance.DAT_C2C, 67, fVar7.vTransform.position);

                if (fVar7 != null)
                {
                    GameManager.instance.FUN_30CB0(fVar7, 60);
                }

                FUN_30BA8();
                GameManager.instance.FUN_30CB0(this, 120);
                break;

            default:
                return(0);

            case 4:
                oVar7      = child2;
                sVar6      = (short)(oVar7.vr.x + 17);
                oVar7.vr.x = sVar6;

                if (0 < sVar6 << 16)
                {
                    tags  = 0;
                    iVar9 = (int)GameManager.FUN_2AC5C();
                    GameManager.instance.FUN_30CB0(this, (iVar9 * 120 >> 15) + 180);
                    FUN_30BA8();
                }

LAB_2944:
                oVar7.ApplyTransformation();
                return(0);
            }

LAB_2B28:
            tags++;
            break;

        case 1:
            flags   |= 0x100;
            tVar7    = GameManager.instance.FUN_2FFD0(1);
            DAT_80_2 = tVar7;

            if (tVar7 != null)
            {
                iVar7 = (int)GameManager.FUN_2AC5C();
                GameManager.instance.FUN_30CB0(this, iVar7 * 60 >> 15);
            }

            vTransform.position.y = 0x2af800;
            break;

        case 2:
            sVar4 = tags;

            if (sVar4 == 1)
            {
                tVar7 = DAT_80_2;
                oVar9 = DAT_84;

                if ((oVar9.maxHalfHealth == 0 || oVar9.vTransform.position.x <= tVar7.array[0] << 16) ||
                    (tVar7.array[0] + tVar7.array[2]) * 0x10000 <= oVar9.vTransform.position.x ||
                    (oVar9.vTransform.position.z <= tVar7.array[1] << 16 ||
                     (tVar7.array[1] + tVar7.array[3]) * 0x10000 <= oVar9.vTransform.position.z))
                {
                    FUN_30BA8();
                    sVar4 = 5;
                    tags  = sVar4;
                }

                iVar7 = (int)GameManager.FUN_2AC5C();
                GameManager.instance.FUN_30CB0(this, iVar7 * 60 >> 15);
                return(0);
            }

            if (sVar4 < 2)
            {
                if (sVar4 != 0)
                {
                    return(0);
                }

                oVar11  = null;
                uVar12  = 0xffffffff;
                tVar7   = DAT_80_2;
                ppiVar3 = GameManager.instance.worldObjs;

                for (int i = 0; i < ppiVar3.Count; i++)
                {
                    ppiVar2 = ppiVar3[i];
                    oVar9   = ppiVar2.vObject;

                    if (oVar9.type == 2 && oVar9.maxHalfHealth != 0 &&
                        tVar7.array[0] << 16 < oVar9.vTransform.position.x &&
                        oVar9.vTransform.position.x < (tVar7.array[0] + tVar7.array[2]) * 0x10000 &&
                        tVar7.array[1] << 16 < oVar9.vTransform.position.z &&
                        oVar9.vTransform.position.z < (tVar7.array[1] + tVar7.array[3]) * 0x10000)
                    {
                        uVar13 = (uint)Utilities.FUN_29F6C(vTransform.position, oVar9.screen);

                        if (uVar13 < uVar12)
                        {
                            oVar11 = oVar9;
                            uVar12 = uVar13;
                        }
                    }
                }

                if (oVar11 != null)
                {
                    DAT_84 = oVar11;
                    FUN_30B78();
                    sVar4 = (sbyte)(tags + 1);
                    tags  = sVar4;
                    iVar7 = (int)GameManager.FUN_2AC5C();
                    GameManager.instance.FUN_30CB0(this, iVar7 * 60 >> 15);
                    return(0);
                }
                else
                {
                    iVar7 = (int)GameManager.FUN_2AC5C();
                    GameManager.instance.FUN_30CB0(this, iVar7 * 60 >> 15);
                    return(0);
                }
            }

            if (sVar4 != 4)
            {
                if (sVar4 == 5)
                {
                    iVar7 = (int)GameManager.FUN_2AC5C();
                    GameManager.instance.FUN_30CB0(this, iVar7 * 60 >> 15);
                    tags = 0;
                    return(0);
                }

                return(0);
            }

            FUN_30B78();
            goto LAB_2B28;

        case 8:
            bVar7 = FUN_32B90((uint)arg2);

            if (!bVar7)
            {
                return(0);
            }

            FUN_30C68();
            break;
        }

        return(0);
    }
    //FUN_A88 (OILFIELD.DLL)
    public override uint UpdateW(int arg1, int arg2)
    {
        int             iVar1;
        short           sVar2;
        uint            uVar3;
        ConfigContainer ccVar3;
        VigObject       oVar4;
        GlacierSmall    ppcVar4;
        int             iVar7;
        VigObject       oVar7;
        VigTuple2       tVar7;
        int             iVar8;
        int             iVar9;
        Vector3Int      local_10;

        switch (arg1)
        {
        case 1:
            GameManager.instance.offsetFactor = 2.5f;
            GameManager.instance.offsetStart  = 0;
            GameManager.instance.angleOffset  = 0.4f;
            Color32 color = LevelManager.instance.DAT_DE0;
            color.a = 0x80;
            UIManager.instance.underwater.color = color;
            tVar7    = GameManager.instance.FUN_2FFD0(1);
            DAT_80_2 = tVar7;
            oVar7    = GameManager.instance.FUN_30250(GameManager.instance.DAT_1078, 0x100);
            oVar4    = GameManager.instance.FUN_4AC1C(0xfe000000, oVar7);
            GameManager.instance.DAT_1038 = oVar4 != null ? 1 : 0;
            goto case 2;

        case 2:
            GameManager.instance.FUN_34B34();
            GameManager.instance.FUN_30CB0(this, 240);
            iVar1 = 0;

            while (DAT_A4 <= 16 && iVar1 < 3)
            {
                iVar8              = Random.Range(0, 3);
                ppcVar4            = LevelManager.instance.xobfList[42].ini.FUN_2C17C((ushort)Glacier.DAT_29D0[iVar8], typeof(GlacierSmall), 8) as GlacierSmall;
                iVar9              = Random.Range(-40, 41);
                local_10           = new Vector3Int();
                local_10.x         = iVar9 * DAT_A8 + glacierSpawn.x;
                local_10.y         = glacierSpawn.y;
                local_10.z         = glacierSpawn.z;
                ppcVar4.screen     = local_10;
                ppcVar4.tags       = 1;
                ppcVar4.id         = (short)DAT_B0;
                ppcVar4.flags     |= 0x80;
                iVar8              = Random.Range(-4, 3);
                iVar9              = Random.Range(0, 21);
                ppcVar4.physics1.X = iVar8 * DAT_AC;
                ppcVar4.physics1.Z = iVar9 * DAT_AC;
                sVar2              = (short)GameManager.FUN_2AC5C();
                ppcVar4.vr.y       = sVar2;
                iVar9              = (int)GameManager.FUN_2AC5C();
                GameManager.instance.FUN_30CB0(ppcVar4, (iVar9 * 840 >> 15) + 1800);
                ppcVar4.FUN_3066C();
                DAT_A4++;
                DAT_B0++;
                iVar1++;
            }

            if (DAT_B0 >= 16)
            {
                DAT_B0 = 0;
            }

            if (DAT_9C != 0)
            {
                return(0);
            }

            uVar3 = GameManager.FUN_2AC5C();
            iVar7 = 166;

            if ((iVar7 & 1) != 0)
            {
                iVar7 = 161;
            }

            oVar4        = GameManager.instance.FUN_31EDC(iVar7);
            oVar4.flags |= 0x80;
            oVar4.FUN_3066C();
            DAT_9C++;

            break;

        case 4:
            FUN_4F4(DAT_84_2[0]);
            FUN_4F4(DAT_84_2[1]);
            break;

        case 17:
            GameManager.instance.FUN_17EB8();
            return(0);
        }

        return(0);
    }
    // Start is called before the first frame update
    void Awake()
    {
        VigTuple2 newTuple = new VigTuple2(type, id, array);

        GameManager.instance.DAT_10D8.Add(newTuple);
    }