← back

control_flow_ssa

A single entry point with n stacked control-flow blocks — nested if/else, a bounded inner loop with break/continue, and a switch — all mutating a small set of carried locals (a, b, c, d). Re-assigning the same locals across many branches and loop back-edges is what forces SSA construction to insert phi nodes and what the CFG simplifier (constructSSA, inside simplifyIR) must chew through. Isolates the SSA/CFG axis that complexity_ladder only touches as one of several mixed dimensions; nothing else stresses it alone. Scales by breadth = number of control-flow blocks, so basic-block and phi counts grow with n. Scaling null: n scales control-flow blocks; ideal SSA construction is near-linear in block count.

bucket: control_flow  ·  compile mode: target  ·  flags: -target spirv -emit-spirv-directly  ·  default N: 120

Phase composition across releases

Full sub-counter decomposition of compileInner — named leaf timers plus (self) residuals (a parent's time not covered by a named child, e.g. the autodiff transform in linkAndOptimizeIR (self)). Topmost band traces compileInner; hover a band for its phase.

Across releases

control_flow_ssa — Across releases (median ms) control_flow_ssa 0.78× 0.0 182 363 25.12 25.13 25.14 25.15 25.16 25.17 25.18 25.19 25.20 25.21 25.22 25.23 25.24 26.1 26.2 26.3 26.4 26.5 26.7 26.8 26.9 26.10 26.11 26.12 26.13 26.13.1 26.14 26.14.1 26.16 26.16.1 control_flow_ssa — parseTranslationUnit control_flow_ssa — SemanticChecking control_flow_ssa — generateIR control_flow_ssa — frontEndExecute (self) control_flow_ssa — specializeModule control_flow_ssa — simplifyIR control_flow_ssa — linkIR control_flow_ssa — unrollLoopsInModule control_flow_ssa — legalizeResourceTypes control_flow_ssa — legalizeExistentialTypeLayout control_flow_ssa — performMandatoryEarlyInlining control_flow_ssa — performForceInlining control_flow_ssa — linkAndOptimizeIR (self) control_flow_ssa — generateOutput (self) control_flow_ssa — compileInner (self) phase buckets parseTranslationUnit SemanticChecking generateIR frontEndExecute (self) specializeModule simplifyIR linkIR unrollLoopsInModule legalizeResourceTypes legalizeExistentialTypeLayout performMandatoryEarlyInlining performForceInlining linkAndOptimizeIR (self) emitEntryPointsSourceFromIR generateOutput (self) compileInner (self)

Daily tip-of-tree (last 30 days)

control_flow_ssa — Daily tip-of-tree (last 30 days) (median ms) control_flow_ssa 0.97× 0.0 103 205 07-30 07-31 08-01 08-02 08-03 08-04 08-05 08-06 08-07 08-08 08-09 08-10 08-11 08-12 08-13 08-14 08-15 08-15 08-18 08-19 08-20 08-21 08-22 08-23 08-24 08-25 08-26 08-27 08-28 08-29 control_flow_ssa — parseTranslationUnit control_flow_ssa — SemanticChecking control_flow_ssa — generateIR control_flow_ssa — frontEndExecute (self) control_flow_ssa — specializeModule control_flow_ssa — simplifyIR control_flow_ssa — linkIR control_flow_ssa — unrollLoopsInModule control_flow_ssa — legalizeResourceTypes control_flow_ssa — legalizeExistentialTypeLayout control_flow_ssa — performMandatoryEarlyInlining control_flow_ssa — performForceInlining control_flow_ssa — linkAndOptimizeIR (self) control_flow_ssa — generateOutput (self) control_flow_ssa — compileInner (self) phase buckets parseTranslationUnit SemanticChecking generateIR frontEndExecute (self) specializeModule simplifyIR linkIR unrollLoopsInModule legalizeResourceTypes legalizeExistentialTypeLayout performMandatoryEarlyInlining performForceInlining linkAndOptimizeIR (self) emitEntryPointsSourceFromIR generateOutput (self) compileInner (self)

Daily window progress

Overall compileInner: 188.4 → 182.1 ms  -3.4%  (2026-07-30 7c58a326b → 2026-08-29 28c755b09)

Contributors — the mutually-exclusive phase buckets (named leaves + (self) residuals) that tile compileInner; the pp column sums to the overall %. Buckets moving the total by ≥0.2% are listed, the rest fold into the remainder row. Below them, every other reported counter (nested/overlapping, e.g. serialized-module reads — own change only):

counterΔown %of total
linkAndOptimizeIR (self)-4.3 ms-12.1%-2.3pp
generateOutput (self)-0.6 ms-0.8%-0.3pp
simplifyIR-0.5 ms-2.3%-0.3pp
(remaining 11 buckets)-1.0 ms-0.5pp
readSerializedModuleIR-2.5 ms-4.7%
loadBuiltinModule-1.9 ms-1.8%

Largest day steps (≥5% of the previous day, both directions; bisect with git log <c0>..<c1> -- source/):

boundary% vs prev daycommitstop buckets (own %)
none

Reproduce

Run from the slang repo root. This regenerates the sources below and re-runs this workload's measurement; --gen-dir keeps the generated files (they go to a tempdir and are deleted otherwise).

python3 tools/compile-perf/bench.py --slangc /path/to/slangc --only control_flow_ssa --label repro --gen-dir repro-control_flow_ssa

Compiled Slang source

the complete compiled source (N = 120), shown in full

control_flow_ssa.slang (2412 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
RWStructuredBuffer<float> outBuf;
StructuredBuffer<float> inBuf;

[shader("compute")]
[numthreads(64,1,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    int idx = int(tid.x);
    float a = inBuf[idx], b = inBuf[idx + 1], c = 0.0, d = 1.0;
    if ((idx + 0) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 0) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 1) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 1) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 2) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 2) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 3) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 3) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 4) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 4) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 5) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 5) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 6) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 6) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 7) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 7) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 8) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 8) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 9) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 9) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 10) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 10) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 11) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 11) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 12) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 12) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 13) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 13) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 14) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 14) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 15) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 15) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 16) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 16) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 17) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 17) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 18) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 18) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 19) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 19) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 20) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 20) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 21) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 21) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 22) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 22) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 23) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 23) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 24) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 24) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 25) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 25) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 26) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 26) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 27) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 27) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 28) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 28) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 29) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 29) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 30) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 30) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 31) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 31) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 32) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 32) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 33) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 33) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 34) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 34) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 35) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 35) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 36) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 36) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 37) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 37) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 38) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 38) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 39) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 39) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 40) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 40) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 41) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 41) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 42) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 42) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 43) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 43) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 44) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 44) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 45) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 45) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 46) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 46) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 47) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 47) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 48) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 48) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 49) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 49) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 50) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 50) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 51) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 51) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 52) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 52) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 53) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 53) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 54) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 54) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 55) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 55) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 56) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 56) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 57) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 57) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 58) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 58) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 59) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 59) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 60) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 60) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 61) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 61) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 62) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 62) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 63) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 63) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 64) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 64) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 65) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 65) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 66) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 66) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 67) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 67) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 68) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 68) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 69) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 69) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 70) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 70) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 71) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 71) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 72) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 72) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 73) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 73) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 74) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 74) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 75) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 75) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 76) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 76) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 77) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 77) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 78) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 78) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 79) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 79) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 80) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 80) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 81) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 81) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 82) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 82) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 83) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 83) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 84) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 84) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 85) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 85) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 86) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 86) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 87) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 87) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 88) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 88) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 89) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 89) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 90) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 90) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 91) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 91) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 92) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 92) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 93) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 93) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 94) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 94) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 95) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 95) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 96) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 96) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 97) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 97) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 98) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 98) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 99) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 99) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 100) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 100) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 101) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 101) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 102) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 102) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 103) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 103) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 104) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 104) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 105) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 105) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 106) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 106) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 107) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 107) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 108) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 108) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 109) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 109) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 110) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 110) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 111) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 3.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 111) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 112) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 4.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 112) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 113) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 5.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 113) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 114) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 6.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 114) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 115) % 2 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 7.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 115) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 116) % 3 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 1; ++k)
        {
            c += a - b * 0.5;
            if (c > 8.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 116) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 117) % 4 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 2; ++k)
        {
            c += a - b * 0.5;
            if (c > 0.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 117) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 118) % 5 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 3; ++k)
        {
            c += a - b * 0.5;
            if (c > 1.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 118) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    if ((idx + 119) % 6 == 0)
    {
        a = a * 1.1 + b;
        [MaxIters(4)] for (int k = 0; k < 4; ++k)
        {
            c += a - b * 0.5;
            if (c > 2.0) { b = c; break; }
            else { d = d * 0.99 + a; continue; }
        }
    }
    else
    {
        switch ((idx + 119) % 4)
        {
        case 0: a -= d; break;
        case 1: b += c; break;
        case 2: c *= 1.01; break;
        default: d -= a * 0.1;
        }
    }
    outBuf[idx] = a + b + c + d;
}