int FUN_004095bc(undefined1 param_1,int param_2,undefined1 *param_3,int param_4,int param_5,
                undefined4 param_6,__off_t param_7)

{
  ushort uVar1;
  int iVar2;
  __off_t _Var3;
  uint uVar4;
  ssize_t sVar5;
  uint uVar6;
  
  iVar2 = 0;
  if (-1 < *(int *)(param_2 + 4)) {
    if (param_5 == 1) {
      *param_3 = param_1;
      param_3[1] = 0;
      close(*(int *)(param_2 + 4));
      *(undefined4 *)(param_2 + 4) = 0xffffffff;
      iVar2 = 2;
    }
    else {
      _Var3 = lseek(*(int *)(param_2 + 4),param_7,0);
      iVar2 = *(int *)(param_2 + 4);
      if (_Var3 == param_7) {
        uVar4 = read(iVar2,param_3 + 2,param_4 - 2)   //possible issue identified - semgrep
        iVar2 = *(int *)(param_2 + 4);
        if (-1 < (int)uVar4) {
          sVar5 = read(iVar2,param_3,1)   //possible issue identified - semgrep
          uVar6 = uVar4 & 0xffff;
          if (0 < sVar5) {
            uVar6 = uVar4 & 0x7fff | 0x8000;
          }
          g_short_reorder_buffer._0_1_ = (undefined1)(uVar6 >> 8);
          uVar1 = (ushort)(uVar6 << 8) | (ushort)(uVar6 >> 8);
          *param_3 = (undefined1)g_short_reorder_buffer;
          g_short_reorder_buffer = uVar1;
          param_3[1] = g_short_reorder_buffer._1_1_;
          close(*(int *)(param_2 + 4));
          *(undefined4 *)(param_2 + 4) = 0xffffffff;
          return uVar4 + 2;
        }
      }
      close(iVar2);
      *(undefined4 *)(param_2 + 4) = 0xffffffff;
      iVar2 = 0;
    }
  }
  return iVar2;
}