fn if0(arg: s32) s32
{
    >a: s32 = 1;
    if (arg == 1)
    {
        a = arg + 2;
    }
    else
    {
        a = arg - 3;
    }

    return a;
}

fn if1(arg: s32) s32
{
    >c: s32 = 3;
    >b: s32 = 2;

    if (arg == 1)
    {
        b = 3;
        c = 4;
    }

    return c;
}

fn if2(arg: s32) s32
{
    if (arg == 1)
    {
        return 3;
    }
    else
    {
        return 4;
    }
}

fn if3(arg: s32) s32
{
    >a: s32 = arg + 1;
    >b: s32 = 0;
    if (arg == 1)
    {
        b = a;
    }
    else
    {
        b = a + 1;
    }

    return a + b;
}

fn if4(arg: s32) s32
{
    >a: s32 = arg + 1;
    >b: s32 = arg + 2;
    if (arg == 1)
    {
        b = b + a;
    }
    else
    {
        a = b + 1;
    }

    return a + b;
}

fn if5(arg: s32) s32
{
    >a: s32 = 1;

    if (arg == 1)
    {
        if (arg == 2)
        {
            a = 2;
        }
        else
        {
            a = 3;
        }
    }
    else if (arg == 3)
    {
        a = 4;
    }
    else
    {
        a = 5;
    }

    return a;
}

fn if6(arg: s32) s32
{
    >a: s32 = 0;
    >b: s32 = 0;
    if (arg)
    {
        a = 1;
    }
    if (arg == 0)
    {
        b = 2;
    }

    return arg + a + b;
}

fn if7(arg: s32) s32
{
    >a: s32 = arg == 2;
    if (arg == 1)
    {
        a = arg == 3;
    }

    return a;
}

fn[cc(.c)] main[export] () s32
{
    return if0(3) + if1(1) - 4 + if2(1) - 3 + if3(1) - 4 + if4(0) - 5 + if5(4) - 5 + if6(0) - 2 + if7(0);
}