function trigger_slot_27() /* entry=394 class_id=0x0A18 slot=0x27 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    ref, /* [BP+0Ah] type=0x69 */
    qHi, /* [BP+0Ch] type=0x69 */
    npcNum, /* [BP+0Eh] type=0x69 */
    mapNum, /* [BP+10h] type=0x69 */
    baseLink, /* [BP+12h] type=0x69 */
    searchtype, /* [BP+14h] type=0x69 */
    scmd, /* [BP-02h] type=0x69 */
    cmd, /* [BP-04h] type=0x69 */
    a, /* [BP-06h] type=0x69 */
    b, /* [BP-08h] type=0x69 */
    c, /* [BP-0Ah] type=0x69 */
    d, /* [BP-0Ch] type=0x69 */
    item, /* [BP-0Eh] type=0x24 */
    aitem, /* [BP-10h] type=0x24 */
    newLink, /* [BP-12h] type=0x69 */
    distance, /* [BP-14h] type=0x69 */
    item2; /* [BP-16h] type=0x24 */

  entry:
    set_info(0x021B, 0);
    newLink = baseLink;
    aitem = ref;
    cmd = (mapNum & 3);
    if (cmd != 0) goto block_236C;

  block_2324:
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x3A */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */

  block_2341:
    if condition goto block_2367;

  block_2344:
    if (Item.getNpcNum(item) != baseLink) goto block_2363;

  block_2356:

  block_2363:
    /* loopnext  */
    goto block_2341;

  block_2367:
    goto block_2847;

  block_236C:
    if (cmd != 1) goto block_23BC;

  block_2374:
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x3A */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */

  block_2391:
    if condition goto block_23B7;

  block_2394:
    if (Item.getNpcNum(item) != baseLink) goto block_23B3;

  block_23A6:

  block_23B3:
    /* loopnext  */
    goto block_2391;

  block_23B7:
    goto block_2847;

  block_23BC:
    if (cmd != 2) goto block_240E;

  block_23C4:
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x3A */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */

  block_23E1:
    if condition goto block_2409;

  block_23E4:
    if (Item.getNpcNum(item) != baseLink) goto block_2405;

  block_23F6:

  block_2405:
    /* loopnext  */
    goto block_23E1;

  block_2409:
    goto block_2847;

  block_240E:
    if (cmd != 3) goto block_2847;

  block_2416:
    scmd = (qHi & 7);
    if (scmd != 0) goto block_24B7;

  block_2428:
    d = (qHi / 8);
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */

  block_2450:
    if condition goto block_24B2;

  block_2453:
    if (Item.getNpcNum(item) != baseLink) goto block_24AE;

  block_2465:
    a = Item.getNpcNum(item);
    c = (a & 15);
    b = Item.getMapNum(item);
    b = (((a & 0x00E0) * 8) + b);
    class_0A0C_slot_30(d, c, b, item);

  block_24AE:
    /* loopnext  */
    goto block_2450;

  block_24B2:
    goto block_2844;

  block_24B7:
    if (scmd != 1) goto block_2617;

  block_24BF:
    d = (qHi / 8);
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x3A */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */

  block_24E6:
    if condition goto block_2612;

  block_24E9:
    if (Item.getNpcNum(item) != baseLink) goto block_260E;

  block_24FB:
    if (d != 31) goto block_2541;

  block_2513:
    suspend;
    goto block_260E;

  block_2541:
    c = Item.getFrame(item);
    b = Intrinsic0016(item);
    a = (b & 0x00FF);
    b = (b & 0x0700);
    b = (b / 8);
    b = (b + c);
    suspend;
    /* bit_not  */

  block_260E:
    /* loopnext  */
    goto block_24E6;

  block_2612:
    goto block_2844;

  block_2617:
    if (scmd != 2) goto block_2671;

  block_261F:
    a = (qHi / 8);
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x3A */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */

  block_2646:
    if condition goto block_266C;

  block_2649:
    if (Item.getNpcNum(item) != baseLink) goto block_2668;

  block_265B:

  block_2668:
    /* loopnext  */
    goto block_2646;

  block_266C:
    goto block_2844;

  block_2671:
    if (scmd != 3) goto block_26F0;

  block_2679:
    if (global[0x0040] != 100) goto block_2690;

  block_2686:
    distance = 32;
    goto block_2699;

  block_2690:
    distance = global[0x0040];

  block_2699:
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x3A */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */

  block_26B4:
    if condition goto block_26EB;

  block_26B7:
    if (Item.getNpcNum(item) != baseLink) goto block_26E7;

  block_26C9:
    a = (qHi / 8);
    spawn class_0A18_slot_22(a, item, arg_06);

  block_26E7:
    /* loopnext  */
    goto block_26B4;

  block_26EB:
    goto block_2844;

  block_26F0:
    if (scmd != 4) goto block_270F;

  block_26F8:
    a = (qHi / 8);
    newLink = (newLink + a);
    goto block_2844;

  block_270F:
    if (scmd != 5) goto block_272E;

  block_2717:
    a = (qHi / 8);
    newLink = (newLink - a);
    goto block_2844;

  block_272E:
    if (scmd != 6) goto block_2844;

  block_2736:
    d = (qHi / 8);
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */

  block_275E:
    if condition goto block_283F;

  block_2761:
    if (Item.getNpcNum(item) != baseLink) goto block_283B;

  block_2773:
    a = Item.hurl(item);
    c = (a & 15);
    b = Item.getMapNum(item);
    b = (((a & 0x00E0) * 8) + b);
    if (b != 0) goto block_283B;

  block_27B5:
    if (Item.getQLo(c, b, item2) != 1) goto block_283B;

  block_27CB:
    suspend;

  block_283B:
    /* loopnext  */
    goto block_275E;

  block_283F:
    goto block_2844;

  block_2844:
    goto block_2847;

  block_2847:
    /* word_to_dword  */
    /* pop_result  */
    goto block_2851;

  block_2851:
    return;

}
