This was built to track decompiler and CFG progress.
Unexpected AstNode sub-type on stack. Expected Assignable.
{
"frames": [
{
"line": 282,
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs",
"function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::pop_assignable"
},
{
"line": 33,
"function": "gbf_core::decompiler::handlers::special_two_operand::impl$0::handle_instruction",
"file": ".\\gbf_core\\src\\decompiler\\handlers\\special_two_operand.rs"
},
{
"line": 171,
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs",
"function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::process_instruction"
},
{
"line": 467,
"function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::process_regions",
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
},
{
"line": 286,
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs",
"function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile"
}
]
}
{
"current_block_id": {
"index": 0,
"address": 7139,
"block_type": "Entry"
},
"current_ast_node_stack": [
{
"BuildingArray": []
}
],
"current_instruction": {
"opcode": "AccessMember",
"operand": null,
"address": 7160
}
}
function addTextToTab(tab#1, data#0)
{
lit#2 = "GuiRCConsoleMLText_Tab_";
fn_call#4 = lit#2 @ tab#1.deselecttext();
lit#5 = false;
lit#6 = "<";
lit#7 = "<";
fn_call#9 = quickReplaceText#8(data#0, lit#7, lit#6, lit#5);
data#10 = fn_call#9;
lit#11 = false;
lit#12 = ">";
lit#13 = ">";
fn_call#14 = quickReplaceText#8(data#0, lit#13, lit#12, lit#11);
data#15 = fn_call#14;
lit#18 = ":";
builtin_fn_call#19 = data#15.pos(lit#18);
temp.colon = builtin_fn_call#19;
lit#20 = 0;
// RegionId(0)
// RegionId(1)
if (temp.colon >= lit#20)
{
lit#21 = "<font color=limegreen><b>";
lit#22 = 0;
lit#23 = 1;
builtin_fn_call#24 = data#15.substring(lit#22, temp.colon + lit#23);
lit#25 = "</b></font>";
lit#26 = 1;
lit#27 = -1;
builtin_fn_call#28 = data#15.substring(temp.colon + lit#26, lit#27);
data#29 = ((lit#21 @ builtin_fn_call#24) @ lit#25) @ builtin_fn_call#28;
}
lit#31 = "GuiRCConsoleScroll_Tab_";
temp.scrollpos = lit#31 @ tab#1.scrollpos;
lit#32 = "GuiRCConsoleMLText_Tab_";
fn_call#34 = lit#32 @ tab#1.scrolltobottom();
lit#35 = "GuiRCConsoleMLText_Tab_";
builtin_fn_call#37 = lit#35 @ tab#1.plaintext.length();
lit#38 = 0;
// RegionId(2)
// RegionId(3)
if (builtin_fn_call#37 > lit#38)
{
lit#39 = "\n";
data#40 = lit#39 @ data#0;
}
lit#41 = false;
lit#42 = "GuiRCConsoleMLText_Tab_";
fn_call#44 = lit#42 @ tab#1.addtext(data#0, lit#41);
lit#48 = 0;
// RegionId(4)
// RegionId(5)
if (remotecontrol.options.consolebufferlines > lit#48)
{
lit#50 = "GuiRCConsoleMLText_Tab_";
lit#51 = "\n";
builtin_fn_call#52 = lit#50 @ tab#1.plaintext.positions(lit#51);
temp.positions = builtin_fn_call#52;
builtin_fn_call#53 = temp.positions.size();
// RegionId(5)
// RegionId(6)
if (builtin_fn_call#53 >= remotecontrol.options.consolebufferlines)
{
lit#54 = "GuiRCConsoleMLText_Tab_";
builtin_fn_call#55 = temp.positions.size();
lit#56 = 1;
lit#57 = -1;
builtin_fn_call#58 = lit#54 @ tab#1.plaintext.substring(temp.positions[(builtin_fn_call#55 - remotecontrol.options.consolebufferlines)] + lit#56, lit#57);
lit#59 = "GuiRCConsoleMLText_Tab_";
fn_call#61 = lit#59 @ tab#1.settext(builtin_fn_call#58);
}
}
lit#62 = "GuiRCConsoleScroll_Tab_";
// RegionId(7)
// RegionId(8)
if (temp.scrollpos == (lit#62 @ tab#1).scrollpos)
{
lit#63 = "GuiRCConsoleMLText_Tab_";
fn_call#64 = lit#63 @ tab#1.scrolltobottom();
}
// RegionId(9)
else
{
lit#65 = 1;
lit#66 = 0;
lit#67 = "GuiRCConsoleScroll_Tab_";
fn_call#69 = lit#67 @ tab#1.scrollto(temp.scrollpos[lit#66], temp.scrollpos[lit#65]);
}
lit#70 = 0;
return lit#70;
}
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 19