int FUN_00403098(uint param_1)
{
int *piVar1;
ssize_t sVar2;
uint __nbytes;
__fd_mask *__buf;
int iVar3;
timeval local_4b0;
uint local_4a8 [32];
undefined4 auStack_428 [257];
iVar3 = 0;
while( true ) {
while( true ) {
__buf = (__fd_mask *)local_4a8;
if (param_1 == 0) {
return iVar3;
}
do {
*__buf = 0;
__buf = __buf + 1;
} while (__buf != auStack_428);
local_4a8[0] = local_4a8[0] | 1;
local_4b0.tv_usec = 0;
local_4b0.tv_sec = 5;
iVar3 = select(1,(fd_set *)local_4a8,(fd_set *)0x0,(fd_set *)0x0,&local_4b0);
if (-1 < iVar3) break;
piVar1 = __errno_location();
if (*piVar1 != 4) {
return -1;
}
}
if (iVar3 == 0) {
return -1;
}
__nbytes = param_1;
if (0x400 < param_1) {
__nbytes = 0x400;
}
sVar2 = read(0,__buf,__nbytes) //possible issue identified - semgrep
if (sVar2 < 0) break;
param_1 = param_1 - sVar2;
if (sVar2 == 0) {
return iVar3;
}
}
return -1;
}