Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

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

Context

{
  "current_block_id": {
    "index": 7,
    "block_type": "Normal",
    "address": 3254
  },
  "current_ast_node_stack": [],
  "current_instruction": {
    "opcode": "Pop",
    "operand": null,
    "address": 3255
  }
}
function GuiRCListSearch.onTextChanged(newtext#0)
{
    lit#6 = false;
    temp.found = lit#6;
    lit#7 = 0;
    temp.count = lit#7;
    lit#10 = 0;
    for (phi<idx=0, regions=()> : phi<idx=1, regions=()>) 
    {
        fn_call#12 = temp.row.gettext();
        builtin_fn_call#13 = fn_call#12.starts(newtext#0);
        // RegionId(2)
        // RegionId(3)
        if (builtin_fn_call#13) 
        {
            // RegionId(3)
            // RegionId(4)
            if (!temp.found) 
            {
                fn_call#14 = temp.row.gettext();
                fn_call#16 = GuiRCListSearch.list.findtext(fn_call#14);
                fn_call#18 = GuiRCListSearch.list.setselectedrow(fn_call#16);
                lit#19 = true;
                temp.found = lit#19;
            }
            temp.count++;
        }
        phi<idx=0, regions=()>++;
    }
    lit#20 = 1;
    // RegionId(7)
    // RegionId(8)
    if (temp.count == lit#20) 
    {
        fn_call#22 = GuiRCListSearch.destroy();
    }
    lit#23 = 0;
    return lit#23;
}