server-re/decomp/DBCServer_Release_x64/full/functions/0x1401aee60.c

70 lines
1.9 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401aee60 FUN_1401aee60
* Pseudocode, not original source. */
undefined8 FUN_1401aee60(char *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
char *pcVar1;
DWORD DVar2;
DWORD DVar3;
longlong lVar4;
longlong lVar5;
int iVar6;
undefined8 uVar7;
char *pcVar8;
undefined1 local_50 [72];
uVar7 = 0xfffffffffffffffe;
if (*param_1 != '\0') {
FUN_14016d300(local_50,L"ServerSocketPool is already destructed!");
/* WARNING: Subroutine does not return */
_CxxThrowException(local_50,(ThrowInfo *)&DAT_1403417f8);
}
DVar2 = GetTickCount();
DVar3 = GetTickCount();
if (DVar3 - DVar2 < 10000) {
pcVar1 = param_1 + 0x30;
do {
pcVar8 = pcVar1;
FUN_14016db50(pcVar1);
if (0 < *(int *)(param_1 + 0x80)) {
lVar4 = FUN_14016d940(0x400);
if (lVar4 == 0) {
uVar7 = 0;
}
else {
iVar6 = *(int *)(param_1 + 0x80) + -1;
if ((iVar6 < 0) || (*(int *)(param_1 + 0x80) <= iVar6)) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
uVar7 = FUN_14019ccf0(lVar4,*(undefined8 *)
(*(longlong *)(param_1 + 0x78) + (longlong)iVar6 * 8),param_2
,param_4,uVar7,pcVar8);
}
FUN_1401aedb0(param_1 + 0x68,*(int *)(param_1 + 0x80) + -1,1);
FUN_14016dbe0(pcVar1);
return uVar7;
}
FUN_14016dbe0(pcVar1);
Sleep(1);
DVar3 = GetTickCount();
} while (DVar3 - DVar2 < 10000);
}
lVar4 = Ordinal_23(2,1,6);
if (lVar4 == -1) {
uVar7 = 0;
}
else {
lVar5 = FUN_14016d940(0x400);
if (lVar5 == 0) {
uVar7 = 0;
}
else {
uVar7 = FUN_14019ccf0(lVar5,lVar4,param_2);
}
}
return uVar7;
}