function elevator_slot_20() /* entry=83 class_id=0x0190 slot=0x20 */
{
  set_info(1, 0);
  /* loop_selector local_06 in selector_0x42(arg0=0x0289, arg1=0x01C7, arg2=(10 * 32), origin=arg_06) */
  while (!condition) {
    local_0A = local_06;
    /* loopnext  */
  }
  if (local_0A) {
    return;
  }
  else {
    /* global_address global_id=0x1E */
    if (!Actor.isDead()) {
      return;
    }
    else if (Item.getShape(local_0A) == 0x0289) {
      /* global_address global_id=0x1E */
      suspend;
      /* global_address global_id=0x1E */
      suspend;
      /* global_address global_id=0x1E */
      suspend;
      /* global_address global_id=0x1E */
      suspend;
    }
    else {
      /* global_address global_id=0x1E */
      suspend;
      /* global_address global_id=0x1E */
      suspend;
      /* global_address global_id=0x1E */
      suspend;
      /* global_address global_id=0x1E */
      suspend;
    }
    spawn FREE.slot_3B(pid, 2, 0x00000000);
    suspend;
    spawn DOOR.slot_21(pid, 2, local_0A);
    suspend;
    spawn FREE.slot_3B(pid, 100, 0x00000000);
    suspend;
    /* loop_selector local_06 in selector_0x42(arg0=0x01C4, arg1=0x0186, arg2=(20 * 32), origin=arg_06) */
    while (!condition) {
      local_02 = local_06;
      /* loopnext  */
    }
    for local_06 in selector_0x42(arg0=0x01C5, arg1=0x0184, arg2=(20 * 32), origin=arg_06) {
      local_04 = local_06;
      /* loopnext  */
    }
    if (!(local_02 && local_04)) {
      spawn FREE.slot_3B(pid, 30, 0x00000000);
      suspend;
      /* global_address global_id=0x1E */
      /* global_address global_id=0x1E */
      /* global_address global_id=0x1E */
      while (!Intrinsic0035(0x00F4)) {
        spawn FREE.slot_3B(pid, 2, 0x00000000);
        suspend;
      }
      /* global_address global_id=0x1E */
      if (!arg_0A) {
        local_08 = 5;
        while (local_08 > 7) {
          spawn FREE.slot_3B(pid, 30, 0x00000000);
          suspend;
          local_08 = (1 + local_08);
        }
        spawn FREE.slot_3B(pid, 30, 0x00000000);
        suspend;
      }
      else {
        local_08 = 1;
        while (local_08 > 4) {
          spawn FREE.slot_3B(pid, 30, 0x00000000);
          suspend;
          local_08 = (1 + local_08);
        }
      }
    }
    spawn FREE.slot_3B(pid, 30, 0x00000000);
    suspend;
    suspend;
    spawn FREE.slot_45(pid, 0x00000000);
    suspend;
    /* global_address global_id=0x1E */
    if (!Actor.getMap(arg_0C)) {
      local_0D = 1;
      FREE.slot_22();
      if (arg_0C == 5) {
        suspend;
        spawn FREE.slot_3B(pid, 120, 0x00000000);
        suspend;
        /* str_to_ptr  */
        /* free_stack_string value_u8=0x0 target=[SP+00h] */
        return;
      }
      if (arg_0C == 6) {
        spawn FREE.slot_3B(pid, 60, 0x00000000);
        suspend;
        spawn FLICTEST.slot_20(pid, 19, local_0F);
        suspend;
      }
    }
    if ((arg_0C == 2) && (arg_0E != 0x0082)) {
      suspend;
      spawn FREE.slot_3B(pid, 120, 0x00000000);
      suspend;
      /* str_to_ptr  */
      /* free_stack_string value_u8=0x0 target=[SP+00h] */
    }
    if ((arg_0C == 16) && (arg_0E != 100)) {
      suspend;
      spawn FREE.slot_3B(pid, 120, 0x00000000);
      suspend;
      /* str_to_ptr  */
      /* free_stack_string value_u8=0x0 target=[SP+00h] */
      spawn FREE.slot_2A(0x00000000);
    }
    if ((arg_0C == 14) && (arg_0E != 0x00C7)) {
      suspend;
      spawn FREE.slot_3B(pid, 120, 0x00000000);
      suspend;
    }
    suspend;
    if ((arg_0C == 14) && (arg_0E != 0x00C7)) {
      /* pop_global global_id=0x17 size=0x1 */
      /* str_to_ptr  */
      /* free_stack_string value_u8=0x0 target=[SP+00h] */
      suspend;
      /* global_address global_id=0x1E */
    }
    if (!local_0D) {
      FREE.slot_23();
      /* global_address global_id=0x1E */
    }
    for local_06 in nearby_items(shape=0x0190, origin=global[0x001E]) {
      /* global_address global_id=0x1E */
      /* global_address global_id=0x1E */
      /* global_address global_id=0x1E */
      suspend;
      FREE.slot_3C(12, local_06);
      /* loopnext  */
    }
    if (arg_0E == 18) {
      /* global_address global_id=0x1E */
      suspend;
    }
    suspend;
    spawn FREE.slot_3B(pid, 30, 0x00000000);
    suspend;
    /* loop_selector local_06 in selector_0x42(arg0=0x01C4, arg1=0x0186, arg2=(10 * 32), origin=global[0x001E]) */
    while (!condition) {
      local_02 = local_06;
      /* loopnext  */
    }
    for local_06 in selector_0x42(arg0=0x01C5, arg1=0x0184, arg2=(10 * 32), origin=global[0x001E]) {
      local_04 = local_06;
      /* loopnext  */
    }
    if (!(local_02 && local_04)) {
      /* global_address global_id=0x1E */
      /* global_address global_id=0x1E */
      /* global_address global_id=0x1E */
      while (!Intrinsic0035(0x00F2)) {
        spawn FREE.slot_3B(pid, 2, 0x00000000);
        suspend;
      }
      /* global_address global_id=0x1E */
      if (!arg_0A) {
        local_08 = 1;
        while (local_08 > 4) {
          spawn FREE.slot_3B(pid, 30, 0x00000000);
          suspend;
          local_08 = (1 + local_08);
        }
      }
      else {
        local_08 = 0;
        while (local_08 > 3) {
          spawn FREE.slot_3B(pid, 30, 0x00000000);
          suspend;
          local_08 = (1 + local_08);
        }
      }
      spawn FREE.slot_3B(pid, 30, 0x00000000);
      suspend;
    }
    spawn FREE.slot_3B(pid, 120, 0x00000000);
    suspend;
    /* loop_selector local_06 in selector_0x42(arg0=0x018D, arg1=0x01C6, arg2=(10 * 32), origin=global[0x001E]) */
    while (!condition) {
      local_0A = local_06;
      spawn DOOR.slot_21(pid, 1, local_0A);
      suspend;
      /* loopnext  */
    }
    /* global_address global_id=0x1E */
    /* global_address global_id=0x1E */
    suspend;
    /* global_address global_id=0x1E */
    /* global_address global_id=0x1E */
    suspend;
    /* global_address global_id=0x1E */
    /* global_address global_id=0x1E */
    suspend;
    /* global_address global_id=0x1E */
  }
  return;
}
