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

63 lines
2.1 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14007fcb0 FUN_14007fcb0
* Pseudocode, not original source. */
void FUN_14007fcb0(longlong param_1,longlong param_2,undefined8 *param_3,undefined8 param_4)
{
longlong *plVar1;
int *piVar2;
longlong lVar3;
longlong lVar4;
ulonglong uVar5;
int iVar6;
longlong lVar7;
undefined8 local_60 [2];
exception local_50 [72];
piVar2 = (int *)(**(code **)(*(longlong *)(param_1 + -0xa8) + 0x58))(param_1 + -0xa8);
FUN_14006b350(piVar2);
if (DAT_1401b42cf != '\0') {
param_3 = *(undefined8 **)(param_1 + -0xa8);
(*(code *)param_3[0x19])(param_1 + -0xa8);
}
if (*(int *)(param_1 + 0x179c) == 1) {
uVar5 = 0;
lVar3 = param_2;
FUN_14007b6d0(param_2,0);
iVar6 = 0;
lVar7 = 0;
if (0 < *(int *)(param_1 + 0x638)) {
do {
if ((lVar7 < 0) || (*(int *)(param_1 + 0x638) <= iVar6)) {
/* WARNING: Subroutine does not return */
FUN_14006be30(lVar3,uVar5,param_3,param_4);
}
plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x630) + lVar7 * 8);
lVar3 = 0;
if (plVar1 != (longlong *)0x0) {
lVar3 = *plVar1;
}
lVar4 = 0;
if (*(longlong **)(lVar3 + 0x150) != (longlong *)0x0) {
lVar4 = **(longlong **)(lVar3 + 0x150);
}
param_3 = FUN_140071560(lVar4,local_60);
param_4 = 1;
uVar5 = (ulonglong)*(uint *)(param_2 + 0x18);
lVar3 = param_2;
FUN_14007bb90(param_2,*(uint *)(param_2 + 0x18),(longlong)param_3,1);
iVar6 = iVar6 + 1;
lVar7 = lVar7 + 1;
} while (iVar6 < *(int *)(param_1 + 0x638));
}
FUN_14006b3e0((longlong)piVar2);
return;
}
FUN_14006ba50(local_50,
L"Cannot call GetUdpSocketAddrList unless ServerUdpAssignMode_Static is used!",
param_3,param_4);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_50,(ThrowInfo *)&DAT_1401a93e8);
}