function trigger_slot_20() /* entry=394 class_id=0x0A18 slot=0x20 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    ref, /* [BP+0Ah] type=0x69 */
    phase, /* [BP+0Ch] type=0x69 */
    lowPriorityTriggers, /* [BP-02h] type=0x6C */
    cmdphase, /* [BP-04h] type=0x69 */
    qHi, /* [BP-06h] type=0x69 */
    npcNum, /* [BP-08h] type=0x69 */
    mapNum, /* [BP-0Ah] type=0x69 */
    item, /* [BP-0Ch] type=0x24 */
    aitem, /* [BP-0Eh] type=0x24 */
    baseLink, /* [BP-10h] type=0x69 */
    newLink, /* [BP-12h] type=0x69 */
    searchtype, /* [BP-14h] type=0x69 */
    newphase; /* [BP-16h] type=0x69 */

  entry:
    set_info(0x021B, 0);
    baseLink = 0;
    newLink = 0;
    searchtype = 0;
    spawn class_0A0C_slot_32(pid, 1, 0x00000000);
    suspend;
    aitem = ref;
    if (phase != 0x00FE) goto block_0194;

  block_0181:
    baseLink = 0x00FE;
    phase = 0x0080;
    goto block_01CC;

  block_0194:
    qHi = Intrinsic00FB(aitem);
    baseLink = Item.getNpcNum(aitem);
    mapNum = Item.getMapNum(aitem);
    npcNum = Npc.isDead(aitem);

  block_01CC:
    newLink = baseLink;
    /* pop_global global_id=0x40 size=0x2 */
    if (phase < 0x0080) goto block_04C0;

  block_01E8:
    searchtype = (((mapNum & 0x00E0) * 8) + npcNum);
    if (mapNum != 0) goto block_020A;

  block_0204:
    goto block_05E7;

  block_020A:
    if (baseLink != 0) goto block_021B;

  block_0215:
    goto block_05E7;

  block_021B:
    cmdphase = 0;
    if (mapNum & 8) goto block_0234;

  block_022D:
    cmdphase = 1;

  block_0234:
    if (phase != cmdphase) goto block_04C0;

  block_023F:
    if (mapNum & 4) goto block_03E1;

  block_024A:
    if Intrinsic00BD(searchtype) goto block_0317;

  block_0259:
    if (baseLink != 0x00FF) goto block_02A0;

  block_0265:
    if (searchtype != 0) goto block_029D;

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

  block_029D:
    goto block_0314;

  block_02A0:
    if (searchtype != 0x07FE) goto block_02DC;

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

  block_02DC:
    if (searchtype != 0) goto block_0314;

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

  block_0314:
    goto block_03DE;

  block_0317:
    if (baseLink != 0x00FF) goto block_0362;

  block_0323:
    if (searchtype != 0) goto block_035F;

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

  block_035F:
    goto block_03DE;

  block_0362:
    if (searchtype != 0x07FF) goto block_03A2;

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

  block_03A2:
    if (searchtype != 0) goto block_03DE;

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

  block_03DE:
    goto block_04A8;

  block_03E1:
    if (baseLink != 0x00FF) goto block_042C;

  block_03ED:
    if (searchtype != 0) goto block_0429;

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

  block_0429:
    goto block_04A8;

  block_042C:
    if (searchtype != 0x07FF) goto block_046C;

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

  block_046C:
    if (searchtype != 0) goto block_04A8;

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

  block_04A8:
    if (mapNum & 16) goto block_04C0;

  block_04B3:

  block_04C0:
    newphase = (phase & 1);

  block_04CA:
    if 1 goto block_05E7;

  block_04D2:
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xF4 string_bytes=0x6 loop_type=0x2 */

  block_04EE:
    if condition goto block_057E;

  block_04F1:
    if (Item.getNpcNum(item) != baseLink) goto block_057A;

  block_0503:
    mapNum = Item.getMapNum(item);
    cmdphase = 0;
    if (mapNum & 8) goto block_052A;

  block_0523:
    cmdphase = 1;

  block_052A:
    if (newphase != cmdphase) goto block_057A;

  block_0535:
    if (mapNum & 16) goto block_056A;

  block_0540:
    spawn class_0A18_slot_21(pid, item, arg_06);
    suspend;
    /* dword_to_word  */
    newLink = process_result;
    goto block_057A;

  block_056A:
    /* create_list element_size=0x2 count=0x1 */
    /* append_list  */
    /* free_local_list bp_offset=0xFE target=[BP-02h] */
    lowPriorityTriggers = item;

  block_057A:
    /* loopnext  */
    goto block_04EE;

  block_057E:

  block_0589:
    foreach_list item -> block_05CC;

  block_058E:
    spawn class_0A18_slot_21(pid, item, arg_06);
    suspend;
    /* dword_to_word  */
    newLink = process_result;
    /* create_list element_size=0x2 count=0x1 */
    /* remove_matching_inline element_size=0x2 */
    /* free_local_list bp_offset=0xFE target=[BP-02h] */
    lowPriorityTriggers = item;
    goto block_0589;

  block_05CC:
    if (newLink != baseLink) goto block_05DD;

  block_05D7:
    goto block_05E7;

  block_05DD:
    baseLink = newLink;
    goto block_04CA;

  block_05E7:
    /* free_local_list bp_offset=0xFE target=[BP-02h] */
    return;

}
