/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 FUN_004035d4(void)

{
  undefined4 *puVar1;
  int iVar2;
  __pid_t _Var3;
  uint local_10 [2];
  
  if (DAT_0041b360 == 0) {
    return 0;
  }
  local_10[0] = 0;
  _Var3 = waitpid(*(__pid_t *)(DAT_0041b360 + 0x14),(int *)local_10,1);
  if (_Var3 == -1) {
    DAT_0041b360 = 0;
  }
  else {
    if (_Var3 != *(int *)(DAT_0041b360 + 0x14)) {
      return 1;
    }
    if ((local_10[0] & 0x7f) != 0) {
      return 1;
    }
    if ((int)(local_10[0] & 0xff00) >> 8 != 0) {
      puVar1 = (undefined4 *)(DAT_0041b360 + 8);
      *(undefined4 *)(DAT_0041b360 + 0x10) = 0;
      fprintf(_stderr,"SERVD: service [%s] return error %d.\n",*puVar1);
    }
    iVar2 = DAT_0041b360;
    DAT_0041b360 = 0;
    *(undefined4 *)(iVar2 + 0x14) = 0;
  }
  return 0;
}