function trigger_slot_21() /* entry=394 class_id=0x0A18 slot=0x21 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    ref, /* [BP+0Ah] type=0x69 */
    cmd, /* [BP-02h] type=0x69 */
    qHi, /* [BP-04h] type=0x69 */
    npcNum, /* [BP-06h] type=0x69 */
    mapNum, /* [BP-08h] type=0x69 */
    searchtype, /* [BP-0Ah] type=0x69 */
    aitem, /* [BP-0Ch] type=0x24 */
    baseLink, /* [BP-0Eh] type=0x69 */
    newLink; /* [BP-10h] type=0x69 */

  entry:
    set_info(0x021B, 0);
    aitem = ref;
    baseLink = Item.getNpcNum(aitem);
    newLink = baseLink;
    qHi = Intrinsic00FB(aitem);
    mapNum = Item.getMapNum(aitem);
    npcNum = Npc.isDead(aitem);
    searchtype = (((mapNum & 0x00E0) * 8) + npcNum);
    if (mapNum != 0) goto block_0718;

  block_0712:
    goto block_098B;

  block_0718:
    if (mapNum & 4) goto block_08BA;

  block_0723:
    if Intrinsic00BD(searchtype) goto block_07F0;

  block_0732:
    if (baseLink != 0x00FF) goto block_0779;

  block_073E:
    if (searchtype != 0) goto block_0776;

  block_0749:
    spawn class_0A18_slot_2A(pid, searchtype, baseLink, mapNum, npcNum, qHi, ref, arg_06);
    suspend;

  block_0776:
    goto block_07ED;

  block_0779:
    if (searchtype != 0x07FE) goto block_07B5;

  block_0785:
    spawn class_0A18_slot_2B(pid, searchtype, baseLink, mapNum, npcNum, qHi, ref, arg_06);
    suspend;
    goto block_07ED;

  block_07B5:
    if (searchtype != 0) goto block_07ED;

  block_07C0:
    spawn class_0A18_slot_29(pid, searchtype, baseLink, mapNum, npcNum, qHi, ref, arg_06);
    suspend;

  block_07ED:
    goto block_08B7;

  block_07F0:
    if (baseLink != 0x00FF) goto block_083B;

  block_07FC:
    if (searchtype != 0) goto block_0838;

  block_0807:
    spawn class_0A18_slot_25(pid, searchtype, baseLink, mapNum, npcNum, qHi, ref, arg_06);
    suspend;
    /* dword_to_word  */
    newLink = process_result;

  block_0838:
    goto block_08B7;

  block_083B:
    if (searchtype != 0x07FF) goto block_087B;

  block_0847:
    spawn class_0A18_slot_24(pid, searchtype, baseLink, mapNum, npcNum, qHi, ref, arg_06);
    suspend;
    /* dword_to_word  */
    newLink = process_result;
    goto block_08B7;

  block_087B:
    if (searchtype != 0) goto block_08B7;

  block_0886:
    spawn class_0A18_slot_23(pid, searchtype, baseLink, mapNum, npcNum, qHi, ref, arg_06);
    suspend;
    /* dword_to_word  */
    newLink = process_result;

  block_08B7:
    goto block_0981;

  block_08BA:
    if (baseLink != 0x00FF) goto block_0905;

  block_08C6:
    if (searchtype != 0) goto block_0902;

  block_08D1:
    spawn class_0A18_slot_28(pid, searchtype, baseLink, mapNum, npcNum, qHi, ref, arg_06);
    suspend;
    /* dword_to_word  */
    newLink = process_result;

  block_0902:
    goto block_0981;

  block_0905:
    if (searchtype != 0x07FF) goto block_0945;

  block_0911:
    spawn class_0A18_slot_27(pid, searchtype, baseLink, mapNum, npcNum, qHi, ref, arg_06);
    suspend;
    /* dword_to_word  */
    newLink = process_result;
    goto block_0981;

  block_0945:
    if (searchtype != 0) goto block_0981;

  block_0950:
    spawn class_0A18_slot_26(pid, searchtype, baseLink, mapNum, npcNum, qHi, ref, arg_06);
    suspend;
    /* dword_to_word  */
    newLink = process_result;

  block_0981:
    /* word_to_dword  */
    /* pop_result  */
    goto block_098B;

  block_098B:
    return;

}
