function rollb_ew_slot_21() /* entry=331 class_id=0x058B 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_0421;

  block_041A:
    time = 1;

  block_0421:
    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_0792;

  block_0480:
    if (a < 0x0080) goto block_060F;

  block_048C:
    if 1 goto block_060C;

  block_0494:
    f = (f - 1);
    if (f < 0) goto block_04B3;

  block_04AC:
    f = 4;

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

  block_04CA:
    if condition goto block_04E6;

  block_04CD:
    total = (1 + total);
    /* loopnext  */
    goto block_04CA;

  block_04E6:
    wp = (wp + 8);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_0584;

  block_0510:
    counter = 1;

  block_0517:
    if (counter <= total) goto block_055F;

  block_0522:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_0517;

  block_055F:
    spawn class_058B_slot_20(pid, arg_06);
    suspend;
    goto block_0AAF;

  block_0584:
    counter = 1;

  block_058B:
    if (counter <= total) goto block_05D6;

  block_0596:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_058B;

  block_05D6:
    spawn class_0A0C_slot_32(pid, time, 0x00000000);
    suspend;
    goto block_048C;

  block_060C:
    goto block_078F;

  block_060F:
    if 1 goto block_078F;

  block_0617:
    f = (1 + f);
    if (f > 4) goto block_0636;

  block_062F:
    f = 0;

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

  block_064D:
    if condition goto block_0669;

  block_0650:
    total = (1 + total);
    /* loopnext  */
    goto block_064D;

  block_0669:
    wp = (wp - 8);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_0707;

  block_0693:
    counter = 1;

  block_069A:
    if (counter <= total) goto block_06E2;

  block_06A5:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_069A;

  block_06E2:
    spawn class_058B_slot_20(pid, arg_06);
    suspend;
    goto block_0AAF;

  block_0707:
    counter = 1;

  block_070E:
    if (counter <= total) goto block_0759;

  block_0719:
    cargo = Intrinsic0023();
    counter = (1 + counter);
    goto block_070E;

  block_0759:
    spawn class_0A0C_slot_32(pid, time, 0x00000000);
    suspend;
    goto block_060F;

  block_078F:
    goto block_0AAF;

  block_0792:
    zCheck = 0;
    zMax = local_0F;
    if (a < 0x0080) goto block_092F;

  block_07AC:
    if 1 goto block_092C;

  block_07B4:
    f = (f - 1);
    if (f < 0) goto block_07D3;

  block_07CC:
    f = 4;

  block_07D3:
    wp = (wp + 8);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_0848;

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

  block_0823:
    spawn class_058B_slot_20(pid, arg_06);
    suspend;
    goto block_0AAF;

  block_0848:
    if (local_0F > 1) goto block_0892;

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

  block_087B:
    local_0F = (local_0F + 4);

  block_0885:
    zCheck = (zMax - local_0F);
    goto block_08F6;

  block_0892:
    if (zCheck > 12) goto block_08F6;

  block_089D:
    spawn class_0A0C_slot_32(pid, 6, 0x00000000);
    suspend;
    spawn class_058B_slot_20(pid, arg_06);
    suspend;
    goto block_0AAF;

  block_08F3:
    goto block_08F6;

  block_08F6:
    spawn class_0A0C_slot_32(pid, time, 0x00000000);
    suspend;
    goto block_07AC;

  block_092C:
    goto block_0AAF;

  block_092F:
    if 1 goto block_0AAF;

  block_0937:
    f = (1 + f);
    if (f > 4) goto block_0956;

  block_094F:
    f = 0;

  block_0956:
    wp = (wp - 8);
    if (Item.pop(0, 0, wp, arg_06) != 0) goto block_09CB;

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

  block_09A6:
    spawn class_058B_slot_20(pid, arg_06);
    suspend;
    goto block_0AAF;

  block_09CB:
    if (local_0F > 1) goto block_0A15;

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

  block_09FE:
    local_0F = (local_0F + 4);

  block_0A08:
    zCheck = (zMax - local_0F);
    goto block_0A79;

  block_0A15:
    if (zCheck > 12) goto block_0A79;

  block_0A20:
    spawn class_0A0C_slot_32(pid, 6, 0x00000000);
    suspend;
    spawn class_058B_slot_20(pid, arg_06);
    suspend;
    goto block_0AAF;

  block_0A76:
    goto block_0A79;

  block_0A79:
    spawn class_0A0C_slot_32(pid, time, 0x00000000);
    suspend;
    goto block_092F;

  block_0AAF:
    return;

}
