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,
      "file": ".\\gbf_core\\src\\decompiler\\handlers\\special_two_operand.rs",
      "function": "gbf_core::decompiler::handlers::special_two_operand::impl$0::handle_instruction"
    },
    {
      "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,
      "function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile",
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
    }
  ]
}

Context

{
  "current_block_id": {
    "index": 6,
    "address": 7104,
    "block_type": "Normal"
  },
  "current_ast_node_stack": [],
  "current_instruction": {
    "opcode": "AccessMember",
    "operand": null,
    "address": 7123
  }
}
function partTab(tab#0)
{
    fn_call#5 = GuiRCTabs.findtext(tab#0);
    temp.i = fn_call#5;
    lit#6 = 0;
    // RegionId(0)
    // RegionId(1)
    if (temp.i >= lit#6) 
    {
        fn_call#8 = GuiRCTabs.removerow(temp.i);
    }
    fn_call#10 = GuiRCTabs.getselectedrow();
    lit#11 = 0;
    // RegionId(2)
    // RegionId(3)
    if (fn_call#10 < lit#11) 
    {
        lit#12 = 0;
        fn_call#14 = GuiRCTabs.setselectedrow(lit#12);
    }
    lit#15 = 0;
    temp.i = lit#15;
    fn_call#17 = GuiRCTabs.rowcount();
    while (temp.i < fn_call#17) 
    {
        lit#18 = "GuiRCConsoleScroll_Tab_";
        fn_call#21 = GuiRCTabs.rows[temp.i].gettext();
        fn_call#24 = GuiRCTabs.isrowselected(temp.i);
        lit#18 @ fn_call#21.visible = fn_call#24;
        temp.i++;
    }
    lit#25 = 0;
    return lit#25;
}