/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401b50c0 FUN_1401b50c0 * Pseudocode, not original source. */ void FUN_1401b50c0(undefined8 *param_1) { longlong *plVar1; void *pvVar2; undefined8 *puVar3; longlong lVar4; undefined8 local_res10; undefined8 uVar5; uVar5 = 0xfffffffffffffffe; *param_1 = Proud::CRemoteClient_S::vftable; param_1[1] = Proud::CRemoteClient_S::vftable; param_1[7] = Proud::CRemoteClient_S::vftable; param_1[8] = Proud::CRemoteClient_S::vftable; param_1[0x14] = Proud::CRemoteClient_S::vftable; param_1[0x18] = Proud::CRemoteClient_S::vftable; param_1[0x21] = Proud::CRemoteClient_S::vftable; FUN_1401b46a0(param_1 + 0xd4); if (param_1[0x24] != 0) { FUN_140171ed0(param_1[0x24],param_1); } if (param_1[4] != 0) { FUN_1401a3550(); } plVar1 = (longlong *)param_1[0xec]; if ((plVar1 != (longlong *)0x0) && (*plVar1 != 0)) { if (plVar1 == (longlong *)0x0) { lVar4 = 0; } else { lVar4 = *plVar1; } FUN_1401b4610(param_1[0x47] + 0x6f0,lVar4 + 0x158,0); if (0 < *(int *)(param_1 + 0xed)) { FUN_14015e410(param_1[0x47] + 0x1848,*(undefined4 *)(param_1[0x47] + 0x1860),param_1 + 0xed,1, uVar5); } local_res10 = 0; FUN_1401eb200(param_1 + 0xec,&local_res10); } pvVar2 = (void *)param_1[0xe9]; if (pvVar2 != (void *)0x0) { FUN_1401ba660(pvVar2); operator_delete(pvVar2); } FUN_14018eb80(param_1 + 0x4d); if ((param_1[0xec] != 0) && (*(longlong *)(param_1[0xec] + 8) = *(longlong *)(param_1[0xec] + 8) + -1, *(longlong *)(param_1[0xec] + 8) == 0)) { plVar1 = (longlong *)param_1[0xec]; puVar3 = (undefined8 *)*plVar1; if (puVar3 != (undefined8 *)0x0) { (**(code **)*puVar3)(puVar3,1); } FUN_14016d970(plVar1); } if ((void *)param_1[0xea] != (void *)0x0) { operator_delete((void *)param_1[0xea]); } FUN_1401bc080(param_1 + 0xe0); FUN_1401b4830(param_1 + 0xd4); FUN_14019a9e0(param_1 + 0xcb); FUN_14018eb80(param_1 + 0x4d); puVar3 = (undefined8 *)param_1[0x4d]; if (puVar3 != (undefined8 *)0x0) { (**(code **)*puVar3)(puVar3,1); } param_1[0x48] = Proud::CFastArray::vftable; if (param_1[0x4a] != 0) { plVar1 = (longlong *)param_1[0x49]; if (plVar1 == (longlong *)0x0) { FUN_14016d970(); } else { (**(code **)(*plVar1 + 0x18))(plVar1,param_1[0x4a]); } } pvVar2 = (void *)param_1[0x45]; if (pvVar2 != (void *)0x0) { FUN_14019a9e0((longlong)pvVar2 + 8); operator_delete(pvVar2); } FUN_14019a9e0(param_1 + 0x3f); FUN_14004eb70(param_1 + 0x3e); FUN_14016dc00(param_1 + 0x25); param_1[0x21] = Proud::ISendIssueObject::vftable; FUN_1401ba9f0(param_1 + 0x18); param_1[8] = Proud::CP2PGroupMemberBase_S::vftable; FUN_14018e710(param_1 + 9); if (param_1[0x24] != 0) { FUN_140171ed0(param_1[0x24],param_1); } param_1[7] = Proud::ICompletionContext::vftable; FUN_1401c2930(param_1 + 1); *param_1 = Proud::ISendDest_S::vftable; return; }