extern void __VERIFIER_error() __attribute__ ((__noreturn__));
extern void __VERIFIER_assume(int);

extern int __VERIFIER_nondet_int();
/* Generated by CIL v. 1.3.6 */
/* print_CIL_Input is true */



void error(void) 
{ 

  {
  ERROR: __VERIFIER_error();
  return;
}
}

int c  ;
int c_t  ;
int c_req_up  ;
int p_in  ;
int p_out  ;
int wl_st  ;
int c1_st  ;
int c2_st  ;
int wb_st  ;
int r_st  ;
int wl_i  ;
int c1_i  ;
int c2_i  ;
int wb_i  ;
int r_i  ;
int wl_pc  ;
int c1_pc  ;
int c2_pc  ;
int wb_pc  ;
int e_e  ;
int e_f  ;
int e_g  ;
int e_c  ;
int e_p_in  ;
int e_wl  ;
void write_loop(void) ;
void compute1(void) ;
void compute2(void) ;
void write_back(void) ;
void read(void) ;
int d  ;
int data  ;
int processed  ;
static int t_b  ;
void write_loop(void) 
{ int t ;

  {
  if ((int )wl_pc == 0) {
    goto WL_ENTRY_LOC;
  } else {
    if ((int )wl_pc == 2) {
      goto WL_WAIT_2_LOC;
    } else {
      if ((int )wl_pc == 1) {
        goto WL_WAIT_1_LOC;
      } else {

      }
    }
  }
  WL_ENTRY_LOC: 
  wl_st = 2;
  wl_pc = 1;
  e_wl = 0;

  goto return_label;
  WL_WAIT_1_LOC: 
  {
  while (1) {
    while_0_continue: /* CIL Label */ ;
    t = d;
    data = d;
    processed = 0;
    e_f = 1;
    if ((int )c1_pc == 1) {
      if ((int )e_f == 1) {
        c1_st = 0;
      } else {

      }
    } else {

    }
    if ((int )c2_pc == 1) {
      if ((int )e_f == 1) {
        c2_st = 0;
      } else {

      }
    } else {

    }
    e_f = 2;
    wl_st = 2;
    wl_pc = 2;
    t_b = t;

    goto return_label;
    WL_WAIT_2_LOC: 
    t = t_b;
    if (d == t + 1) {

    } else {
      if (d == t + 2) {

      } else {
        {
        error();
        }
      }
    }
    if (d == t + 1) {
    
    } else {
      {
	error();
      }

    }
  }
  while_0_break: /* CIL Label */ ;
  }
  return_label: /* CIL Label */ 
  return;
}
}
void compute1(void) 
{ 

  {
  if ((int )c1_pc == 0) {
    goto C1_ENTRY_LOC;
  } else {
    if ((int )c1_pc == 1) {
      goto C1_WAIT_LOC;
    } else {

    }
  }
  C1_ENTRY_LOC: 
  {
  while (1) {
    while_1_continue: /* CIL Label */ ;
    c1_st = 2;
    c1_pc = 1;

    goto return_label;
    C1_WAIT_LOC: 
    if (! processed) {
      data += 1;
      e_g = 1;
      if ((int )wb_pc == 1) {
        if ((int )e_g == 1) {
          wb_st = 0;
        } else {

        }
      } else {

      }
      e_g = 2;
    } else {

    }
  }
  while_1_break: /* CIL Label */ ;
  }
  return_label: /* CIL Label */ 
  return;
}
}
void compute2(void) 
{ 

  {
  if ((int )c2_pc == 0) {
    goto C2_ENTRY_LOC;
  } else {
    if ((int )c2_pc == 1) {
      goto C2_WAIT_LOC;
    } else {

    }
  }
  C2_ENTRY_LOC: 
  {
  while (1) {
    while_2_continue: /* CIL Label */ ;
    c2_st = 2;
    c2_pc = 1;

    goto return_label;
    C2_WAIT_LOC: 
    if (! processed) {
      data += 1;
      e_g = 1;
      if ((int )wb_pc == 1) {
        if ((int )e_g == 1) {
          wb_st = 0;
        } else {

        }
      } else {

      }
      e_g = 2;
    } else {

    }
  }
  while_2_break: /* CIL Label */ ;
  }
  return_label: /* CIL Label */ 
  return;
}
}
void write_back(void) 
{ 

  {
  if ((int )wb_pc == 0) {
    goto WB_ENTRY_LOC;
  } else {
    if ((int )wb_pc == 1) {
      goto WB_WAIT_LOC;
    } else {

    }
  }
  WB_ENTRY_LOC: 
  {
  while (1) {
    while_3_continue: /* CIL Label */ ;
    wb_st = 2;
    wb_pc = 1;

    goto return_label;
    WB_WAIT_LOC: 
    c_t = data;
    c_req_up = 1;
    processed = 1;
  }
  while_3_break: /* CIL Label */ ;
  }
  return_label: /* CIL Label */ 
  return;
}
}
void read(void) 
{ 

  {
  d = c;
  e_e = 1;
  if ((int )wl_pc == 1) {
    if ((int )e_wl == 1) {
      wl_st = 0;
    } else {
      goto _L;
    }
  } else {
    _L: /* CIL Label */ 
    if ((int )wl_pc == 2) {
      if ((int )e_e == 1) {
        wl_st = 0;
      } else {

      }
    } else {

    }
  }
  e_e = 2;
  r_st = 2;

  return;
}
}
void eval(void) 
{ int tmp ;
  int tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;

  {
  {
  while (1) {
    while_4_continue: /* CIL Label */ ;
    if ((int )wl_st == 0) {

    } else {
      if ((int )c1_st == 0) {

      } else {
        if ((int )c2_st == 0) {

        } else {
          if ((int )wb_st == 0) {

          } else {
            if ((int )r_st == 0) {

            } else {
              goto while_4_break;
            }
          }
        }
      }
    }
    if ((int )wl_st == 0) {
      {
	tmp =  __VERIFIER_nondet_int(); 
      }
      if (tmp) {
        {
        wl_st = 1;
        write_loop();
        }
      } else {

      }
    } else {

    }
    if ((int )c1_st == 0) {
      {
	tmp___0 =  __VERIFIER_nondet_int(); 
      }
      if (tmp___0) {
        {
        c1_st = 1;
        compute1();
        }
      } else {

      }
    } else {

    }
    if ((int )c2_st == 0) {
      {
	tmp___1 =  __VERIFIER_nondet_int(); 
      }
      if (tmp___1) {
        {
        c2_st = 1;
        compute2();
        }
      } else {

      }
    } else {

    }
    if ((int )wb_st == 0) {
      {
	tmp___2 =  __VERIFIER_nondet_int(); 
      }
      if (tmp___2) {
        {
        wb_st = 1;
        write_back();
        }
      } else {

      }
    } else {

    }
    if ((int )r_st == 0) {
      {
	tmp___3 = __VERIFIER_nondet_int();
      }
      if (tmp___3) {
        {
        r_st = 1;
        read();
        }
      } else {

      }
    } else {

    }
  }
  while_4_break: /* CIL Label */ ;
  }

  return;
}
}
void start_simulation(void) 
{ int kernel_st ;

  {
/*
  kernel_st = 0;
  if ((int )c_req_up == 1) {
    if (c != c_t) {
      c = c_t;
      e_c = 0;
    } else {

    }
    c_req_up = 0;
  } else {

  }
  if ((int )wl_i == 1) {
    wl_st = 0;
  } else {
    wl_st = 2;
  }
  if ((int )c1_i == 1) {
    c1_st = 0;
  } else {
    c1_st = 2;
  }
  if ((int )c2_i == 1) {
    c2_st = 0;
  } else {
    c2_st = 2;
  }
  if ((int )wb_i == 1) {
    wb_st = 0;
  } else {
    wb_st = 2;
  }
  if ((int )r_i == 1) {
    r_st = 0;
  } else {
    r_st = 2;
  }
  if ((int )e_f == 0) {
    e_f = 1;
  } else {

  }
  if ((int )e_g == 0) {
    e_g = 1;
  } else {

  }
  if ((int )e_e == 0) {
    e_e = 1;
  } else {

  }
  if ((int )e_c == 0) {
    e_c = 1;
  } else {

  }
  if ((int )e_wl == 0) {
    e_wl = 1;
  } else {

  }
  if ((int )wl_pc == 1) {
    if ((int )e_wl == 1) {
      wl_st = 0;
    } else {
      goto _L;
    }
  } else {
    _L: // CIL Label 
    if ((int )wl_pc == 2) {
      if ((int )e_e == 1) {
        wl_st = 0;
      } else {

      }
    } else {

    }
  }
  if ((int )c1_pc == 1) {
    if ((int )e_f == 1) {
      c1_st = 0;
    } else {

    }
  } else {

  }
  if ((int )c2_pc == 1) {
    if ((int )e_f == 1) {
      c2_st = 0;
    } else {

    }
  } else {

  }
  if ((int )wb_pc == 1) {
    if ((int )e_g == 1) {
      wb_st = 0;
    } else {

    }
  } else {

  }
  if ((int )e_c == 1) {
    r_st = 0;
  } else {

  }
  if ((int )e_e == 1) {
    e_e = 2;
  } else {

  }
  if ((int )e_f == 1) {
    e_f = 2;
  } else {

  }
  if ((int )e_g == 1) {
    e_g = 2;
  } else {

  }
  if ((int )e_c == 1) {
    e_c = 2;
  } else {

  }
  if ((int )e_wl == 1) {
    e_wl = 2;
  } else {

  }
*/
  {

  while (1) {
    while_5_continue: // CIL Label  ;
    {
    kernel_st = 1;
    { wl_st = 0; wl_pc = 2; d = t + 42; }
    eval();
    }
/*
    kernel_st = 2;
    if ((int )c_req_up == 1) {
      if (c != c_t) {
        c = c_t;
        e_c = 0;
      } else {

      }
      c_req_up = 0;
    } else {

    }
    kernel_st = 3;
    if ((int )e_f == 0) {
      e_f = 1;
    } else {

    }
    if ((int )e_g == 0) {
      e_g = 1;
    } else {

    }
    if ((int )e_e == 0) {
      e_e = 1;
    } else {

    }
    if ((int )e_c == 0) {
      e_c = 1;
    } else {

    }
    if ((int )e_wl == 0) {
      e_wl = 1;
    } else {

    }
    if ((int )wl_pc == 1) {
      if ((int )e_wl == 1) {
        wl_st = 0;
      } else {
        goto _L___0;
      }
    } else {
      _L___0: // CIL Label
      if ((int )wl_pc == 2) {
        if ((int )e_e == 1) {
          wl_st = 0;
        } else {

        }
      } else {

      }
    }
    if ((int )c1_pc == 1) {
      if ((int )e_f == 1) {
        c1_st = 0;
      } else {

      }
    } else {

    }
    if ((int )c2_pc == 1) {
      if ((int )e_f == 1) {
        c2_st = 0;
      } else {

      }
    } else {

    }
    if ((int )wb_pc == 1) {
      if ((int )e_g == 1) {
        wb_st = 0;
      } else {

      }
    } else {

    }
    if ((int )e_c == 1) {
      r_st = 0;
    } else {

    }
    if ((int )e_e == 1) {
      e_e = 2;
    } else {

    }
    if ((int )e_f == 1) {
      e_f = 2;
    } else {

    }
    if ((int )e_g == 1) {
      e_g = 2;
    } else {

    }
    if ((int )e_c == 1) {
      e_c = 2;
    } else {

    }
    if ((int )e_wl == 1) {
      e_wl = 2;
    } else {

    }
    if ((int )wl_st == 0) {

    } else {
      if ((int )c1_st == 0) {

      } else {
        if ((int )c2_st == 0) {

        } else {
          if ((int )wb_st == 0) {

          } else {
            if ((int )r_st == 0) {

            } else {
              goto while_5_break;
            }
          }
        }
      }
    }
*/
  }
  
  while_5_break: // CIL Label  
     ;
  }

  return;
}
}
int main(void) 
{ int __retres1 ;

  {
  {
  e_wl = 2;
  e_c = e_wl;
  e_g = e_c;
  e_f = e_g;
  e_e = e_f;
  wl_pc = 0;
  c1_pc = 0;
  c2_pc = 0;
  wb_pc = 0;
  wb_i = 1;
  c2_i = wb_i;
  c1_i = c2_i;
  wl_i = c1_i;
  r_i = 0;
  c_req_up = 0;
  d = 0;
  c = 0;
  start_simulation();
  }
  __retres1 = 0;
  return (__retres1);
}
}
