server-re/decomp/MessageServer_Release_x64/full/functions/0x1400cf8f0.c

99 lines
3.3 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400cf8f0 FUN_1400cf8f0
* 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_1400cf8f0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
undefined *puVar1;
int *piVar2;
int *piVar3;
undefined **ppuVar4;
int *piVar5;
undefined8 *puVar6;
undefined *puVar7;
double dVar8;
undefined1 auStack_b8 [32];
int *local_98;
undefined1 local_90;
int *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;
undefined8 local_48 [6];
ulonglong local_18;
local_78 = 0xfffffffffffffffe;
local_18 = DAT_1401ac5a0 ^ (ulonglong)auStack_b8;
dVar8 = (double)(**(code **)(**(longlong **)(param_1 + 0x40) + 8))();
if (*(double *)(param_1 + 0x90) <= dVar8 && dVar8 != *(double *)(param_1 + 0x90)) {
ppuVar4 = &local_68;
FUN_1400780f0(ppuVar4,param_2,param_3,param_4);
if (local_68 == (undefined *)0x0) {
local_68 = PTR_DAT_1401ac010;
}
if (*(undefined **)(param_1 + 0x50) != local_68) {
piVar2 = (int *)FUN_14006cb70(ppuVar4,param_2,param_3,param_4);
piVar5 = piVar2;
local_88 = piVar2;
FUN_14006b350(piVar2);
puVar1 = local_68;
local_80 = 1;
if (((local_68 != (undefined *)0x0) && (local_68 != PTR_DAT_1401ac010)) &&
(puVar7 = local_68 + -8, puVar7 != (undefined *)0x0)) {
piVar3 = (int *)FUN_14006cb70(piVar5,param_2,param_3,param_4);
local_98 = piVar3;
FUN_14006b350(piVar3);
local_90 = 1;
piVar5 = (int *)(puVar1 + -4);
*piVar5 = *piVar5 + -1;
if (*piVar5 == 0) {
FUN_14006cc60(puVar7);
}
FUN_14006b3e0((longlong)piVar3);
}
local_68 = *(undefined **)(param_1 + 0x50);
if (((local_68 != PTR_DAT_1401ac010) && (local_68 != (undefined *)0x0)) &&
(local_68 != (undefined *)0x8)) {
*(int *)(local_68 + -4) = *(int *)(local_68 + -4) + 1;
}
FUN_14006b3e0((longlong)piVar2);
}
local_60 = *(undefined2 *)(param_1 + 0x58);
local_5c = DAT_1401ada98;
local_58 = DAT_1401ada9c;
local_54 = DAT_1401adaa0;
local_50 = DAT_1401adaa4;
ppuVar4 = &local_68;
(**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x48) + 0x70) + 0x78))();
dVar8 = (double)(**(code **)(**(longlong **)(param_1 + 0x40) + 8))();
*(double *)(param_1 + 0x90) = dVar8 + _DAT_1401b4318;
*(undefined4 *)(param_1 + 0x88) = 1;
puVar6 = local_48;
FUN_140078360(puVar6);
puVar1 = local_68;
if (((local_68 != (undefined *)0x0) && (local_68 != PTR_DAT_1401ac010)) &&
(puVar7 = local_68 + -8, puVar7 != (undefined *)0x0)) {
piVar2 = (int *)FUN_14006cb70(puVar6,ppuVar4,param_3,param_4);
local_98 = piVar2;
FUN_14006b350(piVar2);
local_90 = 1;
piVar5 = (int *)(puVar1 + -4);
*piVar5 = *piVar5 + -1;
if (*piVar5 == 0) {
FUN_14006cc60(puVar7);
}
FUN_14006b3e0((longlong)piVar2);
}
}
return;
}