/* Generated by CIL v. 1.7.0 */
/* print_CIL_Input is false */

struct _1_main_1_opaque_NodeStruct;
struct __sFILE;
struct __sFILEX;
struct __sbuf;
struct timespec;
struct timeval;
extern int pthread_cond_signal(int *cond ) ;
extern void exit(int status ) ;
typedef long long __int64_t;
extern int fclose(void *stream ) ;
extern int fseek(struct __sFILE *stream , long offs , int whence ) ;
extern int close(int filedes ) ;
typedef struct __sFILE FILE;
extern int __swbuf(int  , FILE * ) ;
extern int pthread_create(void *thread , void *attr , void *start_routine , void *arg ) ;
char **_global_argv  =    (char **)0;
extern void *dlsym(void *handle , char *symbol ) ;
extern int unlink(char const   *filename ) ;
extern int fcntl(int filedes , int cmd  , ...) ;
extern int pthread_mutex_lock(int *mutex ) ;
struct timeval {
   long tv_sec ;
   int tv_usec ;
};
extern int pthread_cond_init(int *cond , int *attr ) ;
extern unsigned long strtoul(char const   *str , char const   *endptr , int base ) ;
struct _1_main_1_opaque_NodeStruct {
   struct _1_main_1_opaque_NodeStruct *next ;
   int data ;
   struct _1_main_1_opaque_NodeStruct *prev ;
};
struct _1_main_1_opaque_NodeStruct *_1_main_1_opaque_list_2  =    (struct _1_main_1_opaque_NodeStruct *)0;
typedef __int64_t __darwin_off_t;
extern int raise(int sig ) ;
struct _1_main_1_opaque_NodeStruct *_1_main_1_opaque_list_1  =    (struct _1_main_1_opaque_NodeStruct *)0;
extern void abort() ;
extern int atoi(char const   *s ) ;
void fac(int n ) ;
extern void *malloc(unsigned long size ) ;
extern double ceil(double x ) ;
extern int getpagesize() ;
extern int posix_memalign(void **memptr , unsigned long alignment , unsigned long size ) ;
extern int pthread_cond_broadcast(int *cond ) ;
extern int pthread_join(void *thread , void **value_ptr ) ;
extern int rand() ;
extern int pthread_barrier_destroy(int *barrier ) ;
extern void free(void *ptr ) ;
extern unsigned long strlen(char const   *s ) ;
extern int ptrace(int request , void *pid , void *addr , int data ) ;
int main(int argc , char **argv , char **_formal_envp ) ;
extern long write(int filedes , void *buf , unsigned long nbyte ) ;
typedef long __darwin_time_t;
struct timespec {
   __darwin_time_t tv_sec ;
   long tv_nsec ;
};
extern long strtol(char const   *str , char const   *endptr , int base ) ;
extern int gettimeofday(struct timeval *tv , void *tz ) ;
int _global_argc  =    0;
char **_global_envp  =    (char **)0;
void megaInit(void) ;
extern int fscanf(struct __sFILE *stream , char const   *format  , ...) ;
extern int ( /* format attribute */  printf)(char const   * __restrict    , ...) ;
void fib(int n ) ;
extern long clock(void) ;
extern int scanf(char const   *format  , ...) ;
extern void perror(char const   *str ) ;
extern int mprotect(void *addr , unsigned long len , int prot ) ;
extern int pthread_barrier_init(int *barrier , int *attr , unsigned int count ) ;
extern int nanosleep(struct timespec  const  *__rqtp , struct timespec *__rmtp )  __asm__("_nanosleep")  ;
extern long read(int filedes , void *buf , unsigned long nbyte ) ;
extern int pthread_mutex_unlock(int *mutex ) ;
typedef __darwin_off_t fpos_t;
extern int pthread_cond_wait(int *cond , int *mutex ) ;
extern float strtof(char const   *str , char const   *endptr ) ;
extern int gethostname(char *name , unsigned long namelen ) ;
struct __sbuf {
   unsigned char *_base ;
   int _size ;
};
struct __sFILE {
   unsigned char *_p ;
   int _r ;
   int _w ;
   short _flags ;
   short _file ;
   struct __sbuf _bf ;
   int _lbfsize ;
   void *_cookie ;
   int (*_close)(void * ) ;
   int (*_read)(void * , char * , int  ) ;
   fpos_t (*_seek)(void * , fpos_t  , int  ) ;
   int (*_write)(void * , char const   * , int  ) ;
   struct __sbuf _ub ;
   struct __sFILEX *_extra ;
   int _ur ;
   unsigned char _ubuf[3] ;
   unsigned char _nbuf[1] ;
   struct __sbuf _lb ;
   int _blksize ;
   fpos_t _offset ;
};
extern void qsort(void *base , unsigned long nel , unsigned long width , int (*compar)(void *a ,
                                                                                       void *b ) ) ;
extern unsigned long strnlen(char const   *s , unsigned long maxlen ) ;
extern double strtod(char const   *str , char const   *endptr ) ;
extern int pthread_mutex_init(int *mutex , int *attr ) ;
struct _1_main_1_opaque_NodeStruct *_1_main_1_opaque_ptr_2  =    (struct _1_main_1_opaque_NodeStruct *)0;
struct _1_main_1_opaque_NodeStruct *_1_main_1_opaque_ptr_1  =    (struct _1_main_1_opaque_NodeStruct *)0;
extern int strcmp(char const   *a , char const   *b ) ;
extern void *fopen(char const   *filename , char const   *mode ) ;
extern double difftime(long tv1 , long tv0 ) ;
extern void signal(int sig , void *func ) ;
extern long time(long *tloc ) ;
__inline int ( __attribute__((__always_inline__)) __sputc)(int _c , FILE *_p ) ;
extern int fprintf(struct __sFILE *stream , char const   *format  , ...) ;
extern int strncmp(char const   *s1 , char const   *s2 , unsigned long maxlen ) ;
extern double sqrt(double x ) ;
extern int open(char const   *filename , int oflag  , ...) ;
extern int pthread_barrier_wait(int *barrier ) ;
extern double log(double x ) ;
extern int snprintf(char *str , unsigned long size , char const   *format  , ...) ;
extern void *memcpy(void *s1 , void const   *s2 , unsigned long size ) ;
typedef struct _1_main_1_opaque_NodeStruct *_1_main_1_opaque_StructureType;
int main(int argc , char **argv , char **_formal_envp ) 
{ 
  struct _1_main_1_opaque_NodeStruct *p5 ;
  int r6 ;
  struct _1_main_1_opaque_NodeStruct *p7 ;
  int r8 ;
  struct _1_main_1_opaque_NodeStruct *p9 ;

  {
  megaInit();
  _global_argc = argc;
  _global_argv = argv;
  _global_envp = _formal_envp;

  p5 = (struct _1_main_1_opaque_NodeStruct *)malloc(sizeof(struct _1_main_1_opaque_NodeStruct ));
  p5->next = p5;
  p5->prev = p5;
  _1_main_1_opaque_list_1 = p5;
  r8 = rand();
  p9 = (struct _1_main_1_opaque_NodeStruct *)malloc(sizeof(struct _1_main_1_opaque_NodeStruct ));
  p9->data = 0 * r8;
  p9->next = _1_main_1_opaque_list_1->next;
  p9->prev = _1_main_1_opaque_list_1;
  (_1_main_1_opaque_list_1->next)->prev = p9;
  _1_main_1_opaque_list_1->next = p9;
  r6 = rand();
  p7 = (struct _1_main_1_opaque_NodeStruct *)malloc(sizeof(struct _1_main_1_opaque_NodeStruct ));
  p7->data = 1 * r6;
  p7->next = _1_main_1_opaque_list_1->next;
  p7->prev = _1_main_1_opaque_list_1;
  (_1_main_1_opaque_list_1->next)->prev = p7;
  _1_main_1_opaque_list_1->next = p7;
  _1_main_1_opaque_ptr_1 = _1_main_1_opaque_list_1->next;
  _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_1;
  _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
  fac(1);
  fib(1);
  fac(5);
  fib(5);
  fac(10);
  fib(10);
  return (0);
}
}
void megaInit(void) 
{ 


  {

}
}
__inline int ( __attribute__((__always_inline__)) __sputc)(int _c , FILE *_p ) 
{ 
  unsigned char *tmp ;
  unsigned char tmp___0 ;
  int tmp___1 ;

  {
  (_p->_w) --;
  if (_p->_w >= 0) {
    tmp = _p->_p;
    (_p->_p) ++;
    tmp___0 = (unsigned char )_c;
    *tmp = tmp___0;
    return ((int )tmp___0);
  } else
  if (_p->_w >= _p->_lbfsize) {
    if ((int )((char )_c) != 10) {
      tmp = _p->_p;
      (_p->_p) ++;
      tmp___0 = (unsigned char )_c;
      *tmp = tmp___0;
      return ((int )tmp___0);
    } else {
      tmp___1 = __swbuf(_c, _p);
      return (tmp___1);
    }
  } else {
    tmp___1 = __swbuf(_c, _p);
    return (tmp___1);
  }
}
}
void fac(int n ) 
{ 
  int s ;
  int i ;

  {
  s = 1;
  i = 2;
  while (i <= n) {
    s *= i;
    i ++;
  }
  printf((char const   */* __restrict  */)"fac(%i)=%i\n", n, s);
  return;
}
}
void fib(int n ) 
{ 
  int a ;
  int b ;
  int s ;
  int i ;

  {
  if (_1_main_1_opaque_ptr_1 != _1_main_1_opaque_ptr_2) {

  } else {
    fac(n);
  }
  {  /* __blockattribute__(__ATOMIC__)*/ 
  _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next;
  _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
  }
  {  /* __blockattribute__(__ATOMIC__)*/ 
  _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next;
  _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
  }

  if (_1_main_1_opaque_ptr_1 != _1_main_1_opaque_ptr_2) {
    if (_1_main_1_opaque_ptr_1 == _1_main_1_opaque_ptr_2) {
      a = a;
      b = 1 >> 3;
      s = 1 >> a;
      i = 1 * 3;
    } else {
      a = 0;
      b = 1;
      s = 1;
      i = 1;
    }
  } else
  if ((_1_main_1_opaque_ptr_1 == _1_main_1_opaque_ptr_2) <= s) {
    a = n;
    b = 1 ^ n;
    s = 1 / s;
    i = 1 & n;
  } else {
    a = 2;
    b = n;
    s = b;
    i = 1 * 3 - s;
  }
  if (_1_main_1_opaque_ptr_1 != _1_main_1_opaque_ptr_2) {
    {  /* __blockattribute__(__ATOMIC__)*/ 
    _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next;
    _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
    }

  } else {
    {  /* __blockattribute__(__ATOMIC__)*/ 
    _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next - 1;
    _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next + -1;
    }

  }

  while (1) {
    if (_1_main_1_opaque_ptr_1 != _1_main_1_opaque_ptr_2) {
      {  /* __blockattribute__(__ATOMIC__)*/ 
      _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next;
      _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
      }

    } else {
      __asm__  volatile   (".byte 0xe3,0xb5,0xef,0x53,0xff,0xcd":);
    }
    {  /* __blockattribute__(__ATOMIC__)*/ 
    _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next;
    _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
    }

    if (_1_main_1_opaque_ptr_1 == _1_main_1_opaque_ptr_2) {

    } else {
      {  /* __blockattribute__(__ATOMIC__)*/ 
      _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next;
      _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
      }

    }

    if (! (i < n)) {
      {
      if (_1_main_1_opaque_ptr_1 == _1_main_1_opaque_ptr_2) {

      } else
      if (_1_main_1_opaque_ptr_1 != _1_main_1_opaque_ptr_2) {
        if (_1_main_1_opaque_ptr_1 != _1_main_1_opaque_ptr_2) {

        } else {
          fib(a);
        }
      } else {
        __asm__  volatile   (".byte 0xb9,0xcd,0xcb,0x62,0xa0":);
      }
      }
      {  /* __blockattribute__(__ATOMIC__)*/ 
      _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next;
      _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
      }

      break;
    }
    {  /* __blockattribute__(__ATOMIC__)*/ 
    _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next;
    _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
    }
    {  /* __blockattribute__(__ATOMIC__)*/ 
    _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next;
    _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
    }
    s = a + b;
    a = b;
    b = s;
    i ++;
  }
  {  /* __blockattribute__(__ATOMIC__)*/ 
  _1_main_1_opaque_ptr_1 = _1_main_1_opaque_ptr_1->next;
  _1_main_1_opaque_ptr_2 = _1_main_1_opaque_ptr_2->next;
  }

  if (_1_main_1_opaque_ptr_1 != _1_main_1_opaque_ptr_2) {
    printf((char const   */* __restrict  */)"fib(%i)=%i\n", n, s);
  } else {
    printf((char const   */* __restrict  */)"fib(%i)=%i\n" - 1, n + 4, 10);
  }
  return;
}
}
