Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

{
  "frames": []
}

Context

{
  "current_block_id": {
    "index": 24,
    "address": 14333,
    "block_type": "Normal"
  },
  "current_ast_node_stack": [],
  "current_instruction": {
    "opcode": "Jne",
    "operand": {
      "Number": 14340
    },
    "address": 14332
  }
}
function showRightsWindow(temp.texttype, temp.textoptions, temp.textlines)
{
    lit#10 = 1;
    lit#11 = "NPC-Control";
    lit#12 = "NPC-Control";
    lit#13 = 1;
    lit#14 = "changefolderrights";
    lit#15 = "Set Folder Rights";
    lit#16 = 1;
    lit#17 = "changefolderconfig";
    lit#18 = "Set Folder Configuration";
    lit#19 = 1;
    lit#20 = "changeoptions";
    lit#21 = "Set Server Options";
    lit#22 = 1;
    lit#23 = "setserverflags";
    lit#24 = "Set Server Flags";
    lit#25 = 1;
    lit#26 = "changestaffaccounts";
    lit#27 = "Change Accounts";
    lit#28 = 1;
    lit#29 = "changecomments";
    lit#30 = "Change Comments";
    lit#31 = 1;
    lit#32 = "banplayers";
    lit#33 = "Ban Players";
    lit#34 = 1;
    lit#35 = "changerights";
    lit#36 = "Change Rights";
    lit#37 = 1;
    lit#38 = "adminmessage";
    lit#39 = "Admin Message";
    lit#40 = 1;
    lit#41 = "resetattributes";
    lit#42 = "Reset Attributes";
    lit#43 = 1;
    lit#44 = "setownattributes";
    lit#45 = "Set Own Attributes";
    lit#46 = 1;
    lit#47 = "setattributes";
    lit#48 = "Set Attributes";
    lit#49 = 1;
    lit#50 = "viewattributes";
    lit#51 = "View Attributes";
    lit#52 = 1;
    lit#53 = "disconnectplayers";
    lit#54 = "Disconnect";
    lit#55 = 1;
    lit#56 = "updatelevel";
    lit#57 = "Update Level";
    lit#58 = 1;
    lit#59 = "warpplayers";
    lit#60 = "Warp Players";
    lit#61 = 1;
    lit#62 = "warptoplayer";
    lit#63 = "Warpto Player";
    lit#64 = 1;
    lit#65 = "warptoxy";
    lit#66 = "Warpto XY";
    lit#67 = 0;
    lit#68 = "iprange";
    lit#69 = "IP Ranges";
    this.textrights = {{lit#69, lit#68, lit#67}, {lit#66, lit#65, lit#64}, {lit#63, lit#62, lit#61}, {lit#60, lit#59, lit#58}, {lit#57, lit#56, lit#55}, {lit#54, lit#53, lit#52}, {lit#51, lit#50, lit#49}, {lit#48, lit#47, lit#46}, {lit#45, lit#44, lit#43}, {lit#42, lit#41, lit#40}, {lit#39, lit#38, lit#37}, {lit#36, lit#35, lit#34}, {lit#33, lit#32, lit#31}, {lit#30, lit#29, lit#28}, {lit#27, lit#26, lit#25}, {lit#24, lit#23, lit#22}, {lit#21, lit#20, lit#19}, {lit#18, lit#17, lit#16}, {lit#15, lit#14, lit#13}, {lit#12, lit#11, lit#10}};
    lit#71 = "TStaticVar";
    new_node#72 = new lit#71(unknown_object#70);
    temp.rights = new_node#72;
    lit#73 = "";
    temp.folderrights = lit#73;
    lit#74 = 0;
    for (phi<idx=0, regions=()> : phi<idx=1, regions=()>) 
    {
        lit#75 = "=";
        builtin_fn_call#76 = temp.line.pos(lit#75);
        lit#77 = -1;
        // RegionId(2)
        // RegionId(3)
        if (builtin_fn_call#76 > lit#77) 
        {
            lit#78 = "=";
            builtin_fn_call#79 = temp.line.tokenize(lit#78);
            temp.tok = builtin_fn_call#79;
            lit#80 = 0;
            lit#81 = 1;
            temp.rights.temp.tok[lit#80] = temp.tok[lit#81];
        }
        // RegionId(4)
        else
        {
            lit#82 = "\n";
            temp.folderrights = temp.folderrights @ (temp.line @ lit#82);
        }
        phi<idx=0, regions=()>++;
    }
    lit#83 = "ScriptedRCRightsWindow";
    gbf_new_obj#84 = lit#83;
    lit#85 = "GuiWindowCtrl";
    new_node#86 = new lit#85(gbf_new_obj#84);
    gbf_new_obj#87 = new_node#86;
    // RegionId(6)
    // RegionId(7)
    with (gbf_new_obj#84) 
    {
        this.acc = temp.textoptions;
        lit#90 = 10;
        lit#91 = 100;
        position#92 = {lit#91, lit#90};
        lit#94 = "GuiBlueWindowProfile";
        profile#95 = lit#94;
        lit#97 = true;
        useOwnProfile#98 = lit#97;
        lit#100 = 0.9;
        profile.transparency = lit#100;
        fn_call#103 = getGUIStyle#102();
        style#104 = fn_call#103;
        lit#106 = true;
        clientrelative#107 = lit#106;
        lit#109 = 290;
        lit#110 = 354;
        clientextent#111 = {lit#110, lit#109};
        lit#113 = "center";
        horizSizing#114 = lit#113;
        lit#116 = "center";
        vertSizing#117 = lit#116;
        lit#119 = "Local rights of player ";
        text#120 = lit#119 @ this.acc;
        lit#122 = false;
        canResize#123 = lit#122;
        lit#125 = false;
        canMaximize#126 = lit#125;
        lit#128 = true;
        visible#129 = lit#128;
        lit#131 = true;
        isexternal#132 = lit#131;
        fn_call#134 = bringToFront#133();
        lit#135 = "ScriptedRCRightsTabSelect";
        gbf_new_obj#136 = lit#135;
        lit#137 = "GuiTabCtrl";
        new_node#138 = new lit#137(gbf_new_obj#136);
        gbf_new_obj#139 = new_node#138;
        // RegionId(7)
        // RegionId(8)
        with (gbf_new_obj#136) 
        {
            lit#140 = 2;
            lit#141 = 2;
            position#142 = {lit#141, lit#140};
            lit#144 = 24;
            lit#145 = 350;
            extent#146 = {lit#145, lit#144};
            lit#147 = "GuiBlueTabProfile";
            profile#148 = lit#147;
            lit#150 = 150;
            tabwidth#151 = lit#150;
            lit#152 = "IP Range and Rights";
            lit#153 = 0;
            fn_call#155 = this.addRow(lit#153, lit#152);
            lit#156 = "Folder Rights";
            lit#157 = 1;
            fn_call#158 = this.addRow(lit#157, lit#156);
            lit#159 = 0;
            fn_call#161 = this.setSelectedRow(lit#159);
        }
        fn_call#163 = addcontrol#162(phi<idx=0, regions=()>);
        lit#164 = "ScriptedRCRightsScroll";
        gbf_new_obj#165 = lit#164;
        lit#166 = "GuiScrollCtrl";
        new_node#167 = new lit#166(gbf_new_obj#165);
        gbf_new_obj#168 = new_node#167;
        // RegionId(9)
        // RegionId(10)
        with (gbf_new_obj#165) 
        {
            lit#169 = 26;
            lit#170 = 2;
            position#171 = {lit#170, lit#169};
            lit#172 = 228;
            lit#173 = 350;
            extent#174 = {lit#173, lit#172};
            lit#175 = "GuiBlueScrollProfile";
            profile#176 = lit#175;
            lit#177 = false;
            visible#178 = lit#177;
            lit#180 = "dynamic";
            hScrollBar#181 = lit#180;
            lit#183 = "dynamic";
            vScrollBar#184 = lit#183;
            lit#185 = "ScriptedRCRightsMLEdit";
            gbf_new_obj#186 = lit#185;
            lit#187 = "GuiMLTextEditCtrl";
            new_node#188 = new lit#187(gbf_new_obj#186);
            gbf_new_obj#189 = new_node#188;
            // RegionId(10)
            // RegionId(11)
            with (gbf_new_obj#186) 
            {
                lit#190 = 0;
                lit#191 = 0;
                position#192 = {lit#191, lit#190};
                lit#193 = 220;
                lit#194 = 340;
                extent#195 = {lit#194, lit#193};
                lit#196 = "GuiBlueMLTextEditProfile";
                profile#197 = lit#196;
                fn_call#199 = setText#198(temp.folderrights);
            }
            fn_call#200 = addcontrol#162(phi<idx=0, regions=()>);
        }
        fn_call#201 = addcontrol#162(phi<idx=0, regions=()>);
        lit#202 = "ScriptedRCRightsPane";
        gbf_new_obj#203 = lit#202;
        lit#204 = "GuiScrollCtrl";
        new_node#205 = new lit#204(gbf_new_obj#203);
        gbf_new_obj#206 = new_node#205;
        // RegionId(13)
        // RegionId(14)
        with (gbf_new_obj#203) 
        {
            lit#207 = 26;
            lit#208 = 2;
            position#209 = {lit#208, lit#207};
            lit#210 = 228;
            lit#211 = 350;
            extent#212 = {lit#211, lit#210};
            lit#213 = "GuiBlueScrollProfile";
            profile#214 = lit#213;
            lit#215 = "alwaysOff";
            vScrollBar#216 = lit#215;
            lit#217 = "alwaysOff";
            hScrollBar#218 = lit#217;
            lit#220 = 0;
            temp.i = lit#220;
            builtin_fn_call#222 = thiso.textrights.size();
            while (temp.i < builtin_fn_call#222) 
            {
                lit#224 = 10;
                // RegionId(16)
                // RegionId(17)
                if (temp.i <= lit#224) 
                {
                    lit#225 = 10;
                }
                // RegionId(18)
                else
                {
                    lit#226 = 186;
                }
                lit#227 = 2;
                phi<idx=1, regions=()> = phi<idx=0, regions=()> + lit#227;
                lit#229 = 8;
                lit#230 = 20;
                lit#231 = 1;
                lit#232 = 10;
                // RegionId(19)
                // RegionId(20)
                if (temp.i > lit#232) 
                {
                    lit#233 = 200;
                }
                // RegionId(21)
                else
                {
                    lit#234 = 0;
                }
                phi<idx=2, regions=()> = phi<idx=1, regions=()> - phi<idx=0, regions=()>;
                lit#235 = "ScriptedRCRightBoxLabel";
                gbf_new_obj#236 = lit#235 @ temp.i;
                lit#237 = "GuiTextCtrl";
                new_node#238 = new lit#237(gbf_new_obj#236);
                gbf_new_obj#239 = new_node#238;
                // RegionId(22)
                // RegionId(23)
                with (gbf_new_obj#236) 
                {
                    lit#240 = 24;
                    lit#241 = 2;
                    lit#242 = 0;
                    // RegionId(23)
                    // RegionId(24)
                    if (thiso.textrights[temp.i][lit#241] == lit#242) 
                    {
                        lit#243 = 6;
                    }
                    // RegionId(25)
                    else
                    {
                        lit#244 = 12;
                    }
                    phi<idx=1, regions=()> = {, ...phi<idx=0, regions=()>};
                    lit#245 = 20;
                    lit#246 = 140;
                    extent#247 = {lit#246, lit#245};
                    lit#248 = "GuiBlueWindowProfile";
                    profile#249 = lit#248;
                    lit#250 = 0;
                    text#251 = thiso.textrights[temp.i][lit#250];
                }
                fn_call#252 = addcontrol#162(phi<idx=0, regions=()>);
                lit#253 = 2;
                lit#254 = 0;
                // RegionId(27)
                // RegionId(28)
                if (thiso.textrights[temp.i][lit#253] == lit#254) 
                {
                    lit#255 = "ScriptedRCRightBox";
                    gbf_new_obj#256 = lit#255 @ temp.i;
                    lit#257 = "GuiTextEditCtrl";
                    new_node#258 = new lit#257(gbf_new_obj#256);
                    gbf_new_obj#259 = new_node#258;
                    // RegionId(28)
                    // RegionId(29)
                    with (gbf_new_obj#256) 
                    {
                        lit#260 = 24;
                        lit#261 = 65;
                        position#262 = {temp.xpos + lit#261, temp.ypos - lit#260};
                        lit#263 = 20;
                        lit#264 = 266;
                        extent#265 = {lit#264, lit#263};
                        lit#266 = "GuiBlueTextEditProfile";
                        profile#267 = lit#266;
                        lit#269 = "text";
                        this.entrytype = lit#269;
                        lit#270 = 1;
                        text#271 = temp.rights.thiso.textrights[temp.i][lit#270];
                    }
                    fn_call#272 = addcontrol#162(phi<idx=0, regions=()>);
                }
                // RegionId(31)
                else
                {
                    lit#273 = "ScriptedRCRightBox";
                    gbf_new_obj#274 = lit#273 @ temp.i;
                    lit#275 = "GuiCheckBoxCtrl";
                    new_node#276 = new lit#275(gbf_new_obj#274);
                    gbf_new_obj#277 = new_node#276;
                    // RegionId(31)
                    // RegionId(32)
                    with (gbf_new_obj#274) 
                    {
                        lit#278 = 24;
                        lit#279 = 6;
                        position#280 = {temp.xpos - lit#279, temp.ypos - lit#278};
                        lit#281 = 20;
                        lit#282 = 24;
                        extent#283 = {lit#282, lit#281};
                        lit#284 = "checked";
                        this.entrytype = lit#284;
                        lit#285 = "GuiBlueCheckBoxProfile";
                        profile#286 = lit#285;
                        lit#288 = 1;
                        checked#289 = temp.rights.thiso.textrights[temp.i][lit#288];
                    }
                    fn_call#290 = addcontrol#162(phi<idx=0, regions=()>);
                }
                temp.i++;
            }
        }
        fn_call#291 = addcontrol#162(phi<idx=0, regions=()>);
        lit#292 = "ScriptedRCRightsOK";
        gbf_new_obj#293 = lit#292;
        lit#294 = "GuiButtonCtrl";
        new_node#295 = new lit#294(gbf_new_obj#293);
        gbf_new_obj#296 = new_node#295;
        // RegionId(36)
        // RegionId(37)
        with (gbf_new_obj#293) 
        {
            lit#297 = 32;
            lit#298 = 64;
            extent#299 = {lit#298, lit#297};
            lit#300 = 256;
            lit#301 = 221;
            position#302 = {lit#301, lit#300};
            lit#303 = "GuiBlueButtonProfile";
            profile#304 = lit#303;
            lit#305 = "Apply";
            text#306 = lit#305;
            lit#307 = "onSaveRights";
            lit#308 = "onAction";
            fn_call#310 = thiso.catchEvent(this#8, lit#308, lit#307);
        }
        fn_call#311 = addcontrol#162(phi<idx=0, regions=()>);
        lit#312 = "ScriptedRCRightsClose";
        gbf_new_obj#313 = lit#312;
        lit#314 = "GuiButtonCtrl";
        new_node#315 = new lit#314(gbf_new_obj#313);
        gbf_new_obj#316 = new_node#315;
        // RegionId(38)
        // RegionId(39)
        with (gbf_new_obj#313) 
        {
            lit#317 = 32;
            lit#318 = 64;
            extent#319 = {lit#318, lit#317};
            lit#320 = 256;
            lit#321 = 287;
            position#322 = {lit#321, lit#320};
            lit#323 = "GuiBlueButtonProfile";
            profile#324 = lit#323;
            lit#325 = "Close";
            text#326 = lit#325;
        }
        fn_call#327 = addcontrol#162(phi<idx=0, regions=()>);
    }
    fn_call#328 = addcontrol#162(phi<idx=0, regions=()>);
    lit#329 = 0;
    return lit#329;
}