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

101 lines
3.3 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x14015be70 FUN_14015be70
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_14015be70(longlong param_1)
{
int *piVar1;
char cVar2;
undefined *puVar3;
undefined8 uVar4;
undefined8 uVar5;
undefined *puVar6;
undefined1 auStack_b8 [32];
undefined8 local_98;
undefined1 local_90;
undefined8 local_88;
undefined1 local_80;
undefined8 local_78;
undefined *local_68;
undefined2 local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined1 local_48 [48];
ulonglong local_18;
local_78 = 0xfffffffffffffffe;
local_18 = DAT_1403463c0 ^ (ulonglong)auStack_b8;
puVar3 = *(undefined **)(param_1 + 0x30);
if ((((puVar3 != (undefined *)0x0) && (puVar3 != PTR_DAT_1403440a0)) &&
(0 < *(int *)(puVar3 + -8))) &&
(((*(char *)(param_1 + 0x18) != '\0' && (*(char *)(param_1 + 0x19) == '\0')) &&
((*(char *)(param_1 + 0x1a) == '\0' && (*(longlong *)(param_1 + 0x10) != 0)))))) {
*(undefined2 *)(param_1 + 0x19) = 1;
FUN_1401bbb30(&local_68);
local_5c = DAT_1403530c0;
local_58 = _DAT_1403530c4;
local_54 = _DAT_1403530c8;
local_50 = _DAT_1403530cc;
if (local_68 == (undefined *)0x0) {
local_68 = PTR_DAT_1403440a0;
}
if (*(undefined **)(param_1 + 0x30) != local_68) {
uVar4 = FUN_14016d8c0();
local_88 = uVar4;
FUN_14016db50(uVar4);
puVar3 = local_68;
local_80 = 1;
if (((local_68 != (undefined *)0x0) && (local_68 != PTR_DAT_1403440a0)) &&
(puVar6 = local_68 + -8, puVar6 != (undefined *)0x0)) {
uVar5 = FUN_14016d8c0();
local_98 = uVar5;
FUN_14016db50(uVar5);
local_90 = 1;
piVar1 = (int *)(puVar3 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar6);
}
FUN_14016dbe0(uVar5);
}
local_68 = *(undefined **)(param_1 + 0x30);
if (((local_68 != PTR_DAT_1403440a0) && (local_68 != (undefined *)0x0)) &&
(local_68 != (undefined *)0x8)) {
*(int *)(local_68 + -4) = *(int *)(local_68 + -4) + 1;
}
FUN_14016dbe0(uVar4);
}
local_60 = *(undefined2 *)(param_1 + 0x38);
(**(code **)(**(longlong **)(param_1 + 0x10) + 0x88))();
(**(code **)(**(longlong **)(param_1 + 0x10) + 0x78))(*(longlong **)(param_1 + 0x10),&local_68);
cVar2 = *(char *)(param_1 + 0x19);
while (cVar2 != '\0') {
Sleep(10);
(**(code **)(**(longlong **)(param_1 + 0x10) + 0x98))(*(longlong **)(param_1 + 0x10),0);
cVar2 = *(char *)(param_1 + 0x19);
}
FUN_14019a9e0(local_48);
puVar3 = local_68;
if (((local_68 != (undefined *)0x0) && (local_68 != PTR_DAT_1403440a0)) &&
(puVar6 = local_68 + -8, puVar6 != (undefined *)0x0)) {
uVar4 = FUN_14016d8c0();
local_98 = uVar4;
FUN_14016db50(uVar4);
local_90 = 1;
piVar1 = (int *)(puVar3 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar6);
}
FUN_14016dbe0(uVar4);
}
}
return;
}