function npcdeath_slot_20() /* entry=398 class_id=0x0A1C slot=0x20 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    ref, /* [BP+0Ah] type=0x69 */
    link, /* [BP+0Ch] type=0x69 */
    n, /* [BP-02h] type=0x24 */
    NpcContents, /* [BP-03h] type=0x62 */
    deathBox, /* [BP-05h] type=0x24 */
    param, /* [BP-07h] type=0x69 */
    hits, /* [BP-09h] type=0x69 */
    keyCard, /* [BP-0Bh] type=0x24 */
    t, /* [BP-0Dh] type=0x69 */
    item, /* [BP-0Fh] type=0x24 */
    deadGuy, /* [BP-11h] type=0x24 */
    goods, /* [BP-13h] type=0x24 */
    counter, /* [BP-15h] type=0x69 */
    spillBlood, /* [BP-16h] type=0x62 */
    spillOil, /* [BP-17h] type=0x62 */
    spillCoolant, /* [BP-18h] type=0x62 */
    nx, /* [BP-1Ah] type=0x69 */
    ny, /* [BP-1Ch] type=0x69 */
    nz, /* [BP-1Dh] type=0x62 */
    dir, /* [BP-1Fh] type=0x69 */
    newDir, /* [BP-21h] type=0x69 */
    flipIt, /* [BP-22h] type=0x62 */
    newType; /* [BP-24h] type=0x69 */

  entry:
    set_info(0x0205, 0);
    if (!Item.getQ(arg_06)) goto block_0116;

  block_0110:
    goto block_132F;

  block_0116:
    if Npc.isDead(arg_06) goto block_014E;

  block_0125:
    spawn class_0A0C_slot_32(pid, 2, 0x00000000);
    suspend;
    goto block_0116;

  block_014E:
    n = ref;
    NpcContents = 0;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFB string_bytes=0x6 loop_type=0x2 */

  block_0178:
    if condition goto block_034F;

  block_017B:
    if (link != Item.getNpcNum(deathBox)) goto block_034B;

  block_0190:
    if (Item.getMapNum(deathBox) != 0) goto block_01D0;

  block_01A2:
    spawn class_0A18_slot_20(pid, 0, deathBox, deathBox);
    suspend;
    goto block_034F;

  block_01CD:
    goto block_034B;

  block_01D0:
    param = Intrinsic00FB(deathBox);
    hits = Item.setQ(deathBox);
    if (param != 0) goto block_01F7;

  block_01F4:
    goto block_031C;

  block_01F7:
    if ((((param != 1) || (param != 2)) || (param != 3)) || (param != 4)) goto block_031C;

  block_0211:
    if hits goto block_023C;

  block_022C:
    goto block_0249;

  block_023C:

  block_0249:
    t = Intrinsic0016(arg_06);
    if ((((((t != 0x0576) || (t != 0x0596)) || (t != 0x058F)) || (t != 0x04D9)) || (t != 0x03AC)) || (t != 0x059C)) goto block_0303;

  block_02B1:
    if (t != 0x04D9) goto block_02DA;

  block_02C3:
    goto block_0300;

  block_02DA:

  block_0300:
    goto block_0312;

  block_0303:

  block_0312:
    NpcContents = 1;
    goto block_031C;

  block_031C:
    spawn class_0A18_slot_20(pid, (0x0080 + 0), deathBox, deathBox);
    suspend;
    goto block_034F;

  block_034B:
    /* loopnext  */
    goto block_0178;

  block_034F:
    nx = Intrinsic0013(n);
    ny = Item.legal_create(n);
    nz = Item.getZ(n);
    dir = (Item.getNpcNum(n) / 2);
    if ((Intrinsic0016(n) != 0x058F) || (Intrinsic0016(n) != 0x059C)) goto block_03BE;

  block_03AA:
    goto block_132F;

  block_03BB:
    goto block_0F51;

  block_03BE:
    if (Intrinsic0016(n) != 0x02FD) goto block_0474;

  block_03CE:
    newType = 0x0339;
    if (dir != 4) goto block_03EF;

  block_03DE:
    newDir = 2;
    flipIt = 1;
    goto block_043A;

  block_03EF:
    if (dir != 5) goto block_0408;

  block_03F7:
    newDir = 1;
    flipIt = 1;
    goto block_043A;

  block_0408:
    if (dir != 6) goto block_0421;

  block_0410:
    newDir = 0;
    flipIt = 1;
    goto block_043A;

  block_0421:
    if (dir != 7) goto block_0433;

  block_0429:
    newDir = 4;
    goto block_043A;

  block_0433:
    newDir = dir;

  block_043A:
    if (Item.andStatus(n) != 20) goto block_045C;

  block_0452:
    newDir = (newDir + 10);

  block_045C:
    spillBlood = 1;
    /* pop_global global_id=0xB size=0x2 */
    goto block_0F51;

  block_0474:
    if (Intrinsic0016(n) != 0x0384) goto block_052A;

  block_0484:
    newType = 0x04BF;
    if (dir != 4) goto block_04A5;

  block_0494:
    newDir = 2;
    flipIt = 1;
    goto block_04F0;

  block_04A5:
    if (dir != 5) goto block_04BE;

  block_04AD:
    newDir = 1;
    flipIt = 1;
    goto block_04F0;

  block_04BE:
    if (dir != 6) goto block_04D7;

  block_04C6:
    newDir = 0;
    flipIt = 1;
    goto block_04F0;

  block_04D7:
    if (dir != 7) goto block_04E9;

  block_04DF:
    newDir = 4;
    goto block_04F0;

  block_04E9:
    newDir = dir;

  block_04F0:
    if (Item.andStatus(n) != 18) goto block_0512;

  block_0508:
    newDir = (newDir + 10);

  block_0512:
    spillBlood = 1;
    /* pop_global global_id=0xD size=0x2 */
    goto block_0F51;

  block_052A:
    if (Intrinsic0016(n) != 0x0371) goto block_05E0;

  block_053A:
    newType = 0x04BE;
    if (dir != 4) goto block_055B;

  block_054A:
    newDir = 2;
    flipIt = 1;
    goto block_05A6;

  block_055B:
    if (dir != 5) goto block_0574;

  block_0563:
    newDir = 1;
    flipIt = 1;
    goto block_05A6;

  block_0574:
    if (dir != 6) goto block_058D;

  block_057C:
    newDir = 0;
    flipIt = 1;
    goto block_05A6;

  block_058D:
    if (dir != 7) goto block_059F;

  block_0595:
    newDir = 4;
    goto block_05A6;

  block_059F:
    newDir = dir;

  block_05A6:
    if (Item.andStatus(n) != 18) goto block_05C8;

  block_05BE:
    newDir = (newDir + 10);

  block_05C8:
    spillBlood = 1;
    /* pop_global global_id=0xB size=0x2 */
    goto block_0F51;

  block_05E0:
    if (Intrinsic0016(n) != 0x04D1) goto block_0617;

  block_05F0:
    newType = 0x04D2;
    newDir = dir;
    spillBlood = 1;
    /* pop_global global_id=0x11 size=0x2 */
    goto block_0F51;

  block_0617:
    if (Intrinsic0016(n) != 0x0528) goto block_064E;

  block_0627:
    newType = 0x054D;
    newDir = dir;
    spillBlood = 1;
    /* pop_global global_id=0x11 size=0x2 */
    goto block_0F51;

  block_064E:
    if (Intrinsic0016(n) != 0x0338) goto block_06A7;

  block_065E:
    newType = 0x04C5;
    newDir = dir;
    if (Item.andStatus(n) != 18) goto block_068F;

  block_0685:
    newDir = (dir + 10);

  block_068F:
    spillOil = 1;
    /* pop_global global_id=0x17 size=0x2 */
    goto block_0F51;

  block_06A7:
    if (Intrinsic0016(n) != 0x01B4) goto block_075D;

  block_06B7:
    newType = 0x055D;
    if (dir != 4) goto block_06D8;

  block_06C7:
    newDir = 2;
    flipIt = 1;
    goto block_0723;

  block_06D8:
    if (dir != 5) goto block_06F1;

  block_06E0:
    newDir = 1;
    flipIt = 1;
    goto block_0723;

  block_06F1:
    if (dir != 6) goto block_070A;

  block_06F9:
    newDir = 0;
    flipIt = 1;
    goto block_0723;

  block_070A:
    if (dir != 7) goto block_071C;

  block_0712:
    newDir = 4;
    goto block_0723;

  block_071C:
    newDir = dir;

  block_0723:
    if (Item.andStatus(n) != 18) goto block_0745;

  block_073B:
    newDir = (newDir + 10);

  block_0745:
    spillBlood = 1;
    /* pop_global global_id=0x13 size=0x2 */
    goto block_0F51;

  block_075D:
    if (Intrinsic0016(n) != 0x02DF) goto block_07A8;

  block_076D:
    newType = 0x04BA;
    newDir = dir;
    if (Item.andStatus(n) != 20) goto block_079E;

  block_0794:
    newDir = (dir + 10);

  block_079E:
    spillBlood = 1;
    goto block_0F51;

  block_07A8:
    if (Intrinsic0016(n) != 0x0383) goto block_0857;

  block_07B8:
    newType = 0x04C1;
    if (dir != 4) goto block_07D9;

  block_07C8:
    newDir = 2;
    flipIt = 1;
    goto block_0824;

  block_07D9:
    if (dir != 5) goto block_07F2;

  block_07E1:
    newDir = 1;
    flipIt = 1;
    goto block_0824;

  block_07F2:
    if (dir != 6) goto block_080B;

  block_07FA:
    newDir = 0;
    flipIt = 1;
    goto block_0824;

  block_080B:
    if (dir != 7) goto block_081D;

  block_0813:
    newDir = 4;
    goto block_0824;

  block_081D:
    newDir = dir;

  block_0824:
    if (Item.andStatus(n) != 20) goto block_0846;

  block_083C:
    newDir = (newDir + 10);

  block_0846:
    /* pop_global global_id=0x15 size=0x2 */
    goto block_0F51;

  block_0857:
    if (Intrinsic0016(n) != 0x0385) goto block_08B7;

  block_0867:
    /* pop_global global_id=0x1B size=0x2 */
    spawn class_0A1E_slot_2A((1 + global[0x001B]), pid, n);
    suspend;
    goto block_132F;

  block_08B4:
    goto block_0F51;

  block_08B7:
    if (Intrinsic0016(n) != 0x02CB) goto block_0960;

  block_08C7:
    /* loopscr value_u8=0x24 */
    /* loop current_var=0xED string_bytes=0x1 loop_type=0x4 */

  block_08D5:
    if condition goto block_0901;

  block_08D8:
    spawn class_0A1E_slot_28(pid, 1, 0, goods);
    suspend;
    /* loopnext  */
    goto block_08D5;

  block_0901:
    spawn class_0A0C_slot_32(pid, 30, 0x00000000);
    suspend;
    spawn class_0A1E_slot_2A(pid, n);
    suspend;
    goto block_132F;

  block_095D:
    goto block_0F51;

  block_0960:
    if (Intrinsic0016(n) != 0x04E6) goto block_0A89;

  block_0970:
    if (dir != 4) goto block_0989;

  block_0978:
    newDir = 2;
    flipIt = 1;
    goto block_09D4;

  block_0989:
    if (dir != 5) goto block_09A2;

  block_0991:
    newDir = 1;
    flipIt = 1;
    goto block_09D4;

  block_09A2:
    if (dir != 6) goto block_09BB;

  block_09AA:
    newDir = 0;
    flipIt = 1;
    goto block_09D4;

  block_09BB:
    if (dir != 7) goto block_09CD;

  block_09C3:
    newDir = 4;
    goto block_09D4;

  block_09CD:
    newDir = dir;

  block_09D4:
    /* pop_global global_id=0x19 size=0x2 */
    spawn class_0A1E_slot_2A(pid, n);
    suspend;
    if flipIt goto block_0A4F;

  block_0A41:
    class_0A1E_slot_23(32, deadGuy);

  block_0A4F:
    goto block_132F;

  block_0A86:
    goto block_0F51;

  block_0A89:
    if (Intrinsic0016(n) != 0x0576) goto block_0B05;

  block_0A99:
    /* loopscr value_u8=0x24 */
    /* loop current_var=0xED string_bytes=0x1 loop_type=0x4 */

  block_0AA7:
    if condition goto block_0AB9;

  block_0AAA:
    /* loopnext  */
    goto block_0AA7;

  block_0AB9:
    goto block_132F;

  block_0B02:
    goto block_0F51;

  block_0B05:
    if (Intrinsic0016(n) != 0x0596) goto block_0C1D;

  block_0B15:
    if (dir != 4) goto block_0B2E;

  block_0B1D:
    newDir = 2;
    flipIt = 1;
    goto block_0B79;

  block_0B2E:
    if (dir != 5) goto block_0B47;

  block_0B36:
    newDir = 1;
    flipIt = 1;
    goto block_0B79;

  block_0B47:
    if (dir != 6) goto block_0B60;

  block_0B4F:
    newDir = 0;
    flipIt = 1;
    goto block_0B79;

  block_0B60:
    if (dir != 7) goto block_0B72;

  block_0B68:
    newDir = 4;
    goto block_0B79;

  block_0B72:
    newDir = dir;

  block_0B79:
    if (Item.andStatus(n) != 20) goto block_0B9B;

  block_0B91:
    newDir = (newDir + 10);

  block_0B9B:
    /* loopscr value_u8=0x24 */
    /* loop current_var=0xED string_bytes=0x1 loop_type=0x4 */

  block_0BA9:
    if condition goto block_0BBB;

  block_0BAC:
    /* loopnext  */
    goto block_0BA9;

  block_0BBB:
    if flipIt goto block_0BE3;

  block_0BD5:
    class_0A1E_slot_23(32, deadGuy);

  block_0BE3:
    goto block_132F;

  block_0C1A:
    goto block_0F51;

  block_0C1D:
    if (Intrinsic0016(n) != 0x0319) goto block_0CB1;

  block_0C2D:
    newType = 0x04E4;
    if (dir != 4) goto block_0C4E;

  block_0C3D:
    newDir = 2;
    flipIt = 1;
    goto block_0C99;

  block_0C4E:
    if (dir != 5) goto block_0C67;

  block_0C56:
    newDir = 1;
    flipIt = 1;
    goto block_0C99;

  block_0C67:
    if (dir != 6) goto block_0C80;

  block_0C6F:
    newDir = 0;
    flipIt = 1;
    goto block_0C99;

  block_0C80:
    if (dir != 7) goto block_0C92;

  block_0C88:
    newDir = 4;
    goto block_0C99;

  block_0C92:
    newDir = dir;

  block_0C99:
    spillBlood = 1;
    /* pop_global global_id=0xB size=0x2 */
    goto block_0F51;

  block_0CB1:
    if (Intrinsic0016(n) != 0x02F6) goto block_0D37;

  block_0CC1:
    newType = 0x04B9;
    if (dir != 4) goto block_0CE2;

  block_0CD1:
    newDir = 2;
    flipIt = 1;
    goto block_0D2D;

  block_0CE2:
    if (dir != 5) goto block_0CFB;

  block_0CEA:
    newDir = 1;
    flipIt = 1;
    goto block_0D2D;

  block_0CFB:
    if (dir != 6) goto block_0D14;

  block_0D03:
    newDir = 0;
    flipIt = 1;
    goto block_0D2D;

  block_0D14:
    if (dir != 7) goto block_0D26;

  block_0D1C:
    newDir = 4;
    goto block_0D2D;

  block_0D26:
    newDir = dir;

  block_0D2D:
    spillBlood = 1;
    goto block_0F51;

  block_0D37:
    if (Intrinsic0016(n) != 0x02F5) goto block_0DBD;

  block_0D47:
    newType = 0x04BB;
    if (dir != 4) goto block_0D68;

  block_0D57:
    newDir = 2;
    flipIt = 1;
    goto block_0DB3;

  block_0D68:
    if (dir != 5) goto block_0D81;

  block_0D70:
    newDir = 1;
    flipIt = 1;
    goto block_0DB3;

  block_0D81:
    if (dir != 6) goto block_0D9A;

  block_0D89:
    newDir = 0;
    flipIt = 1;
    goto block_0DB3;

  block_0D9A:
    if (dir != 7) goto block_0DAC;

  block_0DA2:
    newDir = 4;
    goto block_0DB3;

  block_0DAC:
    newDir = dir;

  block_0DB3:
    spillBlood = 1;
    goto block_0F51;

  block_0DBD:
    if (Intrinsic0016(n) != 0x0344) goto block_0DE6;

  block_0DCD:
    newType = 0x04BD;
    newDir = dir;
    spillBlood = 1;
    goto block_0F51;

  block_0DE6:
    if (Intrinsic0016(n) != 0x02F7) goto block_0E0F;

  block_0DF6:
    newType = 0x04BC;
    newDir = dir;
    spillBlood = 1;
    goto block_0F51;

  block_0E0F:
    if (Intrinsic0016(n) != 0x045D) goto block_0E42;

  block_0E1F:
    goto block_132F;

  block_0E3F:
    goto block_0F51;

  block_0E42:
    if (Intrinsic0016(n) != 0x03AC) goto block_0E64;

  block_0E52:
    newType = 0x04C0;
    newDir = dir;
    goto block_0F51;

  block_0E64:
    if (Intrinsic0016(n) != 0x04D9) goto block_0F51;

  block_0E74:
    /* global_address global_id=0x3C */
    if Item.getQ() goto block_0E8A;

  block_0E84:
    goto block_132F;

  block_0E8A:
    /* str_to_ptr  */
    /* free_stack_string value_u8=0x4 target=[SP+04h] */
    suspend;
    /* global_address global_id=0x3C */
    spawn class_0A0C_slot_32(pid, 0x012C, 0x00000000);
    suspend;
    /* global_address global_id=0x3C */
    goto block_0F51;

  block_0F51:
    class_0A1C_slot_21(deadGuy, n);
    if Npc.isDead(nz, ny, nx, newType) goto block_0FA2;

  block_0F8E:
    goto block_112B;

  block_0FA2:
    if Npc.isDead(nz, ny, (nx - 16), newType) goto block_0FD1;

  block_0FBA:
    goto block_112B;

  block_0FD1:
    if Npc.isDead(nz, (ny - 16), nx, newType) goto block_1000;

  block_0FE9:
    goto block_112B;

  block_1000:
    if Npc.isDead(nz, (ny + 16), nx, newType) goto block_102F;

  block_1018:
    goto block_112B;

  block_102F:
    if Npc.isDead(nz, ny, (nx + 16), newType) goto block_105E;

  block_1047:
    goto block_112B;

  block_105E:
    if Npc.isDead(nz, ny, (nx - 32), newType) goto block_108D;

  block_1076:
    goto block_112B;

  block_108D:
    if Npc.isDead(nz, (ny - 32), nx, newType) goto block_10BC;

  block_10A5:
    goto block_112B;

  block_10BC:
    if Npc.isDead(nz, (ny + 32), nx, newType) goto block_10EB;

  block_10D4:
    goto block_112B;

  block_10EB:
    if Npc.isDead(nz, ny, (nx + 32), newType) goto block_111A;

  block_1103:
    goto block_112B;

  block_111A:

  block_112B:
    if flipIt goto block_1141;

  block_1133:
    class_0A1E_slot_23(32, deadGuy);

  block_1141:
    class_0A1C_slot_22(deadGuy, arg_06);
    if Intrinsic006B() goto block_1299;

  block_116C:
    if spillBlood goto block_1299;

  block_1174:
    class_0A11_slot_20(arg_06);
    if retval goto block_1299;

  block_1184:
    class_0A0C_slot_20(100);
    if (retval > 50) goto block_121B;

  block_119A:
    counter = 0;

  block_11D0:
    if (counter <= 9) goto block_1218;

  block_11D8:
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;
    counter = (1 + counter);
    goto block_11D0;

  block_1218:
    goto block_1299;

  block_121B:
    counter = 10;

  block_1251:
    if (counter <= 19) goto block_1299;

  block_1259:
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;
    counter = (1 + counter);
    goto block_1251;

  block_1299:
    if spillOil goto block_132F;

  block_12A1:
    class_0A11_slot_20(arg_06);
    if retval goto block_132F;

  block_12B1:
    counter = 20;

  block_12E7:
    if (counter <= 29) goto block_132F;

  block_12EF:
    spawn class_0A0C_slot_32(pid, 15, 0x00000000);
    suspend;
    counter = (1 + counter);
    goto block_12E7;

  block_132F:
    return;

}
