/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400ccb80 FUN_1400ccb80 * Pseudocode, not original source. */ undefined8 * FUN_1400ccb80(char *param_1,undefined8 param_2,undefined8 param_3,longlong param_4) { int *piVar1; DWORD DVar2; DWORD DVar3; longlong lVar4; undefined8 *puVar5; uint uVar6; undefined8 uVar7; exception local_50 [72]; if (*param_1 != '\0') { FUN_14006ba50(local_50,L"ServerSocketPool is already destructed!",param_3,param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_50,(ThrowInfo *)&DAT_1401a93e8); } uVar7 = param_2; DVar2 = GetTickCount(); DVar3 = GetTickCount(); if (DVar3 - DVar2 < 10000) { piVar1 = (int *)(param_1 + 0x30); do { FUN_14006b350(piVar1); if (0 < *(int *)(param_1 + 0x80)) { puVar5 = (undefined8 *)FUN_14006cbf0(0x400); if (puVar5 == (undefined8 *)0x0) { puVar5 = (undefined8 *)0x0; } else { uVar6 = *(int *)(param_1 + 0x80) - 1; if (((int)uVar6 < 0) || (*(int *)(param_1 + 0x80) <= (int)uVar6)) { /* WARNING: Subroutine does not return */ FUN_14006be30((ulonglong)uVar6,uVar7,param_3,param_4); } puVar5 = FUN_1400726e0(puVar5,*(undefined8 *) (*(longlong *)(param_1 + 0x78) + (longlong)(int)uVar6 * 8), param_2,param_4); } FUN_1400ccad0((longlong)(param_1 + 0x68),*(int *)(param_1 + 0x80) + -1,1,param_4); FUN_14006b3e0((longlong)piVar1); return puVar5; } FUN_14006b3e0((longlong)piVar1); Sleep(1); DVar3 = GetTickCount(); } while (DVar3 - DVar2 < 10000); } lVar4 = Ordinal_23(2,1,6); if (lVar4 == -1) { puVar5 = (undefined8 *)0x0; } else { puVar5 = (undefined8 *)FUN_14006cbf0(0x400); if (puVar5 == (undefined8 *)0x0) { puVar5 = (undefined8 *)0x0; } else { puVar5 = FUN_1400726e0(puVar5,lVar4,param_2,param_4); } } return puVar5; }