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,
"function": "gbf_core::decompiler::structure_analysis::if_region_reducer::impl$1::reduce_region",
"file": ".\\gbf_core\\src\\decompiler\\structure_analysis\\if_region_reducer.rs"
},
{
"line": 564,
"function": "gbf_core::decompiler::structure_analysis::StructureAnalysis::reduce_acyclic_region",
"file": ".\\gbf_core\\src\\decompiler\\structure_analysis\\mod.rs"
},
{
"line": 300,
"file": ".\\gbf_core\\src\\decompiler\\structure_analysis\\mod.rs",
"function": "gbf_core::decompiler::structure_analysis::StructureAnalysis::execute"
},
{
"line": 292,
"function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile",
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
}
]
}
{
"current_block_id": {
"index": 8,
"address": 2823,
"block_type": "Normal"
},
"current_ast_node_stack": [],
"current_instruction": {
"opcode": "Ret",
"operand": null,
"address": 2824
}
}
function onData(client#2, type#1, data#0)
{
lit#5 = -1;
temp.defaulthandler = lit#5;
lit#6 = 178;
// RegionId(5)
if (!(type#1 == lit#6))
{
lit#7 = 42;
// RegionId(5)
// RegionId(2)
if (!(phi<idx=0, regions=()> == lit#7))
{
lit#8 = 18;
temp.defaulthandler = lit#8;
lit#9 = 18;
lit#10 = 42;
fn_call#12 = temp.client.setInDataHandlers({lit#10, lit#9});
fn_call#15 = get4ByteFromNetString#14(data#0);
temp.time = fn_call#15;
lit#17 = 5;
lit#18 = 981048814;
temp.time2 = (temp.time * lit#17) + lit#18;
builtin_fn_call#21 = abs(temp.time2 - this.scripttimestamp);
lit#22 = 604800;
// RegionId(3)
if (builtin_fn_call#21 > lit#22)
{
lit#23 = true;
fn_call#25 = TClient_deleteTClient#24(lit#23);
lit#26 = true;
lit#27 = -1;
lit#28 = "There was a network problem (2), please connect again.";
fn_call#30 = printDisconnectError#29(lit#28, lit#27, lit#26);
lit#31 = 0;
return lit#31;
}
}
lit#33 = 0;
// RegionId(6)
// RegionId(7)
if (temp.defaulthandler >= lit#33)
{
fn_call#35 = this.client.defaultInHandler(temp.defaulthandler, data#0);
}
lit#36 = 0;
return lit#36;
}
// RegionId(1)
else
{
lit#32 = 0;
temp.defaulthandler = lit#32;
goto RegionId(6);
}
}
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 13