Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

{
  "frames": [
    {
      "line": 282,
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs",
      "function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::pop_assignable"
    },
    {
      "line": 33,
      "function": "gbf_core::decompiler::handlers::special_two_operand::impl$0::handle_instruction",
      "file": ".\\gbf_core\\src\\decompiler\\handlers\\special_two_operand.rs"
    },
    {
      "line": 171,
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs",
      "function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::process_instruction"
    },
    {
      "line": 467,
      "function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::process_regions",
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
    },
    {
      "line": 286,
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs",
      "function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile"
    }
  ]
}

Context

{
  "current_block_id": {
    "index": 0,
    "address": 7139,
    "block_type": "Entry"
  },
  "current_ast_node_stack": [
    {
      "BuildingArray": []
    }
  ],
  "current_instruction": {
    "opcode": "AccessMember",
    "operand": null,
    "address": 7160
  }
}
function addTextToTab(tab#1, data#0)
{
    lit#2 = "GuiRCConsoleMLText_Tab_";
    fn_call#4 = lit#2 @ tab#1.deselecttext();
    lit#5 = false;
    lit#6 = "<";
    lit#7 = "<";
    fn_call#9 = quickReplaceText#8(data#0, lit#7, lit#6, lit#5);
    data#10 = fn_call#9;
    lit#11 = false;
    lit#12 = "&gt;";
    lit#13 = ">";
    fn_call#14 = quickReplaceText#8(data#0, lit#13, lit#12, lit#11);
    data#15 = fn_call#14;
    lit#18 = ":";
    builtin_fn_call#19 = data#15.pos(lit#18);
    temp.colon = builtin_fn_call#19;
    lit#20 = 0;
    // RegionId(0)
    // RegionId(1)
    if (temp.colon >= lit#20) 
    {
        lit#21 = "<font color=limegreen><b>";
        lit#22 = 0;
        lit#23 = 1;
        builtin_fn_call#24 = data#15.substring(lit#22, temp.colon + lit#23);
        lit#25 = "</b></font>";
        lit#26 = 1;
        lit#27 = -1;
        builtin_fn_call#28 = data#15.substring(temp.colon + lit#26, lit#27);
        data#29 = ((lit#21 @ builtin_fn_call#24) @ lit#25) @ builtin_fn_call#28;
    }
    lit#31 = "GuiRCConsoleScroll_Tab_";
    temp.scrollpos = lit#31 @ tab#1.scrollpos;
    lit#32 = "GuiRCConsoleMLText_Tab_";
    fn_call#34 = lit#32 @ tab#1.scrolltobottom();
    lit#35 = "GuiRCConsoleMLText_Tab_";
    builtin_fn_call#37 = lit#35 @ tab#1.plaintext.length();
    lit#38 = 0;
    // RegionId(2)
    // RegionId(3)
    if (builtin_fn_call#37 > lit#38) 
    {
        lit#39 = "\n";
        data#40 = lit#39 @ data#0;
    }
    lit#41 = false;
    lit#42 = "GuiRCConsoleMLText_Tab_";
    fn_call#44 = lit#42 @ tab#1.addtext(data#0, lit#41);
    lit#48 = 0;
    // RegionId(4)
    // RegionId(5)
    if (remotecontrol.options.consolebufferlines > lit#48) 
    {
        lit#50 = "GuiRCConsoleMLText_Tab_";
        lit#51 = "\n";
        builtin_fn_call#52 = lit#50 @ tab#1.plaintext.positions(lit#51);
        temp.positions = builtin_fn_call#52;
        builtin_fn_call#53 = temp.positions.size();
        // RegionId(5)
        // RegionId(6)
        if (builtin_fn_call#53 >= remotecontrol.options.consolebufferlines) 
        {
            lit#54 = "GuiRCConsoleMLText_Tab_";
            builtin_fn_call#55 = temp.positions.size();
            lit#56 = 1;
            lit#57 = -1;
            builtin_fn_call#58 = lit#54 @ tab#1.plaintext.substring(temp.positions[(builtin_fn_call#55 - remotecontrol.options.consolebufferlines)] + lit#56, lit#57);
            lit#59 = "GuiRCConsoleMLText_Tab_";
            fn_call#61 = lit#59 @ tab#1.settext(builtin_fn_call#58);
        }
    }
    lit#62 = "GuiRCConsoleScroll_Tab_";
    // RegionId(7)
    // RegionId(8)
    if (temp.scrollpos == (lit#62 @ tab#1).scrollpos) 
    {
        lit#63 = "GuiRCConsoleMLText_Tab_";
        fn_call#64 = lit#63 @ tab#1.scrolltobottom();
    }
    // RegionId(9)
    else
    {
        lit#65 = 1;
        lit#66 = 0;
        lit#67 = "GuiRCConsoleScroll_Tab_";
        fn_call#69 = lit#67 @ tab#1.scrollto(temp.scrollpos[lit#66], temp.scrollpos[lit#65]);
    }
    lit#70 = 0;
    return lit#70;
}