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

79 lines
2.4 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400c8d00 FUN_1400c8d00
* Pseudocode, not original source. */
void FUN_1400c8d00(longlong param_1,int *param_2,SIZE_T param_3,longlong param_4,char param_5)
{
uint uVar1;
longlong lVar2;
int iVar3;
int *piVar4;
undefined4 *puVar5;
longlong lVar6;
longlong lVar7;
undefined4 local_58 [2];
longlong local_50;
longlong local_48;
int local_3c;
int local_30;
undefined **local_28;
int local_20;
undefined2 local_1c;
undefined1 local_18;
piVar4 = param_2;
lVar7 = param_4;
FUN_1400bca00(local_58);
local_28 = Proud::AddrPort::vftable;
local_18 = 0;
local_30 = 0;
local_20 = DAT_1401ac3d0;
local_1c = DAT_1401ac3d4;
puVar5 = local_58;
FUN_1400bc4d0((longlong)puVar5,piVar4,param_3,lVar7);
if (*(longlong *)(param_2 + 2) == 0) {
if (*(longlong *)(param_2 + 4) == 0) {
/* WARNING: Subroutine does not return */
FUN_1400d1900(puVar5,piVar4,param_3,lVar7);
}
uVar1 = param_2[6];
}
else {
uVar1 = *(uint *)(*(longlong *)(param_2 + 2) + 0x18);
}
iVar3 = (int)(*param_2 + (*param_2 >> 0x1f & 7U)) >> 3;
lVar6 = *(longlong *)(param_2 + 4);
if (lVar6 == 0) {
lVar2 = *(longlong *)(param_2 + 2);
if (lVar2 == 0) {
/* WARNING: Subroutine does not return */
FUN_1400d1900(0,(longlong)iVar3,(ulonglong)uVar1,lVar7);
}
if (*(int *)(lVar2 + 0x18) != 0) {
lVar6 = *(longlong *)(lVar2 + 0x10);
}
}
FUN_1400bcfa0((longlong)local_58,(undefined8 *)(iVar3 + lVar6),(ulonglong)(uVar1 - iVar3),lVar7);
local_18 = (undefined1)param_2[0x10];
local_20 = param_2[0xe];
local_1c = (undefined2)param_2[0xf];
local_30 = param_2[10];
FUN_1400cf890();
piVar4 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))();
FUN_14006b350(piVar4);
if (DAT_1401b42cf != '\0') {
(**(code **)(**(longlong **)(param_1 + 0x148) + 200))
(*(longlong **)(param_1 + 0x148),
L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_UserMessage");
}
FUN_1400c89b0(param_1,param_4,local_58,2,param_5);
FUN_14006b3e0((longlong)piVar4);
FUN_1400d1800(&local_50);
if ((local_48 != 0) && (local_3c < 0)) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
return;
}