function _free($mem) {
$mem = $mem | 0;
var $5 = 0, $10 = 0, $16 = 0, $21 = 0, $25 = 0, $26 = 0, $37 = 0, $40 = 0, $_pre_phi307 = 0, $69 = 0, $72 = 0, $75 = 0, $80 = 0, $95 = 0, $100 = 0, $RP_0 = 0, $R_0 = 0, $102 = 0, $103 = 0, $106 = 0, $107 = 0, $R_1 = 0, $120 = 0, $151 = 0, $164 = 0, $psize_0 = 0, $p_0 = 0, $189 = 0, $194 = 0, $204 = 0, $220 = 0, $227 = 0, $233 = 0, $236 = 0, $_pre_phi305 = 0, $267 = 0, $270 = 0, $273 = 0, $278 = 0, $294 = 0, $299 = 0, $RP9_0 = 0, $R7_0 = 0, $301 = 0, $302 = 0, $305 = 0, $306 = 0, $R7_1 = 0, $320 = 0, $351 = 0, $364 = 0, $psize_1 = 0, $390 = 0, $396 = 0, $404 = 0, $_pre_phi = 0, $F16_0 = 0, $414 = 0, $415 = 0, $428 = 0, $436 = 0, $I18_0 = 0, $443 = 0, $447 = 0, $448 = 0, $463 = 0, $T_0 = 0, $K19_0 = 0, $472 = 0, $473 = 0, $486 = 0, $487 = 0, $489 = 0, $501 = 0, $sp_0_in_i = 0, $sp_0_i = 0, label = 0;
if (($mem | 0) == 0) {
return;
}
$5 = HEAP32[24] | 0;
if (($mem - 8 | 0) >>> 0 < $5 >>> 0) {
_abort();
}
$10 = HEAP32[$mem - 4 >> 2] | 0;
if (($10 & 3 | 0) == 1) {
_abort();
}
$16 = $mem + (($10 & -8) - 8) | 0;
L621 : do {
if (($10 & 1 | 0) == 0) {
$21 = HEAP32[($mem - 8 | 0) >> 2] | 0;
if (($10 & 3 | 0) == 0) {
return;
}
$25 = $mem + (-8 - $21 | 0) | 0;
$26 = $21 + ($10 & -8) | 0;
if (($mem + (-8 - $21 | 0) | 0) >>> 0 < $5 >>> 0) {
_abort();
}
if (($25 | 0) == (HEAP32[25] | 0)) {
if ((HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] & 3 | 0) != 3) {
$p_0 = $25;
$psize_0 = $26;
break;
}
HEAP32[22] = $26;
HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] = HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] & -2;
HEAP32[$mem + ((-8 - $21 | 0) + 4) >> 2] = $26 | 1;
HEAP32[($mem + (($10 & -8) - 8) | 0) >> 2] = $26;
return;
}
if ($21 >>> 0 < 256) {
$37 = HEAP32[$mem + ((-8 - $21 | 0) + 8) >> 2] | 0;
$40 = HEAP32[$mem + ((-8 - $21 | 0) + 12) >> 2] | 0;
do {
if (($37 | 0) != (120 + ($21 >>> 3 << 1 << 2) | 0 | 0)) {
if ($37 >>> 0 < $5 >>> 0) {
_abort();
}
if ((HEAP32[$37 + 12 >> 2] | 0) == ($25 | 0)) {
break;
}
_abort();
}
} while (0);
if (($40 | 0) == ($37 | 0)) {
HEAP32[20] = HEAP32[20] & (1 << ($21 >>> 3) ^ -1);
$p_0 = $25;
$psize_0 = $26;
break;
}
do {
if (($40 | 0) == (120 + ($21 >>> 3 << 1 << 2) | 0 | 0)) {
$_pre_phi307 = $40 + 8 | 0;
} else {
if ($40 >>> 0 < $5 >>> 0) {
_abort();
}
if ((HEAP32[($40 + 8 | 0) >> 2] | 0) == ($25 | 0)) {
$_pre_phi307