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,
      "function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::process_instruction",
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs"
    },
    {
      "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": 15,
    "address": 19130,
    "block_type": "Normal"
  },
  "current_ast_node_stack": [],
  "current_instruction": {
    "opcode": "Pop",
    "operand": null,
    "address": 19131
  }
}
function public.showAccountList(temp.accounts)
{
    lit#5 = null;
    // RegionId(0)
    // RegionId(1)
    if (ScriptedRCAccountListWindow#4 != lit#5) 
    {
        fn_call#7 = ScriptedRCAccountListWindow.destroy();
    }
    lit#8 = "ScriptedRCAccountListWindow";
    gbf_new_obj#9 = lit#8;
    lit#10 = "GuiWindowCtrl";
    new_node#11 = new lit#10(gbf_new_obj#9);
    gbf_new_obj#12 = new_node#11;
    // RegionId(2)
    // RegionId(3)
    with (gbf_new_obj#9) 
    {
        lit#14 = 70;
        lit#15 = 70;
        position#16 = {lit#15, lit#14};
        lit#18 = "GuiBlueWindowProfile";
        profile#19 = lit#18;
        fn_call#22 = getGUIStyle#21();
        style#23 = fn_call#22;
        lit#25 = true;
        clientrelative#26 = lit#25;
        lit#28 = 282;
        lit#29 = 300;
        clientextent#30 = {lit#29, lit#28};
        lit#32 = true;
        isexternal#33 = lit#32;
        lit#35 = true;
        visible#36 = lit#35;
        lit#38 = "Account list";
        text#39 = lit#38;
        lit#40 = "ScriptedRCAccountListScroll";
        gbf_new_obj#41 = lit#40;
        lit#42 = "GuiScrollCtrl";
        new_node#43 = new lit#42(gbf_new_obj#41);
        gbf_new_obj#44 = new_node#43;
        // RegionId(3)
        // RegionId(4)
        with (gbf_new_obj#41) 
        {
            lit#45 = 0;
            lit#46 = 0;
            position#47 = {lit#46, lit#45};
            lit#49 = 250;
            lit#50 = 300;
            extent#51 = {lit#50, lit#49};
            lit#53 = "width";
            horizSizing#54 = lit#53;
            lit#56 = "height";
            vertSizing#57 = lit#56;
            lit#58 = "GuiBlueScrollProfile";
            profile#59 = lit#58;
            lit#61 = "dynamic";
            vScrollBar#62 = lit#61;
            lit#64 = "alwaysOff";
            hScrollBar#65 = lit#64;
            lit#66 = "ScriptedRCAccountListList";
            gbf_new_obj#67 = lit#66;
            lit#68 = "GuiTextListCtrl";
            new_node#69 = new lit#68(gbf_new_obj#67);
            gbf_new_obj#70 = new_node#69;
            // RegionId(4)
            // RegionId(5)
            with (gbf_new_obj#67) 
            {
                fn_call#72 = clearRows#71();
                lit#73 = "GuiBlueTextListProfile";
                profile#74 = lit#73;
                lit#75 = "onAccountSelect";
                lit#76 = "onDblClick";
                fn_call#80 = thiso.catchEvent(this#77, lit#76, lit#75);
            }
            fn_call#82 = addcontrol#81(phi<idx=0, regions=()>);
        }
        fn_call#83 = addcontrol#81(phi<idx=0, regions=()>);
        lit#84 = "ScriptedRCAccountListClose";
        gbf_new_obj#85 = lit#84;
        lit#86 = "GuiButtonCtrl";
        new_node#87 = new lit#86(gbf_new_obj#85);
        gbf_new_obj#88 = new_node#87;
        // RegionId(7)
        // RegionId(8)
        with (gbf_new_obj#85) 
        {
            lit#89 = 250;
            lit#90 = 236;
            position#91 = {lit#90, lit#89};
            lit#92 = 32;
            lit#93 = 64;
            extent#94 = {lit#93, lit#92};
            lit#95 = "GuiBlueButtonProfile";
            profile#96 = lit#95;
            lit#97 = "&Close";
            text#98 = lit#97;
            lit#99 = "top";
            vertSizing#100 = lit#99;
            lit#101 = "left";
            horizSizing#102 = lit#101;
        }
        fn_call#103 = addcontrol#81(phi<idx=0, regions=()>);
    }
    fn_call#104 = addcontrol#81(phi<idx=0, regions=()>);
    lit#105 = 0;
    for (phi<idx=0, regions=()> : phi<idx=1, regions=()>) 
    {
        lit#106 = "@";
        builtin_fn_call#107 = temp.account.ends(lit#106);
        // RegionId(12)
        // RegionId(13)
        if (!builtin_fn_call#107) 
        {
            lit#108 = 0;
            fn_call#110 = ScriptedRCAccountListList.addrow(lit#108, temp.account);
        }
        phi<idx=0, regions=()>++;
    }
    lit#111 = 0;
    return lit#111;
}