aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-10-25 18:18:28 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-10-25 18:18:28 -0700
commit74fcbe26d5e006617b61c6c1022249a1181c410a (patch)
tree9fd2cc1f51618afdf3d5b658b9dd898d60323ae8
parent17c89bcff9cc6198cfd4ddd05a1151f295fe21ca (diff)
add no-unsigned malloc test for eliminator
-rw-r--r--tools/eliminator/eliminator-test-output.js1651
-rw-r--r--tools/eliminator/eliminator-test.js2626
2 files changed, 4275 insertions, 2 deletions
diff --git a/tools/eliminator/eliminator-test-output.js b/tools/eliminator/eliminator-test-output.js
index 5a59e873..69bc3632 100644
--- a/tools/eliminator/eliminator-test-output.js
+++ b/tools/eliminator/eliminator-test-output.js
@@ -4486,4 +4486,1653 @@ function _malloc($bytes) {
return $mem_0;
return null;
}
-// EMSCRIPTEN_GENERATED_FUNCTIONS: ["a", "f", "g", "h", "py", "r", "t", "f2", "f3", "llvm3_1", "_inflate", "_malloc"]
+function _mallocNoU($bytes) {
+ var __label__;
+ var $1 = $bytes >>> 0 < 245;
+ $_$2 : do {
+ if ($1) {
+ if ($bytes >>> 0 < 11) {
+ var $8 = 16;
+ } else {
+ var $8 = ($bytes + 11 | 0) & -8;
+ }
+ var $8;
+ var $9 = $8 >>> 3;
+ var $10 = HEAP32[(__gm_ | 0) >> 2];
+ var $11 = $10 >>> ($9 >>> 0);
+ if (!(($11 & 3 | 0) == 0)) {
+ var $17 = ($11 & 1 ^ 1) + $9 | 0;
+ var $18 = $17 << 1;
+ var $20 = __gm_ + 40 + ($18 << 2) | 0;
+ var $21 = __gm_ + 40 + (($18 + 2 | 0) << 2) | 0;
+ var $22 = HEAP32[$21 >> 2];
+ var $23 = $22 + 8 | 0;
+ var $24 = HEAP32[$23 >> 2];
+ if (($20 | 0) == ($24 | 0)) {
+ HEAP32[(__gm_ | 0) >> 2] = $10 & (1 << $17 ^ -1);
+ } else {
+ if ($24 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0) {
+ _abort();
+ } else {
+ HEAP32[$21 >> 2] = $24;
+ HEAP32[($24 + 12 | 0) >> 2] = $20;
+ }
+ }
+ var $38 = $17 << 3;
+ HEAP32[($22 + 4 | 0) >> 2] = $38 | 3;
+ var $43 = $22 + ($38 | 4) | 0;
+ HEAP32[$43 >> 2] = HEAP32[$43 >> 2] | 1;
+ var $mem_0 = $23;
+ __label__ = 331;
+ break;
+ }
+ if (!($8 >>> 0 > HEAP32[(__gm_ + 8 | 0) >> 2] >>> 0)) {
+ var $nb_0 = $8;
+ __label__ = 155;
+ break;
+ }
+ if (!(($11 | 0) == 0)) {
+ var $54 = 2 << $9;
+ var $57 = $11 << $9 & ($54 | (-$54 | 0));
+ var $60 = ($57 & (-$57 | 0)) - 1 | 0;
+ var $62 = $60 >>> 12 & 16;
+ var $63 = $60 >>> ($62 >>> 0);
+ var $65 = $63 >>> 5 & 8;
+ var $66 = $63 >>> ($65 >>> 0);
+ var $68 = $66 >>> 2 & 4;
+ var $69 = $66 >>> ($68 >>> 0);
+ var $71 = $69 >>> 1 & 2;
+ var $72 = $69 >>> ($71 >>> 0);
+ var $74 = $72 >>> 1 & 1;
+ var $80 = ($65 | $62 | $68 | $71 | $74) + ($72 >>> ($74 >>> 0)) | 0;
+ var $81 = $80 << 1;
+ var $83 = __gm_ + 40 + ($81 << 2) | 0;
+ var $84 = __gm_ + 40 + (($81 + 2 | 0) << 2) | 0;
+ var $85 = HEAP32[$84 >> 2];
+ var $86 = $85 + 8 | 0;
+ var $87 = HEAP32[$86 >> 2];
+ if (($83 | 0) == ($87 | 0)) {
+ HEAP32[(__gm_ | 0) >> 2] = $10 & (1 << $80 ^ -1);
+ } else {
+ if ($87 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0) {
+ _abort();
+ } else {
+ HEAP32[$84 >> 2] = $87;
+ HEAP32[($87 + 12 | 0) >> 2] = $83;
+ }
+ }
+ var $101 = $80 << 3;
+ var $102 = $101 - $8 | 0;
+ HEAP32[($85 + 4 | 0) >> 2] = $8 | 3;
+ var $105 = $85;
+ var $107 = $105 + $8 | 0;
+ HEAP32[($105 + ($8 | 4) | 0) >> 2] = $102 | 1;
+ HEAP32[($105 + $101 | 0) >> 2] = $102;
+ var $113 = HEAP32[(__gm_ + 8 | 0) >> 2];
+ if (!(($113 | 0) == 0)) {
+ var $116 = HEAP32[(__gm_ + 20 | 0) >> 2];
+ var $119 = $113 >>> 2 & 1073741822;
+ var $121 = __gm_ + 40 + ($119 << 2) | 0;
+ var $122 = HEAP32[(__gm_ | 0) >> 2];
+ var $123 = 1 << ($113 >>> 3);
+ var $125 = ($122 & $123 | 0) == 0;
+ do {
+ if ($125) {
+ HEAP32[(__gm_ | 0) >> 2] = $122 | $123;
+ var $F4_0 = $121;
+ var $_pre_phi = __gm_ + 40 + (($119 + 2 | 0) << 2) | 0;
+ } else {
+ var $129 = __gm_ + 40 + (($119 + 2 | 0) << 2) | 0;
+ var $130 = HEAP32[$129 >> 2];
+ if (!($130 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0)) {
+ var $F4_0 = $130;
+ var $_pre_phi = $129;
+ break;
+ }
+ _abort();
+ }
+ } while (0);
+ var $_pre_phi;
+ var $F4_0;
+ HEAP32[$_pre_phi >> 2] = $116;
+ HEAP32[($F4_0 + 12 | 0) >> 2] = $116;
+ HEAP32[($116 + 8 | 0) >> 2] = $F4_0;
+ HEAP32[($116 + 12 | 0) >> 2] = $121;
+ }
+ HEAP32[(__gm_ + 8 | 0) >> 2] = $102;
+ HEAP32[(__gm_ + 20 | 0) >> 2] = $107;
+ var $mem_0 = $86;
+ __label__ = 331;
+ break;
+ }
+ var $142 = HEAP32[(__gm_ + 4 | 0) >> 2];
+ if (($142 | 0) == 0) {
+ var $nb_0 = $8;
+ __label__ = 155;
+ break;
+ }
+ var $147 = ($142 & (-$142 | 0)) - 1 | 0;
+ var $149 = $147 >>> 12 & 16;
+ var $150 = $147 >>> ($149 >>> 0);
+ var $152 = $150 >>> 5 & 8;
+ var $153 = $150 >>> ($152 >>> 0);
+ var $155 = $153 >>> 2 & 4;
+ var $156 = $153 >>> ($155 >>> 0);
+ var $158 = $156 >>> 1 & 2;
+ var $159 = $156 >>> ($158 >>> 0);
+ var $161 = $159 >>> 1 & 1;
+ var $169 = HEAP32[(__gm_ + 304 + ((($152 | $149 | $155 | $158 | $161) + ($159 >>> ($161 >>> 0)) | 0) << 2) | 0) >> 2];
+ var $t_0_i = $169;
+ var $v_0_i = $169;
+ var $rsize_0_i = (HEAP32[($169 + 4 | 0) >> 2] & -8) - $8 | 0;
+ while (1) {
+ var $rsize_0_i;
+ var $v_0_i;
+ var $t_0_i;
+ var $176 = HEAP32[($t_0_i + 16 | 0) >> 2];
+ if (($176 | 0) == 0) {
+ var $180 = HEAP32[($t_0_i + 20 | 0) >> 2];
+ if (($180 | 0) == 0) {
+ break;
+ }
+ var $182 = $180;
+ } else {
+ var $182 = $176;
+ }
+ var $182;
+ var $186 = (HEAP32[($182 + 4 | 0) >> 2] & -8) - $8 | 0;
+ var $187 = $186 >>> 0 < $rsize_0_i >>> 0;
+ var $t_0_i = $182;
+ var $v_0_i = $187 ? $182 : $v_0_i;
+ var $rsize_0_i = $187 ? $186 : $rsize_0_i;
+ }
+ var $189 = $v_0_i;
+ var $190 = HEAP32[(__gm_ + 16 | 0) >> 2];
+ var $191 = $189 >>> 0 < $190 >>> 0;
+ do {
+ if (!$191) {
+ var $193 = $189 + $8 | 0;
+ var $194 = $193;
+ if (!($189 >>> 0 < $193 >>> 0)) {
+ break;
+ }
+ var $198 = HEAP32[($v_0_i + 24 | 0) >> 2];
+ var $200 = HEAP32[($v_0_i + 12 | 0) >> 2];
+ var $201 = ($200 | 0) == ($v_0_i | 0);
+ do {
+ if ($201) {
+ var $212 = $v_0_i + 20 | 0;
+ var $213 = HEAP32[$212 >> 2];
+ if (($213 | 0) == 0) {
+ var $216 = $v_0_i + 16 | 0;
+ var $217 = HEAP32[$216 >> 2];
+ if (($217 | 0) == 0) {
+ var $R_1_i = 0;
+ break;
+ }
+ var $RP_0_i = $216;
+ var $R_0_i = $217;
+ } else {
+ var $RP_0_i = $212;
+ var $R_0_i = $213;
+ __label__ = 39;
+ }
+ while (1) {
+ var $R_0_i;
+ var $RP_0_i;
+ var $219 = $R_0_i + 20 | 0;
+ var $220 = HEAP32[$219 >> 2];
+ if (!(($220 | 0) == 0)) {
+ var $RP_0_i = $219;
+ var $R_0_i = $220;
+ continue;
+ }
+ var $223 = $R_0_i + 16 | 0;
+ var $224 = HEAP32[$223 >> 2];
+ if (($224 | 0) == 0) {
+ break;
+ }
+ var $RP_0_i = $223;
+ var $R_0_i = $224;
+ }
+ if ($RP_0_i >>> 0 < $190 >>> 0) {
+ _abort();
+ } else {
+ HEAP32[$RP_0_i >> 2] = 0;
+ var $R_1_i = $R_0_i;
+ }
+ } else {
+ var $204 = HEAP32[($v_0_i + 8 | 0) >> 2];
+ if ($204 >>> 0 < $190 >>> 0) {
+ _abort();
+ } else {
+ HEAP32[($204 + 12 | 0) >> 2] = $200;
+ HEAP32[($200 + 8 | 0) >> 2] = $204;
+ var $R_1_i = $200;
+ }
+ }
+ } while (0);
+ var $R_1_i;
+ var $232 = ($198 | 0) == 0;
+ $_$62 : do {
+ if (!$232) {
+ var $234 = $v_0_i + 28 | 0;
+ var $236 = __gm_ + 304 + (HEAP32[$234 >> 2] << 2) | 0;
+ var $238 = ($v_0_i | 0) == (HEAP32[$236 >> 2] | 0);
+ do {
+ if ($238) {
+ HEAP32[$236 >> 2] = $R_1_i;
+ if (!(($R_1_i | 0) == 0)) {
+ break;
+ }
+ HEAP32[(__gm_ + 4 | 0) >> 2] = HEAP32[(__gm_ + 4 | 0) >> 2] & (1 << HEAP32[$234 >> 2] ^ -1);
+ break $_$62;
+ }
+ if ($198 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0) {
+ _abort();
+ } else {
+ var $250 = $198 + 16 | 0;
+ if ((HEAP32[$250 >> 2] | 0) == ($v_0_i | 0)) {
+ HEAP32[$250 >> 2] = $R_1_i;
+ } else {
+ HEAP32[($198 + 20 | 0) >> 2] = $R_1_i;
+ }
+ if (($R_1_i | 0) == 0) {
+ break $_$62;
+ }
+ }
+ } while (0);
+ if ($R_1_i >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0) {
+ _abort();
+ } else {
+ HEAP32[($R_1_i + 24 | 0) >> 2] = $198;
+ var $266 = HEAP32[($v_0_i + 16 | 0) >> 2];
+ if (!(($266 | 0) == 0)) {
+ if ($266 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0) {
+ _abort();
+ } else {
+ HEAP32[($R_1_i + 16 | 0) >> 2] = $266;
+ HEAP32[($266 + 24 | 0) >> 2] = $R_1_i;
+ }
+ }
+ var $278 = HEAP32[($v_0_i + 20 | 0) >> 2];
+ if (($278 | 0) == 0) {
+ break;
+ }
+ if ($278 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0) {
+ _abort();
+ } else {
+ HEAP32[($R_1_i + 20 | 0) >> 2] = $278;
+ HEAP32[($278 + 24 | 0) >> 2] = $R_1_i;
+ }
+ }
+ }
+ } while (0);
+ if ($rsize_0_i >>> 0 < 16) {
+ var $292 = $rsize_0_i + $8 | 0;
+ HEAP32[($v_0_i + 4 | 0) >> 2] = $292 | 3;
+ var $296 = $189 + ($292 + 4 | 0) | 0;
+ HEAP32[$296 >> 2] = HEAP32[$296 >> 2] | 1;
+ } else {
+ HEAP32[($v_0_i + 4 | 0) >> 2] = $8 | 3;
+ HEAP32[($189 + ($8 | 4) | 0) >> 2] = $rsize_0_i | 1;
+ HEAP32[($189 + ($rsize_0_i + $8 | 0) | 0) >> 2] = $rsize_0_i;
+ var $307 = HEAP32[(__gm_ + 8 | 0) >> 2];
+ if (!(($307 | 0) == 0)) {
+ var $310 = HEAP32[(__gm_ + 20 | 0) >> 2];
+ var $313 = $307 >>> 2 & 1073741822;
+ var $315 = __gm_ + 40 + ($313 << 2) | 0;
+ var $316 = HEAP32[(__gm_ | 0) >> 2];
+ var $317 = 1 << ($307 >>> 3);
+ var $319 = ($316 & $317 | 0) == 0;
+ do {
+ if ($319) {
+ HEAP32[(__gm_ | 0) >> 2] = $316 | $317;
+ var $F1_0_i = $315;
+ var $_pre_phi_i = __gm_ + 40 + (($313 + 2 | 0) << 2) | 0;
+ } else {
+ var $323 = __gm_ + 40 + (($313 + 2 | 0) << 2) | 0;
+ var $324 = HEAP32[$323 >> 2];
+ if (!($324 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0)) {
+ var $F1_0_i = $324;
+ var $_pre_phi_i = $323;
+ break;
+ }
+ _abort();
+ }
+ } while (0);
+ var $_pre_phi_i;
+ var $F1_0_i;
+ HEAP32[$_pre_phi_i >> 2] = $310;
+ HEAP32[($F1_0_i + 12 | 0) >> 2] = $310;
+ HEAP32[($310 + 8 | 0) >> 2] = $F1_0_i;
+ HEAP32[($310 + 12 | 0) >> 2] = $315;
+ }
+ HEAP32[(__gm_ + 8 | 0) >> 2] = $rsize_0_i;
+ HEAP32[(__gm_ + 20 | 0) >> 2] = $194;
+ }
+ var $335 = $v_0_i + 8 | 0;
+ if (($335 | 0) == 0) {
+ var $nb_0 = $8;
+ __label__ = 155;
+ break $_$2;
+ }
+ var $mem_0 = $335;
+ __label__ = 331;
+ break $_$2;
+ }
+ } while (0);
+ _abort();
+ } else {
+ if ($bytes >>> 0 > 4294967231) {
+ var $nb_0 = -1;
+ __label__ = 155;
+ break;
+ }
+ var $341 = $bytes + 11 | 0;
+ var $342 = $341 & -8;
+ var $343 = HEAP32[(__gm_ + 4 | 0) >> 2];
+ if (($343 | 0) == 0) {
+ var $nb_0 = $342;
+ __label__ = 155;
+ break;
+ }
+ var $346 = -$342 | 0;
+ var $347 = $341 >>> 8;
+ var $348 = ($347 | 0) == 0;
+ do {
+ if ($348) {
+ var $idx_0_i = 0;
+ } else {
+ if ($342 >>> 0 > 16777215) {
+ var $idx_0_i = 31;
+ break;
+ }
+ var $354 = ($347 + 1048320 | 0) >>> 16 & 8;
+ var $355 = $347 << $354;
+ var $358 = ($355 + 520192 | 0) >>> 16 & 4;
+ var $359 = $355 << $358;
+ var $362 = ($359 + 245760 | 0) >>> 16 & 2;
+ var $368 = (14 - ($358 | $354 | $362) | 0) + ($359 << $362 >>> 15) | 0;
+ var $idx_0_i = $342 >>> (($368 + 7 | 0) >>> 0) & 1 | $368 << 1;
+ }
+ } while (0);
+ var $idx_0_i;
+ var $376 = HEAP32[(__gm_ + 304 + ($idx_0_i << 2) | 0) >> 2];
+ var $377 = ($376 | 0) == 0;
+ $_$110 : do {
+ if ($377) {
+ var $v_2_i = 0;
+ var $rsize_2_i = $346;
+ var $t_1_i = 0;
+ } else {
+ if (($idx_0_i | 0) == 31) {
+ var $384 = 0;
+ } else {
+ var $384 = 25 - ($idx_0_i >>> 1) | 0;
+ }
+ var $384;
+ var $v_0_i15 = 0;
+ var $rsize_0_i14 = $346;
+ var $t_0_i13 = $376;
+ var $sizebits_0_i = $342 << $384;
+ var $rst_0_i = 0;
+ while (1) {
+ var $rst_0_i;
+ var $sizebits_0_i;
+ var $t_0_i13;
+ var $rsize_0_i14;
+ var $v_0_i15;
+ var $389 = HEAP32[($t_0_i13 + 4 | 0) >> 2] & -8;
+ var $390 = $389 - $342 | 0;
+ if ($390 >>> 0 < $rsize_0_i14 >>> 0) {
+ if (($389 | 0) == ($342 | 0)) {
+ var $v_2_i = $t_0_i13;
+ var $rsize_2_i = $390;
+ var $t_1_i = $t_0_i13;
+ break $_$110;
+ }
+ var $v_1_i = $t_0_i13;
+ var $rsize_1_i = $390;
+ } else {
+ var $v_1_i = $v_0_i15;
+ var $rsize_1_i = $rsize_0_i14;
+ }
+ var $rsize_1_i;
+ var $v_1_i;
+ var $396 = HEAP32[($t_0_i13 + 20 | 0) >> 2];
+ var $399 = HEAP32[($t_0_i13 + 16 + ($sizebits_0_i >>> 31 << 2) | 0) >> 2];
+ var $rst_1_i = ($396 | 0) == 0 | ($396 | 0) == ($399 | 0) ? $rst_0_i : $396;
+ if (($399 | 0) == 0) {
+ var $v_2_i = $v_1_i;
+ var $rsize_2_i = $rsize_1_i;
+ var $t_1_i = $rst_1_i;
+ break $_$110;
+ }
+ var $v_0_i15 = $v_1_i;
+ var $rsize_0_i14 = $rsize_1_i;
+ var $t_0_i13 = $399;
+ var $sizebits_0_i = $sizebits_0_i << 1;
+ var $rst_0_i = $rst_1_i;
+ }
+ }
+ } while (0);
+ var $t_1_i;
+ var $rsize_2_i;
+ var $v_2_i;
+ if (($t_1_i | 0) == 0 & ($v_2_i | 0) == 0) {
+ var $407 = 2 << $idx_0_i;
+ var $410 = $343 & ($407 | (-$407 | 0));
+ if (($410 | 0) == 0) {
+ var $nb_0 = $342;
+ __label__ = 155;
+ break;
+ }
+ var $415 = ($410 & (-$410 | 0)) - 1 | 0;
+ var $417 = $415 >>> 12 & 16;
+ var $418 = $415 >>> ($417 >>> 0);
+ var $420 = $418 >>> 5 & 8;
+ var $421 = $418 >>> ($420 >>> 0);
+ var $423 = $421 >>> 2 & 4;
+ var $424 = $421 >>> ($423 >>> 0);
+ var $426 = $424 >>> 1 & 2;
+ var $427 = $424 >>> ($426 >>> 0);
+ var $429 = $427 >>> 1 & 1;
+ var $t_2_ph_i = HEAP32[(__gm_ + 304 + ((($420 | $417 | $423 | $426 | $429) + ($427 >>> ($429 >>> 0)) | 0) << 2) | 0) >> 2];
+ } else {
+ var $t_2_ph_i = $t_1_i;
+ }
+ var $t_2_ph_i;
+ var $438 = ($t_2_ph_i | 0) == 0;
+ $_$125 : do {
+ if ($438) {
+ var $rsize_3_lcssa_i = $rsize_2_i;
+ var $v_3_lcssa_i = $v_2_i;
+ } else {
+ var $t_224_i = $t_2_ph_i;
+ var $rsize_325_i = $rsize_2_i;
+ var $v_326_i = $v_2_i;
+ while (1) {
+ var $v_326_i;
+ var $rsize_325_i;
+ var $t_224_i;
+ var $442 = (HEAP32[($t_224_i + 4 | 0) >> 2] & -8) - $342 | 0;
+ var $443 = $442 >>> 0 < $rsize_325_i >>> 0;
+ var $_rsize_3_i = $443 ? $442 : $rsize_325_i;
+ var $t_2_v_3_i = $443 ? $t_224_i : $v_326_i;
+ var $445 = HEAP32[($t_224_i + 16 | 0) >> 2];
+ if (!(($445 | 0) == 0)) {
+ var $t_224_i = $445;
+ var $rsize_325_i = $_rsize_3_i;
+ var $v_326_i = $t_2_v_3_i;
+ continue;
+ }
+ var $448 = HEAP32[($t_224_i + 20 | 0) >> 2];
+ if (($448 | 0) == 0) {
+ var $rsize_3_lcssa_i = $_rsize_3_i;
+ var $v_3_lcssa_i = $t_2_v_3_i;
+ break $_$125;
+ }
+ var $t_224_i = $448;
+ var $rsize_325_i = $_rsize_3_i;
+ var $v_326_i = $t_2_v_3_i;
+ }
+ }
+ } while (0);
+ var $v_3_lcssa_i;
+ var $rsize_3_lcssa_i;
+ if (($v_3_lcssa_i | 0) == 0) {
+ var $nb_0 = $342;
+ __label__ = 155;
+ break;
+ }
+ if (!($rsize_3_lcssa_i >>> 0 < (HEAP32[(__gm_ + 8 | 0) >> 2] - $342 | 0) >>> 0)) {
+ var $nb_0 = $342;
+ __label__ = 155;
+ break;
+ }
+ var $456 = $v_3_lcssa_i;
+ var $457 = HEAP32[(__gm_ + 16 | 0) >> 2];
+ var $458 = $456 >>> 0 < $457 >>> 0;
+ do {
+ if (!$458) {
+ var $460 = $456 + $342 | 0;
+ var $461 = $460;
+ if (!($456 >>> 0 < $460 >>> 0)) {
+ break;
+ }
+ var $465 = HEAP32[($v_3_lcssa_i + 24 | 0) >> 2];
+ var $467 = HEAP32[($v_3_lcssa_i + 12 | 0) >> 2];
+ var $468 = ($467 | 0) == ($v_3_lcssa_i | 0);
+ do {
+ if ($468) {
+ var $479 = $v_3_lcssa_i + 20 | 0;
+ var $480 = HEAP32[$479 >> 2];
+ if (($480 | 0) == 0) {
+ var $483 = $v_3_lcssa_i + 16 | 0;
+ var $484 = HEAP32[$483 >> 2];
+ if (($484 | 0) == 0) {
+ var $R_1_i19 = 0;
+ break;
+ }
+ var $RP_0_i17 = $483;
+ var $R_0_i16 = $484;
+ } else {
+ var $RP_0_i17 = $479;
+ var $R_0_i16 = $480;
+ __label__ = 103;
+ }
+ while (1) {
+ var $R_0_i16;
+ var $RP_0_i17;
+ var $486 = $R_0_i16 + 20 | 0;
+ var $487 = HEAP32[$486 >> 2];
+ if (!(($487 | 0) == 0)) {
+ var $RP_0_i17 = $486;
+ var $R_0_i16 = $487;
+ continue;
+ }
+ var $490 = $R_0_i16 + 16 | 0;
+ var $491 = HEAP32[$490 >> 2];
+ if (($491 | 0) == 0) {
+ break;
+ }
+ var $RP_0_i17 = $490;
+ var $R_0_i16 = $491;
+ }
+ if ($RP_0_i17 >>> 0 < $457 >>> 0) {
+ _abort();
+ } else {
+ HEAP32[$RP_0_i17 >> 2] = 0;
+ var $R_1_i19 = $R_0_i16;
+ }
+ } else {
+ var $471 = HEAP32[($v_3_lcssa_i + 8 | 0) >> 2];
+ if ($471 >>> 0 < $457 >>> 0) {
+ _abort();
+ } else {
+ HEAP32[($471 + 12 | 0) >> 2] = $467;
+ HEAP32[($467 + 8 | 0) >> 2] = $471;
+ var $R_1_i19 = $467;
+ }
+ }
+ } while (0);
+ var $R_1_i19;
+ var $499 = ($465 | 0) == 0;
+ $_$151 : do {
+ if (!$499) {
+ var $501 = $v_3_lcssa_i + 28 | 0;
+ var $503 = __gm_ + 304 + (HEAP32[$501 >> 2] << 2) | 0;
+ var $505 = ($v_3_lcssa_i | 0) == (HEAP32[$503 >> 2] | 0);
+ do {
+ if ($505) {
+ HEAP32[$503 >> 2] = $R_1_i19;
+ if (!(($R_1_i19 | 0) == 0)) {
+ break;
+ }
+ HEAP32[(__gm_ + 4 | 0) >> 2] = HEAP32[(__gm_ + 4 | 0) >> 2] & (1 << HEAP32[$501 >> 2] ^ -1);
+ break $_$151;
+ }
+ if ($465 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0) {
+ _abort();
+ } else {
+ var $517 = $465 + 16 | 0;
+ if ((HEAP32[$517 >> 2] | 0) == ($v_3_lcssa_i | 0)) {
+ HEAP32[$517 >> 2] = $R_1_i19;
+ } else {
+ HEAP32[($465 + 20 | 0) >> 2] = $R_1_i19;
+ }
+ if (($R_1_i19 | 0) == 0) {
+ break $_$151;
+ }
+ }
+ } while (0);
+ if ($R_1_i19 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0) {
+ _abort();
+ } else {
+ HEAP32[($R_1_i19 + 24 | 0) >> 2] = $465;
+ var $533 = HEAP32[($v_3_lcssa_i + 16 | 0) >> 2];
+ if (!(($533 | 0) == 0)) {
+ if ($533 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0) {
+ _abort();
+ } else {
+ HEAP32[($R_1_i19 + 16 | 0) >> 2] = $533;
+ HEAP32[($533 + 24 | 0) >> 2] = $R_1_i19;
+ }
+ }
+ var $545 = HEAP32[($v_3_lcssa_i + 20 | 0) >> 2];
+ if (($545 | 0) == 0) {
+ break;
+ }
+ if ($545 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0) {
+ _abort();
+ } else {
+ HEAP32[($R_1_i19 + 20 | 0) >> 2] = $545;
+ HEAP32[($545 + 24 | 0) >> 2] = $R_1_i19;
+ }
+ }
+ }
+ } while (0);
+ var $557 = $rsize_3_lcssa_i >>> 0 < 16;
+ $_$179 : do {
+ if ($557) {
+ var $559 = $rsize_3_lcssa_i + $342 | 0;
+ HEAP32[($v_3_lcssa_i + 4 | 0) >> 2] = $559 | 3;
+ var $563 = $456 + ($559 + 4 | 0) | 0;
+ HEAP32[$563 >> 2] = HEAP32[$563 >> 2] | 1;
+ } else {
+ HEAP32[($v_3_lcssa_i + 4 | 0) >> 2] = $342 | 3;
+ HEAP32[($456 + ($342 | 4) | 0) >> 2] = $rsize_3_lcssa_i | 1;
+ HEAP32[($456 + ($rsize_3_lcssa_i + $342 | 0) | 0) >> 2] = $rsize_3_lcssa_i;
+ if ($rsize_3_lcssa_i >>> 0 < 256) {
+ var $578 = $rsize_3_lcssa_i >>> 2 & 1073741822;
+ var $580 = __gm_ + 40 + ($578 << 2) | 0;
+ var $581 = HEAP32[(__gm_ | 0) >> 2];
+ var $582 = 1 << ($rsize_3_lcssa_i >>> 3);
+ var $584 = ($581 & $582 | 0) == 0;
+ do {
+ if ($584) {
+ HEAP32[(__gm_ | 0) >> 2] = $581 | $582;
+ var $F5_0_i = $580;
+ var $_pre_phi_i25 = __gm_ + 40 + (($578 + 2 | 0) << 2) | 0;
+ } else {
+ var $588 = __gm_ + 40 + (($578 + 2 | 0) << 2) | 0;
+ var $589 = HEAP32[$588 >> 2];
+ if (!($589 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0)) {
+ var $F5_0_i = $589;
+ var $_pre_phi_i25 = $588;
+ break;
+ }
+ _abort();
+ }
+ } while (0);
+ var $_pre_phi_i25;
+ var $F5_0_i;
+ HEAP32[$_pre_phi_i25 >> 2] = $461;
+ HEAP32[($F5_0_i + 12 | 0) >> 2] = $461;
+ HEAP32[($456 + ($342 + 8 | 0) | 0) >> 2] = $F5_0_i;
+ HEAP32[($456 + ($342 + 12 | 0) | 0) >> 2] = $580;
+ } else {
+ var $601 = $460;
+ var $602 = $rsize_3_lcssa_i >>> 8;
+ var $603 = ($602 | 0) == 0;
+ do {
+ if ($603) {
+ var $I7_0_i = 0;
+ } else {
+ if ($rsize_3_lcssa_i >>> 0 > 16777215) {
+ var $I7_0_i = 31;
+ break;
+ }
+ var $609 = ($602 + 1048320 | 0) >>> 16 & 8;
+ var $610 = $602 << $609;
+ var $613 = ($610 + 520192 | 0) >>> 16 & 4;
+ var $614 = $610 << $613;
+ var $617 = ($614 + 245760 | 0) >>> 16 & 2;
+ var $623 = (14 - ($613 | $609 | $617) | 0) + ($614 << $617 >>> 15) | 0;
+ var $I7_0_i = $rsize_3_lcssa_i >>> (($623 + 7 | 0) >>> 0) & 1 | $623 << 1;
+ }
+ } while (0);
+ var $I7_0_i;
+ var $630 = __gm_ + 304 + ($I7_0_i << 2) | 0;
+ HEAP32[($456 + ($342 + 28 | 0) | 0) >> 2] = $I7_0_i;
+ HEAP32[($456 + ($342 + 20 | 0) | 0) >> 2] = 0;
+ HEAP32[($456 + ($342 + 16 | 0) | 0) >> 2] = 0;
+ var $637 = HEAP32[(__gm_ + 4 | 0) >> 2];
+ var $638 = 1 << $I7_0_i;
+ if (($637 & $638 | 0) == 0) {
+ HEAP32[(__gm_ + 4 | 0) >> 2] = $637 | $638;
+ HEAP32[$630 >> 2] = $601;
+ HEAP32[($456 + ($342 + 24 | 0) | 0) >> 2] = $630;
+ HEAP32[($456 + ($342 + 12 | 0) | 0) >> 2] = $601;
+ HEAP32[($456 + ($342 + 8 | 0) | 0) >> 2] = $601;
+ } else {
+ if (($I7_0_i | 0) == 31) {
+ var $657 = 0;
+ } else {
+ var $657 = 25 - ($I7_0_i >>> 1) | 0;
+ }
+ var $657;
+ var $K12_0_i = $rsize_3_lcssa_i << $657;
+ var $T_0_i = HEAP32[$630 >> 2];
+ while (1) {
+ var $T_0_i;
+ var $K12_0_i;
+ if ((HEAP32[($T_0_i + 4 | 0) >> 2] & -8 | 0) == ($rsize_3_lcssa_i | 0)) {
+ var $683 = $T_0_i + 8 | 0;
+ var $684 = HEAP32[$683 >> 2];
+ var $686 = HEAP32[(__gm_ + 16 | 0) >> 2];
+ var $687 = $T_0_i >>> 0 < $686 >>> 0;
+ do {
+ if (!$687) {
+ if ($684 >>> 0 < $686 >>> 0) {
+ break;
+ }
+ HEAP32[($684 + 12 | 0) >> 2] = $601;
+ HEAP32[$683 >> 2] = $601;
+ HEAP32[($456 + ($342 + 8 | 0) | 0) >> 2] = $684;
+ HEAP32[($456 + ($342 + 12 | 0) | 0) >> 2] = $T_0_i;
+ HEAP32[($456 + ($342 + 24 | 0) | 0) >> 2] = 0;
+ break $_$179;
+ }
+ } while (0);
+ _abort();
+ } else {
+ var $666 = $T_0_i + 16 + ($K12_0_i >>> 31 << 2) | 0;
+ var $667 = HEAP32[$666 >> 2];
+ if (!(($667 | 0) == 0)) {
+ var $K12_0_i = $K12_0_i << 1;
+ var $T_0_i = $667;
+ continue;
+ }
+ if (!($666 >>> 0 < HEAP32[(__gm_ + 16 | 0) >> 2] >>> 0)) {
+ HEAP32[$666 >> 2] = $601;
+ HEAP32[($456 + ($342 + 24 | 0) | 0) >> 2] = $T_0_i;
+ HEAP32[($456 + ($342 + 12 | 0) | 0) >> 2] = $601;
+ HEAP32[($456 + ($342 + 8 | 0) | 0) >> 2] = $601;
+ break $_$179;
+ }
+ _abort();
+ }
+ }
+ }
+ }
+ }
+ } while (0);
+ var $700 = $v_3_lcssa_i + 8 | 0;
+ if (($700 | 0) == 0) {
+ var $nb_0 = $342;
+ __label__ = 155;
+ break $_$2;
+ }
+ var $mem_0 = $700;
+ __label__ = 331;
+ break $_$2;
+ }
+ } while (0);
+ _abort();
+ }
+ } while (0);
+ $_$215 : do {
+ if (__label__ == 155) {
+ var $nb_0;
+ var $703 = HEAP32[(__gm_ + 8 | 0) >> 2];
+ if ($nb_0 >>> 0 > $703 >>> 0) {
+ var $732 = HEAP32[(__gm_ + 12 | 0) >> 2];
+ if ($nb_0 >>> 0 < $732 >>> 0) {
+ var $735 = $732 - $nb_0 | 0;
+ HEAP32[(__gm_ + 12 | 0) >> 2] = $735;
+ var $736 = HEAP32[(__gm_ + 24 | 0) >> 2];
+ var $737 = $736;
+ HEAP32[(__gm_ + 24 | 0) >> 2] = $737 + $nb_0 | 0;
+ HEAP32[($737 + ($nb_0 + 4 | 0) | 0) >> 2] = $735 | 1;
+ HEAP32[($736 + 4 | 0) >> 2] = $nb_0 | 3;
+ var $mem_0 = $736 + 8 | 0;
+ } else {
+ var $749 = (HEAP32[(_mparams | 0) >> 2] | 0) == 0;
+ do {
+ if ($749) {
+ if (!((HEAP32[(_mparams | 0) >> 2] | 0) == 0)) {
+ break;
+ }
+ var $754 = _sysconf(8);
+ if ((($754 - 1 | 0) & $754 | 0) == 0) {
+ HEAP32[(_mparams + 8 | 0) >> 2] = $754;
+ HEAP32[(_mparams + 4 | 0) >> 2] = $754;
+ HEAP32[(_mparams + 12 | 0) >> 2] = -1;
+ HEAP32[(_mparams + 16 | 0) >> 2] = 2097152;
+ HEAP32[(_mparams + 20 | 0) >> 2] = 0;
+ HEAP32[(__gm_ + 440 | 0) >> 2] = 0;
+ HEAP32[(_mparams | 0) >> 2] = _time(0) & -16 ^ 1431655768;
+ } else {
+ _abort();
+ }
+ }
+ } while (0);
+ var $765 = (HEAP32[(__gm_ + 440 | 0) >> 2] & 4 | 0) == 0;
+ $_$234 : do {
+ if ($765) {
+ var $767 = HEAP32[(__gm_ + 24 | 0) >> 2];
+ var $768 = ($767 | 0) == 0;
+ $_$236 : do {
+ if (!$768) {
+ var $770 = $767;
+ var $sp_0_i_i = __gm_ + 444 | 0;
+ while (1) {
+ var $sp_0_i_i;
+ var $772 = $sp_0_i_i | 0;
+ var $773 = HEAP32[$772 >> 2];
+ if (!($773 >>> 0 > $770 >>> 0)) {
+ var $776 = $sp_0_i_i + 4 | 0;
+ if (($773 + HEAP32[$776 >> 2] | 0) >>> 0 > $770 >>> 0) {
+ break;
+ }
+ }
+ var $782 = HEAP32[($sp_0_i_i + 8 | 0) >> 2];
+ if (($782 | 0) == 0) {
+ __label__ = 174;
+ break $_$236;
+ }
+ var $sp_0_i_i = $782;
+ }
+ if (($sp_0_i_i | 0) == 0) {
+ __label__ = 174;
+ break;
+ }
+ var $811 = HEAP32[(_mparams + 8 | 0) >> 2];
+ var $816 = ((($nb_0 + 47 | 0) - HEAP32[(__gm_ + 12 | 0) >> 2] | 0) + $811 | 0) & (-$811 | 0);
+ if (!($816 >>> 0 < 2147483647)) {
+ var $tsize_0242932_ph_i = 0;
+ __label__ = 189;
+ break;
+ }
+ var $819 = _sbrk($816);
+ var $823 = ($819 | 0) == (HEAP32[$772 >> 2] + HEAP32[$776 >> 2] | 0 | 0);
+ var $tbase_0_i = $823 ? $819 : -1;
+ var $tsize_0_i = $823 ? $816 : 0;
+ var $asize_1_i = $816;
+ var $br_0_i = $819;
+ __label__ = 181;
+ break;
+ }
+ __label__ = 174;
+ } while (0);
+ do {
+ if (__label__ == 174) {
+ var $785 = _sbrk(0);
+ if (($785 | 0) == -1) {
+ var $tsize_0242932_ph_i = 0;
+ __label__ = 189;
+ break;
+ }
+ var $788 = HEAP32[(_mparams + 8 | 0) >> 2];
+ var $792 = (($nb_0 + 47 | 0) + $788 | 0) & (-$788 | 0);
+ var $793 = $785;
+ var $794 = HEAP32[(_mparams + 4 | 0) >> 2];
+ var $795 = $794 - 1 | 0;
+ if (($795 & $793 | 0) == 0) {
+ var $asize_0_i = $792;
+ } else {
+ var $asize_0_i = ($792 - $793 | 0) + (($795 + $793 | 0) & (-$794 | 0)) | 0;
+ }
+ var $asize_0_i;
+ if (!($asize_0_i >>> 0 < 2147483647)) {
+ var $tsize_0242932_ph_i = 0;
+ __label__ = 189;
+ break;
+ }
+ var $807 = _sbrk($asize_0_i);
+ var $808 = ($807 | 0) == ($785 | 0);
+ var $tbase_0_i = $808 ? $785 : -1;
+ var $tsize_0_i = $808 ? $asize_0_i : 0;
+ var $asize_1_i = $asize_0_i;
+ var $br_0_i = $807;
+ __label__ = 181;
+ break;
+ }
+ } while (0);
+ $_$253 : do {
+ if (__label__ == 181) {
+ var $br_0_i;
+ var $asize_1_i;
+ var $tsize_0_i;
+ var $tbase_0_i;
+ var $825 = -$asize_1_i | 0;
+ if (!(($tbase_0_i | 0) == -1)) {
+ var $tsize_242_i = $tsize_0_i;
+ var $tbase_243_i = $tbase_0_i;
+ __label__ = 194;
+ break $_$234;
+ }
+ var $or_cond_i28 = ($br_0_i | 0) != -1 & $asize_1_i >>> 0 < 2147483647;
+ do {
+ if ($or_cond_i28) {
+ if (!($asize_1_i >>> 0 < ($nb_0 + 48 | 0) >>> 0)) {
+ var $asize_2_i = $asize_1_i;
+ break;
+ }
+ var $834 = HEAP32[(_mparams + 8 | 0) >> 2];
+ var $839 = ((($nb_0 + 47 | 0) - $asize_1_i | 0) + $834 | 0) & (-$834 | 0);
+ if (!($839 >>> 0 < 2147483647)) {
+ var $asize_2_i = $asize_1_