Showing error 2090

User: Jiri Slaby
Error type: Reachable Error Location
Error type description: A specified error location is reachable in some program path
File location: product-lines/minepump_spec4_product55_safe.cil.c
Line in file: 587
Project: SV-COMP 2013
Project version: 2.6.28
Tools: Manual Work
Entered: 2013-01-17 16:57:54 UTC


Source:

   1extern int __VERIFIER_nondet_int(void);
   2extern int printf (__const char *__restrict __format, ...);
   3/* Generated by CIL v. 1.3.7 */
   4/* print_CIL_Input is true */
   5
   6#line 2 "libacc.c"
   7struct JoinPoint {
   8   void **(*fp)(struct JoinPoint * ) ;
   9   void **args ;
  10   int argsCount ;
  11   char const   **argsType ;
  12   void *(*arg)(int  , struct JoinPoint * ) ;
  13   char const   *(*argType)(int  , struct JoinPoint * ) ;
  14   void **retValue ;
  15   char const   *retType ;
  16   char const   *funcName ;
  17   char const   *targetName ;
  18   char const   *fileName ;
  19   char const   *kind ;
  20   void *excep_return ;
  21};
  22#line 18 "libacc.c"
  23struct __UTAC__CFLOW_FUNC {
  24   int (*func)(int  , int  ) ;
  25   int val ;
  26   struct __UTAC__CFLOW_FUNC *next ;
  27};
  28#line 18 "libacc.c"
  29struct __UTAC__EXCEPTION {
  30   void *jumpbuf ;
  31   unsigned long long prtValue ;
  32   int pops ;
  33   struct __UTAC__CFLOW_FUNC *cflowfuncs ;
  34};
  35#line 211 "/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h"
  36typedef unsigned long size_t;
  37#line 76 "libacc.c"
  38struct __ACC__ERR {
  39   void *v ;
  40   struct __ACC__ERR *next ;
  41};
  42#line 1 "scenario.o"
  43#pragma merger(0,"scenario.i","")
  44#line 5 "scenario.c"
  45void waterRise(void) ;
  46#line 7
  47#line 8
  48void changeMethaneLevel(void) ;
  49#line 12
  50void stopSystem(void) ;
  51#line 14
  52void timeShift(void) ;
  53#line 16
  54void cleanup(void) ;
  55#line 1 "scenario.c"
  56void test(void) 
  57{ int splverifierCounter ;
  58  int tmp ;
  59  int tmp___0 ;
  60  int tmp___1 ;
  61  int tmp___2 ;
  62
  63  {
  64#line 2
  65  splverifierCounter = 0;
  66  {
  67#line 3
  68  while (1) {
  69    while_0_continue: /* CIL Label */ ;
  70#line 3
  71    if (splverifierCounter < 4) {
  72
  73    } else {
  74      goto while_0_break;
  75    }
  76    {
  77#line 7
  78    tmp = __VERIFIER_nondet_int();
  79    }
  80#line 7
  81    if (tmp) {
  82      {
  83#line 5
  84      waterRise();
  85      }
  86    } else {
  87
  88    }
  89    {
  90#line 7
  91    tmp___0 = __VERIFIER_nondet_int();
  92    }
  93#line 7
  94    if (tmp___0) {
  95      {
  96#line 8
  97      changeMethaneLevel();
  98      }
  99    } else {
 100
 101    }
 102    {
 103#line 10
 104    tmp___2 = __VERIFIER_nondet_int();
 105    }
 106#line 10
 107    if (tmp___2) {
 108
 109    } else {
 110      {
 111#line 12
 112      tmp___1 = __VERIFIER_nondet_int();
 113      }
 114#line 12
 115      if (tmp___1) {
 116        {
 117#line 12
 118        stopSystem();
 119        }
 120      } else {
 121
 122      }
 123    }
 124    {
 125#line 14
 126    timeShift();
 127    }
 128  }
 129  while_0_break: /* CIL Label */ ;
 130  }
 131  {
 132#line 16
 133  cleanup();
 134  }
 135#line 76 "scenario.c"
 136  return;
 137}
 138}
 139#line 1 "MinePump.o"
 140#pragma merger(0,"MinePump.i","")
 141#line 4 "Environment.h"
 142void lowerWaterLevel(void) ;
 143#line 10
 144int isMethaneLevelCritical(void) ;
 145#line 15
 146void printEnvironment(void) ;
 147#line 16
 148int isHighWaterSensorDry(void) ;
 149#line 17
 150int isLowWaterSensorDry(void) ;
 151#line 6 "MinePump.h"
 152void activatePump(void) ;
 153#line 8
 154void deactivatePump(void) ;
 155#line 10
 156int isPumpRunning(void) ;
 157#line 13
 158void printPump(void) ;
 159#line 7 "MinePump.c"
 160int pumpRunning  =    0;
 161#line 9 "MinePump.c"
 162int systemActive  =    1;
 163#line 10
 164void __utac_acc__Specification4_spec__1(void) ;
 165#line 16
 166void processEnvironment(void) ;
 167#line 12 "MinePump.c"
 168void timeShift(void) 
 169{ 
 170
 171  {
 172#line 15
 173  if (pumpRunning) {
 174    {
 175#line 16
 176    lowerWaterLevel();
 177    }
 178  } else {
 179
 180  }
 181#line 15
 182  if (systemActive) {
 183    {
 184#line 16
 185    processEnvironment();
 186    }
 187  } else {
 188
 189  }
 190  {
 191#line 101 "MinePump.c"
 192  __utac_acc__Specification4_spec__1();
 193  }
 194#line 107
 195  return;
 196}
 197}
 198#line 19 "MinePump.c"
 199void processEnvironment__wrappee__base(void) 
 200{ 
 201
 202  {
 203#line 125 "MinePump.c"
 204  return;
 205}
 206}
 207#line 28 "MinePump.c"
 208int isHighWaterLevel(void) ;
 209#line 23 "MinePump.c"
 210void processEnvironment__wrappee__highWaterSensor(void) 
 211{ int tmp ;
 212
 213  {
 214#line 28
 215  if (! pumpRunning) {
 216    {
 217#line 28
 218    tmp = isHighWaterLevel();
 219    }
 220#line 28
 221    if (tmp) {
 222      {
 223#line 25
 224      activatePump();
 225      }
 226    } else {
 227      {
 228#line 27
 229      processEnvironment__wrappee__base();
 230      }
 231    }
 232  } else {
 233    {
 234#line 27
 235    processEnvironment__wrappee__base();
 236    }
 237  }
 238#line 151 "MinePump.c"
 239  return;
 240}
 241}
 242#line 36 "MinePump.c"
 243int isLowWaterLevel(void) ;
 244#line 31 "MinePump.c"
 245void processEnvironment__wrappee__lowWaterSensor(void) 
 246{ int tmp ;
 247
 248  {
 249#line 36
 250  if (pumpRunning) {
 251    {
 252#line 36
 253    tmp = isLowWaterLevel();
 254    }
 255#line 36
 256    if (tmp) {
 257      {
 258#line 33
 259      deactivatePump();
 260      }
 261    } else {
 262      {
 263#line 35
 264      processEnvironment__wrappee__highWaterSensor();
 265      }
 266    }
 267  } else {
 268    {
 269#line 35
 270    processEnvironment__wrappee__highWaterSensor();
 271    }
 272  }
 273#line 177 "MinePump.c"
 274  return;
 275}
 276}
 277#line 43 "MinePump.c"
 278int isMethaneAlarm(void) ;
 279#line 38 "MinePump.c"
 280void processEnvironment(void) 
 281{ int tmp ;
 282
 283  {
 284#line 43
 285  if (pumpRunning) {
 286    {
 287#line 43
 288    tmp = isMethaneAlarm();
 289    }
 290#line 43
 291    if (tmp) {
 292      {
 293#line 40
 294      deactivatePump();
 295      }
 296    } else {
 297      {
 298#line 42
 299      processEnvironment__wrappee__lowWaterSensor();
 300      }
 301    }
 302  } else {
 303    {
 304#line 42
 305    processEnvironment__wrappee__lowWaterSensor();
 306    }
 307  }
 308#line 203 "MinePump.c"
 309  return;
 310}
 311}
 312#line 47 "MinePump.c"
 313void activatePump(void) 
 314{ 
 315
 316  {
 317#line 48
 318  pumpRunning = 1;
 319#line 223 "MinePump.c"
 320  return;
 321}
 322}
 323#line 52 "MinePump.c"
 324void deactivatePump(void) 
 325{ 
 326
 327  {
 328#line 53
 329  pumpRunning = 0;
 330#line 243 "MinePump.c"
 331  return;
 332}
 333}
 334#line 57 "MinePump.c"
 335int isMethaneAlarm(void) 
 336{ int retValue_acc ;
 337
 338  {
 339  {
 340#line 261 "MinePump.c"
 341  retValue_acc = isMethaneLevelCritical();
 342  }
 343#line 263
 344  return (retValue_acc);
 345#line 270
 346  return (retValue_acc);
 347}
 348}
 349#line 62 "MinePump.c"
 350int isPumpRunning(void) 
 351{ int retValue_acc ;
 352
 353  {
 354#line 292 "MinePump.c"
 355  retValue_acc = pumpRunning;
 356#line 294
 357  return (retValue_acc);
 358#line 301
 359  return (retValue_acc);
 360}
 361}
 362#line 68 "MinePump.c"
 363#line 67 "MinePump.c"
 364void printPump(void) 
 365{ 
 366
 367  {
 368  {
 369#line 68
 370  printf("Pump(System:");
 371  }
 372#line 69
 373  if (systemActive) {
 374    {
 375#line 70
 376    printf("On");
 377    }
 378  } else {
 379    {
 380#line 71
 381    printf("Off");
 382    }
 383  }
 384  {
 385#line 73
 386  printf(",Pump:");
 387  }
 388#line 74
 389  if (pumpRunning) {
 390    {
 391#line 75
 392    printf("On");
 393    }
 394  } else {
 395    {
 396#line 76
 397    printf("Off");
 398    }
 399  }
 400  {
 401#line 78
 402  printf(") ");
 403#line 79
 404  printEnvironment();
 405#line 80
 406  printf("\n");
 407  }
 408#line 341 "MinePump.c"
 409  return;
 410}
 411}
 412#line 82 "MinePump.c"
 413int isHighWaterLevel(void) 
 414{ int retValue_acc ;
 415  int tmp ;
 416  int tmp___0 ;
 417
 418  {
 419  {
 420#line 359 "MinePump.c"
 421  tmp = isHighWaterSensorDry();
 422  }
 423#line 359
 424  if (tmp) {
 425#line 359
 426    tmp___0 = 0;
 427  } else {
 428#line 359
 429    tmp___0 = 1;
 430  }
 431#line 359
 432  retValue_acc = tmp___0;
 433#line 361
 434  return (retValue_acc);
 435#line 368
 436  return (retValue_acc);
 437}
 438}
 439#line 85 "MinePump.c"
 440int isLowWaterLevel(void) 
 441{ int retValue_acc ;
 442  int tmp ;
 443  int tmp___0 ;
 444
 445  {
 446  {
 447#line 390 "MinePump.c"
 448  tmp = isLowWaterSensorDry();
 449  }
 450#line 390
 451  if (tmp) {
 452#line 390
 453    tmp___0 = 0;
 454  } else {
 455#line 390
 456    tmp___0 = 1;
 457  }
 458#line 390
 459  retValue_acc = tmp___0;
 460#line 392
 461  return (retValue_acc);
 462#line 399
 463  return (retValue_acc);
 464}
 465}
 466#line 88 "MinePump.c"
 467void stopSystem(void) 
 468{ 
 469
 470  {
 471#line 93
 472  if (pumpRunning) {
 473    {
 474#line 90
 475    deactivatePump();
 476    }
 477  } else {
 478
 479  }
 480#line 93
 481  systemActive = 0;
 482#line 428 "MinePump.c"
 483  return;
 484}
 485}
 486#line 1 "Specification4_spec.o"
 487#pragma merger(0,"Specification4_spec.i","")
 488#line 4 "wsllib.h"
 489void __automaton_fail(void) ;
 490#line 12 "Environment.h"
 491int getWaterLevel(void) ;
 492#line 11 "Specification4_spec.c"
 493void __utac_acc__Specification4_spec__1(void) 
 494{ int tmp ;
 495  int tmp___0 ;
 496
 497  {
 498  {
 499#line 17
 500  tmp = getWaterLevel();
 501  }
 502#line 17
 503  if (tmp == 0) {
 504    {
 505#line 17
 506    tmp___0 = isPumpRunning();
 507    }
 508#line 17
 509    if (tmp___0) {
 510      {
 511#line 14
 512      __automaton_fail();
 513      }
 514    } else {
 515
 516    }
 517  } else {
 518
 519  }
 520#line 14
 521  return;
 522}
 523}
 524#line 1 "featureselect.o"
 525#pragma merger(0,"featureselect.i","")
 526#line 8 "featureselect.h"
 527int select_one(void) ;
 528#line 10
 529void select_features(void) ;
 530#line 12
 531void select_helpers(void) ;
 532#line 14
 533int valid_product(void) ;
 534#line 8 "featureselect.c"
 535int select_one(void) 
 536{ int retValue_acc ;
 537  int choice = __VERIFIER_nondet_int();
 538
 539  {
 540#line 62 "featureselect.c"
 541  retValue_acc = choice;
 542#line 64
 543  return (retValue_acc);
 544#line 71
 545  return (retValue_acc);
 546}
 547}
 548#line 14 "featureselect.c"
 549void select_features(void) 
 550{ 
 551
 552  {
 553#line 93 "featureselect.c"
 554  return;
 555}
 556}
 557#line 20 "featureselect.c"
 558void select_helpers(void) 
 559{ 
 560
 561  {
 562#line 111 "featureselect.c"
 563  return;
 564}
 565}
 566#line 25 "featureselect.c"
 567int valid_product(void) 
 568{ int retValue_acc ;
 569
 570  {
 571#line 129 "featureselect.c"
 572  retValue_acc = 1;
 573#line 131
 574  return (retValue_acc);
 575#line 138
 576  return (retValue_acc);
 577}
 578}
 579#line 1 "wsllib_check.o"
 580#pragma merger(0,"wsllib_check.i","")
 581#line 3 "wsllib_check.c"
 582void __automaton_fail(void) 
 583{ 
 584
 585  {
 586  goto ERROR;
 587  ERROR: ;
 588#line 53 "wsllib_check.c"
 589  return;
 590}
 591}
 592#line 1 "Test.o"
 593#pragma merger(0,"Test.i","")
 594#line 8 "Test.c"
 595int cleanupTimeShifts  =    4;
 596#line 11 "Test.c"
 597#line 17 "Test.c"
 598void cleanup(void) 
 599{ int i ;
 600  int __cil_tmp2 ;
 601
 602  {
 603  {
 604#line 20
 605  timeShift();
 606#line 22
 607  i = 0;
 608  }
 609  {
 610#line 22
 611  while (1) {
 612    while_1_continue: /* CIL Label */ ;
 613    {
 614#line 22
 615    __cil_tmp2 = cleanupTimeShifts - 1;
 616#line 22
 617    if (i < __cil_tmp2) {
 618
 619    } else {
 620      goto while_1_break;
 621    }
 622    }
 623    {
 624#line 23
 625    timeShift();
 626#line 22
 627    i = i + 1;
 628    }
 629  }
 630  while_1_break: /* CIL Label */ ;
 631  }
 632#line 1111 "Test.c"
 633  return;
 634}
 635}
 636#line 56 "Test.c"
 637void Specification2(void) 
 638{ 
 639
 640  {
 641  {
 642#line 57
 643  timeShift();
 644#line 57
 645  printPump();
 646#line 58
 647  timeShift();
 648#line 58
 649  printPump();
 650#line 59
 651  timeShift();
 652#line 59
 653  printPump();
 654#line 60
 655  waterRise();
 656#line 60
 657  printPump();
 658#line 61
 659  timeShift();
 660#line 61
 661  printPump();
 662#line 62
 663  changeMethaneLevel();
 664#line 62
 665  printPump();
 666#line 63
 667  timeShift();
 668#line 63
 669  printPump();
 670#line 64
 671  cleanup();
 672  }
 673#line 1159 "Test.c"
 674  return;
 675}
 676}
 677#line 67 "Test.c"
 678void setup(void) 
 679{ 
 680
 681  {
 682#line 1177 "Test.c"
 683  return;
 684}
 685}
 686#line 74 "Test.c"
 687void runTest(void) 
 688{ 
 689
 690  {
 691  {
 692#line 77
 693  test();
 694  }
 695#line 1197 "Test.c"
 696  return;
 697}
 698}
 699#line 82 "Test.c"
 700int main(void) 
 701{ int retValue_acc ;
 702  int tmp ;
 703
 704  {
 705  {
 706#line 83
 707  select_helpers();
 708#line 84
 709  select_features();
 710#line 85
 711  tmp = valid_product();
 712  }
 713#line 85
 714  if (tmp) {
 715    {
 716#line 86
 717    setup();
 718#line 87
 719    runTest();
 720    }
 721  } else {
 722
 723  }
 724#line 1226 "Test.c"
 725  retValue_acc = 0;
 726#line 1228
 727  return (retValue_acc);
 728#line 1235
 729  return (retValue_acc);
 730}
 731}
 732#line 1 "libacc.o"
 733#pragma merger(0,"libacc.i","")
 734#line 73 "/usr/include/assert.h"
 735extern  __attribute__((__nothrow__, __noreturn__)) void __assert_fail(char const   *__assertion ,
 736                                                                      char const   *__file ,
 737                                                                      unsigned int __line ,
 738                                                                      char const   *__function ) ;
 739#line 471 "/usr/include/stdlib.h"
 740extern  __attribute__((__nothrow__)) void *malloc(size_t __size )  __attribute__((__malloc__)) ;
 741#line 488
 742extern  __attribute__((__nothrow__)) void free(void *__ptr ) ;
 743#line 32 "libacc.c"
 744void __utac__exception__cf_handler_set(void *exception , int (*cflow_func)(int  ,
 745                                                                           int  ) ,
 746                                       int val ) 
 747{ struct __UTAC__EXCEPTION *excep ;
 748  struct __UTAC__CFLOW_FUNC *cf ;
 749  void *tmp ;
 750  unsigned long __cil_tmp7 ;
 751  unsigned long __cil_tmp8 ;
 752  unsigned long __cil_tmp9 ;
 753  unsigned long __cil_tmp10 ;
 754  unsigned long __cil_tmp11 ;
 755  unsigned long __cil_tmp12 ;
 756  unsigned long __cil_tmp13 ;
 757  unsigned long __cil_tmp14 ;
 758  int (**mem_15)(int  , int  ) ;
 759  int *mem_16 ;
 760  struct __UTAC__CFLOW_FUNC **mem_17 ;
 761  struct __UTAC__CFLOW_FUNC **mem_18 ;
 762  struct __UTAC__CFLOW_FUNC **mem_19 ;
 763
 764  {
 765  {
 766#line 33
 767  excep = (struct __UTAC__EXCEPTION *)exception;
 768#line 34
 769  tmp = malloc(24UL);
 770#line 34
 771  cf = (struct __UTAC__CFLOW_FUNC *)tmp;
 772#line 36
 773  mem_15 = (int (**)(int  , int  ))cf;
 774#line 36
 775  *mem_15 = cflow_func;
 776#line 37
 777  __cil_tmp7 = (unsigned long )cf;
 778#line 37
 779  __cil_tmp8 = __cil_tmp7 + 8;
 780#line 37
 781  mem_16 = (int *)__cil_tmp8;
 782#line 37
 783  *mem_16 = val;
 784#line 38
 785  __cil_tmp9 = (unsigned long )cf;
 786#line 38
 787  __cil_tmp10 = __cil_tmp9 + 16;
 788#line 38
 789  __cil_tmp11 = (unsigned long )excep;
 790#line 38
 791  __cil_tmp12 = __cil_tmp11 + 24;
 792#line 38
 793  mem_17 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp10;
 794#line 38
 795  mem_18 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp12;
 796#line 38
 797  *mem_17 = *mem_18;
 798#line 39
 799  __cil_tmp13 = (unsigned long )excep;
 800#line 39
 801  __cil_tmp14 = __cil_tmp13 + 24;
 802#line 39
 803  mem_19 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp14;
 804#line 39
 805  *mem_19 = cf;
 806  }
 807#line 654 "libacc.c"
 808  return;
 809}
 810}
 811#line 44 "libacc.c"
 812void __utac__exception__cf_handler_free(void *exception ) 
 813{ struct __UTAC__EXCEPTION *excep ;
 814  struct __UTAC__CFLOW_FUNC *cf ;
 815  struct __UTAC__CFLOW_FUNC *tmp ;
 816  unsigned long __cil_tmp5 ;
 817  unsigned long __cil_tmp6 ;
 818  struct __UTAC__CFLOW_FUNC *__cil_tmp7 ;
 819  unsigned long __cil_tmp8 ;
 820  unsigned long __cil_tmp9 ;
 821  unsigned long __cil_tmp10 ;
 822  unsigned long __cil_tmp11 ;
 823  void *__cil_tmp12 ;
 824  unsigned long __cil_tmp13 ;
 825  unsigned long __cil_tmp14 ;
 826  struct __UTAC__CFLOW_FUNC **mem_15 ;
 827  struct __UTAC__CFLOW_FUNC **mem_16 ;
 828  struct __UTAC__CFLOW_FUNC **mem_17 ;
 829
 830  {
 831#line 45
 832  excep = (struct __UTAC__EXCEPTION *)exception;
 833#line 46
 834  __cil_tmp5 = (unsigned long )excep;
 835#line 46
 836  __cil_tmp6 = __cil_tmp5 + 24;
 837#line 46
 838  mem_15 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp6;
 839#line 46
 840  cf = *mem_15;
 841  {
 842#line 49
 843  while (1) {
 844    while_2_continue: /* CIL Label */ ;
 845    {
 846#line 49
 847    __cil_tmp7 = (struct __UTAC__CFLOW_FUNC *)0;
 848#line 49
 849    __cil_tmp8 = (unsigned long )__cil_tmp7;
 850#line 49
 851    __cil_tmp9 = (unsigned long )cf;
 852#line 49
 853    if (__cil_tmp9 != __cil_tmp8) {
 854
 855    } else {
 856      goto while_2_break;
 857    }
 858    }
 859    {
 860#line 50
 861    tmp = cf;
 862#line 51
 863    __cil_tmp10 = (unsigned long )cf;
 864#line 51
 865    __cil_tmp11 = __cil_tmp10 + 16;
 866#line 51
 867    mem_16 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp11;
 868#line 51
 869    cf = *mem_16;
 870#line 52
 871    __cil_tmp12 = (void *)tmp;
 872#line 52
 873    free(__cil_tmp12);
 874    }
 875  }
 876  while_2_break: /* CIL Label */ ;
 877  }
 878#line 55
 879  __cil_tmp13 = (unsigned long )excep;
 880#line 55
 881  __cil_tmp14 = __cil_tmp13 + 24;
 882#line 55
 883  mem_17 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp14;
 884#line 55
 885  *mem_17 = (struct __UTAC__CFLOW_FUNC *)0;
 886#line 694 "libacc.c"
 887  return;
 888}
 889}
 890#line 59 "libacc.c"
 891void __utac__exception__cf_handler_reset(void *exception ) 
 892{ struct __UTAC__EXCEPTION *excep ;
 893  struct __UTAC__CFLOW_FUNC *cf ;
 894  unsigned long __cil_tmp5 ;
 895  unsigned long __cil_tmp6 ;
 896  struct __UTAC__CFLOW_FUNC *__cil_tmp7 ;
 897  unsigned long __cil_tmp8 ;
 898  unsigned long __cil_tmp9 ;
 899  int (*__cil_tmp10)(int  , int  ) ;
 900  unsigned long __cil_tmp11 ;
 901  unsigned long __cil_tmp12 ;
 902  int __cil_tmp13 ;
 903  unsigned long __cil_tmp14 ;
 904  unsigned long __cil_tmp15 ;
 905  struct __UTAC__CFLOW_FUNC **mem_16 ;
 906  int (**mem_17)(int  , int  ) ;
 907  int *mem_18 ;
 908  struct __UTAC__CFLOW_FUNC **mem_19 ;
 909
 910  {
 911#line 60
 912  excep = (struct __UTAC__EXCEPTION *)exception;
 913#line 61
 914  __cil_tmp5 = (unsigned long )excep;
 915#line 61
 916  __cil_tmp6 = __cil_tmp5 + 24;
 917#line 61
 918  mem_16 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp6;
 919#line 61
 920  cf = *mem_16;
 921  {
 922#line 64
 923  while (1) {
 924    while_3_continue: /* CIL Label */ ;
 925    {
 926#line 64
 927    __cil_tmp7 = (struct __UTAC__CFLOW_FUNC *)0;
 928#line 64
 929    __cil_tmp8 = (unsigned long )__cil_tmp7;
 930#line 64
 931    __cil_tmp9 = (unsigned long )cf;
 932#line 64
 933    if (__cil_tmp9 != __cil_tmp8) {
 934
 935    } else {
 936      goto while_3_break;
 937    }
 938    }
 939    {
 940#line 65
 941    mem_17 = (int (**)(int  , int  ))cf;
 942#line 65
 943    __cil_tmp10 = *mem_17;
 944#line 65
 945    __cil_tmp11 = (unsigned long )cf;
 946#line 65
 947    __cil_tmp12 = __cil_tmp11 + 8;
 948#line 65
 949    mem_18 = (int *)__cil_tmp12;
 950#line 65
 951    __cil_tmp13 = *mem_18;
 952#line 65
 953    (*__cil_tmp10)(4, __cil_tmp13);
 954#line 66
 955    __cil_tmp14 = (unsigned long )cf;
 956#line 66
 957    __cil_tmp15 = __cil_tmp14 + 16;
 958#line 66
 959    mem_19 = (struct __UTAC__CFLOW_FUNC **)__cil_tmp15;
 960#line 66
 961    cf = *mem_19;
 962    }
 963  }
 964  while_3_break: /* CIL Label */ ;
 965  }
 966  {
 967#line 69
 968  __utac__exception__cf_handler_free(exception);
 969  }
 970#line 732 "libacc.c"
 971  return;
 972}
 973}
 974#line 80 "libacc.c"
 975void *__utac__error_stack_mgt(void *env , int mode , int count ) ;
 976#line 80 "libacc.c"
 977static struct __ACC__ERR *head  =    (struct __ACC__ERR *)0;
 978#line 79 "libacc.c"
 979void *__utac__error_stack_mgt(void *env , int mode , int count ) 
 980{ void *retValue_acc ;
 981  struct __ACC__ERR *new ;
 982  void *tmp ;
 983  struct __ACC__ERR *temp ;
 984  struct __ACC__ERR *next ;
 985  void *excep ;
 986  unsigned long __cil_tmp10 ;
 987  unsigned long __cil_tmp11 ;
 988  unsigned long __cil_tmp12 ;
 989  unsigned long __cil_tmp13 ;
 990  void *__cil_tmp14 ;
 991  unsigned long __cil_tmp15 ;
 992  unsigned long __cil_tmp16 ;
 993  void *__cil_tmp17 ;
 994  void **mem_18 ;
 995  struct __ACC__ERR **mem_19 ;
 996  struct __ACC__ERR **mem_20 ;
 997  void **mem_21 ;
 998  struct __ACC__ERR **mem_22 ;
 999  void **mem_23 ;
1000  void **mem_24 ;
1001
1002  {
1003#line 82 "libacc.c"
1004  if (count == 0) {
1005#line 758 "libacc.c"
1006    return (retValue_acc);
1007  } else {
1008
1009  }
1010#line 86 "libacc.c"
1011  if (mode == 0) {
1012    {
1013#line 87
1014    tmp = malloc(16UL);
1015#line 87
1016    new = (struct __ACC__ERR *)tmp;
1017#line 88
1018    mem_18 = (void **)new;
1019#line 88
1020    *mem_18 = env;
1021#line 89
1022    __cil_tmp10 = (unsigned long )new;
1023#line 89
1024    __cil_tmp11 = __cil_tmp10 + 8;
1025#line 89
1026    mem_19 = (struct __ACC__ERR **)__cil_tmp11;
1027#line 89
1028    *mem_19 = head;
1029#line 90
1030    head = new;
1031#line 776 "libacc.c"
1032    retValue_acc = (void *)new;
1033    }
1034#line 778
1035    return (retValue_acc);
1036  } else {
1037
1038  }
1039#line 94 "libacc.c"
1040  if (mode == 1) {
1041#line 95
1042    temp = head;
1043    {
1044#line 98
1045    while (1) {
1046      while_4_continue: /* CIL Label */ ;
1047#line 98
1048      if (count > 1) {
1049
1050      } else {
1051        goto while_4_break;
1052      }
1053      {
1054#line 99
1055      __cil_tmp12 = (unsigned long )temp;
1056#line 99
1057      __cil_tmp13 = __cil_tmp12 + 8;
1058#line 99
1059      mem_20 = (struct __ACC__ERR **)__cil_tmp13;
1060#line 99
1061      next = *mem_20;
1062#line 100
1063      mem_21 = (void **)temp;
1064#line 100
1065      excep = *mem_21;
1066#line 101
1067      __cil_tmp14 = (void *)temp;
1068#line 101
1069      free(__cil_tmp14);
1070#line 102
1071      __utac__exception__cf_handler_reset(excep);
1072#line 103
1073      temp = next;
1074#line 104
1075      count = count - 1;
1076      }
1077    }
1078    while_4_break: /* CIL Label */ ;
1079    }
1080    {
1081#line 107
1082    __cil_tmp15 = (unsigned long )temp;
1083#line 107
1084    __cil_tmp16 = __cil_tmp15 + 8;
1085#line 107
1086    mem_22 = (struct __ACC__ERR **)__cil_tmp16;
1087#line 107
1088    head = *mem_22;
1089#line 108
1090    mem_23 = (void **)temp;
1091#line 108
1092    excep = *mem_23;
1093#line 109
1094    __cil_tmp17 = (void *)temp;
1095#line 109
1096    free(__cil_tmp17);
1097#line 110
1098    __utac__exception__cf_handler_reset(excep);
1099#line 820 "libacc.c"
1100    retValue_acc = excep;
1101    }
1102#line 822
1103    return (retValue_acc);
1104  } else {
1105
1106  }
1107#line 114
1108  if (mode == 2) {
1109#line 118 "libacc.c"
1110    if (head) {
1111#line 831
1112      mem_24 = (void **)head;
1113#line 831
1114      retValue_acc = *mem_24;
1115#line 833
1116      return (retValue_acc);
1117    } else {
1118#line 837 "libacc.c"
1119      retValue_acc = (void *)0;
1120#line 839
1121      return (retValue_acc);
1122    }
1123  } else {
1124
1125  }
1126#line 846 "libacc.c"
1127  return (retValue_acc);
1128}
1129}
1130#line 122 "libacc.c"
1131void *__utac__get_this_arg(int i , struct JoinPoint *this ) 
1132{ void *retValue_acc ;
1133  unsigned long __cil_tmp4 ;
1134  unsigned long __cil_tmp5 ;
1135  int __cil_tmp6 ;
1136  int __cil_tmp7 ;
1137  unsigned long __cil_tmp8 ;
1138  unsigned long __cil_tmp9 ;
1139  void **__cil_tmp10 ;
1140  void **__cil_tmp11 ;
1141  int *mem_12 ;
1142  void ***mem_13 ;
1143
1144  {
1145#line 123
1146  if (i > 0) {
1147    {
1148#line 123
1149    __cil_tmp4 = (unsigned long )this;
1150#line 123
1151    __cil_tmp5 = __cil_tmp4 + 16;
1152#line 123
1153    mem_12 = (int *)__cil_tmp5;
1154#line 123
1155    __cil_tmp6 = *mem_12;
1156#line 123
1157    if (i <= __cil_tmp6) {
1158
1159    } else {
1160      {
1161#line 123
1162      __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
1163                    123U, "__utac__get_this_arg");
1164      }
1165    }
1166    }
1167  } else {
1168    {
1169#line 123
1170    __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
1171                  123U, "__utac__get_this_arg");
1172    }
1173  }
1174#line 870 "libacc.c"
1175  __cil_tmp7 = i - 1;
1176#line 870
1177  __cil_tmp8 = (unsigned long )this;
1178#line 870
1179  __cil_tmp9 = __cil_tmp8 + 8;
1180#line 870
1181  mem_13 = (void ***)__cil_tmp9;
1182#line 870
1183  __cil_tmp10 = *mem_13;
1184#line 870
1185  __cil_tmp11 = __cil_tmp10 + __cil_tmp7;
1186#line 870
1187  retValue_acc = *__cil_tmp11;
1188#line 872
1189  return (retValue_acc);
1190#line 879
1191  return (retValue_acc);
1192}
1193}
1194#line 129 "libacc.c"
1195char const   *__utac__get_this_argtype(int i , struct JoinPoint *this ) 
1196{ char const   *retValue_acc ;
1197  unsigned long __cil_tmp4 ;
1198  unsigned long __cil_tmp5 ;
1199  int __cil_tmp6 ;
1200  int __cil_tmp7 ;
1201  unsigned long __cil_tmp8 ;
1202  unsigned long __cil_tmp9 ;
1203  char const   **__cil_tmp10 ;
1204  char const   **__cil_tmp11 ;
1205  int *mem_12 ;
1206  char const   ***mem_13 ;
1207
1208  {
1209#line 131
1210  if (i > 0) {
1211    {
1212#line 131
1213    __cil_tmp4 = (unsigned long )this;
1214#line 131
1215    __cil_tmp5 = __cil_tmp4 + 16;
1216#line 131
1217    mem_12 = (int *)__cil_tmp5;
1218#line 131
1219    __cil_tmp6 = *mem_12;
1220#line 131
1221    if (i <= __cil_tmp6) {
1222
1223    } else {
1224      {
1225#line 131
1226      __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
1227                    131U, "__utac__get_this_argtype");
1228      }
1229    }
1230    }
1231  } else {
1232    {
1233#line 131
1234    __assert_fail("i > 0 && i <= this->argsCount", "libacc.c",
1235                  131U, "__utac__get_this_argtype");
1236    }
1237  }
1238#line 903 "libacc.c"
1239  __cil_tmp7 = i - 1;
1240#line 903
1241  __cil_tmp8 = (unsigned long )this;
1242#line 903
1243  __cil_tmp9 = __cil_tmp8 + 24;
1244#line 903
1245  mem_13 = (char const   ***)__cil_tmp9;
1246#line 903
1247  __cil_tmp10 = *mem_13;
1248#line 903
1249  __cil_tmp11 = __cil_tmp10 + __cil_tmp7;
1250#line 903
1251  retValue_acc = *__cil_tmp11;
1252#line 905
1253  return (retValue_acc);
1254#line 912
1255  return (retValue_acc);
1256}
1257}
1258#line 1 "Environment.o"
1259#pragma merger(0,"Environment.i","")
1260#line 9 "Environment.c"
1261int waterLevel  =    1;
1262#line 12 "Environment.c"
1263int methaneLevelCritical  =    0;
1264#line 15 "Environment.c"
1265void lowerWaterLevel(void) 
1266{ 
1267
1268  {
1269#line 19
1270  if (waterLevel > 0) {
1271#line 17
1272    waterLevel = waterLevel - 1;
1273  } else {
1274
1275  }
1276#line 85 "Environment.c"
1277  return;
1278}
1279}
1280#line 22 "Environment.c"
1281void waterRise(void) 
1282{ 
1283
1284  {
1285#line 26
1286  if (waterLevel < 2) {
1287#line 24
1288    waterLevel = waterLevel + 1;
1289  } else {
1290
1291  }
1292#line 108 "Environment.c"
1293  return;
1294}
1295}
1296#line 29 "Environment.c"
1297void changeMethaneLevel(void) 
1298{ 
1299
1300  {
1301#line 34
1302  if (methaneLevelCritical) {
1303#line 31
1304    methaneLevelCritical = 0;
1305  } else {
1306#line 33
1307    methaneLevelCritical = 1;
1308  }
1309#line 134 "Environment.c"
1310  return;
1311}
1312}
1313#line 38 "Environment.c"
1314int isMethaneLevelCritical(void) 
1315{ int retValue_acc ;
1316
1317  {
1318#line 152 "Environment.c"
1319  retValue_acc = methaneLevelCritical;
1320#line 154
1321  return (retValue_acc);
1322#line 161
1323  return (retValue_acc);
1324}
1325}
1326#line 44 "Environment.c"
1327void printEnvironment(void) 
1328{ 
1329
1330  {
1331  {
1332#line 45
1333  printf("Env(Water:%i", waterLevel);
1334#line 46
1335  printf(",Meth:");
1336  }
1337#line 47
1338  if (methaneLevelCritical) {
1339    {
1340#line 48
1341    printf("CRIT");
1342    }
1343  } else {
1344    {
1345#line 49
1346    printf("OK");
1347    }
1348  }
1349  {
1350#line 51
1351  printf(")");
1352  }
1353#line 193 "Environment.c"
1354  return;
1355}
1356}
1357#line 55 "Environment.c"
1358int getWaterLevel(void) 
1359{ int retValue_acc ;
1360
1361  {
1362#line 211 "Environment.c"
1363  retValue_acc = waterLevel;
1364#line 213
1365  return (retValue_acc);
1366#line 220
1367  return (retValue_acc);
1368}
1369}
1370#line 58 "Environment.c"
1371int isHighWaterSensorDry(void) 
1372{ int retValue_acc ;
1373
1374  {
1375#line 65 "Environment.c"
1376  if (waterLevel < 2) {
1377#line 245
1378    retValue_acc = 1;
1379#line 247
1380    return (retValue_acc);
1381  } else {
1382#line 253 "Environment.c"
1383    retValue_acc = 0;
1384#line 255
1385    return (retValue_acc);
1386  }
1387#line 262 "Environment.c"
1388  return (retValue_acc);
1389}
1390}
1391#line 67 "Environment.c"
1392int isLowWaterSensorDry(void) 
1393{ int retValue_acc ;
1394
1395  {
1396#line 284 "Environment.c"
1397  retValue_acc = waterLevel == 0;
1398#line 286
1399  return (retValue_acc);
1400#line 293
1401  return (retValue_acc);
1402}
1403}