[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [csmith-bugs] Missing headers on Windows



"George" == George Russell <grrussel@googlemail.com> writes:

	George> I built csmith from the MSVC solution files on Windows.
	George> However, when attempting to compile generated test programs,
	George> the compilations fail because of missing header files.  It
	George> seems like these are generated from the makefiles, which are
	George> not invoked in simply unzipping and building using MSVC.

This is a good point.  We should probably just include all of these generated
headers in the packaged distributions.  I will make this change.

In the meantime, I've attached copies of these generated headers to this
message.  These should get you going.

Thank you for your bug report! ---

Eric.

#ifndef SAFE_MATH_H
#define SAFE_MATH_H









STATIC int8_t
FUNC_NAME(unary_minus_func_int8_t_s)(int8_t si LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT8_MAX>=INT_MAX)
    (si==INT8_MIN) ?
    (UNDEFINED(si)) :
#endif
#endif
    -si;
}

STATIC int8_t
FUNC_NAME(add_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT8_MAX>=INT_MAX)
    (((si1>0) && (si2>0) && (si1 > (INT8_MAX-si2))) || ((si1<0) && (si2<0) && (si1 < (INT8_MIN-si2)))) ?
    (UNDEFINED(si1)) :
#endif
#endif
    (si1 + si2);
}

STATIC int8_t
FUNC_NAME(sub_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT8_MAX>=INT_MAX)
    (((si1^si2) & (((si1 ^ ((si1^si2) & (~INT8_MAX)))-si2)^si2)) < 0) ? 
    (UNDEFINED(si1)) : 
#endif
#endif
    (si1 - si2);
}

STATIC int8_t
FUNC_NAME(mul_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT8_MAX>=INT_MAX)
    (((si1 > 0) && (si2 > 0) && (si1 > (INT8_MAX / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < (INT8_MIN / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < (INT8_MIN / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < (INT8_MAX / si1)))) ? 
    (UNDEFINED(si1)) : 
#endif
#endif
    si1 * si2;
}

STATIC int8_t
FUNC_NAME(mod_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((si2 == 0) || ((si1 == INT8_MIN) && (si2 == (-1)))) ? 
    (UNDEFINED(si1)) : 
#endif
    (si1 % si2);
}

STATIC int8_t
FUNC_NAME(div_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((si2 == 0) || ((si1 == INT8_MIN) && (si2 == (-1)))) ? 
    (UNDEFINED(si1)) : 
#endif
    (si1 / si2);
}

STATIC int8_t
FUNC_NAME(lshift_func_int8_t_s_s)(int8_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > (INT8_MAX >> ((int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((int)right));
}

STATIC int8_t
FUNC_NAME(lshift_func_int8_t_s_u)(int8_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((unsigned int)right) >= 32) || (left > (INT8_MAX >> ((unsigned int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((unsigned int)right));
}

STATIC int8_t
FUNC_NAME(rshift_func_int8_t_s_s)(int8_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((int)right));
}

STATIC int8_t
FUNC_NAME(rshift_func_int8_t_s_u)(int8_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((unsigned int)right) >= 32)) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((unsigned int)right));
}



STATIC int16_t
FUNC_NAME(unary_minus_func_int16_t_s)(int16_t si LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT16_MAX>=INT_MAX)
    (si==INT16_MIN) ?
    (UNDEFINED(si)) :
#endif
#endif
    -si;
}

STATIC int16_t
FUNC_NAME(add_func_int16_t_s_s)(int16_t si1, int16_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT16_MAX>=INT_MAX)
    (((si1>0) && (si2>0) && (si1 > (INT16_MAX-si2))) || ((si1<0) && (si2<0) && (si1 < (INT16_MIN-si2)))) ?
    (UNDEFINED(si1)) :
#endif
#endif
    (si1 + si2);
}

STATIC int16_t
FUNC_NAME(sub_func_int16_t_s_s)(int16_t si1, int16_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT16_MAX>=INT_MAX)
    (((si1^si2) & (((si1 ^ ((si1^si2) & (~INT16_MAX)))-si2)^si2)) < 0) ? 
    (UNDEFINED(si1)) : 
#endif
#endif
    (si1 - si2);
}

STATIC int16_t
FUNC_NAME(mul_func_int16_t_s_s)(int16_t si1, int16_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT16_MAX>=INT_MAX)
    (((si1 > 0) && (si2 > 0) && (si1 > (INT16_MAX / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < (INT16_MIN / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < (INT16_MIN / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < (INT16_MAX / si1)))) ? 
    (UNDEFINED(si1)) : 
#endif
#endif
    si1 * si2;
}

STATIC int16_t
FUNC_NAME(mod_func_int16_t_s_s)(int16_t si1, int16_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((si2 == 0) || ((si1 == INT16_MIN) && (si2 == (-1)))) ? 
    (UNDEFINED(si1)) : 
#endif
    (si1 % si2);
}

STATIC int16_t
FUNC_NAME(div_func_int16_t_s_s)(int16_t si1, int16_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((si2 == 0) || ((si1 == INT16_MIN) && (si2 == (-1)))) ? 
    (UNDEFINED(si1)) : 
#endif
    (si1 / si2);
}

STATIC int16_t
FUNC_NAME(lshift_func_int16_t_s_s)(int16_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > (INT16_MAX >> ((int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((int)right));
}

STATIC int16_t
FUNC_NAME(lshift_func_int16_t_s_u)(int16_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((unsigned int)right) >= 32) || (left > (INT16_MAX >> ((unsigned int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((unsigned int)right));
}

STATIC int16_t
FUNC_NAME(rshift_func_int16_t_s_s)(int16_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((int)right));
}

STATIC int16_t
FUNC_NAME(rshift_func_int16_t_s_u)(int16_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((unsigned int)right) >= 32)) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((unsigned int)right));
}



STATIC int32_t
FUNC_NAME(unary_minus_func_int32_t_s)(int32_t si LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT32_MAX>=INT_MAX)
    (si==INT32_MIN) ?
    (UNDEFINED(si)) :
#endif
#endif
    -si;
}

STATIC int32_t
FUNC_NAME(add_func_int32_t_s_s)(int32_t si1, int32_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT32_MAX>=INT_MAX)
    (((si1>0) && (si2>0) && (si1 > (INT32_MAX-si2))) || ((si1<0) && (si2<0) && (si1 < (INT32_MIN-si2)))) ?
    (UNDEFINED(si1)) :
#endif
#endif
    (si1 + si2);
}

STATIC int32_t
FUNC_NAME(sub_func_int32_t_s_s)(int32_t si1, int32_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT32_MAX>=INT_MAX)
    (((si1^si2) & (((si1 ^ ((si1^si2) & (~INT32_MAX)))-si2)^si2)) < 0) ? 
    (UNDEFINED(si1)) : 
#endif
#endif
    (si1 - si2);
}

STATIC int32_t
FUNC_NAME(mul_func_int32_t_s_s)(int32_t si1, int32_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT32_MAX>=INT_MAX)
    (((si1 > 0) && (si2 > 0) && (si1 > (INT32_MAX / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < (INT32_MIN / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < (INT32_MIN / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < (INT32_MAX / si1)))) ? 
    (UNDEFINED(si1)) : 
#endif
#endif
    si1 * si2;
}

STATIC int32_t
FUNC_NAME(mod_func_int32_t_s_s)(int32_t si1, int32_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((si2 == 0) || ((si1 == INT32_MIN) && (si2 == (-1)))) ? 
    (UNDEFINED(si1)) : 
#endif
    (si1 % si2);
}

STATIC int32_t
FUNC_NAME(div_func_int32_t_s_s)(int32_t si1, int32_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((si2 == 0) || ((si1 == INT32_MIN) && (si2 == (-1)))) ? 
    (UNDEFINED(si1)) : 
#endif
    (si1 / si2);
}

STATIC int32_t
FUNC_NAME(lshift_func_int32_t_s_s)(int32_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > (INT32_MAX >> ((int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((int)right));
}

STATIC int32_t
FUNC_NAME(lshift_func_int32_t_s_u)(int32_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((unsigned int)right) >= 32) || (left > (INT32_MAX >> ((unsigned int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((unsigned int)right));
}

STATIC int32_t
FUNC_NAME(rshift_func_int32_t_s_s)(int32_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((int)right));
}

STATIC int32_t
FUNC_NAME(rshift_func_int32_t_s_u)(int32_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((unsigned int)right) >= 32)) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((unsigned int)right));
}

#ifndef NO_LONGLONG


STATIC int64_t
FUNC_NAME(unary_minus_func_int64_t_s)(int64_t si LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT64_MAX>=INT_MAX)
    (si==INT64_MIN) ?
    (UNDEFINED(si)) :
#endif
#endif
    -si;
}

STATIC int64_t
FUNC_NAME(add_func_int64_t_s_s)(int64_t si1, int64_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT64_MAX>=INT_MAX)
    (((si1>0) && (si2>0) && (si1 > (INT64_MAX-si2))) || ((si1<0) && (si2<0) && (si1 < (INT64_MIN-si2)))) ?
    (UNDEFINED(si1)) :
#endif
#endif
    (si1 + si2);
}

STATIC int64_t
FUNC_NAME(sub_func_int64_t_s_s)(int64_t si1, int64_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT64_MAX>=INT_MAX)
    (((si1^si2) & (((si1 ^ ((si1^si2) & (~INT64_MAX)))-si2)^si2)) < 0) ? 
    (UNDEFINED(si1)) : 
#endif
#endif
    (si1 - si2);
}

STATIC int64_t
FUNC_NAME(mul_func_int64_t_s_s)(int64_t si1, int64_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
#if (INT64_MAX>=INT_MAX)
    (((si1 > 0) && (si2 > 0) && (si1 > (INT64_MAX / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < (INT64_MIN / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < (INT64_MIN / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < (INT64_MAX / si1)))) ? 
    (UNDEFINED(si1)) : 
#endif
#endif
    si1 * si2;
}

STATIC int64_t
FUNC_NAME(mod_func_int64_t_s_s)(int64_t si1, int64_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((si2 == 0) || ((si1 == INT64_MIN) && (si2 == (-1)))) ? 
    (UNDEFINED(si1)) : 
#endif
    (si1 % si2);
}

STATIC int64_t
FUNC_NAME(div_func_int64_t_s_s)(int64_t si1, int64_t si2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((si2 == 0) || ((si1 == INT64_MIN) && (si2 == (-1)))) ? 
    (UNDEFINED(si1)) : 
#endif
    (si1 / si2);
}

STATIC int64_t
FUNC_NAME(lshift_func_int64_t_s_s)(int64_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > (INT64_MAX >> ((int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((int)right));
}

STATIC int64_t
FUNC_NAME(lshift_func_int64_t_s_u)(int64_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((unsigned int)right) >= 32) || (left > (INT64_MAX >> ((unsigned int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((unsigned int)right));
}

STATIC int64_t
FUNC_NAME(rshift_func_int64_t_s_s)(int64_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((int)right));
}

STATIC int64_t
FUNC_NAME(rshift_func_int64_t_s_u)(int64_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((left < 0) || (((unsigned int)right) >= 32)) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((unsigned int)right));
}

#endif





STATIC uint8_t
FUNC_NAME(unary_minus_func_uint8_t_u)(uint8_t ui LOG_INDEX)
{
  LOG_EXEC
  return -ui;
}

STATIC uint8_t
FUNC_NAME(add_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ui1 + ui2;
}

STATIC uint8_t
FUNC_NAME(sub_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ui1 - ui2;
}

STATIC uint8_t
FUNC_NAME(mul_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ((unsigned int)ui1) * ((unsigned int)ui2);
}

STATIC uint8_t
FUNC_NAME(mod_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (ui2 == 0) ? 
    (UNDEFINED(ui1)) : 
#endif
    (ui1 % ui2);
}

STATIC uint8_t
FUNC_NAME(div_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (ui2 == 0) ? 
    (UNDEFINED(ui1)) : 
#endif
    (ui1 / ui2);
}

STATIC uint8_t
FUNC_NAME(lshift_func_uint8_t_u_s)(uint8_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((int)right) < 0) || (((int)right) >= 32) || (left > (UINT8_MAX >> ((int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((int)right));
}

STATIC uint8_t
FUNC_NAME(lshift_func_uint8_t_u_u)(uint8_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((unsigned int)right) >= 32) || (left > (UINT8_MAX >> ((unsigned int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((unsigned int)right));
}

STATIC uint8_t
FUNC_NAME(rshift_func_uint8_t_u_s)(uint8_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((int)right) < 0) || (((int)right) >= 32)) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((int)right));
}

STATIC uint8_t
FUNC_NAME(rshift_func_uint8_t_u_u)(uint8_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (((unsigned int)right) >= 32) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((unsigned int)right));
}



STATIC uint16_t
FUNC_NAME(unary_minus_func_uint16_t_u)(uint16_t ui LOG_INDEX)
{
  LOG_EXEC
  return -ui;
}

STATIC uint16_t
FUNC_NAME(add_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ui1 + ui2;
}

STATIC uint16_t
FUNC_NAME(sub_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ui1 - ui2;
}

STATIC uint16_t
FUNC_NAME(mul_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ((unsigned int)ui1) * ((unsigned int)ui2);
}

STATIC uint16_t
FUNC_NAME(mod_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (ui2 == 0) ? 
    (UNDEFINED(ui1)) : 
#endif
    (ui1 % ui2);
}

STATIC uint16_t
FUNC_NAME(div_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (ui2 == 0) ? 
    (UNDEFINED(ui1)) : 
#endif
    (ui1 / ui2);
}

STATIC uint16_t
FUNC_NAME(lshift_func_uint16_t_u_s)(uint16_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((int)right) < 0) || (((int)right) >= 32) || (left > (UINT16_MAX >> ((int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((int)right));
}

STATIC uint16_t
FUNC_NAME(lshift_func_uint16_t_u_u)(uint16_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((unsigned int)right) >= 32) || (left > (UINT16_MAX >> ((unsigned int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((unsigned int)right));
}

STATIC uint16_t
FUNC_NAME(rshift_func_uint16_t_u_s)(uint16_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((int)right) < 0) || (((int)right) >= 32)) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((int)right));
}

STATIC uint16_t
FUNC_NAME(rshift_func_uint16_t_u_u)(uint16_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (((unsigned int)right) >= 32) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((unsigned int)right));
}



STATIC uint32_t
FUNC_NAME(unary_minus_func_uint32_t_u)(uint32_t ui LOG_INDEX)
{
  LOG_EXEC
  return -ui;
}

STATIC uint32_t
FUNC_NAME(add_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ui1 + ui2;
}

STATIC uint32_t
FUNC_NAME(sub_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ui1 - ui2;
}

STATIC uint32_t
FUNC_NAME(mul_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ((unsigned int)ui1) * ((unsigned int)ui2);
}

STATIC uint32_t
FUNC_NAME(mod_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (ui2 == 0) ? 
    (UNDEFINED(ui1)) : 
#endif
    (ui1 % ui2);
}

STATIC uint32_t
FUNC_NAME(div_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (ui2 == 0) ? 
    (UNDEFINED(ui1)) : 
#endif
    (ui1 / ui2);
}

STATIC uint32_t
FUNC_NAME(lshift_func_uint32_t_u_s)(uint32_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((int)right) < 0) || (((int)right) >= 32) || (left > (UINT32_MAX >> ((int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((int)right));
}

STATIC uint32_t
FUNC_NAME(lshift_func_uint32_t_u_u)(uint32_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((unsigned int)right) >= 32) || (left > (UINT32_MAX >> ((unsigned int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((unsigned int)right));
}

STATIC uint32_t
FUNC_NAME(rshift_func_uint32_t_u_s)(uint32_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((int)right) < 0) || (((int)right) >= 32)) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((int)right));
}

STATIC uint32_t
FUNC_NAME(rshift_func_uint32_t_u_u)(uint32_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (((unsigned int)right) >= 32) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((unsigned int)right));
}

#ifndef NO_LONGLONG


STATIC uint64_t
FUNC_NAME(unary_minus_func_uint64_t_u)(uint64_t ui LOG_INDEX)
{
  LOG_EXEC
  return -ui;
}

STATIC uint64_t
FUNC_NAME(add_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ui1 + ui2;
}

STATIC uint64_t
FUNC_NAME(sub_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ui1 - ui2;
}

STATIC uint64_t
FUNC_NAME(mul_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return ((unsigned long long int)ui1) * ((unsigned long long int)ui2);
}

STATIC uint64_t
FUNC_NAME(mod_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (ui2 == 0) ? 
    (UNDEFINED(ui1)) : 
#endif
    (ui1 % ui2);
}

STATIC uint64_t
FUNC_NAME(div_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2 LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (ui2 == 0) ? 
    (UNDEFINED(ui1)) : 
#endif
    (ui1 / ui2);
}

STATIC uint64_t
FUNC_NAME(lshift_func_uint64_t_u_s)(uint64_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((int)right) < 0) || (((int)right) >= 32) || (left > (UINT64_MAX >> ((int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((int)right));
}

STATIC uint64_t
FUNC_NAME(lshift_func_uint64_t_u_u)(uint64_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((unsigned int)right) >= 32) || (left > (UINT64_MAX >> ((unsigned int)right)))) ? 
    (UNDEFINED(left)) : 
#endif
    (left << ((unsigned int)right));
}

STATIC uint64_t
FUNC_NAME(rshift_func_uint64_t_u_s)(uint64_t left, int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    ((((int)right) < 0) || (((int)right) >= 32)) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((int)right));
}

STATIC uint64_t
FUNC_NAME(rshift_func_uint64_t_u_u)(uint64_t left, unsigned int right LOG_INDEX)
{
  LOG_EXEC
  return 
#ifndef UNSAFE
    (((unsigned int)right) >= 32) ? 
    (UNDEFINED(left)) : 
#endif
    (left >> ((unsigned int)right));
}

#endif

#endif
#ifndef SAFE_MATH_H
#define SAFE_MATH_H





#define safe_unary_minus_func_int8_t_s(_si) \
  ({ int8_t si = (_si) ; \
   (((int8_t)(si))==(INT8_MIN))? \
    ((int8_t)(si)): \
    (-((int8_t)(si))) \
  ;})

#define safe_add_func_int8_t_s_s(_si1,_si2) \
		({ int8_t si1 = (_si1); int8_t si2 = (_si2) ; \
                 (((((int8_t)(si1))>((int8_t)0)) && (((int8_t)(si2))>((int8_t)0)) && (((int8_t)(si1)) > ((INT8_MAX)-((int8_t)(si2))))) \
		  || ((((int8_t)(si1))<((int8_t)0)) && (((int8_t)(si2))<((int8_t)0)) && (((int8_t)(si1)) < ((INT8_MIN)-((int8_t)(si2)))))) ? \
		 ((int8_t)(si1)) :						\
		 (((int8_t)(si1)) + ((int8_t)(si2)))				\
		;}) 

#define safe_sub_func_int8_t_s_s(_si1,_si2) \
		({ int8_t si1 = (_si1); int8_t si2 = (_si2) ; \
                (((((int8_t)(si1))^((int8_t)(si2))) \
		& (((((int8_t)(si1)) ^ ((((int8_t)(si1))^((int8_t)(si2))) \
		& (((int8_t)1) << (sizeof(int8_t)*CHAR_BIT-1))))-((int8_t)(si2)))^((int8_t)(si2)))) < ((int8_t)0)) \
		? ((int8_t)(si1)) \
		: (((int8_t)(si1)) - ((int8_t)(si2))) \
		;})

#define safe_mul_func_int8_t_s_s(_si1,_si2) \
  ({ int8_t si1 = (_si1); int8_t si2 = (_si2) ; \
  (((((int8_t)(si1)) > ((int8_t)0)) && (((int8_t)(si2)) > ((int8_t)0)) && (((int8_t)(si1)) > ((INT8_MAX) / ((int8_t)(si2))))) || \
  ((((int8_t)(si1)) > ((int8_t)0)) && (((int8_t)(si2)) <= ((int8_t)0)) && (((int8_t)(si2)) < ((INT8_MIN) / ((int8_t)(si1))))) || \
  ((((int8_t)(si1)) <= ((int8_t)0)) && (((int8_t)(si2)) > ((int8_t)0)) && (((int8_t)(si1)) < ((INT8_MIN) / ((int8_t)(si2))))) || \
  ((((int8_t)(si1)) <= ((int8_t)0)) && (((int8_t)(si2)) <= ((int8_t)0)) && (((int8_t)(si1)) != ((int8_t)0)) && (((int8_t)(si2)) < ((INT8_MAX) / ((int8_t)(si1)))))) \
  ? ((int8_t)(si1)) \
  : ((int8_t)(si1)) * ((int8_t)(si2));})

#define safe_mod_func_int8_t_s_s(_si1,_si2) \
  ({ int8_t si1 = (_si1); int8_t si2 = (_si2) ; \
  ((((int8_t)(si2)) == ((int8_t)0)) || ((((int8_t)(si1)) == (INT8_MIN)) && (((int8_t)(si2)) == ((int8_t)-1)))) \
  ? ((int8_t)(si1)) \
  : (((int8_t)(si1)) % ((int8_t)(si2)));})

#define safe_div_func_int8_t_s_s(_si1,_si2) \
  ({ int8_t si1 = (_si1); int8_t si2 = (_si2) ; \
  ((((int8_t)(si2)) == ((int8_t)0)) || ((((int8_t)(si1)) == (INT8_MIN)) && (((int8_t)(si2)) == ((int8_t)-1)))) \
  ? ((int8_t)(si1)) \
  : (((int8_t)(si1)) / ((int8_t)(si2)));})

#define safe_lshift_func_int8_t_s_s(_left,_right) \
  ({ int8_t left = (_left); int right = (_right) ; \
   ((((int8_t)(left)) < ((int8_t)0)) \
  || (((int)(right)) < ((int8_t)0)) \
  || (((int)(right)) >= sizeof(int8_t)*CHAR_BIT) \
  || (((int8_t)(left)) > ((INT8_MAX) >> ((int)(right))))) \
  ? ((int8_t)(left)) \
  : (((int8_t)(left)) << ((int)(right)));})

#define safe_lshift_func_int8_t_s_u(_left,_right) \
  ({ int8_t left = (_left); unsigned int right = (_right) ; \
   ((((int8_t)(left)) < ((int8_t)0)) \
  || (((unsigned int)(right)) >= sizeof(int8_t)*CHAR_BIT) \
  || (((int8_t)(left)) > ((INT8_MAX) >> ((unsigned int)(right))))) \
  ? ((int8_t)(left)) \
  : (((int8_t)(left)) << ((unsigned int)(right)));})

#define safe_rshift_func_int8_t_s_s(_left,_right) \
	({ int8_t left = (_left); int right = (_right) ; \
        ((((int8_t)(left)) < ((int8_t)0)) \
			 || (((int)(right)) < ((int8_t)0)) \
			 || (((int)(right)) >= sizeof(int8_t)*CHAR_BIT)) \
			? ((int8_t)(left)) \
			: (((int8_t)(left)) >> ((int)(right)));})

#define safe_rshift_func_int8_t_s_u(_left,_right) \
  ({ int8_t left = (_left); unsigned int right = (_right) ; \
   ((((int8_t)(left)) < ((int8_t)0)) \
			 || (((unsigned int)(right)) >= sizeof(int8_t)*CHAR_BIT)) \
			? ((int8_t)(left)) \
			: (((int8_t)(left)) >> ((unsigned int)(right)));})



#define safe_unary_minus_func_int16_t_s(_si) \
  ({ int16_t si = (_si) ; \
   (((int16_t)(si))==(INT16_MIN))? \
    ((int16_t)(si)): \
    (-((int16_t)(si))) \
  ;})

#define safe_add_func_int16_t_s_s(_si1,_si2) \
		({ int16_t si1 = (_si1); int16_t si2 = (_si2) ; \
                 (((((int16_t)(si1))>((int16_t)0)) && (((int16_t)(si2))>((int16_t)0)) && (((int16_t)(si1)) > ((INT16_MAX)-((int16_t)(si2))))) \
		  || ((((int16_t)(si1))<((int16_t)0)) && (((int16_t)(si2))<((int16_t)0)) && (((int16_t)(si1)) < ((INT16_MIN)-((int16_t)(si2)))))) ? \
		 ((int16_t)(si1)) :						\
		 (((int16_t)(si1)) + ((int16_t)(si2)))				\
		;}) 

#define safe_sub_func_int16_t_s_s(_si1,_si2) \
		({ int16_t si1 = (_si1); int16_t si2 = (_si2) ; \
                (((((int16_t)(si1))^((int16_t)(si2))) \
		& (((((int16_t)(si1)) ^ ((((int16_t)(si1))^((int16_t)(si2))) \
		& (((int16_t)1) << (sizeof(int16_t)*CHAR_BIT-1))))-((int16_t)(si2)))^((int16_t)(si2)))) < ((int16_t)0)) \
		? ((int16_t)(si1)) \
		: (((int16_t)(si1)) - ((int16_t)(si2))) \
		;})

#define safe_mul_func_int16_t_s_s(_si1,_si2) \
  ({ int16_t si1 = (_si1); int16_t si2 = (_si2) ; \
  (((((int16_t)(si1)) > ((int16_t)0)) && (((int16_t)(si2)) > ((int16_t)0)) && (((int16_t)(si1)) > ((INT16_MAX) / ((int16_t)(si2))))) || \
  ((((int16_t)(si1)) > ((int16_t)0)) && (((int16_t)(si2)) <= ((int16_t)0)) && (((int16_t)(si2)) < ((INT16_MIN) / ((int16_t)(si1))))) || \
  ((((int16_t)(si1)) <= ((int16_t)0)) && (((int16_t)(si2)) > ((int16_t)0)) && (((int16_t)(si1)) < ((INT16_MIN) / ((int16_t)(si2))))) || \
  ((((int16_t)(si1)) <= ((int16_t)0)) && (((int16_t)(si2)) <= ((int16_t)0)) && (((int16_t)(si1)) != ((int16_t)0)) && (((int16_t)(si2)) < ((INT16_MAX) / ((int16_t)(si1)))))) \
  ? ((int16_t)(si1)) \
  : ((int16_t)(si1)) * ((int16_t)(si2));})

#define safe_mod_func_int16_t_s_s(_si1,_si2) \
  ({ int16_t si1 = (_si1); int16_t si2 = (_si2) ; \
  ((((int16_t)(si2)) == ((int16_t)0)) || ((((int16_t)(si1)) == (INT16_MIN)) && (((int16_t)(si2)) == ((int16_t)-1)))) \
  ? ((int16_t)(si1)) \
  : (((int16_t)(si1)) % ((int16_t)(si2)));})

#define safe_div_func_int16_t_s_s(_si1,_si2) \
  ({ int16_t si1 = (_si1); int16_t si2 = (_si2) ; \
  ((((int16_t)(si2)) == ((int16_t)0)) || ((((int16_t)(si1)) == (INT16_MIN)) && (((int16_t)(si2)) == ((int16_t)-1)))) \
  ? ((int16_t)(si1)) \
  : (((int16_t)(si1)) / ((int16_t)(si2)));})

#define safe_lshift_func_int16_t_s_s(_left,_right) \
  ({ int16_t left = (_left); int right = (_right) ; \
   ((((int16_t)(left)) < ((int16_t)0)) \
  || (((int)(right)) < ((int16_t)0)) \
  || (((int)(right)) >= sizeof(int16_t)*CHAR_BIT) \
  || (((int16_t)(left)) > ((INT16_MAX) >> ((int)(right))))) \
  ? ((int16_t)(left)) \
  : (((int16_t)(left)) << ((int)(right)));})

#define safe_lshift_func_int16_t_s_u(_left,_right) \
  ({ int16_t left = (_left); unsigned int right = (_right) ; \
   ((((int16_t)(left)) < ((int16_t)0)) \
  || (((unsigned int)(right)) >= sizeof(int16_t)*CHAR_BIT) \
  || (((int16_t)(left)) > ((INT16_MAX) >> ((unsigned int)(right))))) \
  ? ((int16_t)(left)) \
  : (((int16_t)(left)) << ((unsigned int)(right)));})

#define safe_rshift_func_int16_t_s_s(_left,_right) \
	({ int16_t left = (_left); int right = (_right) ; \
        ((((int16_t)(left)) < ((int16_t)0)) \
			 || (((int)(right)) < ((int16_t)0)) \
			 || (((int)(right)) >= sizeof(int16_t)*CHAR_BIT)) \
			? ((int16_t)(left)) \
			: (((int16_t)(left)) >> ((int)(right)));})

#define safe_rshift_func_int16_t_s_u(_left,_right) \
  ({ int16_t left = (_left); unsigned int right = (_right) ; \
   ((((int16_t)(left)) < ((int16_t)0)) \
			 || (((unsigned int)(right)) >= sizeof(int16_t)*CHAR_BIT)) \
			? ((int16_t)(left)) \
			: (((int16_t)(left)) >> ((unsigned int)(right)));})



#define safe_unary_minus_func_int32_t_s(_si) \
  ({ int32_t si = (_si) ; \
   (((int32_t)(si))==(INT32_MIN))? \
    ((int32_t)(si)): \
    (-((int32_t)(si))) \
  ;})

#define safe_add_func_int32_t_s_s(_si1,_si2) \
		({ int32_t si1 = (_si1); int32_t si2 = (_si2) ; \
                 (((((int32_t)(si1))>((int32_t)0)) && (((int32_t)(si2))>((int32_t)0)) && (((int32_t)(si1)) > ((INT32_MAX)-((int32_t)(si2))))) \
		  || ((((int32_t)(si1))<((int32_t)0)) && (((int32_t)(si2))<((int32_t)0)) && (((int32_t)(si1)) < ((INT32_MIN)-((int32_t)(si2)))))) ? \
		 ((int32_t)(si1)) :						\
		 (((int32_t)(si1)) + ((int32_t)(si2)))				\
		;}) 

#define safe_sub_func_int32_t_s_s(_si1,_si2) \
		({ int32_t si1 = (_si1); int32_t si2 = (_si2) ; \
                (((((int32_t)(si1))^((int32_t)(si2))) \
		& (((((int32_t)(si1)) ^ ((((int32_t)(si1))^((int32_t)(si2))) \
		& (((int32_t)1) << (sizeof(int32_t)*CHAR_BIT-1))))-((int32_t)(si2)))^((int32_t)(si2)))) < ((int32_t)0)) \
		? ((int32_t)(si1)) \
		: (((int32_t)(si1)) - ((int32_t)(si2))) \
		;})

#define safe_mul_func_int32_t_s_s(_si1,_si2) \
  ({ int32_t si1 = (_si1); int32_t si2 = (_si2) ; \
  (((((int32_t)(si1)) > ((int32_t)0)) && (((int32_t)(si2)) > ((int32_t)0)) && (((int32_t)(si1)) > ((INT32_MAX) / ((int32_t)(si2))))) || \
  ((((int32_t)(si1)) > ((int32_t)0)) && (((int32_t)(si2)) <= ((int32_t)0)) && (((int32_t)(si2)) < ((INT32_MIN) / ((int32_t)(si1))))) || \
  ((((int32_t)(si1)) <= ((int32_t)0)) && (((int32_t)(si2)) > ((int32_t)0)) && (((int32_t)(si1)) < ((INT32_MIN) / ((int32_t)(si2))))) || \
  ((((int32_t)(si1)) <= ((int32_t)0)) && (((int32_t)(si2)) <= ((int32_t)0)) && (((int32_t)(si1)) != ((int32_t)0)) && (((int32_t)(si2)) < ((INT32_MAX) / ((int32_t)(si1)))))) \
  ? ((int32_t)(si1)) \
  : ((int32_t)(si1)) * ((int32_t)(si2));})

#define safe_mod_func_int32_t_s_s(_si1,_si2) \
  ({ int32_t si1 = (_si1); int32_t si2 = (_si2) ; \
  ((((int32_t)(si2)) == ((int32_t)0)) || ((((int32_t)(si1)) == (INT32_MIN)) && (((int32_t)(si2)) == ((int32_t)-1)))) \
  ? ((int32_t)(si1)) \
  : (((int32_t)(si1)) % ((int32_t)(si2)));})

#define safe_div_func_int32_t_s_s(_si1,_si2) \
  ({ int32_t si1 = (_si1); int32_t si2 = (_si2) ; \
  ((((int32_t)(si2)) == ((int32_t)0)) || ((((int32_t)(si1)) == (INT32_MIN)) && (((int32_t)(si2)) == ((int32_t)-1)))) \
  ? ((int32_t)(si1)) \
  : (((int32_t)(si1)) / ((int32_t)(si2)));})

#define safe_lshift_func_int32_t_s_s(_left,_right) \
  ({ int32_t left = (_left); int right = (_right) ; \
   ((((int32_t)(left)) < ((int32_t)0)) \
  || (((int)(right)) < ((int32_t)0)) \
  || (((int)(right)) >= sizeof(int32_t)*CHAR_BIT) \
  || (((int32_t)(left)) > ((INT32_MAX) >> ((int)(right))))) \
  ? ((int32_t)(left)) \
  : (((int32_t)(left)) << ((int)(right)));})

#define safe_lshift_func_int32_t_s_u(_left,_right) \
  ({ int32_t left = (_left); unsigned int right = (_right) ; \
   ((((int32_t)(left)) < ((int32_t)0)) \
  || (((unsigned int)(right)) >= sizeof(int32_t)*CHAR_BIT) \
  || (((int32_t)(left)) > ((INT32_MAX) >> ((unsigned int)(right))))) \
  ? ((int32_t)(left)) \
  : (((int32_t)(left)) << ((unsigned int)(right)));})

#define safe_rshift_func_int32_t_s_s(_left,_right) \
	({ int32_t left = (_left); int right = (_right) ; \
        ((((int32_t)(left)) < ((int32_t)0)) \
			 || (((int)(right)) < ((int32_t)0)) \
			 || (((int)(right)) >= sizeof(int32_t)*CHAR_BIT)) \
			? ((int32_t)(left)) \
			: (((int32_t)(left)) >> ((int)(right)));})

#define safe_rshift_func_int32_t_s_u(_left,_right) \
  ({ int32_t left = (_left); unsigned int right = (_right) ; \
   ((((int32_t)(left)) < ((int32_t)0)) \
			 || (((unsigned int)(right)) >= sizeof(int32_t)*CHAR_BIT)) \
			? ((int32_t)(left)) \
			: (((int32_t)(left)) >> ((unsigned int)(right)));})



#define safe_unary_minus_func_int64_t_s(_si) \
  ({ int64_t si = (_si) ; \
   (((int64_t)(si))==(INT64_MIN))? \
    ((int64_t)(si)): \
    (-((int64_t)(si))) \
  ;})

#define safe_add_func_int64_t_s_s(_si1,_si2) \
		({ int64_t si1 = (_si1); int64_t si2 = (_si2) ; \
                 (((((int64_t)(si1))>((int64_t)0)) && (((int64_t)(si2))>((int64_t)0)) && (((int64_t)(si1)) > ((INT64_MAX)-((int64_t)(si2))))) \
		  || ((((int64_t)(si1))<((int64_t)0)) && (((int64_t)(si2))<((int64_t)0)) && (((int64_t)(si1)) < ((INT64_MIN)-((int64_t)(si2)))))) ? \
		 ((int64_t)(si1)) :						\
		 (((int64_t)(si1)) + ((int64_t)(si2)))				\
		;}) 

#define safe_sub_func_int64_t_s_s(_si1,_si2) \
		({ int64_t si1 = (_si1); int64_t si2 = (_si2) ; \
                (((((int64_t)(si1))^((int64_t)(si2))) \
		& (((((int64_t)(si1)) ^ ((((int64_t)(si1))^((int64_t)(si2))) \
		& (((int64_t)1) << (sizeof(int64_t)*CHAR_BIT-1))))-((int64_t)(si2)))^((int64_t)(si2)))) < ((int64_t)0)) \
		? ((int64_t)(si1)) \
		: (((int64_t)(si1)) - ((int64_t)(si2))) \
		;})

#define safe_mul_func_int64_t_s_s(_si1,_si2) \
  ({ int64_t si1 = (_si1); int64_t si2 = (_si2) ; \
  (((((int64_t)(si1)) > ((int64_t)0)) && (((int64_t)(si2)) > ((int64_t)0)) && (((int64_t)(si1)) > ((INT64_MAX) / ((int64_t)(si2))))) || \
  ((((int64_t)(si1)) > ((int64_t)0)) && (((int64_t)(si2)) <= ((int64_t)0)) && (((int64_t)(si2)) < ((INT64_MIN) / ((int64_t)(si1))))) || \
  ((((int64_t)(si1)) <= ((int64_t)0)) && (((int64_t)(si2)) > ((int64_t)0)) && (((int64_t)(si1)) < ((INT64_MIN) / ((int64_t)(si2))))) || \
  ((((int64_t)(si1)) <= ((int64_t)0)) && (((int64_t)(si2)) <= ((int64_t)0)) && (((int64_t)(si1)) != ((int64_t)0)) && (((int64_t)(si2)) < ((INT64_MAX) / ((int64_t)(si1)))))) \
  ? ((int64_t)(si1)) \
  : ((int64_t)(si1)) * ((int64_t)(si2));})

#define safe_mod_func_int64_t_s_s(_si1,_si2) \
  ({ int64_t si1 = (_si1); int64_t si2 = (_si2) ; \
  ((((int64_t)(si2)) == ((int64_t)0)) || ((((int64_t)(si1)) == (INT64_MIN)) && (((int64_t)(si2)) == ((int64_t)-1)))) \
  ? ((int64_t)(si1)) \
  : (((int64_t)(si1)) % ((int64_t)(si2)));})

#define safe_div_func_int64_t_s_s(_si1,_si2) \
  ({ int64_t si1 = (_si1); int64_t si2 = (_si2) ; \
  ((((int64_t)(si2)) == ((int64_t)0)) || ((((int64_t)(si1)) == (INT64_MIN)) && (((int64_t)(si2)) == ((int64_t)-1)))) \
  ? ((int64_t)(si1)) \
  : (((int64_t)(si1)) / ((int64_t)(si2)));})

#define safe_lshift_func_int64_t_s_s(_left,_right) \
  ({ int64_t left = (_left); int right = (_right) ; \
   ((((int64_t)(left)) < ((int64_t)0)) \
  || (((int)(right)) < ((int64_t)0)) \
  || (((int)(right)) >= sizeof(int64_t)*CHAR_BIT) \
  || (((int64_t)(left)) > ((INT64_MAX) >> ((int)(right))))) \
  ? ((int64_t)(left)) \
  : (((int64_t)(left)) << ((int)(right)));})

#define safe_lshift_func_int64_t_s_u(_left,_right) \
  ({ int64_t left = (_left); unsigned int right = (_right) ; \
   ((((int64_t)(left)) < ((int64_t)0)) \
  || (((unsigned int)(right)) >= sizeof(int64_t)*CHAR_BIT) \
  || (((int64_t)(left)) > ((INT64_MAX) >> ((unsigned int)(right))))) \
  ? ((int64_t)(left)) \
  : (((int64_t)(left)) << ((unsigned int)(right)));})

#define safe_rshift_func_int64_t_s_s(_left,_right) \
	({ int64_t left = (_left); int right = (_right) ; \
        ((((int64_t)(left)) < ((int64_t)0)) \
			 || (((int)(right)) < ((int64_t)0)) \
			 || (((int)(right)) >= sizeof(int64_t)*CHAR_BIT)) \
			? ((int64_t)(left)) \
			: (((int64_t)(left)) >> ((int)(right)));})

#define safe_rshift_func_int64_t_s_u(_left,_right) \
  ({ int64_t left = (_left); unsigned int right = (_right) ; \
   ((((int64_t)(left)) < ((int64_t)0)) \
			 || (((unsigned int)(right)) >= sizeof(int64_t)*CHAR_BIT)) \
			? ((int64_t)(left)) \
			: (((int64_t)(left)) >> ((unsigned int)(right)));})








#define safe_unary_minus_func_uint8_t_u(_ui) \
  ({ uint8_t ui = (_ui); -((uint8_t)(ui));})

#define safe_add_func_uint8_t_u_u(_ui1,_ui2) \
  ({ uint8_t ui1 = (_ui1); uint8_t ui2 = (_ui2) ; \
  ((uint8_t)(ui1)) + ((uint8_t)(ui2));})

#define safe_sub_func_uint8_t_u_u(_ui1,_ui2) \
  ({ uint8_t ui1 = (_ui1); uint8_t ui2 = (_ui2) ; ((uint8_t)(ui1)) - ((uint8_t)(ui2));})

#define safe_mul_func_uint8_t_u_u(_ui1,_ui2) \
  ({ uint8_t ui1 = (_ui1); uint8_t ui2 = (_ui2) ; (uint8_t)(((unsigned int)(ui1)) * ((unsigned int)(ui2)));})

#define safe_mod_func_uint8_t_u_u(_ui1,_ui2) \
	({ uint8_t ui1 = (_ui1); uint8_t ui2 = (_ui2) ; \
         (((uint8_t)(ui2)) == ((uint8_t)0)) \
			? ((uint8_t)(ui1)) \
			: (((uint8_t)(ui1)) % ((uint8_t)(ui2)));})

#define safe_div_func_uint8_t_u_u(_ui1,_ui2) \
	        ({ uint8_t ui1 = (_ui1); uint8_t ui2 = (_ui2) ; \
                 (((uint8_t)(ui2)) == ((uint8_t)0)) \
			? ((uint8_t)(ui1)) \
			: (((uint8_t)(ui1)) / ((uint8_t)(ui2)));})

#define safe_lshift_func_uint8_t_u_s(_left,_right) \
	({ uint8_t left = (_left); int right = (_right) ; \
          ((((int)(right)) < ((uint8_t)0)) \
			 || (((int)(right)) >= sizeof(uint8_t)*CHAR_BIT) \
			 || (((uint8_t)(left)) > ((UINT8_MAX) >> ((int)(right))))) \
			? ((uint8_t)(left)) \
			: (((uint8_t)(left)) << ((int)(right)));})

#define safe_lshift_func_uint8_t_u_u(_left,_right) \
	 ({ uint8_t left = (_left); unsigned int right = (_right) ; \
           ((((unsigned int)(right)) >= sizeof(uint8_t)*CHAR_BIT) \
			 || (((uint8_t)(left)) > ((UINT8_MAX) >> ((unsigned int)(right))))) \
			? ((uint8_t)(left)) \
			: (((uint8_t)(left)) << ((unsigned int)(right)));})

#define safe_rshift_func_uint8_t_u_s(_left,_right) \
	({ uint8_t left = (_left); int right = (_right) ; \
          ((((int)(right)) < ((uint8_t)0)) \
			 || (((int)(right)) >= sizeof(uint8_t)*CHAR_BIT)) \
			? ((uint8_t)(left)) \
			: (((uint8_t)(left)) >> ((int)(right)));})

#define safe_rshift_func_uint8_t_u_u(_left,_right) \
	({ uint8_t left = (_left); unsigned int right = (_right) ; \
                 (((unsigned int)(right)) >= sizeof(uint8_t)*CHAR_BIT) \
			 ? ((uint8_t)(left)) \
			 : (((uint8_t)(left)) >> ((unsigned int)(right)));})




#define safe_unary_minus_func_uint16_t_u(_ui) \
  ({ uint16_t ui = (_ui); -((uint16_t)(ui));})

#define safe_add_func_uint16_t_u_u(_ui1,_ui2) \
  ({ uint16_t ui1 = (_ui1); uint16_t ui2 = (_ui2) ; \
  ((uint16_t)(ui1)) + ((uint16_t)(ui2));})

#define safe_sub_func_uint16_t_u_u(_ui1,_ui2) \
  ({ uint16_t ui1 = (_ui1); uint16_t ui2 = (_ui2) ; ((uint16_t)(ui1)) - ((uint16_t)(ui2));})

#define safe_mul_func_uint16_t_u_u(_ui1,_ui2) \
  ({ uint16_t ui1 = (_ui1); uint16_t ui2 = (_ui2) ; (uint16_t)(((unsigned int)(ui1)) * ((unsigned int)(ui2)));})

#define safe_mod_func_uint16_t_u_u(_ui1,_ui2) \
	({ uint16_t ui1 = (_ui1); uint16_t ui2 = (_ui2) ; \
         (((uint16_t)(ui2)) == ((uint16_t)0)) \
			? ((uint16_t)(ui1)) \
			: (((uint16_t)(ui1)) % ((uint16_t)(ui2)));})

#define safe_div_func_uint16_t_u_u(_ui1,_ui2) \
	        ({ uint16_t ui1 = (_ui1); uint16_t ui2 = (_ui2) ; \
                 (((uint16_t)(ui2)) == ((uint16_t)0)) \
			? ((uint16_t)(ui1)) \
			: (((uint16_t)(ui1)) / ((uint16_t)(ui2)));})

#define safe_lshift_func_uint16_t_u_s(_left,_right) \
	({ uint16_t left = (_left); int right = (_right) ; \
          ((((int)(right)) < ((uint16_t)0)) \
			 || (((int)(right)) >= sizeof(uint16_t)*CHAR_BIT) \
			 || (((uint16_t)(left)) > ((UINT16_MAX) >> ((int)(right))))) \
			? ((uint16_t)(left)) \
			: (((uint16_t)(left)) << ((int)(right)));})

#define safe_lshift_func_uint16_t_u_u(_left,_right) \
	 ({ uint16_t left = (_left); unsigned int right = (_right) ; \
           ((((unsigned int)(right)) >= sizeof(uint16_t)*CHAR_BIT) \
			 || (((uint16_t)(left)) > ((UINT16_MAX) >> ((unsigned int)(right))))) \
			? ((uint16_t)(left)) \
			: (((uint16_t)(left)) << ((unsigned int)(right)));})

#define safe_rshift_func_uint16_t_u_s(_left,_right) \
	({ uint16_t left = (_left); int right = (_right) ; \
          ((((int)(right)) < ((uint16_t)0)) \
			 || (((int)(right)) >= sizeof(uint16_t)*CHAR_BIT)) \
			? ((uint16_t)(left)) \
			: (((uint16_t)(left)) >> ((int)(right)));})

#define safe_rshift_func_uint16_t_u_u(_left,_right) \
	({ uint16_t left = (_left); unsigned int right = (_right) ; \
                 (((unsigned int)(right)) >= sizeof(uint16_t)*CHAR_BIT) \
			 ? ((uint16_t)(left)) \
			 : (((uint16_t)(left)) >> ((unsigned int)(right)));})




#define safe_unary_minus_func_uint32_t_u(_ui) \
  ({ uint32_t ui = (_ui); -((uint32_t)(ui));})

#define safe_add_func_uint32_t_u_u(_ui1,_ui2) \
  ({ uint32_t ui1 = (_ui1); uint32_t ui2 = (_ui2) ; \
  ((uint32_t)(ui1)) + ((uint32_t)(ui2));})

#define safe_sub_func_uint32_t_u_u(_ui1,_ui2) \
  ({ uint32_t ui1 = (_ui1); uint32_t ui2 = (_ui2) ; ((uint32_t)(ui1)) - ((uint32_t)(ui2));})

#define safe_mul_func_uint32_t_u_u(_ui1,_ui2) \
  ({ uint32_t ui1 = (_ui1); uint32_t ui2 = (_ui2) ; (uint32_t)(((unsigned int)(ui1)) * ((unsigned int)(ui2)));})

#define safe_mod_func_uint32_t_u_u(_ui1,_ui2) \
	({ uint32_t ui1 = (_ui1); uint32_t ui2 = (_ui2) ; \
         (((uint32_t)(ui2)) == ((uint32_t)0)) \
			? ((uint32_t)(ui1)) \
			: (((uint32_t)(ui1)) % ((uint32_t)(ui2)));})

#define safe_div_func_uint32_t_u_u(_ui1,_ui2) \
	        ({ uint32_t ui1 = (_ui1); uint32_t ui2 = (_ui2) ; \
                 (((uint32_t)(ui2)) == ((uint32_t)0)) \
			? ((uint32_t)(ui1)) \
			: (((uint32_t)(ui1)) / ((uint32_t)(ui2)));})

#define safe_lshift_func_uint32_t_u_s(_left,_right) \
	({ uint32_t left = (_left); int right = (_right) ; \
          ((((int)(right)) < ((uint32_t)0)) \
			 || (((int)(right)) >= sizeof(uint32_t)*CHAR_BIT) \
			 || (((uint32_t)(left)) > ((UINT32_MAX) >> ((int)(right))))) \
			? ((uint32_t)(left)) \
			: (((uint32_t)(left)) << ((int)(right)));})

#define safe_lshift_func_uint32_t_u_u(_left,_right) \
	 ({ uint32_t left = (_left); unsigned int right = (_right) ; \
           ((((unsigned int)(right)) >= sizeof(uint32_t)*CHAR_BIT) \
			 || (((uint32_t)(left)) > ((UINT32_MAX) >> ((unsigned int)(right))))) \
			? ((uint32_t)(left)) \
			: (((uint32_t)(left)) << ((unsigned int)(right)));})

#define safe_rshift_func_uint32_t_u_s(_left,_right) \
	({ uint32_t left = (_left); int right = (_right) ; \
          ((((int)(right)) < ((uint32_t)0)) \
			 || (((int)(right)) >= sizeof(uint32_t)*CHAR_BIT)) \
			? ((uint32_t)(left)) \
			: (((uint32_t)(left)) >> ((int)(right)));})

#define safe_rshift_func_uint32_t_u_u(_left,_right) \
	({ uint32_t left = (_left); unsigned int right = (_right) ; \
                 (((unsigned int)(right)) >= sizeof(uint32_t)*CHAR_BIT) \
			 ? ((uint32_t)(left)) \
			 : (((uint32_t)(left)) >> ((unsigned int)(right)));})




#define safe_unary_minus_func_uint64_t_u(_ui) \
  ({ uint64_t ui = (_ui); -((uint64_t)(ui));})

#define safe_add_func_uint64_t_u_u(_ui1,_ui2) \
  ({ uint64_t ui1 = (_ui1); uint64_t ui2 = (_ui2) ; \
  ((uint64_t)(ui1)) + ((uint64_t)(ui2));})

#define safe_sub_func_uint64_t_u_u(_ui1,_ui2) \
  ({ uint64_t ui1 = (_ui1); uint64_t ui2 = (_ui2) ; ((uint64_t)(ui1)) - ((uint64_t)(ui2));})

#define safe_mul_func_uint64_t_u_u(_ui1,_ui2) \
  ({ uint64_t ui1 = (_ui1); uint64_t ui2 = (_ui2) ; (uint64_t)(((unsigned long long int)(ui1)) * ((unsigned long long int)(ui2)));})

#define safe_mod_func_uint64_t_u_u(_ui1,_ui2) \
	({ uint64_t ui1 = (_ui1); uint64_t ui2 = (_ui2) ; \
         (((uint64_t)(ui2)) == ((uint64_t)0)) \
			? ((uint64_t)(ui1)) \
			: (((uint64_t)(ui1)) % ((uint64_t)(ui2)));})

#define safe_div_func_uint64_t_u_u(_ui1,_ui2) \
	        ({ uint64_t ui1 = (_ui1); uint64_t ui2 = (_ui2) ; \
                 (((uint64_t)(ui2)) == ((uint64_t)0)) \
			? ((uint64_t)(ui1)) \
			: (((uint64_t)(ui1)) / ((uint64_t)(ui2)));})

#define safe_lshift_func_uint64_t_u_s(_left,_right) \
	({ uint64_t left = (_left); int right = (_right) ; \
          ((((int)(right)) < ((uint64_t)0)) \
			 || (((int)(right)) >= sizeof(uint64_t)*CHAR_BIT) \
			 || (((uint64_t)(left)) > ((UINT64_MAX) >> ((int)(right))))) \
			? ((uint64_t)(left)) \
			: (((uint64_t)(left)) << ((int)(right)));})

#define safe_lshift_func_uint64_t_u_u(_left,_right) \
	 ({ uint64_t left = (_left); unsigned int right = (_right) ; \
           ((((unsigned int)(right)) >= sizeof(uint64_t)*CHAR_BIT) \
			 || (((uint64_t)(left)) > ((UINT64_MAX) >> ((unsigned int)(right))))) \
			? ((uint64_t)(left)) \
			: (((uint64_t)(left)) << ((unsigned int)(right)));})

#define safe_rshift_func_uint64_t_u_s(_left,_right) \
	({ uint64_t left = (_left); int right = (_right) ; \
          ((((int)(right)) < ((uint64_t)0)) \
			 || (((int)(right)) >= sizeof(uint64_t)*CHAR_BIT)) \
			? ((uint64_t)(left)) \
			: (((uint64_t)(left)) >> ((int)(right)));})

#define safe_rshift_func_uint64_t_u_u(_left,_right) \
	({ uint64_t left = (_left); unsigned int right = (_right) ; \
                 (((unsigned int)(right)) >= sizeof(uint64_t)*CHAR_BIT) \
			 ? ((uint64_t)(left)) \
			 : (((uint64_t)(left)) >> ((unsigned int)(right)));})



#endif
#ifndef SAFE_MATH_H
#define SAFE_MATH_H





#define safe_unary_minus_func_int8_t_s(si,_si) \
  ((int8_t)( si = (_si), \
   (((int8_t)(si))==(INT8_MIN))? \
    ((int8_t)(si)): \
    (-((int8_t)(si))) \
  ))

#define safe_add_func_int8_t_s_s(si1,_si1,si2,_si2) \
		((int8_t)( si1 = (_si1), si2 = (_si2) , \
                 (((((int8_t)(si1))>((int8_t)0)) && (((int8_t)(si2))>((int8_t)0)) && (((int8_t)(si1)) > ((INT8_MAX)-((int8_t)(si2))))) \
		  || ((((int8_t)(si1))<((int8_t)0)) && (((int8_t)(si2))<((int8_t)0)) && (((int8_t)(si1)) < ((INT8_MIN)-((int8_t)(si2)))))) ? \
		 ((int8_t)(si1)) :						\
		 (((int8_t)(si1)) + ((int8_t)(si2)))				\
		)) 

#define safe_sub_func_int8_t_s_s(si1,_si1,si2,_si2) \
		((int8_t)( si1 = (_si1), si2 = (_si2) , \
                (((((int8_t)(si1))^((int8_t)(si2))) \
		& (((((int8_t)(si1)) ^ ((((int8_t)(si1))^((int8_t)(si2))) \
		& (((int8_t)1) << (sizeof(int8_t)*CHAR_BIT-1))))-((int8_t)(si2)))^((int8_t)(si2)))) < ((int8_t)0)) \
		? ((int8_t)(si1)) \
		: (((int8_t)(si1)) - ((int8_t)(si2))) \
		))

#define safe_mul_func_int8_t_s_s(si1,_si1,si2,_si2) \
  ((int8_t)( si1 = (_si1), si2 = (_si2) , \
  (((((int8_t)(si1)) > ((int8_t)0)) && (((int8_t)(si2)) > ((int8_t)0)) && (((int8_t)(si1)) > ((INT8_MAX) / ((int8_t)(si2))))) || \
  ((((int8_t)(si1)) > ((int8_t)0)) && (((int8_t)(si2)) <= ((int8_t)0)) && (((int8_t)(si2)) < ((INT8_MIN) / ((int8_t)(si1))))) || \
  ((((int8_t)(si1)) <= ((int8_t)0)) && (((int8_t)(si2)) > ((int8_t)0)) && (((int8_t)(si1)) < ((INT8_MIN) / ((int8_t)(si2))))) || \
  ((((int8_t)(si1)) <= ((int8_t)0)) && (((int8_t)(si2)) <= ((int8_t)0)) && (((int8_t)(si1)) != ((int8_t)0)) && (((int8_t)(si2)) < ((INT8_MAX) / ((int8_t)(si1)))))) \
  ? ((int8_t)(si1)) \
  : ((int8_t)(si1)) * ((int8_t)(si2))))

#define safe_mod_func_int8_t_s_s(si1,_si1,si2,_si2) \
  ((int8_t)( si1 = (_si1), si2 = (_si2) , \
  ((((int8_t)(si2)) == ((int8_t)0)) || ((((int8_t)(si1)) == (INT8_MIN)) && (((int8_t)(si2)) == ((int8_t)-1)))) \
  ? ((int8_t)(si1)) \
  : (((int8_t)(si1)) % ((int8_t)(si2)))))

#define safe_div_func_int8_t_s_s(si1,_si1,si2,_si2) \
  ((int8_t)( si1 = (_si1), si2 = (_si2) , \
  ((((int8_t)(si2)) == ((int8_t)0)) || ((((int8_t)(si1)) == (INT8_MIN)) && (((int8_t)(si2)) == ((int8_t)-1)))) \
  ? ((int8_t)(si1)) \
  : (((int8_t)(si1)) / ((int8_t)(si2)))))

#define c99_strict_safe_lshift_func_int8_t_s_s(left,_left,right,_right) \
  ((int8_t)( left = (_left), right = (_right) , \
   ( \
   (((int8_t)(left)) < ((int8_t)0)) \
  || (((int)(right)) < ((int8_t)0)) \
  || (((int)(right)) >= sizeof(int8_t)*CHAR_BIT) \
  || (((int8_t)(left)) > ((INT8_MAX) >> ((int)(right))))) \
  ? ((int8_t)(left)) \
  : (((int8_t)(left)) << ((int)(right)))))

#define safe_lshift_func_int8_t_s_s(left,_left,right,_right) \
  ((int8_t)( left = (_left), right = (_right) , \
   ( \
    (((int)(right)) < ((int8_t)0)) \
  || (((int)(right)) >= sizeof(int8_t)*CHAR_BIT) \
   ) \
  ? ((int8_t)(left)) \
  : (((int8_t)(left)) << ((int)(right)))))

#define c99_strict_safe_lshift_func_int8_t_s_u(left,_left,right,_right) \
  ((int8_t)( left = (_left), right = (_right) , \
   ((((int8_t)(left)) < ((int8_t)0)) \
  || (((unsigned int)(right)) >= sizeof(int8_t)*CHAR_BIT) \
  || (((int8_t)(left)) > ((INT8_MAX) >> ((unsigned int)(right))))) \
  ? ((int8_t)(left)) \
  : (((int8_t)(left)) << ((unsigned int)(right)))))

#define safe_lshift_func_int8_t_s_u(left,_left,right,_right) \
  ((int8_t)( left = (_left), right = (_right) , \
   ( \
   (((unsigned int)(right)) >= sizeof(int8_t)*CHAR_BIT) \
   ) \
  ? ((int8_t)(left)) \
  : (((int8_t)(left)) << ((unsigned int)(right)))))

#define c99_strict_safe_rshift_func_int8_t_s_s(left,_left,right,_right) \
	((int8_t)( left = (_left), right = (_right) , \
        ((((int8_t)(left)) < ((int8_t)0)) \
			 || (((int)(right)) < ((int8_t)0)) \
			 || (((int)(right)) >= sizeof(int8_t)*CHAR_BIT)) \
			? ((int8_t)(left)) \
			: (((int8_t)(left)) >> ((int)(right)))))

#define c99_strict_safe_rshift_func_int8_t_s_u(left,_left,right,_right) \
  ((int8_t)( left = (_left), right = (_right) , \
   ((((int8_t)(left)) < ((int8_t)0)) \
			 || (((unsigned int)(right)) >= sizeof(int8_t)*CHAR_BIT)) \
			? ((int8_t)(left)) \
			: (((int8_t)(left)) >> ((unsigned int)(right)))))

#define safe_rshift_func_int8_t_s_s(left,_left,right,_right) \
	((int8_t)( left = (_left), right = (_right) , \
        ( \
			  (((int)(right)) < ((int8_t)0)) \
			 || (((int)(right)) >= sizeof(int8_t)*CHAR_BIT)) \
			? ((int8_t)(left)) \
			: (((int8_t)(left)) >> ((int)(right)))))

#define safe_rshift_func_int8_t_s_u(left,_left,right,_right) \
  ((int8_t)( left = (_left), right = (_right) , \
   ( \
	(((unsigned int)(right)) >= sizeof(int8_t)*CHAR_BIT)) \
	? ((int8_t)(left)) \
	: (((int8_t)(left)) >> ((unsigned int)(right)))))



#define safe_unary_minus_func_int16_t_s(si,_si) \
  ((int16_t)( si = (_si), \
   (((int16_t)(si))==(INT16_MIN))? \
    ((int16_t)(si)): \
    (-((int16_t)(si))) \
  ))

#define safe_add_func_int16_t_s_s(si1,_si1,si2,_si2) \
		((int16_t)( si1 = (_si1), si2 = (_si2) , \
                 (((((int16_t)(si1))>((int16_t)0)) && (((int16_t)(si2))>((int16_t)0)) && (((int16_t)(si1)) > ((INT16_MAX)-((int16_t)(si2))))) \
		  || ((((int16_t)(si1))<((int16_t)0)) && (((int16_t)(si2))<((int16_t)0)) && (((int16_t)(si1)) < ((INT16_MIN)-((int16_t)(si2)))))) ? \
		 ((int16_t)(si1)) :						\
		 (((int16_t)(si1)) + ((int16_t)(si2)))				\
		)) 

#define safe_sub_func_int16_t_s_s(si1,_si1,si2,_si2) \
		((int16_t)( si1 = (_si1), si2 = (_si2) , \
                (((((int16_t)(si1))^((int16_t)(si2))) \
		& (((((int16_t)(si1)) ^ ((((int16_t)(si1))^((int16_t)(si2))) \
		& (((int16_t)1) << (sizeof(int16_t)*CHAR_BIT-1))))-((int16_t)(si2)))^((int16_t)(si2)))) < ((int16_t)0)) \
		? ((int16_t)(si1)) \
		: (((int16_t)(si1)) - ((int16_t)(si2))) \
		))

#define safe_mul_func_int16_t_s_s(si1,_si1,si2,_si2) \
  ((int16_t)( si1 = (_si1), si2 = (_si2) , \
  (((((int16_t)(si1)) > ((int16_t)0)) && (((int16_t)(si2)) > ((int16_t)0)) && (((int16_t)(si1)) > ((INT16_MAX) / ((int16_t)(si2))))) || \
  ((((int16_t)(si1)) > ((int16_t)0)) && (((int16_t)(si2)) <= ((int16_t)0)) && (((int16_t)(si2)) < ((INT16_MIN) / ((int16_t)(si1))))) || \
  ((((int16_t)(si1)) <= ((int16_t)0)) && (((int16_t)(si2)) > ((int16_t)0)) && (((int16_t)(si1)) < ((INT16_MIN) / ((int16_t)(si2))))) || \
  ((((int16_t)(si1)) <= ((int16_t)0)) && (((int16_t)(si2)) <= ((int16_t)0)) && (((int16_t)(si1)) != ((int16_t)0)) && (((int16_t)(si2)) < ((INT16_MAX) / ((int16_t)(si1)))))) \
  ? ((int16_t)(si1)) \
  : ((int16_t)(si1)) * ((int16_t)(si2))))

#define safe_mod_func_int16_t_s_s(si1,_si1,si2,_si2) \
  ((int16_t)( si1 = (_si1), si2 = (_si2) , \
  ((((int16_t)(si2)) == ((int16_t)0)) || ((((int16_t)(si1)) == (INT16_MIN)) && (((int16_t)(si2)) == ((int16_t)-1)))) \
  ? ((int16_t)(si1)) \
  : (((int16_t)(si1)) % ((int16_t)(si2)))))

#define safe_div_func_int16_t_s_s(si1,_si1,si2,_si2) \
  ((int16_t)( si1 = (_si1), si2 = (_si2) , \
  ((((int16_t)(si2)) == ((int16_t)0)) || ((((int16_t)(si1)) == (INT16_MIN)) && (((int16_t)(si2)) == ((int16_t)-1)))) \
  ? ((int16_t)(si1)) \
  : (((int16_t)(si1)) / ((int16_t)(si2)))))

#define c99_strict_safe_lshift_func_int16_t_s_s(left,_left,right,_right) \
  ((int16_t)( left = (_left), right = (_right) , \
   ( \
   (((int16_t)(left)) < ((int16_t)0)) \
  || (((int)(right)) < ((int16_t)0)) \
  || (((int)(right)) >= sizeof(int16_t)*CHAR_BIT) \
  || (((int16_t)(left)) > ((INT16_MAX) >> ((int)(right))))) \
  ? ((int16_t)(left)) \
  : (((int16_t)(left)) << ((int)(right)))))

#define safe_lshift_func_int16_t_s_s(left,_left,right,_right) \
  ((int16_t)( left = (_left), right = (_right) , \
   ( \
    (((int)(right)) < ((int16_t)0)) \
  || (((int)(right)) >= sizeof(int16_t)*CHAR_BIT) \
   ) \
  ? ((int16_t)(left)) \
  : (((int16_t)(left)) << ((int)(right)))))

#define c99_strict_safe_lshift_func_int16_t_s_u(left,_left,right,_right) \
  ((int16_t)( left = (_left), right = (_right) , \
   ((((int16_t)(left)) < ((int16_t)0)) \
  || (((unsigned int)(right)) >= sizeof(int16_t)*CHAR_BIT) \
  || (((int16_t)(left)) > ((INT16_MAX) >> ((unsigned int)(right))))) \
  ? ((int16_t)(left)) \
  : (((int16_t)(left)) << ((unsigned int)(right)))))

#define safe_lshift_func_int16_t_s_u(left,_left,right,_right) \
  ((int16_t)( left = (_left), right = (_right) , \
   ( \
   (((unsigned int)(right)) >= sizeof(int16_t)*CHAR_BIT) \
   ) \
  ? ((int16_t)(left)) \
  : (((int16_t)(left)) << ((unsigned int)(right)))))

#define c99_strict_safe_rshift_func_int16_t_s_s(left,_left,right,_right) \
	((int16_t)( left = (_left), right = (_right) , \
        ((((int16_t)(left)) < ((int16_t)0)) \
			 || (((int)(right)) < ((int16_t)0)) \
			 || (((int)(right)) >= sizeof(int16_t)*CHAR_BIT)) \
			? ((int16_t)(left)) \
			: (((int16_t)(left)) >> ((int)(right)))))

#define c99_strict_safe_rshift_func_int16_t_s_u(left,_left,right,_right) \
  ((int16_t)( left = (_left), right = (_right) , \
   ((((int16_t)(left)) < ((int16_t)0)) \
			 || (((unsigned int)(right)) >= sizeof(int16_t)*CHAR_BIT)) \
			? ((int16_t)(left)) \
			: (((int16_t)(left)) >> ((unsigned int)(right)))))

#define safe_rshift_func_int16_t_s_s(left,_left,right,_right) \
	((int16_t)( left = (_left), right = (_right) , \
        ( \
			  (((int)(right)) < ((int16_t)0)) \
			 || (((int)(right)) >= sizeof(int16_t)*CHAR_BIT)) \
			? ((int16_t)(left)) \
			: (((int16_t)(left)) >> ((int)(right)))))

#define safe_rshift_func_int16_t_s_u(left,_left,right,_right) \
  ((int16_t)( left = (_left), right = (_right) , \
   ( \
	(((unsigned int)(right)) >= sizeof(int16_t)*CHAR_BIT)) \
	? ((int16_t)(left)) \
	: (((int16_t)(left)) >> ((unsigned int)(right)))))



#define safe_unary_minus_func_int32_t_s(si,_si) \
  ((int32_t)( si = (_si), \
   (((int32_t)(si))==(INT32_MIN))? \
    ((int32_t)(si)): \
    (-((int32_t)(si))) \
  ))

#define safe_add_func_int32_t_s_s(si1,_si1,si2,_si2) \
		((int32_t)( si1 = (_si1), si2 = (_si2) , \
                 (((((int32_t)(si1))>((int32_t)0)) && (((int32_t)(si2))>((int32_t)0)) && (((int32_t)(si1)) > ((INT32_MAX)-((int32_t)(si2))))) \
		  || ((((int32_t)(si1))<((int32_t)0)) && (((int32_t)(si2))<((int32_t)0)) && (((int32_t)(si1)) < ((INT32_MIN)-((int32_t)(si2)))))) ? \
		 ((int32_t)(si1)) :						\
		 (((int32_t)(si1)) + ((int32_t)(si2)))				\
		)) 

#define safe_sub_func_int32_t_s_s(si1,_si1,si2,_si2) \
		((int32_t)( si1 = (_si1), si2 = (_si2) , \
                (((((int32_t)(si1))^((int32_t)(si2))) \
		& (((((int32_t)(si1)) ^ ((((int32_t)(si1))^((int32_t)(si2))) \
		& (((int32_t)1) << (sizeof(int32_t)*CHAR_BIT-1))))-((int32_t)(si2)))^((int32_t)(si2)))) < ((int32_t)0)) \
		? ((int32_t)(si1)) \
		: (((int32_t)(si1)) - ((int32_t)(si2))) \
		))

#define safe_mul_func_int32_t_s_s(si1,_si1,si2,_si2) \
  ((int32_t)( si1 = (_si1), si2 = (_si2) , \
  (((((int32_t)(si1)) > ((int32_t)0)) && (((int32_t)(si2)) > ((int32_t)0)) && (((int32_t)(si1)) > ((INT32_MAX) / ((int32_t)(si2))))) || \
  ((((int32_t)(si1)) > ((int32_t)0)) && (((int32_t)(si2)) <= ((int32_t)0)) && (((int32_t)(si2)) < ((INT32_MIN) / ((int32_t)(si1))))) || \
  ((((int32_t)(si1)) <= ((int32_t)0)) && (((int32_t)(si2)) > ((int32_t)0)) && (((int32_t)(si1)) < ((INT32_MIN) / ((int32_t)(si2))))) || \
  ((((int32_t)(si1)) <= ((int32_t)0)) && (((int32_t)(si2)) <= ((int32_t)0)) && (((int32_t)(si1)) != ((int32_t)0)) && (((int32_t)(si2)) < ((INT32_MAX) / ((int32_t)(si1)))))) \
  ? ((int32_t)(si1)) \
  : ((int32_t)(si1)) * ((int32_t)(si2))))

#define safe_mod_func_int32_t_s_s(si1,_si1,si2,_si2) \
  ((int32_t)( si1 = (_si1), si2 = (_si2) , \
  ((((int32_t)(si2)) == ((int32_t)0)) || ((((int32_t)(si1)) == (INT32_MIN)) && (((int32_t)(si2)) == ((int32_t)-1)))) \
  ? ((int32_t)(si1)) \
  : (((int32_t)(si1)) % ((int32_t)(si2)))))

#define safe_div_func_int32_t_s_s(si1,_si1,si2,_si2) \
  ((int32_t)( si1 = (_si1), si2 = (_si2) , \
  ((((int32_t)(si2)) == ((int32_t)0)) || ((((int32_t)(si1)) == (INT32_MIN)) && (((int32_t)(si2)) == ((int32_t)-1)))) \
  ? ((int32_t)(si1)) \
  : (((int32_t)(si1)) / ((int32_t)(si2)))))

#define c99_strict_safe_lshift_func_int32_t_s_s(left,_left,right,_right) \
  ((int32_t)( left = (_left), right = (_right) , \
   ( \
   (((int32_t)(left)) < ((int32_t)0)) \
  || (((int)(right)) < ((int32_t)0)) \
  || (((int)(right)) >= sizeof(int32_t)*CHAR_BIT) \
  || (((int32_t)(left)) > ((INT32_MAX) >> ((int)(right))))) \
  ? ((int32_t)(left)) \
  : (((int32_t)(left)) << ((int)(right)))))

#define safe_lshift_func_int32_t_s_s(left,_left,right,_right) \
  ((int32_t)( left = (_left), right = (_right) , \
   ( \
    (((int)(right)) < ((int32_t)0)) \
  || (((int)(right)) >= sizeof(int32_t)*CHAR_BIT) \
   ) \
  ? ((int32_t)(left)) \
  : (((int32_t)(left)) << ((int)(right)))))

#define c99_strict_safe_lshift_func_int32_t_s_u(left,_left,right,_right) \
  ((int32_t)( left = (_left), right = (_right) , \
   ((((int32_t)(left)) < ((int32_t)0)) \
  || (((unsigned int)(right)) >= sizeof(int32_t)*CHAR_BIT) \
  || (((int32_t)(left)) > ((INT32_MAX) >> ((unsigned int)(right))))) \
  ? ((int32_t)(left)) \
  : (((int32_t)(left)) << ((unsigned int)(right)))))

#define safe_lshift_func_int32_t_s_u(left,_left,right,_right) \
  ((int32_t)( left = (_left), right = (_right) , \
   ( \
   (((unsigned int)(right)) >= sizeof(int32_t)*CHAR_BIT) \
   ) \
  ? ((int32_t)(left)) \
  : (((int32_t)(left)) << ((unsigned int)(right)))))

#define c99_strict_safe_rshift_func_int32_t_s_s(left,_left,right,_right) \
	((int32_t)( left = (_left), right = (_right) , \
        ((((int32_t)(left)) < ((int32_t)0)) \
			 || (((int)(right)) < ((int32_t)0)) \
			 || (((int)(right)) >= sizeof(int32_t)*CHAR_BIT)) \
			? ((int32_t)(left)) \
			: (((int32_t)(left)) >> ((int)(right)))))

#define c99_strict_safe_rshift_func_int32_t_s_u(left,_left,right,_right) \
  ((int32_t)( left = (_left), right = (_right) , \
   ((((int32_t)(left)) < ((int32_t)0)) \
			 || (((unsigned int)(right)) >= sizeof(int32_t)*CHAR_BIT)) \
			? ((int32_t)(left)) \
			: (((int32_t)(left)) >> ((unsigned int)(right)))))

#define safe_rshift_func_int32_t_s_s(left,_left,right,_right) \
	((int32_t)( left = (_left), right = (_right) , \
        ( \
			  (((int)(right)) < ((int32_t)0)) \
			 || (((int)(right)) >= sizeof(int32_t)*CHAR_BIT)) \
			? ((int32_t)(left)) \
			: (((int32_t)(left)) >> ((int)(right)))))

#define safe_rshift_func_int32_t_s_u(left,_left,right,_right) \
  ((int32_t)( left = (_left), right = (_right) , \
   ( \
	(((unsigned int)(right)) >= sizeof(int32_t)*CHAR_BIT)) \
	? ((int32_t)(left)) \
	: (((int32_t)(left)) >> ((unsigned int)(right)))))



#define safe_unary_minus_func_int64_t_s(si,_si) \
  ((int64_t)( si = (_si), \
   (((int64_t)(si))==(INT64_MIN))? \
    ((int64_t)(si)): \
    (-((int64_t)(si))) \
  ))

#define safe_add_func_int64_t_s_s(si1,_si1,si2,_si2) \
		((int64_t)( si1 = (_si1), si2 = (_si2) , \
                 (((((int64_t)(si1))>((int64_t)0)) && (((int64_t)(si2))>((int64_t)0)) && (((int64_t)(si1)) > ((INT64_MAX)-((int64_t)(si2))))) \
		  || ((((int64_t)(si1))<((int64_t)0)) && (((int64_t)(si2))<((int64_t)0)) && (((int64_t)(si1)) < ((INT64_MIN)-((int64_t)(si2)))))) ? \
		 ((int64_t)(si1)) :						\
		 (((int64_t)(si1)) + ((int64_t)(si2)))				\
		)) 

#define safe_sub_func_int64_t_s_s(si1,_si1,si2,_si2) \
		((int64_t)( si1 = (_si1), si2 = (_si2) , \
                (((((int64_t)(si1))^((int64_t)(si2))) \
		& (((((int64_t)(si1)) ^ ((((int64_t)(si1))^((int64_t)(si2))) \
		& (((int64_t)1) << (sizeof(int64_t)*CHAR_BIT-1))))-((int64_t)(si2)))^((int64_t)(si2)))) < ((int64_t)0)) \
		? ((int64_t)(si1)) \
		: (((int64_t)(si1)) - ((int64_t)(si2))) \
		))

#define safe_mul_func_int64_t_s_s(si1,_si1,si2,_si2) \
  ((int64_t)( si1 = (_si1), si2 = (_si2) , \
  (((((int64_t)(si1)) > ((int64_t)0)) && (((int64_t)(si2)) > ((int64_t)0)) && (((int64_t)(si1)) > ((INT64_MAX) / ((int64_t)(si2))))) || \
  ((((int64_t)(si1)) > ((int64_t)0)) && (((int64_t)(si2)) <= ((int64_t)0)) && (((int64_t)(si2)) < ((INT64_MIN) / ((int64_t)(si1))))) || \
  ((((int64_t)(si1)) <= ((int64_t)0)) && (((int64_t)(si2)) > ((int64_t)0)) && (((int64_t)(si1)) < ((INT64_MIN) / ((int64_t)(si2))))) || \
  ((((int64_t)(si1)) <= ((int64_t)0)) && (((int64_t)(si2)) <= ((int64_t)0)) && (((int64_t)(si1)) != ((int64_t)0)) && (((int64_t)(si2)) < ((INT64_MAX) / ((int64_t)(si1)))))) \
  ? ((int64_t)(si1)) \
  : ((int64_t)(si1)) * ((int64_t)(si2))))

#define safe_mod_func_int64_t_s_s(si1,_si1,si2,_si2) \
  ((int64_t)( si1 = (_si1), si2 = (_si2) , \
  ((((int64_t)(si2)) == ((int64_t)0)) || ((((int64_t)(si1)) == (INT64_MIN)) && (((int64_t)(si2)) == ((int64_t)-1)))) \
  ? ((int64_t)(si1)) \
  : (((int64_t)(si1)) % ((int64_t)(si2)))))

#define safe_div_func_int64_t_s_s(si1,_si1,si2,_si2) \
  ((int64_t)( si1 = (_si1), si2 = (_si2) , \
  ((((int64_t)(si2)) == ((int64_t)0)) || ((((int64_t)(si1)) == (INT64_MIN)) && (((int64_t)(si2)) == ((int64_t)-1)))) \
  ? ((int64_t)(si1)) \
  : (((int64_t)(si1)) / ((int64_t)(si2)))))

#define c99_strict_safe_lshift_func_int64_t_s_s(left,_left,right,_right) \
  ((int64_t)( left = (_left), right = (_right) , \
   ( \
   (((int64_t)(left)) < ((int64_t)0)) \
  || (((int)(right)) < ((int64_t)0)) \
  || (((int)(right)) >= sizeof(int64_t)*CHAR_BIT) \
  || (((int64_t)(left)) > ((INT64_MAX) >> ((int)(right))))) \
  ? ((int64_t)(left)) \
  : (((int64_t)(left)) << ((int)(right)))))

#define safe_lshift_func_int64_t_s_s(left,_left,right,_right) \
  ((int64_t)( left = (_left), right = (_right) , \
   ( \
    (((int)(right)) < ((int64_t)0)) \
  || (((int)(right)) >= sizeof(int64_t)*CHAR_BIT) \
   ) \
  ? ((int64_t)(left)) \
  : (((int64_t)(left)) << ((int)(right)))))

#define c99_strict_safe_lshift_func_int64_t_s_u(left,_left,right,_right) \
  ((int64_t)( left = (_left), right = (_right) , \
   ((((int64_t)(left)) < ((int64_t)0)) \
  || (((unsigned int)(right)) >= sizeof(int64_t)*CHAR_BIT) \
  || (((int64_t)(left)) > ((INT64_MAX) >> ((unsigned int)(right))))) \
  ? ((int64_t)(left)) \
  : (((int64_t)(left)) << ((unsigned int)(right)))))

#define safe_lshift_func_int64_t_s_u(left,_left,right,_right) \
  ((int64_t)( left = (_left), right = (_right) , \
   ( \
   (((unsigned int)(right)) >= sizeof(int64_t)*CHAR_BIT) \
   ) \
  ? ((int64_t)(left)) \
  : (((int64_t)(left)) << ((unsigned int)(right)))))

#define c99_strict_safe_rshift_func_int64_t_s_s(left,_left,right,_right) \
	((int64_t)( left = (_left), right = (_right) , \
        ((((int64_t)(left)) < ((int64_t)0)) \
			 || (((int)(right)) < ((int64_t)0)) \
			 || (((int)(right)) >= sizeof(int64_t)*CHAR_BIT)) \
			? ((int64_t)(left)) \
			: (((int64_t)(left)) >> ((int)(right)))))

#define c99_strict_safe_rshift_func_int64_t_s_u(left,_left,right,_right) \
  ((int64_t)( left = (_left), right = (_right) , \
   ((((int64_t)(left)) < ((int64_t)0)) \
			 || (((unsigned int)(right)) >= sizeof(int64_t)*CHAR_BIT)) \
			? ((int64_t)(left)) \
			: (((int64_t)(left)) >> ((unsigned int)(right)))))

#define safe_rshift_func_int64_t_s_s(left,_left,right,_right) \
	((int64_t)( left = (_left), right = (_right) , \
        ( \
			  (((int)(right)) < ((int64_t)0)) \
			 || (((int)(right)) >= sizeof(int64_t)*CHAR_BIT)) \
			? ((int64_t)(left)) \
			: (((int64_t)(left)) >> ((int)(right)))))

#define safe_rshift_func_int64_t_s_u(left,_left,right,_right) \
  ((int64_t)( left = (_left), right = (_right) , \
   ( \
	(((unsigned int)(right)) >= sizeof(int64_t)*CHAR_BIT)) \
	? ((int64_t)(left)) \
	: (((int64_t)(left)) >> ((unsigned int)(right)))))








#define safe_unary_minus_func_uint8_t_u(ui,_ui) \
  ((uint8_t)( ui = (_ui), -((uint8_t)(ui))))

#define safe_add_func_uint8_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint8_t)( ui1 = (_ui1), ui2 = (_ui2) , \
  ((uint8_t)(ui1)) + ((uint8_t)(ui2))))

#define safe_sub_func_uint8_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint8_t)( ui1 = (_ui1), ui2 = (_ui2) , ((uint8_t)(ui1)) - ((uint8_t)(ui2))))

#define safe_mul_func_uint8_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint8_t)(( ui1 = (_ui1), ui2 = (_ui2) , (uint8_t)(((unsigned int)(ui1)) * ((unsigned int)(ui2))))))

#define safe_mod_func_uint8_t_u_u(ui1,_ui1,ui2,_ui2) \
	((uint8_t)( ui1 = (_ui1), ui2 = (_ui2) , \
         (((uint8_t)(ui2)) == ((uint8_t)0)) \
			? ((uint8_t)(ui1)) \
			: (((uint8_t)(ui1)) % ((uint8_t)(ui2)))))

#define safe_div_func_uint8_t_u_u(ui1,_ui1,ui2,_ui2) \
	        ((uint8_t)( ui1 = (_ui1), ui2 = (_ui2) , \
                 (((uint8_t)(ui2)) == ((uint8_t)0)) \
			? ((uint8_t)(ui1)) \
			: (((uint8_t)(ui1)) / ((uint8_t)(ui2)))))

#define c99_strict_safe_lshift_func_uint8_t_u_s(left,_left,right,_right) \
	((uint8_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint8_t)0)) \
			 || (((int)(right)) >= sizeof(uint8_t)*CHAR_BIT) \
			 || (((uint8_t)(left)) > ((UINT8_MAX) >> ((int)(right))))) \
			? ((uint8_t)(left)) \
			: (((uint8_t)(left)) << ((int)(right)))))

#define c99_strict_safe_lshift_func_uint8_t_u_u(left,_left,right,_right) \
	 ((uint8_t)( left = (_left), right = (_right) , \
           ((((unsigned int)(right)) >= sizeof(uint8_t)*CHAR_BIT) \
			 || (((uint8_t)(left)) > ((UINT8_MAX) >> ((unsigned int)(right))))) \
			? ((uint8_t)(left)) \
			: (((uint8_t)(left)) << ((unsigned int)(right)))))

#define c99_strict_safe_rshift_func_uint8_t_u_s(left,_left,right,_right) \
	((uint8_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint8_t)0)) \
			 || (((int)(right)) >= sizeof(uint8_t)*CHAR_BIT)) \
			? ((uint8_t)(left)) \
			: (((uint8_t)(left)) >> ((int)(right)))))

#define c99_strict_safe_rshift_func_uint8_t_u_u(left,_left,right,_right) \
	((uint8_t)( left = (_left), right = (_right) , \
                 (((unsigned int)(right)) >= sizeof(uint8_t)*CHAR_BIT) \
			 ? ((uint8_t)(left)) \
			 : (((uint8_t)(left)) >> ((unsigned int)(right)))))

#define safe_lshift_func_uint8_t_u_s(left,_left,right,_right) \
	((uint8_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint8_t)0)) \
			 || (((int)(right)) >= sizeof(uint8_t)*CHAR_BIT) \
			) \
			? ((uint8_t)(left)) \
			: (((uint8_t)(left)) << ((int)(right)))))

#define safe_lshift_func_uint8_t_u_u(left,_left,right,_right) \
	 ((uint8_t)( left = (_left), right = (_right) , \
           ((((unsigned int)(right)) >= sizeof(uint8_t)*CHAR_BIT)) \
			? ((uint8_t)(left)) \
			: (((uint8_t)(left)) << ((unsigned int)(right)))))

#define safe_rshift_func_uint8_t_u_s(left,_left,right,_right) \
	((uint8_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint8_t)0)) \
			 || (((int)(right)) >= sizeof(uint8_t)*CHAR_BIT)) \
			? ((uint8_t)(left)) \
			: (((uint8_t)(left)) >> ((int)(right)))))

#define safe_rshift_func_uint8_t_u_u(left,_left,right,_right) \
	((uint8_t)( left = (_left), right = (_right) , \
                 (((unsigned int)(right)) >= sizeof(uint8_t)*CHAR_BIT) \
			 ? ((uint8_t)(left)) \
			 : (((uint8_t)(left)) >> ((unsigned int)(right)))))




#define safe_unary_minus_func_uint16_t_u(ui,_ui) \
  ((uint16_t)( ui = (_ui), -((uint16_t)(ui))))

#define safe_add_func_uint16_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint16_t)( ui1 = (_ui1), ui2 = (_ui2) , \
  ((uint16_t)(ui1)) + ((uint16_t)(ui2))))

#define safe_sub_func_uint16_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint16_t)( ui1 = (_ui1), ui2 = (_ui2) , ((uint16_t)(ui1)) - ((uint16_t)(ui2))))

#define safe_mul_func_uint16_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint16_t)(( ui1 = (_ui1), ui2 = (_ui2) , (uint16_t)(((unsigned int)(ui1)) * ((unsigned int)(ui2))))))

#define safe_mod_func_uint16_t_u_u(ui1,_ui1,ui2,_ui2) \
	((uint16_t)( ui1 = (_ui1), ui2 = (_ui2) , \
         (((uint16_t)(ui2)) == ((uint16_t)0)) \
			? ((uint16_t)(ui1)) \
			: (((uint16_t)(ui1)) % ((uint16_t)(ui2)))))

#define safe_div_func_uint16_t_u_u(ui1,_ui1,ui2,_ui2) \
	        ((uint16_t)( ui1 = (_ui1), ui2 = (_ui2) , \
                 (((uint16_t)(ui2)) == ((uint16_t)0)) \
			? ((uint16_t)(ui1)) \
			: (((uint16_t)(ui1)) / ((uint16_t)(ui2)))))

#define c99_strict_safe_lshift_func_uint16_t_u_s(left,_left,right,_right) \
	((uint16_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint16_t)0)) \
			 || (((int)(right)) >= sizeof(uint16_t)*CHAR_BIT) \
			 || (((uint16_t)(left)) > ((UINT16_MAX) >> ((int)(right))))) \
			? ((uint16_t)(left)) \
			: (((uint16_t)(left)) << ((int)(right)))))

#define c99_strict_safe_lshift_func_uint16_t_u_u(left,_left,right,_right) \
	 ((uint16_t)( left = (_left), right = (_right) , \
           ((((unsigned int)(right)) >= sizeof(uint16_t)*CHAR_BIT) \
			 || (((uint16_t)(left)) > ((UINT16_MAX) >> ((unsigned int)(right))))) \
			? ((uint16_t)(left)) \
			: (((uint16_t)(left)) << ((unsigned int)(right)))))

#define c99_strict_safe_rshift_func_uint16_t_u_s(left,_left,right,_right) \
	((uint16_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint16_t)0)) \
			 || (((int)(right)) >= sizeof(uint16_t)*CHAR_BIT)) \
			? ((uint16_t)(left)) \
			: (((uint16_t)(left)) >> ((int)(right)))))

#define c99_strict_safe_rshift_func_uint16_t_u_u(left,_left,right,_right) \
	((uint16_t)( left = (_left), right = (_right) , \
                 (((unsigned int)(right)) >= sizeof(uint16_t)*CHAR_BIT) \
			 ? ((uint16_t)(left)) \
			 : (((uint16_t)(left)) >> ((unsigned int)(right)))))

#define safe_lshift_func_uint16_t_u_s(left,_left,right,_right) \
	((uint16_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint16_t)0)) \
			 || (((int)(right)) >= sizeof(uint16_t)*CHAR_BIT) \
			) \
			? ((uint16_t)(left)) \
			: (((uint16_t)(left)) << ((int)(right)))))

#define safe_lshift_func_uint16_t_u_u(left,_left,right,_right) \
	 ((uint16_t)( left = (_left), right = (_right) , \
           ((((unsigned int)(right)) >= sizeof(uint16_t)*CHAR_BIT)) \
			? ((uint16_t)(left)) \
			: (((uint16_t)(left)) << ((unsigned int)(right)))))

#define safe_rshift_func_uint16_t_u_s(left,_left,right,_right) \
	((uint16_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint16_t)0)) \
			 || (((int)(right)) >= sizeof(uint16_t)*CHAR_BIT)) \
			? ((uint16_t)(left)) \
			: (((uint16_t)(left)) >> ((int)(right)))))

#define safe_rshift_func_uint16_t_u_u(left,_left,right,_right) \
	((uint16_t)( left = (_left), right = (_right) , \
                 (((unsigned int)(right)) >= sizeof(uint16_t)*CHAR_BIT) \
			 ? ((uint16_t)(left)) \
			 : (((uint16_t)(left)) >> ((unsigned int)(right)))))




#define safe_unary_minus_func_uint32_t_u(ui,_ui) \
  ((uint32_t)( ui = (_ui), -((uint32_t)(ui))))

#define safe_add_func_uint32_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint32_t)( ui1 = (_ui1), ui2 = (_ui2) , \
  ((uint32_t)(ui1)) + ((uint32_t)(ui2))))

#define safe_sub_func_uint32_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint32_t)( ui1 = (_ui1), ui2 = (_ui2) , ((uint32_t)(ui1)) - ((uint32_t)(ui2))))

#define safe_mul_func_uint32_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint32_t)(( ui1 = (_ui1), ui2 = (_ui2) , (uint32_t)(((unsigned int)(ui1)) * ((unsigned int)(ui2))))))

#define safe_mod_func_uint32_t_u_u(ui1,_ui1,ui2,_ui2) \
	((uint32_t)( ui1 = (_ui1), ui2 = (_ui2) , \
         (((uint32_t)(ui2)) == ((uint32_t)0)) \
			? ((uint32_t)(ui1)) \
			: (((uint32_t)(ui1)) % ((uint32_t)(ui2)))))

#define safe_div_func_uint32_t_u_u(ui1,_ui1,ui2,_ui2) \
	        ((uint32_t)( ui1 = (_ui1), ui2 = (_ui2) , \
                 (((uint32_t)(ui2)) == ((uint32_t)0)) \
			? ((uint32_t)(ui1)) \
			: (((uint32_t)(ui1)) / ((uint32_t)(ui2)))))

#define c99_strict_safe_lshift_func_uint32_t_u_s(left,_left,right,_right) \
	((uint32_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint32_t)0)) \
			 || (((int)(right)) >= sizeof(uint32_t)*CHAR_BIT) \
			 || (((uint32_t)(left)) > ((UINT32_MAX) >> ((int)(right))))) \
			? ((uint32_t)(left)) \
			: (((uint32_t)(left)) << ((int)(right)))))

#define c99_strict_safe_lshift_func_uint32_t_u_u(left,_left,right,_right) \
	 ((uint32_t)( left = (_left), right = (_right) , \
           ((((unsigned int)(right)) >= sizeof(uint32_t)*CHAR_BIT) \
			 || (((uint32_t)(left)) > ((UINT32_MAX) >> ((unsigned int)(right))))) \
			? ((uint32_t)(left)) \
			: (((uint32_t)(left)) << ((unsigned int)(right)))))

#define c99_strict_safe_rshift_func_uint32_t_u_s(left,_left,right,_right) \
	((uint32_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint32_t)0)) \
			 || (((int)(right)) >= sizeof(uint32_t)*CHAR_BIT)) \
			? ((uint32_t)(left)) \
			: (((uint32_t)(left)) >> ((int)(right)))))

#define c99_strict_safe_rshift_func_uint32_t_u_u(left,_left,right,_right) \
	((uint32_t)( left = (_left), right = (_right) , \
                 (((unsigned int)(right)) >= sizeof(uint32_t)*CHAR_BIT) \
			 ? ((uint32_t)(left)) \
			 : (((uint32_t)(left)) >> ((unsigned int)(right)))))

#define safe_lshift_func_uint32_t_u_s(left,_left,right,_right) \
	((uint32_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint32_t)0)) \
			 || (((int)(right)) >= sizeof(uint32_t)*CHAR_BIT) \
			) \
			? ((uint32_t)(left)) \
			: (((uint32_t)(left)) << ((int)(right)))))

#define safe_lshift_func_uint32_t_u_u(left,_left,right,_right) \
	 ((uint32_t)( left = (_left), right = (_right) , \
           ((((unsigned int)(right)) >= sizeof(uint32_t)*CHAR_BIT)) \
			? ((uint32_t)(left)) \
			: (((uint32_t)(left)) << ((unsigned int)(right)))))

#define safe_rshift_func_uint32_t_u_s(left,_left,right,_right) \
	((uint32_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint32_t)0)) \
			 || (((int)(right)) >= sizeof(uint32_t)*CHAR_BIT)) \
			? ((uint32_t)(left)) \
			: (((uint32_t)(left)) >> ((int)(right)))))

#define safe_rshift_func_uint32_t_u_u(left,_left,right,_right) \
	((uint32_t)( left = (_left), right = (_right) , \
                 (((unsigned int)(right)) >= sizeof(uint32_t)*CHAR_BIT) \
			 ? ((uint32_t)(left)) \
			 : (((uint32_t)(left)) >> ((unsigned int)(right)))))




#define safe_unary_minus_func_uint64_t_u(ui,_ui) \
  ((uint64_t)( ui = (_ui), -((uint64_t)(ui))))

#define safe_add_func_uint64_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint64_t)( ui1 = (_ui1), ui2 = (_ui2) , \
  ((uint64_t)(ui1)) + ((uint64_t)(ui2))))

#define safe_sub_func_uint64_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint64_t)( ui1 = (_ui1), ui2 = (_ui2) , ((uint64_t)(ui1)) - ((uint64_t)(ui2))))

#define safe_mul_func_uint64_t_u_u(ui1,_ui1,ui2,_ui2) \
  ((uint64_t)(( ui1 = (_ui1), ui2 = (_ui2) , (uint64_t)(((unsigned long long int)(ui1)) * ((unsigned long long int)(ui2))))))

#define safe_mod_func_uint64_t_u_u(ui1,_ui1,ui2,_ui2) \
	((uint64_t)( ui1 = (_ui1), ui2 = (_ui2) , \
         (((uint64_t)(ui2)) == ((uint64_t)0)) \
			? ((uint64_t)(ui1)) \
			: (((uint64_t)(ui1)) % ((uint64_t)(ui2)))))

#define safe_div_func_uint64_t_u_u(ui1,_ui1,ui2,_ui2) \
	        ((uint64_t)( ui1 = (_ui1), ui2 = (_ui2) , \
                 (((uint64_t)(ui2)) == ((uint64_t)0)) \
			? ((uint64_t)(ui1)) \
			: (((uint64_t)(ui1)) / ((uint64_t)(ui2)))))

#define c99_strict_safe_lshift_func_uint64_t_u_s(left,_left,right,_right) \
	((uint64_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint64_t)0)) \
			 || (((int)(right)) >= sizeof(uint64_t)*CHAR_BIT) \
			 || (((uint64_t)(left)) > ((UINT64_MAX) >> ((int)(right))))) \
			? ((uint64_t)(left)) \
			: (((uint64_t)(left)) << ((int)(right)))))

#define c99_strict_safe_lshift_func_uint64_t_u_u(left,_left,right,_right) \
	 ((uint64_t)( left = (_left), right = (_right) , \
           ((((unsigned int)(right)) >= sizeof(uint64_t)*CHAR_BIT) \
			 || (((uint64_t)(left)) > ((UINT64_MAX) >> ((unsigned int)(right))))) \
			? ((uint64_t)(left)) \
			: (((uint64_t)(left)) << ((unsigned int)(right)))))

#define c99_strict_safe_rshift_func_uint64_t_u_s(left,_left,right,_right) \
	((uint64_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint64_t)0)) \
			 || (((int)(right)) >= sizeof(uint64_t)*CHAR_BIT)) \
			? ((uint64_t)(left)) \
			: (((uint64_t)(left)) >> ((int)(right)))))

#define c99_strict_safe_rshift_func_uint64_t_u_u(left,_left,right,_right) \
	((uint64_t)( left = (_left), right = (_right) , \
                 (((unsigned int)(right)) >= sizeof(uint64_t)*CHAR_BIT) \
			 ? ((uint64_t)(left)) \
			 : (((uint64_t)(left)) >> ((unsigned int)(right)))))

#define safe_lshift_func_uint64_t_u_s(left,_left,right,_right) \
	((uint64_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint64_t)0)) \
			 || (((int)(right)) >= sizeof(uint64_t)*CHAR_BIT) \
			) \
			? ((uint64_t)(left)) \
			: (((uint64_t)(left)) << ((int)(right)))))

#define safe_lshift_func_uint64_t_u_u(left,_left,right,_right) \
	 ((uint64_t)( left = (_left), right = (_right) , \
           ((((unsigned int)(right)) >= sizeof(uint64_t)*CHAR_BIT)) \
			? ((uint64_t)(left)) \
			: (((uint64_t)(left)) << ((unsigned int)(right)))))

#define safe_rshift_func_uint64_t_u_s(left,_left,right,_right) \
	((uint64_t)( left = (_left), right = (_right) , \
          ((((int)(right)) < ((uint64_t)0)) \
			 || (((int)(right)) >= sizeof(uint64_t)*CHAR_BIT)) \
			? ((uint64_t)(left)) \
			: (((uint64_t)(left)) >> ((int)(right)))))

#define safe_rshift_func_uint64_t_u_u(left,_left,right,_right) \
	((uint64_t)( left = (_left), right = (_right) , \
                 (((unsigned int)(right)) >= sizeof(uint64_t)*CHAR_BIT) \
			 ? ((uint64_t)(left)) \
			 : (((uint64_t)(left)) >> ((unsigned int)(right)))))



#endif
-- 
-------------------------------------------------------------------------------
Eric Eide <eeide@cs.utah.edu>  .         University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX