Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

{
  "frames": [
    {
      "line": 282,
      "function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::pop_assignable",
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs"
    },
    {
      "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,
      "function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::process_instruction",
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs"
    },
    {
      "line": 467,
      "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": 2,
    "block_type": "Normal",
    "address": 6654
  },
  "current_ast_node_stack": [],
  "current_instruction": {
    "opcode": "AccessMember",
    "operand": null,
    "address": 6673
  }
}
function GuiRCTabs.onSelect(tabid#2, tabtext#1, tabindex#0)
{
    lit#6 = 0;
    temp.i = lit#6;
    fn_call#8 = GuiRCTabs.rowcount();
    while (temp.i < fn_call#8) 
    {
        lit#9 = "GuiRCConsoleScroll_Tab_";
        fn_call#12 = GuiRCTabs.rows[temp.i].gettext();
        fn_call#15 = GuiRCTabs.isrowselected(temp.i);
        lit#9 @ fn_call#12.visible = fn_call#15;
        temp.i++;
    }
    lit#16 = 0;
    return lit#16;
}