void FUN_00404844(void)

{
  time_t tVar1;
  uint uVar2;
  uint uVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  int iVar7;
  int *piVar8;
  int iVar9;
  int *piVar10;
  int *piVar11;
  
  dolog(7,"Timeout\n");
  FUN_00402080(0,0);
  tVar1 = time((time_t *)0x0);
  piVar11 = (int *)**(int **)(g_conf + 0xc);
  while (piVar8 = piVar11, piVar8 != (int *)0x0) {
    iVar9 = piVar8[2];
    piVar11 = (int *)*piVar8;
    if (iVar9 != 0) {
      piVar10 = (int *)**(int **)(iVar9 + 0x10);
      while (piVar6 = piVar10, piVar6 != (int *)0x0) {
        iVar7 = piVar6[2];
        piVar10 = (int *)*piVar6;
        if (iVar7 != 0) {
          piVar4 = (int *)**(int **)(iVar7 + 4);
          while (piVar4 != (int *)0x0) {
            iVar5 = piVar4[2];
            piVar4 = (int *)*piVar4;
            if ((iVar5 != 0) &&
               (uVar2 = tVar1 - *(int *)(iVar5 + 0x14), uVar3 = (int)uVar2 >> 0x1f,
               0xfa < (int)((uVar3 ^ uVar2) - uVar3))) {
              list_delete_node(*(undefined4 *)(iVar7 + 4));
              subscr_destroy(iVar5);
            }
          }
          if (*(int *)(*(int *)(iVar7 + 4) + 8) < -1) {
            list_delete_node(*(undefined4 *)(iVar9 + 0x10),piVar6);
            grpint_destroy(iVar7);
          }
        }
      }
      if (*(int *)(*(int *)(iVar9 + 0x10) + 8) == 0) {
        list_delete_node(*(undefined4 *)(g_conf + 0xc),piVar8);
        group_destroy(iVar9);
      }
    }
  }
  FUN_00404768();
  dolog(7,"Timeout - done\n");
  return;
}