/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401dc300 FUN_1401dc300 * Pseudocode, not original source. */ void FUN_1401dc300(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { undefined8 *puVar1; void *pvVar2; longlong lVar3; longlong *plVar4; undefined8 local_res10; undefined8 local_res18; undefined8 *local_res20; undefined **local_70; undefined8 local_68; undefined8 local_60; undefined8 local_58; undefined8 local_50; *param_1 = Proud::CNetClientImpl::vftable; param_1[0xc] = Proud::CNetClientImpl::vftable; param_1[0xd] = Proud::CNetClientImpl::vftable; plVar4 = param_1 + 0xe; *plVar4 = (longlong)Proud::CNetClientImpl::vftable; param_1[0xf] = Proud::CNetClientImpl::vftable; param_1[0x11] = Proud::CNetClientImpl::vftable; param_1[0x12] = Proud::CNetClientImpl::vftable; param_1[0x13] = Proud::CNetClientImpl::vftable; lVar3 = 0; local_68 = 0; local_60 = 0; local_58 = 0; local_50 = 0; local_70 = Proud::ByteArray::vftable; (**(code **)(*plVar4 + 0x80))(plVar4,DAT_140344d60,&local_70,param_4,0xfffffffffffffffe); FUN_14019a9e0(&local_70); FUN_14019f710(param_1); if (param_1[0xbb] != 0) { lVar3 = *(longlong *)(param_1[0xbb] + 0x38); } FUN_14016db50(lVar3 + 0x10); FUN_1401db2b0(param_1 + 0xbc); local_res10 = 0; FUN_1401c8610(param_1 + 0x2ae,&local_res10); FUN_1401db880(param_1 + 700); FUN_1401db880(param_1 + 0x2c0); FUN_1401d3ed0(param_1 + 0x2e0); FUN_1401d40a0(param_1 + 0x2a6); FUN_1401d40a0(param_1 + 0xdc); FUN_1401d5a70(param_1 + 0x2ca); local_res18 = 0; FUN_1401eb200(param_1 + 0x2a4,&local_res18); if (param_1[0x16] != 0) { FUN_1401c6940(param_1[0x16],param_1); } FUN_14016dbe0(lVar3 + 0x10); puVar1 = (undefined8 *)param_1[0xb]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } param_1[0xb] = 0; FUN_14016eb80(param_1 + 0x307); FUN_14016dcd0(param_1 + 0x303); FUN_14016eb80(param_1 + 0x2fe); FUN_14016dcd0(param_1 + 0x2fa); FUN_1401d4140(param_1 + 0x2f6); puVar1 = (undefined8 *)param_1[0x2f6]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } FUN_1401d7590(param_1 + 0x2e4); FUN_1401d3ed0(param_1 + 0x2e0); puVar1 = (undefined8 *)param_1[0x2e0]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } FUN_1401d7590(param_1 + 0x2d5); FUN_1401d7590(param_1 + 0x2ca); FUN_1401db880(param_1 + 0x2c0); puVar1 = (undefined8 *)param_1[0x2c0]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } FUN_1401db880(param_1 + 700); puVar1 = (undefined8 *)param_1[700]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } if ((param_1[699] != 0) && (*(longlong *)(param_1[699] + 8) = *(longlong *)(param_1[699] + 8) + -1, *(longlong *)(param_1[699] + 8) == 0)) { plVar4 = (longlong *)param_1[699]; puVar1 = (undefined8 *)*plVar4; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } FUN_14016d970(plVar4); } local_res20 = param_1 + 0x2b1; FUN_14019a9e0(param_1 + 0x2b5); FUN_14004eb70(param_1 + 0x2b1); if ((param_1[0x2ae] != 0) && (*(longlong *)(param_1[0x2ae] + 8) = *(longlong *)(param_1[0x2ae] + 8) + -1, *(longlong *)(param_1[0x2ae] + 8) == 0)) { puVar1 = (undefined8 *)param_1[0x2ae]; operator_delete((void *)*puVar1); FUN_14016d970(puVar1); } param_1[0x2ac] = 0; param_1[0x2ab] = Proud::IP2PGroupMember::vftable; param_1[0x2aa] = Proud::ISendDest_C::vftable; FUN_1401d40a0(param_1 + 0x2a6); puVar1 = (undefined8 *)param_1[0x2a6]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } if ((param_1[0x2a4] != 0) && (*(longlong *)(param_1[0x2a4] + 8) = *(longlong *)(param_1[0x2a4] + 8) + -1, *(longlong *)(param_1[0x2a4] + 8) == 0)) { plVar4 = (longlong *)param_1[0x2a4]; puVar1 = (undefined8 *)*plVar4; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } FUN_14016d970(plVar4); } FUN_14019eab0(param_1 + 0x161); FUN_14019a9e0(param_1 + 0x15b); FUN_1401d40a0(param_1 + 0xdc); puVar1 = (undefined8 *)param_1[0xdc]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } FUN_1401db440(param_1 + 0xbc); FUN_1401c8200(param_1 + 0xbb); if ((param_1[0xba] != 0) && (*(longlong *)(param_1[0xba] + 8) = *(longlong *)(param_1[0xba] + 8) + -1, *(longlong *)(param_1[0xba] + 8) == 0)) { puVar1 = (undefined8 *)param_1[0xba]; pvVar2 = (void *)*puVar1; if (pvVar2 != (void *)0x0) { FUN_1401ebe30(pvVar2); operator_delete(pvVar2); } FUN_14016d970(puVar1); } FUN_14016dc00(param_1 + 0xa3); puVar1 = (undefined8 *)param_1[0x9c]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } FUN_14019a9e0(param_1 + 0x95); param_1[0x13] = Proud::IVizAgentDg::vftable; if (param_1[0x16] != 0) { FUN_1401c6940(param_1[0x16],param_1); } param_1[0x12] = Proud::IUdpPacketFragBoardDg::vftable; param_1[0x11] = Proud::IUdpPacketDefragBoardDg::vftable; param_1[0xf] = Proud::IFastSocketDelegate::vftable; param_1[0xe] = Proud::IRmiHost::vftable; param_1[0xd] = Proud::IP2PGroupMember::vftable; param_1[0xc] = Proud::ISendDest_C::vftable; FUN_14019f3b0(param_1); return; }