Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

{
  "frames": [
    {
      "line": 134,
      "function": "gbf_core::decompiler::structure_analysis::if_region_reducer::impl$1::reduce_region",
      "file": ".\\gbf_core\\src\\decompiler\\structure_analysis\\if_region_reducer.rs"
    },
    {
      "line": 564,
      "function": "gbf_core::decompiler::structure_analysis::StructureAnalysis::reduce_acyclic_region",
      "file": ".\\gbf_core\\src\\decompiler\\structure_analysis\\mod.rs"
    },
    {
      "line": 300,
      "file": ".\\gbf_core\\src\\decompiler\\structure_analysis\\mod.rs",
      "function": "gbf_core::decompiler::structure_analysis::StructureAnalysis::execute"
    },
    {
      "line": 292,
      "function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile",
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
    }
  ]
}

Context

{
  "current_block_id": {
    "index": 8,
    "address": 2823,
    "block_type": "Normal"
  },
  "current_ast_node_stack": [],
  "current_instruction": {
    "opcode": "Ret",
    "operand": null,
    "address": 2824
  }
}
function onData(client#2, type#1, data#0)
{
    lit#5 = -1;
    temp.defaulthandler = lit#5;
    lit#6 = 178;
    // RegionId(5)
    if (!(type#1 == lit#6)) 
    {
        lit#7 = 42;
        // RegionId(5)
        // RegionId(2)
        if (!(phi<idx=0, regions=()> == lit#7)) 
        {
            lit#8 = 18;
            temp.defaulthandler = lit#8;
            lit#9 = 18;
            lit#10 = 42;
            fn_call#12 = temp.client.setInDataHandlers({lit#10, lit#9});
            fn_call#15 = get4ByteFromNetString#14(data#0);
            temp.time = fn_call#15;
            lit#17 = 5;
            lit#18 = 981048814;
            temp.time2 = (temp.time * lit#17) + lit#18;
            builtin_fn_call#21 = abs(temp.time2 - this.scripttimestamp);
            lit#22 = 604800;
            // RegionId(3)
            if (builtin_fn_call#21 > lit#22) 
            {
                lit#23 = true;
                fn_call#25 = TClient_deleteTClient#24(lit#23);
                lit#26 = true;
                lit#27 = -1;
                lit#28 = "There was a network problem (2), please connect again.";
                fn_call#30 = printDisconnectError#29(lit#28, lit#27, lit#26);
                lit#31 = 0;
                return lit#31;
            }
        }
        lit#33 = 0;
        // RegionId(6)
        // RegionId(7)
        if (temp.defaulthandler >= lit#33) 
        {
            fn_call#35 = this.client.defaultInHandler(temp.defaulthandler, data#0);
        }
        lit#36 = 0;
        return lit#36;
    }
    // RegionId(1)
    else
    {
        lit#32 = 0;
        temp.defaulthandler = lit#32;
        goto RegionId(6);
    }
}