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

141 lines
4.5 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14007f670 FUN_14007f670
* Pseudocode, not original source. */
void FUN_14007f670(int *param_1,wchar_t *param_2,longlong *param_3,undefined8 param_4)
{
undefined8 *puVar1;
int *piVar2;
wchar_t *pwVar3;
undefined8 *puVar4;
int iVar5;
longlong lVar6;
piVar2 = (int *)(**(code **)(**(longlong **)(param_1 + 0x52) + 0x58))();
FUN_14003d040(piVar2);
if (DAT_14017614f != '\0') {
param_3 = (longlong *)**(longlong **)(param_1 + 0x52);
param_2 = L"Proud::CNetThreads_S::~CNetThreads_S";
(*(code *)param_3[0x19])();
}
*(undefined1 *)(param_1 + 0x50) = 1;
FUN_14003d0d0((longlong)piVar2);
puVar4 = (undefined8 *)0x0;
if (*(undefined8 **)(param_1 + 0x22) != (undefined8 *)0x0) {
puVar4 = (undefined8 *)**(undefined8 **)(param_1 + 0x22);
}
FUN_140045bb0(puVar4);
if (*(undefined8 **)(param_1 + 0x24) == (undefined8 *)0x0) {
puVar4 = (undefined8 *)0x0;
}
else {
puVar4 = (undefined8 *)**(undefined8 **)(param_1 + 0x24);
}
FUN_140045bb0(puVar4);
piVar2 = param_1;
FUN_14003d040(param_1);
iVar5 = 0;
lVar6 = 0;
if (0 < param_1[0x1e]) {
do {
if ((lVar6 < 0) || (param_1[0x1e] <= iVar5)) {
/* WARNING: Subroutine does not return */
FUN_14003def0(piVar2,param_2,param_3,param_4);
}
puVar4 = *(undefined8 **)(*(longlong *)(param_1 + 0x1c) + lVar6 * 8);
piVar2 = (int *)0x0;
if (puVar4 != (undefined8 *)0x0) {
piVar2 = (int *)*puVar4;
}
FUN_140045bb0((undefined8 *)piVar2);
iVar5 = iVar5 + 1;
lVar6 = lVar6 + 1;
} while (iVar5 < param_1[0x1e]);
}
piVar2 = param_1;
FUN_14003d0d0((longlong)param_1);
iVar5 = 0;
lVar6 = 0;
if (0 < param_1[0x14]) {
do {
if ((lVar6 < 0) || (param_1[0x14] <= iVar5)) {
/* WARNING: Subroutine does not return */
FUN_14003def0(piVar2,param_2,param_3,param_4);
}
puVar4 = *(undefined8 **)(*(longlong *)(param_1 + 0x12) + lVar6 * 8);
piVar2 = (int *)0x0;
if (puVar4 != (undefined8 *)0x0) {
piVar2 = (int *)*puVar4;
}
FUN_140045bb0((undefined8 *)piVar2);
iVar5 = iVar5 + 1;
lVar6 = lVar6 + 1;
} while (iVar5 < param_1[0x14]);
}
CloseHandle(*(HANDLE *)(param_1 + 0x60));
FUN_14007a840((longlong *)(param_1 + 0x5a));
FUN_140045ca0((UINT *)(param_1 + 0x56));
FUN_1400486f0((undefined8 *)(param_1 + 0x54));
if ((*(longlong *)(param_1 + 0x24) != 0) &&
(*(longlong *)(*(longlong *)(param_1 + 0x24) + 8) =
*(longlong *)(*(longlong *)(param_1 + 0x24) + 8) + -1,
*(longlong *)(*(longlong *)(param_1 + 0x24) + 8) == 0)) {
puVar4 = *(undefined8 **)(param_1 + 0x24);
puVar1 = (undefined8 *)*puVar4;
if (puVar1 != (undefined8 *)0x0) {
FUN_140045c30(puVar1);
operator_delete(puVar1);
}
FUN_14003e8b0(puVar4);
}
if ((*(longlong *)(param_1 + 0x22) != 0) &&
(*(longlong *)(*(longlong *)(param_1 + 0x22) + 8) =
*(longlong *)(*(longlong *)(param_1 + 0x22) + 8) + -1,
*(longlong *)(*(longlong *)(param_1 + 0x22) + 8) == 0)) {
puVar4 = *(undefined8 **)(param_1 + 0x22);
puVar1 = (undefined8 *)*puVar4;
if (puVar1 != (undefined8 *)0x0) {
FUN_140045c30(puVar1);
operator_delete(puVar1);
}
FUN_14003e8b0(puVar4);
}
*(undefined ***)(param_1 + 0x18) = Proud::CFastArray<Proud::RefCount<Proud::Thread>,0>::vftable;
pwVar3 = (wchar_t *)(longlong)param_1[0x1e];
if (0 < param_1[0x1e]) {
FUN_14005cbc0(*(longlong **)(param_1 + 0x1c),(longlong)pwVar3);
param_2 = pwVar3;
}
pwVar3 = *(wchar_t **)(param_1 + 0x1c);
if (pwVar3 != (wchar_t *)0x0) {
param_3 = *(longlong **)(param_1 + 0x1a);
if (param_3 == (longlong *)0x0) {
FUN_14003e8b0(pwVar3);
}
else {
(**(code **)(*param_3 + 0x18))(param_3);
param_2 = pwVar3;
}
}
*(undefined ***)(param_1 + 0xe) = Proud::CFastArray<Proud::RefCount<Proud::Thread>,0>::vftable;
pwVar3 = (wchar_t *)(longlong)param_1[0x14];
if (0 < param_1[0x14]) {
FUN_14005cbc0(*(longlong **)(param_1 + 0x12),(longlong)pwVar3);
param_2 = pwVar3;
}
pwVar3 = *(wchar_t **)(param_1 + 0x12);
if (pwVar3 != (wchar_t *)0x0) {
param_3 = *(longlong **)(param_1 + 0x10);
if (param_3 == (longlong *)0x0) {
FUN_14003e8b0(pwVar3);
}
else {
(**(code **)(*param_3 + 0x18))(param_3);
param_2 = pwVar3;
}
}
FUN_14003d110(param_1,param_2,param_3,param_4);
return;
}