Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

{
  "frames": []
}

Context

{
  "current_block_id": {
    "index": 1,
    "address": 9558,
    "block_type": "Normal"
  },
  "current_ast_node_stack": [
    {
      "StandaloneNode": {
        "Expression": {
          "Assignable": {
            "MemberAccess": {
              "metadata": {
                "properties": {},
                "comments": []
              },
              "node_id": 39560,
              "ptr": {
                "rhs": {
                  "Identifier": {
                    "metadata": {
                      "properties": {},
                      "comments": []
                    },
                    "node_id": 39559,
                    "ptr": {
                      "ssa_version": null,
                      "id": "iterator"
                    }
                  }
                },
                "ssa_version": 5,
                "lhs": {
                  "Identifier": {
                    "metadata": {
                      "properties": {},
                      "comments": []
                    },
                    "node_id": 39558,
                    "ptr": {
                      "ssa_version": null,
                      "id": "GuiRCConsoleTextEdit"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  ],
  "current_instruction": {
    "opcode": "Inc",
    "operand": null,
    "address": 9562
  }
}
function GuiRCConsoleTextEdit.onKeyDown(keycode#2, keytext#1, scancode#0)
{
    lit#4 = 38;
    // RegionId(1)
    if (keycode#2 == lit#4) 
    {
        GuiRCConsoleTextEdit.iterator++;
        goto RegionId(5);
    }
    // RegionId(2)
    else
    {
        lit#6 = 40;
        // RegionId(3)
        if (keycode#2 == lit#6) 
        {
            GuiRCConsoleTextEdit.iterator--;
            lit#7 = -1;
            builtin_fn_call#9 = GuiRCConsoleTextEdit.history.size();
            lit#10 = 1;
            builtin_fn_call#11 = min(builtin_fn_call#9 - lit#10, GuiRCConsoleTextEdit.iterator);
            builtin_fn_call#12 = max(lit#7, builtin_fn_call#11);
            GuiRCConsoleTextEdit.iterator = builtin_fn_call#12;
            lit#13 = 0;
            // RegionId(5)
            // RegionId(6)
            if (GuiRCConsoleTextEdit.iterator < lit#13) 
            {
                lit#15 = "";
                GuiRCConsoleTextEdit.text = lit#15;
            }
            // RegionId(7)
            else
            {
                GuiRCConsoleTextEdit.text = GuiRCConsoleTextEdit.history[GuiRCConsoleTextEdit.iterator];
            }
            lit#16 = 0;
            return lit#16;
        }
        // RegionId(4)
        else
        {
            lit#17 = 0;
            return lit#17;
        }
    }
}