Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

{
  "frames": [
    {
      "line": 241,
      "function": "gbf_core::decompiler::handlers::builtins::impl$0::handle_instruction::closure$9",
      "file": ".\\gbf_core\\src\\decompiler\\handlers\\builtins.rs"
    },
    {
      "line": 237,
      "function": "gbf_core::decompiler::handlers::builtins::impl$0::handle_instruction",
      "file": ".\\gbf_core\\src\\decompiler\\handlers\\builtins.rs"
    },
    {
      "line": 171,
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs",
      "function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::process_instruction"
    },
    {
      "line": 466,
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs",
      "function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::process_regions"
    },
    {
      "line": 286,
      "function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile",
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
    }
  ]
}

Context

{
  "current_block_id": {
    "index": 26,
    "block_type": "Normal",
    "address": 18567
  },
  "current_ast_node_stack": [
    {
      "StandaloneNode": {
        "Expression": {
          "Assignable": {
            "Identifier": {
              "metadata": {
                "properties": {},
                "comments": []
              },
              "node_id": 247846,
              "ptr": {
                "ssa_version": 118,
                "id": "gbf_new_obj"
              }
            }
          }
        }
      }
    },
    {
      "StandaloneNode": {
        "Expression": {
          "Assignable": {
            "Phi": {
              "metadata": {
                "properties": {},
                "comments": []
              },
              "ptr": {
                "index": 0,
                "region_ids": [
                  [
                    {
                      "index": 23
                    },
                    "Fallthrough"
                  ],
                  [
                    {
                      "index": 22
                    },
                    "Branch"
                  ]
                ],
                "ssa_version": null
              },
              "node_id": 247847
            }
          }
        }
      }
    },
    {
      "StandaloneNode": {
        "Expression": {
          "Assignable": {
            "Identifier": {
              "metadata": {
                "properties": {},
                "comments": []
              },
              "node_id": 247848,
              "ptr": {
                "ssa_version": 108,
                "id": "gbf_new_obj"
              }
            }
          }
        }
      }
    }
  ],
  "current_instruction": {
    "opcode": "ObjSize",
    "operand": null,
    "address": 18583
  }
}
function showAccountData(temp.data, temp.addmode)
{
    lit#4 = 11;
    lit#5 = "Global IP range";
    lit#6 = 5;
    lit#7 = "Admin worlds";
    lit#8 = 4;
    lit#9 = "Admin level";
    lit#10 = 1;
    lit#11 = "E-mail address";
    lit#12 = "";
    lit#13 = "Password";
    lit#14 = 0;
    lit#15 = "Account name";
    temp.fields = {{lit#15, temp.data[lit#14]}, {lit#13, lit#12}, {lit#11, temp.data[lit#10]}, {lit#9, temp.data[lit#8]}, {lit#7, temp.data[lit#6]}, {lit#5, temp.data[lit#4]}};
    lit#16 = "ScriptedRCAccountWindow";
    gbf_new_obj#17 = lit#16;
    lit#18 = "GuiWindowCtrl";
    new_node#19 = new lit#18(gbf_new_obj#17);
    gbf_new_obj#20 = new_node#19;
    // RegionId(0)
    // RegionId(1)
    with (gbf_new_obj#17) 
    {
        lit#22 = 40;
        lit#23 = 40;
        position#24 = {lit#23, lit#22};
        lit#26 = "GuiBlueWindowProfile";
        profile#27 = lit#26;
        fn_call#30 = getGUIStyle#29();
        style#31 = fn_call#30;
        lit#33 = true;
        clientrelative#34 = lit#33;
        lit#36 = 354;
        lit#37 = 245;
        clientextent#38 = {lit#37, lit#36};
        lit#40 = true;
        isexternal#41 = lit#40;
        lit#43 = false;
        canresize#44 = lit#43;
        lit#46 = false;
        canmaximize#47 = lit#46;
        lit#49 = false;
        canminimize#50 = lit#49;
        lit#52 = true;
        visible#53 = lit#52;
        // RegionId(1)
        // RegionId(2)
        if (temp.addmode) 
        {
            lit#55 = "Add";
        }
        // RegionId(3)
        else
        {
            lit#56 = "Edit";
        }
        lit#57 = " account ";
        lit#58 = 0;
        phi<idx=1, regions=()> = (phi<idx=0, regions=()> @ lit#57) @ temp.data[lit#58];
        lit#60 = 0;
        temp.i = lit#60;
        builtin_fn_call#61 = temp.fields.size();
        while (temp.i < builtin_fn_call#61) 
        {
            temp.field = temp.fields[temp.i];
            lit#63 = "ScriptedRCAccountWindLabel";
            gbf_new_obj#64 = lit#63 @ temp.i;
            lit#65 = "GuiTextCtrl";
            new_node#66 = new lit#65(gbf_new_obj#64);
            gbf_new_obj#67 = new_node#66;
            // RegionId(6)
            // RegionId(7)
            with (gbf_new_obj#64) 
            {
                lit#68 = 6;
                lit#69 = 24;
                lit#70 = 6;
                position#71 = {lit#70, lit#68 + (lit#69 * temp.i)};
                lit#73 = 16;
                lit#74 = 100;
                extent#75 = {lit#74, lit#73};
                lit#76 = "GuiBlueTextProfile";
                profile#77 = lit#76;
                lit#78 = 0;
                text#79 = temp.field[lit#78];
            }
            fn_call#81 = addcontrol#80(phi<idx=0, regions=()>);
            lit#82 = "ScriptedRCAccountWindEdit";
            gbf_new_obj#83 = lit#82 @ temp.i;
            lit#84 = "GuiTextEditCtrl";
            new_node#85 = new lit#84(gbf_new_obj#83);
            gbf_new_obj#86 = new_node#85;
            // RegionId(8)
            // RegionId(9)
            with (gbf_new_obj#83) 
            {
                lit#87 = 5;
                lit#88 = 24;
                lit#89 = 106;
                position#90 = {lit#89, lit#87 + (lit#88 * temp.i)};
                lit#91 = 22;
                lit#92 = 130;
                extent#93 = {lit#92, lit#91};
                lit#94 = "GuiBlueTextEditProfile";
                profile#95 = lit#94;
                lit#96 = 1;
                text#97 = temp.field[lit#96];
                lit#99 = 0;
                lit#100 = "Password";
                password#101 = temp.field[lit#99] == lit#100;
            }
            fn_call#102 = addcontrol#80(phi<idx=0, regions=()>);
            temp.i++;
        }
        lit#103 = "ScriptedRCAccountWindCheckOnlyload";
        gbf_new_obj#104 = lit#103;
        lit#105 = "GuiCheckBoxCtrl";
        new_node#106 = new lit#105(gbf_new_obj#104);
        gbf_new_obj#107 = new_node#106;
        // RegionId(11)
        // RegionId(12)
        with (gbf_new_obj#104) 
        {
            lit#108 = 150;
            lit#109 = 6;
            position#110 = {lit#109, lit#108};
            lit#111 = 16;
            lit#112 = 200;
            extent#113 = {lit#112, lit#111};
            lit#114 = "GuiBlueCheckBoxProfile";
            profile#115 = lit#114;
            lit#117 = 3;
            checked#118 = temp.data[lit#117];
            lit#119 = "Account is load-only (guest)";
            text#120 = lit#119;
        }
        fn_call#121 = addcontrol#80(phi<idx=0, regions=()>);
        lit#122 = "ScriptedRCAccountWindCheckBanned";
        gbf_new_obj#123 = lit#122;
        lit#124 = "GuiCheckBoxCtrl";
        new_node#125 = new lit#124(gbf_new_obj#123);
        gbf_new_obj#126 = new_node#125;
        // RegionId(13)
        // RegionId(14)
        with (gbf_new_obj#123) 
        {
            lit#127 = 170;
            lit#128 = 6;
            position#129 = {lit#128, lit#127};
            lit#130 = 16;
            lit#131 = 200;
            extent#132 = {lit#131, lit#130};
            lit#133 = "GuiBlueCheckBoxProfile";
            profile#134 = lit#133;
            lit#135 = 2;
            checked#136 = temp.data[lit#135];
            lit#137 = "Account is disabled";
            text#138 = lit#137;
        }
        fn_call#139 = addcontrol#80(phi<idx=0, regions=()>);
        lit#140 = "ScriptedRCAccountWindLabelBantime";
        gbf_new_obj#141 = lit#140;
        lit#142 = "GuiTextCtrl";
        new_node#143 = new lit#142(gbf_new_obj#141);
        gbf_new_obj#144 = new_node#143;
        // RegionId(15)
        // RegionId(16)
        with (gbf_new_obj#141) 
        {
            lit#145 = 190;
            lit#146 = 6;
            position#147 = {lit#146, lit#145};
            lit#148 = 16;
            lit#149 = 100;
            extent#150 = {lit#149, lit#148};
            lit#151 = "GuiBlueTextProfile";
            profile#152 = lit#151;
            lit#153 = "Ban time";
            text#154 = lit#153;
        }
        fn_call#155 = addcontrol#80(phi<idx=0, regions=()>);
        lit#156 = "ScriptedRCAccountWindEditBantime";
        gbf_new_obj#157 = lit#156;
        lit#158 = "GuiTextEditCtrl";
        new_node#159 = new lit#158(gbf_new_obj#157);
        gbf_new_obj#160 = new_node#159;
        // RegionId(17)
        // RegionId(18)
        with (gbf_new_obj#157) 
        {
            lit#161 = 189;
            lit#162 = 106;
            position#163 = {lit#162, lit#161};
            lit#164 = 22;
            lit#165 = 130;
            extent#166 = {lit#165, lit#164};
            lit#167 = "GuiBlueTextEditProfile";
            profile#168 = lit#167;
            lit#169 = 6;
            lit#170 = 0;
            // RegionId(18)
            // RegionId(19)
            if (temp.data[lit#169] == lit#170) 
            {
                lit#171 = "(none)";
            }
            // RegionId(20)
            else
            {
                lit#172 = 6;
                lit#173 = "%Y-%m-%d %H:%M:%S";
                fn_call#175 = timestamp#174(lit#173, temp.data[lit#172]);
            }
            phi<idx=1, regions=()> = phi<idx=0, regions=()>;
        }
        fn_call#176 = addcontrol#80(phi<idx=0, regions=()>);
        lit#177 = "ScriptedRCAccountWindLabelBanreason";
        gbf_new_obj#178 = lit#177;
        lit#179 = "GuiTextCtrl";
        new_node#180 = new lit#179(gbf_new_obj#178);
        gbf_new_obj#181 = new_node#180;
        // RegionId(22)
        // RegionId(23)
        with (gbf_new_obj#178) 
        {
            lit#182 = 210;
            lit#183 = 6;
            position#184 = {lit#183, lit#182};
            lit#185 = 16;
            lit#186 = 150;
            extent#187 = {lit#186, lit#185};
            lit#188 = "GuiBlueTextProfile";
            profile#189 = lit#188;
            lit#190 = "Ban reason/comments";
            text#191 = lit#190;
        }
        fn_call#192 = addcontrol#80(phi<idx=0, regions=()>);
        lit#193 = "ScriptedRCAccountWindScrollBanreason";
        gbf_new_obj#194 = lit#193;
        lit#195 = "GuiScrollCtrl";
        new_node#196 = new lit#195(gbf_new_obj#194);
        gbf_new_obj#197 = new_node#196;
        // RegionId(24)
        // RegionId(25)
        with (gbf_new_obj#194) 
        {
            lit#198 = 229;
            lit#199 = 6;
            position#200 = {lit#199, lit#198};
            lit#201 = 80;
            lit#202 = 230;
            extent#203 = {lit#202, lit#201};
            lit#204 = "GuiBlueScrollProfile";
            profile#205 = lit#204;
            lit#207 = "alwaysOff";
            hScrollBar#208 = lit#207;
            lit#210 = "dynamic";
            vScrollBar#211 = lit#210;
            lit#212 = "ScriptedRCAccountWindEditBanReason";
            gbf_new_obj#213 = lit#212;
            lit#214 = "GuiMLTextEditCtrl";
            new_node#215 = new lit#214(gbf_new_obj#213);
            gbf_new_obj#216 = new_node#215;
            // RegionId(25)
            // RegionId(26)
            with (gbf_new_obj#213) 
            {
                lit#217 = 80;
                lit#218 = 220;
                extent#219 = {lit#218, lit#217};
                lit#220 = "GuiBlueMLTextEditProfile";
                profile#221 = lit#220;
                lit#222 = 7;
                builtin_fn_call#223 = temp.data[lit#222].size();
                lit#224 = 1;
                // RegionId(26)
                // RegionId(27)
                if (builtin_fn_call#223 > lit#224) 
                {
                    lit#225 = 7;
                    fn_call#227 = setLines#226(temp.data[lit#225]);
                }
                // RegionId(28)
                else
                {
                    lit#228 = 7;
                    fn_call#230 = setText#229(temp.data[lit#228]);
                }
            }
            fn_call#231 = addcontrol#80(phi<idx=0, regions=()>);
        }
        fn_call#232 = addcontrol#80(phi<idx=0, regions=()>);
        lit#233 = "ScriptedRCAccountWindButtonApply";
        gbf_new_obj#234 = lit#233;
        lit#235 = "GuiButtonCtrl";
        new_node#236 = new lit#235(gbf_new_obj#234);
        gbf_new_obj#237 = new_node#236;
        // RegionId(31)
        // RegionId(32)
        with (gbf_new_obj#234) 
        {
            lit#238 = 316;
            lit#239 = 100;
            position#240 = {lit#239, lit#238};
            lit#241 = 32;
            lit#242 = 64;
            extent#243 = {lit#242, lit#241};
            lit#244 = "GuiBlueButtonProfile";
            profile#245 = lit#244;
            lit#246 = "&Apply";
            text#247 = lit#246;
            this.addmode = temp.addmode;
        }
        fn_call#249 = addcontrol#80(phi<idx=0, regions=()>);
        lit#250 = "ScriptedRCAccountWindButtonClose";
        gbf_new_obj#251 = lit#250;
        lit#252 = "GuiButtonCtrl";
        new_node#253 = new lit#252(gbf_new_obj#251);
        gbf_new_obj#254 = new_node#253;
        // RegionId(33)
        // RegionId(34)
        with (gbf_new_obj#251) 
        {
            lit#255 = 316;
            lit#256 = 170;
            position#257 = {lit#256, lit#255};
            lit#258 = 32;
            lit#259 = 64;
            extent#260 = {lit#259, lit#258};
            lit#261 = "GuiBlueButtonProfile";
            profile#262 = lit#261;
            lit#263 = "&Close";
            text#264 = lit#263;
        }
        fn_call#265 = addcontrol#80(phi<idx=0, regions=()>);
    }
    fn_call#266 = addcontrol#80(phi<idx=0, regions=()>);
    lit#267 = 0;
    return lit#267;
}