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

209 lines
7.3 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14005abe0 FUN_14005abe0
* Pseudocode, not original source. */
void FUN_14005abe0(wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,undefined8 param_4)
{
int iVar1;
longlong *plVar2;
bool bVar3;
longlong *plVar4;
wchar_t *pwVar5;
int *piVar6;
longlong lVar7;
wchar_t *pwVar8;
wchar_t *pwVar9;
wchar_t *pwVar10;
longlong lVar11;
int iVar12;
wchar_t *local_res8;
wchar_t *local_res10;
pwVar5 = param_1;
local_res10 = param_2;
if (*(longlong *)(param_1 + 0xbb0) == 0) {
plVar4 = (longlong *)0x0;
}
else {
plVar4 = *(longlong **)(param_1 + 0xba8);
}
for (; pwVar9 = local_res10, plVar4 != (longlong *)0x0; plVar4 = (longlong *)plVar4[2]) {
if (plVar4 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_1400050d0(0x80004005);
}
lVar11 = *plVar4;
pwVar5 = (wchar_t *)(**(code **)(*(longlong *)(lVar11 + 0x108) + 0x10))();
bVar3 = FUN_14003d190((longlong)pwVar5);
pwVar8 = pwVar9;
if (bVar3) {
FUN_14003e7c0(pwVar5,param_2,param_3,param_4);
local_res8 = (wchar_t *)PTR_DAT_14016f010;
param_2 = L"RemoteClient DeadLock - %s";
FUN_140029b80((longlong *)&local_res8,L"RemoteClient DeadLock - %s",pwVar9,param_4);
pwVar10 = local_res8;
pwVar5 = local_res8;
if (local_res8 == (wchar_t *)0x0) {
pwVar5 = (wchar_t *)PTR_DAT_14016f010;
}
FUN_14003e110(pwVar5);
pwVar8 = local_res10;
param_3 = pwVar9;
if (((pwVar10 != (wchar_t *)0x0) && (pwVar10 != (wchar_t *)PTR_DAT_14016f010)) &&
(pwVar10 + -4 != (wchar_t *)0x0)) {
pwVar5 = (wchar_t *)FUN_14003e7c0(pwVar5,param_2,pwVar9,param_4);
FUN_14003d040((int *)pwVar5);
pwVar8 = pwVar10 + -2;
*(int *)pwVar8 = *(int *)pwVar8 + -1;
if (*(int *)pwVar8 == 0) {
FUN_14003e8b0(pwVar10 + -4);
}
FUN_14003d0d0((longlong)pwVar5);
pwVar8 = local_res10;
param_3 = pwVar9;
}
}
if ((*(int *)(param_1 + 0xc22) == 0) &&
(plVar2 = *(longlong **)(lVar11 + 0x760), plVar2 != (longlong *)0x0)) {
lVar11 = *plVar2;
pwVar5 = (wchar_t *)0x0;
if (lVar11 != 0) {
pwVar5 = (wchar_t *)(**(code **)(*(longlong *)(lVar11 + 0x88) + 0x10))();
bVar3 = FUN_14003d190((longlong)pwVar5);
if (bVar3) {
FUN_14003e7c0(pwVar5,param_2,param_3,param_4);
local_res8 = (wchar_t *)PTR_DAT_14016f010;
param_2 = L"UDPSocket DeadLock - %s";
FUN_140029b80((longlong *)&local_res8,L"UDPSocket DeadLock - %s",pwVar8,param_4);
pwVar9 = local_res8;
pwVar5 = local_res8;
if (local_res8 == (wchar_t *)0x0) {
pwVar5 = (wchar_t *)PTR_DAT_14016f010;
}
FUN_14003e110(pwVar5);
param_3 = pwVar8;
if (((pwVar9 != (wchar_t *)0x0) && (pwVar9 != (wchar_t *)PTR_DAT_14016f010)) &&
(pwVar9 + -4 != (wchar_t *)0x0)) {
pwVar5 = (wchar_t *)FUN_14003e7c0(pwVar5,param_2,pwVar8,param_4);
FUN_14003d040((int *)pwVar5);
pwVar10 = pwVar9 + -2;
*(int *)pwVar10 = *(int *)pwVar10 + -1;
param_3 = pwVar8;
if (*(int *)pwVar10 == 0) {
FUN_14003e8b0(pwVar9 + -4);
param_3 = pwVar8;
}
FUN_14003d0d0((longlong)pwVar5);
}
}
}
}
}
if (*(int *)(param_1 + 0xc22) == 1) {
iVar12 = 0;
lVar11 = 0;
iVar1 = *(int *)(param_1 + 0x370);
if (0 < (longlong)iVar1) {
do {
if ((lVar11 < 0) || (*(int *)(param_1 + 0x370) <= iVar12)) {
/* WARNING: Subroutine does not return */
FUN_14003def0(pwVar5,param_2,param_3,param_4);
}
plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x36c) + lVar11 * 8);
lVar7 = 0;
if (plVar4 != (longlong *)0x0) {
lVar7 = *plVar4;
}
pwVar5 = (wchar_t *)(**(code **)(*(longlong *)(lVar7 + 0x88) + 0x10))();
bVar3 = FUN_14003d190((longlong)pwVar5);
if (bVar3) {
FUN_14003e7c0(pwVar5,param_2,param_3,param_4);
local_res8 = (wchar_t *)PTR_DAT_14016f010;
param_2 = L"UDPSocket DeadLock - %s";
FUN_140029b80((longlong *)&local_res8,L"UDPSocket DeadLock - %s",pwVar9,param_4);
pwVar8 = local_res8;
pwVar5 = local_res8;
if (local_res8 == (wchar_t *)0x0) {
pwVar5 = (wchar_t *)PTR_DAT_14016f010;
}
param_3 = pwVar9;
FUN_14003e110(pwVar5);
pwVar9 = local_res10;
if (((pwVar8 != (wchar_t *)0x0) && (pwVar8 != (wchar_t *)PTR_DAT_14016f010)) &&
(pwVar8 + -4 != (wchar_t *)0x0)) {
pwVar5 = (wchar_t *)FUN_14003e7c0(pwVar5,param_2,param_3,param_4);
FUN_14003d040((int *)pwVar5);
pwVar9 = pwVar8 + -2;
*(int *)pwVar9 = *(int *)pwVar9 + -1;
if (*(int *)pwVar9 == 0) {
FUN_14003e8b0(pwVar8 + -4);
}
FUN_14003d0d0((longlong)pwVar5);
pwVar9 = local_res10;
}
}
iVar12 = iVar12 + 1;
lVar11 = lVar11 + 1;
} while (lVar11 < iVar1);
}
}
pwVar5 = param_1 + 0x3cc;
bVar3 = FUN_14003d190((longlong)pwVar5);
if (bVar3) {
FUN_14003e7c0(pwVar5,param_2,param_3,param_4);
local_res8 = (wchar_t *)PTR_DAT_14016f010;
param_2 = L"NetServer tcpIssueQueueCS DeadLock!! - %s";
FUN_140029b80((longlong *)&local_res8,L"NetServer tcpIssueQueueCS DeadLock!! - %s",pwVar9,
param_4);
pwVar5 = local_res8;
pwVar8 = local_res8;
if (local_res8 == (wchar_t *)0x0) {
pwVar8 = (wchar_t *)PTR_DAT_14016f010;
}
FUN_14003e110(pwVar8);
param_3 = pwVar9;
if (((pwVar5 != (wchar_t *)0x0) && (pwVar5 != (wchar_t *)PTR_DAT_14016f010)) &&
(pwVar5 + -4 != (wchar_t *)0x0)) {
piVar6 = (int *)FUN_14003e7c0(pwVar8,param_2,pwVar9,param_4);
FUN_14003d040(piVar6);
pwVar8 = pwVar5 + -2;
*(int *)pwVar8 = *(int *)pwVar8 + -1;
param_3 = pwVar9;
if (*(int *)pwVar8 == 0) {
FUN_14003e8b0(pwVar5 + -4);
param_3 = pwVar9;
}
FUN_14003d0d0((longlong)piVar6);
}
}
pwVar5 = param_1 + 1000;
bVar3 = FUN_14003d190((longlong)pwVar5);
if (bVar3) {
FUN_14003e7c0(pwVar5,param_2,param_3,param_4);
local_res8 = (wchar_t *)PTR_DAT_14016f010;
pwVar10 = L"NetServer udpIssueQueueCS DeadLock!! - %s";
pwVar8 = local_res10;
FUN_140029b80((longlong *)&local_res8,L"NetServer udpIssueQueueCS DeadLock!! - %s",local_res10,
param_4);
pwVar5 = local_res8;
pwVar9 = local_res8;
if (local_res8 == (wchar_t *)0x0) {
pwVar9 = (wchar_t *)PTR_DAT_14016f010;
}
FUN_14003e110(pwVar9);
if (((pwVar5 != (wchar_t *)0x0) && (pwVar5 != (wchar_t *)PTR_DAT_14016f010)) &&
(pwVar5 + -4 != (wchar_t *)0x0)) {
piVar6 = (int *)FUN_14003e7c0(pwVar9,pwVar10,pwVar8,param_4);
FUN_14003d040(piVar6);
pwVar9 = pwVar5 + -2;
*(int *)pwVar9 = *(int *)pwVar9 + -1;
if (*(int *)pwVar9 == 0) {
FUN_14003e8b0(pwVar5 + -4);
}
FUN_14003d0d0((longlong)piVar6);
}
}
return;
}