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