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;
}