Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

Backtrace

{
  "frames": [
    {
      "line": 282,
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs",
      "function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::pop_assignable"
    },
    {
      "line": 33,
      "function": "gbf_core::decompiler::handlers::special_two_operand::impl$0::handle_instruction",
      "file": ".\\gbf_core\\src\\decompiler\\handlers\\special_two_operand.rs"
    },
    {
      "line": 171,
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler_context.rs",
      "function": "gbf_core::decompiler::function_decompiler_context::FunctionDecompilerContext::process_instruction"
    },
    {
      "line": 467,
      "function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::process_regions",
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
    },
    {
      "line": 286,
      "function": "gbf_core::decompiler::function_decompiler::FunctionDecompiler::decompile",
      "file": ".\\gbf_core\\src\\decompiler\\function_decompiler.rs"
    }
  ]
}

Context

{
  "current_block_id": {
    "index": 2,
    "address": 16435,
    "block_type": "Normal"
  },
  "current_ast_node_stack": [
    {
      "StandaloneNode": {
        "Expression": {
          "Assignable": {
            "MemberAccess": {
              "metadata": {
                "properties": {},
                "comments": []
              },
              "ptr": {
                "rhs": {
                  "Identifier": {
                    "metadata": {
                      "properties": {},
                      "comments": []
                    },
                    "ptr": {
                      "ssa_version": null,
                      "id": "value"
                    },
                    "node_id": 228585
                  }
                },
                "lhs": {
                  "Identifier": {
                    "metadata": {
                      "properties": {},
                      "comments": []
                    },
                    "ptr": {
                      "ssa_version": null,
                      "id": "temp"
                    },
                    "node_id": 228584
                  }
                },
                "ssa_version": 4
              },
              "node_id": 228586
            }
          }
        }
      }
    }
  ],
  "current_instruction": {
    "opcode": "AccessMember",
    "operand": null,
    "address": 16443
  }
}
function onSaveAttributes(temp.obj)
{
    temp.account = temp.obj.parent.acc;
    lit#7 = 0;
    temp.i = lit#7;
    builtin_fn_call#10 = this.textattributes.size();
    while (temp.i < builtin_fn_call#10) 
    {
        lit#11 = "ScriptedRCAttributeBox";
        lit#13 = 0;
        // RegionId(2)
        // RegionId(3)
        if ((lit#11 @ temp.i).text == lit#13) 
        {
            lit#14 = "ScriptedRCAttributeBox";
        }
        // RegionId(4)
        else
        {
            lit#16 = "ScriptedRCAttributeBox";
        }
        phi<idx=1, regions=()> = phi<idx=0, regions=()>;
        lit#18 = 1;
        lit#19 = "%s=%s";
        builtin_fn_call#20 = format(lit#19, this.textattributes[temp.i][lit#18], temp.value);
        builtin_fn_call#21 = temp.final.add(builtin_fn_call#20);
        temp.i++;
    }
    lit#22 = 0;
    temp.i = lit#22;
    builtin_fn_call#24 = this.lookattributes.size();
    while (temp.i < builtin_fn_call#24) 
    {
        lit#25 = "ScriptedRCLookAttributeBox";
        lit#26 = 0;
        // RegionId(8)
        // RegionId(9)
        if ((lit#25 @ temp.i).text == lit#26) 
        {
            lit#27 = "ScriptedRCLookAttributeBox";
        }
        // RegionId(10)
        else
        {
            lit#28 = "ScriptedRCLookAttributeBox";
        }
        phi<idx=1, regions=()> = phi<idx=0, regions=()>;
        lit#29 = 1;
        lit#30 = "%s=%s";
        builtin_fn_call#31 = format(lit#30, this.lookattributes[temp.i][lit#29], temp.value);
        builtin_fn_call#32 = temp.final.add(builtin_fn_call#31);
        temp.i++;
    }
    lit#33 = "playerattributes";
    fn_call#35 = sendtext#34(lit#33, temp.account, temp.final);
    fn_call#38 = ScriptedRCAttributeWindow.destroy();
    lit#39 = 0;
    return lit#39;
}