cbuffer cbuffer_x_8 : register(b0, space0) {
  uint4 x_8[1];
};
static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);

void main_1() {
  int temp[10] = (int[10])0;
  int data[10] = (int[10])0;
  float x_180 = 0.0f;
  float x_279 = 0.0f;
  int x_65_phi = 0;
  int x_93_phi = 0;
  int x_102_phi = 0;
  float x_280_phi = 0.0f;
  const float x_62 = asfloat(x_8[0].x);
  const int x_63 = int(x_62);
  x_65_phi = x_63;
  while (true) {
    const int x_65 = x_65_phi;
    switch(x_65) {
      case 9: {
        data[x_65] = -5;
        break;
      }
      case 8: {
        data[x_65] = -4;
        break;
      }
      case 7: {
        data[x_65] = -3;
        break;
      }
      case 6: {
        data[x_65] = -2;
        break;
      }
      case 5: {
        data[x_65] = -1;
        break;
      }
      case 4: {
        data[x_65] = 0;
        break;
      }
      case 3: {
        data[x_65] = 1;
        break;
      }
      case 2: {
        data[x_65] = 2;
        break;
      }
      case 1: {
        data[x_65] = 3;
        break;
      }
      case 0: {
        data[x_65] = 4;
        break;
      }
      default: {
        break;
      }
    }
    const int x_66 = (x_65 + 1);
    {
      x_65_phi = x_66;
      if ((x_66 < 10)) {
      } else {
        break;
      }
    }
  }
  x_93_phi = 0;
  while (true) {
    int x_94 = 0;
    const int x_93 = x_93_phi;
    if ((x_93 < 10)) {
    } else {
      break;
    }
    {
      const int x_99 = data[x_93];
      temp[x_93] = x_99;
      x_94 = (x_93 + 1);
      x_93_phi = x_94;
    }
  }
  x_102_phi = 1;
  while (true) {
    int x_103 = 0;
    int x_109_phi = 0;
    const int x_102 = x_102_phi;
    if ((x_102 <= 9)) {
    } else {
      break;
    }
    x_109_phi = 0;
    while (true) {
      int x_121 = 0;
      int x_126 = 0;
      int x_121_phi = 0;
      int x_124_phi = 0;
      int x_126_phi = 0;
      int x_148_phi = 0;
      int x_151_phi = 0;
      int x_161_phi = 0;
      const int x_109 = x_109_phi;
      if ((x_109 < 9)) {
      } else {
        break;
      }
      const int x_115 = (x_109 + x_102);
      const int x_116 = (x_115 - 1);
      const int x_110 = (x_109 + (2 * x_102));
      const int x_119 = min((x_110 - 1), 9);
      x_121_phi = x_109;
      x_124_phi = x_115;
      x_126_phi = x_109;
      while (true) {
        int x_141 = 0;
        int x_144 = 0;
        int x_125_phi = 0;
        int x_127_phi = 0;
        x_121 = x_121_phi;
        const int x_124 = x_124_phi;
        x_126 = x_126_phi;
        bool tint_tmp = (x_126 <= x_116);
        if (tint_tmp) {
          tint_tmp = (x_124 <= x_119);
        }
        if ((tint_tmp)) {
        } else {
          break;
        }
        const int x_133_save = x_126;
        const int x_134 = data[x_133_save];
        const int x_135_save = x_124;
        const int x_136 = data[x_135_save];
        const int x_122 = asint((x_121 + asint(1)));
        if ((x_134 < x_136)) {
          x_141 = asint((x_126 + asint(1)));
          const int x_142 = data[x_133_save];
          temp[x_121] = x_142;
          x_125_phi = x_124;
          x_127_phi = x_141;
        } else {
          x_144 = (x_124 + 1);
          const int x_145 = data[x_135_save];
          temp[x_121] = x_145;
          x_125_phi = x_144;
          x_127_phi = x_126;
        }
        const int x_125 = x_125_phi;
        const int x_127 = x_127_phi;
        {
          x_121_phi = x_122;
          x_124_phi = x_125;
          x_126_phi = x_127;
        }
      }
      x_148_phi = x_121;
      x_151_phi = x_126;
      while (true) {
        int x_149 = 0;
        int x_152 = 0;
        const int x_148 = x_148_phi;
        const int x_151 = x_151_phi;
        bool tint_tmp_1 = (x_151 < 10);
        if (tint_tmp_1) {
          tint_tmp_1 = (x_151 <= x_116);
        }
        if ((tint_tmp_1)) {
        } else {
          break;
        }
        {
          x_149 = (x_148 + 1);
          x_152 = (x_151 + 1);
          const int x_158 = data[x_151];
          temp[x_148] = x_158;
          x_148_phi = x_149;
          x_151_phi = x_152;
        }
      }
      x_161_phi = x_109;
      while (true) {
        int x_162 = 0;
        const int x_161 = x_161_phi;
        if ((x_161 <= x_119)) {
        } else {
          break;
        }
        {
          const int x_167 = temp[x_161];
          data[x_161] = x_167;
          x_162 = (x_161 + 1);
          x_161_phi = x_162;
        }
      }
      {
        x_109_phi = x_110;
      }
    }
    {
      x_103 = (2 * x_102);
      x_102_phi = x_103;
    }
  }
  int x_171 = 0;
  float x_189 = 0.0f;
  float x_278 = 0.0f;
  float x_279_phi = 0.0f;
  const float x_170 = gl_FragCoord.y;
  x_171 = int(x_170);
  if ((x_171 < 30)) {
    const int x_177 = data[0];
    x_180 = (0.5f + (float(x_177) * 0.100000001f));
    x_280_phi = x_180;
  } else {
    float x_198 = 0.0f;
    float x_277 = 0.0f;
    float x_278_phi = 0.0f;
    if ((x_171 < 60)) {
      const int x_186 = data[1];
      x_189 = (0.5f + (float(x_186) * 0.100000001f));
      x_279_phi = x_189;
    } else {
      float x_207 = 0.0f;
      float x_249 = 0.0f;
      float x_277_phi = 0.0f;
      if ((x_171 < 90)) {
        const int x_195 = data[2];
        x_198 = (0.5f + (float(x_195) * 0.100000001f));
        x_278_phi = x_198;
      } else {
        if ((x_171 < 120)) {
          const int x_204 = data[3];
          x_207 = (0.5f + (float(x_204) * 0.100000001f));
          x_277_phi = x_207;
        } else {
          float x_220 = 0.0f;
          float x_248 = 0.0f;
          float x_249_phi = 0.0f;
          float2 x_256_phi = float2(0.0f, 0.0f);
          int x_259_phi = 0;
          if ((x_171 < 150)) {
            discard;
          } else {
            float x_229 = 0.0f;
            float x_247 = 0.0f;
            float x_248_phi = 0.0f;
            if ((x_171 < 180)) {
              const int x_217 = data[5];
              x_220 = (0.5f + (float(x_217) * 0.100000001f));
              x_249_phi = x_220;
            } else {
              float x_238 = 0.0f;
              float x_246 = 0.0f;
              float x_247_phi = 0.0f;
              if ((x_171 < 210)) {
                const int x_226 = data[6];
                x_229 = (0.5f + (float(x_226) * 0.100000001f));
                x_248_phi = x_229;
              } else {
                if ((x_171 < 240)) {
                  const int x_235 = data[7];
                  x_238 = (0.5f + (float(x_235) * 0.100000001f));
                  x_247_phi = x_238;
                } else {
                  if ((x_171 < 270)) {
                  } else {
                    discard;
                  }
                  const int x_243 = data[8];
                  x_246 = (0.5f + (float(x_243) * 0.100000001f));
                  x_247_phi = x_246;
                }
                x_247 = x_247_phi;
                x_248_phi = x_247;
              }
              x_248 = x_248_phi;
              x_249_phi = x_248;
            }
            x_249 = x_249_phi;
            const float x_251 = asfloat(x_8[0].y);
            const bool x_252 = (x_62 > x_251);
            if (x_252) {
              x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
            }
            x_256_phi = float2(1.0f, 1.0f);
            x_259_phi = 0;
            while (true) {
              float2 x_272 = float2(0.0f, 0.0f);
              int x_260 = 0;
              float2 x_273_phi = float2(0.0f, 0.0f);
              const float2 x_256 = x_256_phi;
              const int x_259 = x_259_phi;
              if ((x_259 <= 32)) {
              } else {
                break;
              }
              x_273_phi = x_256;
              if ((x_256.x < 0.0f)) {
                if (x_252) {
                  discard;
                }
                x_272 = x_256;
                x_272.y = (x_256.y + 1.0f);
                x_273_phi = x_272;
              }
              const float2 x_273 = x_273_phi;
              float2 x_257_1 = x_273;
              x_257_1.x = (x_273.x + x_273.y);
              const float2 x_257 = x_257_1;
              {
                x_260 = (x_259 + 1);
                x_256_phi = x_257;
                x_259_phi = x_260;
              }
            }
          }
          x_277_phi = x_249;
        }
        x_277 = x_277_phi;
        x_278_phi = x_277;
      }
      x_278 = x_278_phi;
      x_279_phi = x_278;
    }
    x_279 = x_279_phi;
    x_280_phi = x_279;
  }
  const float x_280 = x_280_phi;
  x_GLF_color = float4(x_280, x_280, x_280, 1.0f);
  return;
}

struct main_out {
  float4 x_GLF_color_1;
};
struct tint_symbol_1 {
  float4 gl_FragCoord_param : SV_Position;
};
struct tint_symbol_2 {
  float4 x_GLF_color_1 : SV_Target0;
};

tint_symbol_2 main(tint_symbol_1 tint_symbol) {
  const float4 gl_FragCoord_param = tint_symbol.gl_FragCoord_param;
  gl_FragCoord = gl_FragCoord_param;
  main_1();
  const main_out tint_symbol_3 = {x_GLF_color};
  const tint_symbol_2 tint_symbol_5 = {tint_symbol_3.x_GLF_color_1};
  return tint_symbol_5;
}
