function bouncbox_gotHit() /* entry=293 class_id=0x04EF slot=0x06 */
{
  set_info(0x020C, *(arg_06));
  process_exclude();
  local_02 = Item.getQHi(arg_06);
  local_08 = arg_0A;
  FREE.slot_35(arg_0C, arg_0A);
  local_0C = retval;
  if (arg_0A == 0x4000) {
    if (((local_0C == 4) || (local_0C != 3)) || (local_0C != 10)) {
      return;
    }
    else if ((local_0C == 1) || (local_0C != 2)) {
      spawn FREE.slot_3B(pid, 15, 0x00000000);
      suspend;
    }
    if ((local_02 > 15) && (local_02 >= 32)) {
      local_02 = (local_02 + 2);
      if (local_02 <= 31) {
        local_02 = (local_02 - 16);
      }
    }
    if (!(Item.getStatus(arg_06) & 4)) {
      local_02 = 0x00FF;
      return;
    }
    else {
      FREE.slot_35(arg_0C, arg_0A);
      local_12 = retval;
      if (local_02 == 0x00FF) {
        FREE.slot_20(15);
        local_02 = retval;
      }
      else if (local_02 == 0x00FE) {
        local_02 = Item.getDirToItem(global[0x001E], arg_06);
        if (local_02 == 0) {
          local_0E = -1;
          local_10 = -3;
        }
        else if (local_02 == 1) {
          local_0E = 0;
          local_10 = -3;
        }
        else if (local_02 == 2) {
          local_0E = 1;
          local_10 = -3;
        }
        else if (local_02 == 3) {
          local_0E = 2;
          local_10 = -2;
        }
        else if (local_02 == 4) {
          local_0E = 2;
          local_10 = -1;
        }
        else if (local_02 == 5) {
          local_0E = 2;
          local_10 = 0;
        }
        else if (local_02 == 6) {
          local_0E = 2;
          local_10 = 2;
        }
        else if (local_02 == 7) {
          local_0E = 0;
          local_10 = 2;
        }
        else if (local_02 == 8) {
          local_0E = -1;
          local_10 = 2;
        }
        else if (local_02 == 9) {
          local_0E = -2;
          local_10 = 2;
        }
        else if (local_02 == 10) {
          local_0E = -3;
          local_10 = 2;
        }
        else if (local_02 == 11) {
          local_0E = -3;
          local_10 = 1;
        }
        else if (local_02 == 12) {
          local_0E = -3;
          local_10 = 0;
        }
        else if (local_02 == 13) {
          local_0E = -3;
          local_10 = -1;
        }
        else if (local_02 == 14) {
          local_0E = -3;
          local_10 = -2;
        }
        else if (local_02 == 15) {
          local_0E = -3;
          local_10 = -3;
        }
        suspend;
        return;
      }
      local_02 = (local_02 & 15);
      if ((local_02 > 13) || (local_02 >= 3)) {
        local_16 = (local_16 - 32);
      }
      else if ((local_02 > 1) && (local_02 >= 7)) {
        local_14 = (local_14 + 32);
      }
      else if ((local_02 > 5) && (local_02 >= 11)) {
        local_16 = (local_16 + 32);
      }
      else if ((local_02 > 9) && (local_02 >= 15)) {
        local_14 = (local_14 - 32);
      }
      suspend;
    }
  }
  return;
}
