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

[csmith-dev] subtle signed overflow issue



Hello.

Here is a new, extremely interesting program generated by Csmith:

/*
 * This is a RANDOMLY GENERATED PROGRAM.
 *
 * Generator: csmith 2.1.0
 * Git version: a5e5fd1
 * Options:   --max-expr-complexity 15 --max-pointer-depth 3 --max-funcs 4 --max-array-dim 2 --max-array-len-per-dim 3 --max-struct-fields 12 --max-union-fields 12 --no-volatiles --bitfields --no-argc --unions
 * Seed:      1904236191
 */

A reduced version is like this:

union U4 { unsigned f0 : 31; } u = { -1 };

main(){
  ++u.f0;
  return 0;
}

Frama-C's value analysis with option -val-signed-overflow-alarms says:

/home/cuoq/r.c:5:[kernel] warning: Signed overflow. assert (int)u.f0+1 ≤ 2147483647LL;

Its reasoning is that ++u.f0 can be expanded into u.f0 = ((int)u.f0) + 1; and that the
addition takes places between signed ints, and is therefore subject to undefined
overflows, one of which just happens to take place in this program.

What do you think?

Pascal

/*
 * This is a RANDOMLY GENERATED PROGRAM.
 *
 * Generator: csmith 2.1.0
 * Git version: a5e5fd1
 * Options:   --max-expr-complexity 15 --max-pointer-depth 3 --max-funcs 4 --max-array-dim 2 --max-array-len-per-dim 3 --max-struct-fields 12 --max-union-fields 12 --no-volatiles --bitfields --no-argc --unions
 * Seed:      1904236191
 */

#include "csmith.h"


static long __undefined;

/* --- Struct/Union Declarations --- */
#pragma pack(push)
#pragma pack(1)
struct S0 {
   const uint32_t  f0;
   signed f1 : 19;
   unsigned f2 : 29;
   uint32_t  f3;
   uint16_t  f4;
};
#pragma pack(pop)

struct S1 {
   const uint32_t  f0;
};

struct S2 {
   const signed f0 : 15;
   signed f1 : 2;
   unsigned : 0;
   unsigned f2 : 13;
   unsigned f3 : 19;
   signed f4 : 1;
   signed f5 : 23;
   signed f6 : 20;
   unsigned f7 : 2;
};

#pragma pack(push)
#pragma pack(1)
struct S3 {
   signed f0 : 30;
   struct S1  f1;
   int16_t  f2;
};
#pragma pack(pop)

union U4 {
   unsigned f0 : 31;
};

/* --- GLOBAL VARIABLES --- */
static uint16_t g_11 = 0UL;
static struct S2 g_19 = {-146,1,85,225,0,-2508,585,1};
static struct S2 g_25 = {106,-1,74,379,0,-1535,901,0};
static const int32_t g_26 = (-1L);
static const union U4 g_28 = {0xAA9C4AD1L};
static uint64_t g_38 = 18446744073709551615UL;
static uint16_t g_44 = 1UL;
static int16_t g_47 = 0x67BAL;
static int32_t g_50 = 1L;
static int16_t g_59 = 0x3274L;
static struct S1 g_70 = {4294967293UL};
static union U4 g_85 = {1UL};
static struct S0 g_88 = {4294967295UL,-211,8761,0x8B78E619L,65535UL};
static int8_t g_95 = 0xD6L;
static int32_t *g_102 = &g_50;
static int32_t *g_115 = &g_50;
static uint8_t g_119 = 0x3BL;
static struct S3 g_136[1] = {{29046,{4294967291UL},0xE4B3L}};
static int64_t g_143 = 0L;
static int32_t g_151 = 0xFECDA2E4L;
static uint64_t g_171 = 0x4DA32A0AA601C580LL;
static int8_t g_184[2] = {0x16L, 0x16L};
static uint8_t g_194 = 0xA5L;
static uint8_t g_201 = 0UL;
static struct S2 *g_223 = &g_19;
static struct S2 **g_222 = &g_223;
static uint16_t g_233 = 0UL;
static union U4 *g_257 = &g_85;
static struct S0 *g_266[3][2] = {{&g_88, &g_88}, {&g_88, &g_88}, {&g_88, &g_88}};
static struct S0 **g_265 = &g_266[1][0];
static uint64_t g_379 = 18446744073709551615UL;
static struct S3 g_384[2][3] = {{{12576,{4294967294UL},0L}, {12576,{4294967294UL},0L}, {-26433,{0xFED8649DL},-1L}}, {{12576,{4294967294UL},0L}, {12576,{4294967294UL},0L}, {-26433,{0xFED8649DL},-1L}}};
static uint64_t g_454 = 0x557A66DFB4BF605BLL;
static uint32_t g_462 = 0x3738DEB9L;
static int32_t g_536[1][3] = {{0xB6E8DEEFL, 0xB6E8DEEFL, 0xB6E8DEEFL}};
static int32_t g_554 = 0xF0FBA284L;
static uint32_t g_608[2][1] = {{1UL}, {1UL}};
static struct S1 **g_626[2] = {(void*)0, (void*)0};
static struct S1 g_629 = {0x3471649FL};
static uint8_t *g_690 = &g_201;
static uint8_t **g_689 = &g_690;
static int8_t ** const g_704 = (void*)0;
static int8_t ** const *g_703 = &g_704;
static struct S2 g_728 = {109,0,30,298,-0,-2739,-360,1};
static const uint16_t g_732[2] = {0xD358L, 0xD358L};
static const int32_t g_768 = (-4L);
static int64_t g_818[2] = {0xEF9AFE261BB12278LL, 0xEF9AFE261BB12278LL};
static int64_t g_827 = (-10L);
static int8_t g_830 = 0xD7L;
static int16_t g_832[1] = {0x38D9L};
static int64_t g_834[2] = {1L, 1L};
static uint64_t g_835 = 18446744073709551608UL;
static struct S2 **g_842 = &g_223;
static uint8_t g_869[2] = {0UL, 0UL};
static uint8_t g_877 = 0UL;
static uint8_t g_912 = 0x28L;
static uint32_t g_931[1][2] = {{4294967295UL, 4294967295UL}};
static int8_t g_935 = 0xC7L;
static int16_t g_1077 = 0xC284L;
static uint32_t g_1078[2][2] = {{0x2BB47BFAL, 0x2BB47BFAL}, {0x2BB47BFAL, 0x2BB47BFAL}};
static int64_t g_1096 = (-3L);
static int16_t g_1097 = (-1L);
static uint8_t g_1098[3] = {0x64L, 0x64L, 0x64L};


/* --- FORWARD DECLARATIONS --- */
static uint32_t  func_1(void);
static struct S2 * func_2(const uint64_t  p_3, int32_t  p_4, int32_t  p_5, struct S3  p_6);
static uint16_t  func_12(struct S2 * p_13, uint32_t  p_14, int32_t  p_15, uint16_t * p_16, const uint16_t * p_17);
static uint32_t  func_20(struct S2  p_21, uint64_t  p_22, union U4  p_23, const struct S2 * p_24);


/* --- FUNCTIONS --- */
/* ------------------------------------------ */
/* 
 * reads : g_25 g_26 g_28 g_19.f4 g_38 g_44 g_19.f0 g_50 g_59 g_70 g_88 g_115 g_119 g_47 g_136 g_28.f0 g_102 g_626 g_222 g_223 g_19 g_608 g_384.f1.f0 g_194 g_171 g_265 g_151 g_384 g_689 g_690 g_201 g_184 g_95 g_143 g_85.f0 g_728.f5 g_536 g_554 g_768 g_629 g_462 g_233 g_835 g_830 g_877 g_912 g_842 g_931 g_935 g_818 g_454 g_827 g_11 g_728.f1 g_834 g_1078 g_1098 g_266
 * writes: g_11 g_38 g_44 g_50 g_47 g_59 g_19.f4 g_95 g_88.f3 g_102 g_88.f4 g_115 g_119 g_194 g_171 g_266 g_151 g_143 g_222 g_703 g_554 g_608 g_88.f1 g_384.f0 g_626 g_201 g_257 g_835 g_842 g_832 g_728.f4 g_869 g_877 g_25.f6 g_912 g_931 g_223 g_454 g_136.f2 g_25.f5 g_233 g_1078 g_1098
 */
static uint32_t  func_1(void)
{ /* block id: 0 */
    uint32_t l_9[1];
    uint16_t *l_10 = &g_11;
    struct S2 *l_18 = &g_19;
    union U4 l_27[3] = {{4294967295UL}, {4294967295UL}, {4294967295UL}};
    const struct S2 *l_29[3][2] = {{&g_25, &g_25}, {&g_25, &g_25}, {&g_25, &g_25}};
    const uint16_t *l_731 = &g_732[0];
    const uint16_t **l_730 = &l_731;
    union U4 *l_1105 = &l_27[0];
    union U4 **l_1106 = &l_1105;
    int i, j;
    for (i = 0; i < 1; i++)
        l_9[i] = 4294967289UL;
    l_29[2][0] = func_2((safe_add_func_uint16_t_u_u(((*l_10) = l_9[0]), (func_12(l_18, (func_20(g_25, (g_26 && l_9[0]), l_27[0], (g_28 , l_29[2][0])) && (-1L)), (safe_unary_minus_func_uint16_t_u(g_384[0][1].f2)), &g_233, ((*l_730) = l_10)) != l_9[0]))), g_19.f6, g_935, g_136[0]);
    (*l_1106) = l_1105;
    return l_9[0];
}


/* ------------------------------------------ */
/* 
 * reads : g_842 g_223 g_818 g_454 g_201 g_554 g_19.f0 g_827 g_608 g_768 g_11 g_194 g_690 g_728.f1 g_184 g_931 g_25.f5 g_88.f4 g_877 g_59 g_233 g_834 g_1078 g_1098 g_265 g_266
 * writes: g_223 g_454 g_201 g_554 g_136.f2 g_11 g_25.f5 g_88.f4 g_877 g_102 g_59 g_233 g_1078 g_1098 g_266
 */
static struct S2 * func_2(const uint64_t  p_3, int32_t  p_4, int32_t  p_5, struct S3  p_6)
{ /* block id: 585 */
    struct S2 *l_936 = &g_19;
    int32_t l_937 = 0L;
    uint8_t l_938 = 0x4FL;
    uint32_t l_939 = 0UL;
    uint16_t *l_940 = &g_11;
    struct S3 l_954 = {11959,{0xDF589395L},1L};
    struct S1 *l_957 = &g_384[0][1].f1;
    const struct S2 *l_968 = &g_19;
    int32_t l_993 = 0xABE37C86L;
    int32_t l_1004 = 0x43B11AAFL;
    uint64_t l_1011 = 0UL;
    uint32_t l_1025 = 0UL;
    int32_t l_1071 = 9L;
    int32_t l_1073[3][3] = {{0xF228268EL, 0xEA927CD4L, 0xF228268EL}, {0xF228268EL, 0xEA927CD4L, 0xF228268EL}, {0xF228268EL, 0xEA927CD4L, 0xF228268EL}};
    int i, j;
    if (p_6.f0)
    { /* block id: 588 */
        uint16_t l_941 = 65535UL;
        int32_t *l_942 = &l_937;
        (*g_842) = (*g_842);
        (*l_942) ^= (p_6.f0 = l_941);
    }
    else
    { /* block id: 592 */
        union U4 l_952 = {0UL};
        const struct S2 *l_953 = &g_25;
        int16_t *l_958 = (void*)0;
        int16_t *l_959 = &l_954.f2;
        int32_t *l_960 = &l_937;
        uint16_t l_976 = 0x8BEEL;
        int32_t l_992 = 0x59FE5A1EL;
        int32_t l_995[3];
        uint32_t l_1001 = 4294967295UL;
        uint16_t l_1005 = 0UL;
        struct S2 *l_1018[3][1];
        int32_t l_1076 = (-7L);
        int i, j;
        for (i = 0; i < 3; i++)
            l_995[i] = (-1L);
        for (i = 0; i < 3; i++)
        {
            for (j = 0; j < 1; j++)
                l_1018[i][j] = &g_25;
        }
lbl_961:
        (*l_960) = (safe_lshift_func_int16_t_s_s((((safe_mod_func_uint8_t_u_u(((safe_sub_func_int8_t_s_s(p_6.f2, ((void*)0 != &g_136[0]))) > l_937), 0xE2L)) ^ ((l_954 , (p_6.f0 <= ((*l_959) |= (((p_6.f2 > (safe_lshift_func_uint8_t_u_u(((l_952.f0 , l_957) == l_957), 2))) || p_4) == g_818[1])))) <= p_4)) ^ 0x8991B0F2BFA7D48DLL), 14));
        for (g_454 = 0; (g_454 <= 1); g_454 += 1)
        { /* block id: 597 */
            uint16_t l_969[3];
            int8_t **l_978 = (void*)0;
            int8_t ***l_977 = &l_978;
            int32_t l_997 = 0x20EFA0F8L;
            int32_t l_1000 = 0x26B29F2CL;
            struct S2 l_1030[3][2] = {{{129,-0,70,675,-0,-2895,-471,0}, {129,-0,70,675,-0,-2895,-471,0}}, {{129,-0,70,675,-0,-2895,-471,0}, {129,-0,70,675,-0,-2895,-471,0}}, {{129,-0,70,675,-0,-2895,-471,0}, {129,-0,70,675,-0,-2895,-471,0}}};
            struct S3 *l_1039 = (void*)0;
            struct S3 **l_1038 = &l_1039;
            int i, j;
            for (i = 0; i < 3; i++)
                l_969[i] = 0UL;
            for (p_6.f2 = 0; (p_6.f2 <= 1); p_6.f2 += 1)
            { /* block id: 600 */
                int64_t l_994 = (-1L);
                int32_t l_999[1];
                union U4 l_1034 = {0UL};
                int i;
                for (i = 0; i < 1; i++)
                    l_999[i] = 0L;
                for (g_201 = 0; (g_201 <= 1); g_201 += 1)
                { /* block id: 603 */
                    uint16_t l_966 = 0UL;
                    union U4 l_967[2] = {{4294967295UL}, {4294967295UL}};
                    uint16_t *l_979 = &l_969[0];
                    int32_t l_996 = 8L;
                    int32_t l_998 = 0L;
                    int i;
                    if (p_6.f2)
                        goto lbl_961;
                    for (g_554 = 1; (g_554 >= 0); g_554 -= 1)
                    { /* block id: 607 */
                        if (p_6.f1.f0)
                            break;
                    }
                    if ((safe_div_func_int64_t_s_s((safe_sub_func_uint64_t_u_u((((*l_979) = ((l_937 |= (g_136[0].f2 = ((g_19.f0 > l_969[0]) & (safe_mul_func_int8_t_s_s((safe_mod_func_uint64_t_u_u(g_827, g_608[0][0])), (l_967[1] , l_954.f2)))))) <= ((l_966 , (g_768 , ((--(*l_940)) != l_976))) && (l_977 == &l_978)))) >= p_3), 0x03831131433D532ELL)), 2L)))
                    { /* block id: 614 */
                        int32_t *l_980 = &g_554;
                        int32_t *l_981 = &g_554;
                        int64_t l_982[2][2] = {{(-1L), 0x53397FAAB3B4D4D1LL}, {(-1L), 0x53397FAAB3B4D4D1LL}};
                        int32_t *l_983 = &g_50;
                        int32_t *l_984 = &g_50;
                        int32_t *l_985 = &l_937;
                        int32_t *l_986 = (void*)0;
                        int32_t *l_987 = &g_151;
                        int32_t *l_988 = &g_554;
                        int32_t *l_989 = (void*)0;
                        int32_t *l_990 = &l_937;
                        int32_t *l_991[2][2];
                        int i, j;
                        for (i = 0; i < 2; i++)
                        {
                            for (j = 0; j < 2; j++)
                                l_991[i][j] = &l_937;
                        }
                        l_1001--;
                        (*l_960) = (p_5 > g_194);
                        if (p_6.f0)
                            break;
                        l_1005++;
                    }
                    else
                    { /* block id: 619 */
                        int32_t *l_1008 = (void*)0;
                        int32_t *l_1009 = (void*)0;
                        int32_t *l_1010[3];
                        int i;
                        for (i = 0; i < 3; i++)
                            l_1010[i] = &l_993;
                        l_1011--;
                    }
                    (*l_960) ^= ((*g_690) || (l_999[0] = (g_728.f1 > g_184[0])));
                }
                if (l_938)
                    break;
                if (p_3)
                    break;
                if (p_6.f2)
                { /* block id: 627 */
                    int16_t l_1019[2];
                    int8_t *l_1024[2];
                    uint64_t *l_1031 = &g_171;
                    struct S0 l_1037 = {4294967295UL,456,5828,0UL,6UL};
                    int i;
                    for (i = 0; i < 2; i++)
                        l_1019[i] = 0xD3DFL;
                    for (i = 0; i < 2; i++)
                        l_1024[i] = &g_935;
                    g_25.f5 |= (safe_mul_func_int16_t_s_s((safe_add_func_uint32_t_u_u((p_6.f1.f0 <= p_3), p_3)), g_931[0][1]));
                    for (p_4 = 0; (p_4 <= 1); p_4 += 1)
                    { /* block id: 633 */
                        struct S3 ***l_1040 = &l_1038;
                        struct S3 **l_1042[2][1];
                        struct S3 ***l_1041 = &l_1042[0][0];
                        int32_t l_1049[3][3] = {{1L, 1L, 0xCB07D0F2L}, {1L, 1L, 0xCB07D0F2L}, {1L, 1L, 0xCB07D0F2L}};
                        int i, j;
                        for (i = 0; i < 2; i++)
                        {
                            for (j = 0; j < 1; j++)
                                l_1042[i][j] = (void*)0;
                        }
                        (*l_960) = 0x1520C875L;
                        p_6.f0 = (safe_add_func_uint8_t_u_u((8UL | p_6.f2), ((((g_11 ^= (--g_88.f4)) | ((*l_959) = (((*l_1040) = (l_1037 , l_1038)) != ((*l_1041) = &l_1039)))) | ((p_6.f2 > ((safe_add_func_int32_t_s_s(p_6.f0, p_6.f0)) , (((l_1030[0][0].f4 = (safe_add_func_uint64_t_u_u((((safe_div_func_uint64_t_u_u(p_6.f2, (*l_960))) | 0x74E8CB21L) & l_1049[1][0]), 1L))) , 0x7FL) || 0xAEL))) & 0L)) > l_1030[0][0].f3)));
                    }
                }
                else
                { /* block id: 644 */
                    struct S2 *l_1050 = (void*)0;
                    (*l_960) = (l_994 , 0x4BC0F12CL);
                    (*l_960) |= p_3;
                    return l_1050;
                }
            }
            for (g_877 = 0; (g_877 <= 1); g_877 += 1)
            { /* block id: 652 */
                int32_t **l_1051 = &g_102;
                (*l_1051) = (void*)0;
                return (*g_842);
            }
        }
        for (g_59 = 0; (g_59 <= 1); g_59 += 1)
        { /* block id: 659 */
            int32_t l_1064 = 0xB141BD46L;
            int32_t l_1065 = 0x91AF2904L;
            int32_t l_1066 = 0x3E712084L;
            int32_t l_1069 = 1L;
            int32_t l_1070 = (-1L);
            int32_t l_1075[2];
            int32_t *l_1081 = &l_1065;
            int32_t *l_1082 = &l_1004;
            int32_t *l_1083 = &l_1069;
            int32_t *l_1084 = &l_1073[2][2];
            int32_t *l_1085 = &l_1073[1][1];
            int32_t *l_1086 = &l_1073[2][2];
            int32_t *l_1087 = &l_1073[2][0];
            int32_t *l_1088 = &l_992;
            int32_t *l_1089 = (void*)0;
            int32_t *l_1090 = &l_1071;
            int32_t *l_1091 = (void*)0;
            int32_t *l_1092 = &l_995[1];
            int32_t *l_1093 = &l_995[1];
            int32_t *l_1094[1][2];
            int32_t l_1095 = 0x186364E1L;
            int i, j;
            for (i = 0; i < 2; i++)
                l_1075[i] = (-7L);
            for (i = 0; i < 1; i++)
            {
                for (j = 0; j < 2; j++)
                    l_1094[i][j] = &l_1073[0][1];
            }
            for (l_937 = 0; (l_937 <= 1); l_937 += 1)
            { /* block id: 662 */
                int32_t *l_1052 = &g_554;
                int32_t **l_1053 = &l_1052;
                int32_t l_1062 = 2L;
                int32_t l_1063 = 1L;
                int32_t l_1067 = 0x019219DFL;
                int32_t l_1068 = 8L;
                int32_t l_1072 = 0x3153476AL;
                int32_t l_1074[1][1];
                int i, j;
                for (i = 0; i < 1; i++)
                {
                    for (j = 0; j < 1; j++)
                        l_1074[i][j] = 2L;
                }
                (*l_1053) = l_1052;
                for (g_11 = 0; (g_11 <= 1); g_11 += 1)
                { /* block id: 666 */
                    uint16_t *l_1054 = (void*)0;
                    uint16_t *l_1055 = &g_233;
                    struct S1 l_1060 = {0x83424CC8L};
                    int32_t *l_1061[2];
                    int i;
                    for (i = 0; i < 2; i++)
                        l_1061[i] = &l_995[2];
                    (*l_1052) = ((--(*l_1055)) < ((safe_rshift_func_int16_t_s_u(g_834[g_11], (g_88.f4 &= (l_1060 , g_834[g_11])))) == 1L));
                    g_1078[1][1]--;
                }
            }
            g_1098[2]--;
        }
        (*l_960) = l_1073[2][2];
    }
    (*g_265) = (*g_265);
    for (l_1011 = 0; (l_1011 > 17); l_1011 = safe_add_func_int32_t_s_s(l_1011, 3))
    { /* block id: 680 */
        int32_t **l_1103[1][2];
        int i, j;
        for (i = 0; i < 1; i++)
        {
            for (j = 0; j < 2; j++)
                l_1103[i][j] = &g_102;
        }
        g_102 = &g_151;
    }
    for (l_1004 = 1; (l_1004 >= 0); l_1004 -= 1)
    { /* block id: 685 */
        int32_t **l_1104 = &g_102;
        (*l_1104) = &l_1071;
        return l_936;
    }
    return l_936;
}


/* ------------------------------------------ */
/* 
 * reads : g_194 g_728.f5 g_25.f4 g_119 g_536 g_554 g_608 g_19.f5 g_384.f0 g_768 g_629 g_462 g_233 g_689 g_690 g_201 g_47 g_25.f6 g_85.f0 g_835 g_830 g_265 g_88.f3 g_19.f4 g_877 g_384 g_912 g_26 g_842 g_223 g_151 g_88.f4 g_931 g_44
 * writes: g_119 g_554 g_608 g_88.f1 g_115 g_384.f0 g_626 g_201 g_257 g_835 g_50 g_842 g_832 g_266 g_728.f4 g_194 g_869 g_877 g_25.f6 g_912 g_931 g_44
 */
static uint16_t  func_12(struct S2 * p_13, uint32_t  p_14, int32_t  p_15, uint16_t * p_16, const uint16_t * p_17)
{ /* block id: 457 */
    int16_t l_733 = 0xD691L;
    int32_t *l_734[3][3] = {{&g_554, &g_50, &g_554}, {&g_554, &g_50, &g_554}, {&g_554, &g_50, &g_554}};
    uint64_t l_735[2];
    uint64_t l_742 = 0x837541C35FE24CB6LL;
    uint8_t l_754 = 0UL;
    union U4 l_808 = {0x1448AD75L};
    struct S0 *l_851[2];
    struct S1 *l_862 = (void*)0;
    struct S1 **l_861 = &l_862;
    struct S1 **l_863 = &l_862;
    uint32_t l_929[2];
    int i, j;
    for (i = 0; i < 2; i++)
        l_735[i] = 0x58E9CAD0B0447455LL;
    for (i = 0; i < 2; i++)
        l_851[i] = &g_88;
    for (i = 0; i < 2; i++)
        l_929[i] = 1UL;
lbl_934:
    p_15 |= l_733;
    l_735[1]--;
    for (g_119 = 0; (g_119 <= 0); g_119 += 1)
    { /* block id: 462 */
        int16_t l_740 = 0x0F7DL;
        int16_t *l_741[2][3];
        union U4 l_743 = {0x865707D2L};
        int32_t l_744 = 0x74DCC371L;
        int8_t *l_750[1];
        uint32_t *l_760[1][1];
        const struct S1 *l_776 = &g_629;
        const struct S1 **l_775 = &l_776;
        const int8_t ** const *l_782 = (void*)0;
        struct S1 *l_786 = (void*)0;
        int32_t l_813 = 0x26801D9AL;
        int32_t l_814 = 0x7C228A46L;
        int32_t l_815 = 0x88BC6CC6L;
        struct S0 l_895 = {0x0776E6A9L,554,20575,0x5E61E4A3L,0xFB4CL};
        int64_t l_897 = (-5L);
        int32_t l_907 = 1L;
        int32_t l_908 = 4L;
        int32_t l_909 = 0x19D7F91DL;
        int32_t l_910 = 4L;
        int32_t l_911 = 0x9D2CC78AL;
        int i, j;
        for (i = 0; i < 2; i++)
        {
            for (j = 0; j < 3; j++)
                l_741[i][j] = (void*)0;
        }
        for (i = 0; i < 1; i++)
            l_750[i] = &g_95;
        for (i = 0; i < 1; i++)
        {
            for (j = 0; j < 1; j++)
                l_760[i][j] = &g_462;
        }
        p_15 = (g_194 && ((+p_14) , (l_744 |= ((safe_add_func_int16_t_s_s(g_728.f5, (l_742 = l_740))) , (l_743 , g_25.f4)))));
        if (l_743.f0)
        { /* block id: 466 */
            uint32_t l_745 = 0x435858A6L;
            int32_t l_765 = (-1L);
            const struct S1 l_779 = {0x2F1A61AAL};
            struct S1 *l_784 = &g_384[0][1].f1;
            int32_t l_820 = 0xE01D5EA9L;
            int32_t l_831 = 0L;
            int32_t l_833[2];
            union U4 **l_890 = &g_257;
            uint8_t l_900[1];
            int i;
            for (i = 0; i < 2; i++)
                l_833[i] = (-4L);
            for (i = 0; i < 1; i++)
                l_900[i] = 0x9AL;
            if (((~1L) & l_745))
            { /* block id: 467 */
                for (g_554 = 0; (g_554 >= 0); g_554 -= 1)
                { /* block id: 470 */
                    int32_t **l_748 = (void*)0;
                    int32_t **l_749[3];
                    int i, j;
                    for (i = 0; i < 3; i++)
                        l_749[i] = &l_734[1][0];
                    p_15 = (((g_536[g_119][(g_119 + 2)] || (p_15 , (++g_608[(g_119 + 1)][g_554]))) , &g_102) == (void*)0);
                    if (p_14)
                        continue;
                    g_88.f1 = g_536[g_119][(g_119 + 2)];
                    g_115 = &g_554;
                }
            }
            else
            { /* block id: 477 */
                struct S1 l_773 = {0xF2641908L};
                int32_t *l_801 = (void*)0;
                int32_t l_807 = (-6L);
                union U4 *l_812 = &l_808;
                int32_t l_817[2];
                int32_t l_822 = 0x5071F0CDL;
                int32_t l_825[3];
                struct S3 *l_856 = &g_384[0][1];
                int i;
                for (i = 0; i < 2; i++)
                    l_817[i] = 0x83CB998DL;
                for (i = 0; i < 3; i++)
                    l_825[i] = 8L;
                if (l_745)
                { /* block id: 478 */
                    int32_t l_751[1];
                    struct S3 l_757 = {26916,{1UL},-2L};
                    int8_t l_763 = 0x3BL;
                    int8_t l_764[3];
                    struct S1 ***l_774 = &g_626[1];
                    int32_t **l_783 = &l_734[0][2];
                    struct S1 **l_785[1][1];
                    int32_t l_819 = 0x617B8101L;
                    int32_t l_821 = (-1L);
                    int32_t l_824 = 0x1F05A42EL;
                    int32_t l_826 = 0xAC31FAB5L;
                    int32_t l_828 = 0x274F0115L;
                    int32_t l_829 = 0x9D5AE450L;
                    int i, j;
                    for (i = 0; i < 1; i++)
                        l_751[i] = 0x740A466BL;
                    for (i = 0; i < 3; i++)
                        l_764[i] = 2L;
                    for (i = 0; i < 1; i++)
                    {
                        for (j = 0; j < 1; j++)
                            l_785[i][j] = &l_784;
                    }
                    g_384[0][1].f0 |= (l_750[0] != (((l_765 = ((0xA7ECL <= p_15) | ((l_751[0] , 0xCEL) == ((safe_mod_func_uint16_t_u_u(l_754, (safe_lshift_func_uint16_t_u_s((l_757 , ((l_744 , (void*)0) != (void*)0)), 9)))) , (safe_sub_func_uint64_t_u_u(((void*)0 == l_760[0][0]), ((!((g_19.f5 <= (((safe_add_func_int32_t_s_s(l_763, p_15)) == l_745) , 4294967295UL)) | 0xE1L)) && l_764[0]))))))) == 1L) , (void*)0));
                    (*l_783) = ((0x93B7EA68L && ((safe_add_func_int8_t_s_s(g_768, (safe_mul_func_uint16_t_u_u((safe_mod_func_uint8_t_u_u((((p_15 > (l_773 , 0x7B94B18CL)) , g_536[0][1]) ^ ((((*l_774) = (void*)0) == l_775) ^ (safe_div_func_int64_t_s_s(((l_779 , (**l_775)) , (((g_462 , ((safe_lshift_func_int16_t_s_u((l_782 != &g_704), 9)) & l_773.f0)) , p_14) || 0x61B2L)), p_15)))), 1UL)), 65535UL)))) > p_14)) , &g_151);
                    if ((((l_786 = l_784) == ((safe_add_func_uint8_t_u_u(((*g_690) = (((*p_16) || (0xF70A23E8L < (safe_mod_func_int16_t_s_s((safe_add_func_int8_t_s_s(0x40L, (safe_unary_minus_func_uint8_t_u(7UL)))), (safe_mul_func_uint8_t_u_u((**g_689), p_15)))))) <= l_745)), 0UL)) , &l_773)) | (safe_rshift_func_uint16_t_u_u((*p_16), (safe_rshift_func_uint16_t_u_s(g_47, 6))))))
                    { /* block id: 485 */
                        uint64_t l_800 = 0UL;
                        int32_t *l_802 = (void*)0;
                        l_757.f0 = 0x2161C7E9L;
                        if (l_800)
                            continue;
                        l_802 = l_801;
                        (*l_783) = &p_15;
                    }
                    else
                    { /* block id: 490 */
                        union U4 **l_810 = (void*)0;
                        union U4 **l_811 = &g_257;
                        int32_t l_816 = 0L;
                        int32_t l_823 = 0L;
                        p_15 = (safe_add_func_int64_t_s_s(((safe_add_func_int8_t_s_s((l_807 ^= g_25.f6), (l_808 , (safe_unary_minus_func_int64_t_s((l_779.f0 , g_85.f0)))))) , (((*l_811) = &g_85) == l_812)), 0x618F01D8E352B337LL));
                        ++g_835;
                    }
                }
                else
                { /* block id: 496 */
                    uint8_t l_857 = 0xEDL;
                    int32_t l_858 = (-1L);
                    for (g_50 = 1; (g_50 >= 0); g_50 -= 1)
                    { /* block id: 499 */
                        struct S2 ***l_840 = &g_222;
                        struct S2 ***l_841[2];
                        const struct S1 ***l_854 = &l_775;
                        const int32_t l_855 = 4L;
                        int i;
                        for (i = 0; i < 2; i++)
                            l_841[i] = &g_222;
                        g_728.f4 = (g_830 , ((l_765 | ((safe_add_func_uint16_t_u_u((((&g_690 != (void*)0) , &p_13) == (g_842 = &g_223)), (((~(safe_lshift_func_uint16_t_u_u((safe_lshift_func_int16_t_s_s((g_832[0] = g_119), 5)), 10))) , p_15) != ((0xE3315345L || (((2UL < ((((safe_mul_func_uint8_t_u_u((safe_div_func_uint8_t_u_u(((+((l_851[0] == ((*g_265) = (void*)0)) >= (safe_mod_func_int32_t_s_s(((((*l_854) = &l_776) != (void*)0) , 0xB58647B4L), p_15)))) <= p_15), l_855)), l_833[0])) < g_384[0][1].f0) , l_856) == (void*)0)) >= g_88.f3) == l_855)) , 0xF7B98FD6L)))) || (*p_16))) , 0L));
                        if (g_19.f4)
                            break;
                        l_857 = l_855;
                        l_858 = l_855;
                    }
                }
            }
            for (l_813 = 0; (l_813 >= 0); l_813 -= 1)
            { /* block id: 513 */
                int64_t l_866 = 0xA307956ECDCB6E36LL;
                uint32_t l_878 = 1UL;
                int32_t l_881[1];
                int i;
                for (i = 0; i < 1; i++)
                    l_881[i] = (-1L);
                for (g_194 = 0; (g_194 <= 1); g_194 += 1)
                { /* block id: 516 */
                    uint8_t *l_867 = &l_754;
                    uint8_t *l_868 = &g_869[1];
                    uint8_t *l_876[2];
                    uint32_t l_882 = 0x04BA5EB1L;
                    int i;
                    for (i = 0; i < 2; i++)
                        l_876[i] = &g_877;
                    if ((((*l_868) = ((*l_867) = ((*g_690) &= (safe_mul_func_int16_t_s_s((l_861 != (l_863 = &l_862)), (safe_div_func_int64_t_s_s(l_866, l_866))))))) ^ (safe_sub_func_int16_t_s_s((safe_rshift_func_uint8_t_u_s(p_14, ((g_877 ^= (1L ^ (safe_lshift_func_uint8_t_u_s(p_14, 6)))) >= l_878))), (l_820 = ((safe_lshift_func_int16_t_s_u((l_881[0] = 0x07F2L), 9)) & (g_384[0][1] , p_14)))))))
                    { /* block id: 524 */
                        return l_882;
                    }
                    else
                    { /* block id: 526 */
                        uint16_t l_883 = 1UL;
                        p_15 = (l_882 , p_14);
                        ++l_883;
                    }
                    if (p_15)
                        continue;
                }
                l_814 ^= (l_831 >= (safe_sub_func_int64_t_s_s(l_765, (l_735[(g_119 + 1)] ^= ((l_820 ^= (l_743.f0 == ((safe_mod_func_uint8_t_u_u(((void*)0 == l_890), (safe_rshift_func_int16_t_s_u(0x9FE9L, (safe_sub_func_int16_t_s_s((l_895 , (safe_unary_minus_func_int16_t_s(g_768))), l_897)))))) > (!(g_25.f6 &= 0x17A974C2L))))) <= ((safe_add_func_uint8_t_u_u(l_900[0], p_14)) & 0xAA9AL))))));
            }
        }
        else
        { /* block id: 537 */
            int32_t **l_901 = &l_734[0][2];
            (*l_901) = &p_15;
        }
        for (l_895.f3 = 0; (l_895.f3 <= 1); l_895.f3 += 1)
        { /* block id: 542 */
            int32_t l_902 = 0L;
            int32_t l_903 = 0L;
            int32_t l_904 = 0x1E35CDAAL;
            int32_t l_905 = (-10L);
            int32_t l_906[3][2] = {{0xB773D589L, 0xB773D589L}, {0xB773D589L, 0xB773D589L}, {0xB773D589L, 0xB773D589L}};
            uint8_t l_915 = 254UL;
            int i, j;
            ++g_912;
            l_915--;
            for (l_908 = 0; (l_908 >= 0); l_908 -= 1)
            { /* block id: 547 */
                int8_t l_918 = 0xAAL;
                int32_t l_930 = 1L;
                for (l_915 = 0; (l_915 <= 0); l_915 += 1)
                { /* block id: 550 */
                    return g_26;
                }
                for (l_742 = 0; (l_742 <= 1); l_742 += 1)
                { /* block id: 555 */
                    int i;
                    if ((p_14 != ((p_13 = (*g_842)) != (*g_842))))
                    { /* block id: 557 */
                        int64_t l_919 = 1L;
                        l_918 ^= l_814;
                        p_15 |= l_919;
                    }
                    else
                    { /* block id: 560 */
                        int32_t **l_920 = &g_115;
                        (*l_920) = &p_15;
                    }
                    for (g_194 = 0; (g_194 <= 0); g_194 += 1)
                    { /* block id: 565 */
                        return (*p_16);
                    }
                    l_813 |= (-1L);
                    l_906[0][0] |= (safe_mul_func_int8_t_s_s((safe_lshift_func_uint16_t_u_u((safe_lshift_func_uint8_t_u_s(((l_813 = ((0L ^ (l_735[l_742] |= g_151)) | p_14)) || ((l_897 , (*p_16)) , (0xE4C9L & (p_15 != (safe_div_func_int32_t_s_s((((**l_775) , l_895) , l_929[1]), (l_815 &= 0xE7401682L))))))), p_14)), g_88.f4)), (*g_690)));
                }
                g_931[0][1]++;
            }
        }
        for (g_44 = 0; (g_44 <= 0); g_44 += 1)
        { /* block id: 579 */
            return (*p_16);
        }
    }
    if (p_15)
        goto lbl_934;
    return (*p_16);
}


/* ------------------------------------------ */
/* 
 * reads : g_19.f4 g_38 g_44 g_19.f0 g_50 g_25.f3 g_26 g_25.f4 g_59 g_70 g_25.f2 g_25.f6 g_25.f1 g_25.f0 g_88 g_115 g_119 g_47 g_136 g_28.f0 g_102 g_626 g_222 g_223 g_19 g_608 g_384.f1.f0 g_194 g_171 g_265 g_151 g_384 g_689 g_690 g_201 g_184 g_95 g_143 g_25.f7 g_85.f0
 * writes: g_38 g_44 g_50 g_47 g_59 g_19.f4 g_95 g_88.f3 g_102 g_88.f4 g_115 g_119 g_194 g_171 g_266 g_151 g_143 g_222 g_703
 */
static uint32_t  func_20(struct S2  p_21, uint64_t  p_22, union U4  p_23, const struct S2 * p_24)
{ /* block id: 2 */
    struct S2 *l_36 = &g_25;
    int32_t l_55 = (-2L);
    int32_t l_56[3];
    int8_t *l_133 = &g_95;
    uint64_t *l_219 = &g_38;
    int32_t **l_230 = (void*)0;
    uint8_t *l_249 = &g_194;
    struct S3 l_291 = {14462,{0UL},9L};
    uint8_t l_298 = 249UL;
    int32_t l_308 = 0x49396E87L;
    int32_t l_332 = 1L;
    int32_t *l_369 = &l_56[2];
    uint32_t l_391 = 0x67D236D1L;
    struct S0 *l_409 = &g_88;
    struct S3 *l_460[2][3] = {{&g_136[0], &g_136[0], &g_136[0]}, {&g_136[0], &g_136[0], &g_136[0]}};
    struct S3 **l_459[2];
    uint8_t l_520 = 7UL;
    int16_t l_533 = 0L;
    union U4 l_563[1] = {{4294967295UL}};
    int32_t l_585 = (-7L);
    uint32_t l_605 = 6UL;
    struct S1 *l_625 = (void*)0;
    struct S1 **l_624 = &l_625;
    struct S1 **l_627 = (void*)0;
    struct S1 *l_628 = &g_629;
    struct S1 **l_648 = &l_628;
    uint32_t l_726[3];
    struct S2 *l_727 = &g_728;
    int i, j;
    for (i = 0; i < 3; i++)
        l_56[i] = 1L;
    for (i = 0; i < 2; i++)
        l_459[i] = &l_460[0][0];
    for (i = 0; i < 3; i++)
        l_726[i] = 0x0B41E814L;
    if (g_19.f4)
    { /* block id: 3 */
        uint64_t *l_37 = &g_38;
        uint16_t *l_43 = &g_44;
        int32_t l_45 = (-9L);
        int16_t *l_46[1][2];
        int32_t l_48 = 8L;
        int32_t *l_49 = &g_50;
        int i, j;
        for (i = 0; i < 1; i++)
        {
            for (j = 0; j < 2; j++)
                l_46[i][j] = &g_47;
        }
lbl_103:
        if ((((safe_mul_func_int16_t_s_s((g_47 = (p_23.f0 && (safe_mul_func_uint16_t_u_u(((safe_mul_func_int8_t_s_s((((l_36 = l_36) == (((*l_37)--) , &p_21)) ^ ((*l_49) |= (safe_mul_func_int16_t_s_s(p_21.f4, (l_48 ^= (((*l_43) &= 0xE8A7L) == (l_45 |= g_19.f0))))))), (safe_mod_func_int64_t_s_s((safe_lshift_func_int16_t_s_s((p_21.f2 , 0xDFB4L), 1)), (l_56[1] ^= l_55))))) , (*l_49)), l_55)))), 0x4B1AL)) != (g_25.f3 & (g_59 &= (((((safe_mod_func_int32_t_s_s(6L, p_21.f3)) , g_26) , g_25.f4) , 0x1CA0702DL) == p_21.f1)))) < l_55))
        { /* block id: 13 */
            uint64_t *l_66 = &g_38;
            int32_t l_71 = 0x8983C1E2L;
            int32_t *l_96[3];
            int i;
            for (i = 0; i < 3; i++)
                l_96[i] = &l_56[1];
            for (g_38 = 0; (g_38 >= 43); ++g_38)
            { /* block id: 16 */
                uint16_t *l_69[2];
                int64_t l_79 = (-1L);
                int8_t *l_94 = &g_95;
                int i;
                for (i = 0; i < 2; i++)
                    l_69[i] = &g_44;
                (*l_49) = (+(safe_rshift_func_int16_t_s_u((*l_49), (safe_rshift_func_int8_t_s_u((l_66 != (g_50 , &p_22)), g_19.f0)))));
                for (g_47 = 0; (g_47 > 24); g_47 = safe_add_func_int64_t_s_s(g_47, 8))
                { /* block id: 20 */
                    union U4 *l_82 = (void*)0;
                    (*l_49) = (((((void*)0 != l_69[1]) & (*l_49)) , g_70) , l_71);
                    p_21.f1 = (&g_44 == &g_44);
                    if (l_71)
                        break;
                    for (g_50 = 0; (g_50 <= (-3)); g_50 = safe_sub_func_uint64_t_u_u(g_50, 5))
                    { /* block id: 26 */
                        struct S2 l_76[2] = {{150,0,75,52,0,-2235,-312,0}, {150,0,75,52,0,-2235,-312,0}};
                        union U4 *l_84[3];
                        union U4 **l_83 = &l_84[0];
                        int32_t *l_89[1][1];
                        int i, j;
                        for (i = 0; i < 3; i++)
                            l_84[i] = &g_85;
                        for (i = 0; i < 1; i++)
                        {
                            for (j = 0; j < 1; j++)
                                l_89[i][j] = &l_55;
                        }
                        g_19.f4 ^= ((0x1A6511C0L < g_25.f2) <= (safe_div_func_uint64_t_u_u((l_76[0] , (safe_lshift_func_uint8_t_u_s(g_25.f6, g_25.f1))), (g_25.f0 & ((!l_79) < (safe_sub_func_int16_t_s_s(1L, p_21.f3)))))));
                        (*l_83) = (l_82 = &p_23);
                        l_45 = ((safe_rshift_func_int16_t_s_s(g_25.f3, 10)) == (g_88 , g_19.f4));
                    }
                }
                l_96[2] = ((safe_mul_func_int8_t_s_s(p_21.f7, ((*l_94) = (safe_lshift_func_uint8_t_u_s(l_79, 4))))) , &g_50);
            }
            for (g_88.f3 = 0; g_88.f3 < 3; g_88.f3 += 1)
            {
                l_96[g_88.f3] = &l_55;
            }
        }
        else
        { /* block id: 37 */
            const int32_t *l_98 = (void*)0;
            const int32_t **l_97 = &l_98;
            (*l_97) = (void*)0;
        }
        for (l_45 = 0; (l_45 > (-20)); l_45--)
        { /* block id: 42 */
            int32_t *l_101 = (void*)0;
            for (g_44 = 0; (g_44 <= 0); g_44 += 1)
            { /* block id: 45 */
                g_102 = l_101;
                (*l_49) = g_25.f0;
            }
        }
        if (l_55)
            goto lbl_103;
    }
    else
    { /* block id: 51 */
        uint16_t l_111[2][2];
        int32_t **l_114[1][3];
        int8_t *l_134 = &g_95;
        int i, j;
        for (i = 0; i < 2; i++)
        {
            for (j = 0; j < 2; j++)
                l_111[i][j] = 65535UL;
        }
        for (i = 0; i < 1; i++)
        {
            for (j = 0; j < 3; j++)
                l_114[i][j] = (void*)0;
        }
        for (g_88.f4 = 0; (g_88.f4 == 24); g_88.f4 = safe_add_func_int16_t_s_s(g_88.f4, 2))
        { /* block id: 54 */
            struct S3 *l_106 = (void*)0;
            struct S3 **l_107 = &l_106;
            int32_t *l_108 = (void*)0;
            int32_t *l_109 = (void*)0;
            int32_t *l_110[2][1];
            int i, j;
            for (i = 0; i < 2; i++)
            {
                for (j = 0; j < 1; j++)
                    l_110[i][j] = (void*)0;
            }
            (*l_107) = l_106;
            ++l_111[0][0];
        }
lbl_125:
        g_115 = (g_102 = &g_50);
        for (g_88.f4 = 0; (g_88.f4 <= 2); g_88.f4 += 1)
        { /* block id: 62 */
            uint8_t *l_118 = &g_119;
            int32_t *l_120[1];
            int i;
            for (i = 0; i < 1; i++)
                l_120[i] = &l_56[1];
            (*g_115) |= (p_21.f7 ^ ((*l_118) = (safe_sub_func_int8_t_s_s((+l_56[1]), p_21.f1))));
            for (g_119 = 0; (g_119 <= 2); g_119 += 1)
            { /* block id: 67 */
                struct S0 *l_121 = &g_88;
                struct S0 **l_122 = &l_121;
                int i;
                l_120[0] = &l_56[g_119];
                (*l_122) = l_121;
            }
            if ((*g_115))
                continue;
            for (g_47 = 0; (g_47 != 29); g_47 = safe_add_func_int8_t_s_s(g_47, 7))
            { /* block id: 74 */
                if (g_88.f0)
                    goto lbl_125;
            }
        }
        for (l_55 = 15; (l_55 >= 28); l_55 = safe_add_func_uint16_t_u_u(l_55, 2))
        { /* block id: 80 */
            uint16_t l_132[1];
            int8_t **l_135 = &l_134;
            int16_t *l_137 = &g_59;
            int i;
            for (i = 0; i < 1; i++)
                l_132[i] = 1UL;
            (*g_115) = (((p_21.f1 , (safe_mul_func_uint16_t_u_u((p_21.f5 & (5L && ((~(((safe_add_func_uint16_t_u_u(65534UL, (l_132[0] < (p_21.f0 | l_56[0])))) , l_133) == ((*l_135) = l_134))) | g_88.f3))), (g_136[0] , p_21.f6)))) , (-3L)) , (((*l_137) = g_25.f3) <= g_44));
            (*g_102) &= (l_55 | g_28.f0);
        }
    }
    for (g_50 = 28; (g_50 != (-25)); g_50--)
    { /* block id: 89 */
        int16_t l_141[1][3];
        const struct S3 *l_156[2];
        int32_t l_166 = (-10L);
        int32_t l_167 = 0xE2578D85L;
        int32_t l_168[1][2];
        uint8_t *l_227 = &g_119;
        uint8_t l_251 = 5UL;
        struct S1 l_267 = {0xDF9A6876L};
        const int32_t *l_286 = (void*)0;
        struct S0 l_329 = {6UL,431,13662,4294967295UL,0x173DL};
        int32_t *l_333 = &l_166;
        int16_t *l_420[2][2];
        uint16_t **l_447 = (void*)0;
        const struct S2 l_584 = {-69,-0,62,410,-0,843,-588,0};
        int64_t *l_604[3];
        uint16_t l_606 = 0x8615L;
        int8_t *l_607[2][3];
        int i, j;
        for (i = 0; i < 1; i++)
        {
            for (j = 0; j < 3; j++)
                l_141[i][j] = 0L;
        }
        for (i = 0; i < 2; i++)
            l_156[i] = (void*)0;
        for (i = 0; i < 1; i++)
        {
            for (j = 0; j < 2; j++)
                l_168[i][j] = 0xEBABB07CL;
        }
        for (i = 0; i < 2; i++)
        {
            for (j = 0; j < 2; j++)
                l_420[i][j] = &l_141[0][2];
        }
        for (i = 0; i < 3; i++)
            l_604[i] = &g_143;
        for (i = 0; i < 2; i++)
        {
            for (j = 0; j < 3; j++)
                l_607[i][j] = (void*)0;
        }
    }
    if (((safe_mul_func_uint8_t_u_u((safe_lshift_func_int8_t_s_u((g_25.f2 >= p_21.f0), 0)), (g_25.f6 ^ (*l_369)))) || (p_21.f4 || (((safe_add_func_uint32_t_u_u(((l_624 == (p_21.f0 , (l_627 = g_626[1]))) & 0x6F09L), ((*l_624) != (l_628 = (*l_624))))) <= (safe_rshift_func_uint8_t_u_u(((*l_369) <= (safe_add_func_int32_t_s_s(3L, ((safe_lshift_func_uint8_t_u_u((&l_625 != &l_625), 1)) > p_21.f0)))), g_25.f2))) || 0x54AED9B700E6D798LL))))
    { /* block id: 395 */
        uint32_t *l_649 = (void*)0;
        uint32_t *l_650 = (void*)0;
        uint32_t *l_651[2][3];
        int32_t l_652 = (-8L);
        int32_t l_653 = 0xD19DBC87L;
        struct S2 **l_656 = &l_36;
        uint16_t *l_657 = (void*)0;
        uint16_t *l_658 = &g_44;
        int16_t *l_665 = (void*)0;
        int16_t *l_666 = (void*)0;
        int16_t *l_667[3];
        int64_t l_668 = 0x96F2A707A68C8909LL;
        uint64_t *l_673 = &g_379;
        int32_t l_709 = 0x96F16797L;
        uint64_t l_710 = 3UL;
        int i, j;
        for (i = 0; i < 2; i++)
        {
            for (j = 0; j < 3; j++)
                l_651[i][j] = &g_88.f3;
        }
        for (i = 0; i < 3; i++)
            l_667[i] = &g_59;
        if ((((((*l_249) = (safe_sub_func_uint32_t_u_u(7UL, (safe_sub_func_int8_t_s_s((safe_rshift_func_uint8_t_u_u((safe_sub_func_int32_t_s_s(((*g_115) = ((**g_222) , (p_21.f0 != ((safe_sub_func_int32_t_s_s((g_608[0][0] , ((l_648 = (void*)0) != &l_628)), (++p_23.f0))) < (*l_369))))), (((*l_658) = (&p_24 != l_656)) <= (safe_add_func_int64_t_s_s(((p_21.f3 ^= l_653) || g_119), g_384[0][1].f1.f0))))), 4)), (safe_mul_func_int8_t_s_s(((safe_mul_func_int16_t_s_s((l_668 |= (l_652 = p_21.f5)), (safe_add_func_uint8_t_u_u((safe_rshift_func_uint8_t_u_u(p_21.f4, g_194)), 0x4CL)))) == 255UL), p_21.f1))))))) , l_673) == (void*)0) , l_668))
        { /* block id: 404 */
            struct S1 l_678 = {0UL};
            struct S0 *l_679 = &g_88;
            for (l_585 = 0; (l_585 <= 0); l_585 += 1)
            { /* block id: 407 */
                int32_t *l_675 = &l_652;
                uint8_t **l_688 = &l_249;
                for (g_171 = 0; (g_171 <= 0); g_171 += 1)
                { /* block id: 410 */
                    int32_t **l_674[2];
                    int i;
                    for (i = 0; i < 2; i++)
                        l_674[i] = (void*)0;
                    l_675 = &g_151;
                }
                (*l_369) |= (safe_div_func_uint64_t_u_u((!(((*g_265) = (l_678 , l_679)) != l_679)), 0x4B90AFC5A83730D0LL));
                if ((*g_115))
                    break;
                (*l_369) ^= (safe_sub_func_int16_t_s_s((((*l_675) = l_678.f0) && (safe_add_func_int32_t_s_s(((((*l_675) | (((safe_rshift_func_int8_t_s_u((l_668 ^ (g_384[0][1] , 0x0EC834D0L)), 5)) , l_688) == g_689)) >= (p_23.f0 >= (&g_50 != &l_652))) || (p_21.f5 || (!(safe_rshift_func_int16_t_s_s(0xFD90L, 0))))), ((*g_690) > ((*l_133) &= (g_184[1] , 1L)))))), g_50));
            }
            for (g_143 = (-30); (g_143 == 9); g_143 = safe_add_func_uint16_t_u_u(g_143, 1))
            { /* block id: 422 */
                struct S2 ** const l_699 = &l_36;
                int8_t ** const *l_702 = (void*)0;
                (*l_369) = (safe_lshift_func_int8_t_s_s(g_19.f7, (safe_lshift_func_uint16_t_u_s(l_652, 13))));
                for (l_332 = 0; (l_332 >= 0); l_332 -= 1)
                { /* block id: 426 */
                    struct S2 ***l_700 = (void*)0;
                    struct S2 ***l_701 = &g_222;
                    int i, j;
                    g_115 = (void*)0;
                    (*l_701) = (g_384[0][2] , l_699);
                    g_703 = l_702;
                    if (g_608[l_332][l_332])
                    { /* block id: 430 */
                        int8_t *l_705[3];
                        int i;
                        for (i = 0; i < 3; i++)
                            l_705[i] = (void*)0;
                        p_21.f1 = (g_608[l_332][l_332] < ((void*)0 != l_705[1]));
                    }
                    else
                    { /* block id: 432 */
                        return l_678.f0;
                    }
                }
                if (l_678.f0)
                    continue;
            }
            (*l_624) = (g_25.f6 , ((*l_409) , (p_23 , &l_678)));
        }
        else
        { /* block id: 439 */
            int32_t *l_706 = &l_56[0];
            int32_t *l_707 = &l_56[1];
            int32_t *l_708[3];
            int i;
            for (i = 0; i < 3; i++)
                l_708[i] = &g_50;
            l_710--;
            if ((((*l_219) = (p_23 , (safe_add_func_uint64_t_u_u(g_19.f1, ((*l_707) , (g_119 <= (safe_mod_func_int32_t_s_s((*l_369), g_25.f7)))))))) != p_21.f0))
            { /* block id: 442 */
                return g_38;
            }
            else
            { /* block id: 444 */
                struct S2 ***l_717 = (void*)0;
                struct S2 ***l_718[1];
                int32_t l_725 = 1L;
                int i;
                for (i = 0; i < 1; i++)
                    l_718[i] = &g_222;
                g_222 = &l_36;
                (*g_115) = (safe_sub_func_int32_t_s_s((*l_706), ((p_21.f0 < (p_21.f4 >= (safe_lshift_func_uint16_t_u_u(((+(l_725 = (safe_rshift_func_uint8_t_u_s(4UL, 3)))) ^ l_668), 15)))) <= l_653)));
            }
        }
    }
    else
    { /* block id: 450 */
        return l_726[0];
    }
    l_727 = (l_36 = &p_21);
    return g_85.f0;
}




/* ---------------------------------------- */
int main (void)
{
    int i, j;
    int print_hash_value = 0;
    platform_main_begin();
    crc32_gentab();
    func_1();
    transparent_crc(g_11, "g_11", print_hash_value);
    transparent_crc(g_19.f0, "g_19.f0", print_hash_value);
    transparent_crc(g_19.f1, "g_19.f1", print_hash_value);
    transparent_crc(g_19.f2, "g_19.f2", print_hash_value);
    transparent_crc(g_19.f3, "g_19.f3", print_hash_value);
    transparent_crc(g_19.f4, "g_19.f4", print_hash_value);
    transparent_crc(g_19.f5, "g_19.f5", print_hash_value);
    transparent_crc(g_19.f6, "g_19.f6", print_hash_value);
    transparent_crc(g_19.f7, "g_19.f7", print_hash_value);
    transparent_crc(g_25.f0, "g_25.f0", print_hash_value);
    transparent_crc(g_25.f1, "g_25.f1", print_hash_value);
    transparent_crc(g_25.f2, "g_25.f2", print_hash_value);
    transparent_crc(g_25.f3, "g_25.f3", print_hash_value);
    transparent_crc(g_25.f4, "g_25.f4", print_hash_value);
    transparent_crc(g_25.f5, "g_25.f5", print_hash_value);
    transparent_crc(g_25.f6, "g_25.f6", print_hash_value);
    transparent_crc(g_25.f7, "g_25.f7", print_hash_value);
    transparent_crc(g_26, "g_26", print_hash_value);
    transparent_crc(g_28.f0, "g_28.f0", print_hash_value);
    transparent_crc(g_38, "g_38", print_hash_value);
    transparent_crc(g_44, "g_44", print_hash_value);
    transparent_crc(g_47, "g_47", print_hash_value);
    transparent_crc(g_50, "g_50", print_hash_value);
    transparent_crc(g_59, "g_59", print_hash_value);
    transparent_crc(g_70.f0, "g_70.f0", print_hash_value);
    transparent_crc(g_85.f0, "g_85.f0", print_hash_value);
    transparent_crc(g_88.f0, "g_88.f0", print_hash_value);
    transparent_crc(g_88.f1, "g_88.f1", print_hash_value);
    transparent_crc(g_88.f2, "g_88.f2", print_hash_value);
    transparent_crc(g_88.f3, "g_88.f3", print_hash_value);
    transparent_crc(g_88.f4, "g_88.f4", print_hash_value);
    transparent_crc(g_95, "g_95", print_hash_value);
    transparent_crc(g_119, "g_119", print_hash_value);
    for (i = 0; i < 1; i++)
    {
        transparent_crc(g_136[i].f0, "g_136[i].f0", print_hash_value);
        transparent_crc(g_136[i].f1.f0, "g_136[i].f1.f0", print_hash_value);
        transparent_crc(g_136[i].f2, "g_136[i].f2", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    transparent_crc(g_143, "g_143", print_hash_value);
    transparent_crc(g_151, "g_151", print_hash_value);
    transparent_crc(g_171, "g_171", print_hash_value);
    for (i = 0; i < 2; i++)
    {
        transparent_crc(g_184[i], "g_184[i]", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

    }
    transparent_crc(g_194, "g_194", print_hash_value);
    transparent_crc(g_201, "g_201", print_hash_value);
    transparent_crc(g_233, "g_233", print_hash_value);
    transparent_crc(g_379, "g_379", print_hash_value);
    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 3; j++)
        {
            transparent_crc(g_384[i][j].f0, "g_384[i][j].f0", print_hash_value);
            transparent_crc(g_384[i][j].f1.f0, "g_384[i][j].f1.f0", print_hash_value);
            transparent_crc(g_384[i][j].f2, "g_384[i][j].f2", print_hash_value);
            if (print_hash_value) printf("index = [%d][%d]\n", i, j);

        }
    }
    transparent_crc(g_454, "g_454", print_hash_value);
    transparent_crc(g_462, "g_462", print_hash_value);
    for (i = 0; i < 1; i++)
    {
        for (j = 0; j < 3; j++)
        {
            transparent_crc(g_536[i][j], "g_536[i][j]", print_hash_value);
            if (print_hash_value) printf("index = [%d][%d]\n", i, j);

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

        }
    }
    transparent_crc(g_629.f0, "g_629.f0", print_hash_value);
    transparent_crc(g_728.f0, "g_728.f0", print_hash_value);
    transparent_crc(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_728.f5, "g_728.f5", print_hash_value);
    transparent_crc(g_728.f6, "g_728.f6", print_hash_value);
    transparent_crc(g_728.f7, "g_728.f7", print_hash_value);
    for (i = 0; i < 2; i++)
    {
        transparent_crc(g_732[i], "g_732[i]", print_hash_value);
        if (print_hash_value) printf("index = [%d]\n", i);

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

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

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

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

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

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

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

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

/************************ statistics *************************
XXX max struct depth: 2
breakdown:
   depth: 0, occurrence: 288
   depth: 1, occurrence: 20
   depth: 2, occurrence: 8
XXX total union variables: 8

XXX non-zero bitfields defined in structs: 13
XXX zero bitfields defined in structs: 1
XXX const bitfields defined in structs: 1
XXX volatile bitfields defined in structs: 0
XXX structs with bitfields in the program: 61
breakdown:
   indirect level: 0, occurrence: 28
   indirect level: 1, occurrence: 24
   indirect level: 2, occurrence: 9
XXX full-bitfields structs in the program: 5
breakdown:
   indirect level: 0, occurrence: 5
XXX times a bitfields struct's address is taken: 16
XXX times a bitfields struct on LHS: 0
XXX times a bitfields struct on RHS: 53
XXX times a single bitfield on LHS: 35
XXX times a single bitfield on RHS: 213

XXX max expression depth: 33
breakdown:
   depth: 1, occurrence: 166
   depth: 2, occurrence: 48
   depth: 3, occurrence: 2
   depth: 4, occurrence: 6
   depth: 5, occurrence: 4
   depth: 6, occurrence: 1
   depth: 7, occurrence: 1
   depth: 8, occurrence: 2
   depth: 9, occurrence: 3
   depth: 15, occurrence: 1
   depth: 16, occurrence: 1
   depth: 17, occurrence: 2
   depth: 18, occurrence: 1
   depth: 19, occurrence: 1
   depth: 20, occurrence: 2
   depth: 21, occurrence: 1
   depth: 22, occurrence: 1
   depth: 23, occurrence: 2
   depth: 24, occurrence: 1
   depth: 31, occurrence: 2
   depth: 33, occurrence: 1

XXX total number of pointers: 290

XXX times a variable address is taken: 100
XXX times a pointer is dereferenced on RHS: 77
breakdown:
   depth: 1, occurrence: 67
   depth: 2, occurrence: 10
XXX times a pointer is dereferenced on LHS: 144
breakdown:
   depth: 1, occurrence: 144
XXX times a pointer is compared with null: 12
XXX times a pointer is compared with address of another variable: 4
XXX times a pointer is compared with another pointer: 6
XXX times a pointer is qualified to be dereferenced: 2565

XXX max dereference level: 3
breakdown:
   level: 0, occurrence: 0
   level: 1, occurrence: 688
   level: 2, occurrence: 37
   level: 3, occurrence: 1
XXX number of pointers point to pointers: 84
XXX number of pointers point to scalars: 164
XXX number of pointers point to structs: 33
XXX percent of pointers has null in alias set: 27.6
XXX average alias set size: 1.2

XXX times a non-volatile is read: 852
XXX times a non-volatile is write: 507
XXX times a volatile is read: 0
XXX    times read thru a pointer: 0
XXX times a volatile is write: 0
XXX    times written thru a pointer: 0
XXX times a volatile is available for access: 0
XXX percentage of non-volatile access: 100

XXX forward jumps: 0
XXX backward jumps: 9

XXX stmts: 166
XXX max block depth: 5
breakdown:
   depth: 0, occurrence: 18
   depth: 1, occurrence: 22
   depth: 2, occurrence: 28
   depth: 3, occurrence: 33
   depth: 4, occurrence: 35
   depth: 5, occurrence: 30

XXX percentage a fresh-made variable is used: 19.9
XXX percentage an existing variable is used: 80.1
FYI: the random generator makes assumptions about the integer size. See platform.info for more details.
********************* end of statistics **********************/