ushort FUN_00400c20(ushort *param_1,int param_2)

{
  int iVar1;
  ushort *local_18;
  uint local_14;
  int local_10;
  
  local_14 = 0;
  local_18 = param_1;
  for (local_10 = param_2; 1 < local_10; local_10 = local_10 + -2) {
    local_14 = local_14 + *local_18;
    local_18 = local_18 + 1;
  }
  if (local_10 == 1) {
    local_14 = local_14 + (byte)*local_18;
  }
  iVar1 = ((int)local_14 >> 0x10) + (local_14 & 0xffff);
  return ~((short)iVar1 + (short)((uint)iVar1 >> 0x10));
}