From 499b999bf5b89acd1f8e69c6128a3c02233c174b Mon Sep 17 00:00:00 2001 From: patchanka Date: Sun, 23 Feb 2014 17:02:11 +0100 Subject: [PATCH 01/19] Changed alcOpenDevice so it works with Safari 6 and newer. --- src/library_openal.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/library_openal.js b/src/library_openal.js index ac49fe95e7505..bdbb2dcae0192 100644 --- a/src/library_openal.js +++ b/src/library_openal.js @@ -174,8 +174,8 @@ var LibraryOpenAL = { }, alcOpenDevice: function(deviceName) { - if (typeof(AudioContext) == "function" || - typeof(webkitAudioContext) == "function") { + if (typeof(AudioContext) !== "undefined" || + typeof(webkitAudioContext) !== "undefined") { return 1; // non-null pointer -- we just simulate one device } else { return 0; From 0b063edc495d004aba176089972bc0b90d1fb22f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 25 Feb 2014 13:01:28 -0800 Subject: [PATCH 02/19] make other.test_outline a little more flexible --- tests/test_other.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_other.py b/tests/test_other.py index 69f8d5c0d84e6..55cc56356b8dd 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -919,8 +919,8 @@ def measure_funcs(filename): for test_opts, expected_ranges in [ ([], { 100: (190, 500), - 250: (200, 500), - 500: (250, 500), + 250: (200, 600), + 500: (250, 700), 1000: (230, 1000), 2000: (380, 2000), 5000: (500, 5000), From 7ab985f2ca716b3c28d51b745d7ebb87901de6ae Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 25 Feb 2014 15:08:32 -0800 Subject: [PATCH 03/19] do not warn on undefined symbols for things that are mere js lib dependencies, and not things we know are actually missing (they may be provided by a C implementation); fixes #2154 --- src/jsifier.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/jsifier.js b/src/jsifier.js index 56dc9d261beac..503f0b71dd311 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -384,7 +384,7 @@ function JSify(data, functionsOnly) { functionStubSigs[item.ident] = Functions.getSignature(item.returnType.text, item.params.map(function(arg) { return arg.type }), false); } - function addFromLibrary(ident) { + function addFromLibrary(ident, notDep) { if (ident in addedLibraryItems) return ''; addedLibraryItems[ident] = true; @@ -396,8 +396,10 @@ function JSify(data, functionsOnly) { if (('_' + ident) in Functions.implementedFunctions) return ''; if (!LibraryManager.library.hasOwnProperty(ident) && !LibraryManager.library.hasOwnProperty(ident + '__inline')) { - if (ERROR_ON_UNDEFINED_SYMBOLS) error('unresolved symbol: ' + ident); - else if (VERBOSE || (WARN_ON_UNDEFINED_SYMBOLS && !LINKABLE)) warn('unresolved symbol: ' + ident); + if (notDep) { + if (ERROR_ON_UNDEFINED_SYMBOLS) error('unresolved symbol: ' + ident); + else if (VERBOSE || (WARN_ON_UNDEFINED_SYMBOLS && !LINKABLE)) warn('unresolved symbol: ' + ident); + } // emit a stub that will fail at runtime LibraryManager.library[shortident] = new Function("Module['printErr']('missing function: " + shortident + "'); abort(-1);"); } @@ -502,7 +504,7 @@ function JSify(data, functionsOnly) { delete LibraryManager.library[shortident + '__deps']; } } - item.JS = addFromLibrary(shortident); + item.JS = addFromLibrary(shortident, true); } } From 5bf4d65b99039a8bad17d042bf9b8555c42d824a Mon Sep 17 00:00:00 2001 From: patchanka Date: Wed, 26 Feb 2014 00:22:51 +0100 Subject: [PATCH 04/19] added myself to the authors --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index 6c6b3f2761b91..0c8a0bebb08f2 100644 --- a/AUTHORS +++ b/AUTHORS @@ -126,3 +126,4 @@ a license to everyone to use it as detailed in LICENSE.) * Jack A. Arrington * Richard Janicek * Joel Croteau +* Nicolas Peri (copyright owned by ShiVa Technologies, SAS) From 7904517df3a5b85fedb735f3888b1bafad3c2d43 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 25 Feb 2014 15:34:26 -0800 Subject: [PATCH 05/19] add fuzz testcase --- tests/fuzz/15.c | 1581 +++++++++++++++++++++++++++++++++++++++++++ tests/fuzz/15.c.txt | 1 + 2 files changed, 1582 insertions(+) create mode 100644 tests/fuzz/15.c create mode 100644 tests/fuzz/15.c.txt diff --git a/tests/fuzz/15.c b/tests/fuzz/15.c new file mode 100644 index 0000000000000..d84af7051a1fa --- /dev/null +++ b/tests/fuzz/15.c @@ -0,0 +1,1581 @@ +/* + * This is a RANDOMLY GENERATED PROGRAM. + * + * Generator: csmith 2.2.0 + * Git version: bf42ffd + * Options: --no-volatiles --no-packed-struct + * Seed: 797096764 + */ + +#include "csmith.h" + + +static long __undefined; + +/* --- Struct/Union Declarations --- */ +union U0 { + const int16_t f0; + int8_t f1; + uint32_t f2; +}; + +union U1 { + uint32_t f0; + signed f1 : 23; +}; + +union U2 { + int32_t f0; + const int8_t f1; + uint32_t f2; + uint64_t f3; + const int16_t f4; +}; + +/* --- GLOBAL VARIABLES --- */ +static uint8_t g_2 = 0x99L; +static union U2 g_10[10] = {{0x98764276L},{0xDA7EF5D8L},{0x1AFA9B64L},{0x1AFA9B64L},{0xDA7EF5D8L},{0x98764276L},{0xDA7EF5D8L},{0x1AFA9B64L},{0x1AFA9B64L},{0xDA7EF5D8L}}; +static union U2 *g_9 = &g_10[9]; +static int64_t g_49 = 0x47CDD5376E30F4AELL; +static uint8_t g_53[6] = {0xA8L,0xA8L,255UL,0xA8L,0xA8L,255UL}; +static union U2 **g_54 = (void*)0; +static int16_t g_75 = 0xDA77L; +static int32_t g_89 = 0x94124F91L; +static int32_t g_92 = (-10L); +static uint32_t g_93 = 0UL; +static uint8_t g_101 = 1UL; +static int32_t g_111[9][9] = {{0xA052AF0DL,(-6L),0x1281BCF5L,(-7L),0xA052AF0DL,(-1L),(-6L),0x453539CAL,(-7L)},{0xD59F121BL,0xADC77BC6L,9L,0x74088AFDL,(-7L),0x0F6EBCB2L,(-7L),0x74088AFDL,9L},{0xA052AF0DL,0xA052AF0DL,(-6L),0x1281BCF5L,(-7L),0xA052AF0DL,(-1L),(-6L),0x453539CAL},{9L,0xADC77BC6L,9L,(-1L),9L,0x74088AFDL,0L,0x74088AFDL,9L},{0x453539CAL,0L,0L,0x453539CAL,0xA052AF0DL,0x1281BCF5L,0L,(-4L),0x453539CAL},{0xD59F121BL,(-1L),(-7L),(-1L),0xD59F121BL,0x0F6EBCB2L,0xC841BEEAL,0xADC77BC6L,0xC841BEEAL},{(-4L),0xA052AF0DL,0x90AFEB5AL,0x90AFEB5AL,0xA052AF0DL,(-4L),(-1L),0x90AFEB5AL,1L},{0x01AA1EC4L,0x0F6EBCB2L,9L,0xADC77BC6L,9L,0x0F6EBCB2L,0x01AA1EC4L,(-1L),0L},{0x453539CAL,(-1L),0x1281BCF5L,(-4L),(-4L),0x1281BCF5L,(-1L),0x453539CAL,(-4L)}}; +static int16_t *g_136[6][10] = {{&g_75,&g_75,&g_75,&g_75,&g_75,&g_75,(void*)0,(void*)0,&g_75,&g_75},{&g_75,&g_75,&g_75,&g_75,(void*)0,&g_75,&g_75,&g_75,(void*)0,&g_75},{&g_75,&g_75,&g_75,(void*)0,&g_75,&g_75,&g_75,&g_75,(void*)0,&g_75},{(void*)0,(void*)0,&g_75,&g_75,&g_75,&g_75,&g_75,&g_75,&g_75,(void*)0},{&g_75,&g_75,&g_75,&g_75,(void*)0,(void*)0,&g_75,&g_75,&g_75,&g_75},{&g_75,(void*)0,&g_75,(void*)0,(void*)0,(void*)0,&g_75,(void*)0,&g_75,&g_75}}; +static int8_t g_147 = 0x73L; +static int64_t g_149 = 0x9236ECDBE2488046LL; +static union U2 g_223 = {0x3CAFA4DCL}; +static union U2 *g_222 = &g_223; +static union U0 g_226 = {-1L}; +static union U0 *g_225 = &g_226; +static union U0 g_229[3][1][5] = {{{{0xF0CDL},{1L},{0x1C62L},{0x7D68L},{0x7D68L}}},{{{1L},{0xF0CDL},{1L},{0x1C62L},{0x7D68L}}},{{{0x095AL},{0xCCBBL},{0x7D68L},{0xCCBBL},{0x095AL}}}}; +static union U0 g_231[6][9][4] = {{{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}}},{{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}}},{{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}}},{{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}}},{{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}}},{{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}},{{0x2038L},{0x2038L},{0x2038L},{0x2038L}}}}; +static uint16_t g_245 = 0xE292L; +static const uint16_t *g_244 = &g_245; +static const uint16_t **g_243[4][5][5] = {{{&g_244,&g_244,(void*)0,&g_244,&g_244},{(void*)0,(void*)0,(void*)0,&g_244,&g_244},{&g_244,(void*)0,&g_244,(void*)0,&g_244},{(void*)0,&g_244,(void*)0,(void*)0,(void*)0},{&g_244,&g_244,&g_244,&g_244,(void*)0}},{{&g_244,(void*)0,(void*)0,&g_244,(void*)0},{(void*)0,&g_244,(void*)0,(void*)0,&g_244},{(void*)0,(void*)0,&g_244,&g_244,(void*)0},{&g_244,(void*)0,&g_244,&g_244,&g_244},{&g_244,(void*)0,(void*)0,(void*)0,&g_244}},{{&g_244,&g_244,(void*)0,(void*)0,(void*)0},{&g_244,&g_244,(void*)0,&g_244,&g_244},{&g_244,&g_244,&g_244,&g_244,(void*)0},{(void*)0,&g_244,&g_244,&g_244,&g_244},{(void*)0,&g_244,&g_244,&g_244,&g_244}},{{(void*)0,&g_244,(void*)0,&g_244,(void*)0},{(void*)0,&g_244,&g_244,&g_244,(void*)0},{(void*)0,(void*)0,&g_244,&g_244,&g_244},{(void*)0,(void*)0,&g_244,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,&g_244}}}; +static const uint16_t **g_250[3] = {&g_244,&g_244,&g_244}; +static int32_t **g_251[6] = {(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}; +static const union U0 g_255 = {0x8343L}; +static const uint64_t g_319 = 1UL; +static const uint64_t *g_318 = &g_319; +static uint32_t g_375 = 0x72D6932EL; +static union U1 g_428[8][1][4] = {{{{0x698E2022L},{1UL},{0x698E2022L},{1UL}}},{{{0x698E2022L},{1UL},{0x698E2022L},{1UL}}},{{{0x698E2022L},{1UL},{0x698E2022L},{1UL}}},{{{0x698E2022L},{1UL},{0x698E2022L},{1UL}}},{{{0x698E2022L},{1UL},{0x698E2022L},{1UL}}},{{{0x698E2022L},{1UL},{0x698E2022L},{1UL}}},{{{0x698E2022L},{1UL},{0x698E2022L},{1UL}}},{{{0x698E2022L},{1UL},{0x698E2022L},{1UL}}}}; +static uint16_t g_444 = 0x21E0L; +static int8_t g_479 = 0x73L; +static int16_t g_507 = 0x62B6L; +static union U2 *** const g_604 = &g_54; +static int32_t g_627 = 0x6061E963L; +static int8_t g_706 = (-10L); +static const union U2 g_814 = {0x1ABBD7A4L}; +static union U0 **g_815 = &g_225; +static union U0 **g_819 = &g_225; +static const union U1 *g_902 = &g_428[0][0][2]; +static uint32_t *g_912 = &g_93; +static uint32_t **g_911 = &g_912; +static uint8_t *g_931 = &g_2; +static uint8_t **g_930 = &g_931; +static int32_t g_1007 = 1L; +static int32_t ***g_1075 = &g_251[3]; +static int32_t ****g_1074[10] = {&g_1075,&g_1075,&g_1075,&g_1075,&g_1075,&g_1075,&g_1075,&g_1075,&g_1075,&g_1075}; +static int8_t g_1178 = 1L; +static uint32_t g_1198[10][6] = {{0x6E30EC80L,1UL,18446744073709551615UL,0x603D3624L,18446744073709551615UL,1UL},{0x10B3A749L,18446744073709551615UL,18446744073709551615UL,0x603D3624L,18446744073709551615UL,18446744073709551615UL},{0x6E30EC80L,18446744073709551615UL,18446744073709551615UL,0x10B3A749L,1UL,1UL},{0x74CE00C5L,18446744073709551615UL,18446744073709551615UL,0x74CE00C5L,18446744073709551615UL,18446744073709551615UL},{0x74CE00C5L,18446744073709551615UL,18446744073709551615UL,0x10B3A749L,18446744073709551615UL,18446744073709551615UL},{0x6E30EC80L,1UL,18446744073709551615UL,0x603D3624L,18446744073709551615UL,1UL},{0x10B3A749L,18446744073709551615UL,18446744073709551615UL,0x603D3624L,18446744073709551615UL,18446744073709551615UL},{0x6E30EC80L,18446744073709551615UL,18446744073709551615UL,0x10B3A749L,1UL,1UL},{0x74CE00C5L,18446744073709551615UL,18446744073709551615UL,0x74CE00C5L,18446744073709551615UL,18446744073709551615UL},{0x74CE00C5L,18446744073709551615UL,18446744073709551615UL,0x10B3A749L,18446744073709551615UL,18446744073709551615UL}}; +static int32_t g_1232 = 0x71F484AAL; +static int64_t g_1399[3][1][5] = {{{0xDD9AC679BAAAA7DCLL,0xDD9AC679BAAAA7DCLL,(-1L),0xA0F8C1174F6453ADLL,(-1L)}},{{0xDD9AC679BAAAA7DCLL,0xDD9AC679BAAAA7DCLL,(-1L),0xA0F8C1174F6453ADLL,(-1L)}},{{0xDD9AC679BAAAA7DCLL,0xDD9AC679BAAAA7DCLL,(-1L),0xA0F8C1174F6453ADLL,(-1L)}}}; +static union U1 *g_1459 = &g_428[0][0][2]; +static uint32_t *g_1502 = &g_375; +static union U1 g_1574[2] = {{4294967286UL},{4294967286UL}}; +static uint64_t g_1582 = 0xDE7693F682AE7AA6LL; +static int8_t g_1693 = 0x0CL; +static int64_t g_1695 = 0x84AF5CDD96B38B31LL; +static uint16_t g_1743 = 0x3C40L; +static int32_t g_1771 = 0x66C24BEBL; +static const uint64_t g_1864[2][4][3] = {{{5UL,1UL,1UL},{18446744073709551615UL,0x14DC4E3CB165692BLL,18446744073709551615UL},{5UL,5UL,1UL},{0xE46C208F0BCDDE06LL,0x14DC4E3CB165692BLL,0xE46C208F0BCDDE06LL}},{{5UL,1UL,1UL},{18446744073709551615UL,0x14DC4E3CB165692BLL,18446744073709551615UL},{5UL,5UL,1UL},{0xE46C208F0BCDDE06LL,0x14DC4E3CB165692BLL,0xE46C208F0BCDDE06LL}}}; +static const int32_t *g_1948[8][5][2] = {{{&g_92,(void*)0},{&g_1232,&g_92},{&g_111[6][0],&g_111[6][0]},{&g_111[6][0],&g_92},{&g_1232,(void*)0}},{{&g_92,(void*)0},{&g_1232,&g_92},{&g_111[6][0],&g_111[6][0]},{&g_111[6][0],&g_92},{&g_1232,(void*)0}},{{&g_92,(void*)0},{&g_1232,&g_92},{&g_111[6][0],&g_111[6][0]},{&g_111[6][0],&g_92},{&g_1232,(void*)0}},{{&g_92,(void*)0},{&g_1232,&g_92},{&g_111[6][0],&g_111[6][0]},{&g_111[6][0],&g_92},{&g_1232,(void*)0}},{{&g_92,(void*)0},{&g_1232,&g_92},{&g_111[6][0],&g_111[6][0]},{&g_111[6][0],&g_92},{&g_1232,(void*)0}},{{&g_92,(void*)0},{&g_1232,&g_92},{&g_111[6][0],&g_111[6][0]},{&g_111[6][0],&g_92},{&g_1232,(void*)0}},{{&g_92,(void*)0},{&g_1232,&g_92},{&g_111[6][0],&g_111[6][0]},{&g_111[6][0],&g_92},{&g_1232,(void*)0}},{{&g_92,(void*)0},{&g_1232,&g_92},{&g_111[6][0],&g_111[6][0]},{&g_111[6][0],&g_92},{&g_1232,(void*)0}}}; +static uint16_t * const g_2081 = (void*)0; +static uint16_t * const *g_2080 = &g_2081; +static uint16_t * const **g_2079[6][9] = {{&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080},{&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080},{&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,(void*)0,&g_2080},{&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080},{&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080},{&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080,&g_2080}}; +static uint16_t *g_2110 = &g_444; +static uint16_t **g_2109 = &g_2110; +static int32_t g_2120 = 0x6DA12724L; +static uint16_t *g_2144 = (void*)0; +static uint32_t * const *g_2212 = (void*)0; +static union U1 **g_2317[4] = {&g_1459,&g_1459,&g_1459,&g_1459}; +static union U1 ***g_2316 = &g_2317[1]; + + +/* --- FORWARD DECLARATIONS --- */ +static uint32_t func_1(void); +static union U2 * const func_3(union U1 p_4, int16_t p_5); +static union U1 func_6(union U2 * p_7, const int64_t p_8); +static const uint64_t func_16(uint64_t p_17, union U1 p_18); +static union U2 func_20(union U2 * p_21); +static int8_t func_26(const int64_t p_27, uint32_t p_28, uint64_t p_29, union U2 p_30); +static uint8_t func_33(union U2 * p_34, uint32_t p_35, union U0 p_36, uint8_t p_37, union U2 * p_38); +static uint32_t func_40(union U2 * p_41, union U2 ** p_42, union U2 * p_43); +static int16_t func_66(uint8_t * const p_67, int64_t p_68, union U2 *** const p_69); +static uint8_t * func_70(int64_t p_71, int32_t p_72, uint8_t * p_73); + + +/* --- FUNCTIONS --- */ +/* ------------------------------------------ */ +/* + * reads : g_2 g_10.f1 g_53 g_54 g_231.f1 g_223.f4 g_318 g_319 g_10 g_706 g_428 g_92 g_444 g_10.f4 g_89 g_111 g_149 g_93 g_225 g_226 g_223.f0 g_428.f0 g_223.f3 g_930 g_931 g_627 g_912 g_911 g_1007 g_226.f2 g_244 g_245 g_1074 g_147 g_101 g_375 g_1198 g_604 g_814.f0 g_229 g_222 g_223 g_75 g_814.f1 g_902 g_223.f1 g_1232 g_9 g_255.f0 g_1502 g_1574 g_479 g_1695 g_1459 g_229.f0 g_1582 g_507 g_1743 g_1574.f1 g_819 g_2110 g_2144 g_1864 g_223.f2 g_2212 g_2316 + * writes: g_9 g_49 g_2 g_53 g_706 g_444 g_93 g_245 g_223.f0 g_149 g_111 g_223.f3 g_75 g_226.f2 g_89 g_507 g_479 g_147 g_1198 g_54 g_1399 g_231.f1 g_1502 g_931 g_92 g_1232 g_375 g_10.f3 g_428 g_222 g_1743 g_1695 g_1007 g_10.f2 g_2079 g_2109 g_2120 g_1948 g_223.f2 g_2212 + */ +static uint32_t func_1(void) +{ /* block id: 0 */ + int64_t l_1967[2]; + uint8_t l_1977[4]; + uint32_t l_1980 = 1UL; + int32_t l_1982 = 0xD67F4E36L; + int32_t l_1983 = 0xF965B165L; + uint16_t l_1999 = 0x9388L; + int32_t l_2011 = 0xE1C04DFFL; + int32_t l_2012 = 0xFCA65305L; + int32_t l_2013 = 0xADB23608L; + int32_t l_2014 = 0x0E5033ACL; + int32_t ****l_2054 = &g_1075; + uint32_t l_2062 = 0x1B47355CL; + const int8_t l_2064 = 0xCCL; + uint64_t l_2066[1][3][9] = {{{1UL,1UL,0UL,1UL,1UL,0UL,1UL,1UL,0UL},{1UL,1UL,0UL,1UL,1UL,0UL,1UL,1UL,0UL},{1UL,1UL,0UL,1UL,1UL,0UL,1UL,1UL,0UL}}}; + int64_t l_2071 = 0L; + int32_t l_2099[1][7][8] = {{{0x189E11A8L,5L,0xA01202B2L,5L,(-3L),5L,(-3L),0x33D3B688L},{0xA01202B2L,0x33D3B688L,0xA01202B2L,0xB69E8CCFL,(-3L),0xB69E8CCFL,0xA01202B2L,0x33D3B688L},{(-3L),0xB69E8CCFL,0xA01202B2L,0x33D3B688L,0xA01202B2L,0xB69E8CCFL,(-3L),0xB69E8CCFL},{(-3L),0x33D3B688L,0x189E11A8L,0x33D3B688L,(-3L),5L,(-3L),0x33D3B688L},{0xA01202B2L,0x33D3B688L,0xA01202B2L,0xB69E8CCFL,(-3L),0xB69E8CCFL,0xA01202B2L,0x33D3B688L},{(-3L),0xB69E8CCFL,0xA01202B2L,0x33D3B688L,0xA01202B2L,0xB69E8CCFL,(-3L),0xB69E8CCFL},{(-3L),0x33D3B688L,0x189E11A8L,0x33D3B688L,(-3L),5L,(-3L),0x33D3B688L}}}; + int32_t l_2104 = 3L; + uint16_t **l_2111 = &g_2110; + int64_t *l_2115 = &g_1399[2][0][3]; + const int16_t l_2123[10] = {(-1L),(-1L),(-1L),(-1L),(-1L),(-1L),(-1L),(-1L),(-1L),(-1L)}; + const uint64_t **l_2168[4]; + uint32_t ****l_2184 = (void*)0; + int64_t l_2198[1]; + int8_t l_2208 = 5L; + uint32_t l_2232 = 18446744073709551612UL; + uint32_t l_2239 = 4294967289UL; + uint64_t l_2304 = 0UL; + int8_t l_2308[10] = {0xFFL,0xFFL,0xFFL,0xFFL,0xFFL,0xFFL,0xFFL,0xFFL,0xFFL,0xFFL}; + int i, j, k; + for (i = 0; i < 2; i++) + l_1967[i] = 1L; + for (i = 0; i < 4; i++) + l_1977[i] = 0x3AL; + for (i = 0; i < 4; i++) + l_2168[i] = &g_318; + for (i = 0; i < 1; i++) + l_2198[i] = (-10L); + if (g_2) + { /* block id: 1 */ + union U2 **l_1971 = &g_222; + int32_t *l_1972 = &g_111[1][3]; + int64_t *l_1981[4]; + int16_t *l_1996 = &g_507; + uint16_t l_1997 = 4UL; + uint16_t *l_1998 = &g_1743; + uint64_t l_2000 = 1UL; + int i; + for (i = 0; i < 4; i++) + l_1981[i] = &g_1399[1][0][0]; + (*l_1971) = func_3(((*g_1459) = func_6((g_9 = (void*)0), g_10[9].f1)), l_1967[0]); + l_1972 = l_1972; + l_1983 = ((((*g_1459) , (!l_1967[1])) && ((safe_mod_func_uint8_t_u_u((l_1977[1] != (l_1982 = (g_149 = (0x8EL >= ((((safe_sub_func_int32_t_s_s((l_1977[1] < (*l_1972)), ((l_1980 , &g_1075) == &g_1075))) || (*l_1972)) , (*l_1972)) , (**g_930)))))), l_1980)) != l_1967[1])) >= g_111[1][3]); + l_2000 |= (((safe_mod_func_uint8_t_u_u((((*l_1998) = (~((((**g_911) = (safe_sub_func_int64_t_s_s((((safe_lshift_func_uint16_t_u_s(0xCB04L, ((*l_1996) |= (3L >= (safe_unary_minus_func_int8_t_s((0L == (((safe_unary_minus_func_uint64_t_u((g_229[0][0][3].f0 & 0x70L))) <= ((safe_mul_func_int8_t_s_s((l_1980 , g_1582), (((*l_1972) | ((*l_1972) <= g_223.f4)) || 4UL))) >= (*g_318))) , (*l_1972))))))))) , l_1967[0]) , g_428[0][0][2].f0), l_1997))) < (*l_1972)) , (*l_1972)))) && (*l_1972)), l_1977[1])) || (*l_1972)) , l_1999); + } + else + { /* block id: 890 */ + int8_t l_2010 = 0L; + int32_t l_2018[9][4][7] = {{{0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L},{0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L},{0L,0L,1L,0L,0L,1L,0L},{0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L}},{{0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L},{0L,0L,1L,0L,0L,1L,0L},{0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L},{0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L}},{{0L,0L,1L,0L,0L,1L,0L},{0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L},{0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L},{0L,0L,1L,0L,0L,1L,0L}},{{0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L},{0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L},{0L,0L,1L,0L,0L,1L,0L},{0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L}},{{0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L},{0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L},{0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L},{1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L}},{{0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L},{0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L},{1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L},{0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L}},{{0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L},{1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L},{0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L},{0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L}},{{1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L},{0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L},{0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L},{1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L}},{{0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L},{0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L},{1L,0xBD0DEF51L,1L,1L,0xBD0DEF51L,1L,1L},{0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L,0xBD0DEF51L,0L,0xBD0DEF51L}}}; + uint8_t l_2026 = 0xC8L; + int8_t l_2029[9] = {0L,0L,0L,0L,0L,0L,0L,0L,0L}; + const int16_t l_2061 = 0x8AA0L; + uint32_t *l_2063 = &g_10[9].f2; + uint64_t l_2065 = 7UL; + int64_t l_2067 = 1L; + uint32_t l_2070 = 18446744073709551615UL; + uint16_t *l_2076[4] = {(void*)0,(void*)0,(void*)0,(void*)0}; + uint16_t **l_2075 = &l_2076[0]; + uint16_t ***l_2074[9][8] = {{&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075},{&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075},{&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075},{&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075},{&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075},{&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075},{&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075},{&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075},{&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075,&l_2075}}; + union U0 l_2096[7] = {{0x5C67L},{0x5C67L},{0x5C67L},{0x5C67L},{0x5C67L},{0x5C67L},{0x5C67L}}; + uint16_t l_2107 = 65534UL; + union U2 *l_2156 = &g_10[9]; + uint64_t *l_2166 = (void*)0; + uint64_t **l_2165 = &l_2166; + const uint32_t l_2171 = 8UL; + union U1 l_2190 = {0xC236650BL}; + union U1 **l_2204 = &g_1459; + union U1 **l_2205 = &g_1459; + uint64_t l_2215 = 0x96E9BBDEA25EDF34LL; + int16_t l_2227[5][9][5] = {{{0x0EB5L,0x1960L,0x1960L,0x0EB5L,0x6030L},{0xDD4AL,(-1L),7L,7L,0x1FD4L},{0x1960L,(-1L),0xCA87L,1L,0xCA87L},{0xE2CEL,0xE2CEL,0x1FD4L,7L,7L},{0x735EL,0x2B2BL,0x6030L,0x0EB5L,0x1960L},{(-9L),0x1FD4L,1L,0x1FD4L,(-9L)},{2L,0x2B2BL,1L,0x248EL,1L},{7L,0xE2CEL,1L,(-1L),(-1L)},{0x248EL,(-1L),0x248EL,0x2B2BL,1L}},{{1L,(-1L),0xE2CEL,0L,(-9L)},{1L,0x1960L,(-1L),(-1L),0x1960L},{1L,0x8BCEL,0xE2CEL,(-9L),7L},{(-1L),7L,0x248EL,0x6030L,0xCA87L},{(-5L),1L,1L,(-5L),0x1FD4L},{(-1L),(-1L),1L,2L,0x6030L},{1L,0xDD4AL,1L,0xE2CEL,1L},{1L,1L,0x6030L,2L,1L},{1L,0L,0x1FD4L,(-5L),1L}},{{0x248EL,0x6030L,0xCA87L,0x6030L,0x248EL},{7L,0L,7L,(-9L),0xE2CEL},{2L,1L,0x1960L,(-1L),(-1L)},{(-9L),0xDD4AL,(-9L),0L,0xE2CEL},{0x735EL,(-1L),1L,0x2B2BL,0x248EL},{0xE2CEL,1L,(-1L),(-1L),1L},{0x1960L,7L,1L,0x248EL,1L},{0xDD4AL,0x8BCEL,(-9L),0x1FD4L,1L},{0x0EB5L,0x1960L,0x1960L,0x0EB5L,0x6030L}},{{0xDD4AL,(-1L),7L,7L,0x1FD4L},{0x1960L,(-1L),0xCA87L,1L,0xCA87L},{0xE2CEL,0xE2CEL,0x1FD4L,7L,7L},{0x735EL,0x2B2BL,0x6030L,0x0EB5L,0x1960L},{(-9L),0xDD4AL,1L,0xDD4AL,(-1L)},{0x2B2BL,7L,0xCA87L,(-1L),0x6030L},{0L,0x1FD4L,(-5L),1L,1L},{(-1L),2L,(-1L),7L,0x6030L},{(-9L),1L,0x1FD4L,0x8BCEL,(-1L)}},{{0x6030L,0x0EB5L,0x1960L,0x1960L,0x0EB5L},{(-5L),7L,0x1FD4L,(-1L),1L},{2L,1L,(-1L),(-1L),0x735EL},{0xE2CEL,(-5L),(-5L),0xE2CEL,0xDD4AL},{2L,0x1960L,0xCA87L,0x2B2BL,(-1L)},{(-5L),7L,1L,0x1FD4L,1L},{0x6030L,0x6030L,(-1L),0x2B2BL,0xCA87L},{(-9L),0x8BCEL,0xDD4AL,0xE2CEL,(-5L)},{(-1L),(-1L),0x735EL,(-1L),(-1L)}}}; + int16_t l_2229 = 0xCCBFL; + int16_t l_2238[10][5][5] = {{{0x26A1L,0x93F8L,0xCE93L,9L,0xB42DL},{0L,1L,0x34A3L,0L,0L},{9L,(-1L),9L,0x93F8L,0xB42DL},{(-1L),0L,1L,0x5701L,1L},{0xB42DL,0L,0xA442L,0xA442L,0L}},{{0x34A3L,(-1L),1L,1L,(-1L)},{(-1L),(-9L),9L,1L,(-9L)},{0x1869L,0x34A3L,0x34A3L,0x1869L,0x878EL},{(-1L),0xA442L,0xCE93L,0x26A1L,1L},{0x34A3L,0x0254L,0xEC99L,1L,0xEC99L}},{{0xB42DL,0xB42DL,1L,0x26A1L,0xCE93L},{(-1L),0x5701L,0x878EL,0x1869L,0x34A3L},{9L,1L,(-9L),1L,9L},{0L,0x5701L,(-1L),1L,1L},{0x26A1L,0xB42DL,0L,0xA442L,0xA442L}},{{1L,0x0254L,1L,0x5701L,1L},{0x1300L,0xA442L,0xB42DL,0x93F8L,9L},{1L,0x34A3L,0L,0L,0x34A3L},{0L,(-9L),0xB42DL,9L,0xCE93L},{0x0254L,(-1L),1L,0x878EL,0xEC99L}},{{7L,0L,0L,7L,1L},{0x0254L,0L,(-1L),0L,0x878EL},{0L,(-1L),(-9L),0xB42DL,(-9L)},{1L,1L,0x878EL,0L,(-1L)},{0x1300L,0x93F8L,(-1L),0xB42DL,7L}},{{0L,0x0254L,(-1L),0x0254L,0L},{0x93F8L,(-9L),(-9L),0xA442L,1L},{0x5701L,0x878EL,0x1869L,0x34A3L,0x34A3L},{0xA442L,0x26A1L,0xA442L,(-9L),1L},{1L,0x34A3L,0x878EL,(-1L),0L}},{{1L,7L,0L,0L,7L},{0x1869L,(-1L),0x878EL,0L,0xEC99L},{0x26A1L,0xCE93L,0xA442L,(-1L),0x1300L},{1L,0x1869L,0x1869L,1L,0x0254L},{0x26A1L,0L,(-9L),0x93F8L,(-1L)}},{{0x1869L,0L,(-1L),0x878EL,(-1L)},{1L,1L,(-1L),0x93F8L,(-9L)},{1L,(-1L),0x0254L,1L,0x1869L},{0xA442L,(-1L),0x1300L,(-1L),0xA442L},{0x5701L,(-1L),0xEC99L,0L,0x878EL}},{{0x93F8L,1L,7L,0L,0L},{0L,0L,0L,(-1L),0x878EL},{9L,0L,1L,(-9L),0xA442L},{0x878EL,0x1869L,0x34A3L,0x34A3L,0x1869L},{7L,0xCE93L,1L,0xA442L,(-9L)}},{{0L,(-1L),0L,0x0254L,(-1L)},{0xB42DL,7L,7L,0xB42DL,(-1L)},{0L,0x34A3L,0xEC99L,0x5701L,0x0254L},{7L,0x26A1L,0x1300L,1L,0x1300L},{0x878EL,0x878EL,0x0254L,0x5701L,0xEC99L}}}; + uint32_t l_2271[9]; + uint64_t l_2305[10] = {0x2AFF29B5EB439595LL,0x31A843976A988D39LL,0x739F945BCAB457C2LL,0x739F945BCAB457C2LL,0x31A843976A988D39LL,0x2AFF29B5EB439595LL,0x31A843976A988D39LL,0x739F945BCAB457C2LL,0x739F945BCAB457C2LL,0x31A843976A988D39LL}; + int i, j, k; + for (i = 0; i < 9; i++) + l_2271[i] = 18446744073709551610UL; +lbl_2214: + for (g_1695 = 0; (g_1695 > (-5)); g_1695 = safe_sub_func_int64_t_s_s(g_1695, 1)) + { /* block id: 893 */ + int32_t *l_2003 = &l_1982; + int32_t *l_2004 = &g_89; + int32_t l_2005 = 0x4B4F5FC8L; + int32_t *l_2006 = &l_1983; + int32_t *l_2007 = &g_89; + int32_t *l_2008 = &g_1232; + int32_t *l_2009[3]; + uint64_t l_2015 = 8UL; + int32_t l_2019 = 8L; + int32_t l_2020 = 0x34E658EBL; + uint32_t l_2021 = 0UL; + uint16_t *l_2034 = &g_444; + uint16_t *l_2037 = &g_1743; + int32_t *l_2038 = &g_1007; + int32_t *l_2039 = &g_223.f0; + int i; + for (i = 0; i < 3; i++) + l_2009[i] = &g_1232; + l_2015++; + --l_2021; + (*l_2008) |= (safe_add_func_int64_t_s_s(((((l_2026 ^= 0x41L) & l_1977[2]) < ((*l_2003) && (l_2029[2] & (((safe_sub_func_int8_t_s_s((+(*l_2003)), ((safe_mul_func_uint16_t_u_u(((*l_2037) |= (++(*l_2034))), 0x45A3L)) < ((((*l_2039) = ((*l_2038) = g_92)) , (*l_2003)) ^ (l_1999 , g_1574[1].f1))))) , (void*)0) != (void*)0)))) <= 0x9A7C15D3L), l_1977[1])); + if (l_2018[3][2][5]) + continue; + } + if (((safe_div_func_uint16_t_u_u((255UL > (safe_lshift_func_int16_t_s_s((l_2029[2] ^ (((((safe_rshift_func_uint16_t_u_s((0x41132324FECFB523LL > ((safe_lshift_func_uint16_t_u_s((0L && ((((**g_819) , ((safe_add_func_int64_t_s_s(g_1198[5][5], (safe_mul_func_int8_t_s_s((((*l_2063) = (safe_add_func_int32_t_s_s((&g_1075 == l_2054), (safe_rshift_func_int16_t_s_s((safe_sub_func_uint8_t_u_u((!(safe_mod_func_int64_t_s_s((((*g_318) >= l_2018[3][2][5]) >= 4294967287UL), l_2061))), 0x8EL)), l_2062))))) , l_2064), 0x8CL)))) ^ l_2029[2])) >= l_1982) | l_2065)), l_1967[1])) , l_2066[0][1][6])), 8)) > l_2026) , l_1977[3]) >= (*g_1502)) , l_2067)), 15))), l_2010)) || l_2018[3][2][5])) + { /* block id: 905 */ + int32_t l_2068 = 3L; + int32_t *l_2069[9][7] = {{&l_2018[3][2][5],&l_2013,&l_2012,&l_2012,&l_2013,&l_2018[3][2][5],&l_2013},{&g_111[1][3],&l_1982,&l_2012,&g_1232,(void*)0,&g_1232,&l_2012},{&l_2013,&l_2013,&l_2018[3][2][5],&l_2012,&l_2018[3][2][5],&l_2013,&l_2013},{&l_1982,&l_1982,&l_2013,&l_1982,&l_1982,&g_1232,&l_2012},{&l_2018[5][2][3],&l_2013,&l_2018[5][2][3],&l_2018[3][2][5],&l_2018[3][2][5],&l_2018[5][2][3],&l_2013},{&l_2012,(void*)0,&l_2013,&l_2014,(void*)0,&l_1982,(void*)0},{&l_2018[5][2][3],&l_2018[3][2][5],&l_2018[3][2][5],&l_2018[5][2][3],&l_2013,&l_2018[5][2][3],&l_2018[3][2][5]},{&l_1982,&g_1232,&l_2012,(void*)0,&g_111[1][3],&l_1982,&l_2012},{&l_2018[3][2][5],&l_2018[5][2][3],&l_2013,&l_2018[5][2][3],&l_2018[3][2][5],&l_2018[3][2][5],&l_2018[5][2][3]}}; + int32_t l_2105 = 0L; + uint64_t l_2106 = 18446744073709551611UL; + uint16_t **l_2108 = &l_2076[0]; + int16_t *l_2134 = &g_75; + int64_t l_2172 = (-1L); + int16_t l_2221 = 1L; + int32_t l_2230 = (-10L); + int8_t l_2237 = 0x72L; + int32_t l_2286 = 1L; + int i, j; + l_2070 = l_2068; + if (l_2071) + { /* block id: 907 */ + uint16_t * const *l_2078[4][10][6] = {{{&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[3],&l_2076[0]},{&l_2076[0],(void*)0,&l_2076[0],&l_2076[3],&l_2076[0],&l_2076[1]},{&l_2076[0],(void*)0,&l_2076[0],&l_2076[0],(void*)0,&l_2076[0]},{&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[3],&l_2076[0],&l_2076[0]},{&l_2076[0],&l_2076[2],&l_2076[0],(void*)0,&l_2076[0],&l_2076[0]},{&l_2076[0],&l_2076[1],(void*)0,&l_2076[3],&l_2076[0],(void*)0},{&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0]},{&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[3],&l_2076[0],&l_2076[3]},{&l_2076[0],&l_2076[0],&l_2076[1],&l_2076[0],&l_2076[0],&l_2076[0]},{&l_2076[0],&l_2076[1],&l_2076[1],&l_2076[0],(void*)0,(void*)0}},{{&l_2076[1],&l_2076[1],(void*)0,&l_2076[0],&l_2076[0],&l_2076[0]},{&l_2076[1],&l_2076[0],&l_2076[1],&l_2076[0],&l_2076[1],&l_2076[3]},{&l_2076[1],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0]},{&l_2076[0],&l_2076[3],&l_2076[0],&l_2076[0],&l_2076[3],&l_2076[0]},{(void*)0,&l_2076[3],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[3]},{&l_2076[3],(void*)0,&l_2076[1],&l_2076[0],&l_2076[0],&l_2076[0]},{&l_2076[0],&l_2076[0],(void*)0,&l_2076[0],&l_2076[2],(void*)0},{&l_2076[3],&l_2076[0],&l_2076[1],(void*)0,(void*)0,&l_2076[0]},{&l_2076[3],&l_2076[0],&l_2076[1],&l_2076[0],&l_2076[3],&l_2076[3]},{&l_2076[1],&l_2076[0],&l_2076[0],&l_2076[3],&l_2076[0],&l_2076[0]}},{{&l_2076[1],&l_2076[0],&l_2076[0],&l_2076[1],&l_2076[3],(void*)0},{&l_2076[3],&l_2076[0],(void*)0,&l_2076[0],&l_2076[3],&l_2076[0]},{&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[3],&l_2076[0]},{&l_2076[2],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[3],&l_2076[0]},{&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[1]},{&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[3],&l_2076[0]},{&l_2076[3],&l_2076[0],&l_2076[0],&l_2076[0],(void*)0,&l_2076[0]},{&l_2076[3],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[2],&l_2076[0]},{&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[1],&l_2076[0],&l_2076[1]},{&l_2076[2],(void*)0,&l_2076[2],&l_2076[0],&l_2076[0],&l_2076[0]}},{{&l_2076[3],&l_2076[0],&l_2076[3],(void*)0,(void*)0,&l_2076[0]},{&l_2076[1],&l_2076[0],&l_2076[0],(void*)0,&l_2076[0],(void*)0},{&l_2076[3],&l_2076[0],&l_2076[0],(void*)0,&l_2076[3],&l_2076[0]},{&l_2076[3],&l_2076[3],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[0]},{&l_2076[0],&l_2076[3],&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[1]},{&l_2076[0],&l_2076[0],&l_2076[3],&l_2076[0],&l_2076[1],&l_2076[0]},{&l_2076[1],&l_2076[0],&l_2076[2],&l_2076[0],&l_2076[0],(void*)0},{&l_2076[0],&l_2076[0],&l_2076[0],&l_2076[1],&l_2076[1],&l_2076[0]},{&l_2076[0],&l_2076[0],(void*)0,&l_2076[2],(void*)0,&l_2076[0]},{(void*)0,&l_2076[3],&l_2076[1],&l_2076[0],(void*)0,(void*)0}}}; + uint16_t * const **l_2077[9]; + union U1 l_2097 = {4294967287UL}; + int64_t *l_2098[5][10] = {{&l_1967[0],&g_1399[2][0][3],(void*)0,&l_2071,(void*)0,&g_1399[2][0][3],&l_1967[0],&l_1967[0],&g_1399[2][0][3],(void*)0},{&g_1399[2][0][3],&l_1967[0],&l_1967[0],&g_1399[2][0][3],(void*)0,&l_2071,(void*)0,&g_1399[2][0][3],&l_1967[0],&l_1967[0]},{(void*)0,&l_1967[0],&l_1967[0],&l_2071,&l_2071,&l_1967[0],&l_1967[0],(void*)0,&l_1967[0],&l_1967[0]},{&l_2071,&g_1399[2][0][3],&l_2071,&g_1399[2][0][3],&l_2071,&l_1967[0],&l_1967[0],&l_2071,&g_1399[2][0][3],&l_2071},{(void*)0,(void*)0,&l_2071,&l_2071,&g_1399[2][0][3],&l_2071,&l_2071,(void*)0,(void*)0,&l_2071}}; + int16_t *l_2100 = &g_75; + int16_t *l_2101 = (void*)0; + int16_t *l_2102 = (void*)0; + int16_t *l_2103[4][8] = {{(void*)0,&g_507,&g_507,&g_507,&g_507,&g_507,&g_507,&g_507},{&g_507,&g_507,&g_507,&g_507,(void*)0,(void*)0,&g_507,&g_507},{&g_507,&g_507,&g_507,&g_507,&g_507,&g_507,&g_507,(void*)0},{&g_507,&g_507,&g_507,(void*)0,(void*)0,(void*)0,(void*)0,&g_507}}; + int64_t **l_2112 = &l_2098[4][0]; + int64_t **l_2113 = (void*)0; + int64_t *l_2114 = &l_2071; + int16_t l_2133 = 0x534CL; + int i, j, k; + for (i = 0; i < 9; i++) + l_2077[i] = &l_2078[3][8][1]; + l_2097.f1 = ((safe_sub_func_uint8_t_u_u((((*g_225) , (((void*)0 == &g_319) | ((l_2104 &= (((g_93 && 254UL) , ((l_2074[2][7] == (g_2079[3][8] = l_2077[8])) != (~l_2018[2][1][2]))) , ((*l_2100) = (((safe_mod_func_int32_t_s_s(((safe_mul_func_uint8_t_u_u((((safe_rshift_func_int8_t_s_u(((safe_mul_func_uint8_t_u_u(((l_2018[3][2][5] = ((safe_lshift_func_uint16_t_u_s((safe_sub_func_uint16_t_u_u((safe_sub_func_uint64_t_u_u(((l_2096[3] , l_2097) , l_2097.f0), 1L)), l_2097.f1)), 12)) <= 0x6B0AE9BDFA119AC2LL)) && 0xE2F6AABA98EB6A18LL), g_1198[8][5])) , l_2097.f0), 3)) > l_2097.f0) , 255UL), 0xAAL)) < l_2099[0][4][2]), l_2061)) == l_2026) ^ 0xABAFL)))) , (**g_930)))) > l_2097.f1), l_2105)) == l_2106); + l_2014 = (l_2018[3][2][5] = (l_2099[0][4][2] != (l_2107 , (((g_2109 = l_2108) != l_2111) < ((**g_930) = (4UL <= ((((*l_2112) = l_2098[1][5]) == (l_2115 = (l_2114 = &g_1399[0][0][0]))) != ((g_2120 = (safe_sub_func_int64_t_s_s(l_2065, (safe_div_func_uint16_t_u_u(l_2065, l_2067))))) == l_2097.f1)))))))); + l_1982 ^= (safe_lshift_func_uint16_t_u_u(l_2123[6], 14)); + if ((safe_lshift_func_uint16_t_u_u((--(*g_2110)), l_2070))) + { /* block id: 923 */ + int8_t l_2130 = 0xA8L; + int16_t **l_2135 = &l_2100; + int32_t l_2138 = 0x0DE8473CL; + l_2138 ^= ((safe_sub_func_uint64_t_u_u(((l_2130 | (safe_lshift_func_int8_t_s_s(g_706, 1))) >= (l_2133 == (((*l_2135) = l_2134) == &g_75))), (safe_sub_func_int16_t_s_s(1L, 0x844EL)))) && l_2018[4][2][3]); + } + else + { /* block id: 926 */ + for (l_2013 = 0; (l_2013 <= 9); l_2013 += 1) + { /* block id: 929 */ + return g_223.f4; + } + for (l_2014 = 25; (l_2014 == (-20)); l_2014 = safe_sub_func_int32_t_s_s(l_2014, 4)) + { /* block id: 934 */ + uint32_t l_2143 = 4294967289UL; + l_2143 = ((safe_sub_func_uint32_t_u_u((*g_1502), (l_2070 | l_2097.f1))) < l_2010); + } + l_2097.f1 = 0L; + } + } + else + { /* block id: 939 */ + int8_t *l_2149 = (void*)0; + int8_t *l_2150 = &g_479; + int8_t *l_2151 = (void*)0; + int8_t *l_2152[4][9] = {{&g_226.f1,&g_231[2][3][1].f1,&g_226.f1,&g_231[2][3][1].f1,&g_226.f1,&g_231[2][3][1].f1,&g_226.f1,&g_231[2][3][1].f1,&g_226.f1},{&g_226.f1,&l_2029[4],&l_2029[4],&g_226.f1,&g_226.f1,&l_2029[4],&l_2029[4],&g_226.f1,&g_226.f1},{&g_231[2][3][1].f1,&g_231[2][3][1].f1,&g_231[2][3][1].f1,&g_231[2][3][1].f1,&g_231[2][3][1].f1,&g_231[2][3][1].f1,&g_231[2][3][1].f1,&g_231[2][3][1].f1,&g_231[2][3][1].f1},{&g_226.f1,&g_226.f1,&l_2029[4],&l_2029[4],&g_226.f1,&g_226.f1,&l_2029[4],&l_2029[4],&g_226.f1}}; + int32_t l_2153 = 0x98A48BC2L; + uint64_t ***l_2167 = &l_2165; + uint32_t ***l_2182 = &g_911; + uint32_t ****l_2181 = &l_2182; + uint8_t l_2199 = 0xADL; + int32_t l_2216 = 0xFB679376L; + int32_t l_2220 = 0xC71D761AL; + int32_t l_2223 = 0xB664C4E1L; + int32_t l_2228[10] = {7L,0L,5L,0L,7L,7L,0L,5L,0L,7L}; + int8_t l_2231[6][6][4] = {{{0L,0x8DL,0x8DL,0x98L},{0x62L,0x06L,1L,0x83L},{0x97L,0x99L,0x31L,0xBBL},{0L,1L,0x17L,0xBBL},{0x9FL,0x99L,0L,0x83L},{(-9L),0x06L,0xD0L,0x98L}},{{0x47L,4L,0x97L,(-9L)},{0x99L,8L,1L,0x8AL},{0x06L,0x17L,0x74L,0xABL},{0xFDL,0x83L,0x83L,7L},{4L,0x31L,0L,(-9L)},{1L,0x83L,1L,(-1L)}},{{(-1L),0L,(-1L),0x9FL},{0x8AL,0L,0x83L,(-6L)},{0x1BL,(-9L),0L,0L},{(-6L),0L,0L,0xD0L},{0x1BL,1L,0x83L,4L},{0x8AL,(-10L),(-1L),(-9L)}},{{(-1L),(-9L),1L,0xFDL},{1L,0x98L,0L,0x17L},{4L,0L,0x83L,0x62L},{0xFDL,8L,0x74L,1L},{0x06L,0x1BL,1L,1L},{0x99L,(-9L),0x97L,0x97L}},{{0x47L,0x47L,0xD0L,0L},{(-9L),(-1L),0L,0x06L},{0x9FL,0x97L,0x17L,0L},{0L,0x97L,0x31L,0x06L},{0x97L,(-1L),1L,0L},{0x62L,0x47L,4L,0x97L}},{{0x98L,(-9L),0x62L,1L},{0x17L,0x1BL,(-9L),1L},{7L,8L,0x9FL,0x62L},{(-1L),0L,1L,0x17L},{8L,0x98L,7L,0xFDL},{(-10L),(-9L),(-6L),(-9L)}}}; + int i, j, k; + l_2018[3][2][5] ^= (0x7276L <= ((void*)0 != g_2144)); + l_1982 = (safe_rshift_func_int8_t_s_u((l_2153 = ((*l_2150) = ((safe_mod_func_uint64_t_u_u((*g_318), 18446744073709551613UL)) != g_231[2][3][1].f1))), 0)); + if ((((g_9 = l_2156) == (void*)0) < ((((((g_319 , (((*g_2110) = (safe_div_func_int64_t_s_s(((g_444 , (((safe_rshift_func_uint8_t_u_u((*g_931), 3)) , ((safe_lshift_func_uint16_t_u_u(((((!g_319) >= ((((*l_2167) = l_2165) != l_2168[3]) < (safe_add_func_int32_t_s_s(0x4BE7EAE3L, 0xE2FB1C89L)))) | 18446744073709551615UL) , l_2153), l_2153)) == 0UL)) , l_2026)) > 0xD9F5L), g_1864[1][2][0]))) >= l_2171)) < g_319) , (-5L)) || l_2172) ^ 0x99E19607FCAEFB6CLL) != l_2065))) + { /* block id: 947 */ + for (g_375 = 0; (g_375 <= 0); g_375 += 1) + { /* block id: 950 */ + uint64_t l_2173 = 0x7E0A1EE474B83E5FLL; + --l_2173; + } + for (l_2070 = 0; (l_2070 <= 1); l_2070 += 1) + { /* block id: 955 */ + union U2 *l_2178 = &g_223; + uint32_t *****l_2183 = &l_2181; + int16_t *l_2187 = &g_507; + uint16_t **l_2188 = &l_2076[2]; + int32_t l_2189 = 0L; + union U2 **l_2191 = &g_9; + int i; + if (l_1967[l_2070]) + break; + l_2018[3][2][5] = ((**g_930) | 1UL); + } + for (l_2068 = 0; l_2068 < 8; l_2068 += 1) + { + for (g_375 = 0; g_375 < 5; g_375 += 1) + { + for (l_2012 = 0; l_2012 < 2; l_2012 += 1) + { + g_1948[l_2068][g_375][l_2012] = &l_1982; + } + } + } + } + else + { /* block id: 968 */ + int32_t *l_2200 = (void*)0; + int32_t l_2217 = 0x4FE96332L; + int32_t l_2218 = (-10L); + int32_t l_2219 = 0x079E3D68L; + int32_t l_2222[5]; + uint32_t l_2224 = 0x695369B6L; + int i; + for (i = 0; i < 5; i++) + l_2222[i] = 0x0EC35639L; + if (((safe_mod_func_uint8_t_u_u(l_1999, (safe_mul_func_uint8_t_u_u((*g_931), (safe_lshift_func_int16_t_s_s((-3L), 5)))))) , l_2198[0])) + { /* block id: 969 */ + return l_2199; + } + else + { /* block id: 971 */ + int32_t **l_2201 = &l_2200; + (*l_2201) = l_2200; + l_2208 ^= (((safe_lshift_func_int16_t_s_s(((*l_2134) &= ((l_2204 = &g_1459) == l_2205)), 11)) <= (l_2070 <= (safe_rshift_func_int16_t_s_u(0xCB44L, 15)))) , (~0xF110CC3CL)); + } + for (g_223.f2 = (-12); (g_223.f2 == 7); g_223.f2++) + { /* block id: 979 */ + int16_t l_2211 = 1L; + uint32_t * const **l_2213 = &g_2212; + l_2153 = l_2211; + l_2153 = (0x968C6B2DL & (((*l_2213) = g_2212) != (void*)0)); + if (g_627) + goto lbl_2214; + if (l_2215) + continue; + } + ++l_2224; + } + ++l_2232; + } + for (g_147 = 2; (g_147 != (-18)); g_147 = safe_sub_func_int16_t_s_s(g_147, 9)) + { /* block id: 992 */ + int32_t l_2249 = (-4L); + int32_t l_2267 = 0x9D46F976L; + int32_t l_2268[10] = {0x5F78B802L,0L,0L,0L,0L,0x5F78B802L,0L,0L,0L,0L}; + int i; + --l_2239; + } + } + else + { /* block id: 1030 */ + const int32_t l_2313[7][8][4] = {{{0L,0xC17774FEL,0x22684D08L,(-1L)},{(-5L),0xCB537E5CL,0xCF8749F9L,0x5B8E73CDL},{0x24574F0DL,0x0B1950AEL,0x37612EECL,0x5B8E73CDL},{0xD050476FL,0xCB537E5CL,0x549F2490L,(-1L)},{8L,0xC17774FEL,4L,0xCB537E5CL},{(-1L),(-4L),0L,0x24574F0DL},{0x22684D08L,0x72EECBFFL,0x549F2490L,7L},{0x6AEDCBCAL,(-5L),1L,(-5L)}},{{0x24574F0DL,0x549F2490L,0xD050476FL,0xC17774FEL},{0x549F2490L,0x72EECBFFL,0x22684D08L,0x9AA1FD11L},{(-4L),0x6DDE5AC8L,0x5B8E73CDL,(-4L)},{(-4L),4L,1L,(-1L)},{0xD168EDB2L,(-4L),1L,5L},{7L,(-1L),0xC17774FEL,0x549F2490L},{0x22684D08L,0x2E56501BL,0xD168EDB2L,(-1L)},{1L,0L,0x2E56501BL,0x2E56501BL}},{{0x6DDE5AC8L,0x6DDE5AC8L,(-1L),7L},{0x37612EECL,0xCF8749F9L,0xD168EDB2L,0L},{1L,0x0B1950AEL,0x9AA1FD11L,0xD168EDB2L},{7L,0x0B1950AEL,8L,0L},{0x0B1950AEL,0xCF8749F9L,1L,7L},{0x2E56501BL,0x6DDE5AC8L,(-1L),0x2E56501BL},{(-4L),0L,0x24574F0DL,(-1L)},{0x0B1950AEL,0x2E56501BL,1L,0x549F2490L}},{{0x9AA1FD11L,(-1L),0x9AA1FD11L,5L},{0x22684D08L,(-4L),0L,(-1L)},{0x37612EECL,4L,0x2E56501BL,(-4L)},{(-1L),0x6DDE5AC8L,0x2E56501BL,0x9AA1FD11L},{0x37612EECL,0xD050476FL,0L,0L},{0x22684D08L,0xD168EDB2L,0x9AA1FD11L,0x0B1950AEL},{0x9AA1FD11L,0x0B1950AEL,1L,4L},{0x0B1950AEL,0xD050476FL,0x24574F0DL,7L}},{{(-4L),(-1L),(-1L),(-4L)},{0x2E56501BL,0L,1L,(-8L)},{0x0B1950AEL,(-4L),8L,0x549F2490L},{7L,0x247ABAC3L,0x9AA1FD11L,0x549F2490L},{1L,(-4L),0xD168EDB2L,(-8L)},{0x37612EECL,0L,(-1L),(-4L)},{0x6DDE5AC8L,(-1L),0x2E56501BL,7L},{1L,0xD050476FL,0xD168EDB2L,4L}},{{0x22684D08L,0x0B1950AEL,0xC17774FEL,0x0B1950AEL},{7L,0xD168EDB2L,1L,0L},{0xD168EDB2L,0xD050476FL,1L,0x9AA1FD11L},{(-4L),0x6DDE5AC8L,0x5B8E73CDL,(-4L)},{(-4L),4L,1L,(-1L)},{0xD168EDB2L,(-4L),1L,5L},{7L,(-1L),0xC17774FEL,0x549F2490L},{0x22684D08L,0x2E56501BL,0xD168EDB2L,(-1L)}},{{1L,0L,0x2E56501BL,0x2E56501BL},{0x6DDE5AC8L,0x6DDE5AC8L,(-1L),7L},{0x37612EECL,0xCF8749F9L,0xD168EDB2L,0L},{1L,0x0B1950AEL,0x9AA1FD11L,0xD168EDB2L},{7L,0x0B1950AEL,8L,0L},{0x0B1950AEL,0xCF8749F9L,1L,7L},{0x2E56501BL,0x6DDE5AC8L,(-1L),0x2E56501BL},{(-4L),0L,0x24574F0DL,(-1L)}}}; + union U1 ***l_2318 = &g_2317[2]; + uint8_t *l_2319 = &l_2026; + uint32_t l_2320 = 18446744073709551615UL; + int i, j, k; + if (((safe_div_func_int8_t_s_s((&g_149 != (void*)0), ((((((safe_add_func_uint64_t_u_u((l_2313[5][1][3] , ((((l_2305[3] >= ((*g_318) ^ (safe_rshift_func_uint16_t_u_u((g_2316 != l_2318), 6)))) < l_2313[5][1][3]) , l_2319) == &l_1977[3])), 0x27D3C5AEB2740B3BLL)) & 0L) <= l_2313[5][1][3]) > l_2313[5][1][3]) & l_2320) | (*g_318)))) , l_2313[5][1][3])) + { /* block id: 1031 */ + int32_t *l_2321 = &l_2012; + if (l_2010) + goto lbl_2214; + (*l_2321) |= 0x8BD5E6EBL; + (*l_2321) &= 0x7E3A8021L; + } + else + { /* block id: 1035 */ + int32_t *l_2323[1][1][10] = {{{&l_2012,(void*)0,(void*)0,&l_2012,(void*)0,(void*)0,(void*)0,&g_111[6][3],&g_111[6][3],(void*)0}}}; + int32_t **l_2322 = &l_2323[0][0][1]; + int i, j, k; + (*l_2322) = &l_2018[5][0][0]; + return g_101; + } + return g_93; + } + } + return g_1232; +} + + +/* ------------------------------------------ */ +/* + * reads : + * writes: + */ +static union U2 * const func_3(union U1 p_4, int16_t p_5) +{ /* block id: 878 */ + int32_t *l_1968[4][3][10] = {{{&g_89,&g_111[3][5],&g_111[7][8],&g_111[3][5],&g_89,&g_92,(void*)0,(void*)0,&g_111[1][5],&g_111[1][3]},{&g_111[3][5],&g_89,&g_92,(void*)0,&g_111[1][3],&g_89,&g_111[0][6],(void*)0,&g_92,&g_111[1][3]},{&g_111[1][3],(void*)0,&g_111[7][7],&g_92,&g_89,&g_111[7][8],&g_89,&g_89,&g_111[7][8],&g_89}},{{(void*)0,(void*)0,(void*)0,(void*)0,&g_92,&g_111[0][6],&g_1232,&g_89,(void*)0,&g_111[3][5]},{&g_111[1][3],&g_111[1][3],&g_111[3][5],&g_1232,&g_89,(void*)0,(void*)0,&g_1232,(void*)0,&g_111[1][3]},{(void*)0,&g_92,&g_111[1][3],(void*)0,&g_111[7][8],&g_92,(void*)0,&g_92,&g_111[7][8],(void*)0}},{{&g_111[1][5],&g_89,&g_111[1][5],&g_92,&g_111[0][6],(void*)0,&g_111[1][3],&g_1232,&g_92,&g_111[1][3]},{&g_1232,&g_89,&g_111[0][6],(void*)0,(void*)0,&g_111[1][3],&g_92,&g_1232,&g_111[1][5],(void*)0},{(void*)0,&g_111[0][6],&g_111[1][5],&g_111[3][5],&g_92,&g_1232,&g_1232,&g_92,&g_111[3][5],&g_111[1][5]}},{{&g_92,&g_92,&g_111[1][3],(void*)0,(void*)0,&g_111[3][5],&g_111[1][3],&g_1232,&g_89,&g_1232},{&g_89,&g_111[7][7],&g_111[3][5],&g_111[0][6],&g_111[1][3],&g_111[1][3],&g_111[1][3],&g_89,(void*)0,(void*)0},{&g_111[6][8],&g_92,(void*)0,&g_89,&g_1232,&g_1232,&g_1232,&g_89,(void*)0,&g_92}}}; + int32_t **l_1969 = &l_1968[1][0][7]; + union U2 * const l_1970 = &g_223; + int i, j, k; + (*l_1969) = l_1968[3][2][3]; + return l_1970; +} + + +/* ------------------------------------------ */ +/* + * reads : g_2 g_53 g_54 g_231.f1 g_223.f4 g_318 g_319 g_10 g_706 g_428 g_92 g_444 g_10.f4 g_89 g_111 g_149 g_93 g_225 g_226 g_223.f0 g_428.f0 g_223.f3 g_930 g_931 g_627 g_912 g_911 g_1007 g_226.f2 g_244 g_245 g_1074 g_147 g_101 g_375 g_1198 g_604 g_814.f0 g_229 g_222 g_223 g_75 g_814.f1 g_902 g_223.f1 g_1232 g_9 g_255.f0 g_1502 g_1574 g_479 g_1695 + * writes: g_9 g_49 g_2 g_53 g_706 g_444 g_93 g_245 g_223.f0 g_149 g_111 g_223.f3 g_75 g_226.f2 g_89 g_507 g_479 g_147 g_1198 g_54 g_1399 g_231.f1 g_1502 g_931 g_92 g_1232 g_375 g_10.f3 + */ +static union U1 func_6(union U2 * p_7, const int64_t p_8) +{ /* block id: 3 */ + int16_t l_13[5][4][3] = {{{0xF903L,1L,0xF6B3L},{0x35D5L,0L,(-1L)},{(-1L),(-1L),0x6B5BL},{1L,(-1L),0xD9DCL}},{{0L,0L,(-1L)},{0xAF87L,1L,8L},{(-1L),0L,(-1L)},{0x713EL,0xD9DCL,0xD9DCL}},{{(-1L),0xF903L,0x6B5BL},{(-1L),0x6B5BL,(-1L)},{0x713EL,1L,0xF6B3L},{(-1L),0xAF87L,1L}},{{0xAF87L,1L,0x35D5L},{0L,0x6B5BL,0L},{1L,0xF903L,0L},{(-1L),0xD9DCL,0x35D5L}},{{0x35D5L,0L,1L},{0xF903L,1L,0xF6B3L},{0x35D5L,0L,(-1L)},{(-1L),(-1L),0x6B5BL}}}; + union U2 *l_19 = &g_10[0]; + union U2 **l_39 = &g_9; + union U1 l_44 = {0UL}; + union U1 *l_45 = &l_44; + int64_t *l_48 = &g_49; + uint8_t *l_50 = &g_2; + uint8_t *l_51 = (void*)0; + uint8_t *l_52 = &g_53[1]; + union U0 l_675[7][2] = {{{1L},{1L}},{{1L},{1L}},{{1L},{1L}},{{1L},{1L}},{{1L},{1L}},{{1L},{1L}},{{1L},{1L}}}; + union U1 l_1377 = {1UL}; + uint16_t ***l_1529 = (void*)0; + uint16_t **** const l_1528[1] = {&l_1529}; + int32_t *l_1542 = (void*)0; + int32_t *l_1550 = &g_1232; + int8_t *l_1555[8]; + uint64_t *l_1556 = &g_10[9].f3; + uint64_t *l_1557[3]; + int16_t ** const l_1561 = &g_136[1][4]; + int32_t l_1672 = 0xE1877820L; + int32_t l_1673 = 5L; + int16_t l_1674 = 0xF8F5L; + int32_t l_1675 = (-10L); + int32_t l_1676 = 0xEAAD7C91L; + int32_t l_1677[7][2] = {{0L,0L},{0L,0L},{0L,7L},{0L,0L},{0L,0L},{0L,0L},{7L,0L}}; + int8_t l_1691[1]; + int32_t l_1694 = 1L; + int32_t l_1697 = (-9L); + int16_t l_1698 = (-1L); + uint32_t l_1699 = 0xEC9D5EB3L; + uint8_t l_1731 = 6UL; + union U2 l_1738 = {1L}; + uint32_t ***l_1778 = &g_911; + union U1 **l_1828 = &l_45; + union U1 ***l_1827 = &l_1828; + uint32_t l_1855 = 9UL; + const uint64_t *l_1863 = &g_1864[1][0][1]; + union U2 ***l_1904 = &g_54; + union U2 ****l_1903 = &l_1904; + int32_t l_1911[2][6][2] = {{{0x3EBE484EL,0x9E187370L},{3L,0x9E187370L},{0x3EBE484EL,3L},{1L,1L},{1L,3L},{0x3EBE484EL,0x9E187370L}},{{3L,0x9E187370L},{0x3EBE484EL,3L},{1L,1L},{1L,3L},{0x3EBE484EL,0x9E187370L},{3L,0x9E187370L}}}; + union U0 l_1940 = {0xFC0AL}; + uint64_t l_1951 = 18446744073709551613UL; + int i, j, k; + for (i = 0; i < 8; i++) + l_1555[i] = &g_229[0][0][3].f1; + for (i = 0; i < 3; i++) + l_1557[i] = &g_223.f3; + for (i = 0; i < 1; i++) + l_1691[i] = (-2L); + if ((safe_mul_func_uint8_t_u_u(0x1AL, (l_13[1][0][1] & (safe_div_func_uint64_t_u_u(func_16((g_2 , (l_13[3][2][0] <= (l_19 == (func_20(((safe_mul_func_int16_t_s_s(((safe_mod_func_int8_t_s_s(func_26((func_33(((*l_39) = &g_10[9]), func_40((((*l_52) &= ((*l_50) = (!((((l_13[1][0][1] >= (((*l_45) = l_44) , ((safe_mod_func_int64_t_s_s(((*l_48) = (&g_10[1] == l_19)), p_8)) && l_13[1][0][2]))) , l_13[2][2][1]) ^ 0x68L) > l_13[3][0][2])))) , (void*)0), g_54, p_7), l_675[6][1], l_13[3][0][2], l_19) <= 0UL), g_223.f4, (*g_318), (*l_19)), p_8)) <= p_8), 0x6D7BL)) , p_7)) , (void*)0)))), l_1377), 0xC3FDE676F061A725LL)))))) + { /* block id: 645 */ + int16_t l_1486 = 0x7754L; + uint8_t **l_1493 = &g_931; + uint32_t *l_1500 = &l_1377.f0; + uint32_t **l_1501[7][5][6] = {{{&l_1500,&g_912,&l_1500,&l_1500,(void*)0,(void*)0},{(void*)0,&g_912,&g_912,&l_1500,&l_1500,&g_912},{&l_1500,&l_1500,&l_1500,&l_1500,&l_1500,(void*)0},{&l_1500,(void*)0,(void*)0,&g_912,(void*)0,&l_1500},{&l_1500,&l_1500,(void*)0,&g_912,&l_1500,(void*)0}},{{&l_1500,&g_912,&l_1500,(void*)0,&l_1500,&g_912},{(void*)0,&l_1500,&g_912,&l_1500,&g_912,(void*)0},{&g_912,&l_1500,&l_1500,&l_1500,&l_1500,&l_1500},{&l_1500,&g_912,&g_912,&g_912,(void*)0,&l_1500},{&l_1500,&l_1500,&g_912,&g_912,(void*)0,(void*)0}},{{&l_1500,&l_1500,&l_1500,&g_912,(void*)0,&g_912},{(void*)0,&g_912,&l_1500,&g_912,&l_1500,&l_1500},{(void*)0,&l_1500,&l_1500,&g_912,&g_912,&g_912},{&g_912,&l_1500,&g_912,&g_912,&l_1500,&g_912},{&g_912,&g_912,&g_912,&g_912,&l_1500,&l_1500}},{{(void*)0,&l_1500,&l_1500,&g_912,(void*)0,&g_912},{(void*)0,(void*)0,&g_912,&g_912,&l_1500,&l_1500},{&g_912,&l_1500,&l_1500,&g_912,&l_1500,&g_912},{&g_912,&g_912,(void*)0,&g_912,(void*)0,&g_912},{(void*)0,&g_912,&g_912,&g_912,(void*)0,&g_912}},{{(void*)0,&g_912,&l_1500,&g_912,&l_1500,(void*)0},{&l_1500,&g_912,(void*)0,&g_912,&l_1500,(void*)0},{&l_1500,&g_912,&l_1500,&g_912,&l_1500,&g_912},{&l_1500,(void*)0,&g_912,&l_1500,&g_912,&g_912},{&g_912,&l_1500,&l_1500,&g_912,&l_1500,&l_1500}},{{(void*)0,&l_1500,&l_1500,(void*)0,(void*)0,&g_912},{&g_912,&g_912,&g_912,&l_1500,&g_912,&g_912},{&l_1500,&l_1500,&g_912,(void*)0,&g_912,&l_1500},{&l_1500,&g_912,&g_912,&g_912,(void*)0,&l_1500},{&l_1500,&l_1500,(void*)0,(void*)0,&l_1500,&l_1500}},{{&l_1500,&l_1500,(void*)0,&g_912,&l_1500,&g_912},{&l_1500,(void*)0,&l_1500,&g_912,(void*)0,&g_912},{&l_1500,&g_912,&l_1500,&g_912,&l_1500,&l_1500},{&g_912,&g_912,(void*)0,&g_912,&g_912,&g_912},{&l_1500,&g_912,(void*)0,&g_912,&l_1500,&l_1500}}}; + int i, j, k; + l_1486 &= ((void*)0 == &g_931); + l_1377.f1 ^= (l_44.f1 &= ((safe_lshift_func_int8_t_s_u((safe_lshift_func_uint16_t_u_u((safe_div_func_uint64_t_u_u(((void*)0 != l_1493), ((safe_add_func_int16_t_s_s((safe_rshift_func_uint8_t_u_u((safe_add_func_int32_t_s_s(0xFC0D237BL, (((*g_911) == (g_1502 = l_1500)) , (l_1486 == (((*g_902) , (((void*)0 != l_1500) < p_8)) , 0L))))), (**g_930))), l_1486)) , g_1007))), p_8)), (*g_931))) & p_8)); + } + else + { /* block id: 650 */ + int8_t l_1503 = (-1L); + int8_t *l_1530 = (void*)0; + int32_t *l_1531 = &g_92; + int32_t *l_1532 = &g_1232; + union U1 l_1537 = {0x0E8069F6L}; + (*l_1532) |= ((1L ^ l_1503) & ((safe_div_func_uint64_t_u_u((safe_div_func_int64_t_s_s(((l_1503 >= (-1L)) || (((((*l_1531) = ((((*g_930) = func_70(((safe_mod_func_uint32_t_u_u(p_8, (safe_rshift_func_int16_t_s_u(((l_44.f1 = (safe_mul_func_uint8_t_u_u((((*l_48) = ((safe_div_func_uint16_t_u_u((+0xA86AL), (safe_rshift_func_int16_t_s_s((safe_add_func_uint64_t_u_u((safe_div_func_int16_t_s_s(((safe_add_func_uint16_t_u_u((safe_mod_func_uint8_t_u_u((safe_mul_func_uint8_t_u_u(((void*)0 != l_1528[0]), l_44.f0)), 1L)), l_1503)) >= l_675[6][1].f0), l_1377.f1)), g_223.f1)), l_1503)))) && 0xBAL)) , l_44.f0), 0x20L))) >= p_8), 7)))) <= 65531UL), p_8, l_52)) == (void*)0) || l_1503)) && 0x71B749F4L) < 7L) <= p_8)), 0x09F26AADB4610C8FLL)), p_8)) >= 4294967292UL)); + (*l_1531) = ((((safe_rshift_func_int16_t_s_u((((safe_mul_func_int8_t_s_s(((((((void*)0 == l_48) , ((l_1537 , (~1L)) != (safe_mul_func_uint16_t_u_u((p_8 <= ((safe_mod_func_int8_t_s_s(((void*)0 == l_1542), (((func_20((*l_39)) , (*g_318)) <= g_255.f0) | 0xDEL))) , 0x18L)), l_675[6][1].f0)))) >= p_8) < p_8) <= l_13[2][0][0]), l_675[6][1].f1)) >= 4L) < (*l_1531)), (*l_1531))) , (-1L)) & g_627) , 0x66A190CFL); + for (g_375 = 14; (g_375 == 5); g_375--) + { /* block id: 659 */ + union U1 l_1545 = {0x21DB83E7L}; + return l_1545; + } + } + (*l_1550) &= (safe_lshift_func_uint8_t_u_u((safe_rshift_func_uint8_t_u_u(((((((&g_1459 == (void*)0) && (*g_318)) , (*g_911)) == ((*l_45) , (*g_911))) <= 0xC39A113BL) == l_675[6][1].f1), 5)), 5)); + if (((p_8 > ((l_1377.f1 ^= ((g_444 = ((safe_mul_func_int8_t_s_s(p_8, ((*l_1550) = (p_8 ^ ((*l_1550) || ((8UL == (*l_1550)) | (((*l_45) , &g_479) == l_52))))))) && g_814.f1)) && p_8)) < 0xA9CC9107554708AALL)) <= l_675[6][1].f0)) + { /* block id: 667 */ + int32_t *l_1558 = (void*)0; + l_1558 = l_1542; + return (*g_902); + } + else + { /* block id: 670 */ + uint32_t *l_1566 = &g_375; + int32_t l_1569 = 0x08A23406L; + union U1 *l_1570 = &l_44; + uint32_t *l_1571 = (void*)0; + uint32_t *l_1572[8] = {&g_10[9].f2,&g_10[9].f2,&g_10[9].f2,&g_10[9].f2,&g_10[9].f2,&g_10[9].f2,&g_10[9].f2,&g_10[9].f2}; + int32_t l_1573 = 0xA3C5E453L; + uint16_t *l_1600 = (void*)0; + uint16_t *l_1601 = &g_245; + uint32_t l_1608 = 0x9F9F4AECL; + int32_t l_1632[6] = {0xD2B77DEEL,0xD2B77DEEL,0x2136032EL,0xD2B77DEEL,0xD2B77DEEL,0x2136032EL}; + int32_t ***l_1653 = (void*)0; + int32_t *l_1684 = &g_89; + int32_t l_1692 = (-1L); + int64_t l_1696 = 1L; + int16_t *l_1726 = &l_13[3][1][2]; + int8_t *l_1770[1]; + int8_t l_1819[9] = {0L,0L,0L,0L,0L,0L,0L,0L,0L}; + union U0 l_1929 = {0L}; + int32_t l_1950 = 0x0CB4EE2CL; + int i; + for (i = 0; i < 1; i++) + l_1770[i] = &l_1691[0]; + if (((((*l_1556) = ((((((*g_1502) = (safe_mul_func_int8_t_s_s(((l_1561 == &g_136[5][3]) && 0x9A21L), ((((*l_1550) |= (+((l_1569 = (safe_lshift_func_uint16_t_u_s((((safe_mod_func_uint32_t_u_u((l_1566 == (void*)0), p_8)) == (safe_sub_func_int16_t_s_s(l_1569, (1UL >= ((g_1198[6][4] , l_1570) == l_1570))))) > 0L), l_1569))) , 65535UL))) && 0x1566L) >= l_1573)))) > l_1573) & l_1573) | p_8) == (*g_931))) , 0L) > l_1573)) + { /* block id: 675 */ + return g_1574[1]; + } + else + { /* block id: 677 */ + union U1 **l_1595 = &g_1459; + int32_t l_1596 = 0x29729CF3L; + int32_t *l_1612 = &l_1596; + int8_t l_1655 = 0L; + int32_t l_1669 = 0x1660C04CL; + int32_t l_1670[8][7][3] = {{{0x3317BB98L,(-3L),0x534DB89AL},{0xF05BDE44L,0xD135A330L,0x4166F292L},{0x7DC4BDB8L,0x82C06C68L,0xC513462EL},{0x7DC4BDB8L,0xFDAF309DL,0x33BA3285L},{0xF05BDE44L,5L,0L},{0x3317BB98L,0xFDAF309DL,0x42993B24L},{0xD135A330L,0x82C06C68L,0x42993B24L}},{{0xE8018D86L,0xD135A330L,0L},{(-3L),(-3L),0x33BA3285L},{0xE8018D86L,0x3317BB98L,0xC513462EL},{0xD135A330L,0x3317BB98L,0x4166F292L},{0x3317BB98L,(-3L),0x534DB89AL},{0xF05BDE44L,0xD135A330L,0x4166F292L},{0x7DC4BDB8L,0x82C06C68L,0xC513462EL}},{{0x7DC4BDB8L,0xFDAF309DL,0x33BA3285L},{0xF05BDE44L,5L,0L},{0x3317BB98L,0xFDAF309DL,0x42993B24L},{0xD135A330L,0x82C06C68L,0x42993B24L},{0xE8018D86L,0xD135A330L,0L},{(-3L),(-3L),0x33BA3285L},{0xE8018D86L,0x3317BB98L,0xC513462EL}},{{0xD135A330L,0x3317BB98L,0x4166F292L},{0x3317BB98L,(-3L),0x534DB89AL},{0xF05BDE44L,0xD135A330L,0x4166F292L},{0x7DC4BDB8L,0x82C06C68L,0xC513462EL},{0x7DC4BDB8L,0xFDAF309DL,0x33BA3285L},{0xF05BDE44L,5L,0L},{0x3317BB98L,0xFDAF309DL,0x42993B24L}},{{0xD135A330L,0x82C06C68L,0x42993B24L},{0xE8018D86L,0xD135A330L,0L},{(-3L),(-3L),0x33BA3285L},{0xE8018D86L,0x3317BB98L,0xC513462EL},{0xD135A330L,0x3317BB98L,0x4166F292L},{0x3317BB98L,(-3L),0x534DB89AL},{1L,0x5984A900L,0x7DC4BDB8L}},{{(-1L),0xC4140F93L,5L},{(-1L),(-1L),(-3L)},{1L,0x3633256DL,0xFDAF309DL},{8L,(-1L),0xF05BDE44L},{0x5984A900L,0xC4140F93L,0xF05BDE44L},{0x2E44F393L,0x5984A900L,0xFDAF309DL},{0x1E79692DL,0x1E79692DL,(-3L)}},{{0x2E44F393L,8L,5L},{0x5984A900L,8L,0x7DC4BDB8L},{8L,0x1E79692DL,0x14C84822L},{1L,0x5984A900L,0x7DC4BDB8L},{(-1L),0xC4140F93L,5L},{(-1L),(-1L),(-3L)},{1L,0x3633256DL,0xFDAF309DL}},{{8L,(-1L),0xF05BDE44L},{0x5984A900L,0xC4140F93L,0xF05BDE44L},{0x2E44F393L,0x5984A900L,0xFDAF309DL},{0x1E79692DL,0x1E79692DL,(-3L)},{0x2E44F393L,8L,5L},{0x5984A900L,8L,0x7DC4BDB8L},{8L,0x1E79692DL,0x14C84822L}}}; + int8_t l_1671 = 1L; + const union U2 l_1683 = {-10L}; + int32_t l_1685[3]; + int32_t *l_1686 = &l_1676; + int32_t *l_1687 = &l_1669; + int32_t *l_1688 = &g_89; + int32_t *l_1689 = &l_1573; + int32_t *l_1690[5]; + const int16_t *l_1714 = &l_675[6][1].f0; + int i, j, k; + for (i = 0; i < 3; i++) + l_1685[i] = 9L; + for (i = 0; i < 5; i++) + l_1690[i] = &l_1632[2]; + for (g_706 = 2; (g_706 >= 0); g_706 -= 1) + { /* block id: 680 */ + uint16_t *l_1581 = &g_245; + uint16_t ** const l_1580 = &l_1581; + uint16_t ** const *l_1579 = &l_1580; + int32_t l_1597 = 9L; + union U1 *l_1599 = &l_44; + int32_t l_1611 = (-1L); + uint8_t * const *l_1646 = (void*)0; + uint32_t **l_1649 = &l_1566; + int32_t l_1667[8] = {2L,(-2L),2L,(-2L),2L,(-2L),2L,(-2L)}; + int i; + for (g_479 = 2; (g_479 >= 0); g_479 -= 1) + { /* block id: 683 */ + uint32_t l_1585 = 1UL; + union U1 ***l_1592 = (void*)0; + union U1 **l_1594[6][4][8] = {{{&g_1459,&g_1459,&g_1459,&g_1459,&g_1459,&g_1459,&l_1570,&l_45},{(void*)0,(void*)0,(void*)0,&l_45,&l_45,(void*)0,&g_1459,&l_45},{(void*)0,(void*)0,&l_45,&g_1459,&g_1459,&g_1459,&l_45,(void*)0},{&l_1570,&g_1459,&l_1570,&l_45,&l_1570,&l_45,&g_1459,&l_1570}},{{(void*)0,&l_1570,&g_1459,&l_1570,(void*)0,&l_1570,&g_1459,(void*)0},{&l_1570,&g_1459,&g_1459,&l_1570,&l_1570,&l_45,&l_1570,&l_1570},{(void*)0,&l_1570,(void*)0,&l_1570,&l_1570,&g_1459,(void*)0,&g_1459},{(void*)0,&l_1570,(void*)0,&l_45,(void*)0,(void*)0,(void*)0,&l_45}},{{&g_1459,&l_45,(void*)0,&l_1570,&l_45,(void*)0,&l_45,&g_1459},{(void*)0,&g_1459,&l_45,&l_45,&l_1570,&l_45,&l_45,&g_1459},{&g_1459,(void*)0,&g_1459,&l_45,&l_45,&l_45,(void*)0,&l_1570},{(void*)0,&l_45,&l_1570,(void*)0,&g_1459,(void*)0,(void*)0,&g_1459}},{{&l_1570,(void*)0,&g_1459,&l_45,(void*)0,&g_1459,&l_45,&l_1570},{(void*)0,&g_1459,&l_45,&l_1570,&g_1459,&g_1459,&l_45,&l_1570},{&l_45,&g_1459,(void*)0,(void*)0,&g_1459,&g_1459,&l_45,(void*)0},{&g_1459,&g_1459,&l_45,&g_1459,(void*)0,(void*)0,&l_1570,&l_1570}},{{&g_1459,&l_1570,&g_1459,&l_1570,&l_1570,&l_1570,(void*)0,&g_1459},{&g_1459,(void*)0,&l_45,&g_1459,&l_1570,(void*)0,(void*)0,&g_1459},{&l_45,&l_45,&l_45,&g_1459,&g_1459,&g_1459,&l_1570,&l_1570},{(void*)0,&l_1570,&l_45,&l_45,&l_1570,(void*)0,&g_1459,(void*)0}},{{&l_1570,(void*)0,&g_1459,(void*)0,&g_1459,(void*)0,&g_1459,&g_1459},{&l_45,&g_1459,&g_1459,(void*)0,&l_45,&g_1459,&l_45,(void*)0},{&l_1570,&l_45,(void*)0,&l_45,&l_45,(void*)0,&l_45,&l_1570},{&g_1459,&g_1459,(void*)0,&g_1459,&l_45,(void*)0,&g_1459,&g_1459}}}; + union U1 ***l_1593 = &l_1594[0][3][0]; + int32_t l_1598[6][6] = {{0x3EEF7D26L,0xA3191B49L,0x3EEF7D26L,1L,0xF4E79753L,0x3EEF7D26L},{(-5L),0xCF041577L,1L,0xE57F6CC9L,0xF4E79753L,(-5L)},{1L,0xA3191B49L,0xE57F6CC9L,0xE57F6CC9L,0xA3191B49L,1L},{(-5L),0xF4E79753L,0xE57F6CC9L,1L,0xCF041577L,(-5L)},{0x3EEF7D26L,0xF4E79753L,1L,0x3EEF7D26L,0xA3191B49L,0x3EEF7D26L},{0x3EEF7D26L,0xA3191B49L,0x3EEF7D26L,1L,0xF4E79753L,0x3EEF7D26L}}; + union U0 ***l_1604 = (void*)0; + union U0 ***l_1605 = &g_815; + int16_t *l_1609[8][9][2] = {{{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0}},{{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0}},{{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0}},{{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0}},{{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0}},{{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0}},{{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0}},{{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0},{&g_75,(void*)0},{&l_13[1][0][1],(void*)0}}}; + int32_t l_1610 = 0L; + int i, j, k; + } + for (g_75 = 2; (g_75 >= 0); g_75 -= 1) + { /* block id: 732 */ + int8_t l_1654 = 0L; + int32_t l_1668[5]; + uint64_t l_1678[9]; + int i; + for (i = 0; i < 5; i++) + l_1668[i] = 1L; + for (i = 0; i < 9; i++) + l_1678[i] = 18446744073709551615UL; + } + } + l_1550 = l_1684; + --l_1699; + (*l_1688) = (safe_div_func_int16_t_s_s((((g_444 = ((*l_1684) <= (*g_244))) >= (safe_mod_func_uint64_t_u_u((safe_mod_func_int32_t_s_s(((*l_1686) = (((g_1695 < ((safe_sub_func_uint8_t_u_u((safe_div_func_uint16_t_u_u(((safe_sub_func_uint16_t_u_u(((0x696A82E2L & ((((void*)0 != l_1714) , (safe_add_func_uint64_t_u_u((safe_unary_minus_func_uint8_t_u((safe_add_func_int16_t_s_s(0x5C2EL, (safe_add_func_uint32_t_u_u((safe_add_func_uint64_t_u_u(((void*)0 != &l_1608), p_8)), p_8)))))), g_319))) & (*l_1686))) <= 0x911E72491D7C01F5LL), 0x41B8L)) != p_8), 2UL)), g_75)) , (-6L))) , (*g_931)) != (*g_931))), 0xE8F5704DL)), p_8))) == 0xD20EL), (*g_244))); + } + l_1731 = ((0x5465FD2D39850ADCLL && ((p_8 | ((((safe_lshift_func_uint16_t_u_s(p_8, ((*l_1726) = (!((*l_1684) = p_8))))) , (p_8 == (l_1572[7] == ((safe_mul_func_int8_t_s_s(0x36L, (*l_1550))) , (((safe_sub_func_uint64_t_u_u(((g_10[9].f4 ^ (*g_318)) <= (*l_1550)), 18446744073709551615UL)) == p_8) , &g_1007))))) | p_8) > p_8)) != 0x0EL)) , (*l_1550)); + for (l_1608 = 0; (l_1608 != 16); ++l_1608) + { /* block id: 763 */ + int16_t l_1741 = 0x6876L; + uint16_t *l_1742 = &g_1743; + int32_t * const *l_1745[4] = {&l_1550,&l_1550,&l_1550,&l_1550}; + int32_t * const **l_1744 = &l_1745[2]; + uint32_t ***l_1752 = &g_911; + union U2 *l_1779 = &g_10[7]; + uint64_t l_1802 = 18446744073709551615UL; + uint8_t * const *l_1809 = &l_50; + uint32_t l_1820 = 0xA20A1AFDL; + uint16_t * const *l_1853 = &l_1601; + uint16_t * const **l_1852 = &l_1853; + uint16_t * const ***l_1851 = &l_1852; + int32_t l_1854[10][7][3] = {{{0xB2A1302FL,5L,7L},{(-1L),1L,(-1L)},{6L,(-1L),0x2617E67EL},{0x055AC6CEL,0x2617E67EL,0x055AC6CEL},{0L,0x9966CFEAL,0x7F53882FL},{0L,0x3BA83663L,0x2E0E4AE9L},{0xC3E47ADDL,1L,0x8BBFA625L}},{{0x2617E67EL,0x7F53882FL,(-1L)},{0xC3E47ADDL,1L,0x199D5833L},{0L,0x85A3A27FL,1L},{0L,7L,8L},{0x055AC6CEL,(-1L),8L},{6L,3L,0x8139E0D0L},{(-1L),8L,(-1L)}},{{0xB2A1302FL,(-1L),1L},{(-1L),0xC3F8B041L,0L},{(-1L),0xA1D8305EL,0x228FD4CBL},{(-1L),0xB386BFE8L,0xDE9C09DDL},{0xA1D8305EL,0L,(-1L)},{(-1L),0L,0x6259268EL},{0x9D15D649L,0xB386BFE8L,1L}},{{0x2E0E4AE9L,0xA1D8305EL,0xE9DBB44FL},{1L,0xC3F8B041L,(-6L)},{0x1EDDD83FL,(-1L),0xB386BFE8L},{0x8BBFA625L,8L,0L},{1L,3L,0x94D57003L},{0x0E07BC25L,(-1L),0x3BA83663L},{7L,7L,0x0E07BC25L}},{{3L,0x85A3A27FL,0xC3E47ADDL},{1L,1L,0xC9E9E146L},{(-1L),0x7F53882FL,(-6L)},{0L,1L,0xC9E9E146L},{(-1L),0x3BA83663L,0xC3E47ADDL},{0x8139E0D0L,0x9966CFEAL,0x0E07BC25L},{1L,0x2617E67EL,0x3BA83663L}},{{8L,(-1L),0x94D57003L},{0x378498A2L,1L,0L},{(-6L),5L,0xB386BFE8L},{0x86784362L,0xC9E9E146L,(-6L)},{0xA48CE08BL,0x86784362L,0xE9DBB44FL},{0xDE9C09DDL,0L,6L},{1L,0L,0xB386BFE8L}},{{(-2L),0x9D15D649L,0xC9E9E146L},{(-2L),0L,0L},{1L,0x2E0E4AE9L,0xA1D8305EL},{0L,0x3A4500ACL,0L},{(-1L),0x2DFA94E1L,8L},{0x8139E0D0L,8L,0xC3E47ADDL},{0x6259268EL,(-6L),(-1L)}},{{(-9L),0xA1D8305EL,(-1L)},{(-1L),0x9966CFEAL,0x9966CFEAL},{0x2DFA94E1L,0x7F53882FL,0x73C793C8L},{(-1L),(-1L),0x2E0E4AE9L},{0xC3F8B041L,1L,0x75B2328CL},{0xE9DBB44FL,6L,0L},{5L,1L,0x100E7AA8L}},{{(-1L),(-1L),0L},{(-1L),0x7F53882FL,3L},{0L,0x9966CFEAL,(-1L)},{0x8BBFA625L,0xA1D8305EL,0xC3F8B041L},{8L,(-6L),0L},{0L,8L,0x7F53882FL},{8L,0x2DFA94E1L,1L}},{{0x73C793C8L,0x3A4500ACL,0x640675F7L},{0x100E7AA8L,0x2E0E4AE9L,0x055AC6CEL},{1L,0L,(-1L)},{0xC3E47ADDL,0x9D15D649L,(-1L)},{0xB2A1302FL,0L,0x055AC6CEL},{0x75B2328CL,0L,0x640675F7L},{0L,0x8139E0D0L,1L}}}; + uint64_t l_1867 = 18446744073709551612UL; + union U1 l_1891 = {4294967291UL}; + union U2 ***l_1901 = &l_39; + union U2 ****l_1900[10][2] = {{&l_1901,&l_1901},{&l_1901,&l_1901},{&l_1901,&l_1901},{&l_1901,&l_1901},{&l_1901,&l_1901},{&l_1901,&l_1901},{&l_1901,&l_1901},{&l_1901,&l_1901},{&l_1901,&l_1901},{&l_1901,&l_1901}}; + union U2 *****l_1902 = (void*)0; + int8_t l_1936 = (-1L); + uint32_t l_1937 = 0x8A6D3A2FL; + int i, j, k; + } + } + return (*g_902); +} + + +/* ------------------------------------------ */ +/* + * reads : g_444 g_223.f0 g_75 g_244 g_245 g_814.f1 g_318 g_319 g_53 g_89 g_149 g_92 + * writes: g_444 g_75 g_1399 g_231.f1 g_89 g_149 g_507 + */ +static const uint64_t func_16(uint64_t p_17, union U1 p_18) +{ /* block id: 592 */ + int8_t l_1386 = 0xEBL; + uint16_t *l_1389 = &g_444; + uint64_t l_1393 = 18446744073709551615UL; + uint32_t ***l_1394 = &g_911; + int16_t *l_1395 = &g_75; + uint16_t *l_1398[4][6] = {{&g_245,&g_245,(void*)0,(void*)0,&g_245,&g_245},{&g_245,&g_245,(void*)0,(void*)0,&g_245,(void*)0},{&g_245,&g_245,&g_245,(void*)0,&g_245,(void*)0},{&g_245,&g_245,(void*)0,(void*)0,&g_245,&g_245}}; + int32_t l_1400 = 0L; + int32_t l_1401 = 0xADEB96C4L; + uint16_t l_1405 = 0xFE0CL; + int32_t ***l_1409 = &g_251[3]; + union U0 l_1422 = {0x3EC3L}; + int64_t l_1423 = 0L; + int32_t l_1479[10] = {0x48A6F4D1L,7L,0x48A6F4D1L,0x48A6F4D1L,7L,0x48A6F4D1L,0x48A6F4D1L,7L,0x48A6F4D1L,0x48A6F4D1L}; + int i, j; + if ((safe_rshift_func_int16_t_s_s(p_18.f0, (safe_div_func_int16_t_s_s((safe_add_func_int16_t_s_s((l_1400 = ((safe_add_func_int32_t_s_s(((l_1386 ^ (((*l_1395) = (safe_div_func_uint16_t_u_u(((*l_1389) = ((-8L) && 6UL)), (safe_unary_minus_func_uint8_t_u((safe_rshift_func_int16_t_s_s(l_1393, (l_1394 == l_1394)))))))) != 0xE77CL)) , ((((g_1399[2][0][3] = ((*l_1389) |= (safe_div_func_int8_t_s_s((0L >= 0xE9FB419A1EFB1097LL), (-1L))))) | 0x08C3L) || g_223.f0) != l_1393)), (-2L))) , l_1386)), l_1401)), l_1386))))) + { /* block id: 598 */ + union U1 l_1402 = {4294967295UL}; + int8_t *l_1406 = &g_231[2][3][1].f1; + int32_t ***l_1410 = &g_251[3]; + int32_t *l_1411[3][10] = {{(void*)0,(void*)0,(void*)0,&g_111[7][6],&g_1232,(void*)0,&l_1400,(void*)0,&g_1232,&g_111[7][6]},{&g_111[7][6],&g_111[5][1],&g_111[7][6],(void*)0,(void*)0,&g_111[1][3],&l_1400,&l_1400,&g_111[1][3],(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,&g_111[7][6],&g_1232,(void*)0,&l_1400,(void*)0,&g_1232}}; + int i, j; + l_1423 = ((l_1402 , ((l_1402.f1 = (((*l_1406) = l_1405) == (-1L))) | (((safe_mod_func_int8_t_s_s((0xB61EL && (((l_1400 && (p_18.f1 ^= (l_1409 != l_1410))) && (safe_lshift_func_uint16_t_u_s((safe_add_func_int8_t_s_s((p_18.f1 , (safe_rshift_func_int16_t_s_u(((safe_mod_func_uint32_t_u_u(((safe_sub_func_uint16_t_u_u((((*l_1395) &= (((l_1422 , p_17) , 0xF25EF439L) == p_17)) , 9UL), p_17)) & 0UL), 0xD5507FF8L)) == (*g_244)), 2))), p_17)), p_17))) | p_17)), g_814.f1)) <= (*g_318)) != g_53[1]))) > 0x2F5002ECB99A8F88LL); + for (g_89 = 0; (g_89 != 23); g_89 = safe_add_func_uint8_t_u_u(g_89, 1)) + { /* block id: 606 */ + uint32_t l_1426 = 0x9900E60AL; + int32_t *l_1436 = &g_1232; + uint32_t l_1445 = 4294967295UL; + int32_t l_1460 = 8L; + int32_t l_1478[2]; + uint32_t l_1480 = 0x8DC4F29BL; + int i; + for (i = 0; i < 2; i++) + l_1478[i] = 2L; + ++l_1426; + for (g_149 = 0; (g_149 >= (-5)); g_149 = safe_sub_func_int16_t_s_s(g_149, 1)) + { /* block id: 610 */ + int32_t *l_1433 = (void*)0; + int32_t *l_1437 = &g_111[1][3]; + union U1 *l_1456[4]; + union U2 ***l_1473 = (void*)0; + union U2 **** const l_1472 = &l_1473; + int32_t l_1477 = (-9L); + int i; + for (i = 0; i < 4; i++) + l_1456[i] = &g_428[0][0][2]; + } + --l_1480; + } + } + else + { /* block id: 639 */ + int16_t *l_1483 = &g_507; + int32_t *l_1484 = (void*)0; + int32_t *l_1485 = &l_1400; + (*l_1485) &= ((((*l_1483) = ((*l_1395) ^= p_17)) != (p_17 > g_92)) || (*g_318)); + } + return (*g_318); +} + + +/* ------------------------------------------ */ +/* + * reads : g_2 g_93 g_225 g_226 g_223.f0 g_149 g_231.f1 g_428.f0 g_92 g_223.f3 g_930 g_931 g_627 g_912 g_318 g_319 g_911 g_1007 g_89 g_226.f2 g_244 g_245 g_10.f4 g_444 g_428 g_1074 g_147 g_101 g_375 g_1198 g_604 g_814.f0 g_229 g_53 g_706 g_222 g_223 + * writes: g_93 g_245 g_223.f0 g_149 g_111 g_223.f3 g_75 g_2 g_226.f2 g_89 g_444 g_507 g_479 g_147 g_1198 g_54 g_706 g_53 + */ +static union U2 func_20(union U2 * p_21) +{ /* block id: 334 */ + int64_t l_751 = 0x5E75AE4C622A21C5LL; + union U2 * const l_752[8][4] = {{&g_10[9],&g_10[9],&g_10[9],&g_10[9]},{&g_10[9],&g_10[9],&g_10[9],&g_10[9]},{&g_10[9],&g_10[9],&g_10[9],&g_10[9]},{&g_10[9],&g_10[9],&g_10[9],&g_10[9]},{&g_10[9],&g_10[9],&g_10[9],&g_10[9]},{&g_10[9],&g_10[9],&g_10[9],&g_10[9]},{&g_10[9],&g_10[9],&g_10[9],&g_10[9]},{&g_10[9],&g_10[9],&g_10[9],&g_10[9]}}; + int32_t l_759 = 0x817DE0C4L; + uint16_t l_792 = 0xE74AL; + union U0 **l_817 = &g_225; + uint16_t l_822[3][6]; + uint32_t l_857[7][2][6] = {{{0x151888D0L,0x069C0D93L,0x151888D0L,4294967294UL,0x52F0D1DCL,0x151888D0L},{4294967295UL,0x8F364602L,4294967294UL,1UL,0x52F0D1DCL,4294967295UL}},{{4294967294UL,0x069C0D93L,1UL,1UL,0x069C0D93L,4294967294UL},{4294967295UL,0x52F0D1DCL,1UL,4294967294UL,0x8F364602L,4294967295UL}},{{0x151888D0L,0x52F0D1DCL,4294967294UL,0x151888D0L,0x069C0D93L,0x151888D0L},{0x151888D0L,0x069C0D93L,0x151888D0L,4294967294UL,0x52F0D1DCL,0x151888D0L}},{{4294967295UL,0x8F364602L,4294967294UL,1UL,0x52F0D1DCL,4294967295UL},{4294967294UL,0x069C0D93L,1UL,1UL,0x069C0D93L,4294967294UL}},{{4294967295UL,0x52F0D1DCL,1UL,4294967294UL,0x8F364602L,4294967295UL},{0x151888D0L,0x52F0D1DCL,4294967294UL,0x151888D0L,0x069C0D93L,0x151888D0L}},{{0x151888D0L,0x069C0D93L,0x151888D0L,4294967294UL,0x52F0D1DCL,0x151888D0L},{4294967295UL,0x8F364602L,4294967294UL,1UL,0x52F0D1DCL,4294967295UL}},{{4294967294UL,0x069C0D93L,1UL,1UL,0x069C0D93L,4294967294UL},{4294967295UL,0x52F0D1DCL,1UL,4294967294UL,0x8F364602L,4294967295UL}}}; + uint16_t *l_871 = &g_245; + uint16_t **l_870[10] = {&l_871,&l_871,&l_871,&l_871,&l_871,&l_871,&l_871,&l_871,&l_871,&l_871}; + uint16_t ***l_869[4]; + int8_t *l_880 = &g_147; + union U2 ***l_900 = &g_54; + union U2 ****l_899 = &l_900; + uint32_t *l_909 = &l_857[5][0][1]; + uint32_t **l_908[9][3] = {{&l_909,&l_909,&l_909},{&l_909,&l_909,&l_909},{&l_909,&l_909,&l_909},{&l_909,&l_909,&l_909},{&l_909,&l_909,&l_909},{&l_909,&l_909,&l_909},{&l_909,&l_909,&l_909},{&l_909,&l_909,&l_909},{&l_909,&l_909,&l_909}}; + uint32_t l_932 = 1UL; + int64_t l_943[1][7][4] = {{{0x31817ECD765582DFLL,0x3C4000B56088A104LL,0x3C4000B56088A104LL,0x31817ECD765582DFLL},{(-8L),5L,0L,2L},{0x0E65A79A37AC998BLL,(-1L),2L,8L},{2L,8L,(-4L),8L},{0x3C4000B56088A104LL,(-1L),0x3941FF1ADCFF6FFCLL,2L},{0x07095D56C55A0754LL,5L,8L,0x31817ECD765582DFLL},{0x3941FF1ADCFF6FFCLL,0x3C4000B56088A104LL,(-5L),(-5L)}}}; + int32_t l_964 = 6L; + int32_t l_975 = 1L; + int32_t l_976 = 0xA8F33034L; + int32_t l_980 = 1L; + int32_t l_1042 = 4L; + uint32_t l_1090 = 18446744073709551609UL; + int16_t l_1101 = 0xE3F0L; + uint8_t l_1130 = 251UL; + int32_t l_1183 = 0x99FFB991L; + int32_t l_1189 = 0x193C6D4BL; + int32_t l_1191 = 0x799703FFL; + int32_t l_1192[6][5] = {{0x7D50E986L,0x1D2A5D45L,0x1D2A5D45L,0x7D50E986L,0x1D2A5D45L},{0xB0F500FBL,0xB0F500FBL,0x9F171E12L,0xB0F500FBL,0xB0F500FBL},{0x1D2A5D45L,0x7D50E986L,0x1D2A5D45L,0x1D2A5D45L,0x7D50E986L},{0xB0F500FBL,6L,6L,0xB0F500FBL,6L},{0x7D50E986L,0x7D50E986L,(-2L),0x7D50E986L,0x7D50E986L},{6L,0xB0F500FBL,6L,6L,6L}}; + int16_t l_1212[10][3][8] = {{{0L,(-1L),4L,1L,0x39A8L,(-8L),(-9L),0x74A8L},{(-9L),2L,1L,0xE2F5L,0x43FCL,0x976FL,0xEC7EL,(-1L)},{0xE00DL,0x74A8L,0L,0xA987L,(-1L),0xAE8AL,1L,0L}},{{(-1L),(-3L),0x925EL,0xE00DL,0xEC7EL,0x74A8L,(-1L),(-1L)},{0L,0x4D21L,(-5L),0x74A8L,0x0AB7L,0x1B3AL,0L,0x1EE1L},{0xFD58L,0L,0L,(-9L),(-9L),0L,0L,0xFD58L}},{{0xE096L,0L,0x2447L,0x5CD9L,0x5027L,0L,(-4L),0x4433L},{0x0518L,(-1L),0L,1L,0x5CD9L,0L,0x0AB7L,0xEC7EL},{0xE2F5L,0L,0x450AL,0x1B3AL,(-5L),0L,0x1126L,1L}},{{0xEC7EL,0L,(-3L),0x3336L,(-6L),0x1B3AL,0x4D21L,4L},{(-1L),0x4D21L,1L,(-8L),7L,0x74A8L,(-3L),(-1L)},{(-3L),(-3L),0x8D33L,0x1EE1L,0x94DEL,0xAE8AL,(-6L),1L}},{{0x1FC3L,0x74A8L,(-5L),0x0950L,(-4L),0x976FL,0L,0x1B3AL},{1L,2L,(-1L),(-3L),0L,(-8L),1L,0xE00DL},{(-8L),(-1L),0xA987L,(-1L),0L,(-4L),4L,1L}},{{0x0950L,0x1E22L,0xAE8AL,(-1L),1L,0x5027L,0xFD58L,0x5CD9L},{0x39A8L,4L,(-8L),0L,0x1605L,0L,(-8L),4L},{2L,0L,0x74A8L,1L,4L,(-1L),0L,0xF390L}},{{0x2447L,0xFD58L,(-4L),(-8L),2L,0L,0L,0x450AL},{0x450AL,(-8L),0x74A8L,(-1L),(-3L),0x1EE1L,(-8L),0L},{(-3L),0x1EE1L,(-8L),0L,(-1L),(-1L),0xFD58L,0xEC64L}},{{(-5L),0x5CD9L,0xAE8AL,(-3L),0xB3BFL,0x0950L,4L,(-1L)},{0L,0x0AB7L,0xA987L,0x0518L,(-7L),0x4433L,1L,0L},{0xF390L,1L,(-1L),0x6038L,0x1B3AL,0xB3BFL,0xA987L,(-8L)}},{{7L,0xE2F5L,0x97EAL,0xFD58L,0x6038L,2L,0x0492L,0x5CD9L},{0x1E22L,(-1L),0xF390L,0xF2C9L,(-8L),0x0518L,0x8D48L,1L},{(-1L),1L,0x0518L,(-3L),1L,(-1L),(-3L),0L}},{{0xE2F5L,(-8L),(-1L),0L,(-1L),(-1L),0L,(-1L)},{(-4L),(-4L),0x1B3AL,(-8L),2L,0L,0xEC7EL,(-3L)},{0x0950L,0xF2C9L,0xA987L,7L,0L,(-1L),1L,(-3L)}}}; + int32_t *l_1237 = &l_1192[5][0]; + int32_t *l_1238[6][5][8] = {{{&l_980,(void*)0,&l_1192[0][0],(void*)0,&l_980,&l_964,(void*)0,&g_92},{&g_111[2][8],&l_1189,&g_111[1][3],&l_1191,&l_759,&g_111[3][4],&l_1192[5][0],&l_1189},{&g_92,&l_1192[5][0],&l_759,&g_111[1][3],&l_759,&g_1232,&l_964,&g_111[1][3]},{&l_1042,&l_964,&l_980,&l_1191,&l_980,&l_964,&l_1042,&l_1192[0][1]},{&g_111[3][8],&l_1189,&l_1192[0][0],&l_976,&l_1189,&l_1192[5][1],(void*)0,&l_980}},{{&l_980,&l_1042,&g_89,&l_1042,&l_1189,&l_1192[5][0],&l_1191,&l_1191},{&g_111[3][8],&l_976,(void*)0,&l_980,&l_980,&l_759,&g_111[5][8],&l_964},{&l_1042,&l_1192[4][0],&l_1192[5][1],&l_980,&l_759,&l_976,(void*)0,&l_976},{&g_92,&l_759,&g_1232,(void*)0,&l_759,&l_1191,&l_980,&l_980},{&g_111[2][8],&l_964,&l_1191,(void*)0,&l_980,&g_1232,&l_980,(void*)0}},{{&l_980,&g_111[3][8],&g_1232,&l_1189,(void*)0,(void*)0,&l_1192[5][0],(void*)0},{&l_759,&l_1192[5][0],&g_111[1][3],(void*)0,&g_89,&l_1189,&l_1191,(void*)0},{&l_976,&l_1192[3][1],&l_1042,&g_89,(void*)0,&l_976,&l_1042,&l_964},{&g_111[5][8],(void*)0,&g_89,&l_1189,&g_89,&g_1232,(void*)0,&l_1192[5][0]},{&l_1192[0][1],&g_111[8][4],(void*)0,&l_1042,&l_1042,&g_111[1][3],&l_1042,&l_1189}},{{&l_1192[5][0],&l_1191,&l_980,(void*)0,&l_1042,(void*)0,&g_111[3][8],&l_1192[0][1]},{&l_1042,&l_1189,&g_89,(void*)0,&l_1191,&l_759,&l_1191,&g_111[2][8]},{&g_1232,&l_1189,(void*)0,&g_111[1][3],&l_964,&g_111[1][3],&g_111[1][3],&l_964},{&l_1191,&l_964,&l_964,&l_1191,&l_1042,&l_1189,&g_111[3][5],&l_1042},{&l_980,&l_1042,&l_1042,&g_111[1][3],&l_1191,&l_1189,&g_1232,(void*)0}},{{(void*)0,&l_1042,&g_111[1][3],(void*)0,&l_980,&l_1189,&l_976,&l_1192[5][0]},{&l_980,&l_964,&l_1192[4][0],&l_1189,(void*)0,&g_111[1][3],(void*)0,&l_980},{&l_980,&g_89,&l_1189,&l_964,&g_1232,&l_976,&l_964,(void*)0},{(void*)0,&l_759,(void*)0,&g_1232,&l_980,&l_1192[4][0],&g_1232,&l_1192[0][1]},{&l_1192[5][0],&g_111[1][3],(void*)0,&g_111[1][3],&l_1192[4][0],(void*)0,&l_759,(void*)0}},{{(void*)0,&l_964,(void*)0,&l_964,&l_759,&l_1189,&l_1042,&l_980},{(void*)0,&l_964,&l_980,&l_1042,&l_964,&l_1192[0][0],&g_111[1][3],(void*)0},{&g_111[3][5],&g_1232,&l_759,&l_1191,(void*)0,(void*)0,&l_1191,(void*)0},{(void*)0,&l_759,&l_1189,&l_1192[5][0],&l_1192[0][0],&l_1042,&l_759,(void*)0},{(void*)0,&g_111[1][3],&g_89,&g_111[1][3],(void*)0,&g_111[1][3],&l_964,&l_980}}}; + int32_t l_1239 = 0x5078E770L; + int32_t l_1240 = 0L; + uint32_t l_1241 = 0x263AC74CL; + int32_t l_1251[7][5][4] = {{{0xAA29CFDBL,1L,1L,0xAA29CFDBL},{6L,1L,0x603D9C89L,1L},{1L,0x721A6F8FL,0x603D9C89L,0x603D9C89L},{6L,6L,1L,0x603D9C89L},{0xAA29CFDBL,0x721A6F8FL,0xAA29CFDBL,1L}},{{0xAA29CFDBL,1L,1L,0xAA29CFDBL},{6L,1L,0x603D9C89L,1L},{1L,0x721A6F8FL,0x603D9C89L,0x603D9C89L},{6L,6L,1L,0x603D9C89L},{0xAA29CFDBL,0x721A6F8FL,0xAA29CFDBL,1L}},{{0xAA29CFDBL,1L,1L,0xAA29CFDBL},{6L,1L,0x603D9C89L,1L},{1L,0x721A6F8FL,0x603D9C89L,0x603D9C89L},{6L,6L,1L,0x603D9C89L},{0xAA29CFDBL,0x721A6F8FL,0xAA29CFDBL,1L}},{{0xAA29CFDBL,1L,1L,0xAA29CFDBL},{6L,1L,0x603D9C89L,1L},{1L,0x721A6F8FL,0x603D9C89L,0x603D9C89L},{6L,6L,1L,0x603D9C89L},{0xAA29CFDBL,0x721A6F8FL,0xAA29CFDBL,1L}},{{0xAA29CFDBL,1L,1L,0xAA29CFDBL},{6L,1L,0x603D9C89L,1L},{1L,0x721A6F8FL,0x603D9C89L,0x721A6F8FL},{1L,1L,0xAA29CFDBL,0x721A6F8FL},{0x603D9C89L,6L,0x603D9C89L,0xAA29CFDBL}},{{0x603D9C89L,0xAA29CFDBL,0xAA29CFDBL,0x603D9C89L},{1L,0xAA29CFDBL,0x721A6F8FL,0xAA29CFDBL},{0xAA29CFDBL,6L,0x721A6F8FL,0x721A6F8FL},{1L,1L,0xAA29CFDBL,0x721A6F8FL},{0x603D9C89L,6L,0x603D9C89L,0xAA29CFDBL}},{{0x603D9C89L,0xAA29CFDBL,0xAA29CFDBL,0x603D9C89L},{1L,0xAA29CFDBL,0x721A6F8FL,0xAA29CFDBL},{0xAA29CFDBL,6L,0x721A6F8FL,0x721A6F8FL},{1L,1L,0xAA29CFDBL,0x721A6F8FL},{0x603D9C89L,6L,0x603D9C89L,0xAA29CFDBL}}}; + int16_t l_1252 = 0x8099L; + union U1 l_1296[6][10][4] = {{{{0x1D574646L},{0x71DBF36DL},{0x71DBF36DL},{0x1D574646L}},{{0xC1A11E5DL},{0x71DBF36DL},{4294967289UL},{0x89B10B99L}},{{0x89B10B99L},{0xC0F3DB2DL},{4294967289UL},{0x0C3A5D39L}},{{0xC1A11E5DL},{0xD393D14CL},{0x71DBF36DL},{0x0C3A5D39L}},{{0x1D574646L},{0xC0F3DB2DL},{9UL},{0x89B10B99L}},{{0x1D574646L},{0x71DBF36DL},{0x71DBF36DL},{0x1D574646L}},{{0xC1A11E5DL},{0x71DBF36DL},{4294967289UL},{0x89B10B99L}},{{0x89B10B99L},{0xC0F3DB2DL},{4294967289UL},{0x0C3A5D39L}},{{0xC1A11E5DL},{0xD393D14CL},{0x71DBF36DL},{0x0C3A5D39L}},{{0x1D574646L},{0xC0F3DB2DL},{9UL},{0x89B10B99L}}},{{{0x1D574646L},{0x71DBF36DL},{0x71DBF36DL},{0x1D574646L}},{{0xC1A11E5DL},{0x71DBF36DL},{4294967289UL},{0x89B10B99L}},{{0x89B10B99L},{0xC0F3DB2DL},{4294967289UL},{0x0C3A5D39L}},{{0xC1A11E5DL},{0xD393D14CL},{0x71DBF36DL},{0x0C3A5D39L}},{{0x1D574646L},{0xC0F3DB2DL},{9UL},{0x89B10B99L}},{{0x1D574646L},{0x71DBF36DL},{0x71DBF36DL},{0x1D574646L}},{{0xC1A11E5DL},{0x71DBF36DL},{4294967289UL},{0x89B10B99L}},{{0x89B10B99L},{0xC0F3DB2DL},{4294967289UL},{0x0C3A5D39L}},{{0xC1A11E5DL},{0xD393D14CL},{0x71DBF36DL},{0x0C3A5D39L}},{{0x1D574646L},{0xC0F3DB2DL},{9UL},{0x89B10B99L}}},{{{0x1D574646L},{0x71DBF36DL},{0x71DBF36DL},{0x1D574646L}},{{0xC1A11E5DL},{0x71DBF36DL},{4294967289UL},{0x89B10B99L}},{{0x89B10B99L},{0xC0F3DB2DL},{4294967289UL},{0x0C3A5D39L}},{{0xC1A11E5DL},{0xD393D14CL},{0x71DBF36DL},{0x0C3A5D39L}},{{0x1D574646L},{0xC0F3DB2DL},{9UL},{0x89B10B99L}},{{0x1D574646L},{0x71DBF36DL},{0x71DBF36DL},{0x1D574646L}},{{0xC1A11E5DL},{0x71DBF36DL},{4294967289UL},{0x89B10B99L}},{{0x89B10B99L},{0xC0F3DB2DL},{4294967289UL},{0x0C3A5D39L}},{{0xC1A11E5DL},{0xD393D14CL},{0x71DBF36DL},{0x0C3A5D39L}},{{0x1D574646L},{0xC0F3DB2DL},{9UL},{0x89B10B99L}}},{{{0x1D574646L},{0x71DBF36DL},{0x71DBF36DL},{0x1D574646L}},{{0xC1A11E5DL},{0x71DBF36DL},{4294967289UL},{0x89B10B99L}},{{0x89B10B99L},{0xC0F3DB2DL},{4294967289UL},{0x0C3A5D39L}},{{0xC1A11E5DL},{0xD393D14CL},{0x71DBF36DL},{0x0C3A5D39L}},{{0x1D574646L},{0xC0F3DB2DL},{9UL},{0x89B10B99L}},{{0x1D574646L},{9UL},{9UL},{0x0C3A5D39L}},{{0x89B10B99L},{9UL},{0xC0F3DB2DL},{0x1D574646L}},{{0x1D574646L},{0xD393D14CL},{0xC0F3DB2DL},{4294967286UL}},{{0x89B10B99L},{0x71DBF36DL},{9UL},{4294967286UL}},{{0x0C3A5D39L},{0xD393D14CL},{4294967289UL},{0x1D574646L}}},{{{0x0C3A5D39L},{9UL},{9UL},{0x0C3A5D39L}},{{0x89B10B99L},{9UL},{0xC0F3DB2DL},{0x1D574646L}},{{0x1D574646L},{0xD393D14CL},{0xC0F3DB2DL},{4294967286UL}},{{0x89B10B99L},{0x71DBF36DL},{9UL},{4294967286UL}},{{0x0C3A5D39L},{0xD393D14CL},{4294967289UL},{0x1D574646L}},{{0x0C3A5D39L},{9UL},{9UL},{0x0C3A5D39L}},{{0x89B10B99L},{9UL},{0xC0F3DB2DL},{0x1D574646L}},{{0x1D574646L},{0xD393D14CL},{0xC0F3DB2DL},{4294967286UL}},{{0x89B10B99L},{0x71DBF36DL},{9UL},{4294967286UL}},{{0x0C3A5D39L},{0xD393D14CL},{4294967289UL},{0x1D574646L}}},{{{0x0C3A5D39L},{9UL},{9UL},{0x0C3A5D39L}},{{0x89B10B99L},{9UL},{0xC0F3DB2DL},{0x1D574646L}},{{0x1D574646L},{0xD393D14CL},{0xC0F3DB2DL},{4294967286UL}},{{0x89B10B99L},{0x71DBF36DL},{9UL},{4294967286UL}},{{0x0C3A5D39L},{0xD393D14CL},{4294967289UL},{0x1D574646L}},{{0x0C3A5D39L},{9UL},{9UL},{0x0C3A5D39L}},{{0x89B10B99L},{9UL},{0xC0F3DB2DL},{0x1D574646L}},{{0x1D574646L},{0xD393D14CL},{0xC0F3DB2DL},{4294967286UL}},{{0x89B10B99L},{0x71DBF36DL},{9UL},{4294967286UL}},{{0x0C3A5D39L},{0xD393D14CL},{4294967289UL},{0x1D574646L}}}}; + uint32_t ****l_1337 = (void*)0; + uint32_t *****l_1336 = &l_1337; + int32_t l_1352 = 0L; + int i, j, k; + for (i = 0; i < 3; i++) + { + for (j = 0; j < 6; j++) + l_822[i][j] = 4UL; + } + for (i = 0; i < 4; i++) + l_869[i] = &l_870[3]; + if ((safe_rshift_func_uint16_t_u_s((safe_mul_func_int8_t_s_s(0x74L, (g_2 >= l_751))), 10))) + { /* block id: 335 */ + uint32_t *l_757[4][4][10] = {{{(void*)0,&g_428[0][0][2].f0,&g_375,&g_375,&g_428[0][0][2].f0,(void*)0,&g_93,(void*)0,&g_428[0][0][2].f0,&g_375},{&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_375,&g_93,&g_93,&g_375,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0},{&g_428[0][0][2].f0,(void*)0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,(void*)0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,(void*)0,&g_428[0][0][2].f0},{(void*)0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,(void*)0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,(void*)0,&g_428[0][0][2].f0,&g_428[0][0][2].f0}},{{&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_375,&g_93,&g_93,&g_375,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_375},{&g_428[0][0][2].f0,(void*)0,&g_93,(void*)0,&g_428[0][0][2].f0,&g_375,&g_375,&g_428[0][0][2].f0,(void*)0,&g_93},{&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_93,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_93,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_93},{(void*)0,&g_428[0][0][2].f0,&g_375,&g_375,&g_428[0][0][2].f0,(void*)0,&g_93,(void*)0,&g_428[0][0][2].f0,&g_375}},{{&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_375,&g_93,&g_93,&g_375,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0},{&g_428[0][0][2].f0,(void*)0,&g_428[0][0][2].f0,&g_375,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0},{&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_375,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0},{&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_93,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_93,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_93}},{{&g_375,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_375,&g_93,&g_93,&g_375,&g_428[0][0][2].f0,&g_428[0][0][2].f0},{&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_375,(void*)0,&g_375,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0},{&g_428[0][0][2].f0,&g_375,&g_93,&g_93,&g_375,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_375,&g_93},{&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_93,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_93,&g_428[0][0][2].f0,&g_428[0][0][2].f0,&g_428[0][0][2].f0}}}; + int32_t l_758[1][4][8] = {{{0x13BCAF3AL,0x34EFA39DL,0x34EFA39DL,0x13BCAF3AL,0x34EFA39DL,0x34EFA39DL,0x13BCAF3AL,0x34EFA39DL},{0x13BCAF3AL,0x13BCAF3AL,0x748F0485L,0x13BCAF3AL,0x13BCAF3AL,0x748F0485L,0x13BCAF3AL,0x13BCAF3AL},{0x34EFA39DL,0x13BCAF3AL,0x34EFA39DL,0x34EFA39DL,0x13BCAF3AL,0x34EFA39DL,0x34EFA39DL,0x13BCAF3AL},{0x13BCAF3AL,0x34EFA39DL,0x34EFA39DL,0x13BCAF3AL,0x34EFA39DL,0x34EFA39DL,0x13BCAF3AL,0x34EFA39DL}}}; + union U1 l_762 = {0x3F18B329L}; + int32_t l_769 = 0xC76289FEL; + uint16_t *l_774 = &g_245; + union U1 l_775 = {4294967288UL}; + int32_t *l_776[10][6]; + int64_t *l_777 = &g_149; + int32_t *l_778 = &g_111[1][3]; + int32_t **l_779 = &l_778; + int i, j, k; + for (i = 0; i < 10; i++) + { + for (j = 0; j < 6; j++) + l_776[i][j] = &g_223.f0; + } + (*l_778) = (((void*)0 != l_752[1][2]) | ((*l_777) = (safe_div_func_int16_t_s_s((safe_div_func_uint32_t_u_u((++g_93), (l_762 , (safe_rshift_func_uint8_t_u_s((((safe_add_func_int16_t_s_s(((((safe_mul_func_int8_t_s_s(((0x8DD6L < l_769) | (((g_223.f0 ^= ((safe_mul_func_uint8_t_u_u((0x3C13D321L < (safe_mod_func_int8_t_s_s((((*l_774) = l_762.f0) | ((l_775 , (*g_225)) , l_758[0][2][3])), 1UL))), 0x55L)) > l_775.f0)) , 0L) | g_149)), g_231[2][3][1].f1)) && 0x9AL) , l_759) || l_759), l_759)) >= g_428[0][0][2].f0) < g_92), 6))))), l_751)))); + (*l_779) = &l_758[0][2][0]; + } + else + { /* block id: 342 */ + int8_t l_789 = 0L; + int32_t l_791 = 0xA19943A3L; + uint32_t *l_849 = (void*)0; + uint8_t *l_875 = &g_2; + union U0 *l_883 = &g_229[0][0][4]; + const union U1 *l_901 = &g_428[0][0][2]; + int32_t *l_916[9][9][2] = {{{&g_223.f0,&g_223.f0},{&g_223.f0,(void*)0},{&g_627,&g_10[9].f0},{(void*)0,&g_10[9].f0},{&g_627,(void*)0},{&g_223.f0,&g_223.f0},{&g_223.f0,(void*)0},{&g_627,&g_10[9].f0},{(void*)0,&g_10[9].f0}},{{&g_627,(void*)0},{&g_223.f0,&g_223.f0},{&g_223.f0,(void*)0},{&g_627,&g_10[9].f0},{(void*)0,&g_10[9].f0},{&g_627,(void*)0},{&g_223.f0,&g_223.f0},{&g_223.f0,(void*)0},{&g_627,&g_10[9].f0}},{{(void*)0,&g_10[9].f0},{&g_627,(void*)0},{&g_223.f0,&g_223.f0},{&g_223.f0,(void*)0},{&g_627,&g_10[9].f0},{(void*)0,&g_10[9].f0},{&g_627,(void*)0},{&g_223.f0,&g_223.f0},{&g_223.f0,(void*)0}},{{&g_627,&g_10[9].f0},{(void*)0,&g_10[9].f0},{&g_627,(void*)0},{&g_223.f0,&g_223.f0},{&g_223.f0,(void*)0},{&g_627,&g_10[9].f0},{(void*)0,&g_10[9].f0},{&g_627,(void*)0},{&g_223.f0,&g_223.f0}},{{&g_223.f0,(void*)0},{&g_627,&g_10[9].f0},{(void*)0,&g_10[9].f0},{&g_627,(void*)0},{&g_223.f0,&g_223.f0},{&g_223.f0,(void*)0},{&g_627,&g_10[9].f0},{(void*)0,&g_10[9].f0},{&g_627,(void*)0}},{{(void*)0,(void*)0},{(void*)0,&g_627},{&g_223.f0,&g_223.f0},{&g_627,&g_223.f0},{&g_223.f0,&g_627},{(void*)0,(void*)0},{(void*)0,&g_627},{&g_223.f0,&g_223.f0},{&g_627,&g_223.f0}},{{&g_223.f0,&g_627},{(void*)0,(void*)0},{(void*)0,&g_627},{&g_223.f0,&g_223.f0},{&g_627,&g_223.f0},{&g_223.f0,&g_627},{(void*)0,(void*)0},{(void*)0,&g_627},{&g_223.f0,&g_223.f0}},{{&g_627,&g_223.f0},{&g_223.f0,&g_627},{(void*)0,(void*)0},{(void*)0,&g_627},{&g_223.f0,&g_223.f0},{&g_627,&g_223.f0},{&g_223.f0,&g_627},{(void*)0,(void*)0},{(void*)0,&g_627}},{{&g_223.f0,&g_223.f0},{&g_627,&g_223.f0},{&g_223.f0,&g_627},{(void*)0,(void*)0},{(void*)0,&g_627},{&g_223.f0,&g_223.f0},{&g_627,&g_223.f0},{&g_223.f0,&g_627},{(void*)0,(void*)0}}}; + int64_t l_918[7] = {0x7A51C65C262453B0LL,0x7A51C65C262453B0LL,5L,0x7A51C65C262453B0LL,0x7A51C65C262453B0LL,5L,0x7A51C65C262453B0LL}; + union U0 ***l_963[5][5][5] = {{{&l_817,&g_815,(void*)0,&l_817,(void*)0},{&g_815,(void*)0,&g_815,&g_815,&g_815},{&g_815,&l_817,&g_815,(void*)0,&l_817},{&g_815,&g_815,&l_817,(void*)0,&g_819},{&l_817,(void*)0,&g_815,&l_817,&g_819}},{{&g_819,&l_817,&l_817,&g_819,&l_817},{&l_817,(void*)0,&g_815,(void*)0,&l_817},{(void*)0,(void*)0,&g_815,(void*)0,(void*)0},{&g_819,&l_817,(void*)0,&l_817,&g_815},{&g_819,&g_815,&g_819,&g_819,&l_817}},{{(void*)0,&l_817,&g_819,&l_817,&g_815},{&g_819,&g_819,&g_815,&l_817,(void*)0},{&g_815,&g_815,&l_817,(void*)0,&l_817},{&g_815,&g_815,&g_815,&g_815,&l_817},{&g_815,&g_819,&l_817,&l_817,&g_819}},{{(void*)0,&g_819,&g_819,&g_815,&g_819},{&l_817,&g_819,&g_819,&l_817,&l_817},{&g_815,&g_815,&g_815,&g_819,&g_815},{&l_817,&g_815,&g_815,&l_817,(void*)0},{&l_817,&g_819,&g_815,&g_815,(void*)0}},{{&g_815,&l_817,&g_819,(void*)0,&l_817},{(void*)0,&g_815,&l_817,&g_815,&g_819},{(void*)0,&l_817,(void*)0,(void*)0,&l_817},{&g_819,&l_817,&g_815,&g_815,&l_817},{&l_817,&g_819,&g_815,(void*)0,&l_817}}}; + const uint8_t **l_966 = (void*)0; + const uint8_t ** const *l_965 = &l_966; + int32_t l_974 = (-6L); + int32_t l_977 = 0L; + int32_t l_978 = 0x13F01D48L; + int32_t l_979 = 1L; + int32_t l_982 = 0L; + uint64_t l_983 = 18446744073709551615UL; + uint32_t l_1013 = 0xCE3163D8L; + uint8_t l_1067 = 0xD4L; + int32_t l_1180 = 0xF57081BFL; + int32_t l_1181 = 0xFB5777F6L; + int32_t l_1182 = 0x275AD62DL; + int32_t l_1184 = 6L; + int32_t l_1185 = (-1L); + int32_t l_1186 = 0x7A2C130CL; + int32_t l_1188 = (-7L); + int32_t l_1190 = 0x38A4EFDBL; + int32_t l_1193 = 0xBF70D8C0L; + int32_t l_1194 = 1L; + int32_t l_1195 = 0x0CE7F4DEL; + int32_t l_1196 = (-2L); + int32_t l_1197[9] = {0x1F2C8116L,0x1F2C8116L,0x1F2C8116L,0x1F2C8116L,0x1F2C8116L,0x1F2C8116L,0x1F2C8116L,0x1F2C8116L,0x1F2C8116L}; + uint64_t l_1233 = 0x13588E024B8FA85ALL; + int32_t *l_1236[6][9][4] = {{{(void*)0,&l_1182,&l_1182,&l_1197[1]},{&l_1186,&l_1194,&l_1194,&l_1186},{&l_1196,&l_1185,&l_1192[5][0],&l_977},{(void*)0,&l_1184,&l_1197[7],(void*)0},{(void*)0,(void*)0,&l_1193,(void*)0},{&l_1194,&l_1184,&l_1185,&l_977},{&l_1186,&l_1185,&l_1191,&l_1186},{&l_1182,&l_1194,&l_1193,&l_1197[1]},{&l_1185,&l_1182,(void*)0,&l_1196}},{{&l_1186,&l_1197[1],&l_1197[1],&l_1185},{&l_1195,(void*)0,&l_1193,&l_1182},{&l_977,(void*)0,&l_977,(void*)0},{(void*)0,&l_1197[1],(void*)0,(void*)0},{(void*)0,&l_1185,&l_1194,&l_1197[1]},{&l_964,&l_1195,&l_1194,&l_964},{(void*)0,&l_1185,(void*)0,(void*)0},{(void*)0,&l_982,&l_977,(void*)0},{&l_977,(void*)0,&l_1193,(void*)0}},{{&l_1195,&l_1184,&l_1197[1],(void*)0},{&l_1186,(void*)0,(void*)0,&l_1186},{&l_1185,&l_1195,&l_1193,&l_1193},{&l_1182,&l_1182,&l_1191,(void*)0},{&l_1186,&l_1193,&l_1185,&l_1185},{&l_1194,(void*)0,&l_1193,&l_1185},{(void*)0,(void*)0,&l_1197[7],&l_1185},{(void*)0,&l_1193,&l_1192[5][0],(void*)0},{&l_1196,&l_1182,&l_1194,&l_1193}},{{&l_1186,&l_1195,&l_1182,&l_1186},{(void*)0,(void*)0,&l_1192[5][0],(void*)0},{(void*)0,&l_1184,&l_977,(void*)0},{(void*)0,(void*)0,&l_976,(void*)0},{&l_1195,&l_982,&l_1185,(void*)0},{(void*)0,&l_1185,(void*)0,&l_964},{&l_1182,&l_1195,&l_982,&l_1197[1]},{&l_1182,&l_1185,(void*)0,(void*)0},{(void*)0,&l_1197[1],&l_1185,(void*)0}},{{&l_1195,(void*)0,&l_976,&l_1182},{(void*)0,(void*)0,&l_977,&l_1185},{(void*)0,&l_1197[1],&l_1192[5][0],&l_1196},{(void*)0,&l_1182,&l_1182,&l_1197[1]},{&l_1186,&l_1194,&l_1194,&l_1186},{&l_1196,&l_1185,&l_1192[5][0],&l_977},{(void*)0,&l_1192[5][0],&l_1197[1],(void*)0},{&l_1193,&l_1042,&l_1196,(void*)0},{&l_1196,&l_1192[5][0],&l_1191,&l_982}},{{&l_977,&l_982,(void*)0,&l_1185},{(void*)0,&l_1196,&l_1182,&l_1194},{&l_1191,(void*)0,&l_1042,&l_980},{&l_977,&l_1194,(void*)0,&l_982},{&l_964,&l_1192[0][0],&l_1196,(void*)0},{&l_982,&l_1196,&l_982,&l_1196},{&l_1196,&l_1194,&l_1188,(void*)0},{(void*)0,&l_1191,&l_1196,&l_1194},{&l_1197[1],&l_964,&l_1196,&l_1197[1]}}}; + int i, j, k; + for (g_223.f3 = 14; (g_223.f3 >= 16); g_223.f3 = safe_add_func_int32_t_s_s(g_223.f3, 9)) + { /* block id: 345 */ + int32_t l_788 = 0x9C835BFDL; + int32_t l_790 = 0L; + uint8_t *l_824 = (void*)0; + uint8_t **l_823 = &l_824; + union U1 l_856 = {4294967286UL}; + uint16_t ***l_873 = &l_870[0]; + int8_t *l_876 = &g_479; + const union U0 l_937 = {7L}; + const int32_t *l_950[1]; + const int32_t **l_949[4]; + const int32_t ***l_948 = &l_949[3]; + uint32_t l_967 = 0x77B72420L; + int32_t l_981 = 1L; + union U2 * const l_994 = (void*)0; + uint32_t l_1008 = 4294967295UL; + int32_t l_1038 = 0xCA27D7C2L; + int32_t l_1041 = 2L; + int32_t l_1043[10][5] = {{0L,0L,0x66C6F2F5L,1L,(-7L)},{0x77081B5EL,0xEF4C7256L,0x5589E398L,0x77081B5EL,0L},{0x90D8465BL,(-5L),0xAF1CDC4BL,5L,(-5L)},{0L,0xEF4C7256L,0xB86532B7L,0x944B88F4L,0x944B88F4L},{0x5589E398L,0L,0x5589E398L,0xAF1CDC4BL,0x944B88F4L},{1L,0x77081B5EL,0x48DB9371L,0x90D8465BL,(-5L)},{0xEF4C7256L,0x90D8465BL,0xDAE9F189L,1L,0L},{0x832C4FFEL,0L,0x48DB9371L,(-5L),(-7L)},{0x90D8465BL,0x5589E398L,0x5589E398L,0x90D8465BL,0x832C4FFEL},{0x90D8465BL,1L,0xB86532B7L,5L,1L}}; + uint8_t l_1044[1][4][6] = {{{0xD3L,0xE8L,0xD3L,255UL,255UL,0xD3L},{0UL,0UL,255UL,250UL,255UL,0UL},{255UL,0xE8L,250UL,250UL,0xE8L,255UL},{0UL,255UL,250UL,255UL,0UL,0UL}}}; + uint32_t ***l_1127 = (void*)0; + uint32_t ****l_1126 = &l_1127; + uint32_t *****l_1125 = &l_1126; + uint32_t ****l_1129 = &l_1127; + uint32_t *****l_1128 = &l_1129; + int16_t l_1187[2][3][7] = {{{0x8B62L,1L,0x8B62L,1L,1L,(-9L),(-9L)},{1L,3L,0x2A4CL,3L,1L,0x2A4CL,0xC3E2L},{0xC3E2L,(-9L),1L,0xC3E2L,1L,(-9L),0xC3E2L}},{{0x8B62L,0xC3E2L,(-9L),1L,0xC3E2L,1L,(-9L)},{0xC3E2L,0xC3E2L,0x2A4CL,1L,3L,0x2A4CL,3L},{1L,(-9L),(-9L),1L,1L,0x8B62L,1L}}}; + int i, j, k; + for (i = 0; i < 1; i++) + l_950[i] = &l_791; + for (i = 0; i < 4; i++) + l_949[i] = &l_950[0]; + for (g_75 = 0; (g_75 <= 5); g_75 += 1) + { /* block id: 348 */ + int32_t *l_782 = &g_111[4][0]; + int32_t *l_783 = &g_92; + int32_t *l_784 = (void*)0; + int32_t *l_785 = &g_111[1][3]; + int32_t *l_786 = &g_92; + int32_t *l_787[8] = {&g_92,&g_89,&g_92,&g_89,&g_92,&g_89,&g_92,&g_89}; + union U0 **l_803 = &g_225; + uint8_t *l_809 = &g_53[1]; + uint8_t **l_808 = &l_809; + const union U2 *l_813 = &g_814; + const union U2 **l_812 = &l_813; + union U0 **l_816 = (void*)0; + union U0 ***l_818[1][8] = {{(void*)0,&l_803,&l_803,(void*)0,&l_803,&l_803,(void*)0,&l_803}}; + int16_t *l_820 = (void*)0; + int16_t *l_821 = &g_507; + union U0 l_848 = {0L}; + int32_t l_865 = 0xD0F7F5FBL; + uint16_t ***l_868 = (void*)0; + int64_t *l_940 = &g_49; + int i, j; + l_792++; + } + if (((~(0x961AFC41136F22A9LL | (safe_add_func_uint16_t_u_u(((safe_div_func_uint32_t_u_u((((((l_790 | ((void*)0 == l_948)) == ((safe_rshift_func_uint16_t_u_s(((safe_lshift_func_uint8_t_u_u(((*g_931) = (safe_lshift_func_uint16_t_u_u((safe_mul_func_uint16_t_u_u(((((safe_rshift_func_int16_t_s_s((((l_918[2] || (0x5CL != ((((l_964 = (safe_sub_func_int8_t_s_s(((l_963[4][2][3] == l_963[4][2][3]) == (l_759 = 18446744073709551615UL)), 0x1DL))) > 0x1AL) , &l_856) == &g_428[6][0][2]))) , (**g_930)) < g_627), l_857[0][0][1])) , &g_930) != l_965) || 0x2A4742A4L), 0x19AAL)), 10))), l_918[3])) == (*g_912)), 5)) != (*g_912))) & (*g_318)) , l_950[0]) == (*g_911)), 0xDFE9E75CL)) > l_967), 1L)))) == l_932)) + { /* block id: 423 */ + int32_t *l_968 = &l_759; + int32_t *l_969 = &g_89; + int32_t *l_970 = &l_790; + int32_t *l_971 = &l_791; + int32_t *l_972 = (void*)0; + int32_t *l_973[5]; + union U2 ***l_1006 = &g_54; + uint16_t *l_1024 = &l_792; + int8_t l_1035 = 0L; + int i; + for (i = 0; i < 5; i++) + l_973[i] = (void*)0; + l_983++; + if ((*l_971)) + break; + (**l_948) = l_970; + for (g_226.f2 = 0; (g_226.f2 <= 2); g_226.f2 += 1) + { /* block id: 429 */ + uint32_t l_986 = 4294967295UL; + int32_t l_987 = 1L; + int32_t l_988[5][9] = {{0L,0x09DD368BL,2L,0L,0L,2L,0x09DD368BL,0L,2L},{0L,0x09DD368BL,0L,0L,0L,0L,0x0A634DD4L,6L,0L},{6L,0x0A634DD4L,0L,0L,0L,0L,0x0A634DD4L,6L,0L},{6L,0x0A634DD4L,0L,0L,0L,0L,0x0A634DD4L,6L,0L},{6L,0x0A634DD4L,0L,0L,0L,0L,0x0A634DD4L,6L,0L}}; + int32_t *l_1016 = (void*)0; + uint16_t *l_1023 = &g_245; + int i, j; + if (l_986) + { /* block id: 430 */ + uint16_t l_989[1][1][7]; + uint32_t *l_1009[5][7][5] = {{{&g_223.f2,&g_226.f2,&g_10[9].f2,(void*)0,&g_226.f2},{&g_226.f2,&g_226.f2,(void*)0,(void*)0,&g_10[9].f2},{(void*)0,(void*)0,&g_223.f2,&g_223.f2,&g_226.f2},{(void*)0,&l_932,&g_226.f2,&g_226.f2,&l_932},{&g_226.f2,(void*)0,&g_226.f2,(void*)0,(void*)0},{&g_223.f2,&g_226.f2,&g_223.f2,&g_226.f2,(void*)0},{&l_932,&g_226.f2,(void*)0,&g_223.f2,&l_932}},{{&g_223.f2,&g_226.f2,&g_10[9].f2,(void*)0,&g_226.f2},{&g_226.f2,&g_226.f2,(void*)0,(void*)0,&g_10[9].f2},{(void*)0,(void*)0,&g_223.f2,&g_223.f2,&g_226.f2},{(void*)0,&l_932,&g_226.f2,&g_226.f2,&l_932},{&g_226.f2,(void*)0,&g_226.f2,(void*)0,(void*)0},{&g_223.f2,&g_226.f2,&g_223.f2,&g_226.f2,(void*)0},{&l_932,&g_226.f2,(void*)0,&g_223.f2,&l_932}},{{&g_223.f2,&g_226.f2,&g_10[9].f2,(void*)0,&g_226.f2},{&g_226.f2,&g_226.f2,(void*)0,(void*)0,&g_10[9].f2},{(void*)0,(void*)0,&g_223.f2,&g_223.f2,&g_226.f2},{(void*)0,&l_932,&g_226.f2,&g_226.f2,&l_932},{&g_226.f2,(void*)0,&g_226.f2,(void*)0,(void*)0},{&g_223.f2,&g_226.f2,&g_223.f2,&g_226.f2,(void*)0},{&l_932,&g_226.f2,(void*)0,&g_223.f2,&l_932}},{{&g_223.f2,&g_226.f2,&g_10[9].f2,(void*)0,&g_226.f2},{&g_226.f2,&g_226.f2,(void*)0,(void*)0,&g_10[9].f2},{(void*)0,(void*)0,&g_223.f2,&g_223.f2,&g_226.f2},{(void*)0,&l_932,&g_226.f2,&g_226.f2,&l_932},{&g_226.f2,(void*)0,&g_226.f2,(void*)0,(void*)0},{&g_223.f2,&g_226.f2,&g_223.f2,&g_226.f2,(void*)0},{&l_932,&g_226.f2,(void*)0,&g_223.f2,&l_932}},{{&g_223.f2,&g_226.f2,&g_10[9].f2,(void*)0,&g_226.f2},{&g_226.f2,&g_226.f2,(void*)0,(void*)0,&g_10[9].f2},{(void*)0,(void*)0,&g_223.f2,&g_223.f2,&g_226.f2},{(void*)0,&l_932,(void*)0,(void*)0,(void*)0},{&g_223.f2,(void*)0,(void*)0,&g_226.f2,&l_967},{&g_223.f2,(void*)0,&l_932,(void*)0,&l_967},{&l_967,&g_226.f2,&g_226.f2,(void*)0,(void*)0}}}; + int32_t l_1010 = 0xE506438AL; + int32_t l_1011 = (-3L); + int32_t l_1012 = 0x265CF71AL; + int i, j, k; + for (i = 0; i < 1; i++) + { + for (j = 0; j < 1; j++) + { + for (k = 0; k < 7; k++) + l_989[i][j][k] = 0xDF33L; + } + } + (**l_948) = &l_791; + l_989[0][0][3]++; + (*l_969) |= (safe_lshift_func_uint8_t_u_u((((void*)0 != l_994) , (safe_unary_minus_func_uint32_t_u(((l_988[1][6] = (safe_lshift_func_int8_t_s_u(((void*)0 == &g_627), ((safe_lshift_func_uint16_t_u_u((safe_mod_func_uint16_t_u_u((safe_lshift_func_uint16_t_u_s((l_975 , (safe_lshift_func_int16_t_s_s(((*l_899) == l_1006), 7))), (((*g_931) = g_1007) == g_223.f3))), 0xDB6DL)), l_1008)) , l_974)))) , 4294967291UL)))), 7)); + l_1013++; + } + else + { /* block id: 437 */ + uint16_t *l_1025 = (void*)0; + int32_t l_1034 = (-1L); + int32_t l_1036 = 0xB9E319BAL; + int32_t l_1037 = 5L; + int32_t l_1039 = (-1L); + int32_t l_1040 = 0x5EEBA298L; + l_1016 = l_972; + (*l_968) ^= (safe_rshift_func_int8_t_s_s((+((safe_mod_func_int16_t_s_s((safe_div_func_int8_t_s_s(l_791, 0x24L)), (((l_1024 = l_1023) != (l_1025 = l_1025)) , (((safe_lshift_func_int8_t_s_u(((safe_div_func_uint64_t_u_u((safe_rshift_func_uint16_t_u_u((*l_971), ((*g_931) || (0x69EAL < (((*g_912) = (safe_sub_func_uint16_t_u_u(((g_226.f2 ^ (l_982 ^ l_988[3][6])) == (*g_318)), (*g_244)))) >= l_789))))), (*g_318))) == (*l_971)), 7)) & l_1034) , (-7L))))) , g_149)), 6)); + l_1044[0][3][5]++; + } + } + } + else + { /* block id: 446 */ + uint32_t l_1053 = 18446744073709551612UL; + const uint16_t ****l_1061 = (void*)0; + int32_t l_1089 = 0x58936FB3L; + uint8_t l_1099 = 0x88L; + int32_t l_1108[7] = {4L,0xBE5E93A0L,0xBE5E93A0L,4L,0xBE5E93A0L,0xBE5E93A0L,4L}; + int i; + for (l_792 = 0; (l_792 <= 3); l_792 += 1) + { /* block id: 449 */ + int32_t *l_1047 = (void*)0; + int32_t *l_1048 = &l_759; + int32_t *l_1049 = (void*)0; + int32_t *l_1050 = (void*)0; + int32_t *l_1051 = &l_981; + int32_t *l_1052[6] = {(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}; + uint32_t ***l_1059 = (void*)0; + uint32_t ****l_1058[6][9] = {{&l_1059,(void*)0,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059},{&l_1059,(void*)0,&l_1059,(void*)0,&l_1059,&l_1059,(void*)0,&l_1059,&l_1059},{&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,(void*)0},{&l_1059,&l_1059,(void*)0,&l_1059,&l_1059,&l_1059,(void*)0,&l_1059,&l_1059},{&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059},{(void*)0,(void*)0,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059,&l_1059}}; + uint32_t ***l_1060 = &l_908[8][1]; + union U1 l_1064[9] = {{0xCCDF0B70L},{0xCCDF0B70L},{0xCCDF0B70L},{0xCCDF0B70L},{0xCCDF0B70L},{0xCCDF0B70L},{0xCCDF0B70L},{0xCCDF0B70L},{0xCCDF0B70L}}; + union U0 **l_1076[7]; + uint32_t l_1077[10] = {18446744073709551615UL,0x091F9E54L,0xCE927A92L,0x091F9E54L,18446744073709551615UL,18446744073709551615UL,0x091F9E54L,0xCE927A92L,0x091F9E54L,18446744073709551615UL}; + union U2 l_1104[1] = {{1L}}; + int i, j; + for (i = 0; i < 7; i++) + l_1076[i] = &l_883; + l_1053++; + l_1067 ^= (((g_10[9].f4 & (safe_add_func_uint64_t_u_u(((l_1060 = &g_911) != &l_908[5][0]), (l_974 , ((void*)0 != l_1061))))) , l_1053) <= ((safe_sub_func_uint16_t_u_u(((l_1064[0] , (safe_mul_func_uint8_t_u_u(255UL, l_975))) || 0x62FFL), l_979)) , (*g_912))); + if ((((l_1067 , (((((((g_444--) <= (((*l_901) , ((*g_244) , ((l_976 < (g_627 , ((g_245 = (safe_rshift_func_int16_t_s_u((((safe_mul_func_uint32_t_u_u((g_1074[2] != (void*)0), (l_1076[4] == (((g_147 < g_231[2][3][1].f1) > g_101) , (void*)0)))) , l_791) >= l_1053), l_918[3]))) , 9L))) | l_976))) >= 0x0FL)) && (*l_1051)) || l_932) , l_1077[0]) & l_1053) , l_1013)) && (*l_1051)) && (**g_930))) + { /* block id: 455 */ + uint32_t *l_1086 = &l_1064[0].f0; + int16_t *l_1087 = &g_507; + int16_t *l_1088[8] = {(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}; + int32_t l_1091 = 0x536FF2CFL; + int i; + l_974 |= ((*l_1051) = ((safe_mod_func_int8_t_s_s((*l_1048), 8UL)) <= (safe_sub_func_int16_t_s_s(((l_1089 &= ((*l_1087) = (safe_rshift_func_uint16_t_u_u(((void*)0 == &g_911), (safe_mul_func_uint16_t_u_u(((&l_1008 != (l_1086 = &l_1013)) >= 0xC6D2L), ((-7L) == l_822[0][4]))))))) && 0x72AFL), l_857[5][1][3])))); + if (l_1090) + continue; + if (l_1091) + continue; + } + else + { /* block id: 463 */ + uint32_t l_1094 = 18446744073709551615UL; + int32_t l_1100 = (-7L); + l_1043[4][0] = (((((safe_sub_func_uint64_t_u_u((((0xC7L <= ((l_918[5] , (l_1094 = (*g_912))) > ((safe_add_func_uint64_t_u_u((safe_rshift_func_int8_t_s_u(l_1099, ((*l_875) = l_1100))), (~(l_1101 <= (safe_mul_func_uint16_t_u_u((l_1100 , ((((l_1104[0] , ((***l_948) > l_1099)) , l_1100) & l_983) <= (*g_912))), l_1100)))))) || l_857[1][1][0]))) == g_375) <= 0xECL), (*g_318))) , l_1089) ^ (**g_911)) != 0x48965DBB2790DDDDLL) | 1L); + } + for (l_1099 = 0; (l_1099 <= 4); l_1099 += 1) + { /* block id: 470 */ + int8_t l_1105 = 0xADL; + int32_t l_1106 = 0x413B3C1FL; + int32_t l_1107[10][4] = {{1L,(-6L),0x7FC6FB02L,0x7FC6FB02L},{0xAD222DD9L,0xAD222DD9L,1L,0x7FC6FB02L},{0xEEC01B30L,(-6L),0xEEC01B30L,1L},{0xEEC01B30L,1L,1L,0xEEC01B30L},{0xAD222DD9L,1L,0x7FC6FB02L,1L},{1L,(-6L),0x7FC6FB02L,0x7FC6FB02L},{0xAD222DD9L,0xAD222DD9L,1L,0x7FC6FB02L},{0xEEC01B30L,(-6L),0xEEC01B30L,1L},{0xEEC01B30L,1L,1L,0xEEC01B30L},{0xAD222DD9L,1L,0x7FC6FB02L,1L}}; + uint16_t l_1109 = 65534UL; + int i, j; + (*l_1051) |= l_1013; + l_1109++; + if (l_789) + break; + } + for (l_976 = 3; (l_976 >= 1); l_976 -= 1) + { /* block id: 477 */ + union U2 l_1112 = {0x95AB76F0L}; + (**l_948) = (void*)0; + return l_1112; + } + } + } + if (l_751) + break; + if ((((*l_876) = (safe_rshift_func_int16_t_s_s((safe_div_func_int32_t_s_s((safe_lshift_func_int8_t_s_s(((*g_318) , ((safe_mul_func_uint16_t_u_u((l_822[0][5] == ((l_983 <= l_759) > ((((safe_rshift_func_int16_t_s_s(0x99CFL, 1)) , (safe_rshift_func_uint8_t_u_u(l_1042, 5))) <= (((*l_1128) = ((*l_1125) = (void*)0)) == (void*)0)) < ((g_149 != l_1130) > l_943[0][6][1])))), 7L)) == 0x7FA5L)), l_857[3][1][2])), l_822[2][5])), 11))) | 0xFEL)) + { /* block id: 487 */ + int32_t *l_1131 = &l_982; + for (l_1038 = 0; l_1038 < 10; l_1038 += 1) + { + l_870[l_1038] = &l_871; + } + (*l_1131) |= (0xE835L >= 1L); + } + else + { /* block id: 490 */ + int32_t l_1132 = 3L; + const uint32_t l_1157 = 0xC3A60DA1L; + int8_t l_1158 = 1L; + int32_t l_1168 = 1L; + int32_t l_1169 = 8L; + int32_t l_1170 = 0xAC0D721EL; + int32_t l_1173 = 0xFDFA3AE3L; + int32_t l_1174[6] = {0x0CF5CB29L,0x0CF5CB29L,0x0CF5CB29L,0x0CF5CB29L,0x0CF5CB29L,0x0CF5CB29L}; + int32_t *l_1229 = &l_1182; + int32_t *l_1230 = &l_1185; + int32_t *l_1231[7]; + int i; + for (i = 0; i < 7; i++) + l_1231[i] = &l_1190; + for (l_979 = 5; (l_979 >= 0); l_979 -= 1) + { /* block id: 493 */ + uint8_t l_1135 = 8UL; + int32_t *l_1138 = &g_89; + int32_t l_1171 = (-3L); + int32_t l_1172 = 0x574353F2L; + int32_t l_1175 = 0x9B33C241L; + int32_t l_1176 = 0x272F75CEL; + int32_t l_1177 = 5L; + int32_t l_1179[3]; + union U1 l_1207 = {4294967295UL}; + int i; + for (i = 0; i < 3; i++) + l_1179[i] = 0L; + if (l_1132) + break; + (*l_1138) = ((0L > ((l_943[0][3][1] & (l_1132 ^ (l_1135 != ((safe_mul_func_uint16_t_u_u(l_1135, 65535UL)) ^ ((l_975 , 2UL) >= (0x64L & l_1135)))))) , l_1135)) && 0UL); + if (((**l_817) , (((safe_mul_func_int16_t_s_s((((+0L) & (safe_mod_func_int8_t_s_s((((*l_880) |= (safe_mul_func_int16_t_s_s(((((((((*l_1138) == (((*l_909)++) < (((*l_871) = l_1132) & (safe_div_func_uint64_t_u_u(((*l_1138) < (safe_lshift_func_int8_t_s_s((l_1132 | ((safe_add_func_int8_t_s_s(((((safe_mul_func_uint8_t_u_u((((l_1132 > l_974) ^ (safe_mod_func_uint64_t_u_u(((1UL > 0x8F25A903L) == (*g_931)), l_789))) , (*l_1138)), g_627)) == (*l_1138)) == (*l_1138)) , (*l_1138)), 1L)) & l_918[1])), 2))), (*g_318)))))) != (*g_318)) || l_1132) > (-1L)) || 8L) != l_1132) ^ l_1132), l_1157))) & (*g_931)), 0x0CL))) <= 0L), 0x96EEL)) != l_1158) , (*l_1138)))) + { /* block id: 499 */ + int32_t *l_1159 = &l_759; + int32_t *l_1160 = &l_980; + int32_t *l_1161 = &l_981; + int32_t *l_1162 = &g_92; + int32_t *l_1163 = &l_1041; + int32_t *l_1164 = (void*)0; + int32_t *l_1165 = &l_791; + int32_t *l_1166 = (void*)0; + int32_t *l_1167[4] = {&l_964,&l_964,&l_964,&l_964}; + int i; + g_1198[6][3]--; + (**l_948) = &l_976; + if (l_1158) + continue; + } + else + { /* block id: 503 */ + uint32_t l_1219 = 0x008FA38AL; + (*l_1138) = (((0xEFL < ((safe_div_func_uint64_t_u_u((safe_mul_func_int16_t_s_s(((*g_931) ^ ((~0x1F9CBF83EE15EE48LL) ^ ((((l_1207 , (*g_244)) < ((safe_add_func_uint64_t_u_u((safe_mul_func_uint8_t_u_u((l_1212[3][2][7] , l_1192[5][0]), (safe_add_func_uint32_t_u_u(((safe_sub_func_uint16_t_u_u((((safe_lshift_func_int16_t_s_s(((**l_817) , (((l_1219 == 65533UL) || 0xDF1FE933C61F5786LL) > 0x2F60BAB9L)), l_792)) < 7L) , l_1173), (-1L))) <= (-7L)), l_1174[5])))), (*l_1138))) > g_231[2][3][1].f1)) , 0UL) || 0x45C9L))), 0xB438L)), 0xD8DBB58FFCFC04ADLL)) & 1L)) >= (-7L)) | (*l_1138)); + } + for (l_1173 = 0; (l_1173 >= 0); l_1173 -= 1) + { /* block id: 508 */ + int32_t l_1226 = 0xE9D9050BL; + int16_t *l_1227 = &l_1101; + (*l_1138) = ((safe_sub_func_int16_t_s_s(((*l_1227) = ((((((*l_1138) > (((*g_604) = &p_21) == &p_21)) && g_814.f0) , 1L) != (((*g_912) = (safe_div_func_int64_t_s_s(l_1174[5], ((((void*)0 == &g_1075) , (*l_883)) , g_53[1])))) == l_1194)) > l_1226)), 0xCE39L)) ^ l_1226); + } + for (l_792 = 0; (l_792 <= 0); l_792 += 1) + { /* block id: 516 */ + uint32_t l_1228 = 3UL; + (*l_1138) |= l_1228; + } + } + l_1233++; + (**l_948) = l_1236[2][7][2]; + } + } + } + l_1241++; + for (g_706 = 2; (g_706 >= 0); g_706 -= 1) + { /* block id: 528 */ + int32_t l_1244 = 4L; + int32_t l_1245 = 0x5B87C714L; + int32_t l_1246[8][9][3] = {{{(-5L),0xB5ED473FL,0L},{1L,1L,0xF457B790L},{(-1L),1L,1L},{1L,0xA309F180L,0xFFF59FB6L},{(-5L),1L,0xFFF59FB6L},{0x10A1A9AFL,0xFFF59FB6L,1L},{5L,0L,0xF457B790L},{0xFFF59FB6L,0xFFF59FB6L,0L},{1L,1L,0x14D48AFEL}},{{1L,0x14D48AFEL,1L},{0L,(-1L),1L},{1L,0x10A1A9AFL,1L},{0xB5ED473FL,0xA309F180L,0xF457B790L},{5L,0xA309F180L,1L},{(-1L),0x10A1A9AFL,(-5L)},{0xFFF59FB6L,(-1L),(-1L)},{(-1L),0x14D48AFEL,0L},{5L,1L,0L}},{{0xB5ED473FL,0L,(-1L)},{1L,1L,(-5L)},{0L,0L,1L},{0x10A1A9AFL,1L,0xF457B790L},{0x10A1A9AFL,0x14D48AFEL,1L},{0L,(-1L),1L},{1L,0x10A1A9AFL,1L},{0xB5ED473FL,0xA309F180L,0xF457B790L},{5L,0xA309F180L,1L}},{{(-1L),0x10A1A9AFL,(-5L)},{0xFFF59FB6L,(-1L),(-1L)},{(-1L),0x14D48AFEL,0L},{5L,1L,0L},{0xB5ED473FL,0L,(-1L)},{1L,1L,(-5L)},{0L,0L,1L},{0x10A1A9AFL,1L,0xF457B790L},{0x10A1A9AFL,0x14D48AFEL,1L}},{{0L,(-1L),1L},{1L,0x10A1A9AFL,1L},{0xB5ED473FL,0xA309F180L,0xF457B790L},{5L,0xA309F180L,1L},{(-1L),0x10A1A9AFL,(-5L)},{0xFFF59FB6L,(-1L),(-1L)},{(-1L),0x14D48AFEL,0L},{5L,1L,0L},{0xB5ED473FL,0L,(-1L)}},{{1L,1L,(-5L)},{0L,0L,1L},{0x10A1A9AFL,1L,0xF457B790L},{0x10A1A9AFL,0x14D48AFEL,1L},{0L,(-1L),1L},{1L,0x10A1A9AFL,1L},{0xB5ED473FL,0xA309F180L,0xF457B790L},{5L,0xA309F180L,1L},{(-1L),0x10A1A9AFL,(-5L)}},{{0xFFF59FB6L,(-1L),(-1L)},{(-1L),0x14D48AFEL,0L},{5L,1L,0L},{0xB5ED473FL,0L,(-1L)},{1L,1L,(-5L)},{0L,0L,1L},{0x10A1A9AFL,1L,0xF457B790L},{0x10A1A9AFL,0x14D48AFEL,1L},{0L,(-1L),1L}},{{1L,0x10A1A9AFL,1L},{0xB5ED473FL,0xA309F180L,0xF457B790L},{5L,0xA309F180L,1L},{(-1L),0x10A1A9AFL,(-5L)},{0xFFF59FB6L,(-1L),(-1L)},{(-1L),0x14D48AFEL,0L},{5L,1L,0L},{0xB5ED473FL,0L,(-1L)},{1L,1L,(-5L)}}}; + uint32_t l_1247 = 0UL; + int16_t l_1250 = 0L; + uint32_t l_1253 = 5UL; + int32_t l_1257[9] = {(-7L),0x6AB92E35L,4L,4L,(-7L),4L,4L,(-7L),4L}; + int16_t l_1263[8][8] = {{0x20A9L,1L,0x20A9L,0x2CCCL,0x20A9L,1L,0x20A9L,0x2CCCL},{0x20A9L,1L,0x20A9L,0x2CCCL,0x20A9L,1L,0x20A9L,0x2CCCL},{0x20A9L,1L,0x20A9L,0x2CCCL,0x20A9L,1L,0x20A9L,0x2CCCL},{0x20A9L,1L,0x20A9L,0x2CCCL,0x20A9L,1L,0x20A9L,0x2CCCL},{0x20A9L,1L,0x20A9L,0x2CCCL,0x20A9L,1L,0x20A9L,0x2CCCL},{0x20A9L,1L,0x20A9L,0x2CCCL,0x20A9L,1L,0x20A9L,0x2CCCL},{0x20A9L,1L,0x20A9L,0x2CCCL,0x20A9L,1L,0x20A9L,0x2CCCL},{0x20A9L,1L,0x20A9L,0x2CCCL,0x20A9L,1L,0x20A9L,0x2CCCL}}; + union U0 *l_1291 = (void*)0; + int8_t l_1292 = 0xCBL; + union U2 ***l_1297 = &g_54; + uint32_t *****l_1338[6][9] = {{&l_1337,&l_1337,&l_1337,&l_1337,&l_1337,&l_1337,(void*)0,&l_1337,&l_1337},{&l_1337,&l_1337,&l_1337,&l_1337,&l_1337,&l_1337,&l_1337,&l_1337,&l_1337},{(void*)0,&l_1337,&l_1337,(void*)0,(void*)0,&l_1337,&l_1337,&l_1337,&l_1337},{(void*)0,&l_1337,&l_1337,&l_1337,&l_1337,(void*)0,(void*)0,&l_1337,&l_1337},{&l_1337,&l_1337,&l_1337,&l_1337,(void*)0,&l_1337,&l_1337,(void*)0,&l_1337},{&l_1337,&l_1337,&l_1337,&l_1337,&l_1337,(void*)0,&l_1337,&l_1337,&l_1337}}; + int i, j, k; + l_1247--; + ++l_1253; + } + return (*g_222); +} + + +/* ------------------------------------------ */ +/* + * reads : g_706 g_428 g_92 g_444 g_10.f4 g_89 g_111 g_149 g_53 + * writes: g_706 g_444 + */ +static int8_t func_26(const int64_t p_27, uint32_t p_28, uint64_t p_29, union U2 p_30) +{ /* block id: 322 */ + int64_t l_678[10] = {0x7DABD13DDE14C484LL,0x7DABD13DDE14C484LL,0x92E72AE3C392FA5ELL,0x7DABD13DDE14C484LL,0x7DABD13DDE14C484LL,0x92E72AE3C392FA5ELL,0x7DABD13DDE14C484LL,0x7DABD13DDE14C484LL,0x92E72AE3C392FA5ELL,0x7DABD13DDE14C484LL}; + int32_t *l_679 = &g_111[1][3]; + int32_t *l_680 = &g_111[1][3]; + int32_t *l_681 = &g_111[1][3]; + int32_t *l_682 = &g_89; + int32_t *l_683 = (void*)0; + int32_t *l_684 = &g_111[6][3]; + int32_t *l_685 = &g_111[1][3]; + int32_t *l_686 = &g_111[4][8]; + int32_t *l_687 = &g_89; + int32_t *l_688 = &g_92; + int32_t *l_689 = &g_89; + int32_t *l_690 = &g_111[7][0]; + int32_t l_691 = (-1L); + int32_t *l_692 = &g_92; + int32_t *l_693 = &l_691; + int32_t *l_694 = &g_111[1][3]; + int32_t *l_695 = (void*)0; + int32_t *l_696 = &g_111[1][3]; + int32_t l_697 = 0x8F752B8FL; + int32_t *l_698 = &g_111[2][4]; + int32_t *l_699[6][5][7] = {{{(void*)0,&l_691,&g_89,&g_111[1][1],(void*)0,&l_691,&g_89},{&l_691,(void*)0,&l_691,&g_89,&l_691,&g_89,&g_111[1][3]},{&g_111[1][5],&l_691,&g_89,&g_89,&g_111[0][3],&g_111[1][3],&l_697},{(void*)0,&l_691,&l_697,&l_697,&l_697,&l_691,&g_89},{&g_111[1][3],&g_89,&l_697,&g_111[1][3],&g_89,&l_691,&l_691}},{{&g_111[1][3],&g_92,&g_111[1][3],&g_111[1][3],&g_92,&g_111[1][3],&g_111[7][4]},{&g_111[1][1],&g_89,(void*)0,&g_92,(void*)0,&g_89,&g_111[7][8]},{&g_89,(void*)0,&l_691,&g_111[7][4],&g_111[1][1],&l_691,&g_89},{(void*)0,&g_111[1][3],(void*)0,&l_697,(void*)0,&l_691,&g_89},{&g_92,&l_691,(void*)0,&g_89,&g_111[1][3],&l_691,&g_89}},{{&l_697,&g_92,(void*)0,(void*)0,&g_111[1][3],&l_691,&l_691},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{&g_92,&g_111[1][3],&g_111[7][4],&l_697,(void*)0,&g_89,&g_89},{&l_691,&l_691,&g_89,&g_111[0][8],&l_697,&l_697,&g_111[7][4]},{&g_92,&l_697,&g_92,&g_92,&l_691,(void*)0,&g_89}},{{(void*)0,&l_691,&g_89,&l_697,&g_111[1][2],(void*)0,(void*)0},{&l_697,&g_89,&l_691,&l_697,(void*)0,&l_691,(void*)0},{&g_92,(void*)0,(void*)0,&g_92,&g_89,&g_89,&l_691},{(void*)0,&g_92,&g_111[1][1],&g_111[0][8],(void*)0,&l_697,&g_111[7][8]},{(void*)0,&g_89,&l_691,&l_697,&l_691,&g_89,&l_691}},{{(void*)0,&l_697,&g_111[1][5],(void*)0,(void*)0,&g_89,(void*)0},{&l_697,&l_697,&g_92,(void*)0,&g_89,&g_111[7][8],(void*)0},{&g_111[7][8],(void*)0,&g_92,&g_89,&g_89,&g_89,&g_89},{&g_111[1][5],&g_111[1][1],&g_111[1][5],&l_697,&g_111[0][8],&g_111[1][2],&g_111[7][4]},{&g_89,&g_111[0][8],&l_691,(void*)0,(void*)0,&g_92,&g_89}},{{&g_111[1][3],&l_697,&g_111[1][1],&l_691,&g_111[0][3],&g_111[1][2],(void*)0},{&l_691,&l_691,(void*)0,&g_92,&g_111[1][1],&g_89,&l_691},{&g_111[1][2],(void*)0,&l_691,&l_697,&g_111[1][3],&g_111[7][8],&g_89},{&g_111[0][8],(void*)0,&g_89,&g_89,&g_92,&g_89,&g_89},{&l_691,&l_691,&g_92,&g_111[1][2],&l_691,&g_89,(void*)0}}}; + int64_t l_700 = 1L; + int16_t l_701 = 8L; + int32_t l_702[1][6][7] = {{{0L,1L,0x18B116A3L,0L,0x18B116A3L,1L,0L},{8L,0xF5B73F85L,3L,0x8478EF1FL,0xF5B73F85L,0x8478EF1FL,3L},{0L,0L,0x04248741L,(-1L),(-5L),0x04248741L,(-5L)},{6L,3L,3L,6L,0x8478EF1FL,8L,6L},{(-1L),(-5L),0x18B116A3L,0x18B116A3L,(-5L),(-1L),1L},{0xFEB019D1L,3L,0xF5B73F85L,8L,8L,0xF5B73F85L,3L}}}; + int8_t l_703 = 5L; + int16_t l_704 = 0x19F2L; + int8_t l_705 = (-1L); + int32_t l_707 = 0xCB0D6A35L; + int32_t l_708 = 0xC949726BL; + int8_t l_709[10] = {0x4FL,0x87L,0x4FL,0x87L,0x4FL,0x87L,0x4FL,0x87L,0x4FL,0x87L}; + int64_t l_710 = (-1L); + uint32_t l_711 = 1UL; + uint16_t l_714 = 0xFD9EL; + int i, j, k; + l_711--; + l_714--; + for (g_706 = (-3); (g_706 > (-9)); g_706--) + { /* block id: 327 */ + union U0 *l_723 = &g_229[1][0][4]; + uint16_t *l_734 = &g_444; + uint32_t l_735 = 8UL; + uint64_t *l_736 = &g_223.f3; + uint64_t *l_737 = &g_10[9].f3; + uint64_t *l_738 = &g_223.f3; + uint64_t *l_739 = (void*)0; + uint64_t *l_740 = &g_223.f3; + uint64_t *l_741 = &g_223.f3; + uint64_t *l_742 = &g_223.f3; + uint64_t *l_743 = &g_10[9].f3; + uint64_t *l_744 = &g_223.f3; + int32_t l_745 = 0x1A8AE3E5L; + int32_t l_746[6] = {0x10D458ECL,0x5D95F8E7L,0x10D458ECL,0x10D458ECL,0x5D95F8E7L,0x10D458ECL}; + int i; + l_746[5] ^= (((safe_mul_func_int16_t_s_s((((safe_mul_func_int8_t_s_s(((p_30.f0 , l_723) != l_723), (0x10ED398AEA39893FLL < ((safe_mul_func_uint8_t_u_u(((safe_mul_func_int8_t_s_s((g_428[0][0][2] , (((*l_692) & (0xD0L < (safe_mod_func_uint32_t_u_u((safe_div_func_uint64_t_u_u((l_745 ^= (((safe_lshift_func_uint8_t_u_u((((*l_734) &= 6UL) > p_28), 7)) , (*l_693)) > l_735)), 0x48414B2CEFF21B1FLL)), 4UL)))) , g_10[9].f4)), 1UL)) || 18446744073709551615UL), g_89)) & p_30.f0)))) == p_29) >= 0xEEE62B04L), (*l_684))) < 4UL) , p_30.f2); + return g_149; + } + return g_53[2]; +} + + +/* ------------------------------------------ */ +/* + * reads : + * writes: + */ +static uint8_t func_33(union U2 * p_34, uint32_t p_35, union U0 p_36, uint8_t p_37, union U2 * p_38) +{ /* block id: 319 */ + int32_t *l_676 = (void*)0; + int32_t **l_677 = &l_676; + (*l_677) = l_676; + return p_37; +} + + +/* ------------------------------------------ */ +/* + * reads : g_231.f1 + * writes: + */ +static uint32_t func_40(union U2 * p_41, union U2 ** p_42, union U2 * p_43) +{ /* block id: 9 */ + uint64_t l_55 = 0x80453D47EBDCF28DLL; + uint8_t *l_86 = &g_2; + int32_t l_113[10] = {0xF63A0E5FL,(-1L),0xBFF73A4BL,(-1L),0xF63A0E5FL,0xF63A0E5FL,(-1L),0xBFF73A4BL,(-1L),0xF63A0E5FL}; + uint32_t l_152[1]; + int64_t *l_176[6][9][4]; + uint32_t l_196 = 0x2BEC0524L; + int32_t *l_204 = &l_113[4]; + union U2 l_217 = {7L}; + union U0 *l_228[10] = {&g_226,(void*)0,&g_226,(void*)0,&g_226,(void*)0,&g_226,(void*)0,&g_226,(void*)0}; + union U0 *l_230 = &g_231[2][3][1]; + const union U0 *l_254[10][2][7] = {{{&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1]},{&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}},{{&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1]},{&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}},{{&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1]},{&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}},{{&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1]},{&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}},{{&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1]},{&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}},{{&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1]},{&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}},{{&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1]},{&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}},{{&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1]},{&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}},{{&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1]},{&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}},{{&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1],&g_231[2][3][1]},{&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}}}; + uint8_t l_273 = 0x57L; + int64_t l_401 = 0xD80C2B337075255ALL; + int32_t l_412 = 0xFC3C03E8L; + const uint16_t *l_449 = (void*)0; + int32_t * const *l_468[3]; + int32_t * const **l_467 = &l_468[1]; + uint16_t l_530 = 0x994DL; + uint64_t l_546 = 0UL; + int32_t ***l_550 = (void*)0; + union U1 l_561 = {0x4A4BD98AL}; + uint64_t l_565 = 1UL; + int64_t l_630 = 0x4F210B20CA5980E1LL; + uint8_t l_639 = 251UL; + int16_t *l_640 = (void*)0; + int16_t *l_641 = (void*)0; + int16_t *l_642 = &g_507; + uint32_t l_643 = 0x1483458EL; + uint64_t l_644 = 0x4B3D7633749DC52FLL; + uint8_t l_645[10][1] = {{1UL},{0x76L},{1UL},{0x76L},{1UL},{0x76L},{1UL},{0x76L},{1UL},{0x76L}}; + uint64_t l_646[3][1]; + int32_t l_647 = 0x551C0AE0L; + uint32_t l_666 = 0UL; + uint8_t l_667[3]; + uint32_t *l_668 = (void*)0; + uint32_t *l_669 = &l_152[0]; + uint32_t l_670 = 9UL; + int16_t *l_671 = &g_75; + int32_t l_672 = 0x0446CA0FL; + int8_t l_673[3][6]; + int32_t l_674[9] = {(-1L),(-4L),(-1L),(-4L),(-1L),(-4L),(-1L),(-4L),(-1L)}; + int i, j, k; + for (i = 0; i < 1; i++) + l_152[i] = 0x975F8E47L; + for (i = 0; i < 6; i++) + { + for (j = 0; j < 9; j++) + { + for (k = 0; k < 4; k++) + l_176[i][j][k] = &g_149; + } + } + for (i = 0; i < 3; i++) + l_468[i] = &l_204; + for (i = 0; i < 3; i++) + { + for (j = 0; j < 1; j++) + l_646[i][j] = 5UL; + } + for (i = 0; i < 3; i++) + l_667[i] = 255UL; + for (i = 0; i < 3; i++) + { + for (j = 0; j < 6; j++) + l_673[i][j] = 0x09L; + } + return g_231[2][3][1].f1; +} + + +/* ------------------------------------------ */ +/* + * reads : + * writes: + */ +static int16_t func_66(uint8_t * const p_67, int64_t p_68, union U2 *** const p_69) +{ /* block id: 26 */ + return p_68; +} + + +/* ------------------------------------------ */ +/* + * reads : g_93 + * writes: g_93 + */ +static uint8_t * func_70(int64_t p_71, int32_t p_72, uint8_t * p_73) +{ /* block id: 23 */ + int32_t *l_87 = (void*)0; + int32_t *l_88 = &g_89; + int32_t *l_90 = &g_89; + int32_t *l_91[7]; + uint8_t *l_96 = &g_53[4]; + int i; + for (i = 0; i < 7; i++) + l_91[i] = &g_89; + ++g_93; + return l_96; +} + + + + +/* ---------------------------------------- */ +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(); + transparent_crc(g_2, "g_2", print_hash_value); + for (i = 0; i < 10; i++) + { + transparent_crc(g_10[i].f0, "g_10[i].f0", print_hash_value); + transparent_crc(g_10[i].f1, "g_10[i].f1", print_hash_value); + transparent_crc(g_10[i].f2, "g_10[i].f2", print_hash_value); + transparent_crc(g_10[i].f4, "g_10[i].f4", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_49, "g_49", print_hash_value); + for (i = 0; i < 6; i++) + { + transparent_crc(g_53[i], "g_53[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_75, "g_75", print_hash_value); + transparent_crc(g_89, "g_89", print_hash_value); + transparent_crc(g_92, "g_92", print_hash_value); + transparent_crc(g_93, "g_93", print_hash_value); + transparent_crc(g_101, "g_101", print_hash_value); + for (i = 0; i < 9; i++) + { + for (j = 0; j < 9; j++) + { + transparent_crc(g_111[i][j], "g_111[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_147, "g_147", print_hash_value); + transparent_crc(g_149, "g_149", print_hash_value); + transparent_crc(g_223.f0, "g_223.f0", print_hash_value); + transparent_crc(g_223.f1, "g_223.f1", print_hash_value); + transparent_crc(g_223.f2, "g_223.f2", print_hash_value); + transparent_crc(g_223.f4, "g_223.f4", print_hash_value); + transparent_crc(g_226.f0, "g_226.f0", print_hash_value); + transparent_crc(g_226.f1, "g_226.f1", print_hash_value); + for (i = 0; i < 3; i++) + { + for (j = 0; j < 1; j++) + { + for (k = 0; k < 5; k++) + { + transparent_crc(g_229[i][j][k].f0, "g_229[i][j][k].f0", print_hash_value); + transparent_crc(g_229[i][j][k].f1, "g_229[i][j][k].f1", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + for (i = 0; i < 6; i++) + { + for (j = 0; j < 9; j++) + { + for (k = 0; k < 4; k++) + { + transparent_crc(g_231[i][j][k].f1, "g_231[i][j][k].f1", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + transparent_crc(g_245, "g_245", print_hash_value); + transparent_crc(g_255.f0, "g_255.f0", print_hash_value); + transparent_crc(g_255.f1, "g_255.f1", print_hash_value); + transparent_crc(g_319, "g_319", print_hash_value); + transparent_crc(g_375, "g_375", print_hash_value); + for (i = 0; i < 8; i++) + { + for (j = 0; j < 1; j++) + { + for (k = 0; k < 4; k++) + { + transparent_crc(g_428[i][j][k].f0, "g_428[i][j][k].f0", print_hash_value); + transparent_crc(g_428[i][j][k].f1, "g_428[i][j][k].f1", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + transparent_crc(g_444, "g_444", print_hash_value); + transparent_crc(g_479, "g_479", print_hash_value); + transparent_crc(g_507, "g_507", print_hash_value); + transparent_crc(g_627, "g_627", print_hash_value); + transparent_crc(g_706, "g_706", print_hash_value); + transparent_crc(g_814.f0, "g_814.f0", print_hash_value); + transparent_crc(g_814.f1, "g_814.f1", print_hash_value); + transparent_crc(g_814.f2, "g_814.f2", print_hash_value); + transparent_crc(g_814.f4, "g_814.f4", print_hash_value); + transparent_crc(g_1007, "g_1007", print_hash_value); + transparent_crc(g_1178, "g_1178", print_hash_value); + for (i = 0; i < 10; i++) + { + for (j = 0; j < 6; j++) + { + transparent_crc(g_1198[i][j], "g_1198[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_1232, "g_1232", print_hash_value); + for (i = 0; i < 3; i++) + { + for (j = 0; j < 1; j++) + { + for (k = 0; k < 5; k++) + { + transparent_crc(g_1399[i][j][k], "g_1399[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++) + { + transparent_crc(g_1574[i].f0, "g_1574[i].f0", print_hash_value); + transparent_crc(g_1574[i].f1, "g_1574[i].f1", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_1582, "g_1582", print_hash_value); + transparent_crc(g_1693, "g_1693", print_hash_value); + transparent_crc(g_1695, "g_1695", print_hash_value); + transparent_crc(g_1743, "g_1743", print_hash_value); + transparent_crc(g_1771, "g_1771", print_hash_value); + for (i = 0; i < 2; i++) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < 3; k++) + { + transparent_crc(g_1864[i][j][k], "g_1864[i][j][k]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + transparent_crc(g_2120, "g_2120", print_hash_value); + platform_main_end(crc32_context ^ 0xFFFFFFFFUL, print_hash_value); + return 0; +} + +/************************ statistics ************************* +XXX max struct depth: 0 +breakdown: + depth: 0, occurrence: 713 +XXX total union variables: 42 + +XXX non-zero bitfields defined in structs: 1 +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: 32 +breakdown: + indirect level: 0, occurrence: 20 + indirect level: 1, occurrence: 6 + indirect level: 2, occurrence: 3 + indirect level: 3, occurrence: 3 +XXX full-bitfields structs in the program: 0 +breakdown: +XXX times a bitfields struct's address is taken: 14 +XXX times a bitfields struct on LHS: 0 +XXX times a bitfields struct on RHS: 30 +XXX times a single bitfield on LHS: 14 +XXX times a single bitfield on RHS: 16 + +XXX max expression depth: 42 +breakdown: + depth: 1, occurrence: 160 + depth: 2, occurrence: 29 + depth: 3, occurrence: 2 + depth: 4, occurrence: 3 + depth: 5, occurrence: 1 + depth: 6, occurrence: 2 + depth: 7, occurrence: 1 + depth: 9, occurrence: 1 + depth: 10, occurrence: 2 + depth: 12, occurrence: 1 + depth: 14, occurrence: 1 + depth: 15, occurrence: 1 + depth: 16, occurrence: 1 + depth: 17, occurrence: 3 + depth: 18, occurrence: 2 + depth: 19, occurrence: 1 + depth: 20, occurrence: 2 + depth: 22, occurrence: 1 + depth: 23, occurrence: 2 + depth: 24, occurrence: 2 + depth: 25, occurrence: 1 + depth: 26, occurrence: 2 + depth: 27, occurrence: 3 + depth: 28, occurrence: 1 + depth: 29, occurrence: 2 + depth: 30, occurrence: 1 + depth: 34, occurrence: 1 + depth: 35, occurrence: 1 + depth: 36, occurrence: 1 + depth: 38, occurrence: 1 + depth: 42, occurrence: 1 + +XXX total number of pointers: 537 + +XXX times a variable address is taken: 1354 +XXX times a pointer is dereferenced on RHS: 255 +breakdown: + depth: 1, occurrence: 229 + depth: 2, occurrence: 25 + depth: 3, occurrence: 1 +XXX times a pointer is dereferenced on LHS: 245 +breakdown: + depth: 1, occurrence: 228 + depth: 2, occurrence: 17 +XXX times a pointer is compared with null: 50 +XXX times a pointer is compared with address of another variable: 8 +XXX times a pointer is compared with another pointer: 10 +XXX times a pointer is qualified to be dereferenced: 13484 + +XXX max dereference level: 5 +breakdown: + level: 0, occurrence: 0 + level: 1, occurrence: 1642 + level: 2, occurrence: 237 + level: 3, occurrence: 148 + level: 4, occurrence: 45 + level: 5, occurrence: 1 +XXX number of pointers point to pointers: 186 +XXX number of pointers point to scalars: 314 +XXX number of pointers point to structs: 0 +XXX percent of pointers has null in alias set: 31.3 +XXX average alias set size: 1.5 + +XXX times a non-volatile is read: 1761 +XXX times a non-volatile is write: 847 +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: 10 + +XXX stmts: 154 +XXX max block depth: 5 +breakdown: + depth: 0, occurrence: 24 + depth: 1, occurrence: 26 + depth: 2, occurrence: 22 + depth: 3, occurrence: 27 + depth: 4, occurrence: 21 + depth: 5, occurrence: 34 + +XXX percentage a fresh-made variable is used: 14.7 +XXX percentage an existing variable is used: 85.3 +FYI: the random generator makes assumptions about the integer size. See platform.info for more details. +********************* end of statistics **********************/ + diff --git a/tests/fuzz/15.c.txt b/tests/fuzz/15.c.txt new file mode 100644 index 0000000000000..42eb1e0fb1d1b --- /dev/null +++ b/tests/fuzz/15.c.txt @@ -0,0 +1 @@ +checksum = B1ED5468 From 34930dcad04e568406ac461355d76e8a9ea381fd Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 25 Feb 2014 16:46:40 -0800 Subject: [PATCH 06/19] fix i386 target usage and asm2.test_cube2hash --- tools/shared.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/shared.py b/tools/shared.py index cb6c840231098..b7a186fc6ed16 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -646,7 +646,6 @@ def get_llvm_target(): if LLVM_TARGET != 'asmjs-unknown-emscripten': COMPILER_OPTS += ['-fno-math-errno'] COMPILER_STANDARDIZATION_OPTS += ['-D__IEEE_LITTLE_ENDIAN'] -if LLVM_TARGET == 'le32-unknown-nacl': COMPILER_OPTS += ['-DEMSCRIPTEN', '-D__EMSCRIPTEN__', '-fno-math-errno', '-U__native_client__', '-U__pnacl__', '-U__ELF__'] From da9f5bf26ad3476cebde550f5b1c2c5dca40ac58 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 25 Feb 2014 16:49:05 -0800 Subject: [PATCH 07/19] test multiple chunk sizes in cube2hash test --- tests/test_core.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/tests/test_core.py b/tests/test_core.py index 7d6199ffab5bd..015f65bfb5a45 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -530,18 +530,21 @@ def test_cube2hash(self): os.environ['EMCC_FAST_COMPILER'] = "0" try: old_chunk_size = os.environ.get('EMSCRIPT_MAX_CHUNK_SIZE') or '' - os.environ['EMSCRIPT_MAX_CHUNK_SIZE'] = '1' # test splitting out each function to a chunk in emscripten.py (21 functions here) - - # A good test of i64 math - if Settings.USE_TYPED_ARRAYS != 2: return self.skip('requires ta2 C-style memory aliasing') - self.do_run('', 'Usage: hashstring ', - libraries=self.get_library('cube2hash', ['cube2hash.bc'], configure=None, cache_name_extra=str(x86)), - includes=[path_from_root('tests', 'cube2hash')]) - - for text, output in [('fleefl', '892BDB6FD3F62E863D63DA55851700FDE3ACF30204798CE9'), - ('fleefl2', 'AA2CC5F96FC9D540CA24FDAF1F71E2942753DB83E8A81B61'), - ('64bitisslow', '64D8470573635EC354FEE7B7F87C566FCAF1EFB491041670')]: - self.do_run('', 'hash value: ' + output, [text], no_build=True) + + for chunk_size in ['1', old_chunk_size]: # test splitting out each function to a chunk in emscripten.py (21 functions here) + print ' chunks', chunk_size + os.environ['EMSCRIPT_MAX_CHUNK_SIZE'] = chunk_size + + # A good test of i64 math + if Settings.USE_TYPED_ARRAYS != 2: return self.skip('requires ta2 C-style memory aliasing') + self.do_run('', 'Usage: hashstring ', + libraries=self.get_library('cube2hash', ['cube2hash.bc'], configure=None, cache_name_extra=str(x86)), + includes=[path_from_root('tests', 'cube2hash')]) + + for text, output in [('fleefl', '892BDB6FD3F62E863D63DA55851700FDE3ACF30204798CE9'), + ('fleefl2', 'AA2CC5F96FC9D540CA24FDAF1F71E2942753DB83E8A81B61'), + ('64bitisslow', '64D8470573635EC354FEE7B7F87C566FCAF1EFB491041670')]: + self.do_run('', 'hash value: ' + output, [text], no_build=True) finally: os.environ['EMSCRIPT_MAX_CHUNK_SIZE'] = old_chunk_size finally: From 3e489d4ba4aa70907f0cffb54864814fb873208e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 25 Feb 2014 20:23:56 -0800 Subject: [PATCH 08/19] run a sanity check after clearing the cache --- emcc | 1 + tests/test_sanity.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/emcc b/emcc index b8ccbdcfe54c1..1125a639da3ee 100755 --- a/emcc +++ b/emcc @@ -940,6 +940,7 @@ try: newargs[i] = '' logging.warning('clearing cache') shared.Cache.erase() + shared.check_sanity(force=True) # this is a good time for a sanity check sys.exit(0) elif newargs[i] == '--save-bc': check_bad_eq(newargs[i]) diff --git a/tests/test_sanity.py b/tests/test_sanity.py index 07582d28085f2..25858a8bf82b4 100644 --- a/tests/test_sanity.py +++ b/tests/test_sanity.py @@ -15,6 +15,8 @@ def wipe(): def mtime(filename): return os.stat(filename).st_mtime +SANITY_MESSAGE = 'Emscripten: Running sanity checks' + class sanity(RunnerCore): @classmethod def setUpClass(self): @@ -279,7 +281,6 @@ def test_node(self): del os.environ['EM_IGNORE_SANITY'] def test_emcc(self): - SANITY_MESSAGE = 'Emscripten: Running sanity checks' SANITY_FAIL_MESSAGE = 'sanity check failed to run' # emcc should check sanity if no ${EM_CONFIG}_sanity @@ -436,6 +437,7 @@ def ensure_cache(): output = self.do([PYTHON, EMCC, '--clear-cache']) assert ERASING_MESSAGE in output assert not os.path.exists(EMCC_CACHE) + assert SANITY_MESSAGE in output # Changing LLVM_ROOT, even without altering .emscripten, clears the cache ensure_cache() From fee89ee4a91f0d1eed465ca785b5353f02913ab4 Mon Sep 17 00:00:00 2001 From: Ryan Kelly Date: Tue, 25 Feb 2014 17:15:58 +1100 Subject: [PATCH 09/19] Ensure that fileno() returns -1 when given an invalid file pointer. --- src/library.js | 4 +++- tests/test_core.py | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/library.js b/src/library.js index 5df5ff206b21d..b9571a73684a2 100644 --- a/src/library.js +++ b/src/library.js @@ -2420,7 +2420,9 @@ LibraryManager.library = { fileno: function(stream) { // int fileno(FILE *stream); // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html - return FS.getStreamFromPtr(stream).fd; + stream = FS.getStreamFromPtr(stream); + if (!stream) return -1; + return stream.fd; }, ftrylockfile: function() { // int ftrylockfile(FILE *file); diff --git a/tests/test_core.py b/tests/test_core.py index 19bb9ca1dcdcd..c40d73f44fe02 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -4058,6 +4058,28 @@ def test_fscanf(self): self.emcc_args += ['--embed-file', 'three_numbers.txt'] self.do_run(src, 'match = 3\nx = -1.0, y = 0.1, z = -0.1\n') + def test_fileno(self): + if self.emcc_args is None: return self.skip('requires emcc') + open(os.path.join(self.get_dir(), 'empty.txt'), 'w').write('') + src = r''' + #include + #include + int main() + { + FILE* fp = fopen("empty.txt", "r"); + if (fp) { + printf("%d\n", fp); + printf("%d\n", fileno(fp)); + printf("%d\n", fileno((FILE*)42)); // nonexistent stream + } else { + printf("failed to open empty.txt\n"); + } + return 0; + } + ''' + self.emcc_args += ['--embed-file', 'empty.txt'] + self.do_run(src, '4\n3\n-1\n') + def test_readdir(self): src = open(path_from_root('tests', 'dirent', 'test_readdir.c'), 'r').read() self.do_run(src, 'success', force_c=True) From 52e38c266a9fd5726533adc1cc73e201cf69bcd1 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 25 Feb 2014 21:45:44 -0800 Subject: [PATCH 10/19] check sanity on emcc -v --- emcc | 1 + tests/test_sanity.py | 3 +++ 2 files changed, 4 insertions(+) diff --git a/emcc b/emcc index 1125a639da3ee..91da32f38e233 100755 --- a/emcc +++ b/emcc @@ -918,6 +918,7 @@ try: shared.set_logging() logging.debug('invocation: ' + ' '.join(sys.argv)) shared.apply_configuration() # reset config to pick up change + shared.check_sanity(force=True) newargs[i] = '' elif newargs[i].startswith('--shell-file'): check_bad_eq(newargs[i]) diff --git a/tests/test_sanity.py b/tests/test_sanity.py index 25858a8bf82b4..741bb7483f809 100644 --- a/tests/test_sanity.py +++ b/tests/test_sanity.py @@ -319,6 +319,9 @@ def test_emcc(self): output = self.check_working(EMCC) self.assertNotContained(SANITY_MESSAGE, output) + # also with -v + output = self.check_working([EMCC, '-v', path_from_root('tests', 'hello_world.c')], SANITY_MESSAGE) + # Make sure the test runner didn't do anything to the setup output = self.check_working(EMCC) self.assertNotContained(SANITY_MESSAGE, output) From e2d05d569d7848d15ddd956e5c456d81f7bf9292 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 25 Feb 2014 21:48:03 -0800 Subject: [PATCH 11/19] run sanity checks on emcc -v even without inputs --- emcc | 1 + tests/test_sanity.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/emcc b/emcc index 91da32f38e233..8d84007458d47 100755 --- a/emcc +++ b/emcc @@ -528,6 +528,7 @@ There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR P elif len(sys.argv) == 2 and sys.argv[1] == '-v': # -v with no inputs print 'emcc (Emscripten GCC-like replacement + linker emulating GNU ld ) %s' % shared.EMSCRIPTEN_VERSION + shared.check_sanity(force=True) exit(subprocess.call([shared.CLANG, '-v'])) def is_minus_s_for_emcc(newargs, i): diff --git a/tests/test_sanity.py b/tests/test_sanity.py index 741bb7483f809..f78ff1c51a233 100644 --- a/tests/test_sanity.py +++ b/tests/test_sanity.py @@ -319,7 +319,8 @@ def test_emcc(self): output = self.check_working(EMCC) self.assertNotContained(SANITY_MESSAGE, output) - # also with -v + # also with -v, with or without inputs + output = self.check_working([EMCC, '-v'], SANITY_MESSAGE) output = self.check_working([EMCC, '-v', path_from_root('tests', 'hello_world.c')], SANITY_MESSAGE) # Make sure the test runner didn't do anything to the setup From 793eb176a0c777d91941cb17386de0f5da981bac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Wed, 26 Feb 2014 12:05:13 +0200 Subject: [PATCH 12/19] Add new fields to EmscriptenFullscreenChangeEvent structure that report the new pixel sizes of the fullscreen element, as well as the whole screen size. These can be used to read and adjust the rendering canvas size appropriately when transitioning between fullscreen modes. Thanks to Joel Croteau for the suggestion at https://groups.google.com/forum/#!topic/emscripten-discuss/qaTrOXWv1Oc . Bump version to 1.12.3 to update the cache after change to struct_info.json. --- src/library_html5.js | 18 ++++- src/struct_info.json | 6 +- system/include/emscripten/html5.h | 7 ++ tests/test_browser.py | 3 + tests/test_html5.c | 4 +- tests/test_html5_fullscreen.c | 107 ++++++++++++++++++++++++++++++ tools/shared.py | 2 +- 7 files changed, 141 insertions(+), 6 deletions(-) create mode 100644 tests/test_html5_fullscreen.c diff --git a/src/library_html5.js b/src/library_html5.js index 63a4dff771c7d..b17a0d4d75ace 100644 --- a/src/library_html5.js +++ b/src/library_html5.js @@ -13,6 +13,10 @@ var LibraryJSEvents = { visibilityChangeEvent: 0, touchEvent: 0, + // When we transition from fullscreen to windowed mode, we remember here the element that was just in fullscreen mode + // so that we can report information about that element in the event message. + previousFullscreenElement: null, + // When the C runtime exits via exit(), we unregister all event handlers added by this library to be nice and clean. // Track in this field whether we have yet registered that __ATEXIT__ handler. removeEventListenersRegistered: false, @@ -484,10 +488,20 @@ var LibraryJSEvents = { var isFullscreen = !!fullscreenElement; {{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.isFullscreen, 'isFullscreen', 'i32') }}}; {{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.fullscreenEnabled, 'JSEvents.fullscreenEnabled()', 'i32') }}}; - var nodeName = JSEvents.getNodeNameForTarget(fullscreenElement); - var id = (fullscreenElement && fullscreenElement.id) ? fullscreenElement.id : ''; + // If transitioning to fullscreen, report info about the element that is now fullscreen. + // If transitioning to windowed mode, report info about the element that just was fullscreen. + var reportedElement = isFullscreen ? fullscreenElement : JSEvents.previousFullscreenElement; + var nodeName = JSEvents.getNodeNameForTarget(reportedElement); + var id = (reportedElement && reportedElement.id) ? reportedElement.id : ''; writeStringToMemory(nodeName, eventStruct + {{{ C_STRUCTS.EmscriptenFullscreenChangeEvent.nodeName }}} ); writeStringToMemory(id, eventStruct + {{{ C_STRUCTS.EmscriptenFullscreenChangeEvent.id }}} ); + {{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.elementWidth, 'reportedElement ? reportedElement.clientWidth : 0', 'i32') }}}; + {{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.elementHeight, 'reportedElement ? reportedElement.clientHeight : 0', 'i32') }}}; + {{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.screenWidth, 'screen.width', 'i32') }}}; + {{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.screenHeight, 'screen.height', 'i32') }}}; + if (isFullscreen) { + JSEvents.previousFullscreenElement = fullscreenElement; + } }, registerFullscreenChangeEventCallback: function(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) { diff --git a/src/struct_info.json b/src/struct_info.json index 2aeffc9ce8439..2a2b4c641dc73 100644 --- a/src/struct_info.json +++ b/src/struct_info.json @@ -1207,7 +1207,11 @@ "isFullscreen", "fullscreenEnabled", "nodeName", - "id" + "id", + "elementWidth", + "elementHeight", + "screenWidth", + "screenHeight" ], "EmscriptenPointerlockChangeEvent": [ "isActive", diff --git a/system/include/emscripten/html5.h b/system/include/emscripten/html5.h index 06c647bfd757e..6109d87f335ce 100644 --- a/system/include/emscripten/html5.h +++ b/system/include/emscripten/html5.h @@ -388,9 +388,16 @@ typedef struct EmscriptenFullscreenChangeEvent { // Specifies if the current page has the ability to display elements fullscreen. EM_BOOL fullscreenEnabled; // The nodeName of the target HTML Element that is in full screen mode. See https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeName + // If isFullscreen is false, then nodeName, id and elementWidth/Height specify information about the element that just exited fullscreen mode. EM_UTF8 nodeName[128]; // The HTML Element ID of the target HTML element that is in full screen mode. EM_UTF8 id[128]; + // The new pixel size of the element that changed fullscreen status. + int elementWidth; + int elementHeight; + // The size of the whole screen, in pixels. + int screenWidth; + int screenHeight; } EmscriptenFullscreenChangeEvent; /* diff --git a/tests/test_browser.py b/tests/test_browser.py index f2e17ea078369..62d3f257b65eb 100644 --- a/tests/test_browser.py +++ b/tests/test_browser.py @@ -1846,6 +1846,9 @@ def test_doublestart_bug(self): def test_html5(self): self.btest(path_from_root('tests', 'test_html5.c'), expected='0') + def test_html5_fullscreen(self): + self.btest(path_from_root('tests', 'test_html5_fullscreen.c'), expected='0') + def test_codemods(self): for opt_level in [0, 2]: print 'opt level', opt_level diff --git a/tests/test_html5.c b/tests/test_html5.c index 77ddea98a6996..fec46035cb7d5 100644 --- a/tests/test_html5.c +++ b/tests/test_html5.c @@ -145,8 +145,8 @@ EM_BOOL orientationchange_callback(int eventType, const EmscriptenOrientationCha EM_BOOL fullscreenchange_callback(int eventType, const EmscriptenFullscreenChangeEvent *e, void *userData) { - printf("%s, isFullscreen: %d, fullscreenEnabled: %d, fs element nodeName: \"%s\", fs element id: \"%s\"\n", - emscripten_event_type_to_string(eventType), e->isFullscreen, e->fullscreenEnabled, e->nodeName, e->id); + printf("%s, isFullscreen: %d, fullscreenEnabled: %d, fs element nodeName: \"%s\", fs element id: \"%s\". New size: %dx%d pixels. Screen size: %dx%d pixels.\n", + emscripten_event_type_to_string(eventType), e->isFullscreen, e->fullscreenEnabled, e->nodeName, e->id, e->elementWidth, e->elementHeight, e->screenWidth, e->screenHeight); return 0; } diff --git a/tests/test_html5_fullscreen.c b/tests/test_html5_fullscreen.c new file mode 100644 index 0000000000000..9a284b093cb24 --- /dev/null +++ b/tests/test_html5_fullscreen.c @@ -0,0 +1,107 @@ +#include +#include +#include +#include + +#ifdef REPORT_RESULT +void report_result(int result) +{ + if (result == 0) { + printf("Test successful!\n"); + } else { + printf("Test failed!\n"); + } + REPORT_RESULT(); +} +#endif + +static inline const char *emscripten_event_type_to_string(int eventType) { + const char *events[] = { "(invalid)", "(none)", "keypress", "keydown", "keyup", "click", "mousedown", "mouseup", "dblclick", "mousemove", "wheel", "resize", + "scroll", "blur", "focus", "focusin", "focusout", "deviceorientation", "devicemotion", "orientationchange", "fullscreenchange", "pointerlockchange", + "visibilitychange", "touchstart", "touchend", "touchmove", "touchcancel", "gamepadconnected", "gamepaddisconnected", "beforeunload", + "batterychargingchange", "batterylevelchange", "webglcontextlost", "webglcontextrestored", "(invalid)" }; + ++eventType; + if (eventType < 0) eventType = 0; + if (eventType >= sizeof(events)/sizeof(events[0])) eventType = sizeof(events)/sizeof(events[0])-1; + return events[eventType]; +} + +const char *emscripten_result_to_string(EMSCRIPTEN_RESULT result) { + if (result == EMSCRIPTEN_RESULT_SUCCESS) return "EMSCRIPTEN_RESULT_SUCCESS"; + if (result == EMSCRIPTEN_RESULT_DEFERRED) return "EMSCRIPTEN_RESULT_DEFERRED"; + if (result == EMSCRIPTEN_RESULT_NOT_SUPPORTED) return "EMSCRIPTEN_RESULT_NOT_SUPPORTED"; + if (result == EMSCRIPTEN_RESULT_FAILED_NOT_DEFERRED) return "EMSCRIPTEN_RESULT_FAILED_NOT_DEFERRED"; + if (result == EMSCRIPTEN_RESULT_INVALID_TARGET) return "EMSCRIPTEN_RESULT_INVALID_TARGET"; + if (result == EMSCRIPTEN_RESULT_UNKNOWN_TARGET) return "EMSCRIPTEN_RESULT_UNKNOWN_TARGET"; + if (result == EMSCRIPTEN_RESULT_INVALID_PARAM) return "EMSCRIPTEN_RESULT_INVALID_PARAM"; + if (result == EMSCRIPTEN_RESULT_FAILED) return "EMSCRIPTEN_RESULT_FAILED"; + if (result == EMSCRIPTEN_RESULT_NO_DATA) return "EMSCRIPTEN_RESULT_NO_DATA"; + return "Unknown EMSCRIPTEN_RESULT!"; +} + +#define TEST_RESULT(x) if (ret != EMSCRIPTEN_RESULT_SUCCESS) printf("%s returned %s.\n", #x, emscripten_result_to_string(ret)); + +// The event handler functions can return 1 to suppress the event and disable the default action. That calls event.preventDefault(); +// Returning 0 signals that the event was not consumed by the code, and will allow the event to pass on and bubble up normally. +EM_BOOL key_callback(int eventType, const EmscriptenKeyboardEvent *e, void *userData) +{ + if (eventType == EMSCRIPTEN_EVENT_KEYPRESS && (!strcmp(e->key, "f") || e->which == 102)) { + EmscriptenFullscreenChangeEvent fsce; + EMSCRIPTEN_RESULT ret = emscripten_get_fullscreen_status(&fsce); + TEST_RESULT(emscripten_get_fullscreen_status); + if (!fsce.isFullscreen) { + printf("Requesting fullscreen..\n"); + ret = emscripten_request_fullscreen(0, 1); + TEST_RESULT(emscripten_request_fullscreen); + } else { + printf("Exiting fullscreen..\n"); + ret = emscripten_exit_fullscreen(); + TEST_RESULT(emscripten_exit_fullscreen); + ret = emscripten_get_fullscreen_status(&fsce); + TEST_RESULT(emscripten_get_fullscreen_status); + if (fsce.isFullscreen) { + fprintf(stderr, "Fullscreen exit did not work!\n"); + } + } + } + + return 0; +} + +int callCount = 0; + +EM_BOOL fullscreenchange_callback(int eventType, const EmscriptenFullscreenChangeEvent *e, void *userData) +{ + printf("%s, isFullscreen: %d, fullscreenEnabled: %d, fs element nodeName: \"%s\", fs element id: \"%s\". New size: %dx%d pixels. Screen size: %dx%d pixels.\n", + emscripten_event_type_to_string(eventType), e->isFullscreen, e->fullscreenEnabled, e->nodeName, e->id, e->elementWidth, e->elementHeight, e->screenWidth, e->screenHeight); + + ++callCount; + if (callCount == 1) { // Transitioned to fullscreen. + if (!e->isFullscreen) { + report_result(1); + } + } else if (callCount == 2) { // Transitioned to windowed, we must be back to the default pixel size 300x150. + if (e->isFullscreen || e->elementWidth != 300 || e->elementHeight != 150) { + report_result(1); + } else { + report_result(0); + } + } + return 0; +} + +int main() +{ + EMSCRIPTEN_RESULT ret = emscripten_set_keypress_callback(0, 0, 1, key_callback); + TEST_RESULT(emscripten_set_keypress_callback); + + ret = emscripten_set_fullscreenchange_callback(0, 0, 1, fullscreenchange_callback); + TEST_RESULT(emscripten_set_fullscreenchange_callback); + + printf("To finish this test, press f to enter fullscreen mode, and then exit it.\n"); + + /* For the events to function, one must either call emscripten_set_main_loop or enable Module.noExitRuntime by some other means. + Otherwise the application will exit after leaving main(), and the atexit handlers will clean up all event hooks (by design). */ + EM_ASM(Module['noExitRuntime'] = true); + return 0; +} diff --git a/tools/shared.py b/tools/shared.py index b7a186fc6ed16..a413a932fe7fc 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -361,7 +361,7 @@ def find_temp_directory(): # we re-check sanity when the settings are changed) # We also re-check sanity and clear the cache when the version changes -EMSCRIPTEN_VERSION = '1.12.2' +EMSCRIPTEN_VERSION = '1.12.3' def generate_sanity(): return EMSCRIPTEN_VERSION + '|' + get_llvm_target() + '|' + LLVM_ROOT + '|' + get_clang_version() From 01efb0bfc550ed1e4ebd4cfc2c617dea83026029 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 25 Feb 2014 18:31:05 -0800 Subject: [PATCH 13/19] pass NO_EXIT_RUNTIME flag to fastcomp and add test --- emcc | 5 ++++- tests/test_other.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/emcc b/emcc index 8d84007458d47..71e55f44a095e 100755 --- a/emcc +++ b/emcc @@ -1180,7 +1180,10 @@ try: logging.warning('jcache is deprecated and not supported in fastcomp (you should not need it anyhow), disabling') jcache = False - fastcomp_opts = ['-pnacl-abi-simplify-preopt', '-pnacl-abi-simplify-postopt'] + fastcomp_opts = [] + if shared.Settings.NO_EXIT_RUNTIME: + fastcomp_opts += ['-emscripten-no-exit-runtime', '-globaldce'] + fastcomp_opts += ['-pnacl-abi-simplify-preopt', '-pnacl-abi-simplify-postopt'] if shared.Settings.DISABLE_EXCEPTION_CATCHING != 1: fastcomp_opts += ['-enable-emscripten-cxx-exceptions'] if len(shared.Settings.EXCEPTION_CATCHING_WHITELIST) > 0: diff --git a/tests/test_other.py b/tests/test_other.py index 55cc56356b8dd..f5a4ebc910af4 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -2391,3 +2391,40 @@ def test_warn_unaligned(self): assert 'emcc: warning: unaligned store' in output[1] assert '@line 9 "src.cpp"' in output[1] + def test_no_exit_runtime(self): + open('code.cpp', 'w').write(r''' +#include + +template +struct Waste { + Waste() { + printf("coming around %d\n", x); + } + ~Waste() { + printf("going away %d\n", x); + } +}; + +Waste<1> w1; +Waste<2> w2; +Waste<3> w3; +Waste<4> w4; +Waste<5> w5; + +int main(int argc, char **argv) { + return 0; +} +''') + + for no_exit in [0, 1]: + for opts in [0, 1]: + print no_exit, opts + Popen([PYTHON, EMCC, '-O' + str(opts), 'code.cpp', '-s', 'NO_EXIT_RUNTIME=' + str(no_exit)]).communicate() + output = run_js(os.path.join(self.get_dir(), 'a.out.js'), stderr=PIPE, full_output=True, engine=NODE_JS) + src = open('a.out.js').read() + exit = 1-no_exit + assert 'coming around' in output + assert ('going away' in output) == exit, 'destructors should not run if no exit' + assert ('_ZN5WasteILi2EED1Ev' in src) == exit, 'destructors should not appear if no exit' + assert ('atexit(' in src) == exit, 'atexit should not appear or be called' + From 6d11f414a7cce4aacf7da0cd8e412c92166ea162 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 26 Feb 2014 10:45:22 -0800 Subject: [PATCH 14/19] use le32 target in slow2[asm].test_sqlite; fixes #2160 --- tests/test_core.py | 62 +++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/tests/test_core.py b/tests/test_core.py index f67d820a38286..2feb85fb39104 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -4841,33 +4841,45 @@ def process(filename): no_build=True) def test_sqlite(self): - # gcc -O3 -I/home/alon/Dev/emscripten/tests/sqlite -ldl src.c - if self.emcc_args is None: return self.skip('Very slow without ta2, and we would also need to include dlmalloc manually without emcc') - if not self.is_emscripten_abi(): return self.skip('fails on x86 due to a legalization issue on llvm 3.3') - if Settings.QUANTUM_SIZE == 1: return self.skip('TODO FIXME') - self.banned_js_engines = [NODE_JS] # OOM in older node + try: + if self.run_name == 'slow2' or self.run_name == 'slow2asm': + old_target = os.environ.get('EMCC_LLVM_TARGET') or '' + os.environ['EMCC_LLVM_TARGET'] = "le32-unknown-nacl" - Settings.CORRECT_SIGNS = 1 - Settings.CORRECT_OVERFLOWS = 0 - Settings.CORRECT_ROUNDINGS = 0 - if self.emcc_args is None: Settings.SAFE_HEAP = 0 # uses time.h to set random bytes, other stuff - Settings.DISABLE_EXCEPTION_CATCHING = 1 - Settings.FAST_MEMORY = 4*1024*1024 - Settings.EXPORTED_FUNCTIONS += ['_sqlite3_open', '_sqlite3_close', '_sqlite3_exec', '_sqlite3_free', '_callback']; - if Settings.ASM_JS == 1 and '-g' in self.emcc_args: - print "disabling inlining" # without registerize (which -g disables), we generate huge amounts of code - Settings.INLINING_LIMIT = 50 + # gcc -O3 -I/home/alon/Dev/emscripten/tests/sqlite -ldl src.c + if self.emcc_args is None: return self.skip('Very slow without ta2, and we would also need to include dlmalloc manually without emcc') + if not self.is_emscripten_abi(): return self.skip('fails on x86 due to a legalization issue on llvm 3.3') + if Settings.QUANTUM_SIZE == 1: return self.skip('TODO FIXME') + self.banned_js_engines = [NODE_JS] # OOM in older node - self.do_run(r''' - #define SQLITE_DISABLE_LFS - #define LONGDOUBLE_TYPE double - #define SQLITE_INT64_TYPE long long int - #define SQLITE_THREADSAFE 0 - ''' + open(path_from_root('tests', 'sqlite', 'sqlite3.c'), 'r').read() + - open(path_from_root('tests', 'sqlite', 'benchmark.c'), 'r').read(), - open(path_from_root('tests', 'sqlite', 'benchmark.txt'), 'r').read(), - includes=[path_from_root('tests', 'sqlite')], - force_c=True) + Settings.CORRECT_SIGNS = 1 + Settings.CORRECT_OVERFLOWS = 0 + Settings.CORRECT_ROUNDINGS = 0 + if self.emcc_args is None: Settings.SAFE_HEAP = 0 # uses time.h to set random bytes, other stuff + Settings.DISABLE_EXCEPTION_CATCHING = 1 + Settings.FAST_MEMORY = 4*1024*1024 + Settings.EXPORTED_FUNCTIONS += ['_sqlite3_open', '_sqlite3_close', '_sqlite3_exec', '_sqlite3_free', '_callback']; + if Settings.ASM_JS == 1 and '-g' in self.emcc_args: + print "disabling inlining" # without registerize (which -g disables), we generate huge amounts of code + Settings.INLINING_LIMIT = 50 + + self.do_run(r''' + #define SQLITE_DISABLE_LFS + #define LONGDOUBLE_TYPE double + #define SQLITE_INT64_TYPE long long int + #define SQLITE_THREADSAFE 0 + ''' + open(path_from_root('tests', 'sqlite', 'sqlite3.c'), 'r').read() + + open(path_from_root('tests', 'sqlite', 'benchmark.c'), 'r').read(), + open(path_from_root('tests', 'sqlite', 'benchmark.txt'), 'r').read(), + includes=[path_from_root('tests', 'sqlite')], + force_c=True) + + finally: + if self.run_name == 'slow2' or self.run_name == 'slow2asm': + if old_target: + os.environ['EMCC_LLVM_TARGET'] = old_target + else: + del os.environ['EMCC_LLVM_TARGET'] def test_zlib(self): if not Settings.USE_TYPED_ARRAYS == 2: return self.skip('works in general, but cached build will be optimized and fail, so disable this') From 28cd0d4f2be20241b3e3b090156775c29b695f9a Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 26 Feb 2014 10:53:48 -0800 Subject: [PATCH 15/19] improve -v output, and add some docs --- emcc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/emcc b/emcc index 71e55f44a095e..a6bf9c6a9a4d7 100755 --- a/emcc +++ b/emcc @@ -423,7 +423,17 @@ Options that are modified or new in %s include: -v Turns on verbose output. This will pass -v to Clang, and also enable EMCC_DEBUG - to details emcc's operations + to details emcc's operations. + + It will also run emscripten's internal sanity + checks, checking that things like the LLVM directory + path looks correct, etc. This works with or + without other arguments, so it can be useful to run + + emcc -v + + if you see odd errors, as it can help diagnose + things. --clear-cache Manually clears the cache of compiled emscripten system libraries (libc++, @@ -528,8 +538,9 @@ There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR P elif len(sys.argv) == 2 and sys.argv[1] == '-v': # -v with no inputs print 'emcc (Emscripten GCC-like replacement + linker emulating GNU ld ) %s' % shared.EMSCRIPTEN_VERSION + code = subprocess.call([shared.CLANG, '-v']) shared.check_sanity(force=True) - exit(subprocess.call([shared.CLANG, '-v'])) + exit(code) def is_minus_s_for_emcc(newargs, i): assert newargs[i] == '-s' From 2708d551bd31338fbfd9f9e11716451443c04dbb Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 26 Feb 2014 12:44:22 -0800 Subject: [PATCH 16/19] use le32 target when fastcomp is disabled, so we do not need a fastcomp build, and also fixes sqlite test --- src/intertyper.js | 4 ++- tests/test_core.py | 72 ++++++++++++++++++++++------------------------ tools/shared.py | 4 +++ 3 files changed, 42 insertions(+), 38 deletions(-) diff --git a/src/intertyper.js b/src/intertyper.js index 7743ce62b96bd..323787acd3009 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -350,7 +350,9 @@ function intertyper(lines, sidePass, baseLineNums) { triple = triple.substr(1, triple.length-2); var expected = TARGET_ASMJS_UNKNOWN_EMSCRIPTEN ? 'asmjs-unknown-emscripten' : 'i386-pc-linux-gnu'; if (triple !== expected) { - warn('using an unexpected LLVM triple: ' + [triple, ' !== ', expected] + ' (are you using emcc for everything and not clang?)'); + if (!(TARGET_ASMJS_UNKNOWN_EMSCRIPTEN && triple === 'le32-unknown-nacl')) { + warn('using an unexpected LLVM triple: ' + [triple, ' !== ', expected] + ' (are you using emcc for everything and not clang?)'); + } } } return null; diff --git a/tests/test_core.py b/tests/test_core.py index 2feb85fb39104..a821660cedda2 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -4542,10 +4542,20 @@ def test_jansson(self): ### 'Medium' tests def test_fannkuch(self): + try: + if self.run_name == 'slow2' or self.run_name == 'slow2asm': + old_target = os.environ.get('EMCC_LLVM_TARGET') or '' + os.environ['EMCC_LLVM_TARGET'] = "asmjs-unknown-emscripten" # testing for asm-emscripten target on non-fastcomp results = [ (1,0), (2,1), (3,2), (4,4), (5,7), (6,10), (7, 16), (8,22) ] for i, j in results: src = open(path_from_root('tests', 'fannkuch.cpp'), 'r').read() self.do_run(src, 'Pfannkuchen(%d) = %d.' % (i,j), [str(i)], no_build=i>1) + finally: + if self.run_name == 'slow2' or self.run_name == 'slow2asm': + if old_target: + os.environ['EMCC_LLVM_TARGET'] = old_target + else: + del os.environ['EMCC_LLVM_TARGET'] def test_raytrace(self): if self.emcc_args is None: return self.skip('requires emcc') @@ -4841,45 +4851,33 @@ def process(filename): no_build=True) def test_sqlite(self): - try: - if self.run_name == 'slow2' or self.run_name == 'slow2asm': - old_target = os.environ.get('EMCC_LLVM_TARGET') or '' - os.environ['EMCC_LLVM_TARGET'] = "le32-unknown-nacl" + # gcc -O3 -I/home/alon/Dev/emscripten/tests/sqlite -ldl src.c + if self.emcc_args is None: return self.skip('Very slow without ta2, and we would also need to include dlmalloc manually without emcc') + if not self.is_emscripten_abi(): return self.skip('fails on x86 due to a legalization issue on llvm 3.3') + if Settings.QUANTUM_SIZE == 1: return self.skip('TODO FIXME') + self.banned_js_engines = [NODE_JS] # OOM in older node - # gcc -O3 -I/home/alon/Dev/emscripten/tests/sqlite -ldl src.c - if self.emcc_args is None: return self.skip('Very slow without ta2, and we would also need to include dlmalloc manually without emcc') - if not self.is_emscripten_abi(): return self.skip('fails on x86 due to a legalization issue on llvm 3.3') - if Settings.QUANTUM_SIZE == 1: return self.skip('TODO FIXME') - self.banned_js_engines = [NODE_JS] # OOM in older node - - Settings.CORRECT_SIGNS = 1 - Settings.CORRECT_OVERFLOWS = 0 - Settings.CORRECT_ROUNDINGS = 0 - if self.emcc_args is None: Settings.SAFE_HEAP = 0 # uses time.h to set random bytes, other stuff - Settings.DISABLE_EXCEPTION_CATCHING = 1 - Settings.FAST_MEMORY = 4*1024*1024 - Settings.EXPORTED_FUNCTIONS += ['_sqlite3_open', '_sqlite3_close', '_sqlite3_exec', '_sqlite3_free', '_callback']; - if Settings.ASM_JS == 1 and '-g' in self.emcc_args: - print "disabling inlining" # without registerize (which -g disables), we generate huge amounts of code - Settings.INLINING_LIMIT = 50 - - self.do_run(r''' - #define SQLITE_DISABLE_LFS - #define LONGDOUBLE_TYPE double - #define SQLITE_INT64_TYPE long long int - #define SQLITE_THREADSAFE 0 - ''' + open(path_from_root('tests', 'sqlite', 'sqlite3.c'), 'r').read() + - open(path_from_root('tests', 'sqlite', 'benchmark.c'), 'r').read(), - open(path_from_root('tests', 'sqlite', 'benchmark.txt'), 'r').read(), - includes=[path_from_root('tests', 'sqlite')], - force_c=True) + Settings.CORRECT_SIGNS = 1 + Settings.CORRECT_OVERFLOWS = 0 + Settings.CORRECT_ROUNDINGS = 0 + if self.emcc_args is None: Settings.SAFE_HEAP = 0 # uses time.h to set random bytes, other stuff + Settings.DISABLE_EXCEPTION_CATCHING = 1 + Settings.FAST_MEMORY = 4*1024*1024 + Settings.EXPORTED_FUNCTIONS += ['_sqlite3_open', '_sqlite3_close', '_sqlite3_exec', '_sqlite3_free', '_callback']; + if Settings.ASM_JS == 1 and '-g' in self.emcc_args: + print "disabling inlining" # without registerize (which -g disables), we generate huge amounts of code + Settings.INLINING_LIMIT = 50 - finally: - if self.run_name == 'slow2' or self.run_name == 'slow2asm': - if old_target: - os.environ['EMCC_LLVM_TARGET'] = old_target - else: - del os.environ['EMCC_LLVM_TARGET'] + self.do_run(r''' + #define SQLITE_DISABLE_LFS + #define LONGDOUBLE_TYPE double + #define SQLITE_INT64_TYPE long long int + #define SQLITE_THREADSAFE 0 + ''' + open(path_from_root('tests', 'sqlite', 'sqlite3.c'), 'r').read() + + open(path_from_root('tests', 'sqlite', 'benchmark.c'), 'r').read(), + open(path_from_root('tests', 'sqlite', 'benchmark.txt'), 'r').read(), + includes=[path_from_root('tests', 'sqlite')], + force_c=True) def test_zlib(self): if not Settings.USE_TYPED_ARRAYS == 2: return self.skip('works in general, but cached build will be optimized and fail, so disable this') diff --git a/tools/shared.py b/tools/shared.py index b7a186fc6ed16..f7c3919c93354 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -618,6 +618,10 @@ def clean_temp(): # Target choice. Must be synced with src/settings.js (TARGET_*) def get_llvm_target(): + if os.environ.get('EMCC_FAST_COMPILER') == '0': + if not os.environ.get('EMCC_LLVM_TARGET'): + os.environ['EMCC_LLVM_TARGET'] = 'le32-unknown-nacl' + return os.environ.get('EMCC_LLVM_TARGET') return os.environ.get('EMCC_LLVM_TARGET') or 'asmjs-unknown-emscripten' LLVM_TARGET = get_llvm_target() From 3a4dbe968aa639fee2c6301297b8e636072121cd Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 26 Feb 2014 13:47:01 -0800 Subject: [PATCH 17/19] fix test_fuzz in non-fastcomp --- tests/test_core.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_core.py b/tests/test_core.py index a821660cedda2..c9da3954f1867 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -5213,7 +5213,10 @@ def run_all(x): for name in glob.glob(path_from_root('tests', 'fuzz', '*.c')) + glob.glob(path_from_root('tests', 'fuzz', '*.cpp')): #if os.path.basename(name) != '4.c': continue if 'newfail' in name: continue - if os.path.basename(name) == '18.cpp' and not os.environ.get('EMCC_FAST_COMPILER') != '0': continue # works only in fastcomp + if os.environ.get('EMCC_FAST_COMPILER') == '0' and os.path.basename(name) in [ + '18.cpp', '15.c' + ]: + continue # works only in fastcomp print name self.do_run(open(path_from_root('tests', 'fuzz', name)).read(), From 6cd47398bb73572c95dab7729ccb8ac793f69655 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 26 Feb 2014 13:48:25 -0800 Subject: [PATCH 18/19] fix test_asmjs_unknown_emscripten --- tests/test_core.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_core.py b/tests/test_core.py index c9da3954f1867..26bb71ef01440 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -507,6 +507,7 @@ def test_sha1(self): def test_asmjs_unknown_emscripten(self): if self.emcc_args == None: return self.skip('needs emcc') if not self.is_emscripten_abi(): return self.skip('asmjs-unknown-emscripten needed for asmjs-unknown-emscripten target test') + if os.environ.get('EMCC_FAST_COMPILER') == '0': return self.skip('fastcomp needed for asmjs-unknonw-emscripten target') self.do_run(open(path_from_root('tests', 'asmjs-unknown-emscripten.c')).read(), '') def test_cube2md5(self): From 202a13e9bb409cf320dd19f3aff48b77ba934fb2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 26 Feb 2014 15:23:49 -0800 Subject: [PATCH 19/19] add debug printout regarding chunkification in js optimizer --- tools/js_optimizer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index 9ba6643b7193e..d6c705cd6c4ea 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -212,6 +212,7 @@ def split_funcs(js): chunk_size = min(MAX_CHUNK_SIZE, max(MIN_CHUNK_SIZE, total_size / intended_num_chunks)) chunks = shared.chunkify(funcs, chunk_size, jcache.get_cachename('jsopt') if jcache else None) + if DEBUG and len(chunks) > 0: print >> sys.stderr, 'chunkification: intended size:', chunk_size, 'num funcs:', len(funcs), 'actual num chunks:', len(chunks), 'chunk size range:', max(map(len, chunks)), '-', min(map(len, chunks)) funcs = None if jcache: