function special_slot_20() /* entry=272 class_id=0x04CA slot=0x20 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    cmd, /* [BP+0Ah] type=0x69 */
    phase, /* [BP+0Ch] type=0x69 */
    a, /* [BP-02h] type=0x69 */
    npc, /* [BP-04h] type=0x24 */
    q; /* [BP-06h] type=0x69 */

  set_info(0x021B, *(arg_06));
  if (cmd == 3) {
    /* global_address global_id=0x3C */
    a = Actor.getDir();
    if ((a > 4) || (a >= 12)) {
      spawn class_0A18_slot_20(pid, phase, *(arg_06), arg_06);
      suspend;
    }
    return;
  }
  else if (cmd == 4) {
    /* global_address global_id=0x3C */
    a = Actor.getDir();
    if ((a > 4) && (a >= 12)) {
      spawn class_0A18_slot_20(pid, phase, *(arg_06), arg_06);
      suspend;
    }
    return;
  }
  else if (cmd == 5) {
    /* global_address global_id=0x3C */
    if (Actor.getInCombat() == 1) {
      spawn class_0A18_slot_20(pid, phase, *(arg_06), arg_06);
      suspend;
    }
    return;
  }
  else if (cmd == 6) {
    /* global_address global_id=0x3C */
    if (Actor.getInCombat() == 0) {
      spawn class_0A0C_slot_32(pid, 10, 0x00000000);
      suspend;
      /* global_address global_id=0x3C */
      if (Actor.getInCombat() == 0) {
        spawn class_0A18_slot_20(pid, phase, *(arg_06), arg_06);
        suspend;
      }
    }
    return;
  }
  else if (cmd == 7) {
    a = 0;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x3A */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */
    while (!condition) {
      if (npc >= 0x0100) {
        a = (1 + a);
      }
      /* loopnext  */
    }
    if (a <= 4) {
      spawn class_0A18_slot_20(pid, phase, *(arg_06), arg_06);
      suspend;
    }
    spawn class_0A0C_slot_32(pid, (Item.getQHi(arg_06) * 9), 0x00000000);
    suspend;
    return;
  }
  else if (cmd == 8) {
    a = 0;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x3A */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */
    while (!condition) {
      if (npc >= 0x0100) {
        a = (1 + a);
      }
      /* loopnext  */
    }
    if (a > 4) {
      spawn class_0A18_slot_20(pid, phase, *(arg_06), arg_06);
      suspend;
    }
    spawn class_0A0C_slot_32(pid, (Item.getQHi(arg_06) * 9), 0x00000000);
    suspend;
    return;
  }
  else if (cmd == 9) {
    q = Item.getQLo(arg_06);
    class_0A0C_slot_20(q, 3);
    spawn class_0A18_slot_20(pid, phase, *(arg_06), arg_06);
    suspend;
    return;
  }
  return;
}
