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

60 lines
1.7 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400ecfb0 FUN_1400ecfb0
* Pseudocode, not original source. */
longlong * FUN_1400ecfb0(char *param_1,longlong *param_2)
{
char cVar1;
int iVar2;
char *pcVar3;
longlong *plVar4;
byte *pbVar5;
byte *pbVar6;
uint uVar7;
uint uVar8;
char *pcVar9;
pcVar9 = (char *)*param_2;
pcVar3 = pcVar9;
if (pcVar9 == (char *)0x0) {
pcVar3 = PTR_DAT_1401ac008;
}
if (pcVar3 == (char *)0x0) {
/* WARNING: Subroutine does not return */
FUN_1400064e0(0x80004005);
}
uVar8 = 0;
if (pcVar9 == (char *)0x0) {
pcVar9 = PTR_DAT_1401ac008;
}
cVar1 = *pcVar9;
while (cVar1 != '\0') {
pcVar9 = pcVar9 + 1;
uVar8 = uVar8 * 0x21 + (int)cVar1;
cVar1 = *pcVar9;
}
uVar7 = (uint)((ulonglong)uVar8 % (ulonglong)*(uint *)(param_1 + 0x28));
if (*(longlong *)(param_1 + 8) != 0) {
for (plVar4 = *(longlong **)
(*(longlong *)(param_1 + 8) +
((ulonglong)uVar8 % (ulonglong)*(uint *)(param_1 + 0x28)) * 8);
(plVar4 != (longlong *)0x0 && (uVar7 == *(uint *)(plVar4 + 4) % *(uint *)(param_1 + 0x28)));
plVar4 = (longlong *)plVar4[2]) {
pbVar6 = (byte *)*param_2;
if ((byte *)*param_2 == (byte *)0x0) {
pbVar6 = PTR_DAT_1401ac008;
}
pbVar5 = (byte *)*plVar4;
if ((byte *)*plVar4 == (byte *)0x0) {
pbVar5 = PTR_DAT_1401ac008;
}
iVar2 = FUN_14006caf0(pbVar5,(longlong)pbVar6);
if (iVar2 == 0) goto LAB_1400ed090;
}
}
plVar4 = FUN_1400ec9e0(param_1,param_2,uVar7,uVar8);
LAB_1400ed090:
return plVar4 + 1;
}