SKIP: TIMEOUT

struct main_out {
  float4 x_GLF_color_1;
};

struct main_outputs {
  float4 main_out_x_GLF_color_1 : SV_Target0;
};


static int x_GLF_global_loop_count = int(0);
cbuffer cbuffer_x_7 : register(b0) {
  uint4 x_7[3];
};
cbuffer cbuffer_x_10 : register(b1) {
  uint4 x_10[4];
};
static float4 x_GLF_color = (0.0f).xxxx;
void main_1() {
  float f = 0.0f;
  int i = int(0);
  int i_1 = int(0);
  int i_2 = int(0);
  int i_3 = int(0);
  int i_4 = int(0);
  int i_5 = int(0);
  int i_6 = int(0);
  int i_7 = int(0);
  int i_8 = int(0);
  int i_9 = int(0);
  int i_10 = int(0);
  int i_11 = int(0);
  int i_12 = int(0);
  int i_13 = int(0);
  int i_14 = int(0);
  float sum = 0.0f;
  int r = int(0);
  x_GLF_global_loop_count = int(0);
  float x_53 = asfloat(x_7[1u].x);
  f = x_53;
  int x_55 = asint(x_10[1u].x);
  i = x_55;
  {
    while(true) {
      int x_60 = i;
      int x_62 = asint(x_10[0u].x);
      if ((x_60 < x_62)) {
      } else {
        break;
      }
      int x_66 = asint(x_10[1u].x);
      i_1 = x_66;
      {
        while(true) {
          int x_71 = i_1;
          int x_73 = asint(x_10[0u].x);
          if ((x_71 < x_73)) {
          } else {
            break;
          }
          int x_77 = asint(x_10[1u].x);
          i_2 = x_77;
          {
            while(true) {
              int x_82 = i_2;
              int x_84 = asint(x_10[0u].x);
              if ((x_82 < x_84)) {
              } else {
                break;
              }
              int x_88 = asint(x_10[1u].x);
              i_3 = x_88;
              {
                while(true) {
                  int x_93 = i_3;
                  int x_95 = asint(x_10[0u].x);
                  if ((x_93 < x_95)) {
                  } else {
                    break;
                  }
                  int x_99 = asint(x_10[1u].x);
                  i_4 = x_99;
                  {
                    while(true) {
                      int x_104 = i_4;
                      int x_106 = asint(x_10[0u].x);
                      if ((x_104 < x_106)) {
                      } else {
                        break;
                      }
                      int x_110 = asint(x_10[1u].x);
                      i_5 = x_110;
                      {
                        while(true) {
                          int x_115 = i_5;
                          int x_117 = asint(x_10[0u].x);
                          if ((x_115 < x_117)) {
                          } else {
                            break;
                          }
                          int x_121 = asint(x_10[1u].x);
                          i_6 = x_121;
                          {
                            while(true) {
                              int x_126 = i_6;
                              int x_128 = asint(x_10[0u].x);
                              if ((x_126 < x_128)) {
                              } else {
                                break;
                              }
                              int x_132 = asint(x_10[1u].x);
                              i_7 = x_132;
                              {
                                while(true) {
                                  int x_137 = i_7;
                                  int x_139 = asint(x_10[0u].x);
                                  if ((x_137 < x_139)) {
                                  } else {
                                    break;
                                  }
                                  int x_143 = asint(x_10[1u].x);
                                  i_8 = x_143;
                                  {
                                    while(true) {
                                      int x_148 = i_8;
                                      int x_150 = asint(x_10[0u].x);
                                      if ((x_148 < x_150)) {
                                      } else {
                                        break;
                                      }
                                      int x_154 = asint(x_10[1u].x);
                                      i_9 = x_154;
                                      {
                                        while(true) {
                                          int x_159 = i_9;
                                          int x_161 = asint(x_10[0u].x);
                                          if ((x_159 < x_161)) {
                                          } else {
                                            break;
                                          }
                                          int x_165 = asint(x_10[1u].x);
                                          i_10 = x_165;
                                          {
                                            while(true) {
                                              int x_170 = i_10;
                                              int x_172 = asint(x_10[0u].x);
                                              if ((x_170 < x_172)) {
                                              } else {
                                                break;
                                              }
                                              int x_176 = asint(x_10[1u].x);
                                              i_11 = x_176;
                                              {
                                                while(true) {
                                                  int x_181 = i_11;
                                                  int x_183 = asint(x_10[2u].x);
                                                  if ((x_181 < x_183)) {
                                                  } else {
                                                    break;
                                                  }
                                                  int x_187 = asint(x_10[1u].x);
                                                  i_12 = x_187;
                                                  {
                                                    while(true) {
                                                      int x_192 = i_12;
                                                      int x_194 = asint(x_10[0u].x);
                                                      if ((x_192 < x_194)) {
                                                      } else {
                                                        break;
                                                      }
                                                      int x_198 = asint(x_10[1u].x);
                                                      i_13 = x_198;
                                                      {
                                                        while(true) {
                                                          int x_203 = i_13;
                                                          int x_205 = asint(x_10[0u].x);
                                                          if ((x_203 < x_205)) {
                                                          } else {
                                                            break;
                                                          }
                                                          int x_209 = asint(x_10[1u].x);
                                                          i_14 = x_209;
                                                          {
                                                            while(true) {
                                                              int x_214 = i_14;
                                                              int x_216 = asint(x_10[2u].x);
                                                              if ((x_214 < x_216)) {
                                                              } else {
                                                                break;
                                                              }
                                                              {
                                                                while(true) {
                                                                  int x_223 = x_GLF_global_loop_count;
                                                                  x_GLF_global_loop_count = (x_223 + int(1));
                                                                  {
                                                                    int x_225 = x_GLF_global_loop_count;
                                                                    int x_227 = asint(x_10[3u].x);
                                                                    if (!((x_225 < (int(100) - x_227)))) { break; }
                                                                  }
                                                                  continue;
                                                                }
                                                              }
                                                              float x_231 = asfloat(x_7[0u].x);
                                                              float x_232 = f;
                                                              f = (x_232 + x_231);
                                                              {
                                                                int x_234 = i_14;
                                                                i_14 = (x_234 + int(1));
                                                              }
                                                              continue;
                                                            }
                                                          }
                                                          {
                                                            int x_236 = i_13;
                                                            i_13 = (x_236 + int(1));
                                                          }
                                                          continue;
                                                        }
                                                      }
                                                      {
                                                        int x_238 = i_12;
                                                        i_12 = (x_238 + int(1));
                                                      }
                                                      continue;
                                                    }
                                                  }
                                                  {
                                                    int x_240 = i_11;
                                                    i_11 = (x_240 + int(1));
                                                  }
                                                  continue;
                                                }
                                              }
                                              {
                                                int x_242 = i_10;
                                                i_10 = (x_242 + int(1));
                                              }
                                              continue;
                                            }
                                          }
                                          {
                                            int x_244 = i_9;
                                            i_9 = (x_244 + int(1));
                                          }
                                          continue;
                                        }
                                      }
                                      {
                                        int x_246 = i_8;
                                        i_8 = (x_246 + int(1));
                                      }
                                      continue;
                                    }
                                  }
                                  {
                                    int x_248 = i_7;
                                    i_7 = (x_248 + int(1));
                                  }
                                  continue;
                                }
                              }
                              {
                                int x_250 = i_6;
                                i_6 = (x_250 + int(1));
                              }
                              continue;
                            }
                          }
                          {
                            int x_252 = i_5;
                            i_5 = (x_252 + int(1));
                          }
                          continue;
                        }
                      }
                      {
                        int x_254 = i_4;
                        i_4 = (x_254 + int(1));
                      }
                      continue;
                    }
                  }
                  {
                    int x_256 = i_3;
                    i_3 = (x_256 + int(1));
                  }
                  continue;
                }
              }
              {
                int x_258 = i_2;
                i_2 = (x_258 + int(1));
              }
              continue;
            }
          }
          {
            int x_260 = i_1;
            i_1 = (x_260 + int(1));
          }
          continue;
        }
      }
      {
        int x_262 = i;
        i = (x_262 + int(1));
      }
      continue;
    }
  }
  float x_265 = asfloat(x_7[1u].x);
  sum = x_265;
  int x_267 = asint(x_10[1u].x);
  r = x_267;
  {
    while(true) {
      int x_272 = x_GLF_global_loop_count;
      if ((x_272 < int(100))) {
      } else {
        break;
      }
      int x_275 = x_GLF_global_loop_count;
      x_GLF_global_loop_count = (x_275 + int(1));
      float x_277 = f;
      float x_278 = sum;
      sum = (x_278 + x_277);
      {
        int x_280 = r;
        r = (x_280 + int(1));
      }
      continue;
    }
  }
  float x_282 = sum;
  float x_284 = asfloat(x_7[2u].x);
  if ((x_282 == x_284)) {
    int x_290 = asint(x_10[0u].x);
    int x_293 = asint(x_10[1u].x);
    int x_296 = asint(x_10[1u].x);
    int x_299 = asint(x_10[0u].x);
    float v = float(x_290);
    float v_1 = float(x_293);
    float v_2 = float(x_296);
    x_GLF_color = float4(v, v_1, v_2, float(x_299));
  } else {
    int x_303 = asint(x_10[1u].x);
    float x_304 = float(x_303);
    x_GLF_color = float4(x_304, x_304, x_304, x_304);
  }
}

main_out main_inner() {
  main_1();
  main_out v_3 = {x_GLF_color};
  return v_3;
}

main_outputs main() {
  main_out v_4 = main_inner();
  main_outputs v_5 = {v_4.x_GLF_color_1};
  return v_5;
}

