Welcome to the GBF Test Portal

This was built to track decompiler and CFG progress.

Decompiler Output

function onHardRecoil(temp.dx, temp.dy, temp.recoil, temp.velocity)
{
    lit#18 = 0;
    // RegionId(0)
    // RegionId(1)
    if (player.hearts <= lit#18) 
    {
    }
    // RegionId(3)
    if (phi<idx=0, regions=()>) 
    {
        lit#20 = 0;
        return lit#20;
    }
    // RegionId(4)
    else
    {
        lit#21 = null;
        // RegionId(4)
        // RegionId(5)
        if (temp.recoil == lit#21) 
        {
            lit#22 = 5;
            temp.recoil = lit#22;
        }
        lit#23 = null;
        // RegionId(6)
        // RegionId(7)
        if (temp.velocity == lit#23) 
        {
            lit#24 = 1;
            temp.velocity = lit#24;
        }
        lit#25 = 0;
        // RegionId(4)
        // RegionId(9)
        if (temp.dx == lit#25) 
        {
            lit#26 = 0;
            // RegionId(10)
            if (temp.dy == lit#26) 
            {
                lit#27 = 0;
                return lit#27;
            }
        }
        lit#28 = 0.5;
        temp.dist = ((temp.dx * temp.dx) + (temp.dy * temp.dy)) ^ lit#28;
        lit#29 = 22;
        lit#30 = 21;
        lit#31 = 20;
        lit#32 = 11;
        temp.blockingTiles = {lit#32, lit#31, lit#30, lit#29};
        lit#35 = null;
        // RegionId(11)
        // RegionId(12)
        if (player.gmap.name == lit#35) 
        {
        }
        // RegionId(13)
        else
        {
        }
        phi<idx=1, regions=()> = phi<idx=0, regions=()>;
        // RegionId(14)
        // RegionId(15)
        if (player.vehicle) 
        {
            // RegionId(15)
            // RegionId(16)
            if (!this.level.spar_horses) 
            {
                fn_call#41 = player.vehicle.removePassenger();
                fn_call#43 = player.vehicle.Off();
            }
        }
        temp.ox = player.x;
        temp.oy = player.y;
        lit#44 = 0.25;
        fn_call#45 = freezeplayer#10(lit#44);
        lit#47 = "hurt";
        player.ani = lit#47;
        lit#48 = 0;
        temp.i = lit#48;
        // RegionId(19)
        if (temp.i < temp.recoil) 
        {
            lit#49 = null;
            // RegionId(19)
            // RegionId(20)
            if (player.gmap.name == lit#49) 
            {
            }
            // RegionId(21)
            else
            {
            }
            phi<idx=1, regions=()> = phi<idx=0, regions=()>;
            // RegionId(23)
            if (temp.lvl != temp.startLevel) 
            {
                goto RegionId(37);
            }
            // RegionId(24)
            else
            {
                lit#50 = 0;
                // RegionId(25)
                if (player.hearts <= lit#50) 
                {
                    goto RegionId(37);
                }
                // RegionId(26)
                else
                {
                    // RegionId(27)
                    if (player.hurt) 
                    {
                        goto RegionId(37);
                    }
                    // RegionId(28)
                    else
                    {
                        temp.x = temp.ox + ((temp.dx / temp.dist) * temp.i);
                        temp.y = temp.oy + ((temp.dy / temp.dist) * temp.i);
                        lit#51 = 1;
                        lit#52 = 0.5;
                        fn_call#53 = tiletype#8(temp.x + lit#52, temp.y + lit#51);
                        // RegionId(29)
                        if (fn_call#53 in temp.blockingTiles) 
                        {
                            goto RegionId(37);
                        }
                        // RegionId(30)
                        else
                        {
                            lit#54 = 1;
                            lit#55 = 0.5;
                            lit#56 = 2;
                            fn_call#57 = tiletype#8((temp.x + lit#55) + lit#56, temp.y + lit#54);
                            // RegionId(31)
                            if (fn_call#57 in temp.blockingTiles) 
                            {
                                goto RegionId(37);
                            }
                            // RegionId(32)
                            else
                            {
                                lit#58 = 1;
                                lit#59 = 2;
                                lit#60 = 0.5;
                                lit#61 = 2;
                                fn_call#62 = tiletype#8((temp.x + lit#60) + lit#61, (temp.y + lit#58) + lit#59);
                                // RegionId(33)
                                if (fn_call#62 in temp.blockingTiles) 
                                {
                                    goto RegionId(37);
                                }
                                // RegionId(34)
                                else
                                {
                                    lit#63 = 1;
                                    lit#64 = 2;
                                    lit#65 = 0.5;
                                    fn_call#66 = tiletype#8(temp.x + lit#65, (temp.y + lit#63) + lit#64);
                                    // RegionId(35)
                                    if (fn_call#66 in temp.blockingTiles) 
                                    {
                                        goto RegionId(37);
                                    }
                                    // RegionId(36)
                                    else
                                    {
                                        player.x = temp.x;
                                        player.y = temp.y;
                                        lit#67 = 0.05;
                                        fn_call#68 = freezeplayer#10(lit#67);
                                        lit#69 = "bleh";
                                        lit#70 = 0.05;
                                        builtin_fn_call#71 = waitfor(this#38, lit#69, lit#70);
                                        temp.i = temp.i + temp.velocity;
                                        goto RegionId(18);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        // RegionId(37)
        else
        {
            lit#72 = 0;
            return lit#72;
        }
    }
}