Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

{
  "frames": []
}

Context

{
  "current_block_id": {
    "index": 21,
    "block_type": "Normal",
    "address": 635
  },
  "current_ast_node_stack": [
    {
      "BuildingArray": [
        {
          "Identifier": {
            "metadata": {
              "properties": {},
              "comments": []
            },
            "node_id": 43171,
            "ptr": {
              "ssa_version": 198,
              "id": "lit"
            }
          }
        },
        {
          "MemberAccess": {
            "metadata": {
              "properties": {},
              "comments": []
            },
            "node_id": 43174,
            "ptr": {
              "rhs": {
                "Identifier": {
                  "metadata": {
                    "properties": {},
                    "comments": []
                  },
                  "ptr": {
                    "ssa_version": null,
                    "id": "i"
                  },
                  "node_id": 43173
                }
              },
              "lhs": {
                "Identifier": {
                  "metadata": {
                    "properties": {},
                    "comments": []
                  },
                  "node_id": 43172,
                  "ptr": {
                    "ssa_version": null,
                    "id": "temp"
                  }
                }
              },
              "ssa_version": null
            }
          }
        },
        {
          "MemberAccess": {
            "metadata": {
              "properties": {},
              "comments": []
            },
            "node_id": 43177,
            "ptr": {
              "rhs": {
                "Identifier": {
                  "metadata": {
                    "properties": {},
                    "comments": []
                  },
                  "node_id": 43176,
                  "ptr": {
                    "ssa_version": null,
                    "id": "i"
                  }
                }
              },
              "ssa_version": null,
              "lhs": {
                "Identifier": {
                  "metadata": {
                    "properties": {},
                    "comments": []
                  },
                  "ptr": {
                    "ssa_version": null,
                    "id": "temp"
                  },
                  "node_id": 43175
                }
              }
            }
          }
        }
      ]
    }
  ],
  "current_instruction": {
    "opcode": "Swap",
    "operand": null,
    "address": 706
  }
}
function public.showOptions()
{
    lit#0 = "GuiRCOptions";
    fn_call#2 = isobject#1(lit#0);
    // RegionId(0)
    // RegionId(1)
    if (fn_call#2) 
    {
        fn_call#5 = GuiRCOptions.destroy();
    }
    lit#6 = "GuiRCOptions";
    gbf_new_obj#7 = lit#6;
    lit#8 = "GuiWindowCtrl";
    new_node#9 = new lit#8(gbf_new_obj#7);
    gbf_new_obj#10 = new_node#9;
    // RegionId(2)
    // RegionId(3)
    with (gbf_new_obj#7) 
    {
        lit#12 = "RC Options";
        text#13 = lit#12;
        lit#15 = "GuiRCWindowProfile";
        profile#16 = lit#15;
        // RegionId(3)
        // RegionId(4)
        if (remotecontrol.options.noexternalstyle) 
        {
            lit#21 = "none";
        }
        // RegionId(5)
        else
        {
        }
        phi<idx=1, regions=()> = phi<idx=0, regions=()>;
        lit#24 = true;
        clientrelative#25 = lit#24;
        lit#27 = true;
        isexternal#28 = lit#27;
        lit#30 = 196;
        lit#31 = 256;
        clientextent#32 = {lit#31, lit#30};
        lit#34 = false;
        visible#35 = lit#34;
        lit#36 = "GuiRCOptionsFontSizeText";
        gbf_new_obj#37 = lit#36;
        lit#38 = "GuiTextCtrl";
        new_node#39 = new lit#38(gbf_new_obj#37);
        gbf_new_obj#40 = new_node#39;
        // RegionId(6)
        // RegionId(7)
        with (gbf_new_obj#37) 
        {
            lit#41 = "Console Font Size";
            text#42 = lit#41;
            lit#43 = "GuiRCTextProfile";
            profile#44 = lit#43;
            lit#46 = 20;
            lit#47 = 20;
            position#48 = {lit#47, lit#46};
        }
        fn_call#50 = addcontrol#49(phi<idx=0, regions=()>);
        lit#51 = "GuiRCOptionsFontSizeTextEdit";
        gbf_new_obj#52 = lit#51;
        lit#53 = "GuiTextEditCtrl";
        new_node#54 = new lit#53(gbf_new_obj#52);
        gbf_new_obj#55 = new_node#54;
        // RegionId(8)
        // RegionId(9)
        with (gbf_new_obj#52) 
        {
            text#57 = remotecontrol.options.consolefontsize;
            lit#58 = "GuiRCTextEditProfile";
            profile#59 = lit#58;
            lit#61 = true;
            useownprofile#62 = lit#61;
            lit#64 = true;
            profile.numbersonly = lit#64;
            lit#66 = 20;
            lit#67 = 48;
            extent#68 = {lit#67, lit#66};
            lit#69 = 20;
            lit#70 = 0;
            lit#71 = 0;
            lit#72 = 20;
            position#73 = {(GuiRCOptions.clientextent[lit#70] - extent#68[lit#71]) - lit#72, lit#69};
        }
        fn_call#74 = addcontrol#49(phi<idx=0, regions=()>);
        lit#75 = "GuiRCOptionsBufferLinesText";
        gbf_new_obj#76 = lit#75;
        lit#77 = "GuiTextCtrl";
        new_node#78 = new lit#77(gbf_new_obj#76);
        gbf_new_obj#79 = new_node#78;
        // RegionId(10)
        // RegionId(11)
        with (gbf_new_obj#76) 
        {
            lit#80 = "Console Buffer Lines";
            text#81 = lit#80;
            lit#82 = "GuiRCTextProfile";
            profile#83 = lit#82;
            lit#84 = 48;
            lit#85 = 20;
            position#86 = {lit#85, lit#84};
        }
        fn_call#87 = addcontrol#49(phi<idx=0, regions=()>);
        lit#88 = "GuiRCOptionsBufferLinesTextEdit";
        gbf_new_obj#89 = lit#88;
        lit#90 = "GuiTextEditCtrl";
        new_node#91 = new lit#90(gbf_new_obj#89);
        gbf_new_obj#92 = new_node#91;
        // RegionId(12)
        // RegionId(13)
        with (gbf_new_obj#89) 
        {
            text#94 = remotecontrol.options.consolebufferlines;
            lit#95 = "GuiRCTextEditProfile";
            profile#96 = lit#95;
            lit#97 = true;
            useownprofile#98 = lit#97;
            lit#99 = true;
            profile.numbersonly = lit#99;
            lit#100 = 20;
            lit#101 = 48;
            extent#102 = {lit#101, lit#100};
            lit#103 = 48;
            lit#104 = 0;
            lit#105 = 0;
            lit#106 = 20;
            position#107 = {(GuiRCOptions.clientextent[lit#104] - extent#102[lit#105]) - lit#106, lit#103};
        }
        fn_call#108 = addcontrol#49(phi<idx=0, regions=()>);
        lit#109 = "GuiRCOptionsLogRCChatCheckBox";
        gbf_new_obj#110 = lit#109;
        lit#111 = "GuiCheckBoxCtrl";
        new_node#112 = new lit#111(gbf_new_obj#110);
        gbf_new_obj#113 = new_node#112;
        // RegionId(14)
        // RegionId(15)
        with (gbf_new_obj#110) 
        {
            lit#114 = "Log scriptfiles/<server>/rcchat.txt";
            text#115 = lit#114;
            lit#116 = "GuiRCCheckBoxProfile";
            profile#117 = lit#116;
            lit#118 = 76;
            lit#119 = 20;
            position#120 = {lit#119, lit#118};
            lit#121 = 20;
            lit#122 = 0;
            lit#123 = 40;
            extent#124 = {GuiRCOptions.clientextent[lit#122] - lit#123, lit#121};
            checked#127 = remotecontrol.options.logrcchat;
        }
        fn_call#128 = addcontrol#49(phi<idx=0, regions=()>);
        lit#129 = "GuiRCOptionsDisconnectOnCloseCheckBox";
        gbf_new_obj#130 = lit#129;
        lit#131 = "GuiCheckBoxCtrl";
        new_node#132 = new lit#131(gbf_new_obj#130);
        gbf_new_obj#133 = new_node#132;
        // RegionId(16)
        // RegionId(17)
        with (gbf_new_obj#130) 
        {
            lit#134 = "Disconnect on close";
            text#135 = lit#134;
            lit#136 = "GuiRCCheckBoxProfile";
            profile#137 = lit#136;
            lit#138 = 104;
            lit#139 = 20;
            position#140 = {lit#139, lit#138};
            lit#141 = 20;
            lit#142 = 0;
            lit#143 = 40;
            extent#144 = {GuiRCOptions.clientextent[lit#142] - lit#143, lit#141};
            checked#146 = remotecontrol.options.disconnectonclose;
        }
        fn_call#147 = addcontrol#49(phi<idx=0, regions=()>);
        lit#148 = "GuiRCOptionsNoExternalStyleCheckBox";
        gbf_new_obj#149 = lit#148;
        lit#150 = "GuiCheckBoxCtrl";
        new_node#151 = new lit#150(gbf_new_obj#149);
        gbf_new_obj#152 = new_node#151;
        // RegionId(18)
        // RegionId(19)
        with (gbf_new_obj#149) 
        {
            lit#153 = "No external style";
            text#154 = lit#153;
            lit#155 = "GuiRCCheckBoxProfile";
            profile#156 = lit#155;
            lit#157 = 132;
            lit#158 = 20;
            position#159 = {lit#158, lit#157};
            lit#160 = 20;
            lit#161 = 0;
            lit#162 = 40;
            extent#163 = {GuiRCOptions.clientextent[lit#161] - lit#162, lit#160};
            checked#164 = remotecontrol.options.noexternalstyle;
        }
        fn_call#165 = addcontrol#49(phi<idx=0, regions=()>);
        lit#166 = "GuiRCOptionsEditGuiProfilePopUpMenu";
        gbf_new_obj#167 = lit#166;
        lit#168 = "GuiPopUpMenuCtrl";
        new_node#169 = new lit#168(gbf_new_obj#167);
        gbf_new_obj#170 = new_node#169;
        // RegionId(20)
        // RegionId(21)
        with (gbf_new_obj#167) 
        {
            lit#171 = "Edit gui profiles (advanced)";
            text#172 = lit#171;
            lit#173 = "GuiRCPopUpMenuProfile";
            profile#174 = lit#173;
            lit#175 = 160;
            lit#176 = 20;
            position#177 = {lit#176, lit#175};
            lit#178 = 20;
            lit#179 = 0;
            lit#180 = 40;
            extent#181 = {GuiRCOptions.clientextent[lit#179] - lit#180, lit#178};
            textprofile#184 = GuiRCTextListProfile#183;
            scrollprofile#187 = GuiRCScrollProfile#186;
            lit#190 = 0;
            temp.i = lit#190;
            lit#191 = "Bitmaps";
            phi<idx=0, regions=()>++;
            fn_call#193 = addrow#192(temp.i, temp.i, lit#191);
            lit#194 = "Button";
            phi<idx=1, regions=()>++;
            fn_call#195 = addrow#192(temp.i, temp.i, lit#194);
            lit#196 = "CheckBox";
            phi<idx=2, regions=()>++;
            fn_call#197 = addrow#192(temp.i, temp.i, lit#196);
            lit#198 = "GreenText";
            phi<idx=3, regions=()>++;
            fn_call#199 = addrow#192(temp.i, temp.i, lit#198);
            lit#200 = "PopUpMenu";
            phi<idx=4, regions=()>++;
            fn_call#201 = addrow#192(temp.i, temp.i, lit#200);
            lit#202 = "MLText";
            phi<idx=5, regions=()>++;
            fn_call#203 = addrow#192(temp.i, temp.i, lit#202);
            lit#204 = "MLTextEdit";
            phi<idx=6, regions=()>++;
            fn_call#205 = addrow#192(temp.i, temp.i, lit#204);
            lit#206 = "Scroll";
            phi<idx=7, regions=()>++;
            fn_call#207 = addrow#192(temp.i, temp.i, lit#206);
            lit#208 = "Tab";
            phi<idx=8, regions=()>++;
            fn_call#209 = addrow#192(temp.i, temp.i, lit#208);
            lit#210 = "Text";
            phi<idx=9, regions=()>++;
            fn_call#211 = addrow#192(temp.i, temp.i, lit#210);
            lit#212 = "TextEdit";
            phi<idx=10, regions=()>++;
            fn_call#213 = addrow#192(temp.i, temp.i, lit#212);
            lit#214 = "TextList";
            phi<idx=11, regions=()>++;
            fn_call#215 = addrow#192(temp.i, temp.i, lit#214);
            lit#216 = "Window";
            phi<idx=12, regions=()>++;
            fn_call#217 = addrow#192(temp.i, temp.i, lit#216);
        }
        fn_call#218 = addcontrol#49(phi<idx=0, regions=()>);
        lit#219 = true;
        visible#220 = lit#219;
    }
    fn_call#221 = addcontrol#49(phi<idx=0, regions=()>);
    lit#224 = 3;
    lit#225 = 2;
    lit#227 = 1;
    lit#228 = 32;
    lit#229 = 0;
    lit#230 = 32;
    GuiRCOptions.externalwindow.bounds = {GuiRC.externalwindow.bounds[lit#229] + lit#230, GuiRC.externalwindow.bounds[lit#227] + lit#228, GuiRCOptions.externalwindow.bounds[lit#225], GuiRCOptions.externalwindow.bounds[lit#224]};
    lit#231 = 0;
    return lit#231;
}