undefined ** FUN_00018778(void)

{
  uint *puVar1;
  uint *puVar2;
  undefined **ppuVar3;
  int iVar4;
  undefined *apuStackX_0 [4];
  
  ppuVar3 = &__pthread_initial_thread;
  if ((apuStackX_0 < __pthread_initial_thread_bos) &&
     ((apuStackX_0 < __pthread_manager_thread_bos ||
      (ppuVar3 = (undefined **)&__pthread_manager_thread,
      __pthread_manager_thread_tos <= apuStackX_0)))) {
    if (__pthread_nonstandard_stacks != 0) {
      iVar4 = 0x2d030;
      do {
        for (; puVar1 = (uint *)(iVar4 + 8), (undefined **)*puVar1 < apuStackX_0;
            iVar4 = iVar4 + 0x10) {
        }
        puVar2 = (uint *)(iVar4 + 0xc);
        iVar4 = iVar4 + 0x10;
      } while (apuStackX_0 < (undefined **)*puVar2);
      return (undefined **)*puVar1;
    }
    ppuVar3 = (undefined **)(((uint)apuStackX_0 | 0x1fffff) - 0x1df);
  }
  return ppuVar3;
}