/* Generated by Frama-C */
#include "stddef.h"
#include "stdio.h"
unsigned long long my_pow(unsigned int x, unsigned int n)
{
  unsigned long long __retres;
  int tmp;
  unsigned long long tmp_0;
  if (n <= (unsigned int)1) {
    __retres = (unsigned long long)1;
    goto return_label;
  }
  tmp_0 = my_pow(x,n / (unsigned int)2);
  tmp = (int)tmp_0;
  /*@ assert Eva: signed_overflow: -2147483648 ≤ tmp * tmp; */
  /*@ assert Eva: signed_overflow: tmp * tmp ≤ 2147483647; */
  tmp *= tmp;
  if (n % (unsigned int)2 == (unsigned int)0) {
    __retres = (unsigned long long)tmp;
    goto return_label;
  }
  __retres = (unsigned long long)(x * (unsigned int)tmp);
  return_label: return __retres;
}

int main(void)
{
  int __retres;
  unsigned long long x = my_pow((unsigned int)2,(unsigned int)63);
  {
    __e_acsl_mpz_t __gen_e_acsl_;
    __e_acsl_mpz_t __gen_e_acsl_x;
    __e_acsl_mpz_t __gen_e_acsl_mul;
    __e_acsl_mpz_t __gen_e_acsl__2;
    __e_acsl_mpz_t __gen_e_acsl_add;
    __e_acsl_mpz_t __gen_e_acsl__3;
    int __gen_e_acsl_mod_guard;
    __e_acsl_mpz_t __gen_e_acsl_mod;
    long __gen_e_acsl__4;
    __gmpz_init_set_si(__gen_e_acsl_,2L);
    __gmpz_init(__gen_e_acsl_x);
    __gmpz_import(__gen_e_acsl_x,(size_t)1,1,(size_t)8,0,(size_t)0,
                  (void const *)(& x));
    __gmpz_init(__gen_e_acsl_mul);
    __gmpz_mul(__gen_e_acsl_mul,(__e_acsl_mpz_struct const *)(__gen_e_acsl_),
               (__e_acsl_mpz_struct const *)(__gen_e_acsl_x));
    __gmpz_init_set_si(__gen_e_acsl__2,1L);
    __gmpz_init(__gen_e_acsl_add);
    __gmpz_add(__gen_e_acsl_add,
               (__e_acsl_mpz_struct const *)(__gen_e_acsl_mul),
               (__e_acsl_mpz_struct const *)(__gen_e_acsl__2));
    __gmpz_init_set_si(__gen_e_acsl__3,0L);
    __gen_e_acsl_mod_guard = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_),
                                        (__e_acsl_mpz_struct const *)(__gen_e_acsl__3));
    __gmpz_init(__gen_e_acsl_mod);
    /*@ assert E_ACSL: 2 ≢ 0; */
    __e_acsl_assert(__gen_e_acsl_mod_guard != 0,"Assertion","main","2 != 0",
                    "tests/arith/longlong.i",17);
    __gmpz_tdiv_r(__gen_e_acsl_mod,
                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_add),
                  (__e_acsl_mpz_struct const *)(__gen_e_acsl_));
    __gen_e_acsl__4 = __gmpz_get_si((__e_acsl_mpz_struct const *)(__gen_e_acsl_mod));
    __e_acsl_assert(__gen_e_acsl__4 == 1L,"Assertion","main",
                    "(2 * x + 1) % 2 == 1","tests/arith/longlong.i",17);
    __gmpz_clear(__gen_e_acsl_);
    __gmpz_clear(__gen_e_acsl_x);
    __gmpz_clear(__gen_e_acsl_mul);
    __gmpz_clear(__gen_e_acsl__2);
    __gmpz_clear(__gen_e_acsl_add);
    __gmpz_clear(__gen_e_acsl__3);
    __gmpz_clear(__gen_e_acsl_mod);
  }
  /*@ assert (2 * x + 1) % 2 ≡ 1; */ ;
  __retres = 0;
  return __retres;
}


