This was built to track decompiler and CFG progress.
Encountered AstNodeError while decompiling: Invalid operand type
{
"frames": [
{
"line": 241,
"function": "gbf_core::decompiler::handlers::builtins::impl$0::handle_instruction::closure$9",
"file": ".\\gbf_core\\src\\decompiler\\handlers\\builtins.rs"
},
{
"line": 237,
"function": "gbf_core::decompiler::handlers::builtins::impl$0::handle_instruction",
"file": ".\\gbf_core\\src\\decompiler\\handlers\\builtins.rs"
},
{
"line": 171,
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs",
"function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::process_instruction"
},
{
"line": 466,
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs",
"function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::process_regions"
},
{
"line": 286,
"function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile",
"file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
}
]
}
{
"current_block_id": {
"index": 26,
"block_type": "Normal",
"address": 18567
},
"current_ast_node_stack": [
{
"StandaloneNode": {
"Expression": {
"Assignable": {
"Identifier": {
"metadata": {
"properties": {},
"comments": []
},
"node_id": 247846,
"ptr": {
"ssa_version": 118,
"id": "gbf_new_obj"
}
}
}
}
}
},
{
"StandaloneNode": {
"Expression": {
"Assignable": {
"Phi": {
"metadata": {
"properties": {},
"comments": []
},
"ptr": {
"index": 0,
"region_ids": [
[
{
"index": 23
},
"Fallthrough"
],
[
{
"index": 22
},
"Branch"
]
],
"ssa_version": null
},
"node_id": 247847
}
}
}
}
},
{
"StandaloneNode": {
"Expression": {
"Assignable": {
"Identifier": {
"metadata": {
"properties": {},
"comments": []
},
"node_id": 247848,
"ptr": {
"ssa_version": 108,
"id": "gbf_new_obj"
}
}
}
}
}
}
],
"current_instruction": {
"opcode": "ObjSize",
"operand": null,
"address": 18583
}
}
function showAccountData(temp.data, temp.addmode)
{
lit#4 = 11;
lit#5 = "Global IP range";
lit#6 = 5;
lit#7 = "Admin worlds";
lit#8 = 4;
lit#9 = "Admin level";
lit#10 = 1;
lit#11 = "E-mail address";
lit#12 = "";
lit#13 = "Password";
lit#14 = 0;
lit#15 = "Account name";
temp.fields = {{lit#15, temp.data[lit#14]}, {lit#13, lit#12}, {lit#11, temp.data[lit#10]}, {lit#9, temp.data[lit#8]}, {lit#7, temp.data[lit#6]}, {lit#5, temp.data[lit#4]}};
lit#16 = "ScriptedRCAccountWindow";
gbf_new_obj#17 = lit#16;
lit#18 = "GuiWindowCtrl";
new_node#19 = new lit#18(gbf_new_obj#17);
gbf_new_obj#20 = new_node#19;
// RegionId(0)
// RegionId(1)
with (gbf_new_obj#17)
{
lit#22 = 40;
lit#23 = 40;
position#24 = {lit#23, lit#22};
lit#26 = "GuiBlueWindowProfile";
profile#27 = lit#26;
fn_call#30 = getGUIStyle#29();
style#31 = fn_call#30;
lit#33 = true;
clientrelative#34 = lit#33;
lit#36 = 354;
lit#37 = 245;
clientextent#38 = {lit#37, lit#36};
lit#40 = true;
isexternal#41 = lit#40;
lit#43 = false;
canresize#44 = lit#43;
lit#46 = false;
canmaximize#47 = lit#46;
lit#49 = false;
canminimize#50 = lit#49;
lit#52 = true;
visible#53 = lit#52;
// RegionId(1)
// RegionId(2)
if (temp.addmode)
{
lit#55 = "Add";
}
// RegionId(3)
else
{
lit#56 = "Edit";
}
lit#57 = " account ";
lit#58 = 0;
phi<idx=1, regions=()> = (phi<idx=0, regions=()> @ lit#57) @ temp.data[lit#58];
lit#60 = 0;
temp.i = lit#60;
builtin_fn_call#61 = temp.fields.size();
while (temp.i < builtin_fn_call#61)
{
temp.field = temp.fields[temp.i];
lit#63 = "ScriptedRCAccountWindLabel";
gbf_new_obj#64 = lit#63 @ temp.i;
lit#65 = "GuiTextCtrl";
new_node#66 = new lit#65(gbf_new_obj#64);
gbf_new_obj#67 = new_node#66;
// RegionId(6)
// RegionId(7)
with (gbf_new_obj#64)
{
lit#68 = 6;
lit#69 = 24;
lit#70 = 6;
position#71 = {lit#70, lit#68 + (lit#69 * temp.i)};
lit#73 = 16;
lit#74 = 100;
extent#75 = {lit#74, lit#73};
lit#76 = "GuiBlueTextProfile";
profile#77 = lit#76;
lit#78 = 0;
text#79 = temp.field[lit#78];
}
fn_call#81 = addcontrol#80(phi<idx=0, regions=()>);
lit#82 = "ScriptedRCAccountWindEdit";
gbf_new_obj#83 = lit#82 @ temp.i;
lit#84 = "GuiTextEditCtrl";
new_node#85 = new lit#84(gbf_new_obj#83);
gbf_new_obj#86 = new_node#85;
// RegionId(8)
// RegionId(9)
with (gbf_new_obj#83)
{
lit#87 = 5;
lit#88 = 24;
lit#89 = 106;
position#90 = {lit#89, lit#87 + (lit#88 * temp.i)};
lit#91 = 22;
lit#92 = 130;
extent#93 = {lit#92, lit#91};
lit#94 = "GuiBlueTextEditProfile";
profile#95 = lit#94;
lit#96 = 1;
text#97 = temp.field[lit#96];
lit#99 = 0;
lit#100 = "Password";
password#101 = temp.field[lit#99] == lit#100;
}
fn_call#102 = addcontrol#80(phi<idx=0, regions=()>);
temp.i++;
}
lit#103 = "ScriptedRCAccountWindCheckOnlyload";
gbf_new_obj#104 = lit#103;
lit#105 = "GuiCheckBoxCtrl";
new_node#106 = new lit#105(gbf_new_obj#104);
gbf_new_obj#107 = new_node#106;
// RegionId(11)
// RegionId(12)
with (gbf_new_obj#104)
{
lit#108 = 150;
lit#109 = 6;
position#110 = {lit#109, lit#108};
lit#111 = 16;
lit#112 = 200;
extent#113 = {lit#112, lit#111};
lit#114 = "GuiBlueCheckBoxProfile";
profile#115 = lit#114;
lit#117 = 3;
checked#118 = temp.data[lit#117];
lit#119 = "Account is load-only (guest)";
text#120 = lit#119;
}
fn_call#121 = addcontrol#80(phi<idx=0, regions=()>);
lit#122 = "ScriptedRCAccountWindCheckBanned";
gbf_new_obj#123 = lit#122;
lit#124 = "GuiCheckBoxCtrl";
new_node#125 = new lit#124(gbf_new_obj#123);
gbf_new_obj#126 = new_node#125;
// RegionId(13)
// RegionId(14)
with (gbf_new_obj#123)
{
lit#127 = 170;
lit#128 = 6;
position#129 = {lit#128, lit#127};
lit#130 = 16;
lit#131 = 200;
extent#132 = {lit#131, lit#130};
lit#133 = "GuiBlueCheckBoxProfile";
profile#134 = lit#133;
lit#135 = 2;
checked#136 = temp.data[lit#135];
lit#137 = "Account is disabled";
text#138 = lit#137;
}
fn_call#139 = addcontrol#80(phi<idx=0, regions=()>);
lit#140 = "ScriptedRCAccountWindLabelBantime";
gbf_new_obj#141 = lit#140;
lit#142 = "GuiTextCtrl";
new_node#143 = new lit#142(gbf_new_obj#141);
gbf_new_obj#144 = new_node#143;
// RegionId(15)
// RegionId(16)
with (gbf_new_obj#141)
{
lit#145 = 190;
lit#146 = 6;
position#147 = {lit#146, lit#145};
lit#148 = 16;
lit#149 = 100;
extent#150 = {lit#149, lit#148};
lit#151 = "GuiBlueTextProfile";
profile#152 = lit#151;
lit#153 = "Ban time";
text#154 = lit#153;
}
fn_call#155 = addcontrol#80(phi<idx=0, regions=()>);
lit#156 = "ScriptedRCAccountWindEditBantime";
gbf_new_obj#157 = lit#156;
lit#158 = "GuiTextEditCtrl";
new_node#159 = new lit#158(gbf_new_obj#157);
gbf_new_obj#160 = new_node#159;
// RegionId(17)
// RegionId(18)
with (gbf_new_obj#157)
{
lit#161 = 189;
lit#162 = 106;
position#163 = {lit#162, lit#161};
lit#164 = 22;
lit#165 = 130;
extent#166 = {lit#165, lit#164};
lit#167 = "GuiBlueTextEditProfile";
profile#168 = lit#167;
lit#169 = 6;
lit#170 = 0;
// RegionId(18)
// RegionId(19)
if (temp.data[lit#169] == lit#170)
{
lit#171 = "(none)";
}
// RegionId(20)
else
{
lit#172 = 6;
lit#173 = "%Y-%m-%d %H:%M:%S";
fn_call#175 = timestamp#174(lit#173, temp.data[lit#172]);
}
phi<idx=1, regions=()> = phi<idx=0, regions=()>;
}
fn_call#176 = addcontrol#80(phi<idx=0, regions=()>);
lit#177 = "ScriptedRCAccountWindLabelBanreason";
gbf_new_obj#178 = lit#177;
lit#179 = "GuiTextCtrl";
new_node#180 = new lit#179(gbf_new_obj#178);
gbf_new_obj#181 = new_node#180;
// RegionId(22)
// RegionId(23)
with (gbf_new_obj#178)
{
lit#182 = 210;
lit#183 = 6;
position#184 = {lit#183, lit#182};
lit#185 = 16;
lit#186 = 150;
extent#187 = {lit#186, lit#185};
lit#188 = "GuiBlueTextProfile";
profile#189 = lit#188;
lit#190 = "Ban reason/comments";
text#191 = lit#190;
}
fn_call#192 = addcontrol#80(phi<idx=0, regions=()>);
lit#193 = "ScriptedRCAccountWindScrollBanreason";
gbf_new_obj#194 = lit#193;
lit#195 = "GuiScrollCtrl";
new_node#196 = new lit#195(gbf_new_obj#194);
gbf_new_obj#197 = new_node#196;
// RegionId(24)
// RegionId(25)
with (gbf_new_obj#194)
{
lit#198 = 229;
lit#199 = 6;
position#200 = {lit#199, lit#198};
lit#201 = 80;
lit#202 = 230;
extent#203 = {lit#202, lit#201};
lit#204 = "GuiBlueScrollProfile";
profile#205 = lit#204;
lit#207 = "alwaysOff";
hScrollBar#208 = lit#207;
lit#210 = "dynamic";
vScrollBar#211 = lit#210;
lit#212 = "ScriptedRCAccountWindEditBanReason";
gbf_new_obj#213 = lit#212;
lit#214 = "GuiMLTextEditCtrl";
new_node#215 = new lit#214(gbf_new_obj#213);
gbf_new_obj#216 = new_node#215;
// RegionId(25)
// RegionId(26)
with (gbf_new_obj#213)
{
lit#217 = 80;
lit#218 = 220;
extent#219 = {lit#218, lit#217};
lit#220 = "GuiBlueMLTextEditProfile";
profile#221 = lit#220;
lit#222 = 7;
builtin_fn_call#223 = temp.data[lit#222].size();
lit#224 = 1;
// RegionId(26)
// RegionId(27)
if (builtin_fn_call#223 > lit#224)
{
lit#225 = 7;
fn_call#227 = setLines#226(temp.data[lit#225]);
}
// RegionId(28)
else
{
lit#228 = 7;
fn_call#230 = setText#229(temp.data[lit#228]);
}
}
fn_call#231 = addcontrol#80(phi<idx=0, regions=()>);
}
fn_call#232 = addcontrol#80(phi<idx=0, regions=()>);
lit#233 = "ScriptedRCAccountWindButtonApply";
gbf_new_obj#234 = lit#233;
lit#235 = "GuiButtonCtrl";
new_node#236 = new lit#235(gbf_new_obj#234);
gbf_new_obj#237 = new_node#236;
// RegionId(31)
// RegionId(32)
with (gbf_new_obj#234)
{
lit#238 = 316;
lit#239 = 100;
position#240 = {lit#239, lit#238};
lit#241 = 32;
lit#242 = 64;
extent#243 = {lit#242, lit#241};
lit#244 = "GuiBlueButtonProfile";
profile#245 = lit#244;
lit#246 = "&Apply";
text#247 = lit#246;
this.addmode = temp.addmode;
}
fn_call#249 = addcontrol#80(phi<idx=0, regions=()>);
lit#250 = "ScriptedRCAccountWindButtonClose";
gbf_new_obj#251 = lit#250;
lit#252 = "GuiButtonCtrl";
new_node#253 = new lit#252(gbf_new_obj#251);
gbf_new_obj#254 = new_node#253;
// RegionId(33)
// RegionId(34)
with (gbf_new_obj#251)
{
lit#255 = 316;
lit#256 = 170;
position#257 = {lit#256, lit#255};
lit#258 = 32;
lit#259 = 64;
extent#260 = {lit#259, lit#258};
lit#261 = "GuiBlueButtonProfile";
profile#262 = lit#261;
lit#263 = "&Close";
text#264 = lit#263;
}
fn_call#265 = addcontrol#80(phi<idx=0, regions=()>);
}
fn_call#266 = addcontrol#80(phi<idx=0, regions=()>);
lit#267 = 0;
return lit#267;
}
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 67