/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14009fa00 FUN_14009fa00 * Pseudocode, not original source. */ void FUN_14009fa00(longlong *param_1,wchar_t *param_2,longlong *param_3,longlong param_4) { longlong *plVar1; undefined8 *puVar2; void *pvVar3; longlong *plVar4; int *piVar5; wchar_t *pwVar6; wchar_t *pwVar7; *param_1 = (longlong)Proud::CNetServerImpl::vftable; param_1[0xc] = (longlong)Proud::CNetServerImpl::vftable; param_1[0xd] = (longlong)Proud::CNetServerImpl::vftable; param_1[0xe] = (longlong)Proud::CNetServerImpl::vftable; param_1[0xf] = (longlong)Proud::CNetServerImpl::vftable; param_1[0x15] = (longlong)Proud::CNetServerImpl::vftable; param_1[0x16] = (longlong)Proud::CNetServerImpl::vftable; param_1[0x17] = (longlong)Proud::CNetServerImpl::vftable; param_1[0x23] = (longlong)Proud::CNetServerImpl::vftable; param_1[0x24] = (longlong)Proud::CNetServerImpl::vftable; FUN_14009eec0((longlong)(param_1 + 0x15),param_2,(longlong)param_3,param_4); plVar1 = param_1 + 0x25; FUN_14006b350((int *)plVar1); if (DAT_1401b42cf != '\0') { param_2 = L"Proud::CNetServerImpl::~CNetServerImpl"; (**(code **)(*param_1 + 200))(param_1); } FUN_1400bef00((longlong)param_1,param_2,param_3,param_4); FUN_14006b3e0((longlong)plVar1); param_1[0x309] = (longlong)Proud::CFastArray::vftable; pwVar7 = (wchar_t *)param_1[0x30b]; if (pwVar7 != (wchar_t *)0x0) { if ((longlong *)param_1[0x30a] == (longlong *)0x0) { FUN_14006cc60(pwVar7); } else { (**(code **)(*(longlong *)param_1[0x30a] + 0x18))(); } } FUN_1400031e0(param_1 + 0x301,pwVar7,param_3,param_4); puVar2 = (undefined8 *)param_1[0x2fe]; if (puVar2 != (undefined8 *)0x0) { FUN_1400cc6a0(puVar2,(longlong *)pwVar7,param_3,param_4); operator_delete(puVar2); } param_1[0x2f9] = (longlong)Proud::CFastArray::vftable; pwVar6 = (wchar_t *)param_1[0x2fb]; if (pwVar6 != (wchar_t *)0x0) { param_3 = (longlong *)param_1[0x2fa]; if (param_3 == (longlong *)0x0) { FUN_14006cc60(pwVar6); } else { (**(code **)(*param_3 + 0x18))(param_3); pwVar7 = pwVar6; } } param_1[0x2f4] = (longlong)Proud::CFastArray::vftable; pwVar6 = (wchar_t *)param_1[0x2f6]; if (pwVar6 != (wchar_t *)0x0) { param_3 = (longlong *)param_1[0x2f5]; if (param_3 == (longlong *)0x0) { FUN_14006cc60(pwVar6); } else { (**(code **)(*param_3 + 0x18))(param_3); pwVar7 = pwVar6; } } FUN_14007d170((char *)(param_1 + 0x2e8)); FUN_140080120((char *)(param_1 + 0x2dd)); FUN_140076720(param_1 + 0x19a,pwVar7,param_3,param_4); FUN_14007d170((char *)(param_1 + 399)); FUN_140078360(param_1 + 0x18a); FUN_1400dd4e0(param_1 + 0x189); FUN_140078360(param_1 + 0x182); FUN_14007b380(param_1 + 0x105); FUN_14007b270(param_1 + 0x101); FUN_14006b400((undefined4 *)(param_1 + 0xfa),pwVar7,param_3,param_4); FUN_14006b400((undefined4 *)(param_1 + 0xf3),pwVar7,param_3,param_4); pvVar3 = (void *)param_1[0xf2]; if (pvVar3 != (void *)0x0) { FUN_140076380((longlong)pvVar3,(longlong *)pwVar7,param_3,param_4); operator_delete(pvVar3); } pvVar3 = (void *)param_1[0xf1]; if (pvVar3 != (void *)0x0) { FUN_140076380((longlong)pvVar3,(longlong *)pwVar7,param_3,param_4); operator_delete(pvVar3); } FUN_140080010(param_1 + 0xea,pwVar7,param_3,param_4); if ((param_1[0xe9] != 0) && (*(longlong *)(param_1[0xe9] + 8) = *(longlong *)(param_1[0xe9] + 8) + -1, *(longlong *)(param_1[0xe9] + 8) == 0)) { puVar2 = (undefined8 *)param_1[0xe9]; plVar4 = (longlong *)*puVar2; if (plVar4 != (longlong *)0x0) { FUN_140072370(plVar4,pwVar7,param_3,param_4); FUN_14006cc60(plVar4); } FUN_14006cc60(puVar2); } FUN_14008ed20((char *)(param_1 + 0xde)); param_1[0xd9] = (longlong)Proud::CFastArray,0>::vftable; pwVar6 = (wchar_t *)(longlong)(int)param_1[0xdc]; if (0 < (int)param_1[0xdc]) { FUN_1400eaae0((longlong *)param_1[0xdb],(longlong)pwVar6); pwVar7 = pwVar6; } pwVar6 = (wchar_t *)param_1[0xdb]; if (pwVar6 != (wchar_t *)0x0) { param_3 = (longlong *)param_1[0xda]; if (param_3 == (longlong *)0x0) { FUN_14006cc60(pwVar6); } else { (**(code **)(*param_3 + 0x18))(param_3); pwVar7 = pwVar6; } } FUN_1400be370(param_1 + 0x95); FUN_1400c15f0(param_1 + 0x90); if ((undefined8 *)param_1[0x8f] != (undefined8 *)0x0) { pwVar7 = (wchar_t *)0x1; (*(code *)**(undefined8 **)param_1[0x8f])(); } FUN_140096530(param_1 + 0x8b,(longlong *)pwVar7,param_3,param_4); if ((undefined8 *)param_1[0x8b] != (undefined8 *)0x0) { pwVar7 = (wchar_t *)0x1; (*(code *)**(undefined8 **)param_1[0x8b])(); } FUN_1400960c0((char *)(param_1 + 0x80),pwVar7,param_3,param_4); piVar5 = (int *)param_1[0x7c]; if (piVar5 != (int *)0x0) { FUN_1400c68e0(piVar5,pwVar7,param_3,param_4); operator_delete(piVar5); } FUN_140080120((char *)(param_1 + 0x71)); FUN_14008f880((char *)(param_1 + 0x66)); FUN_14008f880((char *)(param_1 + 0x5b)); FUN_14007d170((char *)(param_1 + 0x50)); FUN_140008440(param_1 + 0x43); FUN_140008440(param_1 + 0x42); FUN_14006b400((undefined4 *)(param_1 + 0x2c),pwVar7,param_3,param_4); FUN_14006b400((undefined4 *)plVar1,pwVar7,param_3,param_4); param_1[0x24] = (longlong)Proud::IUserTaskQueueOwner::vftable; param_1[0x23] = (longlong)Proud::IVizAgentDg::vftable; param_1[0x17] = (longlong)Proud::CP2PGroupMemberBase_S::vftable; FUN_1400960c0((char *)(param_1 + 0x18),pwVar7,param_3,param_4); param_1[0x16] = (longlong)Proud::ICompletionContext::vftable; param_1[0x15] = (longlong)Proud::IRmiHost::vftable; FUN_1400deeb0(param_1 + 0xf,pwVar7,param_3,param_4); param_1[0xe] = (longlong)Proud::ISendDest_S::vftable; param_1[0xd] = (longlong)Proud::ICompletionPortEventSink::vftable; param_1[0xc] = (longlong)Proud::IFastSocketDelegate::vftable; FUN_1400beba0(param_1,pwVar7,param_3,param_4); return; }