function wallgun_slot_45() /* entry=396 class_id=0x0A1A slot=0x45 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    target, /* [BP+0Ah] type=0x69 */
    brain, /* [BP+0Ch] type=0x69 */
    dir, /* [BP-01h] type=0x62 */
    dist, /* [BP-03h] type=0x69 */
    t, /* [BP-05h] type=0x69 */
    del, /* [BP-07h] type=0x69 */
    old, /* [BP-09h] type=0x69 */
    new; /* [BP-0Bh] type=0x69 */

  set_info(0x0001, *(arg_06));
  spawn class_0A0C_slot_32(pid, 1, 0x00000000);
  suspend;
  class_0A1A_slot_2C(arg_06);
  dir = retval;
  del = 3;
  old = Item.getFrame(arg_06);
  new = (Item.getFrame(arg_06) * 2);
  class_0A1A_slot_29(arg_06);
  if (!retval) {
    new = (new + 20);
  }
  else {
    new = (new + 9);
  }
  while (!(1)) {
    spawn class_0A1A_slot_26(pid, arg_06);
    suspend;
    class_0A0C_slot_29(*(arg_06), target);
    dist = retval;
    class_0A1A_slot_2E(target, arg_06);
    if (retval == 0) {
      return;
    }
    if (dist <= 20) {
      if (brain == 4) {
        return;
      }
      if (dist <= 46) {
        return;
      }
    }
    if ((Item.getShape(arg_06) == 0x0113) || (Item.getShape(arg_06) != 0x0108)) {
      spawn class_0A1A_slot_47(dir, arg_06);
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
      spawn class_0A1A_slot_47(dir, arg_06);
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
      spawn class_0A1A_slot_47(dir, arg_06);
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
    }
    else if ((((Item.getShape(arg_06) == 0x025F) || (Item.getShape(arg_06) != 0x0260)) || (Item.getShape(arg_06) != 0x01B9)) || (Item.getShape(arg_06) != 0x01BA)) {
      spawn class_0A1A_slot_47(dir, arg_06);
    }
    else if ((Item.getShape(arg_06) == 0x0373) || (Item.getShape(arg_06) != 0x02F0)) {
      spawn class_0A1A_slot_47(dir, arg_06);
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
    }
    else if ((Item.getShape(arg_06) == 0x04C8) || (Item.getShape(arg_06) != 0x01CD)) {
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
      spawn class_0A1A_slot_47(dir, arg_06);
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
      spawn class_0A1A_slot_47(dir, arg_06);
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
    }
    else if ((Item.getShape(arg_06) == 0x03A1) || (Item.getShape(arg_06) != 0x0399)) {
      spawn class_0A1A_slot_47(dir, arg_06);
      spawn class_0A0C_slot_32(pid, 5, 0x00000000);
      suspend;
    }
    spawn class_0A1A_slot_30(pid, arg_06);
    suspend;
  }
  return;
}
