This was built to track decompiler and CFG progress.
A structure analysis error occurred while decompiling the function: A structure analysis error occurred: Control flow region must have exactly two successors, found 1
{
"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"
}
]
}
{
"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;
}
Use the mouse wheel + shift to zoom in and out, and click and drag to pan.
Use the mouse wheel + shift to zoom in and out, and click and drag to pan.
Step 1 of 29