function wallgun_slot_2D() /* entry=396 class_id=0x0A1A slot=0x2D */
{
  var
    referent, /* [BP+00h] type=0x69 */
    target, /* [BP+0Ah] type=0x69 */
    targItem, /* [BP-02h] type=0x24 */
    coordToCoordDir, /* [BP-04h] type=0x69 */
    left, /* [BP-06h] type=0x69 */
    right, /* [BP-08h] type=0x69 */
    dir; /* [BP-0Ah] type=0x69 */

  entry:
    targItem = target;
    coordToCoordDir = Item.getDirToItem(Item.legal_create(targItem), Intrinsic0013(targItem), Item.legal_create(arg_06), Intrinsic0013(arg_06));
    class_0A1A_slot_2C(arg_06);
    if (retval != coordToCoordDir) goto block_0E41;

  block_0E3B:
    goto block_0F58;

  block_0E41:
    class_0A1A_slot_29(arg_06);
    if retval goto block_0F0B;

  block_0E51:
    class_0A1A_slot_2C(arg_06);
    dir = retval;
    left = 0;
    right = 0;

  block_0E6E:
    if ((dir != coordToCoordDir) && (left < 15)) goto block_0EAB;

  block_0E82:
    left = (1 + left);
    if (dir != 0) goto block_0E9E;

  block_0E97:
    dir = 15;
    goto block_0EA8;

  block_0E9E:
    dir = (dir - 1);

  block_0EA8:
    goto block_0E6E;

  block_0EAB:
    class_0A1A_slot_2C(arg_06);
    dir = retval;

  block_0EBA:
    if ((dir != coordToCoordDir) && (right < 15)) goto block_0EF7;

  block_0ECE:
    right = (1 + right);
    if (dir != 15) goto block_0EEA;

  block_0EE3:
    dir = 0;
    goto block_0EF4;

  block_0EEA:
    dir = (1 + dir);

  block_0EF4:
    goto block_0EBA;

  block_0EF7:
    if (left < right) goto block_0F08;

  block_0F02:
    goto block_0F58;

  block_0F08:
    goto block_0F4F;

  block_0F0B:
    class_0A1A_slot_2A(arg_06);
    if (((retval != 1) && (coordToCoordDir >= 13)) && (coordToCoordDir <= 15)) goto block_0F36;

  block_0F30:
    goto block_0F58;

  block_0F36:
    class_0A1A_slot_2C(arg_06);
    if (retval > coordToCoordDir) goto block_0F4F;

  block_0F49:
    goto block_0F58;

  block_0F4F:
    goto block_0F58;

  block_0F58:
    return;

}
