function roll_ns_slot_21() /* entry=186 class_id=0x0346 slot=0x21 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    time, /* [BP-02h] type=0x69 */
    f, /* [BP-04h] type=0x69 */
    a, /* [BP-06h] type=0x69 */
    total, /* [BP-08h] type=0x69 */
    counter, /* [BP-0Ah] type=0x69 */
    dz, /* [BP-0Ch] type=0x69 */
    oldz, /* [BP-0Eh] type=0x69 */
    wp, /* [BP-13h] type=0x24 */
    cargo, /* [BP-15h] type=0x24 */
    zCheck, /* [BP-17h] type=0x69 */
    zMax; /* [BP-18h] type=0x62 */

  entry:
    set_info(0x0001, *(arg_06));
    a = Item.getNpcNum(arg_06);
    time = (a & 31);
    if (time != 0) goto block_0419;

  block_0412:
    time = 1;

  block_0419:
    f = Item.getFrame(arg_06);
    wp = Intrinsic0013(arg_06);
    local_11 = Item.legal_create(arg_06);
    local_0F = Item.getZ(arg_06);
    if (a & 32) goto block_078A;

  block_0478:
    if (a < 0x0080) goto block_0607;

  block_0484:
    if 1 goto block_0604;

  block_048C:
    f = (f - 1);
    if (f < 0) goto block_04AB;

  block_04A4:
    f = 3;

  block_04AB:
    total = 0;
    /* loopscr value_u8=0x24 */
    /* loop current_var=0xEB string_bytes=0x1 loop_type=0x6 */

  block_04C2:
    if condition goto block_04DE;

  block_04C5:
    total = (1 + total);
    /* loopnext  */
    goto block_04C2;

  block_04DE:
    local_11 = (local_11 + 8);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_057C;

  block_0508:
    counter = 1;

  block_050F:
    if (counter <= total) goto block_0557;

  block_051A:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_050F;

  block_0557:
    spawn class_0346_slot_20(pid, arg_06);
    suspend;
    goto block_0AA7;

  block_057C:
    counter = 1;

  block_0583:
    if (counter <= total) goto block_05CE;

  block_058E:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0583;

  block_05CE:
    spawn class_0A0C_slot_32(pid, time, 0x00000000);
    suspend;
    goto block_0484;

  block_0604:
    goto block_0787;

  block_0607:
    if 1 goto block_0787;

  block_060F:
    f = (1 + f);
    if (f > 3) goto block_062E;

  block_0627:
    f = 0;

  block_062E:
    total = 0;
    /* loopscr value_u8=0x24 */
    /* loop current_var=0xEB string_bytes=0x1 loop_type=0x6 */

  block_0645:
    if condition goto block_0661;

  block_0648:
    total = (1 + total);
    /* loopnext  */
    goto block_0645;

  block_0661:
    local_11 = (local_11 - 8);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_06FF;

  block_068B:
    counter = 1;

  block_0692:
    if (counter <= total) goto block_06DA;

  block_069D:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0692;

  block_06DA:
    spawn class_0346_slot_20(pid, arg_06);
    suspend;
    goto block_0AA7;

  block_06FF:
    counter = 1;

  block_0706:
    if (counter <= total) goto block_0751;

  block_0711:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0706;

  block_0751:
    spawn class_0A0C_slot_32(pid, time, 0x00000000);
    suspend;
    goto block_0607;

  block_0787:
    goto block_0AA7;

  block_078A:
    zCheck = 0;
    zMax = local_0F;
    if (a < 0x0080) goto block_0927;

  block_07A4:
    if 1 goto block_0924;

  block_07AC:
    f = (f - 1);
    if (f < 0) goto block_07CB;

  block_07C4:
    f = 3;

  block_07CB:
    local_11 = (local_11 + 8);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_0840;

  block_07F3:
    local_0F = (1 + local_0F);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_0840;

  block_081B:
    spawn class_0346_slot_20(pid, arg_06);
    suspend;
    goto block_0AA7;

  block_0840:
    if (local_0F > 1) goto block_088A;

  block_084B:
    local_0F = (local_0F - 4);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_087D;

  block_0873:
    local_0F = (local_0F + 4);

  block_087D:
    zCheck = (zMax - local_0F);
    goto block_08EE;

  block_088A:
    if (zCheck > 12) goto block_08EE;

  block_0895:
    spawn class_0A0C_slot_32(pid, 6, 0x00000000);
    suspend;
    spawn class_0346_slot_20(pid, arg_06);
    suspend;
    goto block_0AA7;

  block_08EB:
    goto block_08EE;

  block_08EE:
    spawn class_0A0C_slot_32(pid, time, 0x00000000);
    suspend;
    goto block_07A4;

  block_0924:
    goto block_0AA7;

  block_0927:
    if 1 goto block_0AA7;

  block_092F:
    f = (1 + f);
    if (f > 3) goto block_094E;

  block_0947:
    f = 0;

  block_094E:
    local_11 = (local_11 - 8);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_09C3;

  block_0976:
    local_0F = (1 + local_0F);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_09C3;

  block_099E:
    spawn class_0346_slot_20(pid, arg_06);
    suspend;
    goto block_0AA7;

  block_09C3:
    if (local_0F > 1) goto block_0A0D;

  block_09CE:
    local_0F = (local_0F - 4);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_0A00;

  block_09F6:
    local_0F = (local_0F + 4);

  block_0A00:
    zCheck = (zMax - local_0F);
    goto block_0A71;

  block_0A0D:
    if (zCheck > 12) goto block_0A71;

  block_0A18:
    spawn class_0A0C_slot_32(pid, 6, 0x00000000);
    suspend;
    spawn class_0346_slot_20(pid, arg_06);
    suspend;
    goto block_0AA7;

  block_0A6E:
    goto block_0A71;

  block_0A71:
    spawn class_0A0C_slot_32(pid, time, 0x00000000);
    suspend;
    goto block_0927;

  block_0AA7:
    return;

}
