/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14006de50 FUN_14006de50 * Pseudocode, not original source. */ void FUN_14006de50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { longlong *plVar1; longlong lVar2; undefined8 uVar3; uint local_30 [2]; undefined **local_28; undefined4 local_20; undefined2 local_1c; undefined4 local_18; FUN_14006b350((int *)(param_1 + 0x30)); *(undefined1 *)(param_1 + 0x80) = 1; FUN_140074120((undefined8 *)(param_1 + 0x88)); if ((*(undefined8 **)(param_1 + 0x10) != (undefined8 *)0x0) && (plVar1 = (longlong *)**(undefined8 **)(param_1 + 0x10), plVar1 != (longlong *)0x0)) { FUN_140071fc0(plVar1,param_2,param_3,param_4); while( true ) { local_28 = Proud::AddrPort::vftable; local_18 = 0; local_30[0] = 0; local_30[1] = 0; local_20 = DAT_1401ac3d0; local_1c = DAT_1401ac3d4; lVar2 = 0; if (*(longlong **)(param_1 + 0x10) != (longlong *)0x0) { lVar2 = **(longlong **)(param_1 + 0x10); } if (*(char *)(lVar2 + 0x280) == '\0') break; lVar2 = 0; if (*(longlong **)(param_1 + 0x10) != (longlong *)0x0) { lVar2 = **(longlong **)(param_1 + 0x10); } uVar3 = FUN_140071ef0(lVar2,0,local_30); if (((char)uVar3 != '\0') || (DAT_1401b45d0 != '\0')) break; Sleep(10); } } FUN_14006b3e0(param_1 + 0x30); return; }