/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400d2f70 FUN_1400d2f70 * Pseudocode, not original source. */ void FUN_1400d2f70(longlong *param_1,undefined8 param_2,longlong *param_3,undefined8 param_4) { void *pvVar1; undefined8 *puVar2; longlong lVar3; longlong *plVar4; longlong *plVar5; longlong local_res10; *param_1 = (longlong)Proud::CRemoteClient_S::vftable; param_1[1] = (longlong)Proud::CRemoteClient_S::vftable; param_1[7] = (longlong)Proud::CRemoteClient_S::vftable; param_1[8] = (longlong)Proud::CRemoteClient_S::vftable; param_1[0x14] = (longlong)Proud::CRemoteClient_S::vftable; param_1[0x18] = (longlong)Proud::CRemoteClient_S::vftable; param_1[0x21] = (longlong)Proud::CRemoteClient_S::vftable; FUN_1400d2560((char *)(param_1 + 0xd4)); if ((longlong *)param_1[0x24] != (longlong *)0x0) { FUN_140079c90((longlong *)param_1[0x24],(longlong)param_1,param_3,param_4); } plVar4 = param_1 + 2; if ((longlong *)param_1[4] != (longlong *)0x0) { FUN_1400c17a0((longlong *)param_1[4],plVar4,param_3,param_4); } plVar5 = (longlong *)param_1[0xec]; if ((plVar5 != (longlong *)0x0) && (*plVar5 != 0)) { if (plVar5 == (longlong *)0x0) { lVar3 = 0; } else { lVar3 = *plVar5; } FUN_1400d24d0((char *)(param_1[0x47] + 0x6f0),lVar3 + 0x158,'\0'); param_3 = param_1 + 0xed; if (0 < (int)*param_3) { param_4 = 1; FUN_140063e90(param_1[0x47] + 0x1848,*(int *)(param_1[0x47] + 0x1860),(longlong)param_3,1); } local_res10 = 0; plVar4 = &local_res10; FUN_1400a2a80(param_1 + 0xec,plVar4); } pvVar1 = (void *)param_1[0xe9]; if (pvVar1 != (void *)0x0) { FUN_1400d85b0((longlong)pvVar1,plVar4,param_3,param_4); operator_delete(pvVar1); } FUN_140096530(param_1 + 0x4d,plVar4,param_3,param_4); if ((param_1[0xec] != 0) && (*(longlong *)(param_1[0xec] + 8) = *(longlong *)(param_1[0xec] + 8) + -1, *(longlong *)(param_1[0xec] + 8) == 0)) { plVar5 = (longlong *)param_1[0xec]; puVar2 = (undefined8 *)*plVar5; if (puVar2 != (undefined8 *)0x0) { plVar4 = (longlong *)0x1; (**(code **)*puVar2)(); } FUN_14006cc60(plVar5); } if ((void *)param_1[0xea] != (void *)0x0) { operator_delete((void *)param_1[0xea]); } FUN_1400da3a0((longlong)(param_1 + 0xe0)); FUN_1400d26f0((char *)(param_1 + 0xd4)); FUN_140078360(param_1 + 0xcb); FUN_140096530(param_1 + 0x4d,plVar4,param_3,param_4); if ((undefined8 *)param_1[0x4d] != (undefined8 *)0x0) { plVar4 = (longlong *)0x1; (*(code *)**(undefined8 **)param_1[0x4d])(); } param_1[0x48] = (longlong)Proud::CFastArray::vftable; plVar5 = (longlong *)param_1[0x4a]; if (plVar5 != (longlong *)0x0) { param_3 = (longlong *)param_1[0x49]; if (param_3 == (longlong *)0x0) { FUN_14006cc60(plVar5); } else { (**(code **)(*param_3 + 0x18))(param_3); plVar4 = plVar5; } } pvVar1 = (void *)param_1[0x45]; if (pvVar1 != (void *)0x0) { FUN_140078360((undefined8 *)((longlong)pvVar1 + 8)); operator_delete(pvVar1); } FUN_140078360(param_1 + 0x3f); FUN_1400031e0(param_1 + 0x3e,plVar4,param_3,param_4); FUN_14006b400((undefined4 *)(param_1 + 0x25),plVar4,param_3,param_4); param_1[0x21] = (longlong)Proud::ISendIssueObject::vftable; FUN_1400d8940(param_1 + 0x18); param_1[8] = (longlong)Proud::CP2PGroupMemberBase_S::vftable; FUN_1400960c0((char *)(param_1 + 9),plVar4,param_3,param_4); if ((longlong *)param_1[0x24] != (longlong *)0x0) { plVar4 = param_1; FUN_140079c90((longlong *)param_1[0x24],(longlong)param_1,param_3,param_4); } param_1[7] = (longlong)Proud::ICompletionContext::vftable; FUN_1400deeb0(param_1 + 1,plVar4,param_3,param_4); *param_1 = (longlong)Proud::ISendDest_S::vftable; return; }