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": 32,
"file": ".\\gbf_core\\src\\decompiler\\handlers\\special_two_operand.rs",
"function": "gbf_core::decompiler::handlers::special_two_operand::impl$0::handle_instruction"
},
{
"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,
"function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile",
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
}
]
}
{
"current_block_id": {
"index": 2,
"address": 1222,
"block_type": "Normal"
},
"current_ast_node_stack": [
{
"StandaloneNode": {
"Expression": {
"Assignable": {
"MemberAccess": {
"metadata": {
"properties": {},
"comments": []
},
"ptr": {
"rhs": {
"Identifier": {
"metadata": {
"properties": {},
"comments": []
},
"node_id": 39175,
"ptr": {
"ssa_version": null,
"id": "button"
}
}
},
"lhs": {
"Identifier": {
"metadata": {
"properties": {},
"comments": []
},
"node_id": 39174,
"ptr": {
"ssa_version": null,
"id": "temp"
}
}
},
"ssa_version": 2
},
"node_id": 39176
}
}
}
}
},
{
"StandaloneNode": {
"Expression": {
"Assignable": {
"MemberAccess": {
"metadata": {
"properties": {},
"comments": []
},
"node_id": 39179,
"ptr": {
"rhs": {
"Identifier": {
"metadata": {
"properties": {},
"comments": []
},
"node_id": 39178,
"ptr": {
"ssa_version": null,
"id": "bitmaps"
}
}
},
"lhs": {
"Identifier": {
"metadata": {
"properties": {},
"comments": []
},
"node_id": 39177,
"ptr": {
"ssa_version": null,
"id": "temp"
}
}
},
"ssa_version": 6
}
}
}
}
}
}
],
"current_instruction": {
"opcode": "AccessMember",
"operand": null,
"address": 1235
}
}
function public.updateGuiProfiles()
{
lit#7 = "TStaticVar";
new_node#8 = new lit#7(unknown_object#6);
temp.bitmaps = new_node#8;
fn_call#13 = temp.bitmaps.loadvarsfromarray(remotecontrol.options.guibitmapsprofile);
lit#14 = "GUIScripts";
lit#15 = "ClassList";
lit#16 = "WeaponList";
lit#17 = "NPCList";
lit#18 = "ServerOptions";
lit#19 = "FolderOptions";
lit#20 = "ServerFlags";
lit#21 = "Options";
lit#22 = "Accounts";
lit#23 = "FileBrowser";
lit#24 = "PlayerList";
temp.buttons = {lit#24, lit#23, lit#22, lit#21, lit#20, lit#19, lit#18, lit#17, lit#16, lit#15, lit#14};
lit#25 = 0;
for (phi<idx=0, regions=()> : phi<idx=1, regions=()>)
{
lit#26 = "icon";
fn_call#28 = lowercase#27(temp.button);
lit#29 = null;
// RegionId(2)
// RegionId(3)
if (temp.bitmaps.(lit#26 @ fn_call#28) == lit#29)
{
lit#30 = "icon";
fn_call#31 = lowercase#27(temp.button);
lit#32 = "rc_";
fn_call#33 = lowercase#27(temp.button);
lit#34 = "_normal.png";
temp.bitmaps.lit#30 @ fn_call#31 = (lit#32 @ fn_call#33) @ lit#34;
}
lit#35 = "icon";
fn_call#36 = lowercase#27(temp.button);
lit#37 = "pressed";
lit#38 = null;
// RegionId(4)
// RegionId(5)
if (temp.bitmaps.((lit#35 @ fn_call#36) @ lit#37) == lit#38)
{
lit#39 = "icon";
fn_call#40 = lowercase#27(temp.button);
lit#41 = "pressed";
lit#42 = "rc_";
fn_call#43 = lowercase#27(temp.button);
lit#44 = "_pressed.png";
temp.bitmaps.(lit#39 @ fn_call#40) @ lit#41 = (lit#42 @ fn_call#43) @ lit#44;
}
fn_call#45 = this.isOpen();
// RegionId(6)
// RegionId(7)
if (fn_call#45)
{
lit#46 = "GuiRC";
lit#47 = "Button";
lit#49 = "GuiRC";
lit#50 = "Button";
lit#52 = "icon";
fn_call#53 = lowercase#27(temp.button);
(lit#49 @ temp.button) @ lit#50.normalbitmap = temp.bitmaps.lit#52 @ fn_call#53;
(lit#46 @ temp.button) @ lit#47.mouseoverbitmap = (lit#49 @ temp.button) @ lit#50.normalbitmap;
lit#54 = "GuiRC";
lit#55 = "Button";
lit#57 = "icon";
fn_call#58 = lowercase#27(temp.button);
lit#59 = "pressed";
(lit#54 @ temp.button) @ lit#55.pressedbitmap = temp.bitmaps.(lit#57 @ fn_call#58) @ lit#59;
}
phi<idx=0, regions=()>++;
}
lit#61 = null;
// RegionId(9)
// RegionId(10)
if (temp.bitmaps.background == lit#61)
{
lit#62 = "rc_graalonline.jpg";
temp.bitmaps.background = lit#62;
}
fn_call#63 = this.isOpen();
// RegionId(11)
// RegionId(12)
if (fn_call#63)
{
GuiRCBitmap.bitmap = temp.bitmaps.background;
}
lit#66 = true;
fn_call#68 = temp.bitmaps.savevarstoarray(lit#66);
remotecontrol.options.guibitmapsprofile = fn_call#68;
lit#69 = "GuiRCWindowProfile";
gbf_new_obj#70 = lit#69;
lit#71 = "GuiBlueWindowProfile";
new_node#72 = new lit#71(gbf_new_obj#70);
gbf_new_obj#73 = new_node#72;
// RegionId(13)
// RegionId(14)
with (gbf_new_obj#70)
{
fn_call#75 = this.loadvarsfromarray(remotecontrol.options.guiwindowprofile);
}
fn_call#77 = addcontrol#76(phi<idx=0, regions=()>);
lit#78 = "GuiRCTextProfile";
gbf_new_obj#79 = lit#78;
lit#80 = "GuiBlueTextProfile";
new_node#81 = new lit#80(gbf_new_obj#79);
gbf_new_obj#82 = new_node#81;
// RegionId(15)
// RegionId(16)
with (gbf_new_obj#79)
{
lit#84 = 14;
fontsize#85 = lit#84;
fn_call#87 = this.loadvarsfromarray(remotecontrol.options.guitextprofile);
}
fn_call#88 = addcontrol#76(phi<idx=0, regions=()>);
lit#89 = "GuiRCGreenTextProfile";
gbf_new_obj#90 = lit#89;
lit#91 = "GuiBlueTextProfile";
new_node#92 = new lit#91(gbf_new_obj#90);
gbf_new_obj#93 = new_node#92;
// RegionId(17)
// RegionId(18)
with (gbf_new_obj#90)
{
lit#95 = 0;
lit#96 = 255;
lit#97 = 0;
fontcolor#98 = {lit#97, lit#96, lit#95};
lit#100 = "b";
fontstyle#101 = lit#100;
lit#102 = 18;
fontsize#103 = lit#102;
lit#105 = true;
textshadow#106 = lit#105;
lit#108 = 1;
lit#109 = 1;
shadowoffset#110 = {lit#109, lit#108};
lit#112 = 0;
lit#113 = 0;
lit#114 = 0;
shadowcolor#115 = {lit#114, lit#113, lit#112};
fn_call#117 = this.loadvarsfromarray(remotecontrol.options.guigreentextprofile);
}
fn_call#118 = addcontrol#76(phi<idx=0, regions=()>);
lit#119 = "GuiRCTabProfile";
gbf_new_obj#120 = lit#119;
lit#121 = "GuiBlueTabProfile";
new_node#122 = new lit#121(gbf_new_obj#120);
gbf_new_obj#123 = new_node#122;
// RegionId(19)
// RegionId(20)
with (gbf_new_obj#120)
{
fn_call#125 = this.loadvarsfromarray(remotecontrol.options.guitabprofile);
}
fn_call#126 = addcontrol#76(phi<idx=0, regions=()>);
lit#127 = "GuiRCScrollProfile";
gbf_new_obj#128 = lit#127;
lit#129 = "GuiBlueScrollProfile";
new_node#130 = new lit#129(gbf_new_obj#128);
gbf_new_obj#131 = new_node#130;
// RegionId(21)
// RegionId(22)
with (gbf_new_obj#128)
{
fn_call#133 = this.loadvarsfromarray(remotecontrol.options.guiscrollprofile);
}
fn_call#134 = addcontrol#76(phi<idx=0, regions=()>);
lit#135 = "GuiRCMLTextProfile";
gbf_new_obj#136 = lit#135;
lit#137 = "GuiBlueMLTextProfile";
new_node#138 = new lit#137(gbf_new_obj#136);
gbf_new_obj#139 = new_node#138;
// RegionId(23)
// RegionId(24)
with (gbf_new_obj#136)
{
fontsize#141 = remotecontrol.options.consolefontsize;
fn_call#143 = this.loadvarsfromarray(remotecontrol.options.guimltextprofile);
}
fn_call#144 = addcontrol#76(phi<idx=0, regions=()>);
lit#145 = "GuiRCMLTextEditProfile";
gbf_new_obj#146 = lit#145;
lit#147 = "GuiBlueMLTextProfile";
new_node#148 = new lit#147(gbf_new_obj#146);
gbf_new_obj#149 = new_node#148;
// RegionId(25)
// RegionId(26)
with (gbf_new_obj#146)
{
lit#151 = "DejaVuSansMono.ttf";
fn_call#153 = fileexists#152(lit#151);
// RegionId(26)
// RegionId(27)
if (fn_call#153)
{
lit#154 = "DejaVuSansMono";
}
// RegionId(28)
else
{
lit#155 = "Courier";
}
phi<idx=1, regions=()> = phi<idx=0, regions=()>;
lit#156 = 14;
fontsize#157 = lit#156;
lit#159 = 0;
lit#160 = 0;
lit#161 = 0;
cursorcolor#162 = {lit#161, lit#160, lit#159};
lit#164 = 0;
lit#165 = 255;
lit#166 = 255;
fillcolorhl#167 = {lit#166, lit#165, lit#164};
lit#168 = 0;
lit#169 = 0;
lit#170 = 0;
fontcolor#171 = {lit#170, lit#169, lit#168};
lit#173 = 0;
lit#174 = 0;
lit#175 = 192;
fontcolorhl#176 = {lit#175, lit#174, lit#173};
lit#178 = 0;
lit#179 = 16;
lit#180 = 0;
fontcolorsel#181 = {lit#180, lit#179, lit#178};
lit#183 = 192;
lit#184 = 0;
lit#185 = 192;
fontcolorlink#186 = {lit#185, lit#184, lit#183};
lit#188 = 255;
lit#189 = 0;
lit#190 = 0;
fontcolorlinkhl#191 = {lit#190, lit#189, lit#188};
fn_call#193 = this.loadvarsfromarray(remotecontrol.options.guimltexteditprofile);
}
fn_call#194 = addcontrol#76(phi<idx=0, regions=()>);
lit#195 = "GuiRCTextEditProfile";
gbf_new_obj#196 = lit#195;
lit#197 = "GuiBlueTextEditProfile";
new_node#198 = new lit#197(gbf_new_obj#196);
gbf_new_obj#199 = new_node#198;
// RegionId(30)
// RegionId(31)
with (gbf_new_obj#196)
{
lit#201 = 0;
lit#202 = 96;
lit#203 = 0;
fillcolor#204 = {lit#203, lit#202, lit#201};
lit#205 = 0;
lit#206 = 255;
lit#207 = 0;
fontcolor#208 = {lit#207, lit#206, lit#205};
lit#209 = 14;
fontsize#210 = lit#209;
fn_call#212 = this.loadvarsfromarray(remotecontrol.options.guitexteditprofile);
}
fn_call#213 = addcontrol#76(phi<idx=0, regions=()>);
lit#214 = "GuiRCTextListProfile";
gbf_new_obj#215 = lit#214;
lit#216 = "GuiBlueTextListProfile";
new_node#217 = new lit#216(gbf_new_obj#215);
gbf_new_obj#218 = new_node#217;
// RegionId(32)
// RegionId(33)
with (gbf_new_obj#215)
{
lit#219 = 2;
lit#220 = 32;
lit#221 = 1;
lit#222 = 32;
lit#223 = 0;
lit#224 = 32;
fillcolorhl#225 = {fillcolorhl#167[lit#223] + lit#224, fillcolorhl#167[lit#221] + lit#222, fillcolorhl#167[lit#219] + lit#220};
lit#227 = 2;
lit#228 = 64;
lit#229 = 1;
lit#230 = 64;
lit#231 = 0;
lit#232 = 64;
fillcolorna#233 = {fillcolorna#226[lit#231] + lit#232, fillcolorna#226[lit#229] + lit#230, fillcolorna#226[lit#227] + lit#228};
fn_call#235 = this.loadvarsfromarray(remotecontrol.options.guitextlistprofile);
}
fn_call#236 = addcontrol#76(phi<idx=0, regions=()>);
lit#237 = "GuiRCTreeViewProfile";
gbf_new_obj#238 = lit#237;
lit#239 = "GuiBlueTreeViewProfile";
new_node#240 = new lit#239(gbf_new_obj#238);
gbf_new_obj#241 = new_node#240;
// RegionId(34)
// RegionId(35)
with (gbf_new_obj#238)
{
fn_call#243 = this.loadvarsfromarray(remotecontrol.options.guitreeviewprofile);
}
fn_call#244 = addcontrol#76(phi<idx=0, regions=()>);
lit#245 = "GuiRCCheckBoxProfile";
gbf_new_obj#246 = lit#245;
lit#247 = "GuiBlueCheckBoxProfile";
new_node#248 = new lit#247(gbf_new_obj#246);
gbf_new_obj#249 = new_node#248;
// RegionId(36)
// RegionId(37)
with (gbf_new_obj#246)
{
fn_call#251 = this.loadvarsfromarray(remotecontrol.options.guicheckboxprofile);
}
fn_call#252 = addcontrol#76(phi<idx=0, regions=()>);
lit#253 = "GuiRCButtonProfile";
gbf_new_obj#254 = lit#253;
lit#255 = "GuiBlueButtonProfile";
new_node#256 = new lit#255(gbf_new_obj#254);
gbf_new_obj#257 = new_node#256;
// RegionId(38)
// RegionId(39)
with (gbf_new_obj#254)
{
fn_call#259 = this.loadvarsfromarray(remotecontrol.options.guibuttonprofile);
}
fn_call#260 = addcontrol#76(phi<idx=0, regions=()>);
lit#261 = "GuiRCPopUpMenuProfile";
gbf_new_obj#262 = lit#261;
lit#263 = "GuiBluePopUpMenuProfile";
new_node#264 = new lit#263(gbf_new_obj#262);
gbf_new_obj#265 = new_node#264;
// RegionId(40)
// RegionId(41)
with (gbf_new_obj#262)
{
fn_call#267 = this.loadvarsfromarray(remotecontrol.options.guipopupmenuprofile);
}
fn_call#268 = addcontrol#76(phi<idx=0, regions=()>);
lit#269 = 0;
return lit#269;
}
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 83