Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

function public.createHearts()
{
    lit#2 = "UpdateHearts";
    fn_call#4 = cancelEvents#3(lit#2);
    // RegionId(0)
    // RegionId(1)
    if (player.level.hidehearts) 
    {
    }
    // RegionId(3)
    if (phi<idx=0, regions=()>) 
    {
        lit#11 = false;
        Sys_Hearts_Control.visible = lit#11;
        lit#12 = 0;
        return lit#12;
    }
    // RegionId(4)
    else
    {
        // RegionId(4)
        // RegionId(5)
        if (!Deadwood_LabyrinthHUD.visible) 
        {
        }
        phi<idx=1, regions=()> = phi<idx=0, regions=()>;
        fn_call#16 = Sys_Hearts_Control.destroy();
        temp.controlscale = ControlsContainer.height / ControlsContainer.clientheight;
        lit#22 = 1;
        lit#23 = 3;
        lit#24 = 1;
        builtin_fn_call#25 = int(temp.controlscale / lit#24);
        builtin_fn_call#26 = min(lit#23, builtin_fn_call#25);
        builtin_fn_call#27 = max(lit#22, builtin_fn_call#26);
        temp.scale = builtin_fn_call#27;
        temp.control = GraalControl#29;
        lit#30 = "quickfavorites_bgcontrol";
        fn_call#32 = isObject#31(lit#30);
        // RegionId(7)
        // RegionId(8)
        if (fn_call#32) 
        {
            // RegionId(8)
            // RegionId(9)
            if (!quickfavorites_bgcontrol.leaving) 
            {
                fn_call#36 = quickfavorites_bgcontrol.isActuallyVisible();
                // RegionId(9)
                // RegionId(10)
                if (fn_call#36) 
                {
                    temp.offsetx = quickfavorites_bgcontrol.clientwidth;
                }
            }
        }
        lit#39 = 100;
        temp.width = lit#39;
        lit#40 = 60;
        temp.height = lit#40;
        // RegionId(11)
        // RegionId(12)
        if (clientr.isStaff) 
        {
            lit#44 = 30;
        }
        // RegionId(13)
        else
        {
            lit#45 = 16;
        }
        phi<idx=1, regions=()> = phi<idx=0, regions=()>;
        // RegionId(14)
        // RegionId(15)
        if (clientr.isStaff) 
        {
            lit#47 = 400;
        }
        // RegionId(16)
        else
        {
            lit#48 = 230;
        }
        phi<idx=1, regions=()> = phi<idx=0, regions=()>;
        fn_call#51 = detectCanUseSafeArea#50();
        temp.safeArea = fn_call#51;
        // RegionId(17)
        // RegionId(18)
        if ((temp.y + (temp.height * temp.scale)) > (temp.control.height - (temp.buttonheight * temp.controlscale))) 
        {
            lit#52 = 55;
            temp.offsetx = (lit#52 * temp.controlscale) + ControlsContainer.x;
        }
        lit#54 = 0;
        // RegionId(19)
        // RegionId(20)
        if (temp.offsetx <= lit#54) 
        {
            // RegionId(20)
            // RegionId(21)
            if (Classic_FullscreenButtton.visible) 
            {
                lit#56 = 40;
                temp.offsetx = lit#56;
            }
        }
        // RegionId(22)
        // RegionId(23)
        if (this.canUseSafeArea) 
        {
            lit#59 = 0;
            lit#60 = 2;
            lit#61 = 16;
            temp.x = (((temp.safeArea[lit#59] + temp.safeArea[lit#60]) - (temp.width * temp.scale)) - lit#61) - temp.offsetx;
        }
        // RegionId(24)
        else
        {
            lit#62 = 16;
            temp.x = ((temp.control.clientwidth - (temp.width * temp.scale)) - lit#62) - temp.offsetx;
        }
        // RegionId(25)
        // RegionId(26)
        with (temp.control) 
        {
            lit#63 = "Sys_Hearts_Control";
            gbf_new_obj#64 = lit#63;
            lit#65 = "GuiStretchCtrl";
            new_node#66 = new lit#65(gbf_new_obj#64);
            gbf_new_obj#67 = new_node#66;
            // RegionId(26)
            // RegionId(27)
            with (gbf_new_obj#64) 
            {
                lit#69 = true;
                useownprofile#70 = lit#69;
                lit#73 = false;
                profile.modal = lit#73;
                lit#75 = 0;
                profile.border = lit#75;
                width#76 = temp.width * temp.scale;
                height#77 = temp.height * temp.scale;
                x#78 = temp.x;
                y#79 = temp.y;
                lit#81 = "left";
                horizsizing#82 = lit#81;
                lit#85 = false;
                clipchildren#86 = lit#85;
                cliptobounds#87 = clipchildren#84;
                clientwidth#88 = temp.width;
                clientheight#89 = temp.height;
                visible#90 = temp.visible;
                lit#92 = false;
                this.rightalign = lit#92;
                lit#93 = "Sys_Hearts_SubControl";
                gbf_new_obj#94 = lit#93;
                lit#95 = "GuiControl";
                new_node#96 = new lit#95(gbf_new_obj#94);
                gbf_new_obj#97 = new_node#96;
                // RegionId(27)
                // RegionId(28)
                with (gbf_new_obj#94) 
                {
                    lit#98 = true;
                    useownprofile#99 = lit#98;
                    lit#100 = false;
                    profile.modal = lit#100;
                    lit#101 = 0;
                    profile.border = lit#101;
                    lit#102 = 0;
                    lit#103 = 0;
                    fn_call#105 = resize#104(lit#103, lit#102, Sys_Hearts_Control.clientwidth, Sys_Hearts_Control.clientheight);
                    lit#106 = false;
                    clipchildren#107 = lit#106;
                    cliptobounds#108 = clipchildren#86;
                }
                fn_call#110 = addcontrol#109(phi<idx=0, regions=()>);
            }
            fn_call#111 = addcontrol#109(phi<idx=0, regions=()>);
        }
        fn_call#113 = onUpdateHearts#112();
        lit#114 = 0;
        return lit#114;
    }
}