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

112 lines
3.4 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400d9010 FUN_1400d9010
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
longlong * FUN_1400d9010(longlong param_1,longlong *param_2,ulonglong param_3,undefined8 param_4)
{
undefined *puVar1;
int *piVar2;
undefined *puVar3;
undefined8 *puVar4;
longlong *plVar5;
int *piVar6;
ulonglong uVar7;
longlong lVar8;
char *pcVar9;
LPCWSTR pWVar10;
char *pcVar11;
ulonglong uVar12;
undefined8 uVar13;
undefined1 auStack_128 [32];
undefined *local_108;
undefined4 local_100;
int *local_f8;
undefined1 local_f0;
longlong *local_e8;
undefined8 local_e0;
undefined8 local_d8 [2];
undefined8 local_c8 [2];
char *local_b8;
char local_b0 [136];
ulonglong local_28;
local_e0 = 0xfffffffffffffffe;
local_28 = DAT_1401ac5a0 ^ (ulonglong)auStack_128;
lVar8 = 0;
local_100 = 0;
if (*(longlong **)(param_1 + 0x150) != (longlong *)0x0) {
lVar8 = **(longlong **)(param_1 + 0x150);
}
uVar12 = param_3;
local_e8 = param_2;
puVar4 = FUN_140071560(lVar8,local_d8);
FUN_140070a20(param_2,(longlong)puVar4,uVar12,param_4);
local_100 = 1;
puVar4 = FUN_140071560(*(longlong *)(*(longlong *)(param_3 + 0x748) + 0x110),local_c8);
plVar5 = FUN_140070930((longlong)puVar4,(longlong *)&local_108,uVar12,param_4);
pcVar9 = (char *)*plVar5;
if ((char *)*plVar5 == (char *)0x0) {
pcVar9 = PTR_DAT_1401ac008;
}
plVar5 = param_2;
FUN_140070c50(param_2,pcVar9);
puVar3 = local_108;
if (((local_108 != (undefined *)0x0) && (local_108 != PTR_DAT_1401ac008)) &&
(puVar1 = local_108 + -8, puVar1 != (undefined *)0x0)) {
piVar6 = (int *)FUN_14006cb70(plVar5,pcVar9,uVar12,param_4);
local_f8 = piVar6;
FUN_14006b350(piVar6);
local_f0 = 1;
piVar2 = (int *)(puVar3 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14006cc60(puVar1);
}
FUN_14006b3e0((longlong)piVar6);
}
pcVar9 = *(char **)(*(longlong *)(param_1 + 0x148) + 0x218);
if (pcVar9 == (char *)0x0) {
pcVar9 = PTR_DAT_1401ac008;
}
FUN_140070c50(param_2,pcVar9);
pcVar9 = *(char **)(*(longlong *)(param_1 + 0x148) + 0x210);
if (pcVar9 == (char *)0x0) {
pcVar9 = PTR_DAT_1401ac008;
}
FUN_140070c50(param_2,pcVar9);
uVar7 = FUN_140071070(param_2,pcVar9,uVar12,param_4);
if ((char)uVar7 == '\0') {
plVar5 = FUN_140070c90((longlong *)&local_108,pcVar9,uVar12,param_4);
pWVar10 = (LPCWSTR)*plVar5;
if ((LPCWSTR)*plVar5 == (LPCWSTR)0x0) {
pWVar10 = (LPCWSTR)PTR_DAT_1401ac010;
}
local_b8 = local_b0;
uVar13 = 3;
FUN_14006b570((longlong *)&local_b8,pWVar10,3);
pcVar11 = local_b8;
FUN_14006b850(param_2,local_b8);
pcVar9 = local_b8;
if (local_b8 != local_b0) {
free(local_b8);
}
if (((local_108 != (undefined *)0x0) && (local_108 != PTR_DAT_1401ac010)) &&
(local_108 + -8 != (undefined *)0x0)) {
piVar6 = (int *)FUN_14006cb70(pcVar9,pcVar11,uVar13,param_4);
local_f8 = piVar6;
FUN_14006b350(piVar6);
local_f0 = 1;
piVar2 = (int *)(local_108 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14006cc60(local_108 + -8);
}
FUN_14006b3e0((longlong)piVar6);
}
}
return param_2;
}