function cameraco_enterFastArea() /* entry=96 class_id=0x01B6 slot=0x0F */
{
  entry:
    set_info(0x021B, *(arg_06));
    process_exclude();
    local_02 = ((5 - World.gameDifficulty()) * 15);
    local_04 = (5 - (World.gameDifficulty() * 15));
    if (Item.getFrame(arg_06) != 5) goto block_010B;

  block_0108:
    goto block_0372;

  block_010B:
    if (!Item.isEntirelyOnScreen(arg_06)) goto block_0132;

  block_0118:
    spawn FREE.slot_3B(pid, local_02, 0x00000000);
    suspend;
    goto block_010B;

  block_0132:
    local_0C = 0;
    local_0E = 1;

  block_013A:
    suspend;
    local_12 = 0;

  block_013F:
    if (!Item.isEntirelyOnScreen(arg_06)) goto block_0166;

  block_014C:
    spawn FREE.slot_3B(pid, local_02, 0x00000000);
    suspend;
    goto block_013F;

  block_0166:
    spawn FREE.slot_3B(pid, local_02, 0x00000000);
    suspend;
    if (World.getControlledNPCNum() != 0) goto block_0192;

  block_0188:
    local_10 = World.getControlledNPCNum();
    goto block_0196;

  block_0192:
    local_10 = 1;

  block_0196:
    local_14 = Item.getClosestDirectionInRange(15, 0, 16, Item.getY(local_10), Item.getX(local_10), Item.getY(arg_06), Item.getX(arg_06));
    local_08 = Item.getFrame(arg_06);
    if (((local_14 / 2) - 1) != local_08) goto block_02CE;

  block_01E2:
    local_12 = Intrinsic0036(local_10, arg_06);
    if local_12 goto block_025D;

  block_01F4:
    local_0C = 1;
    local_06 = (1 + local_06);
    if ((local_06 > local_04) && (!(Item.getStatus(arg_06) & 4))) goto block_025A;

  block_0215:
    spawn FREE.slot_3B(pid, local_02, 0x00000000);
    suspend;
    spawn TRIGGER.slot_20(pid, 0, *(arg_06), arg_06);
    suspend;
    ITEM.slot_24(4, arg_06);

  block_025A:
    goto block_02CB;

  block_025D:
    local_0C = 0;
    if ((local_08 + local_0E) < 0) goto block_028A;

  block_026C:
    local_0E = 1;
    spawn FREE.slot_3B(pid, 30, 0x00000000);
    suspend;
    goto block_02B3;

  block_028A:
    if ((local_08 + local_0E) > 4) goto block_02B3;

  block_0295:
    local_0E = -1;
    spawn FREE.slot_3B(pid, 30, 0x00000000);
    suspend;
    goto block_02B3;

  block_02B3:

  block_02CB:
    goto block_036F;

  block_02CE:
    if (local_06 && local_0C) goto block_02F2;

  block_02D6:
    if (((local_14 / 2) - 1) > local_08) goto block_02EB;

  block_02E4:
    local_0E = 1;
    goto block_02EF;

  block_02EB:
    local_0E = -1;

  block_02EF:
    goto block_0305;

  block_02F2:
    local_06 = 0;
    local_0C = 0;
    /* bit_not  */

  block_0305:
    if ((local_08 + local_0E) < 0) goto block_032E;

  block_0310:
    local_0E = 1;
    spawn FREE.slot_3B(pid, 30, 0x00000000);
    suspend;
    goto block_0357;

  block_032E:
    if ((local_08 + local_0E) > 4) goto block_0357;

  block_0339:
    local_0E = -1;
    spawn FREE.slot_3B(pid, 30, 0x00000000);
    suspend;
    goto block_0357;

  block_0357:

  block_036F:
    goto block_013A;

  block_0372:
    return;

}
