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": 21,
    "address": 11641,
    "block_type": "Normal"
  },
  "current_ast_node_stack": [],
  "current_instruction": {
    "opcode": "Ret",
    "operand": null,
    "address": 11654
  }
}
function onSortFolder(obj#0)
{
    lit#5 = "Name";
    // RegionId(5)
    // RegionId(6)
    if (!(obj.text == lit#5)) 
    {
        lit#6 = "Rights";
        // RegionId(6)
        // RegionId(7)
        if (!(phi<idx=0, regions=()> == lit#6)) 
        {
            lit#7 = "Size";
            // RegionId(7)
            // RegionId(8)
            if (!(phi<idx=0, regions=()> == lit#7)) 
            {
                lit#8 = "Modified";
                // RegionId(8)
                // RegionId(4)
                if (!(phi<idx=0, regions=()> == lit#8)) 
                {
                    lit#9 = 3;
                    temp.col = lit#9;
                }
            }
            // RegionId(3)
            else
            {
                lit#10 = 2;
                temp.col = lit#10;
            }
        }
        // RegionId(2)
        else
        {
            lit#11 = 1;
            temp.col = lit#11;
        }
    }
    // RegionId(1)
    else
    {
        lit#12 = 0;
        temp.col = lit#12;
    }
    lit#14 = 2;
    // RegionId(9)
    // RegionId(10)
    if (temp.col == lit#14) 
    {
        lit#15 = "value";
    }
    // RegionId(11)
    else
    {
        lit#16 = "name";
    }
    phi<idx=1, regions=()> = phi<idx=0, regions=()>;
    lit#18 = "ascending";
    FileBrowser_FilesList.groupsortmode = lit#18;
    // RegionId(12)
    // RegionId(13)
    if (this.sortcol == temp.col) 
    {
        lit#22 = "ascending";
        // RegionId(13)
        // RegionId(14)
        if (FileBrowser_FilesList.sortorder == lit#22) 
        {
            lit#23 = "descending";
        }
        // RegionId(15)
        else
        {
            lit#24 = "ascending";
        }
        phi<idx=1, regions=()> = phi<idx=0, regions=()>;
    }
    // RegionId(17)
    else
    {
        lit#25 = 3;
        lit#26 = 2;
        // RegionId(17)
        // RegionId(18)
        if (temp.col in {lit#26, lit#25}) 
        {
            lit#27 = "descending";
        }
        // RegionId(19)
        else
        {
            lit#28 = "ascending";
        }
        phi<idx=1, regions=()> = phi<idx=0, regions=()>;
        FileBrowser_FilesList.sortcolumn = temp.col;
    }
    this.sortcol = temp.col;
    fn_call#31 = FileBrowser_FilesList.sort();
    lit#32 = 0;
    return lit#32;
}