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

[csmith-dev] checksum for floats



Hi,

I am trying to figure out how checksums are being calculated for floats in a csmith-generated file (wrong1.c).  We found some unspecified behavior in this program that was due to conversions when NaN float values are passed (as the first argument) to one of the transparent_crc() functions.  Here is the relevant part from Section F.4 of this publicly available draft of the C99 standard (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf):

"F.4 Floating to integer conversion
1
If the floating value is infinite or NaN or if the integral part of the floating value exceeds the range of the integer type, then the ‘‘invalid’’ floating-point exception is raised and the resulting value is unspecified. Whether conversion of non-integer floating values whose integral part is within the range of the integer type raises the ‘‘inexact’’ floating-point exception is unspecified."

This happens with g_112 (line 701), g_236 (line 742), and g_630 (lin 843), all of which are 3D arrays of unions of type U1. In each case the union is accessed as a float and a NaN value causes the issue. 

These are the functions being called:

static void
transparent_crc (uint64_t val, char* vname, int flag)
{
    crc32_8bytes(val);
    if (flag) {
        printf("...checksum after hashing %s : %lX\n", vname, crc32_context ^ 0xFFFFFFFFUL);
    }
}


static void
transparent_crc (uint32_t val, char* vname, int flag)
{
    crc32_8bytes(val);
    if (flag) {
        printf("...checksum after hashing %s : %X\n", vname, crc32_context ^ 0xFFFFFFFFU);
    }
}



Now, I also found that wrong1.c calls function transparent_crc_bytes function for  the following cases:

g_115: variable of type U1 accessed as float (line 710)
g_129: static float  (line 714)
g_443: static float  (line 787)
g_633: variable of type U1 accessed as float (line 854)
g_696: static float (line 859)
g_728: variable of type U1 accessed as float (line 870)

static void
transparent_crc_bytes (char *ptr, int nbytes, char* vname, int flag)
{
    int i;
    for (i=0; i<nbytes; i++) {
        crc32_byte(ptr[i]);
    }
    if (flag) {
        printf("...checksum after hashing %s : %lX\n", vname, crc32_context ^ 0xFFFFFFFFUL);
    }
}


Here is my hunch (please correct me if I am wrong): 

transparent_crc_bytes() is the function that should be called to include a float variable in the checksum. This is exactly what's happening for normal float variables, and for normal unions accessed as floats. 

However, and this I think is a bug, when elements of  arrays of unions are accessed as floats, the wrong function, i.e. transparent_crc() is being called, instead of transparent_crc_bytes().

I will really appreciate if someone can verify if I have this right. And if so, which file/files I should modify to correct the problem.

Thanks,
Faraz.

/*
 * This is a RANDOMLY GENERATED PROGRAM.
 *
 * Generator: csmith 2.3.0
 * Git version: 59ec982
 * Options:   --bitfields --packed-struct --float --output test1.c
 * Seed:      3582278611
 */

#include <float.h>
#include <math.h>
#include "csmith.h"


static long __undefined;

/* --- Struct/Union Declarations --- */
union U0 {
   const int16_t  f0;
   int8_t * f1;
   volatile int64_t  f2;
   volatile int32_t  f3;
};

union U1 {
   int64_t  f0;
   float  f1;
   int32_t  f2;
   int64_t  f3;
   volatile uint8_t  f4;
};

/* --- GLOBAL VARIABLES --- */
static int8_t g_5[3][8] = {{0xC7L,0xC7L,0xC7L,0xC7L,0xC7L,0xC7L,0xC7L,0xC7L},{0xC7L,0xC7L,0xC7L,0xC7L,0xC7L,0xC7L,0xC7L,0xC7L},{0xC7L,0xC7L,0xC7L,0xC7L,0xC7L,0xC7L,0xC7L,0xC7L}};
static volatile int8_t g_22 = 0xE0L;/* VOLATILE GLOBAL g_22 */
static volatile int8_t *g_21 = &g_22;
static volatile int8_t * volatile *g_20 = &g_21;
static volatile int8_t * volatile ** volatile g_19[9][7] = {{&g_20,&g_20,&g_20,&g_20,&g_20,(void*)0,&g_20},{&g_20,&g_20,&g_20,(void*)0,(void*)0,&g_20,&g_20},{&g_20,&g_20,&g_20,&g_20,&g_20,&g_20,(void*)0},{&g_20,&g_20,(void*)0,&g_20,&g_20,&g_20,&g_20},{&g_20,&g_20,&g_20,&g_20,&g_20,&g_20,&g_20},{&g_20,&g_20,&g_20,&g_20,&g_20,&g_20,(void*)0},{&g_20,&g_20,&g_20,&g_20,&g_20,&g_20,&g_20},{&g_20,&g_20,&g_20,(void*)0,&g_20,&g_20,&g_20},{&g_20,&g_20,&g_20,&g_20,&g_20,&g_20,&g_20}};
static int32_t g_28 = 0L;
static uint64_t g_57 = 5UL;
static int32_t g_79 = 2L;
static const int32_t *g_78 = &g_79;
static int16_t g_81 = (-9L);
static uint16_t g_91[10] = {65531UL,0x3ADBL,65531UL,0x3ADBL,65531UL,0x3ADBL,65531UL,0x3ADBL,65531UL,0x3ADBL};
static int32_t g_95 = 0xFB092334L;
static union U1 g_112[5][7][6] = {{{{-2L},{0xFE5387F91F76D5A1LL},{0x563F505669B834A4LL},{-4L},{8L},{0xA27E8BC2989FB28ELL}},{{0x79FE0895C1B54BBBLL},{5L},{0x7058F739C81172E9LL},{9L},{9L},{0x7058F739C81172E9LL}},{{5L},{5L},{0xB6BB073D286A5854LL},{0x79FE0895C1B54BBBLL},{8L},{0L}},{{-1L},{0xFE5387F91F76D5A1LL},{-1L},{0x40CD912EB57571CALL},{0x21BD337155FAF6E0LL},{0xB6BB073D286A5854LL}},{{-4L},{-1L},{-1L},{0xD5BEC68AB6310099LL},{5L},{0L}},{{-6L},{0xD5BEC68AB6310099LL},{0xB6BB073D286A5854LL},{0x8860579173DEB0DBLL},{-2L},{0x7058F739C81172E9LL}},{{0x8860579173DEB0DBLL},{-2L},{0x7058F739C81172E9LL},{0x8860579173DEB0DBLL},{0x40CD912EB57571CALL},{0xA27E8BC2989FB28ELL}}},{{{-6L},{9L},{0x563F505669B834A4LL},{0xD5BEC68AB6310099LL},{-4L},{0L}},{{-4L},{0x40CD912EB57571CALL},{0L},{0x40CD912EB57571CALL},{-4L},{0x8264474F4469BDECLL}},{{-1L},{9L},{-10L},{0x79FE0895C1B54BBBLL},{0x40CD912EB57571CALL},{0x563F505669B834A4LL}},{{5L},{-2L},{0L},{9L},{-2L},{0x563F505669B834A4LL}},{{0x79FE0895C1B54BBBLL},{0xD5BEC68AB6310099LL},{-10L},{-4L},{5L},{0x8264474F4469BDECLL}},{{-2L},{-1L},{0L},{5L},{0x21BD337155FAF6E0LL},{0L}},{{-2L},{0xFE5387F91F76D5A1LL},{0x563F505669B834A4LL},{-4L},{8L},{0xA27E8BC2989FB28ELL}}},{{{0x79FE0895C1B54BBBLL},{5L},{0x7058F739C81172E9LL},{9L},{9L},{0x7058F739C81172E9LL}},{{5L},{5L},{0xB6BB073D286A5854LL},{0x79FE0895C1B54BBBLL},{8L},{0L}},{{-1L},{0xFE5387F91F76D5A1LL},{-1L},{0x40CD912EB57571CALL},{0x21BD337155FAF6E0LL},{0xB6BB073D286A5854LL}},{{-4L},{-1L},{-1L},{0xD5BEC68AB6310099LL},{5L},{0L}},{{-6L},{0xD5BEC68AB6310099LL},{0xB6BB073D286A5854LL},{0x8860579173DEB0DBLL},{-2L},{0x7058F739C81172E9LL}},{{0x8860579173DEB0DBLL},{-2L},{0x7058F739C81172E9LL},{0x8860579173DEB0DBLL},{0x40CD912EB57571CALL},{0xA27E8BC2989FB28ELL}},{{-6L},{9L},{0x563F505669B834A4LL},{0xD5BEC68AB6310099LL},{-4L},{0L}}},{{{-4L},{0x40CD912EB57571CALL},{0L},{0x40CD912EB57571CALL},{-4L},{0x8264474F4469BDECLL}},{{-1L},{9L},{-10L},{0x79FE0895C1B54BBBLL},{0x40CD912EB57571CALL},{0x563F505669B834A4LL}},{{5L},{-2L},{-2L},{2L},{4L},{0x40CD912EB57571CALL}},{{-6L},{0L},{0x21BD337155FAF6E0LL},{-2L},{0xFE2B3C890F2B86D1LL},{8L}},{{4L},{-1L},{-6L},{0xFE2B3C890F2B86D1LL},{1L},{0x79FE0895C1B54BBBLL}},{{4L},{-1L},{0x40CD912EB57571CALL},{-2L},{1L},{0xFE5387F91F76D5A1LL}},{{-6L},{0xFE2B3C890F2B86D1LL},{0x8860579173DEB0DBLL},{2L},{2L},{0x8860579173DEB0DBLL}}},{{{0xFE2B3C890F2B86D1LL},{0xFE2B3C890F2B86D1LL},{-1L},{-6L},{1L},{-2L}},{{-1L},{-1L},{9L},{-8L},{1L},{-1L}},{{-2L},{-1L},{9L},{0L},{0xFE2B3C890F2B86D1LL},{-2L}},{{0x452B547262ED815CLL},{0L},{-1L},{3L},{4L},{0x8860579173DEB0DBLL}},{{3L},{4L},{0x8860579173DEB0DBLL},{3L},{-8L},{0xFE5387F91F76D5A1LL}},{{0x452B547262ED815CLL},{2L},{0x40CD912EB57571CALL},{0L},{-2L},{0x79FE0895C1B54BBBLL}},{{-2L},{-8L},{-6L},{-8L},{-2L},{8L}}}};
static union U1 *g_111 = &g_112[0][6][4];
static union U1 g_115 = {0x3AC5977F73882F6ELL};/* VOLATILE GLOBAL g_115 */
static float g_129 = 0x4.927215p-85;
static uint32_t g_131[6][1] = {{4294967295UL},{4294967295UL},{0xDA3A84B1L},{4294967295UL},{4294967295UL},{0xDA3A84B1L}};
static int64_t g_132[10] = {(-4L),(-4L),(-4L),(-4L),(-4L),(-4L),(-4L),(-4L),(-4L),(-4L)};
static int8_t g_135 = 0x70L;
static int8_t g_137 = (-1L);
static int16_t g_157 = 1L;
static uint8_t g_159 = 255UL;
static uint32_t g_197 = 0UL;
static uint32_t g_217 = 0xC9C70339L;
static union U1 g_236[2][10][10] = {{{{7L},{0xD07D27A5EFBF458ELL},{0L},{-7L},{0xA5423102FA715DBDLL},{-1L},{0x4B6F45FEBA7B4AABLL},{0x747A784966DF2B7ELL},{-6L},{1L}},{{5L},{0x376D0E6FC6E757BDLL},{0x4B6F45FEBA7B4AABLL},{0xD73FC83B2B3EE73BLL},{-1L},{7L},{0xB7D6CBA3FD385860LL},{0x702D6E2B20D12CEFLL},{0xE46F1E76E659DC61LL},{-1L}},{{0L},{-8L},{0x376D0E6FC6E757BDLL},{-10L},{1L},{1L},{-10L},{0x376D0E6FC6E757BDLL},{-8L},{0L}},{{0xCB91727638A56F4ALL},{1L},{0xA70B08318785BF4ELL},{7L},{1L},{0xA5423102FA715DBDLL},{1L},{0xE46F1E76E659DC61LL},{-1L},{5L}},{{-1L},{5L},{0x875BFB83DF84B374LL},{1L},{1L},{0x1407DF1CD13059B5LL},{-2L},{0x1A171FB92C6D3135LL},{3L},{0L}},{{1L},{1L},{0xB7D6CBA3FD385860LL},{0x14DE5F10DCD9A750LL},{1L},{8L},{0x486784E56988B79ALL},{0x65B8E6694AF43C66LL},{0x832468EDAAE2F90DLL},{-1L}},{{-2L},{0x747A784966DF2B7ELL},{-1L},{0x5BAE4C8984C801F5LL},{-1L},{0xA70B08318785BF4ELL},{3L},{0x14DE5F10DCD9A750LL},{1L},{1L}},{{0x1A171FB92C6D3135LL},{-1L},{-1L},{0xC81D454ED2D85002LL},{0xA5423102FA715DBDLL},{-6L},{-8L},{1L},{0xA70B08318785BF4ELL},{0x486784E56988B79ALL}},{{0x14DE5F10DCD9A750LL},{5L},{-6L},{-1L},{0L},{-1L},{-6L},{5L},{0x14DE5F10DCD9A750LL},{1L}},{{-6L},{0L},{0x4F7985680D3D6280LL},{0x71351573A41D34E9LL},{0x875BFB83DF84B374LL},{0xE46F1E76E659DC61LL},{-1L},{-1L},{1L},{1L}}},{{{0x4D9B1F63CB30F97FLL},{-10L},{-1L},{0x71351573A41D34E9LL},{0xCB91727638A56F4ALL},{-6L},{0xB82D187CE43ADCCCLL},{-1L},{0xD73FC83B2B3EE73BLL},{0xB7D6CBA3FD385860LL}},{{0xA70B08318785BF4ELL},{0x4F7985680D3D6280LL},{-1L},{0L},{0x4B6F45FEBA7B4AABLL},{-10L},{0xE46F1E76E659DC61LL},{8L},{-1L},{0xF2EA3B7AFEDB2CFDLL}},{{5L},{8L},{0x376D0E6FC6E757BDLL},{0x875BFB83DF84B374LL},{-1L},{0xB7D6CBA3FD385860LL},{0x4D9B1F63CB30F97FLL},{0x71351573A41D34E9LL},{0L},{-8L}},{{0x14DE5F10DCD9A750LL},{0L},{-2L},{0x4D9B1F63CB30F97FLL},{0x1407DF1CD13059B5LL},{8L},{5L},{0L},{1L},{1L}},{{0xF2EA3B7AFEDB2CFDLL},{0xD07D27A5EFBF458ELL},{0x65B8E6694AF43C66LL},{0xD73FC83B2B3EE73BLL},{0xD73FC83B2B3EE73BLL},{0x65B8E6694AF43C66LL},{0xD07D27A5EFBF458ELL},{0xF2EA3B7AFEDB2CFDLL},{-1L},{0x376D0E6FC6E757BDLL}},{{0x328CD33419C3FDF3LL},{0x4B6F45FEBA7B4AABLL},{-1L},{0xA70B08318785BF4ELL},{0x832468EDAAE2F90DLL},{0xB602D27DD38B32CDLL},{1L},{5L},{0L},{0xD73FC83B2B3EE73BLL}},{{0x1A171FB92C6D3135LL},{0xC81D454ED2D85002LL},{-1L},{0x832468EDAAE2F90DLL},{0x71351573A41D34E9LL},{5L},{-10L},{0xF2EA3B7AFEDB2CFDLL},{-1L},{3L}},{{3L},{-1L},{0x65B8E6694AF43C66LL},{0x376D0E6FC6E757BDLL},{8L},{-3L},{0x875BFB83DF84B374LL},{0L},{0x702D6E2B20D12CEFLL},{0xC81D454ED2D85002LL}},{{0x4B6F45FEBA7B4AABLL},{5L},{-2L},{0xC81D454ED2D85002LL},{0L},{0x486784E56988B79ALL},{0xF2EA3B7AFEDB2CFDLL},{0x71351573A41D34E9LL},{-1L},{0x832468EDAAE2F90DLL}},{{0x71351573A41D34E9LL},{-6L},{0x376D0E6FC6E757BDLL},{0xE46F1E76E659DC61LL},{0x328CD33419C3FDF3LL},{0x1407DF1CD13059B5LL},{0x747A784966DF2B7ELL},{8L},{5L},{8L}}}};
static float **g_255 = (void*)0;
static uint8_t g_258 = 0x25L;
static uint32_t g_268[3] = {18446744073709551615UL,18446744073709551615UL,18446744073709551615UL};
static int32_t g_301[3][10][5] = {{{0L,0x2A31CB77L,0x2A31CB77L,0L,0xACF56058L},{0x07015147L,0L,6L,8L,7L},{6L,(-5L),0x62646C3EL,0x7C13E153L,0xD20C3A44L},{(-10L),(-1L),0xBB3BA1B5L,8L,0L},{1L,(-1L),0x7675F052L,0L,0x7C13E153L},{0L,0xE16E3129L,0L,0L,0x11E1B118L},{0L,1L,0x8CD85230L,(-5L),(-1L)},{4L,0xED67E46AL,0L,0L,0xED67E46AL},{1L,0x74F28B1DL,0x4467D04AL,0x5E689B40L,0L},{(-4L),(-1L),0x40ABFD16L,7L,0xBB3BA1B5L}},{{(-1L),0xB6EAE9B2L,(-1L),0xF59CC5FAL,(-5L)},{(-4L),8L,0x11E1B118L,0x5A1432EDL,0xEE4AD0ADL},{1L,0x85E74F07L,0L,1L,1L},{4L,0L,(-1L),0xBB3BA1B5L,0xDEB071DCL},{0L,0xC1EEBDB0L,(-9L),7L,7L},{0L,(-6L),0L,0L,0x1A845F29L},{1L,0xA91401CDL,0x7C13E153L,(-1L),0x85E74F07L},{(-10L),0x5A1432EDL,0x689A6D01L,0L,0L},{6L,(-1L),(-5L),1L,(-4L)},{8L,0L,0L,0L,0x57E93B1DL}},{{0x7675F052L,(-5L),0L,0xB6EAE9B2L,0x62646C3EL},{0L,0xE16E3129L,(-1L),0x5A1432EDL,0L},{0xF59CC5FAL,0x8CD85230L,1L,0x8CD85230L,0xF59CC5FAL},{(-1L),(-10L),0x1A845F29L,8L,4L},{6L,0xD20C3A44L,0xF59CC5FAL,1L,0xD90D490BL},{(-6L),0L,0L,(-10L),4L},{0xACF56058L,1L,(-4L),0x7C13E153L,0xF59CC5FAL},{4L,0xB38B262BL,0L,7L,0L},{(-4L),0x5E689B40L,0x74F28B1DL,1L,0x62646C3EL},{0x07015147L,0x6B272416L,0x57E93B1DL,0L,0x57E93B1DL}}};
static uint64_t *g_390[1] = {&g_57};
static uint8_t g_394[2][1][9] = {{{0x8AL,3UL,0x8AL,3UL,0x8AL,3UL,0x8AL,3UL,0x8AL}},{{0x67L,0x67L,0x67L,0x67L,0x67L,0x67L,0x67L,0x67L,0x67L}}};
static uint32_t g_421[9] = {0x4845918BL,0x4845918BL,0x4845918BL,0x4845918BL,0x4845918BL,0x4845918BL,0x4845918BL,0x4845918BL,0x4845918BL};
static float g_443 = (-0x3.Fp+1);
static int16_t g_446 = 0xF60AL;
static uint32_t g_447 = 0xBF1BDB41L;
static int8_t *g_471 = (void*)0;
static int8_t **g_470 = &g_471;
static int8_t ***g_469[10][9] = {{&g_470,&g_470,&g_470,&g_470,(void*)0,&g_470,(void*)0,&g_470,&g_470},{&g_470,&g_470,(void*)0,&g_470,&g_470,&g_470,&g_470,&g_470,&g_470},{&g_470,&g_470,(void*)0,&g_470,&g_470,&g_470,&g_470,&g_470,&g_470},{&g_470,(void*)0,&g_470,(void*)0,&g_470,&g_470,&g_470,(void*)0,&g_470},{&g_470,&g_470,(void*)0,(void*)0,&g_470,&g_470,&g_470,(void*)0,&g_470},{(void*)0,&g_470,&g_470,&g_470,(void*)0,&g_470,(void*)0,&g_470,&g_470},{(void*)0,&g_470,&g_470,(void*)0,&g_470,&g_470,(void*)0,&g_470,&g_470},{&g_470,&g_470,&g_470,&g_470,(void*)0,&g_470,&g_470,(void*)0,&g_470},{(void*)0,&g_470,&g_470,&g_470,(void*)0,&g_470,&g_470,&g_470,&g_470},{&g_470,&g_470,&g_470,(void*)0,&g_470,(void*)0,&g_470,&g_470,&g_470}};
static const volatile union U1 * volatile * volatile *g_499 = (void*)0;
static uint32_t g_501 = 0x301F5196L;
static uint8_t * volatile g_505 = &g_394[0][0][8];/* VOLATILE GLOBAL g_505 */
static uint8_t * volatile * const g_504 = &g_505;
static union U0 g_510 = {0L};/* VOLATILE GLOBAL g_510 */
static union U0 g_511 = {0x3E11L};/* VOLATILE GLOBAL g_511 */
static union U0 g_512 = {1L};/* VOLATILE GLOBAL g_512 */
static union U0 g_513 = {0xD1C9L};/* VOLATILE GLOBAL g_513 */
static union U0 g_514 = {0x0B0EL};/* VOLATILE GLOBAL g_514 */
static union U0 g_515 = {0x5954L};/* VOLATILE GLOBAL g_515 */
static union U0 g_516[4] = {{0xA2A4L},{0xA2A4L},{0xA2A4L},{0xA2A4L}};
static union U0 g_517[3][3] = {{{0xE678L},{0xE678L},{0xE678L}},{{0xE678L},{0xE678L},{0xE678L}},{{0xE678L},{0xE678L},{0xE678L}}};
static union U0 g_518 = {0x2C5CL};/* VOLATILE GLOBAL g_518 */
static union U0 g_519 = {-4L};/* VOLATILE GLOBAL g_519 */
static union U0 g_520 = {0x03E6L};/* VOLATILE GLOBAL g_520 */
static union U0 g_521 = {0x0A1CL};/* VOLATILE GLOBAL g_521 */
static union U0 g_522 = {-1L};/* VOLATILE GLOBAL g_522 */
static union U0 g_523 = {1L};/* VOLATILE GLOBAL g_523 */
static union U0 g_524[10] = {{-9L},{0x9136L},{-9L},{0x9136L},{-9L},{0x9136L},{-9L},{0x9136L},{-9L},{0x9136L}};
static union U0 g_525 = {0L};/* VOLATILE GLOBAL g_525 */
static union U0 g_526[8] = {{0x89DEL},{0x89DEL},{0L},{0x89DEL},{0x89DEL},{0L},{0x89DEL},{0x89DEL}};
static union U0 g_527 = {0L};/* VOLATILE GLOBAL g_527 */
static union U0 g_528 = {1L};/* VOLATILE GLOBAL g_528 */
static union U0 g_529 = {0x5ED3L};/* VOLATILE GLOBAL g_529 */
static union U0 g_530 = {0L};/* VOLATILE GLOBAL g_530 */
static int16_t *g_547 = &g_81;
static int16_t **g_546 = &g_547;
static uint32_t g_609 = 8UL;
static union U1 g_630[2][7][1] = {{{{1L}},{{7L}},{{1L}},{{7L}},{{1L}},{{7L}},{{1L}}},{{{7L}},{{1L}},{{7L}},{{1L}},{{7L}},{{1L}},{{7L}}}};
static int8_t g_631 = 3L;
static union U1 g_633 = {0L};/* VOLATILE GLOBAL g_633 */
static uint16_t * const g_651 = (void*)0;
static uint16_t * const *g_650 = &g_651;
static int32_t *g_658 = &g_95;
static uint32_t g_686 = 0xB19FE7BCL;
static float g_696 = 0x2.485F9Dp-80;
static int8_t g_697[8] = {0xFBL,0xFBL,0xFBL,0xFBL,0xFBL,0xFBL,0xFBL,0xFBL};
static int8_t g_698 = (-8L);
static uint32_t g_699 = 0UL;
static uint8_t g_716 = 255UL;
static union U1 g_728 = {0L};/* VOLATILE GLOBAL g_728 */
static int32_t *g_746 = &g_115.f2;
static int32_t * const  volatile *g_745 = &g_746;
static int32_t g_757 = 0xC5B4D69BL;
static const int32_t *g_801 = &g_757;
static uint32_t g_842 = 0x8412F124L;
static const uint32_t g_866 = 0x3CE54820L;
static union U0 *g_869 = &g_519;
static union U0 ** const  volatile g_868[7] = {&g_869,&g_869,&g_869,&g_869,&g_869,&g_869,&g_869};
static union U0 ** volatile g_871 = &g_869;/* VOLATILE GLOBAL g_871 */
static const union U0 g_919[8] = {{1L},{1L},{1L},{1L},{1L},{1L},{1L},{1L}};
static float * volatile g_938[4][9][7] = {{{&g_728.f1,&g_630[1][5][0].f1,&g_728.f1,&g_443,&g_630[1][5][0].f1,&g_728.f1,&g_630[1][5][0].f1},{&g_236[0][3][0].f1,&g_633.f1,(void*)0,(void*)0,(void*)0,&g_633.f1,&g_236[0][3][0].f1},{&g_630[1][5][0].f1,&g_129,&g_443,&g_633.f1,(void*)0,&g_112[0][6][4].f1,(void*)0},{&g_112[0][6][4].f1,&g_630[1][5][0].f1,&g_443,&g_236[0][3][0].f1,&g_728.f1,&g_112[0][6][4].f1,&g_728.f1},{&g_236[0][3][0].f1,(void*)0,&g_443,&g_236[0][3][0].f1,(void*)0,&g_129,&g_630[1][5][0].f1},{(void*)0,&g_115.f1,(void*)0,&g_728.f1,&g_236[0][3][0].f1,&g_129,(void*)0},{&g_112[0][6][4].f1,(void*)0,&g_728.f1,(void*)0,&g_728.f1,&g_443,&g_129},{&g_112[0][6][4].f1,(void*)0,&g_129,&g_112[0][6][4].f1,(void*)0,(void*)0,(void*)0},{&g_630[1][5][0].f1,&g_115.f1,&g_112[0][6][4].f1,&g_115.f1,&g_630[1][5][0].f1,&g_112[0][6][4].f1,&g_112[0][6][4].f1}},{{&g_115.f1,(void*)0,&g_630[1][5][0].f1,&g_129,&g_633.f1,&g_630[1][5][0].f1,&g_112[0][6][4].f1},{&g_112[0][6][4].f1,&g_630[1][5][0].f1,&g_728.f1,&g_728.f1,&g_112[0][6][4].f1,(void*)0,&g_112[0][6][4].f1},{&g_115.f1,&g_129,&g_728.f1,&g_633.f1,&g_129,&g_630[1][5][0].f1,&g_443},{&g_630[1][5][0].f1,&g_633.f1,&g_112[0][6][4].f1,&g_129,&g_443,&g_112[0][6][4].f1,&g_236[0][3][0].f1},{&g_112[0][6][4].f1,&g_630[1][5][0].f1,(void*)0,&g_630[1][5][0].f1,&g_112[0][6][4].f1,&g_115.f1,&g_236[0][3][0].f1},{&g_112[0][6][4].f1,&g_112[0][6][4].f1,&g_112[0][6][4].f1,&g_443,&g_236[0][3][0].f1,&g_236[0][3][0].f1,&g_443},{(void*)0,&g_728.f1,(void*)0,(void*)0,(void*)0,(void*)0,&g_112[0][6][4].f1},{&g_236[0][3][0].f1,&g_129,&g_728.f1,&g_728.f1,(void*)0,&g_728.f1,&g_112[0][6][4].f1},{&g_112[0][6][4].f1,&g_236[0][3][0].f1,&g_443,&g_112[0][6][4].f1,&g_129,(void*)0,&g_112[0][6][4].f1}},{{&g_630[1][5][0].f1,(void*)0,(void*)0,&g_236[0][3][0].f1,&g_236[0][3][0].f1,&g_236[0][3][0].f1,(void*)0},{&g_236[0][3][0].f1,&g_633.f1,&g_236[0][3][0].f1,&g_115.f1,&g_728.f1,&g_115.f1,&g_630[1][5][0].f1},{&g_112[0][6][4].f1,&g_129,&g_112[0][6][4].f1,(void*)0,&g_728.f1,&g_236[0][3][0].f1,&g_728.f1},{&g_728.f1,&g_112[0][6][4].f1,&g_236[0][3][0].f1,&g_630[1][5][0].f1,&g_630[1][5][0].f1,&g_236[0][3][0].f1,&g_112[0][6][4].f1},{&g_633.f1,&g_443,(void*)0,&g_129,&g_443,&g_728.f1,(void*)0},{&g_728.f1,&g_236[0][3][0].f1,(void*)0,(void*)0,&g_630[1][5][0].f1,&g_112[0][6][4].f1,&g_129},{&g_236[0][3][0].f1,&g_112[0][6][4].f1,&g_129,&g_129,(void*)0,&g_236[0][3][0].f1,&g_728.f1},{&g_112[0][6][4].f1,&g_129,&g_236[0][3][0].f1,&g_630[1][5][0].f1,&g_443,(void*)0,(void*)0},{&g_112[0][6][4].f1,&g_633.f1,&g_728.f1,(void*)0,&g_236[0][3][0].f1,&g_728.f1,&g_112[0][6][4].f1}},{{(void*)0,&g_443,&g_728.f1,&g_728.f1,&g_115.f1,&g_443,(void*)0},{&g_630[1][5][0].f1,&g_630[1][5][0].f1,&g_236[0][3][0].f1,&g_236[0][3][0].f1,&g_630[1][5][0].f1,&g_630[1][5][0].f1,&g_115.f1},{&g_630[1][5][0].f1,&g_633.f1,&g_129,(void*)0,&g_236[0][3][0].f1,(void*)0,(void*)0},{&g_728.f1,&g_728.f1,(void*)0,&g_728.f1,&g_112[0][6][4].f1,(void*)0,(void*)0},{(void*)0,&g_633.f1,(void*)0,&g_728.f1,&g_443,&g_112[0][6][4].f1,&g_236[0][3][0].f1},{(void*)0,&g_630[1][5][0].f1,&g_236[0][3][0].f1,&g_728.f1,&g_728.f1,&g_728.f1,(void*)0},{&g_129,&g_443,&g_112[0][6][4].f1,&g_236[0][3][0].f1,(void*)0,(void*)0,&g_129},{&g_129,&g_633.f1,&g_443,&g_630[1][5][0].f1,&g_633.f1,&g_728.f1,&g_633.f1},{(void*)0,&g_129,&g_129,(void*)0,(void*)0,&g_728.f1,&g_630[1][5][0].f1}}};
static float * volatile g_939 = &g_115.f1;/* VOLATILE GLOBAL g_939 */
static volatile int64_t g_940 = (-1L);/* VOLATILE GLOBAL g_940 */
static float * volatile g_962[9][7][4] = {{{(void*)0,&g_236[0][3][0].f1,&g_112[0][6][4].f1,&g_728.f1},{(void*)0,(void*)0,&g_633.f1,&g_112[0][6][4].f1},{&g_115.f1,(void*)0,&g_633.f1,&g_696},{&g_630[1][5][0].f1,&g_112[0][6][4].f1,(void*)0,&g_696},{&g_443,(void*)0,&g_728.f1,&g_112[0][6][4].f1},{&g_112[0][6][4].f1,(void*)0,&g_728.f1,&g_728.f1},{&g_236[0][3][0].f1,&g_236[0][3][0].f1,&g_728.f1,(void*)0}},{{&g_112[0][6][4].f1,&g_443,&g_728.f1,&g_696},{&g_443,&g_115.f1,(void*)0,&g_728.f1},{&g_630[1][5][0].f1,&g_115.f1,&g_633.f1,&g_696},{&g_115.f1,&g_443,&g_633.f1,(void*)0},{(void*)0,&g_236[0][3][0].f1,&g_112[0][6][4].f1,&g_728.f1},{(void*)0,(void*)0,&g_633.f1,&g_112[0][6][4].f1},{&g_115.f1,(void*)0,&g_633.f1,&g_696}},{{&g_630[1][5][0].f1,&g_112[0][6][4].f1,(void*)0,&g_696},{&g_443,(void*)0,&g_728.f1,&g_112[0][6][4].f1},{&g_112[0][6][4].f1,(void*)0,&g_728.f1,&g_728.f1},{&g_236[0][3][0].f1,&g_236[0][3][0].f1,&g_728.f1,(void*)0},{&g_112[0][6][4].f1,&g_443,&g_728.f1,&g_696},{&g_112[0][6][4].f1,&g_112[0][6][4].f1,&g_696,&g_696},{(void*)0,&g_112[0][6][4].f1,&g_633.f1,&g_728.f1}},{{&g_112[0][6][4].f1,&g_443,(void*)0,&g_696},{&g_236[0][3][0].f1,&g_115.f1,&g_696,&g_112[0][6][4].f1},{&g_236[0][3][0].f1,(void*)0,(void*)0,&g_115.f1},{&g_112[0][6][4].f1,&g_236[0][3][0].f1,&g_633.f1,&g_728.f1},{(void*)0,(void*)0,&g_696,&g_728.f1},{&g_112[0][6][4].f1,&g_236[0][3][0].f1,&g_696,&g_115.f1},{&g_630[1][5][0].f1,(void*)0,&g_112[0][6][4].f1,&g_112[0][6][4].f1}},{{&g_115.f1,&g_115.f1,&g_112[0][6][4].f1,&g_696},{&g_630[1][5][0].f1,&g_443,&g_696,&g_728.f1},{&g_112[0][6][4].f1,&g_112[0][6][4].f1,&g_696,&g_696},{(void*)0,&g_112[0][6][4].f1,&g_633.f1,&g_728.f1},{&g_112[0][6][4].f1,&g_443,(void*)0,&g_696},{&g_236[0][3][0].f1,&g_115.f1,&g_696,&g_112[0][6][4].f1},{&g_236[0][3][0].f1,(void*)0,(void*)0,&g_115.f1}},{{&g_112[0][6][4].f1,&g_236[0][3][0].f1,&g_633.f1,&g_728.f1},{(void*)0,(void*)0,&g_696,&g_728.f1},{&g_112[0][6][4].f1,&g_236[0][3][0].f1,&g_696,&g_115.f1},{&g_630[1][5][0].f1,(void*)0,&g_112[0][6][4].f1,&g_112[0][6][4].f1},{&g_115.f1,&g_115.f1,&g_112[0][6][4].f1,&g_696},{&g_630[1][5][0].f1,&g_443,&g_696,&g_728.f1},{&g_112[0][6][4].f1,&g_112[0][6][4].f1,&g_696,&g_696}},{{(void*)0,&g_112[0][6][4].f1,&g_633.f1,&g_728.f1},{&g_112[0][6][4].f1,&g_443,(void*)0,&g_696},{&g_236[0][3][0].f1,&g_115.f1,&g_696,&g_112[0][6][4].f1},{&g_236[0][3][0].f1,(void*)0,(void*)0,&g_115.f1},{&g_112[0][6][4].f1,&g_236[0][3][0].f1,&g_633.f1,&g_728.f1},{(void*)0,(void*)0,&g_696,&g_728.f1},{&g_112[0][6][4].f1,&g_236[0][3][0].f1,&g_696,&g_115.f1}},{{&g_630[1][5][0].f1,(void*)0,&g_112[0][6][4].f1,&g_112[0][6][4].f1},{&g_115.f1,&g_115.f1,&g_112[0][6][4].f1,&g_696},{&g_630[1][5][0].f1,&g_443,&g_696,&g_728.f1},{&g_112[0][6][4].f1,&g_112[0][6][4].f1,&g_696,&g_696},{(void*)0,&g_112[0][6][4].f1,&g_633.f1,&g_728.f1},{&g_112[0][6][4].f1,&g_443,(void*)0,&g_696},{&g_236[0][3][0].f1,&g_115.f1,&g_696,&g_112[0][6][4].f1}},{{&g_236[0][3][0].f1,(void*)0,(void*)0,&g_115.f1},{&g_112[0][6][4].f1,&g_236[0][3][0].f1,&g_633.f1,&g_728.f1},{(void*)0,(void*)0,&g_696,&g_728.f1},{&g_112[0][6][4].f1,&g_236[0][3][0].f1,&g_696,&g_115.f1},{&g_630[1][5][0].f1,(void*)0,&g_112[0][6][4].f1,&g_112[0][6][4].f1},{&g_115.f1,&g_115.f1,&g_112[0][6][4].f1,&g_696},{&g_630[1][5][0].f1,&g_443,&g_696,&g_728.f1}}};
static union U0 ** const  volatile g_968 = &g_869;/* VOLATILE GLOBAL g_968 */
static volatile uint64_t g_971[2][4] = {{1UL,1UL,18446744073709551606UL,1UL},{1UL,0xCB5FC5E68EB95488LL,0xCB5FC5E68EB95488LL,1UL}};


/* --- FORWARD DECLARATIONS --- */
static int16_t  func_1(void);
static uint8_t  func_15(uint32_t  p_16, int8_t  p_17, uint64_t  p_18);
static uint8_t  func_30(int8_t *** p_31, int8_t * p_32);
static int8_t *** func_33(uint32_t  p_34, uint16_t  p_35, int32_t * p_36);
static float  func_46(int32_t  p_47, int32_t * p_48, int16_t  p_49);
static int32_t * func_50(uint32_t  p_51, uint32_t  p_52, uint16_t  p_53, const int64_t  p_54);
static uint16_t  func_64(const int8_t  p_65);
static int32_t * func_66(float  p_67, int16_t  p_68, uint64_t * const  p_69);
static uint64_t * const  func_71(int32_t  p_72, int32_t  p_73);
static int32_t * func_76(const int32_t * p_77);


/* --- FUNCTIONS --- */
/* ------------------------------------------ */
/* 
 * reads : g_19 g_5 g_57 g_78 g_79 g_91 g_95 g_111 g_81 g_132 g_115.f3 g_137 g_115.f2 g_131 g_197 g_217 g_112.f1 g_112.f2 g_28 g_255 g_258 g_157 g_447 g_159 g_631 g_510.f0 g_390 g_268 g_527.f0 g_650 g_546 g_547 g_501 g_525.f0 g_686 g_470 g_471 g_658 g_699 g_135 g_394 g_633.f3 g_512.f0 g_716 g_728 g_505 g_745 g_518 g_728.f2 g_524.f0 g_757 g_515 g_504 g_630.f2
 * writes: g_57 g_81 g_79 g_112.f1 g_131 g_135 g_137 g_95 g_129 g_132 g_217 g_236.f1 g_28 g_255 g_258 g_78 g_157 g_197 g_447 g_301 g_658 g_115.f1 g_686 g_699 g_115.f3 g_633.f3 g_757 g_394
 */
static int16_t  func_1(void)
{ /* block id: 0 */
    int8_t *l_4 = &g_5[0][1];
    int8_t **l_3 = &l_4;
    int8_t ***l_2 = &l_3;
    int32_t l_14 = 0x3B01D91EL;
    int32_t l_23[6][4] = {{(-10L),(-10L),0x64F943AFL,0L},{0x806AA1C3L,(-6L),0x806AA1C3L,0x806AA1C3L},{0L,0x806AA1C3L,0x806AA1C3L,0L},{0x64F943AFL,0x806AA1C3L,(-6L),0x806AA1C3L},{0x806AA1C3L,(-10L),(-6L),(-6L)},{0x64F943AFL,0x64F943AFL,0x806AA1C3L,(-6L)}};
    int32_t *l_27[8][5];
    int32_t l_29 = 0x0E2C2377L;
    int32_t l_715 = 0x4E5B1320L;
    int32_t *l_756 = &g_757;
    uint64_t **l_768 = (void*)0;
    int32_t **l_771 = &g_658;
    uint64_t **l_784 = &g_390[0];
    int16_t *l_785 = &g_81;
    int16_t **l_786 = (void*)0;
    int16_t **l_787 = &l_785;
    int32_t **l_790 = (void*)0;
    int32_t **l_791 = &l_27[0][2];
    uint16_t l_792 = 0x9442L;
    const int16_t *l_793 = (void*)0;
    uint32_t *l_795 = &g_421[8];
    uint32_t **l_794 = &l_795;
    const uint64_t l_811 = 0x60EB228C7F155CA4LL;
    uint16_t l_816 = 0xB90AL;
    const uint32_t l_817 = 18446744073709551615UL;
    uint8_t l_843[6] = {3UL,248UL,3UL,3UL,248UL,3UL};
    uint64_t l_844 = 0xAFEBC83BEB19F975LL;
    int64_t l_848 = 0L;
    uint64_t l_849 = 0UL;
    int32_t l_855 = 0x3ADB2C97L;
    uint32_t l_872 = 0xF8A8E1C4L;
    int32_t l_875 = 0x3533F75AL;
    float l_889 = 0x0.1p+1;
    int64_t l_891 = 0x822E68F846B535B1LL;
    int64_t l_902 = 6L;
    int8_t l_903 = 0xEDL;
    uint16_t l_904 = 0x8D3BL;
    union U1 *l_908 = &g_630[1][5][0];
    uint32_t l_913 = 8UL;
    uint32_t l_914 = 0UL;
    uint32_t l_922 = 0x10D1DF91L;
    uint8_t l_923 = 254UL;
    int16_t l_929 = 0x7F14L;
    union U1 **l_934 = &g_111;
    union U1 ***l_933 = &l_934;
    union U1 ****l_932 = &l_933;
    int16_t l_955 = 0x3A5BL;
    int32_t l_958 = 0L;
    const union U1 *l_960 = &g_630[1][5][0];
    const union U1 **l_959 = &l_960;
    union U1 **l_961 = &l_908;
    int64_t l_970 = 4L;
    const uint64_t * const l_977 = &l_849;
    const uint64_t * const *l_976 = &l_977;
    int i, j;
    for (i = 0; i < 8; i++)
    {
        for (j = 0; j < 5; j++)
            l_27[i][j] = &g_28;
    }
    (*l_2) = (void*)0;
    (*l_756) ^= (safe_mul_func_uint16_t_u_u(((safe_sub_func_uint8_t_u_u((safe_mul_func_int16_t_s_s((safe_add_func_uint32_t_u_u(l_14, (func_15((&l_3 == g_19[3][1]), l_23[5][3], ((l_23[2][2] || ((safe_unary_minus_func_int64_t_s(((l_29 = (&l_3 == &g_20)) , (l_23[3][1] , ((((((func_30(func_33(((safe_mul_func_float_f_f((-((safe_add_func_float_f_f(((safe_sub_func_float_f_f(((safe_sub_func_float_f_f((func_46(g_5[1][4], &l_14, l_14) <= (-0x10.Cp+1)), g_501)) < l_14), l_29)) < g_5[0][1]), g_525.f0)) <= 0x1.2p-1)), l_23[5][3])) , 0x862B3E53L), l_23[5][3], &l_14), (*g_470)) > 0x7DL) > l_715) >= g_512.f0) > l_14) >= 0x6D828159BFAB2DADLL) && (*g_78)))))) <= 0UL)) <= g_716)) ^ l_23[5][3]))), g_524[1].f0)), 0x4AL)) > 0L), l_23[3][0]));
lbl_978:
    (*l_771) = func_50(((safe_mul_func_int16_t_s_s((!(safe_div_func_uint16_t_u_u((*l_756), 0xA7BEL))), 0x9AEAL)) , (~((*l_756) && (g_515 , (safe_mul_func_uint8_t_u_u((safe_mul_func_uint8_t_u_u(((**g_504) = (*l_756)), (l_768 != &g_390[0]))), (safe_lshift_func_int8_t_s_u((((*l_756) , (*l_756)) <= 3UL), 7)))))))), g_630[1][5][0].f2, (*l_756), (*l_756));
    if (((*l_756) ^= (*g_658)))
    { /* block id: 346 */
    }
    else
    { /* block id: 434 */
        if (g_527.f0)
            goto lbl_978;
        return (**l_771);
    }
    return (*g_547);
}


/* ------------------------------------------ */
/* 
 * reads : g_79 g_633.f3 g_728 g_132 g_95 g_505 g_394 g_745 g_518 g_728.f2 g_658
 * writes: g_79 g_633.f3 g_131 g_95
 */
static uint8_t  func_15(uint32_t  p_16, int8_t  p_17, uint64_t  p_18)
{ /* block id: 326 */
    int32_t *l_725 = &g_28;
    uint64_t ** const l_735 = &g_390[0];
    const int32_t l_736 = (-6L);
    int32_t *l_744[9] = {(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0};
    uint8_t *l_755 = (void*)0;
    int i;
    for (g_79 = 0; (g_79 <= (-19)); g_79 = safe_sub_func_uint32_t_u_u(g_79, 1))
    { /* block id: 329 */
        uint32_t l_730 = 0xBFDEDE55L;
        for (g_633.f3 = (-24); (g_633.f3 >= 27); ++g_633.f3)
        { /* block id: 332 */
            int32_t *l_727 = &g_236[0][3][0].f2;
            int32_t **l_726 = &l_727;
            uint32_t *l_729 = &g_131[1][0];
            int32_t *l_737 = &g_95;
            (*l_737) ^= (safe_add_func_uint32_t_u_u((safe_mod_func_int8_t_s_s((((0x292416A1B9D57CE6LL || (((*l_726) = (l_725 = &g_301[0][6][3])) == &g_301[1][9][2])) & (g_728 , (((((*l_729) = 4294967291UL) , (l_730 | ((safe_rshift_func_uint8_t_u_s(p_17, (safe_lshift_func_uint16_t_u_s(((void*)0 != l_735), 7)))) && 0xC4C966976BBA7A11LL))) & p_16) && 0xF9L))) || p_18), l_736)), g_132[1]));
        }
        return (*g_505);
    }
    (*g_658) &= (l_736 || (safe_rshift_func_uint8_t_u_u((safe_sub_func_int16_t_s_s((safe_add_func_uint8_t_u_u(((void*)0 == l_744[5]), (&l_744[7] != g_745))), (safe_add_func_int8_t_s_s(p_17, (safe_lshift_func_int8_t_s_u(((g_518 , (safe_div_func_uint32_t_u_u((safe_sub_func_uint8_t_u_u((((((void*)0 != l_755) <= g_728.f2) && p_17) < 18446744073709551612UL), p_17)), 0x5BE811F6L))) , l_736), 2)))))), 0)));
    return p_16;
}


/* ------------------------------------------ */
/* 
 * reads : g_658 g_79 g_699 g_501 g_546 g_547 g_81 g_135 g_394 g_633.f3
 * writes: g_79 g_699 g_157 g_115.f3
 */
static uint8_t  func_30(int8_t *** p_31, int8_t * p_32)
{ /* block id: 318 */
    int32_t l_690[10][5] = {{(-8L),0x43281732L,0xD1B99F69L,0xE0C8A389L,(-1L)},{0xD1B99F69L,0x2494DB7FL,0x43281732L,0x43281732L,0x2494DB7FL},{0x2494DB7FL,0L,0xD1B99F69L,(-1L),0x093967D4L},{(-1L),0L,(-1L),1L,0xFE4116C0L},{0x55D662D1L,0x2494DB7FL,0x2494DB7FL,0x55D662D1L,1L},{(-1L),0x43281732L,0x093967D4L,1L,1L},{0x2494DB7FL,(-1L),0xFE4116C0L,0xD1B99F69L,0xFE4116C0L},{0xD1B99F69L,0xD1B99F69L,1L,1L,0x093967D4L},{(-8L),0xE0C8A389L,1L,0x55D662D1L,0x2494DB7FL},{(-1L),1L,0xFE4116C0L,1L,(-1L)}};
    int32_t *l_691 = &l_690[1][4];
    int32_t *l_692 = (void*)0;
    int32_t *l_693 = (void*)0;
    int32_t *l_694[8];
    int32_t l_695 = 0x63784F9FL;
    int16_t *l_710 = &g_157;
    int64_t *l_711[3][1];
    uint64_t l_714 = 0xD5B08624FEB7E053LL;
    int i, j;
    for (i = 0; i < 8; i++)
        l_694[i] = (void*)0;
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 1; j++)
            l_711[i][j] = &g_236[0][3][0].f3;
    }
    (*g_658) ^= l_690[7][1];
    ++g_699;
    (*g_658) = ((((*l_691) = (safe_mul_func_int8_t_s_s(((*l_691) <= g_501), (((**g_546) <= (safe_unary_minus_func_int64_t_s((g_115.f3 = (0x7BL != (safe_mod_func_uint32_t_u_u((g_135 | 0x20L), (safe_div_func_int16_t_s_s(((*l_710) = (+0xCD31L)), (*l_691)))))))))) <= ((safe_rshift_func_int16_t_s_s(((((*l_691) != (*g_547)) || (*l_691)) || (*l_691)), l_714)) <= g_81))))) < g_394[0][0][1]) < (*g_658));
    return g_633.f3;
}


/* ------------------------------------------ */
/* 
 * reads : g_686
 * writes: g_658 g_686
 */
static int8_t *** func_33(uint32_t  p_34, uint16_t  p_35, int32_t * p_36)
{ /* block id: 314 */
    int32_t **l_675 = &g_658;
    int32_t *l_676 = &g_79;
    int32_t *l_677 = &g_95;
    int32_t l_678 = 0x722790DEL;
    int32_t *l_679 = &g_79;
    int32_t *l_680 = &g_79;
    int32_t *l_681 = (void*)0;
    int32_t *l_682 = &g_79;
    int32_t *l_683 = (void*)0;
    int32_t *l_684 = &g_95;
    int32_t *l_685[7] = {&l_678,&g_79,&g_79,&l_678,&g_79,&g_79,&l_678};
    int8_t ***l_689 = (void*)0;
    int i;
    (*l_675) = &g_79;
    ++g_686;
    return l_689;
}


/* ------------------------------------------ */
/* 
 * reads : g_57 g_5 g_78 g_79 g_91 g_95 g_111 g_81 g_132 g_115.f3 g_137 g_115.f2 g_131 g_197 g_217 g_112.f1 g_112.f2 g_28 g_255 g_258 g_157 g_447 g_159 g_631 g_510.f0 g_390 g_268 g_527.f0 g_650 g_546 g_547
 * writes: g_57 g_81 g_79 g_112.f1 g_131 g_135 g_137 g_95 g_129 g_132 g_217 g_236.f1 g_28 g_255 g_258 g_78 g_157 g_197 g_447 g_301 g_658 g_115.f1
 */
static float  func_46(int32_t  p_47, int32_t * p_48, int16_t  p_49)
{ /* block id: 3 */
    uint64_t *l_55 = (void*)0;
    uint64_t *l_56[9] = {&g_57,&g_57,&g_57,&g_57,&g_57,&g_57,&g_57,&g_57,&g_57};
    int32_t l_58 = 3L;
    int32_t l_59 = 2L;
    int64_t *l_638 = (void*)0;
    int64_t **l_637 = &l_638;
    int64_t *l_640 = &g_115.f3;
    int64_t **l_639 = &l_640;
    int32_t l_645[3][6][7] = {{{(-4L),0xB4385762L,0x681A31E0L,(-3L),0x4C0C3141L,0x4C0C3141L,(-3L)},{1L,5L,1L,0xB4385762L,0x0D369F11L,0xD23138D2L,(-4L)},{5L,0x3DEA57FBL,1L,0x681A31E0L,1L,0x681A31E0L,1L},{0x0D369F11L,0x0D369F11L,0x681A31E0L,0L,1L,0xD23138D2L,5L},{0L,0x0D369F11L,0x4C0C3141L,0xD23138D2L,0xD23138D2L,0x4C0C3141L,0x0D369F11L},{0x4C0C3141L,0x3DEA57FBL,0x0D369F11L,1L,1L,0xB4385762L,0L}},{{0x4C0C3141L,5L,1L,0x0D369F11L,1L,5L,0x4C0C3141L},{0L,0xB4385762L,1L,1L,0x0D369F11L,0x3DEA57FBL,0x4C0C3141L},{0x0D369F11L,0x4C0C3141L,0xD23138D2L,0xD23138D2L,0x4C0C3141L,0x0D369F11L,0L},{5L,0xD23138D2L,1L,0L,0x681A31E0L,0x0D369F11L,0x0D369F11L},{1L,0x681A31E0L,1L,0x681A31E0L,1L,0x3DEA57FBL,5L},{(-4L),0xD23138D2L,0x0D369F11L,0xB4385762L,1L,5L,1L}},{{(-3L),0x4C0C3141L,0x4C0C3141L,(-3L),0x681A31E0L,0xB4385762L,(-4L)},{(-4L),0xB4385762L,5L,0x0D369F11L,(-3L),(-3L),0x0D369F11L},{0xD23138D2L,0L,0xD23138D2L,0x3DEA57FBL,0x681A31E0L,0x4C0C3141L,1L},{0L,1L,0xD23138D2L,5L,(-4L),5L,0xD23138D2L},{0x681A31E0L,0x681A31E0L,5L,0xB4385762L,1L,0x4C0C3141L,0L},{0xB4385762L,0x681A31E0L,(-3L),0x4C0C3141L,0x4C0C3141L,(-3L),0x681A31E0L}}};
    int32_t *l_646 = &g_301[1][0][2];
    int32_t *l_657 = &l_58;
    int32_t **l_656[3][5] = {{&l_657,&l_657,&l_657,&l_657,&l_657},{&l_657,&l_657,&l_657,&l_657,&l_657},{&l_657,&l_657,&l_657,&l_657,&l_657}};
    float *l_673 = &g_115.f1;
    const int32_t **l_674 = &g_78;
    int i, j, k;
    g_658 = func_50(((--g_57) , (safe_add_func_uint16_t_u_u(1UL, (func_64(g_57) , (safe_rshift_func_uint16_t_u_u(0x1EC1L, 8)))))), ((((*l_637) = l_56[1]) != ((*l_639) = g_390[0])) & (((*l_646) = (l_58 || ((safe_lshift_func_int16_t_s_s(l_59, (((safe_mul_func_int8_t_s_s((((p_47 | p_49) > 0xFD66AC8AC5A46761LL) ^ g_268[2]), l_645[2][4][5])) || 0xD216B520L) >= p_47))) , 3UL))) , p_47)), g_527.f0, l_59);
    (*l_673) = (safe_add_func_float_f_f(((+0x6.DEAF44p-72) >= (safe_add_func_float_f_f(0x4.C89AC9p+24, (safe_sub_func_float_f_f((*l_657), ((p_49 >= (safe_add_func_float_f_f(0x1.Ep-1, (p_47 , ((safe_rshift_func_uint16_t_u_u(p_47, (safe_unary_minus_func_int32_t_s((safe_lshift_func_int16_t_s_u((((((**g_546) , &l_656[2][1]) == &l_656[2][1]) ^ p_49) & p_47), 8)))))) , p_49))))) < p_47)))))), g_57));
    (*l_674) = func_76(((*l_674) = &g_95));
    return (**l_674);
}


/* ------------------------------------------ */
/* 
 * reads : g_78 g_95 g_650 g_79
 * writes:
 */
static int32_t * func_50(uint32_t  p_51, uint32_t  p_52, uint16_t  p_53, const int64_t  p_54)
{ /* block id: 299 */
    float l_649 = 0xC.6D7B41p-34;
    const int32_t l_654 = (-5L);
    for (p_52 = 0; (p_52 == 30); p_52 = safe_add_func_int8_t_s_s(p_52, 1))
    { /* block id: 302 */
        uint16_t * const l_653[8][10][3] = {{{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]}},{{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]}},{{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]}},{{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]}},{{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[5],&g_91[9]},{&g_91[8],&g_91[3],&g_91[8]},{&g_91[9],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]}},{{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]}},{{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]}},{{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]},{&g_91[3],&g_91[8],&g_91[3]},{&g_91[6],&g_91[9],&g_91[6]}}};
        uint16_t * const *l_652 = &l_653[2][7][1];
        int16_t l_655 = 0x95A2L;
        int i, j, k;
        if ((*g_78))
            break;
        l_652 = g_650;
        if (l_654)
            break;
        if (l_655)
            continue;
    }
    return &g_79;
}


/* ------------------------------------------ */
/* 
 * reads : g_5 g_78 g_79 g_91 g_95 g_111 g_81 g_132 g_115.f3 g_137 g_115.f2 g_131 g_197 g_217 g_112.f1 g_112.f2 g_28 g_255 g_258 g_57 g_157 g_447 g_159 g_631 g_510.f0
 * writes: g_81 g_57 g_79 g_112.f1 g_131 g_135 g_137 g_95 g_129 g_132 g_217 g_236.f1 g_28 g_255 g_258 g_78 g_157 g_197 g_447
 */
static uint16_t  func_64(const int8_t  p_65)
{ /* block id: 5 */
    uint32_t l_70 = 2UL;
    int32_t **l_264 = (void*)0;
    int32_t **l_265 = (void*)0;
    int32_t *l_267[10] = {&g_79,&g_79,&g_79,&g_79,&g_79,&g_79,&g_79,&g_79,&g_79,&g_79};
    int32_t **l_266[4];
    uint32_t l_321 = 18446744073709551611UL;
    const int8_t *l_324 = &g_5[0][2];
    const int8_t **l_323[9][8][3] = {{{(void*)0,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,(void*)0,&l_324},{&l_324,(void*)0,(void*)0},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324}},{{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{(void*)0,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,(void*)0},{(void*)0,&l_324,&l_324}},{{&l_324,&l_324,&l_324},{(void*)0,&l_324,&l_324},{&l_324,(void*)0,(void*)0},{&l_324,(void*)0,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{(void*)0,&l_324,&l_324}},{{&l_324,(void*)0,&l_324},{(void*)0,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,(void*)0,&l_324},{&l_324,&l_324,&l_324}},{{(void*)0,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{(void*)0,(void*)0,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,(void*)0},{&l_324,&l_324,&l_324}},{{(void*)0,&l_324,&l_324},{&l_324,(void*)0,&l_324},{&l_324,&l_324,&l_324},{(void*)0,&l_324,(void*)0},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,(void*)0,&l_324},{&l_324,&l_324,&l_324}},{{&l_324,&l_324,&l_324},{&l_324,&l_324,(void*)0},{&l_324,(void*)0,&l_324},{&l_324,&l_324,&l_324},{(void*)0,(void*)0,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,(void*)0},{(void*)0,&l_324,&l_324}},{{&l_324,&l_324,&l_324},{&l_324,(void*)0,&l_324},{&l_324,&l_324,(void*)0},{&l_324,&l_324,&l_324},{(void*)0,(void*)0,&l_324},{&l_324,(void*)0,&l_324},{&l_324,&l_324,&l_324},{(void*)0,&l_324,(void*)0}},{{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,&l_324},{&l_324,&l_324,(void*)0},{&l_324,(void*)0,&l_324},{&l_324,(void*)0,&l_324}}};
    const int8_t ***l_322 = &l_323[0][4][2];
    const int16_t *l_369 = &g_81;
    uint64_t *l_391 = &g_57;
    const int8_t l_557 = (-1L);
    int32_t l_571 = (-1L);
    union U1 *l_629 = &g_630[1][5][0];
    union U1 *l_632 = &g_633;
    int16_t l_634 = 0x6A13L;
    int i, j, k;
    for (i = 0; i < 4; i++)
        l_266[i] = &l_267[6];
    g_78 = func_66(l_70, g_5[1][5], (((&g_57 != (void*)0) && l_70) , func_71(((safe_rshift_func_uint16_t_u_s((0x16C6C9A4L == p_65), (0x536CL < (((1UL || 0x1464E9414028B022LL) & 0x20L) == l_70)))) | p_65), p_65)));
    for (g_157 = 0; (g_157 <= 9); g_157 += 1)
    { /* block id: 112 */
        float l_293 = 0x1.Ap+1;
        int32_t l_296 = (-6L);
        int32_t **l_297[10] = {(void*)0,&l_267[6],&l_267[6],&l_267[6],(void*)0,(void*)0,&l_267[6],&l_267[6],&l_267[6],(void*)0};
        float l_306[4][9] = {{0x9.7D0744p-76,(-0x4.Fp-1),(-0x4.Fp-1),0x9.7D0744p-76,(-0x4.Fp-1),(-0x4.Fp-1),0x9.7D0744p-76,(-0x4.Fp-1),(-0x4.Fp-1)},{0x6.Bp-1,0x0.BF8DC9p-87,0x0.BF8DC9p-87,0x6.Bp-1,0x0.BF8DC9p-87,0x0.BF8DC9p-87,0x6.Bp-1,0x0.BF8DC9p-87,0x0.BF8DC9p-87},{0x9.7D0744p-76,(-0x4.Fp-1),(-0x4.Fp-1),0x9.7D0744p-76,(-0x4.Fp-1),(-0x4.Fp-1),0x9.7D0744p-76,(-0x4.Fp-1),(-0x4.Fp-1)},{0x6.Bp-1,0x0.BF8DC9p-87,0x0.BF8DC9p-87,0x6.Bp-1,0x0.BF8DC9p-87,0x0.BF8DC9p-87,0x6.Bp-1,0x0.BF8DC9p-87,0x0.BF8DC9p-87}};
        int16_t *l_371 = &g_81;
        uint64_t l_375[2][10][3] = {{{0UL,0xE422684B9D64D7FBLL,18446744073709551615UL},{18446744073709551612UL,1UL,1UL},{0UL,0xE6E3AD17AD85AA96LL,18446744073709551607UL},{0xB1DBF76F78F5D8F8LL,0x667150F3917F7C17LL,18446744073709551613UL},{0xF87F9D4EF84BDC53LL,0x0C0C64A9F3985170LL,0xC057A79D8C0BA9FBLL},{0x667150F3917F7C17LL,2UL,0xB1DBF76F78F5D8F8LL},{0x0C0C64A9F3985170LL,0x0C0C64A9F3985170LL,0xE422684B9D64D7FBLL},{0x1BB06EDCEEF8EB7CLL,1UL,18446744073709551606UL},{1UL,0x1F8F04A194D53660LL,0x6B0A714A2ECB4C59LL},{0xFF4E730565BBBEAELL,18446744073709551612UL,1UL}},{{0x6B0A714A2ECB4C59LL,1UL,0x6B0A714A2ECB4C59LL},{0x571EEE5C7923E739LL,18446744073709551615UL,18446744073709551606UL},{0UL,0xE6E3AD17AD85AA96LL,0xE422684B9D64D7FBLL},{18446744073709551612UL,0x1BB06EDCEEF8EB7CLL,0xB1DBF76F78F5D8F8LL},{18446744073709551607UL,0xC057A79D8C0BA9FBLL,0xC057A79D8C0BA9FBLL},{18446744073709551612UL,0xDA2D9B1718F28EB7LL,0xFF4E730565BBBEAELL},{0UL,0UL,0x0C0C64A9F3985170LL},{0x571EEE5C7923E739LL,0xFF4E730565BBBEAELL,18446744073709551612UL},{0x6B0A714A2ECB4C59LL,0xE422684B9D64D7FBLL,0xF9A677B1BF48041FLL},{0xFF4E730565BBBEAELL,0xFF4E730565BBBEAELL,2UL}}};
        uint32_t *l_397 = &l_70;
        int8_t *l_468 = &g_5[0][1];
        int8_t **l_467 = &l_468;
        int8_t ***l_466 = &l_467;
        int64_t *l_548 = &g_132[1];
        int i, j, k;
        for (g_197 = 1; (g_197 <= 9); g_197 += 1)
        { /* block id: 115 */
            uint64_t * const l_328 = &g_57;
            int64_t l_372 = 0x736043EC19C42588LL;
            float l_395[10] = {0x1.8p+1,0x1.8p+1,0x1.8p+1,0x1.8p+1,0x1.8p+1,0x1.8p+1,0x1.8p+1,0x1.8p+1,0x1.8p+1,0x1.8p+1};
            int16_t **l_412 = &l_371;
            int8_t l_419 = (-7L);
            int32_t l_445 = (-3L);
            uint16_t *l_462 = &g_91[9];
            int8_t ***l_534 = &l_467;
            int i;
        }
        if (p_65)
        { /* block id: 281 */
            uint8_t l_612 = 0x34L;
            ++l_612;
        }
        else
        { /* block id: 283 */
            for (g_447 = 15; (g_447 >= 39); ++g_447)
            { /* block id: 286 */
                return p_65;
            }
            return g_137;
        }
        if ((*g_78))
            break;
    }
    g_78 = ((safe_rshift_func_int8_t_s_u(((safe_lshift_func_uint8_t_u_u(((safe_mod_func_uint8_t_u_u((safe_lshift_func_uint8_t_u_s((safe_sub_func_uint32_t_u_u((((void*)0 != &g_390[0]) >= ((safe_mul_func_int16_t_s_s(p_65, ((g_159 != (0x0A82L <= (((l_629 = (void*)0) == ((g_631 != 4L) , l_632)) != 0x5C20L))) <= p_65))) <= l_634)), 1L)), 1)), 0x9EL)) ^ 0xE9E37F91023BFFE8LL), 6)) != 0x295B4A6AL), 6)) , &g_95);
    return g_510.f0;
}


/* ------------------------------------------ */
/* 
 * reads :
 * writes:
 */
static int32_t * func_66(float  p_67, int16_t  p_68, uint64_t * const  p_69)
{ /* block id: 107 */
    return &g_95;
}


/* ------------------------------------------ */
/* 
 * reads : g_78 g_79 g_91 g_95 g_111 g_5 g_81 g_132 g_115.f3 g_137 g_115.f2 g_131 g_197 g_217 g_112.f1 g_112.f2 g_28 g_255 g_258 g_57
 * writes: g_81 g_57 g_79 g_112.f1 g_131 g_135 g_137 g_95 g_129 g_132 g_217 g_236.f1 g_28 g_255 g_258
 */
static uint64_t * const  func_71(int32_t  p_72, int32_t  p_73)
{ /* block id: 6 */
    int32_t *l_83 = (void*)0;
    int32_t **l_82 = &l_83;
    uint16_t l_102 = 0x3918L;
    int8_t *l_191 = &g_5[0][1];
    int8_t **l_190 = &l_191;
    int8_t ***l_189 = &l_190;
    int8_t l_200[4];
    int32_t l_204 = 1L;
    int32_t l_214 = 0xF61FF87BL;
    int32_t l_216[9][3] = {{(-8L),7L,7L},{0x2D037CA2L,(-1L),0x0E419443L},{(-8L),0xD2D3DDE7L,(-8L)},{(-1L),0x2D037CA2L,0x0E419443L},{1L,1L,7L},{0x14D47E20L,0x2D037CA2L,0x2D037CA2L},{7L,0xD2D3DDE7L,7L},{0x14D47E20L,(-1L),0x14D47E20L},{1L,7L,7L}};
    uint64_t * const l_222 = &g_57;
    int i, j;
    for (i = 0; i < 4; i++)
        l_200[i] = 0x3BL;
    (*l_82) = func_76(g_78);
    for (p_73 = (-20); (p_73 >= 3); p_73++)
    { /* block id: 13 */
        uint64_t *l_109[5] = {&g_57,&g_57,&g_57,&g_57,&g_57};
        int32_t l_110[7][4] = {{0L,0x86747B33L,(-1L),0xB0ECC8E5L},{(-1L),0xB0ECC8E5L,0L,0xB0ECC8E5L},{(-1L),0x86747B33L,(-1L),(-1L)},{2L,0x1D2F7AF1L,0xB0ECC8E5L,0x42E2B7A1L},{(-1L),(-1L),0xD6AF1061L,0xD6AF1061L},{(-1L),(-1L),0xB0ECC8E5L,(-4L)},{2L,0xD6AF1061L,(-1L),0x1D2F7AF1L}};
        union U1 *l_114 = &g_115;
        int32_t l_153 = 0x41CDB462L;
        uint32_t l_229 = 0x6DA78383L;
        int8_t ***l_240 = &l_190;
        uint32_t l_252 = 0xEFD601C4L;
        int32_t *l_256 = &g_79;
        int32_t *l_257[9] = {&g_95,&g_95,&g_95,&g_95,&g_95,&g_95,&g_95,&g_95,&g_95};
        int i, j;
        if ((l_83 != ((safe_rshift_func_uint8_t_u_s((safe_unary_minus_func_int64_t_s(1L)), 2)) , &g_28)))
        { /* block id: 14 */
            uint32_t l_96[4];
            uint32_t *l_125 = (void*)0;
            uint32_t *l_126 = &l_96[3];
            uint32_t *l_130 = &g_131[1][0];
            int8_t *l_133 = (void*)0;
            int8_t *l_134 = &g_135;
            int8_t *l_136 = &g_137;
            int i;
            for (i = 0; i < 4; i++)
                l_96[i] = 4294967291UL;
            if ((*l_83))
                break;
            for (g_57 = 0; (g_57 > 24); g_57 = safe_add_func_int32_t_s_s(g_57, 1))
            { /* block id: 18 */
                int8_t ***l_99 = (void*)0;
                union U1 **l_113[10] = {&g_111,(void*)0,&g_111,&g_111,(void*)0,&g_111,&g_111,(void*)0,&g_111,&g_111};
                float *l_116 = &g_112[0][6][4].f1;
                int i;
                for (g_79 = 9; (g_79 >= 0); g_79 -= 1)
                { /* block id: 21 */
                    int32_t *l_94[6][7][2] = {{{&g_95,&g_79},{&g_79,&g_95},{&g_95,(void*)0},{&g_79,&g_79},{&g_95,&g_79},{&g_79,(void*)0},{&g_95,&g_95}},{{&g_79,&g_79},{&g_95,&g_79},{&g_79,&g_95},{&g_95,(void*)0},{&g_79,&g_79},{&g_95,&g_79},{&g_79,(void*)0}},{{&g_95,&g_95},{&g_79,&g_79},{&g_95,&g_79},{&g_79,&g_95},{&g_95,(void*)0},{&g_79,&g_79},{&g_95,&g_79}},{{&g_79,(void*)0},{&g_95,&g_95},{&g_79,&g_79},{&g_95,&g_79},{&g_79,&g_95},{&g_95,(void*)0},{&g_79,&g_79}},{{&g_95,&g_79},{&g_79,(void*)0},{&g_95,&g_95},{&g_79,&g_79},{&g_95,&g_79},{&g_79,&g_95},{&g_95,(void*)0}},{{&g_79,&g_79},{&g_95,&g_79},{&g_79,(void*)0},{&g_95,&g_95},{&g_79,&g_79},{&g_95,&g_79},{&g_79,&g_95}}};
                    int i, j, k;
                    l_96[2] &= (((((void*)0 != &g_79) ^ (((-1L) & g_91[g_79]) != 0x2605L)) , (-10L)) == g_91[g_79]);
                    l_110[6][2] ^= ((safe_mod_func_int32_t_s_s(((((l_99 == (void*)0) , (((safe_add_func_int32_t_s_s(l_102, p_72)) || 0x073BL) > (g_95 && (65531UL | ((safe_div_func_uint16_t_u_u(g_79, (safe_mul_func_uint8_t_u_u(1UL, (*l_83))))) <= 246UL))))) , l_109[3]) != &g_57), (-5L))) == 0x2C5FDD6C5526C9E8LL);
                }
                l_114 = g_111;
                (**l_82) = ((*l_116) = g_5[0][1]);
            }
            (*l_83) = (((safe_div_func_int64_t_s_s((l_110[6][0] <= (((*l_136) &= ((((safe_sub_func_int16_t_s_s(0xCA94L, (safe_lshift_func_int16_t_s_s(0L, (safe_add_func_uint16_t_u_u(((((*l_130) = ((((*l_126)--) == p_72) || (g_81 , p_73))) , (g_132[1] < (((*l_134) = ((0xFBBB315DL | (p_72 , 0x0506A2FBL)) || (*g_78))) ^ 252UL))) < l_110[6][2]), l_110[0][2])))))) && l_110[2][0]) >= g_115.f3) <= 18446744073709551606UL)) < p_72)), p_72)) == l_110[6][2]) , p_72);
        }
        else
        { /* block id: 34 */
            uint64_t l_181 = 0x7F949CC764A6B6FDLL;
            int32_t l_199 = (-10L);
            int32_t l_215 = (-8L);
            (**l_82) |= 0x8798744AL;
            if ((g_95 |= l_110[6][2]))
            { /* block id: 37 */
                int32_t **l_138 = &l_83;
                uint16_t l_192 = 1UL;
                int32_t *l_198[5] = {&g_79,&g_79,&g_79,&g_79,&g_79};
                int i;
                for (g_135 = 4; (g_135 >= 0); g_135 -= 1)
                { /* block id: 40 */
                    uint32_t l_139 = 4UL;
                    const union U1 *l_154 = (void*)0;
                    for (p_72 = 4; (p_72 >= 1); p_72 -= 1)
                    { /* block id: 43 */
                        int32_t *l_140 = &l_110[6][2];
                        int16_t *l_147 = &g_81;
                        uint32_t l_150 = 0x1CE4DD9FL;
                        int8_t *l_155 = (void*)0;
                        int8_t *l_156 = &g_137;
                        uint8_t *l_158 = &g_159;
                        int32_t *l_160 = (void*)0;
                        int32_t *l_161 = &g_95;
                        float *l_182[5][8][1] = {{{(void*)0},{&g_112[0][6][4].f1},{(void*)0},{&g_115.f1},{&g_115.f1},{&g_129},{&g_129},{&g_115.f1}},{{&g_115.f1},{(void*)0},{&g_112[0][6][4].f1},{(void*)0},{&g_115.f1},{(void*)0},{&g_112[0][6][4].f1},{(void*)0}},{{&g_115.f1},{&g_115.f1},{&g_129},{&g_129},{&g_115.f1},{&g_115.f1},{(void*)0},{&g_112[0][6][4].f1}},{{(void*)0},{&g_115.f1},{(void*)0},{&g_112[0][6][4].f1},{(void*)0},{&g_115.f1},{&g_115.f1},{&g_129}},{{&g_129},{&g_115.f1},{&g_115.f1},{(void*)0},{&g_112[0][6][4].f1},{(void*)0},{&g_115.f1},{(void*)0}}};
                        int i, j, k;
                        l_139 &= ((**l_82) = (l_138 == &g_78));
                        if (g_91[(p_72 + 4)])
                            continue;
                    }
                    if (l_181)
                        break;
                    if ((*g_78))
                        continue;
                }
                l_199 |= (safe_add_func_uint16_t_u_u((safe_add_func_uint8_t_u_u((((safe_mul_func_float_f_f((l_189 == (void*)0), (g_112[0][6][4].f1 = (-0x5.9p-1)))) <= ((*l_83) >= (l_192 >= (g_129 = g_115.f2)))) , g_5[1][2]), ((((safe_lshift_func_uint16_t_u_u(((**l_138) >= (safe_sub_func_int64_t_s_s((g_132[5] &= ((*g_78) != 0x125FC94FL)), g_131[1][0]))), 12)) & (**l_138)) , (**l_138)) != 0x0899L))), g_197));
            }
            else
            { /* block id: 64 */
                uint64_t * const l_220 = &l_181;
                uint64_t * const l_221 = &l_181;
                if (l_200[1])
                    break;
                for (p_72 = 8; (p_72 <= (-24)); p_72--)
                { /* block id: 68 */
                    int8_t l_207[9][6][2] = {{{0x97L,(-1L)},{(-5L),0x97L},{0x47L,0x60L},{(-1L),0L},{(-5L),0x4FL},{0L,(-1L)}},{{(-1L),(-1L)},{0xB4L,(-10L)},{1L,(-1L)},{4L,0x47L},{(-5L),4L},{0x4FL,0x60L}},{{0x4FL,4L},{(-5L),0x47L},{4L,(-1L)},{1L,(-10L)},{0xB4L,(-1L)},{(-1L),(-1L)}},{{0L,0x4FL},{(-5L),0L},{(-1L),0x60L},{0x47L,0x97L},{(-5L),(-1L)},{0x97L,(-1L)}},{{(-10L),1L},{0xB4L,1L},{(-10L),(-1L)},{0x97L,(-1L)},{(-5L),0x97L},{0x47L,0x60L}},{{(-1L),0L},{(-5L),0x4FL},{0L,(-1L)},{(-1L),(-1L)},{0xB4L,(-10L)},{1L,(-1L)}},{{4L,0x47L},{(-5L),4L},{0x4FL,0x60L},{0x4FL,4L},{(-5L),0x47L},{4L,(-1L)}},{{1L,(-10L)},{0xB4L,(-1L)},{(-1L),(-1L)},{0L,0x4FL},{(-5L),0L},{(-1L),0x60L}},{{0x47L,0x97L},{(-5L),(-1L)},{0x97L,(-1L)},{(-10L),1L},{0xB4L,1L},{(-10L),(-1L)}}};
                    int32_t l_208[2][5];
                    int i, j, k;
                    for (i = 0; i < 2; i++)
                    {
                        for (j = 0; j < 5; j++)
                            l_208[i][j] = (-1L);
                    }
                    if (l_181)
                    { /* block id: 69 */
                        int32_t *l_203 = &l_110[5][0];
                        int32_t *l_205 = &g_79;
                        int32_t *l_206 = &l_199;
                        int32_t *l_209 = &l_153;
                        int32_t *l_210 = (void*)0;
                        int32_t *l_211 = &l_199;
                        int32_t *l_212 = (void*)0;
                        int32_t *l_213[8][1] = {{&l_110[6][2]},{&g_95},{&l_110[6][2]},{&g_95},{&l_110[6][2]},{&g_95},{&l_110[6][2]},{&g_95}};
                        int i, j;
                        --g_217;
                        (*l_203) &= (*g_78);
                        (*l_82) = &g_79;
                    }
                    else
                    { /* block id: 73 */
                        (*l_82) = &g_95;
                        return l_222;
                    }
                    return &g_57;
                }
            }
        }
        for (g_217 = 18; (g_217 < 19); g_217++)
        { /* block id: 83 */
            union U1 * const l_235[9] = {&g_236[0][3][0],&g_236[0][3][0],&g_236[0][3][0],&g_236[0][3][0],&g_236[0][3][0],&g_236[0][3][0],&g_236[0][3][0],&g_236[0][3][0],&g_236[0][3][0]};
            union U1 * const *l_234 = &l_235[8];
            union U1 * const **l_233 = &l_234;
            float *l_239 = &g_236[0][3][0].f1;
            float *l_241 = &g_129;
            int32_t l_242 = (-1L);
            int i;
            l_214 &= ((((safe_mul_func_float_f_f(((((l_110[6][2] = ((safe_div_func_float_f_f(l_229, (!(safe_add_func_float_f_f(g_112[0][6][4].f1, ((*l_239) = (((*l_233) = (void*)0) != ((p_73 <= (safe_sub_func_float_f_f(0x2.E4DF97p+60, (*l_83)))) , (void*)0)))))))) >= ((*l_241) = (((void*)0 == l_240) != g_112[0][6][4].f2)))) != 0x8.Fp-1) <= p_73) < p_73), (-0x1.9p-1))) , (void*)0) != (void*)0) , l_242);
            for (g_28 = (-17); (g_28 != (-2)); g_28++)
            { /* block id: 91 */
                int32_t *l_245 = &l_110[0][0];
                int32_t *l_246 = &g_79;
                int32_t *l_247 = &g_79;
                int32_t *l_248 = &g_79;
                int32_t l_249 = 7L;
                int32_t l_250 = 0xD3ABC804L;
                int32_t *l_251[8][2];
                int i, j;
                for (i = 0; i < 8; i++)
                {
                    for (j = 0; j < 2; j++)
                        l_251[i][j] = &l_153;
                }
                (*l_82) = func_76(&l_110[6][1]);
                ++l_252;
                return l_222;
            }
            g_255 = g_255;
        }
        g_258++;
    }
lbl_263:
    (*l_82) = (*l_82);
    for (g_57 = 27; (g_57 < 15); g_57 = safe_sub_func_int64_t_s_s(g_57, 1))
    { /* block id: 103 */
        if (g_115.f2)
            goto lbl_263;
    }
    return l_222;
}


/* ------------------------------------------ */
/* 
 * reads :
 * writes: g_81
 */
static int32_t * func_76(const int32_t * p_77)
{ /* block id: 7 */
    int8_t l_80 = 9L;
    g_81 = l_80;
    return &g_79;
}




/* ---------------------------------------- */
int main (int argc, char* argv[])
{
    int i, j, k;
    int print_hash_value = 0;
    if (argc == 2 && strcmp(argv[1], "1") == 0) print_hash_value = 1;
    platform_main_begin();
    crc32_gentab();
    func_1();
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 8; j++)
        {
            transparent_crc(g_5[i][j], "g_5[i][j]", print_hash_value);
            if (print_hash_value) printf("index = [%d][%d]\n", i, j);

        }
    }
    transparent_crc(g_22, "g_22", print_hash_value);
    transparent_crc(g_28, "g_28", print_hash_value);
    transparent_crc(g_57, "g_57", print_hash_value);
    transparent_crc(g_79, "g_79", print_hash_value);
    transparent_crc(g_81, "g_81", print_hash_value);
    for (i = 0; i < 10; i++)
    {
        transparent_crc(g_91[i], "g_91[i]", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    transparent_crc(g_95, "g_95", print_hash_value);
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 7; j++)
        {
            for (k = 0; k < 6; k++)
            {
	      printf("ian: g_112[i][j][k].f1 = %f\n", g_112[i][j][k].f1);
	      printf("ian: g_112[i][j][k].f2 = %d\n", g_112[i][j][k].f2);
	      printf("ian: g_112[i][j][k].f4 = %u\n", g_112[i][j][k].f4);
	      
                transparent_crc(g_112[i][j][k].f1, "g_112[i][j][k].f1", print_hash_value);
                transparent_crc(g_112[i][j][k].f2, "g_112[i][j][k].f2", print_hash_value);
                transparent_crc(g_112[i][j][k].f4, "g_112[i][j][k].f4", print_hash_value);
                if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k);

            }
        }
    }
    transparent_crc(g_115.f0, "g_115.f0", print_hash_value);
    transparent_crc_bytes (&g_115.f1, sizeof(g_115.f1), "g_115.f1", print_hash_value);
    transparent_crc(g_115.f2, "g_115.f2", print_hash_value);
    transparent_crc(g_115.f3, "g_115.f3", print_hash_value);
    transparent_crc(g_115.f4, "g_115.f4", print_hash_value);
    transparent_crc_bytes (&g_129, sizeof(g_129), "g_129", print_hash_value);
    for (i = 0; i < 6; i++)
    {
        for (j = 0; j < 1; j++)
        {
            transparent_crc(g_131[i][j], "g_131[i][j]", print_hash_value);
            if (print_hash_value) printf("index = [%d][%d]\n", i, j);

        }
    }
    for (i = 0; i < 10; i++)
    {
        transparent_crc(g_132[i], "g_132[i]", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    transparent_crc(g_135, "g_135", print_hash_value);
    transparent_crc(g_137, "g_137", print_hash_value);
    transparent_crc(g_157, "g_157", print_hash_value);
    transparent_crc(g_159, "g_159", print_hash_value);
    transparent_crc(g_197, "g_197", print_hash_value);
    transparent_crc(g_217, "g_217", print_hash_value);
    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 10; j++)
        {
            for (k = 0; k < 10; k++)
            {
                transparent_crc(g_236[i][j][k].f1, "g_236[i][j][k].f1", print_hash_value);
                transparent_crc(g_236[i][j][k].f2, "g_236[i][j][k].f2", print_hash_value);
                transparent_crc(g_236[i][j][k].f4, "g_236[i][j][k].f4", print_hash_value);
                if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k);

            }
        }
    }
    transparent_crc(g_258, "g_258", print_hash_value);
    for (i = 0; i < 3; i++)
    {
        transparent_crc(g_268[i], "g_268[i]", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 10; j++)
        {
            for (k = 0; k < 5; k++)
            {
                transparent_crc(g_301[i][j][k], "g_301[i][j][k]", print_hash_value);
                if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k);

            }
        }
    }
    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 1; j++)
        {
            for (k = 0; k < 9; k++)
            {
                transparent_crc(g_394[i][j][k], "g_394[i][j][k]", print_hash_value);
                if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k);

            }
        }
    }
    for (i = 0; i < 9; i++)
    {
        transparent_crc(g_421[i], "g_421[i]", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    transparent_crc_bytes (&g_443, sizeof(g_443), "g_443", print_hash_value);
    transparent_crc(g_446, "g_446", print_hash_value);
    transparent_crc(g_447, "g_447", print_hash_value);
    transparent_crc(g_501, "g_501", print_hash_value);
    transparent_crc(g_510.f0, "g_510.f0", print_hash_value);
    transparent_crc(g_511.f0, "g_511.f0", print_hash_value);
    transparent_crc(g_512.f0, "g_512.f0", print_hash_value);
    transparent_crc(g_513.f0, "g_513.f0", print_hash_value);
    transparent_crc(g_514.f0, "g_514.f0", print_hash_value);
    transparent_crc(g_515.f0, "g_515.f0", print_hash_value);
    for (i = 0; i < 4; i++)
    {
        transparent_crc(g_516[i].f0, "g_516[i].f0", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            transparent_crc(g_517[i][j].f0, "g_517[i][j].f0", print_hash_value);
            if (print_hash_value) printf("index = [%d][%d]\n", i, j);

        }
    }
    transparent_crc(g_518.f0, "g_518.f0", print_hash_value);
    transparent_crc(g_519.f0, "g_519.f0", print_hash_value);
    transparent_crc(g_520.f0, "g_520.f0", print_hash_value);
    transparent_crc(g_521.f0, "g_521.f0", print_hash_value);
    transparent_crc(g_522.f0, "g_522.f0", print_hash_value);
    transparent_crc(g_523.f0, "g_523.f0", print_hash_value);
    for (i = 0; i < 10; i++)
    {
        transparent_crc(g_524[i].f0, "g_524[i].f0", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    transparent_crc(g_525.f0, "g_525.f0", print_hash_value);
    for (i = 0; i < 8; i++)
    {
        transparent_crc(g_526[i].f0, "g_526[i].f0", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    transparent_crc(g_527.f0, "g_527.f0", print_hash_value);
    transparent_crc(g_528.f0, "g_528.f0", print_hash_value);
    transparent_crc(g_529.f0, "g_529.f0", print_hash_value);
    transparent_crc(g_530.f0, "g_530.f0", print_hash_value);
    transparent_crc(g_609, "g_609", print_hash_value);
    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 7; j++)
        {
            for (k = 0; k < 1; k++)
            {
                transparent_crc(g_630[i][j][k].f0, "g_630[i][j][k].f0", print_hash_value);
                transparent_crc(g_630[i][j][k].f1, "g_630[i][j][k].f1", print_hash_value);
                transparent_crc(g_630[i][j][k].f2, "g_630[i][j][k].f2", print_hash_value);
                transparent_crc(g_630[i][j][k].f3, "g_630[i][j][k].f3", print_hash_value);
                transparent_crc(g_630[i][j][k].f4, "g_630[i][j][k].f4", print_hash_value);
                if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k);

            }
        }
    }
    transparent_crc(g_631, "g_631", print_hash_value);
    transparent_crc(g_633.f0, "g_633.f0", print_hash_value);
    transparent_crc_bytes (&g_633.f1, sizeof(g_633.f1), "g_633.f1", print_hash_value);
    transparent_crc(g_633.f2, "g_633.f2", print_hash_value);
    transparent_crc(g_633.f3, "g_633.f3", print_hash_value);
    transparent_crc(g_633.f4, "g_633.f4", print_hash_value);
    transparent_crc(g_686, "g_686", print_hash_value);
    transparent_crc_bytes (&g_696, sizeof(g_696), "g_696", print_hash_value);
    for (i = 0; i < 8; i++)
    {
        transparent_crc(g_697[i], "g_697[i]", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    transparent_crc(g_698, "g_698", print_hash_value);
    transparent_crc(g_699, "g_699", print_hash_value);
    transparent_crc(g_716, "g_716", print_hash_value);
    transparent_crc(g_728.f0, "g_728.f0", print_hash_value);
    transparent_crc_bytes (&g_728.f1, sizeof(g_728.f1), "g_728.f1", print_hash_value);
    transparent_crc(g_728.f2, "g_728.f2", print_hash_value);
    transparent_crc(g_728.f3, "g_728.f3", print_hash_value);
    transparent_crc(g_728.f4, "g_728.f4", print_hash_value);
    transparent_crc(g_757, "g_757", print_hash_value);
    transparent_crc(g_842, "g_842", print_hash_value);
    transparent_crc(g_866, "g_866", print_hash_value);
    for (i = 0; i < 8; i++)
    {
        transparent_crc(g_919[i].f0, "g_919[i].f0", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    transparent_crc(g_940, "g_940", print_hash_value);
    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 4; j++)
        {
            transparent_crc(g_971[i][j], "g_971[i][j]", print_hash_value);
            if (print_hash_value) printf("index = [%d][%d]\n", i, j);

        }
    }
    platform_main_end(crc32_context ^ 0xFFFFFFFFUL, print_hash_value);
    return 0;
}

/************************ statistics *************************
XXX max struct depth: 0
breakdown:
   depth: 0, occurrence: 222
XXX total union variables: 2

XXX non-zero bitfields defined in structs: 0
XXX zero bitfields defined in structs: 0
XXX const bitfields defined in structs: 0
XXX volatile bitfields defined in structs: 0
XXX structs with bitfields in the program: 0
breakdown:
XXX full-bitfields structs in the program: 0
breakdown:
XXX times a bitfields struct's address is taken: 0
XXX times a bitfields struct on LHS: 0
XXX times a bitfields struct on RHS: 0
XXX times a single bitfield on LHS: 0
XXX times a single bitfield on RHS: 0

XXX max expression depth: 41
breakdown:
   depth: 1, occurrence: 85
   depth: 2, occurrence: 20
   depth: 3, occurrence: 2
   depth: 4, occurrence: 1
   depth: 7, occurrence: 1
   depth: 15, occurrence: 1
   depth: 16, occurrence: 2
   depth: 17, occurrence: 2
   depth: 19, occurrence: 3
   depth: 21, occurrence: 2
   depth: 26, occurrence: 2
   depth: 41, occurrence: 1

XXX total number of pointers: 279

XXX times a variable address is taken: 578
XXX times a pointer is dereferenced on RHS: 80
breakdown:
   depth: 1, occurrence: 65
   depth: 2, occurrence: 15
XXX times a pointer is dereferenced on LHS: 105
breakdown:
   depth: 1, occurrence: 96
   depth: 2, occurrence: 9
XXX times a pointer is compared with null: 22
XXX times a pointer is compared with address of another variable: 4
XXX times a pointer is compared with another pointer: 9
XXX times a pointer is qualified to be dereferenced: 1488

XXX max dereference level: 3
breakdown:
   level: 0, occurrence: 0
   level: 1, occurrence: 302
   level: 2, occurrence: 92
   level: 3, occurrence: 6
XXX number of pointers point to pointers: 99
XXX number of pointers point to scalars: 168
XXX number of pointers point to structs: 0
XXX percent of pointers has null in alias set: 27.6
XXX average alias set size: 1.35

XXX times a non-volatile is read: 682
XXX times a non-volatile is write: 340
XXX times a volatile is read: 4
XXX    times read thru a pointer: 0
XXX times a volatile is write: 7
XXX    times written thru a pointer: 2
XXX times a volatile is available for access: 288
XXX percentage of non-volatile access: 98.9

XXX forward jumps: 1
XXX backward jumps: 7

XXX stmts: 85
XXX max block depth: 5
breakdown:
   depth: 0, occurrence: 33
   depth: 1, occurrence: 15
   depth: 2, occurrence: 12
   depth: 3, occurrence: 11
   depth: 4, occurrence: 7
   depth: 5, occurrence: 7

XXX percentage a fresh-made variable is used: 21.4
XXX percentage an existing variable is used: 78.6
********************* end of statistics **********************/

/* Found checksum difference between compiler implementations */
/* gcc -O0 : 1D74BF0D */
/* gcc -O1 : 1D74BF0D */
/* gcc -O2 : 1D74BF0D */
/* gcc -Os : 1D74BF0D */
/* gcc -O3 : 1D74BF0D */
/* clang -O0 : 51A4F863 */
/* clang -O1 : 51A4F863 */
/* clang -O2 : 51A4F863 */
/* clang -Os : 51A4F863 */
/* clang -O3 : 51A4F863 */
/* please refer to http://embed.cs.utah.edu/csmith/using.html on how to report a bug */
/* -*- mode: C -*-
 *
 * Copyright (c) 2007-2011, 2013, 2014 The University of Utah
 * All rights reserved.
 *
 * This file is part of `csmith', a random generator of C programs.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   * Redistributions of source code must retain the above copyright notice,
 *     this list of conditions and the following disclaimer.
 *
 *   * Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef RANDOM_RUNTIME_H
#define RANDOM_RUNTIME_H

#ifdef CSMITH_MINIMAL
#include "csmith_minimal.h"
#else

/*****************************************************************************/

#include <string.h>
#include <float.h>
#include <math.h>

#define __STDC_LIMIT_MACROS
#include "random_inc.h"

static uint32_t crc32_tab[256];
static uint32_t crc32_context = 0xFFFFFFFFUL;

static void 
crc32_gentab (void)
{
	uint32_t crc;
	const uint32_t poly = 0xEDB88320UL;
	int i, j;
	
	for (i = 0; i < 256; i++) {
		crc = i;
		for (j = 8; j > 0; j--) {
			if (crc & 1) {
				crc = (crc >> 1) ^ poly;
			} else {
				crc >>= 1;
			}
		}
		crc32_tab[i] = crc;
	}
}

static void 
crc32_byte (uint8_t b) {
	crc32_context = 
		((crc32_context >> 8) & 0x00FFFFFF) ^ 
		crc32_tab[(crc32_context ^ b) & 0xFF];
}

#if defined(__SPLAT__) || defined(NO_LONGLONG)
static void 
crc32_8bytes (uint32_t val)
{
	crc32_byte ((val>>0) & 0xff);
	crc32_byte ((val>>8) & 0xff);
	crc32_byte ((val>>16) & 0xff);
	crc32_byte ((val>>24) & 0xff);
}

static void 
transparent_crc (uint32_t val, char* vname, int flag)
{
	crc32_8bytes(val);
	if (flag) {
  		printf("...checksum after hashing %s : %X\n", vname, crc32_context ^ 0xFFFFFFFFU);
	}
}
#else
static void 
crc32_8bytes (uint64_t val)
{
	crc32_byte ((val>>0) & 0xff);
	crc32_byte ((val>>8) & 0xff);
	crc32_byte ((val>>16) & 0xff);
	crc32_byte ((val>>24) & 0xff);
	crc32_byte ((val>>32) & 0xff);
	crc32_byte ((val>>40) & 0xff);
	crc32_byte ((val>>48) & 0xff);
	crc32_byte ((val>>56) & 0xff);
}

static void 
transparent_crc (uint64_t val, char* vname, int flag)
{
	crc32_8bytes(val);
	if (flag) {
  		printf("...checksum after hashing %s : %lX\n", vname, crc32_context ^ 0xFFFFFFFFUL);
	}
}

#endif

static void 
transparent_crc_bytes (char *ptr, int nbytes, char* vname, int flag)
{
    int i;
    for (i=0; i<nbytes; i++) {
        crc32_byte(ptr[i]);
    }
	if (flag) {
  		printf("...checksum after hashing %s : %lX\n", vname, crc32_context ^ 0xFFFFFFFFUL);
	}
}

/*****************************************************************************/

#endif

#endif /* RANDOM_RUNTIME_H */

/*
 * Local Variables:
 * c-basic-offset: 4
 * tab-width: 4
 * End:
 */

/* End of file. */