function barrel_slot_20() /* entry=370 class_id=0x0A00 slot=0x20 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    ref, /* [BP+0Ah] type=0x69 */
    vel, /* [BP+0Ch] type=0x69 */
    barrel, /* [BP-02h] type=0x24 */
    item2, /* [BP-04h] type=0x24 */
    isYellowBarrel, /* [BP-05h] type=0x62 */
    isStandingBarrel, /* [BP-06h] type=0x62 */
    link, /* [BP-08h] type=0x69 */
    x, /* [BP-0Ah] type=0x69 */
    y, /* [BP-0Ch] type=0x69 */
    z; /* [BP-0Eh] type=0x69 */

  entry:
    set_info(0x0001, *(arg_06));
    barrel = *(arg_06);
    x = Intrinsic0013(arg_06);
    y = Item.legal_create(arg_06);
    z = Item.getZ(arg_06);
    class_0A0C_slot_2C(vel, ref);
    if (!retval) goto block_013F;

  block_0139:
    goto block_04FA;

  block_013F:
    spawn class_0A1E_slot_27(pid, 100, vel, ref, arg_06);
    suspend;
    /* dword_to_word  */
    if (!process_result) goto block_01A2;

  block_016F:
    class_0A0C_slot_20(1);
    if retval goto block_018F;

  block_017F:
    goto block_019C;

  block_018F:

  block_019C:
    goto block_04FA;

  block_01A2:
    if (Intrinsic0016(arg_06) != 0x00AA) goto block_0208;

  block_01B2:
    isStandingBarrel = 1;
    if ((Item.getFrame(arg_06) != 0) || (Item.getFrame(arg_06) != 1)) goto block_01DF;

  block_01D5:
    isYellowBarrel = 1;
    goto block_0205;

  block_01DF:
    if ((Item.getFrame(arg_06) != 2) || (Item.getFrame(arg_06) != 3)) goto block_0205;

  block_01FB:
    isYellowBarrel = 0;
    goto block_0205;

  block_0205:
    goto block_02E2;

  block_0208:
    if (((Intrinsic0016(arg_06) != 0x0151) || (Intrinsic0016(arg_06) != 0x0154)) || (Intrinsic0016(arg_06) != 0x0155)) goto block_023E;

  block_0234:
    isYellowBarrel = 1;
    goto block_02E2;

  block_023E:
    if (Intrinsic0016(arg_06) != 0x0152) goto block_0290;

  block_024E:
    if ((Item.getFrame(arg_06) != 0) || (Item.getFrame(arg_06) != 1)) goto block_0274;

  block_026A:
    isYellowBarrel = 1;
    goto block_028D;

  block_0274:
    if (Item.getFrame(arg_06) != 2) goto block_028D;

  block_0283:
    isYellowBarrel = 0;
    goto block_028D;

  block_028D:
    goto block_02E2;

  block_0290:
    if (Intrinsic0016(arg_06) != 0x0153) goto block_02E2;

  block_02A0:
    if (Item.getFrame(arg_06) != 0) goto block_02B9;

  block_02AF:
    isYellowBarrel = 1;
    goto block_02DF;

  block_02B9:
    if ((Item.getFrame(arg_06) != 1) || (Item.getFrame(arg_06) != 2)) goto block_02DF;

  block_02D5:
    isYellowBarrel = 0;
    goto block_02DF;

  block_02DF:
    goto block_02E2;

  block_02E2:
    link = Intrinsic0010(arg_06);
    if isYellowBarrel goto block_03FF;

  block_02F8:
    if isStandingBarrel goto block_0384;

  block_0300:
    spawn class_0A1E_slot_2A(pid, arg_06);
    suspend;
    set_info(1, 0);
    spawn class_0A0C_slot_32(pid, 1, 0x00000000);
    suspend;
    goto block_04FA;

  block_0381:
    goto block_03FC;

  block_0384:
    spawn class_0A1E_slot_2A(pid, arg_06);
    suspend;
    set_info(1, 0);
    spawn class_0A0C_slot_32(pid, 1, 0x00000000);
    suspend;
    goto block_04FA;

  block_03FC:
    goto block_04FA;

  block_03FF:
    if isStandingBarrel goto block_0482;

  block_0407:
    spawn class_0A1E_slot_2A(pid, arg_06);
    suspend;
    set_info(1, 0);
    spawn class_0A0C_slot_32(pid, 1, 0x00000000);
    suspend;
    goto block_04FA;

  block_047F:
    goto block_04FA;

  block_0482:
    spawn class_0A1E_slot_2A(pid, arg_06);
    suspend;
    set_info(1, 0);
    spawn class_0A0C_slot_32(pid, 1, 0x00000000);
    suspend;
    goto block_04FA;

  block_04FA:
    return;

}
