Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

{
  "frames": [
    {
      "line": 134,
      "file": ".\\gbf_core\\src\\decompiler\\structure_analysis\\if_region_reducer.rs",
      "function": "gbf_core::decompiler::structure_analysis::if_region_reducer::impl$1::reduce_region"
    },
    {
      "line": 564,
      "file": ".\\gbf_core\\src\\decompiler\\structure_analysis\\mod.rs",
      "function": "gbf_core::decompiler::structure_analysis::StructureAnalysis::reduce_acyclic_region"
    },
    {
      "line": 300,
      "function": "gbf_core::decompiler::structure_analysis::StructureAnalysis::execute",
      "file": ".\\gbf_core\\src\\decompiler\\structure_analysis\\mod.rs"
    },
    {
      "line": 292,
      "function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile",
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
    }
  ]
}

Context

{
  "current_block_id": {
    "index": 20,
    "address": 12301,
    "block_type": "Normal"
  },
  "current_ast_node_stack": [
    {
      "StandaloneNode": {
        "Expression": {
          "Assignable": {
            "Phi": {
              "metadata": {
                "properties": {},
                "comments": []
              },
              "node_id": 154846,
              "ptr": {
                "region_ids": [
                  [
                    {
                      "index": 19
                    },
                    "Fallthrough"
                  ],
                  [
                    {
                      "index": 13
                    },
                    "Branch"
                  ],
                  [
                    {
                      "index": 9
                    },
                    "Branch"
                  ],
                  [
                    {
                      "index": 8
                    },
                    "Branch"
                  ],
                  [
                    {
                      "index": 3
                    },
                    "Branch"
                  ],
                  [
                    {
                      "index": 2
                    },
                    "Branch"
                  ],
                  [
                    {
                      "index": 1
                    },
                    "Branch"
                  ]
                ],
                "index": 0,
                "ssa_version": null
              }
            }
          }
        }
      }
    }
  ],
  "current_instruction": {
    "opcode": "Ret",
    "operand": null,
    "address": 12303
  }
}
function FileBrowser_Menu.onSelect(entryid#1, text#0)
{
    lit#4 = "Download file";
    // RegionId(14)
    // RegionId(15)
    if (!(text#0 == lit#4)) 
    {
        lit#5 = "Edit as Text";
        // RegionId(15)
        // RegionId(16)
        if (!(phi<idx=0, regions=()> == lit#5)) 
        {
            lit#6 = "Upload File";
            // RegionId(16)
            // RegionId(17)
            if (!(phi<idx=0, regions=()> == lit#6)) 
            {
                lit#7 = "Move file";
                // RegionId(17)
                // RegionId(18)
                if (!(phi<idx=0, regions=()> == lit#7)) 
                {
                    lit#8 = "Rename file";
                    // RegionId(18)
                    // RegionId(19)
                    if (!(phi<idx=0, regions=()> == lit#8)) 
                    {
                        lit#9 = "Delete file";
                        // RegionId(19)
                        // RegionId(10)
                        if (!(phi<idx=0, regions=()> == lit#9)) 
                        {
                            lit#11 = 6.012;
                            // RegionId(10)
                            // RegionId(11)
                            if (graalversion#10 >= lit#11) 
                            {
                                fn_call#13 = Adventure_requestFileDeletion#12(this.selectedfile);
                            }
                            // RegionId(12)
                            else
                            {
                                fn_call#15 = requestFileDeletion#14(this.selectedfile);
                            }
                            lit#17 = "folder";
                            fn_call#19 = requesttext#18(lit#17, this.showfolder);
                        }
                    }
                    // RegionId(9)
                    else
                    {
                        fn_call#22 = showRenameField#21(this.selectedfile, File#20);
                    }
                }
                // RegionId(4)
                else
                {
                    temp.files = {this.selectedfile};
                    lit#25 = ",";
                    builtin_fn_call#26 = temp.files.ends(lit#25);
                    // RegionId(4)
                    // RegionId(5)
                    if (builtin_fn_call#26) 
                    {
                        lit#27 = 0;
                        builtin_fn_call#28 = temp.files.length();
                        lit#29 = 1;
                        builtin_fn_call#30 = temp.files.substring(lit#27, builtin_fn_call#28 - lit#29);
                        temp.files = builtin_fn_call#30;
                    }
                    lit#31 = "<b>Move file</b>\n\nPlease give a new path for this file.";
                    lit#32 = "Move File";
                    fn_call#34 = createNamePrompt#33(lit#32, temp.files, lit#31);
                    temp.folder = this.showfolder;
                    lit#36 = "/";
                    builtin_fn_call#37 = temp.folder.ends(lit#36);
                    // RegionId(6)
                    // RegionId(7)
                    if (!builtin_fn_call#37) 
                    {
                        lit#38 = "/";
                        temp.folder = temp.folder @ lit#38;
                    }
                    ScriptedRCNamePrompt_TextEntry.text = temp.folder;
                }
            }
            // RegionId(3)
            else
            {
                FileSelector_Window.requestscript = this.name;
                fn_call#44 = selectFileForUpload#43();
            }
        }
        // RegionId(2)
        else
        {
            lit#45 = "scriptfiles/";
            fn_call#47 = downloadfiletofolder#46(this.selectedfile, lit#45 @ this.selectedfile);
            builtin_fn_call#49 = this.watchedfiles.add(this.selectedfile);
        }
    }
    // RegionId(1)
    else
    {
        fn_call#51 = selectFileForDownload#50(this.selectedfile);
    }
    lit#52 = 0;
    return lit#52;
}