function test() {
 if (HEAP32[i5 >> 2] | 0) {
  if ((_fread(i4 | 0, 1, 257, HEAP32[i5 >> 2] | 0) | 0) != 257) i31 = 9; else if ((HEAPU8[i4 >> 0] | 0 | 0) != (HEAP32[84328] | 0)) i31 = 9; else if (_memcmp(i4 + 1 | 0, HEAP32[i20 >> 2] | 0, 256) | 0) i31 = 9; else if ((_fread(HEAP32[i16 >> 2] | 0, 256, 256, HEAP32[i5 >> 2] | 0) | 0) != 256) i31 = 9;
 } else i31 = 9;
 barrier();
 if (HEAP32[i5 >> 2] | 0) {
  if ((_fread(i4 | 0, 1, 257, HEAP32[i5 >> 2] | 0) | 0) != 257) if ((HEAPU8[i4 >> 0] | 0 | 0) != (HEAP32[84328] | 0)) if (_memcmp(i4 + 1 | 0, HEAP32[i20 >> 2] | 0, 256) | 0) if ((_fread(HEAP32[i16 >> 2] | 0, 256, 256, HEAP32[i5 >> 2] | 0) | 0) != 256) i31 = 9;
 } else i31 = 9;
 moar();
 if ((c[21902] | 0) != 0 & (Vb | 0) == 29) {
  if ((Ib | 0) == 60) if (!(cq(39080, 448, c[F >> 2] | 0, c[M >> 2] | 0, 0, 0) | 0)) x = 373; else {
   Mb = 52;
   Nb = 0;
   Ob = 0;
   return;
  }
 } else x = 373;
 yet();
 if (a) if (b) {
  if (c) d();
 } else e(); else f();
}
function moar() {
 L : do print(5); while (0);
 L : {
  print(5);
  print(5);
 }
 L : do print(5); while (x | 0);
 L : do {
  print(5);
  print(5);
 } while (x | 0);
 later();
 L : {
  print(5);
  break L;
  print(5);
 }
 L : do {
  print(5);
  continue L;
  print(5);
 } while (0);
 moar();
 L : do {
  print(5);
  break;
  print(5);
 } while (0);
 L : {
  print(5);
  while (1) break;
  print(5);
 }
 moar2();
 L : do {
  print(5);
  continue;
  print(5);
 } while (0);
 L : {
  print(5);
  while (1) continue;
  print(5);
 }
}

