function trigger_slot_20() /* entry=469 class_id=0x0A17 slot=0x20 */
{
  entry:
    set_info(0x021B, 0);
    local_10 = 0;
    local_12 = 0;
    local_14 = 0;
    spawn FREE.slot_3B(pid, 1, 0x00000000);
    suspend;
    local_0E = arg_0A;
    if (arg_0C != 0x00FE) goto block_0161;

  block_0154:
    local_10 = 0x00FE;
    arg_0C = 0x0080;
    goto block_018D;

  block_0161:
    local_06 = Item.getQHi(local_0E);
    local_10 = Item.getQLo(local_0E);
    local_0A = Item.getMapNum(local_0E);
    local_08 = Item.getNpcNum(local_0E);

  block_018D:
    local_12 = local_10;
    /* pop_global global_id=0x22 size=0x2 */
    if (arg_0C < 0x0080) goto block_03A6;

  block_01A0:
    local_14 = (((local_0A & 0x00E0) * 8) + local_08);
    if (local_0A != 0) goto block_01B9;

  block_01B6:
    goto block_0485;

  block_01B9:
    if (local_10 != 0) goto block_01C4;

  block_01C1:
    goto block_0485;

  block_01C4:
    local_04 = 0;
    if (local_0A & 8) goto block_01D4;

  block_01D0:
    local_04 = 1;

  block_01D4:
    if (arg_0C != local_04) goto block_03A6;

  block_01DC:
    if (local_0A & 4) goto block_0306;

  block_01E4:
    if Item.isCrusTypeNPC(local_14) goto block_0275;

  block_01F0:
    if (local_10 != 0x00FF) goto block_0222;

  block_01F9:
    if (local_14 != 0) goto block_021F;

  block_0201:
    spawn TRIGGER.slot_2A(pid, local_14, local_10, local_0A, local_08, local_06, arg_0A, arg_06);
    suspend;

  block_021F:
    goto block_0272;

  block_0222:
    if (local_14 != 0x07FE) goto block_024C;

  block_022B:
    spawn TRIGGER.slot_2B(pid, local_14, local_10, local_0A, local_08, local_06, arg_0A, arg_06);
    suspend;
    goto block_0272;

  block_024C:
    if (local_14 != 0) goto block_0272;

  block_0254:
    spawn TRIGGER.slot_29(pid, local_14, local_10, local_0A, local_08, local_06, arg_0A, arg_06);
    suspend;

  block_0272:
    goto block_0303;

  block_0275:
    if (local_10 != 0x00FF) goto block_02AB;

  block_027E:
    if (local_14 != 0) goto block_02A8;

  block_0286:
    spawn TRIGGER.slot_25(pid, local_14, local_10, local_0A, local_08, local_06, arg_0A, arg_06);
    suspend;
    /* dword_to_word  */
    local_10 = process_result;

  block_02A8:
    goto block_0303;

  block_02AB:
    if (local_14 != 0x07FF) goto block_02D9;

  block_02B4:
    spawn TRIGGER.slot_24(pid, local_14, local_10, local_0A, local_08, local_06, arg_0A, arg_06);
    suspend;
    /* dword_to_word  */
    local_10 = process_result;
    goto block_0303;

  block_02D9:
    if (local_14 != 0) goto block_0303;

  block_02E1:
    spawn TRIGGER.slot_23(pid, local_14, local_10, local_0A, local_08, local_06, arg_0A, arg_06);
    suspend;
    /* dword_to_word  */
    local_10 = process_result;

  block_0303:
    goto block_0394;

  block_0306:
    if (local_10 != 0x00FF) goto block_033C;

  block_030F:
    if (local_14 != 0) goto block_0339;

  block_0317:
    spawn TRIGGER.slot_28(pid, local_14, local_10, local_0A, local_08, local_06, arg_0A, arg_06);
    suspend;
    /* dword_to_word  */
    local_10 = process_result;

  block_0339:
    goto block_0394;

  block_033C:
    if (local_14 != 0x07FF) goto block_036A;

  block_0345:
    spawn TRIGGER.slot_27(pid, local_14, local_10, local_0A, local_08, local_06, arg_0A, arg_06);
    suspend;
    /* dword_to_word  */
    local_10 = process_result;
    goto block_0394;

  block_036A:
    if (local_14 != 0) goto block_0394;

  block_0372:
    spawn TRIGGER.slot_26(pid, local_14, local_10, local_0A, local_08, local_06, arg_0A, arg_06);
    suspend;
    /* dword_to_word  */
    local_10 = process_result;

  block_0394:
    if (local_0A & 16) goto block_03A6;

  block_039C:

  block_03A6:
    local_16 = (arg_0C & 1);

  block_03AD:
    if 1 goto block_0485;

  block_03B2:
    for local_0C in nearby_items(shape=0x04B1, origin=local_0E) {
      if (Item.getQLo(local_0C) == local_10) {
        local_0A = Item.getMapNum(local_0C);
        local_04 = 0;
        if (!(local_0A & 8)) {
          local_04 = 1;
        }
        if (local_16 == local_04) {
          if (!(local_0A & 16)) {
            spawn TRIGGER.slot_21(pid, local_0C, arg_06);
            suspend;
            /* dword_to_word  */
            local_12 = process_result;
          }
          else {
            /* create_list element_size=0x2 count=0x1 */
            /* append_list  */
            /* free_local_list bp_offset=0xFE target=[BP-02h] */
            local_02 = local_0C;
          }
        }
      }
      /* loopnext  */
    }

  block_0431:

  block_0439:
    foreach_list local_0C -> block_0473;

  block_043E:
    spawn TRIGGER.slot_21(pid, local_0C, arg_06);
    suspend;
    /* dword_to_word  */
    local_18 = process_result;
    /* create_list element_size=0x2 count=0x1 */
    /* remove_matching_inline element_size=0x2 */
    /* free_local_list bp_offset=0xFE target=[BP-02h] */
    local_02 = local_0C;
    if (local_18 != local_10) goto block_0470;

  block_046C:
    local_12 = local_18;

  block_0470:
    goto block_0439;

  block_0473:
    if (local_12 != local_10) goto block_047E;

  block_047B:
    goto block_0485;

  block_047E:
    local_10 = local_12;
    goto block_03AD;

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

}
