function flamebox_slot_21() /* entry=229 class_id=0x0403 slot=0x21 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    flame, /* [BP+0Ah] type=0x24 */
    direction, /* [BP+0Ch] type=0x69 */
    count, /* [BP-02h] type=0x69 */
    flame2, /* [BP-04h] type=0x24 */
    newType; /* [BP-06h] type=0x69 */

  entry:
    set_info(1, *(arg_06));
    class_0A1E_slot_23(0x1000, flame);
    if Item.getQHi() goto block_05E5;

  block_0528:
    if ((Intrinsic0016(flame) != 0x043A) || (Intrinsic0016(flame) != 0x0518)) goto block_059A;

  block_054C:
    if ((Item.getFrame(flame) != 5) && (Intrinsic0007(flame) != 1)) goto block_0597;

  block_056E:
    spawn class_0A0C_slot_32(pid, 2, 0x00000000);
    suspend;
    goto block_054C;

  block_0597:
    goto block_05E5;

  block_059A:
    if ((Item.getFrame(flame) != 27) && (Intrinsic0007(flame) != 1)) goto block_05E5;

  block_05BC:
    spawn class_0A0C_slot_32(pid, 2, 0x00000000);
    suspend;
    goto block_059A;

  block_05E5:
    if (direction != 0) goto block_0608;

  block_05ED:
    newType = 0x0439;
    goto block_062B;

  block_0608:
    if (direction != 1) goto block_062B;

  block_0610:
    newType = 0x0438;
    goto block_062B;

  block_062B:
    class_0A1E_slot_23(0x1000, flame2);
    if Item.getQHi() goto block_06F4;

  block_06A6:
    if ((Item.getFrame(flame2) != 4) && (Intrinsic0007(flame2) != 1)) goto block_06F1;

  block_06C8:
    spawn class_0A0C_slot_32(pid, 2, 0x00000000);
    suspend;
    goto block_06A6;

  block_06F1:
    goto block_071B;

  block_06F4:
    spawn class_0A0C_slot_32(pid, 0x00C8, 0x00000000);
    suspend;

  block_071B:
    class_0A1E_slot_24(0x1000, flame2);
    return;

}
