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

64 lines
2 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400d6070 FUN_1400d6070
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x0001400d61c7) */
void FUN_1400d6070(longlong param_1,undefined8 param_2,undefined8 param_3,undefined *param_4)
{
longlong *plVar1;
longlong *plVar2;
LPVOID pvVar3;
LPVOID pvVar4;
undefined8 uVar5;
code *pcVar6;
if (*(longlong *)(param_1 + 0x40) == 0) {
pvVar4 = (LPVOID)0x0;
}
else {
pvVar4 = *(LPVOID *)(param_1 + 0x30);
}
while( true ) {
if (pvVar4 == (LPVOID)0x0) {
return;
}
if (pvVar4 == (LPVOID)0x0) break;
plVar1 = *(longlong **)((longlong)pvVar4 + 0x10);
if ((longlong *)plVar1[2] != (longlong *)0x0) {
FUN_1400d34f0((longlong *)plVar1[2],plVar1,param_3,param_4);
}
plVar2 = *(longlong **)(param_1 + 0x78);
FUN_1400d41c0((short *)plVar1);
plVar1[0x33] = (longlong)Proud::CFastArray<Proud::UdpPacketCtx*___ptr64,1>::vftable;
if ((LPVOID)plVar1[0x35] != (LPVOID)0x0) {
if ((longlong *)plVar1[0x34] == (longlong *)0x0) {
FUN_14006cc60((LPVOID)plVar1[0x35]);
}
else {
(**(code **)(*(longlong *)plVar1[0x34] + 0x18))();
}
}
pcVar6 = FUN_1400d4250;
uVar5 = 6;
_eh_vector_destructor_iterator_(plVar1 + 3,0x38,6,FUN_1400d4250);
param_4 = pcVar6;
if ((longlong *)plVar1[2] != (longlong *)0x0) {
FUN_1400d34f0((longlong *)plVar1[2],plVar1,uVar5,pcVar6);
param_4 = pcVar6;
}
(**(code **)(*plVar2 + 0x18))(plVar2,plVar1);
if (pvVar4 == (LPVOID)0x0) {
/* WARNING: Subroutine does not return */
FUN_1400064e0(0x80004005);
}
pvVar3 = *(LPVOID *)((longlong)pvVar4 + 0x18);
param_3 = 0;
FUN_1400d4570((char *)(param_1 + 0x20),pvVar4,'\0');
pvVar4 = pvVar3;
}
/* WARNING: Subroutine does not return */
FUN_1400064e0(0x80004005);
}