function miss2_slot_28() /* entry=354 class_id=0x090E slot=0x28 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    counter, /* [BP-02h] type=0x69 */
    item, /* [BP-04h] type=0x24 */
    body, /* [BP-06h] type=0x24 */
    gun, /* [BP-08h] type=0x24 */
    door, /* [BP-0Ah] type=0x24 */
    door1, /* [BP-0Ch] type=0x24 */
    door2, /* [BP-0Eh] type=0x24 */
    door3, /* [BP-10h] type=0x24 */
    egg, /* [BP-12h] type=0x24 */
    hoffman, /* [BP-14h] type=0x24 */
    x, /* [BP-16h] type=0x69 */
    y, /* [BP-18h] type=0x69 */
    pathEgg; /* [BP-1Ah] type=0x24 */

  entry:
    set_info(0x0001, *(arg_06));
    counter = 0;
    egg = *(arg_06);
    set_info(1, 0);

  block_0CD5:
    /* global_address global_id=0x3C */
    if Actor.isBusy() goto block_0D0B;

  block_0CE5:
    spawn class_0A0C_slot_32(pid, 2, 0x00000000);
    suspend;
    goto block_0CD5;

  block_0D0B:
    /* global_address global_id=0x3C */
    if Actor.getSomeFlagProbablyCrouch() goto block_0D4B;

  block_0D1B:
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    suspend;

  block_0D4B:
    hoffman = 0;
    /* loopscr value_u8=0x24 */
    /* loop current_var=0xFC string_bytes=0x1 loop_type=0x2 */

  block_0D68:
    if condition goto block_0E2A;

  block_0D6B:
    if ((Item.getZ(item) > 96) && (Item.getZ(item) < 0x0096)) goto block_0E26;

  block_0D8E:
    x = Item.getX(item);
    y = Item.getY(item);
    if ((((x > 0x522F) && (x < 0x53BF)) && (y < 0x448E)) && (y > 0x407F)) goto block_0E26;

  block_0DCE:
    if (((Item.getShape(item) != 17) && (Item.getShape(item) != 0x04FE)) && (Item.getShape(item) != 0x0135)) goto block_0E26;

  block_0E08:

  block_0E26:
    /* loopnext  */
    goto block_0D68;

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

  block_0E4A:
    if condition goto block_0E98;

  block_0E4D:
    goto block_0E98;

  block_0E94:
    /* loopnext  */
    goto block_0E4A;

  block_0E98:
    if hoffman goto block_1CED;

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

  block_0EBF:
    if condition goto block_0F73;

  block_0EC2:
    class_0A0C_slot_29(item, global[0x003C]);
    if ((retval > 3) && (counter != 10)) goto block_0F49;

  block_0EE5:
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    spawn class_0A11_slot_22(Item.getDirFromTo16(Item.getX(pid, 1, Item.getY((Item.getY(item) - 32), (Item.getX(item) - 16)))));
    suspend;
    counter = (1 + counter);
    goto block_0EC2;

  block_0F49:
    door = item;
    spawn class_0A06_slot_20(pid, door);
    suspend;
    /* loopnext  */
    goto block_0EBF;

  block_0F73:
    /* global_address global_id=0x3C */
    spawn class_0A11_slot_22(pid, 3, 4);
    suspend;
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    spawn class_0A11_slot_22(Item.getDirFromTo16(Item.getX(pid, 3, Item.getY(Item.getY(hoffman), Item.getX(hoffman)))));
    suspend;
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    suspend;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */

  block_103A:
    if condition goto block_104E;

  block_103D:
    pathEgg = item;
    goto block_104E;

  block_104A:
    /* loopnext  */
    goto block_103A;

  block_104E:

  block_1050:
    class_0A0C_slot_29(pathEgg, global[0x003C]);
    if ((retval > 2) && (counter != 20)) goto block_10D1;

  block_1073:
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    spawn class_0A11_slot_22(Item.getDirFromTo16(Item.getX(pid, 1, Item.getY(Item.getY(pathEgg), Item.getX(pathEgg)))));
    suspend;
    counter = (1 + counter);
    goto block_1050;

  block_10D1:
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    suspend;
    /* str_to_ptr  */
    /* free_stack_string value_u8=0x4 target=[SP+04h] */
    suspend;
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;
    suspend;
    suspend;
    suspend;
    suspend;
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    suspend;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */

  block_123C:
    if condition goto block_12A1;

  block_123F:
    if (Item.getQLo(item) != 13) goto block_129D;

  block_1254:
    suspend;
    suspend;

  block_129D:
    /* loopnext  */
    goto block_123C;

  block_12A1:
    suspend;
    spawn class_0A0C_slot_32(pid, 60, 0x00000000);
    suspend;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */

  block_1314:
    if condition goto block_1362;

  block_1317:
    if (Item.getQuality(item) != 1) goto block_135E;

  block_132C:
    /* global_address global_id=0x3C */

  block_135E:
    /* loopnext  */
    goto block_1314;

  block_1362:
    spawn class_0A0C_slot_32(pid, 45, 0x00000000);
    suspend;
    spawn class_090E_slot_20(pid, 1, 0x00000000);
    suspend;
    spawn class_090E_slot_23(pid, 0x00000000);
    suspend;
    gun = 0;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */

  block_13F7:
    if condition goto block_1405;

  block_13FA:
    gun = item;
    /* loopnext  */
    goto block_13F7;

  block_1405:
    if gun goto block_1432;

  block_140F:
    spawn class_090E_slot_25(pid, 1, 0x00000000);
    suspend;

  block_1432:
    spawn class_0A0C_slot_32(pid, 15, 0x00000000);
    suspend;
    door = 0;
    door1 = 0;
    door2 = 0;
    door3 = 0;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */

  block_1490:
    if condition goto block_14F9;

  block_1493:
    if (!Item.getQLo(item)) goto block_14AA;

  block_14A3:
    door = item;
    goto block_14F5;

  block_14AA:
    if (Item.getQLo(item) == 1) {
      door1 = item;
    }
    else if (Item.getQLo(item) == 2) {
      door2 = item;
    }
    else if (Item.getQLo(item) == 3) {
      door3 = item;
    }

  block_14F5:
    /* loopnext  */
    goto block_1490;

  block_14F9:
    if (((door && door1) && door2) && door3) goto block_1A3E;

  block_1515:
    spawn class_090E_slot_26(pid, 0, 0x00000000);
    suspend;
    spawn class_0A06_slot_20(pid, door);
    suspend;
    spawn class_090E_slot_27(pid, gun, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 3, 0x00000000);
    suspend;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */

  block_15C2:
    if condition goto block_1645;

  block_15C5:
    spawn class_0A0C_slot_32(pid, 15, 0x00000000);
    suspend;
    /* loopnext  */
    goto block_15C2;

  block_1645:

  block_1647:
    if (Item.getFrame(gun) != 4) goto block_169C;

  block_165C:
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    goto block_1647;

  block_169C:
    spawn class_0A06_slot_20(pid, door1);
    suspend;
    spawn class_090E_slot_27(pid, gun, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 3, 0x00000000);
    suspend;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */

  block_1723:
    if condition goto block_17A9;

  block_1726:
    spawn class_0A0C_slot_32(pid, 30, 0x00000000);
    suspend;
    /* loopnext  */
    goto block_1723;

  block_17A9:
    spawn class_090E_slot_26(pid, 1, 0x00000000);
    suspend;
    spawn class_0A06_slot_20(pid, door2);
    suspend;
    spawn class_090E_slot_27(pid, gun, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 6, 0x00000000);
    suspend;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */

  block_1858:
    if condition goto block_18DB;

  block_185B:
    spawn class_0A0C_slot_32(pid, 15, 0x00000000);
    suspend;
    /* loopnext  */
    goto block_1858;

  block_18DB:

  block_18DD:
    if (Item.getFrame(gun) != 4) goto block_1932;

  block_18F2:
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    goto block_18DD;

  block_1932:
    spawn class_0A06_slot_20(pid, door3);
    suspend;
    spawn class_090E_slot_27(pid, gun, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 6, 0x00000000);
    suspend;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */

  block_19B9:
    if condition goto block_1A3C;

  block_19BC:
    spawn class_0A0C_slot_32(pid, 30, 0x00000000);
    suspend;
    /* loopnext  */
    goto block_19B9;

  block_1A3C:

  block_1A3E:
    spawn class_090E_slot_25(pid, 0, 0x00000000);
    suspend;
    spawn class_090E_slot_23(pid, 0x00000000);
    suspend;
    spawn class_090E_slot_20(pid, 0, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 30, 0x00000000);
    suspend;
    /* global_address global_id=0x3C */
    suspend;
    suspend;
    suspend;
    suspend;
    suspend;
    suspend;
    suspend;
    suspend;
    suspend;
    suspend;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */

  block_1C99:
    if condition goto block_1CD3;

  block_1C9C:
    if (Item.getQLo(item) != 13) goto block_1CCF;

  block_1CB1:
    suspend;

  block_1CCF:
    /* loopnext  */
    goto block_1C99;

  block_1CD3:

  block_1CED:
    return;

}
