server-re/decomp/DBCServer_Release_x64/full/functions/0x1401dc300.c

167 lines
5.3 KiB
C

/* 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;
}