/* 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); }