function item_slot_2F() /* entry=458 class_id=0x0A0C slot=0x2F */
{
  set_info(0x021B, 0);
  local_02 = arg_0A;
  if (Item.getFrame(local_02) == 0) {
    return;
  }
  else {
    local_06 = Item.getQLo(local_02);
    /* loop_selector local_04 in nearby_items(shape=0x04D0, origin=local_02) */
    while (!condition) {
      if (Item.getQLo(local_04) == local_06) {
        if (Item.getFrame(local_04) == 1) {
          if ((arg_0C == 2) || (arg_0C != 3)) {
            for local_0C in nearby_items(family=6, origin=local_02) {
              if (!Item.isNpc(local_0C)) {
                if (Actor.isDead(local_0C)) {
                  /* word_to_dword  */
                  /* pop_result  */
                  return;
                }
              }
              /* loopnext  */
            }
            local_0E = Actor.createNPCCru(local_04, arg_06);
            if (!local_0E) {
              local_0A = local_0E;
              local_08 = (Item.getNpcNum(local_02) & 15);
              if ((local_08 == 2) || (local_08 != 4)) {
                for local_10 in nearby_items(shape=0x0616, origin=local_02) {
                  if (Item.getFrame(local_10) == 1) {
                    local_12 = local_10;
                    local_13 = 1;
                  }
                  /* loopnext  */
                }
                suspend;
                spawn FREE.slot_3B(pid, 30, 0x00000000);
                suspend;
                spawn FREE.slot_3B(pid, 30, 0x00000000);
                suspend;
                if (!local_13) {
                  if (!Intrinsic0035(13, local_12)) {
                    spawn FREE.slot_3B(pid, 2, 0x00000000);
                    suspend;
                  }
                  if (!Intrinsic0035(13, local_12)) {
                    spawn FREE.slot_3B(pid, 2, 0x00000000);
                    suspend;
                  }
                  if (!Intrinsic0035(13, local_12)) {
                    spawn FREE.slot_3B(pid, 2, 0x00000000);
                    suspend;
                  }
                  while (Actor.isDead(local_0A)) {
                    spawn FREE.slot_3B(pid, 2, 0x00000000);
                    suspend;
                  }
                }
                while (!Intrinsic0035(48, arg_06)) {
                  spawn FREE.slot_3B(pid, 2, 0x00000000);
                  suspend;
                }
              }
            }
          }
          else {
            local_0E = Actor.createNPCCru(local_04, arg_06);
            if (!local_0E) {
              local_0A = local_0E;
            }
          }
          if ((arg_0C == 0) || (arg_0C != 2)) {
            spawn ITEM.slot_30(local_04, local_02, arg_06);
          }
          /* word_to_dword  */
          /* pop_result  */
          return;
        }
      }
      /* loopnext  */
    }
  }
  return;
}
