This was built to track decompiler and CFG progress.
Unexpected AstNode sub-type on stack. Expected Assignable.
{
"frames": [
{
"line": 282,
"function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::pop_assignable",
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs"
},
{
"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,
"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,
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs",
"function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile"
}
]
}
{
"current_block_id": {
"index": 1,
"address": 4547,
"block_type": "Normal"
},
"current_ast_node_stack": [
{
"BuildingArray": []
}
],
"current_instruction": {
"opcode": "AccessMember",
"operand": null,
"address": 4554
}
}
function showDeleteScript(texttype#1, textoptions#0)
{
lit#4 = "_";
temp.identity = (texttype#1 @ lit#4) @ textoptions#0;
lit#5 = "GuiRCDeleteScript_";
fn_call#7 = isobject#6(lit#5 @ temp.identity);
// RegionId(0)
// RegionId(1)
if (fn_call#7)
{
lit#8 = "GuiRCDeleteScript_";
fn_call#10 = lit#8 @ temp.identity.destroy();
}
lit#11 = "GuiRCDeleteScript_";
gbf_new_obj#12 = lit#11 @ temp.identity;
lit#13 = "GuiWindowCtrl";
new_node#14 = new lit#13(gbf_new_obj#12);
gbf_new_obj#15 = new_node#14;
// RegionId(2)
// RegionId(3)
with (gbf_new_obj#12)
{
lit#17 = "GuiRCWindowProfile";
profile#18 = lit#17;
// RegionId(3)
// RegionId(4)
if (remotecontrol.options.noexternalstyle)
{
lit#23 = "none";
}
// RegionId(5)
else
{
}
phi<idx=1, regions=()> = phi<idx=0, regions=()>;
lit#26 = "Confirm Delete";
text#27 = lit#26;
lit#29 = true;
isexternal#30 = lit#29;
lit#32 = true;
clientrelative#33 = lit#32;
lit#35 = 96;
lit#36 = 250;
clientextent#37 = {lit#36, lit#35};
lit#39 = true;
closequery#40 = lit#39;
lit#42 = false;
canresize#43 = lit#42;
lit#45 = false;
canmaximize#46 = lit#45;
lit#48 = false;
canminimize#49 = lit#48;
lit#51 = false;
visible#52 = lit#51;
lit#53 = "GuiRCDeleteScriptText_";
gbf_new_obj#54 = lit#53 @ temp.identity;
lit#55 = "GuiTextCtrl";
new_node#56 = new lit#55(gbf_new_obj#54);
gbf_new_obj#57 = new_node#56;
// RegionId(6)
// RegionId(7)
with (gbf_new_obj#54)
{
lit#58 = "GuiRCTextProfile";
profile#59 = lit#58;
lit#61 = 20;
lit#62 = 20;
position#63 = {lit#62, lit#61};
lit#64 = "Delete ";
lit#65 = " ";
lit#66 = "?";
text#67 = (((lit#64 @ texttype#1) @ lit#65) @ textoptions#0) @ lit#66;
}
fn_call#69 = addcontrol#68(phi<idx=0, regions=()>);
lit#70 = "GuiRCDeleteScriptDeleteButton_";
gbf_new_obj#71 = lit#70 @ temp.identity;
lit#72 = "GuiButtonCtrl";
new_node#73 = new lit#72(gbf_new_obj#71);
gbf_new_obj#74 = new_node#73;
// RegionId(8)
// RegionId(9)
with (gbf_new_obj#71)
{
lit#75 = "GuiRCButtonProfile";
profile#76 = lit#75;
lit#78 = 24;
lit#79 = 80;
extent#80 = {lit#79, lit#78};
lit#81 = 96;
lit#82 = 1;
lit#83 = 20;
lit#84 = 20;
position#85 = {lit#84, (lit#81 - extent#80[lit#82]) - lit#83};
lit#86 = "Delete";
text#87 = lit#86;
lit#88 = "onGuiRCDeleteScriptDeleteButtonPressed";
lit#89 = "onAction";
fn_call#93 = thiso.catchevent(this#90, lit#89, lit#88);
}
fn_call#94 = addcontrol#68(phi<idx=0, regions=()>);
lit#95 = "GuiRCDeleteScriptCancelButton_";
gbf_new_obj#96 = lit#95 @ temp.identity;
lit#97 = "GuiButtonCtrl";
new_node#98 = new lit#97(gbf_new_obj#96);
gbf_new_obj#99 = new_node#98;
// RegionId(10)
// RegionId(11)
with (gbf_new_obj#96)
{
lit#100 = "GuiRCButtonProfile";
profile#101 = lit#100;
lit#102 = 24;
lit#103 = 80;
extent#104 = {lit#103, lit#102};
lit#105 = 96;
lit#106 = 1;
lit#107 = 20;
lit#108 = 250;
lit#109 = 0;
lit#110 = 20;
position#111 = {(lit#108 - extent#104[lit#109]) - lit#110, (lit#105 - extent#104[lit#106]) - lit#107};
lit#112 = "Cancel";
text#113 = lit#112;
lit#114 = "onGuiRCDeleteScriptCloseQuery";
lit#115 = "onAction";
fn_call#116 = thiso.catchevent(this#90, lit#115, lit#114);
}
fn_call#117 = addcontrol#68(phi<idx=0, regions=()>);
lit#118 = true;
visible#119 = lit#118;
lit#120 = "onGuiRCDeleteScriptCloseQuery";
lit#121 = "onCloseQuery";
fn_call#122 = thiso.catchevent(this#90, lit#121, lit#120);
lit#123 = "onGuiRCDeleteScriptCloseQuery";
lit#124 = "onHide";
fn_call#125 = thiso.catchevent(this#90, lit#124, lit#123);
}
fn_call#126 = addcontrol#68(phi<idx=0, regions=()>);
fn_call#129 = getTitleByTextType#128(texttype#1);
temp.title = fn_call#129;
lit#130 = "GuiRCDeleteScript_";
lit#133 = "GuiRCDeleteScript_";
lit#134 = 3;
lit#135 = "GuiRCDeleteScript_";
lit#136 = 2;
lit#137 = 0;
lit#138 = "GuiRC";
lit#139 = "List";
lit#140 = 1;
lit#141 = "GuiRC";
lit#142 = "List";
lit#143 = 3;
lit#144 = "GuiRCDeleteScript_";
lit#145 = 3;
lit#146 = 2;
builtin_fn_call#147 = max(lit#137, ((lit#138 @ temp.title) @ lit#139).externalwindow.bounds[lit#140] + ((((lit#141 @ temp.title) @ lit#142).externalwindow.bounds[lit#143] - (lit#144 @ temp.identity).externalwindow.bounds[lit#145]) / lit#146));
lit#148 = 0;
lit#149 = "GuiRC";
lit#150 = "List";
lit#151 = 0;
lit#152 = "GuiRC";
lit#153 = "List";
lit#154 = 2;
lit#155 = "GuiRCDeleteScript_";
lit#156 = 2;
lit#157 = 2;
builtin_fn_call#158 = max(lit#148, ((lit#149 @ temp.title) @ lit#150).externalwindow.bounds[lit#151] + ((((lit#152 @ temp.title) @ lit#153).externalwindow.bounds[lit#154] - (lit#155 @ temp.identity).externalwindow.bounds[lit#156]) / lit#157));
lit#130 @ temp.identity.externalwindow.bounds = {builtin_fn_call#158, builtin_fn_call#147, lit#135 @ temp.identity.externalwindow.bounds[lit#136], lit#133 @ temp.identity.externalwindow.bounds[lit#134]};
lit#159 = 0;
return lit#159;
}
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 25