int FUN_0040991c(undefined1 param_1,uint *param_2,undefined1 *param_3,int param_4,int param_5,
int param_6,int param_7)
{
ushort uVar1;
int iVar2;
__off_t _Var3;
int *piVar4;
char *pcVar5;
uint uVar6;
ssize_t sVar7;
uint uVar8;
iVar2 = 0;
if (-1 < (int)param_2[1]) {
if ((param_5 == 1) &&
(((0xff < *param_2 || (param_4 <= (int)(*param_2 + 1))) || (param_6 == 1)))) {
*param_3 = param_1;
param_3[1] = 0;
close(param_2[1]);
param_2[1] = 0xffffffff;
iVar2 = 2;
}
else {
_Var3 = lseek(param_2[1],param_7,0);
if (_Var3 == param_7) {
uVar6 = read(param_2[1],param_3 + 2,param_4 - 2) //possible issue identified - semgrep
if (-1 < (int)uVar6) {
if (param_5 == 1) {
*param_3 = param_1;
param_3[1] = (char)uVar6;
}
else {
sVar7 = read(param_2[1],param_3,1) //possible issue identified - semgrep
uVar8 = uVar6 & 0xffff;
if (0 < sVar7) {
uVar8 = uVar6 & 0x7fff | 0x8000;
}
g_short_reorder_buffer._0_1_ = (undefined1)(uVar8 >> 8);
uVar1 = (ushort)(uVar8 << 8) | (ushort)(uVar8 >> 8);
*param_3 = (undefined1)g_short_reorder_buffer;
g_short_reorder_buffer = uVar1;
param_3[1] = g_short_reorder_buffer._1_1_;
}
close(param_2[1]);
param_2[1] = 0xffffffff;
return uVar6 + 2;
}
piVar4 = __errno_location();
pcVar5 = strerror(*piVar4);
warn("write_icon_file_t: read of the iconfile FAILED, errno: %s",pcVar5);
}
else {
piVar4 = __errno_location();
pcVar5 = strerror(*piVar4);
warn("write_icon_file_t: lseek to byte %d on the iconfile FAILED, errno: %s",param_7,pcVar5)
;
}
close(param_2[1]);
param_2[1] = 0xffffffff;
iVar2 = 0;
}
}
return iVar2;
}