Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

{
  "frames": []
}

Context

{
  "current_block_id": {
    "index": 5,
    "address": 2073,
    "block_type": "Normal"
  },
  "current_ast_node_stack": [
    {
      "StandaloneNode": {
        "Expression": {
          "Assignable": {
            "MemberAccess": {
              "metadata": {
                "properties": {},
                "comments": []
              },
              "node_id": 299162,
              "ptr": {
                "rhs": {
                  "Identifier": {
                    "metadata": {
                      "properties": {},
                      "comments": []
                    },
                    "node_id": 299161,
                    "ptr": {
                      "ssa_version": null,
                      "id": "i"
                    }
                  }
                },
                "ssa_version": 9,
                "lhs": {
                  "Identifier": {
                    "metadata": {
                      "properties": {},
                      "comments": []
                    },
                    "ptr": {
                      "ssa_version": null,
                      "id": "temp"
                    },
                    "node_id": 299160
                  }
                }
              }
            }
          }
        }
      }
    }
  ],
  "current_instruction": {
    "opcode": "Dec",
    "operand": null,
    "address": 2074
  }
}
function onDisconnected(reason#2, error#1, sslerror#0)
{
    lit#10 = false;
    fn_call#12 = TClient_deleteTClient#11(lit#10);
    fn_call#14 = getplatform#13();
    lit#15 = "bada";
    lit#16 = "javascript";
    lit#17 = "flash";
    lit#18 = "android";
    lit#19 = "iphone";
    // RegionId(0)
    // RegionId(1)
    if (fn_call#14 in {lit#19, lit#18, lit#17, lit#16, lit#15}) 
    {
        builtin_fn_call#21 = GUIContainer.controls.size();
        lit#22 = 1;
        temp.i = builtin_fn_call#21 - lit#22;
        lit#23 = 0;
        while (temp.i >= lit#23) 
        {
            temp.ctrl = GUIContainer.controls[temp.i];
            lit#25 = "GraalControl";
            // RegionId(3)
            // RegionId(4)
            if (temp.ctrl.name != lit#25) 
            {
                fn_call#27 = temp.ctrl.destroy();
            }
            temp.i--;
        }
        builtin_fn_call#28 = GraalControl.controls.size();
        lit#29 = 1;
        temp.i = builtin_fn_call#28 - lit#29;
        lit#30 = 0;
        while (temp.i >= lit#30) 
        {
            temp.ctrl = GraalControl.controls[temp.i];
            fn_call#31 = temp.ctrl.destroy();
            temp.i--;
        }
    }
    lit#32 = "ction to the accounts database has been lost";
    builtin_fn_call#33 = reason#2.pos(lit#32);
    lit#34 = 0;
    // RegionId(9)
    // RegionId(10)
    if (builtin_fn_call#33 >= lit#34) 
    {
        lit#35 = "Connection to the server lost, please try again later";
        reason#36 = lit#35;
    }
    lit#37 = "Connection to the server can\'t be reached!";
    builtin_fn_call#38 = reason#36.pos(lit#37);
    lit#39 = 0;
    // RegionId(12)
    if (builtin_fn_call#38 >= lit#39) 
    {
        lit#40 = 0;
        lit#41 = 1;
        lit#42 = 7;
        lit#43 = "";
        fn_call#45 = printDisconnectError#44(lit#43, lit#42, lit#41, lit#40);
        lit#46 = 0;
        return lit#46;
    }
    // RegionId(13)
    else
    {
        lit#48 = true;
        temp.showerror = lit#48;
        lit#49 = true;
        temp.tryrelogin = lit#49;
        lit#50 = 2;
        lit#51 = 1;
        // RegionId(13)
        // RegionId(14)
        if (error#1 in {lit#51, lit#50}) 
        {
            lit#54 = "Login";
            // RegionId(14)
            // RegionId(15)
            if (this.loginserver == lit#54) 
            {
                lit#56 = "guest";
                // RegionId(16)
                if (this.logintype == lit#56) 
                {
                    lit#59 = ":";
                    temp.curserver = (this.loginhost @ lit#59) @ this.loginport;
                    builtin_fn_call#63 = this.loginservers.index(temp.curserver);
                    temp.serverindex = builtin_fn_call#63;
                    lit#64 = 0;
                    // RegionId(16)
                    // RegionId(17)
                    if (temp.serverindex >= lit#64) 
                    {
                        lit#65 = 1;
                        builtin_fn_call#66 = this.loginservers.size();
                        // RegionId(18)
                        if ((temp.serverindex + lit#65) < builtin_fn_call#66) 
                        {
                            lit#68 = 1;
                            temp.entry = this.loginservers[temp.serverindex + lit#68];
                            lit#69 = ":";
                            builtin_fn_call#70 = temp.entry.pos(lit#69);
                            temp.i = builtin_fn_call#70;
                            lit#71 = 0;
                            builtin_fn_call#72 = temp.entry.substring(lit#71, temp.i);
                            this.loginhost = builtin_fn_call#72;
                            lit#73 = 1;
                            lit#74 = -1;
                            builtin_fn_call#75 = temp.entry.substring(temp.i + lit#73, lit#74);
                            this.loginport = builtin_fn_call#75;
                            lit#76 = false;
                            temp.showerror = lit#76;
                            goto RegionId(20);
                        }
                    }
                    lit#77 = false;
                    temp.tryrelogin = lit#77;
                    goto RegionId(20);
                }
            }
        }
        this.reconnections++;
        lit#79 = 5;
        // RegionId(20)
        // RegionId(21)
        if (this.reconnections >= lit#79) 
        {
            lit#80 = false;
            temp.tryrelogin = lit#80;
        }
        lit#83 = 120;
        // RegionId(22)
        // RegionId(23)
        if (this.firstDeco < (timevar2#82 - lit#83)) 
        {
            this.firstDeco = timevar2#82;
            lit#85 = 0;
            this.globalCountDeco = lit#85;
        }
        this.globalCountDeco++;
        lit#86 = "globalCountDeco ";
        fn_call#88 = echo#87(lit#86 @ this.globalCountDeco);
        lit#89 = false;
        temp.autoreconnect = lit#89;
        lit#91 = false;
        temp.silentReconnect = lit#91;
        // RegionId(24)
        // RegionId(25)
        if (temp.tryrelogin) 
        {
            lit#92 = "You have been disconnected because you didn\'t move.";
            builtin_fn_call#93 = reason#36.pos(lit#92);
            lit#94 = 0;
            // RegionId(25)
            // RegionId(26)
            if (builtin_fn_call#93 >= lit#94) 
            {
                lit#95 = true;
                temp.autoreconnect = lit#95;
            }
            // RegionId(27)
            else
            {
                lit#96 = 4;
                // RegionId(27)
                // RegionId(28)
                if (this.reconnections < lit#96) 
                {
                    lit#97 = 10;
                    // RegionId(28)
                    // RegionId(29)
                    if (this.globalCountDeco < lit#97) 
                    {
                        lit#98 = true;
                        temp.silentReconnect = lit#98;
                        lit#99 = true;
                        temp.autoreconnect = lit#99;
                    }
                }
            }
        }
        // RegionId(30)
        // RegionId(31)
        if (temp.tryrelogin) 
        {
        }
        phi<idx=1, regions=()> = phi<idx=0, regions=()>;
        temp.doclosebutton = !temp.tryrelogin;
        lit#102 = "Login";
        // RegionId(20)
        // RegionId(34)
        if (this.loginserver == lit#102) 
        {
            fn_call#104 = getPremiumOption#103();
            lit#105 = "";
            // RegionId(34)
            // RegionId(35)
            if (fn_call#104 == lit#105) 
            {
                lit#106 = "Serverlist_Panel";
                fn_call#108 = isObject#107(lit#106);
                // RegionId(36)
                if (!fn_call#108) 
                {
                    fn_call#110 = decideHostAndPort#109();
                    lit#113 = true;
                    MessageBoxDialog.keepvisibleonlogin = lit#113;
                    // RegionId(38)
                    // RegionId(39)
                    if (temp.autoreconnect) 
                    {
                        // RegionId(39)
                        // RegionId(40)
                        if (temp.silentReconnect) 
                        {
                            lit#115 = false;
                            temp.showerror = lit#115;
                        }
                    }
                    // RegionId(41)
                    // RegionId(42)
                    if (temp.showerror) 
                    {
                        fn_call#116 = printDisconnectError#44(reason#36, error#1, temp.doclosebutton, temp.doreconnectbutton);
                    }
                    // RegionId(43)
                    // RegionId(44)
                    if (temp.autoreconnect) 
                    {
                        lit#118 = "relogin";
                        this.messageboxaction = lit#118;
                        fn_call#120 = onMessageBoxButton#119();
                    }
                    lit#121 = 0;
                    return lit#121;
                }
            }
        }
        lit#114 = false;
        MessageBoxDialog.keepvisibleonlogin = lit#114;
        goto RegionId(38);
    }
}