/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14007f0c0 FUN_14007f0c0 * Pseudocode, not original source. */ void FUN_14007f0c0(longlong param_1,longlong *param_2,undefined8 *param_3,undefined8 param_4) { uint uVar1; int *piVar2; longlong lVar3; longlong *plVar4; longlong lVar5; ulonglong uVar6; int iVar7; longlong lVar8; 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) { FUN_14006ba50(local_50, L"Cannot call GetUdpListenerLocalAddrs unless ServerUdpAssignMode_Static is used!" ,param_3,param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_50,(ThrowInfo *)&DAT_1401a93e8); } uVar6 = 0; plVar4 = param_2; FUN_14007b6d0((longlong)param_2,0); iVar7 = 0; lVar8 = 0; if (0 < *(int *)(param_1 + 0x638)) { do { if (lVar8 < 0) { LAB_14007f20f: /* WARNING: Subroutine does not return */ FUN_14006be30(plVar4,uVar6,param_3,param_4); } uVar1 = *(uint *)(param_1 + 0x638); uVar6 = (ulonglong)uVar1; if ((int)uVar1 <= iVar7) goto LAB_14007f20f; param_3 = *(undefined8 **)(param_1 + 0x630); lVar3 = 0; if ((longlong *)param_3[lVar8] != (longlong *)0x0) { lVar3 = *(longlong *)param_3[lVar8]; } plVar4 = *(longlong **)(lVar3 + 0x150); if ((plVar4 != (longlong *)0x0) && (*plVar4 != 0)) { if ((int)uVar1 <= iVar7) { /* WARNING: Subroutine does not return */ FUN_14006be30(plVar4,uVar6,param_3,param_4); } lVar3 = 0; if ((longlong *)param_3[lVar8] != (longlong *)0x0) { lVar3 = *(longlong *)param_3[lVar8]; } lVar5 = 0; if (*(longlong **)(lVar3 + 0x150) != (longlong *)0x0) { lVar5 = **(longlong **)(lVar3 + 0x150); } param_3 = FUN_140071560(lVar5,local_60); param_4 = 1; uVar6 = (ulonglong)*(uint *)(param_2 + 3); plVar4 = param_2; FUN_14007bb90((longlong)param_2,*(uint *)(param_2 + 3),(longlong)param_3,1); } iVar7 = iVar7 + 1; lVar8 = lVar8 + 1; } while (iVar7 < *(int *)(param_1 + 0x638)); } FUN_14006b3e0((longlong)piVar2); return; }