server-re/decomp/Agent_Release_x64/full/functions/0x1400a59c0.c
2026-10-14 16:45:19 -04:00

189 lines
7.5 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400a59c0 FUN_1400a59c0
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x0001400a5aea) */
/* WARNING: Removing unreachable block (ram,0x0001400a5afd) */
/* WARNING: Removing unreachable block (ram,0x0001400a5b17) */
/* WARNING: Removing unreachable block (ram,0x0001400a5b1f) */
/* WARNING: Removing unreachable block (ram,0x0001400a5b26) */
void FUN_1400a59c0(longlong param_1,undefined8 param_2,SIZE_T param_3,undefined *param_4)
{
char cVar1;
int *piVar2;
longlong lVar3;
int *piVar4;
int *piVar5;
longlong *plVar6;
longlong **pplVar7;
ulonglong *puVar8;
wchar_t *pwVar9;
longlong *plVar10;
uint uVar11;
ulonglong uVar12;
double dVar13;
undefined8 uVar14;
ulonglong local_res8;
longlong *local_res10;
longlong *local_res18;
piVar2 = (int *)(**(code **)(**(longlong **)(param_1 + 0x108) + 0x58))
(*(longlong **)(param_1 + 0x108),param_2,param_3,param_4,
0xfffffffffffffffe);
FUN_14002e6e0(piVar2);
*(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + 1;
puVar8 = *(ulonglong **)(param_1 + 0x108);
if ((longlong *)puVar8[0x16] != (longlong *)0x0) {
FUN_1400642a0((longlong *)puVar8[0x16],(longlong)puVar8,param_3,param_4);
}
plVar10 = (longlong *)0x0;
uVar11 = 1;
if (*(int *)(param_1 + 0x40) == 1) {
(**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x78) + 0x10))();
lVar3 = FUN_140064bc0(*(longlong *)(param_1 + 0x108));
if (lVar3 != 0) {
lVar3 = FUN_140064bc0(*(longlong *)(param_1 + 0x108));
plVar6 = plVar10;
if (*(undefined8 **)(lVar3 + 0x100) != (undefined8 *)0x0) {
plVar6 = (longlong *)**(undefined8 **)(lVar3 + 0x100);
}
FUN_140035490(plVar6,puVar8,param_3,param_4);
}
lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x108) + 0x1670);
while (lVar3 != 0) {
plVar6 = plVar10;
if (*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x1670) != 0) {
plVar6 = *(longlong **)(*(longlong *)(param_1 + 0x108) + 0x1660);
}
if (plVar6 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_14000b450(0x80004005);
}
local_res8 = 0;
if (plVar6[1] != 0) {
*(longlong *)(plVar6[1] + 8) = *(longlong *)(plVar6[1] + 8) + 1;
local_res8 = plVar6[1];
}
puVar8 = &local_res8;
FUN_140076d80(*(longlong *)(param_1 + 0x108),puVar8,param_3,param_4);
lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x108) + 0x1670);
}
FUN_1400768c0(*(longlong *)(param_1 + 0x108));
FUN_140076a10(*(longlong *)(param_1 + 0x108));
lVar3 = FUN_140064be0(*(longlong *)(param_1 + 0x108));
if (lVar3 != 0) {
lVar3 = FUN_140064be0(*(longlong *)(param_1 + 0x108));
plVar6 = plVar10;
if (*(undefined8 **)(lVar3 + 0x128) != (undefined8 *)0x0) {
plVar6 = (longlong *)**(undefined8 **)(lVar3 + 0x128);
}
FUN_140035490(plVar6,puVar8,param_3,param_4);
}
}
FUN_140075880(*(longlong **)(param_1 + 0x108),puVar8,param_3,param_4);
if (*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x1718) == 0) {
lVar3 = FUN_140064bc0(*(longlong *)(param_1 + 0x108));
if (lVar3 != 0) {
lVar3 = FUN_140064bc0(*(longlong *)(param_1 + 0x108));
if ((*(longlong **)(lVar3 + 0x100) != (longlong *)0x0) &&
(**(longlong **)(lVar3 + 0x100) != 0)) {
lVar3 = FUN_140064bc0(*(longlong *)(param_1 + 0x108));
plVar6 = plVar10;
if (*(undefined8 **)(lVar3 + 0x100) != (undefined8 *)0x0) {
plVar6 = (longlong *)**(undefined8 **)(lVar3 + 0x100);
}
cVar1 = FUN_140035730((longlong)plVar6);
if (((cVar1 == '\0') ||
(lVar3 = FUN_140064bc0(*(longlong *)(param_1 + 0x108)), *(char *)(lVar3 + 0x80) != '\0')
) || (lVar3 = FUN_140064bc0(*(longlong *)(param_1 + 0x108)),
*(char *)(lVar3 + 0xc0) != '\0')) {
uVar11 = 2;
goto LAB_1400a5cf3;
}
}
}
lVar3 = FUN_140064be0(*(longlong *)(param_1 + 0x108));
if (lVar3 != 0) {
lVar3 = FUN_140064be0(*(longlong *)(param_1 + 0x108));
if ((*(longlong **)(lVar3 + 0x128) != (longlong *)0x0) &&
(**(longlong **)(lVar3 + 0x128) != 0)) {
lVar3 = FUN_140064be0(*(longlong *)(param_1 + 0x108));
plVar6 = plVar10;
if (*(undefined8 **)(lVar3 + 0x128) != (undefined8 *)0x0) {
plVar6 = (longlong *)**(undefined8 **)(lVar3 + 0x128);
}
cVar1 = FUN_140035730((longlong)plVar6);
if (((cVar1 == '\0') ||
(lVar3 = FUN_140064be0(*(longlong *)(param_1 + 0x108)), *(char *)(lVar3 + 0x80) != '\0')
) || (lVar3 = FUN_140064be0(*(longlong *)(param_1 + 0x108)),
*(char *)(lVar3 + 0xc0) != '\0')) {
uVar11 = 3;
goto LAB_1400a5cf3;
}
}
}
cVar1 = FUN_14003a4e0(*(longlong *)(param_1 + 0x108) + 0x1620);
if (cVar1 == '\0') {
FUN_14003a3e0((char *)(*(longlong *)(param_1 + 0x108) + 0x1620));
}
FUN_14007b7f0(*(longlong *)(param_1 + 0x108),'\0',param_3,param_4);
if (*(int *)(param_1 + 0x100) < 5) {
*(undefined4 *)(param_1 + 0x40) = 0;
*(undefined4 *)(param_1 + 0x100) = 5;
uVar14 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x70) + 0x1c0))();
*(undefined8 *)(param_1 + 0x80) = uVar14;
*(undefined1 *)(param_1 + 0xc0) = 0;
}
}
else {
LAB_1400a5cf3:
plVar6 = (longlong *)(*(longlong *)(param_1 + 0x108) + 0x70);
dVar13 = (double)(**(code **)(*plVar6 + 0x1c0))();
if ((5.0 < dVar13 - *(double *)(param_1 + 0x80)) && (*(char *)(param_1 + 0xc0) == '\0')) {
FUN_140030200(plVar6,puVar8,param_3,param_4);
local_res18 = (longlong *)PTR_DAT_140155010;
uVar12 = (ulonglong)uVar11;
pwVar9 = L"Too long time elapsed since disconnecting mode! unsafeDisconnectReason=%d";
pplVar7 = &local_res18;
FUN_14001b7a0((longlong *)pplVar7,
L"Too long time elapsed since disconnecting mode! unsafeDisconnectReason=%d",
uVar12,param_4);
FUN_140030200(pplVar7,pwVar9,uVar12,param_4);
plVar6 = local_res18;
local_res10 = (longlong *)PTR_DAT_140155010;
if (PTR_DAT_140155010 == (undefined *)0x0) {
local_res10 = plVar10;
}
if (local_res18 != (longlong *)PTR_DAT_140155010) {
piVar4 = (int *)FUN_140030200(pplVar7,pwVar9,uVar12,param_4);
FUN_14002e6e0(piVar4);
FUN_140003240((longlong *)&local_res10,pwVar9,uVar12,param_4);
local_res10 = plVar6;
if (((plVar6 != (longlong *)PTR_DAT_140155010) && (plVar6 != (longlong *)0x0)) &&
(plVar6 != (longlong *)0x8)) {
*(int *)((longlong)plVar6 + -4) = *(int *)((longlong)plVar6 + -4) + 1;
}
FUN_14002e770((longlong)piVar4);
}
pplVar7 = &local_res10;
FUN_140033120((longlong *)pplVar7,pwVar9,uVar12,param_4);
*(undefined1 *)(param_1 + 0xc0) = 1;
if (((plVar6 != (longlong *)0x0) && (plVar6 != (longlong *)PTR_DAT_140155010)) &&
(plVar6 + -1 != (longlong *)0x0)) {
piVar5 = (int *)FUN_140030200(pplVar7,pwVar9,uVar12,param_4);
FUN_14002e6e0(piVar5);
piVar4 = (int *)((longlong)plVar6 + -4);
*piVar4 = *piVar4 + -1;
if (*piVar4 == 0) {
FUN_1400302f0(plVar6 + -1);
}
FUN_14002e770((longlong)piVar5);
}
}
}
FUN_14002e770((longlong)piVar2);
return;
}