167 lines
5.3 KiB
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;
|
|
}
|
|
|