server-re/decomp/AgentManager_Release_x64/full/functions/0x1400b1510.c
2026-10-15 09:58:24 -04:00

174 lines
6.4 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400b1510 FUN_1400b1510
* Pseudocode, not original source. */
void FUN_1400b1510(longlong *param_1,undefined8 param_2,undefined8 param_3,ulonglong param_4)
{
longlong *plVar1;
undefined8 *puVar2;
longlong lVar3;
longlong *plVar4;
undefined ***pppuVar5;
longlong local_res10 [2];
longlong *local_res20;
undefined **local_70;
undefined8 local_68;
undefined8 local_60;
undefined8 local_58;
undefined8 local_50;
*param_1 = (longlong)Proud::CNetClientImpl::vftable;
param_1[0xc] = (longlong)Proud::CNetClientImpl::vftable;
param_1[0xd] = (longlong)Proud::CNetClientImpl::vftable;
plVar4 = param_1 + 0xe;
*plVar4 = (longlong)Proud::CNetClientImpl::vftable;
param_1[0xf] = (longlong)Proud::CNetClientImpl::vftable;
param_1[0x11] = (longlong)Proud::CNetClientImpl::vftable;
param_1[0x12] = (longlong)Proud::CNetClientImpl::vftable;
param_1[0x13] = (longlong)Proud::CNetClientImpl::vftable;
lVar3 = 0;
local_68 = 0;
local_60 = 0;
local_58 = 0;
local_50 = 0;
local_70 = Proud::ByteArray::vftable;
pppuVar5 = &local_70;
(**(code **)(*plVar4 + 0x80))(plVar4,DAT_14016f130,pppuVar5,param_4,0xfffffffffffffffe);
FUN_140049e40(&local_70);
FUN_1400774a0((longlong)param_1,param_2,pppuVar5,param_4);
if (param_1[0xbb] != 0) {
lVar3 = *(longlong *)(param_1[0xbb] + 0x38);
}
FUN_14003d040((int *)(lVar3 + 0x10));
FUN_1400b04c0((char *)(param_1 + 0xbc));
local_res10[0] = 0;
plVar4 = local_res10;
FUN_14009d7e0(param_1 + 0x2ae,plVar4);
FUN_1400b0a90(param_1 + 700,plVar4,pppuVar5,param_4);
FUN_1400b0a90(param_1 + 0x2c0,plVar4,pppuVar5,param_4);
FUN_1400a91d0(param_1 + 0x2e0);
FUN_1400a93a0(param_1 + 0x2a6);
FUN_1400a93a0(param_1 + 0xdc);
FUN_1400aad70((char *)(param_1 + 0x2ca));
local_res10[1] = 0;
plVar4 = local_res10 + 1;
FUN_14009d860(param_1 + 0x2a4,plVar4);
if ((longlong *)param_1[0x16] != (longlong *)0x0) {
plVar4 = param_1;
FUN_14009b880((longlong *)param_1[0x16],(longlong)param_1,pppuVar5,param_4);
}
FUN_14003d0d0(lVar3 + 0x10);
if ((undefined8 *)param_1[0xb] != (undefined8 *)0x0) {
plVar4 = (longlong *)0x1;
(*(code *)**(undefined8 **)param_1[0xb])();
}
param_1[0xb] = 0;
FUN_140079b90(param_1 + 0x307);
FUN_1400768c0(param_1 + 0x303);
FUN_140079b90(param_1 + 0x2fe);
FUN_1400768c0(param_1 + 0x2fa);
FUN_1400a9440(param_1 + 0x2f6,plVar4,pppuVar5,param_4);
if ((undefined8 *)param_1[0x2f6] != (undefined8 *)0x0) {
plVar4 = (longlong *)0x1;
(*(code *)**(undefined8 **)param_1[0x2f6])();
}
FUN_1400ac810((char *)(param_1 + 0x2e4));
FUN_1400a91d0(param_1 + 0x2e0);
if ((undefined8 *)param_1[0x2e0] != (undefined8 *)0x0) {
plVar4 = (longlong *)0x1;
(*(code *)**(undefined8 **)param_1[0x2e0])();
}
FUN_1400ac810((char *)(param_1 + 0x2d5));
FUN_1400ac810((char *)(param_1 + 0x2ca));
FUN_1400b0a90(param_1 + 0x2c0,plVar4,pppuVar5,param_4);
if ((undefined8 *)param_1[0x2c0] != (undefined8 *)0x0) {
plVar4 = (longlong *)0x1;
(*(code *)**(undefined8 **)param_1[0x2c0])();
}
FUN_1400b0a90(param_1 + 700,plVar4,pppuVar5,param_4);
if ((undefined8 *)param_1[700] != (undefined8 *)0x0) {
plVar4 = (longlong *)0x1;
(*(code *)**(undefined8 **)param_1[700])();
}
if ((param_1[699] != 0) &&
(*(longlong *)(param_1[699] + 8) = *(longlong *)(param_1[699] + 8) + -1,
*(longlong *)(param_1[699] + 8) == 0)) {
plVar1 = (longlong *)param_1[699];
puVar2 = (undefined8 *)*plVar1;
if (puVar2 != (undefined8 *)0x0) {
plVar4 = (longlong *)0x1;
(**(code **)*puVar2)();
}
FUN_14003e8b0(plVar1);
}
local_res20 = param_1 + 0x2b1;
FUN_140049e40(param_1 + 0x2b5);
FUN_140002190(param_1 + 0x2b1,plVar4,pppuVar5,param_4);
if ((param_1[0x2ae] != 0) &&
(*(longlong *)(param_1[0x2ae] + 8) = *(longlong *)(param_1[0x2ae] + 8) + -1,
*(longlong *)(param_1[0x2ae] + 8) == 0)) {
puVar2 = (undefined8 *)param_1[0x2ae];
operator_delete((void *)*puVar2);
FUN_14003e8b0(puVar2);
}
param_1[0x2ac] = 0;
param_1[0x2ab] = (longlong)Proud::IP2PGroupMember::vftable;
param_1[0x2aa] = (longlong)Proud::ISendDest_C::vftable;
FUN_1400a93a0(param_1 + 0x2a6);
if ((undefined8 *)param_1[0x2a6] != (undefined8 *)0x0) {
plVar4 = (longlong *)0x1;
(*(code *)**(undefined8 **)param_1[0x2a6])();
}
if ((param_1[0x2a4] != 0) &&
(*(longlong *)(param_1[0x2a4] + 8) = *(longlong *)(param_1[0x2a4] + 8) + -1,
*(longlong *)(param_1[0x2a4] + 8) == 0)) {
plVar1 = (longlong *)param_1[0x2a4];
puVar2 = (undefined8 *)*plVar1;
if (puVar2 != (undefined8 *)0x0) {
plVar4 = (longlong *)0x1;
(**(code **)*puVar2)();
}
FUN_14003e8b0(plVar1);
}
FUN_140048130(param_1 + 0x161,plVar4,pppuVar5,param_4);
FUN_140049e40(param_1 + 0x15b);
FUN_1400a93a0(param_1 + 0xdc);
if ((undefined8 *)param_1[0xdc] != (undefined8 *)0x0) {
plVar4 = (longlong *)0x1;
(*(code *)**(undefined8 **)param_1[0xdc])();
}
FUN_1400b0650((char *)(param_1 + 0xbc));
FUN_14009d3d0(param_1 + 0xbb,plVar4,pppuVar5,param_4);
if ((param_1[0xba] != 0) &&
(*(longlong *)(param_1[0xba] + 8) = *(longlong *)(param_1[0xba] + 8) + -1,
*(longlong *)(param_1[0xba] + 8) == 0)) {
puVar2 = (undefined8 *)param_1[0xba];
plVar1 = (longlong *)*puVar2;
if (plVar1 != (longlong *)0x0) {
FUN_1400c0900(plVar1,plVar4,(ulonglong)pppuVar5,param_4);
operator_delete(plVar1);
}
FUN_14003e8b0(puVar2);
}
FUN_14003d110((undefined4 *)(param_1 + 0xa3),plVar4,pppuVar5,param_4);
if ((undefined8 *)param_1[0x9c] != (undefined8 *)0x0) {
plVar4 = (longlong *)0x1;
(*(code *)**(undefined8 **)param_1[0x9c])();
}
FUN_140049e40(param_1 + 0x95);
param_1[0x13] = (longlong)Proud::IVizAgentDg::vftable;
if ((longlong *)param_1[0x16] != (longlong *)0x0) {
plVar4 = param_1;
FUN_14009b880((longlong *)param_1[0x16],(longlong)param_1,pppuVar5,param_4);
}
param_1[0x12] = (longlong)Proud::IUdpPacketFragBoardDg::vftable;
param_1[0x11] = (longlong)Proud::IUdpPacketDefragBoardDg::vftable;
param_1[0xf] = (longlong)Proud::IFastSocketDelegate::vftable;
param_1[0xe] = (longlong)Proud::IRmiHost::vftable;
param_1[0xd] = (longlong)Proud::IP2PGroupMember::vftable;
param_1[0xc] = (longlong)Proud::ISendDest_C::vftable;
FUN_140077140(param_1,plVar4,pppuVar5,param_4);
return;
}