Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

function public.onShakeScreen(l#2, mag#1, sound#0)
{
    lit#3 = null;
    // RegionId(0)
    // RegionId(1)
    if (sound#0 != lit#3) 
    {
        lit#6 = 0;
        temp.sfx = sound#0[lit#6];
        lit#8 = 1;
        temp.volume = sound#0[lit#8];
        fn_call#10 = issoundplaying#9(temp.sfx);
        // RegionId(1)
        // RegionId(2)
        if (!fn_call#10) 
        {
            lit#11 = 1;
            // RegionId(2)
            // RegionId(3)
            if (temp.volume < lit#11) 
            {
                lit#14 = "flash";
            }
            // RegionId(4)
            // RegionId(5)
            if (!phi<idx=0, regions=()>) 
            {
                builtin_fn_call#15 = sound#0.size();
                lit#16 = 1;
                // RegionId(5)
                // RegionId(6)
                if (builtin_fn_call#15 > lit#16) 
                {
                    fn_call#21 = play2#20(temp.sfx, player.x, player.y, temp.volume);
                }
                // RegionId(7)
                else
                {
                    lit#22 = ".wav";
                    builtin_fn_call#23 = temp.sfx.ends(lit#22);
                    // RegionId(7)
                    // RegionId(8)
                    if (builtin_fn_call#23) 
                    {
                        fn_call#25 = play#24(temp.sfx);
                    }
                }
            }
        }
    }
    // RegionId(10)
    if (client.disablescreenshake) 
    {
        lit#27 = 0;
        return lit#27;
    }
    // RegionId(11)
    else
    {
        lit#28 = null;
        // RegionId(11)
        // RegionId(12)
        if (mag#1 == lit#28) 
        {
            lit#29 = 1.5;
            mag#30 = lit#29;
        }
        lit#31 = 0;
        // RegionId(13)
        // RegionId(14)
        if (l#2 <= lit#31) 
        {
            fn_call#33 = resetfocus#32();
        }
        // RegionId(15)
        else
        {
            builtin_fn_call#34 = random(player.y - mag#30, player.y + mag#30);
            builtin_fn_call#35 = random(player.x - mag#30, player.x + mag#30);
            fn_call#37 = setfocus#36(builtin_fn_call#35, builtin_fn_call#34);
            lit#38 = 0.1;
            lit#39 = 0.95;
            builtin_fn_call#40 = max(lit#38, mag#30 * lit#39);
            lit#41 = 0.05;
            lit#42 = "ShakeScreen";
            lit#43 = 0.05;
            fn_call#46 = this.scheduleevent(lit#43, lit#42, l#2 - lit#41, builtin_fn_call#40, sound#0);
        }
        lit#47 = 0;
        return lit#47;
    }
}