/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400c1500 FUN_1400c1500 * Pseudocode, not original source. */ /* WARNING: Removing unreachable block (ram,0x0001400c162a) */ /* WARNING: Removing unreachable block (ram,0x0001400c163d) */ /* WARNING: Removing unreachable block (ram,0x0001400c1657) */ /* WARNING: Removing unreachable block (ram,0x0001400c165f) */ /* WARNING: Removing unreachable block (ram,0x0001400c1666) */ void FUN_1400c1500(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_14003d040(piVar2); *(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + 1; puVar8 = *(ulonglong **)(param_1 + 0x108); if ((longlong *)puVar8[0x16] != (longlong *)0x0) { FUN_14009b880((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_14009c0d0(*(longlong *)(param_1 + 0x108)); if (lVar3 != 0) { lVar3 = FUN_14009c0d0(*(longlong *)(param_1 + 0x108)); plVar6 = plVar10; if (*(undefined8 **)(lVar3 + 0x100) != (undefined8 *)0x0) { plVar6 = (longlong *)**(undefined8 **)(lVar3 + 0x100); } FUN_140043a50(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_1400050d0(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_1400adda0(*(longlong *)(param_1 + 0x108),puVar8,param_3,param_4); lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x108) + 0x1670); } FUN_1400ad8e0(*(longlong *)(param_1 + 0x108)); FUN_1400ada30(*(longlong *)(param_1 + 0x108)); lVar3 = FUN_14009c0f0(*(longlong *)(param_1 + 0x108)); if (lVar3 != 0) { lVar3 = FUN_14009c0f0(*(longlong *)(param_1 + 0x108)); plVar6 = plVar10; if (*(undefined8 **)(lVar3 + 0x128) != (undefined8 *)0x0) { plVar6 = (longlong *)**(undefined8 **)(lVar3 + 0x128); } FUN_140043a50(plVar6,puVar8,param_3,param_4); } } FUN_1400ac8a0(*(longlong **)(param_1 + 0x108),puVar8,param_3,param_4); if (*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x1718) == 0) { lVar3 = FUN_14009c0d0(*(longlong *)(param_1 + 0x108)); if (lVar3 != 0) { lVar3 = FUN_14009c0d0(*(longlong *)(param_1 + 0x108)); if ((*(longlong **)(lVar3 + 0x100) != (longlong *)0x0) && (**(longlong **)(lVar3 + 0x100) != 0)) { lVar3 = FUN_14009c0d0(*(longlong *)(param_1 + 0x108)); plVar6 = plVar10; if (*(undefined8 **)(lVar3 + 0x100) != (undefined8 *)0x0) { plVar6 = (longlong *)**(undefined8 **)(lVar3 + 0x100); } cVar1 = FUN_140043cf0((longlong)plVar6); if (((cVar1 == '\0') || (lVar3 = FUN_14009c0d0(*(longlong *)(param_1 + 0x108)), *(char *)(lVar3 + 0x80) != '\0') ) || (lVar3 = FUN_14009c0d0(*(longlong *)(param_1 + 0x108)), *(char *)(lVar3 + 0xc0) != '\0')) { uVar11 = 2; goto LAB_1400c1833; } } } lVar3 = FUN_14009c0f0(*(longlong *)(param_1 + 0x108)); if (lVar3 != 0) { lVar3 = FUN_14009c0f0(*(longlong *)(param_1 + 0x108)); if ((*(longlong **)(lVar3 + 0x128) != (longlong *)0x0) && (**(longlong **)(lVar3 + 0x128) != 0)) { lVar3 = FUN_14009c0f0(*(longlong *)(param_1 + 0x108)); plVar6 = plVar10; if (*(undefined8 **)(lVar3 + 0x128) != (undefined8 *)0x0) { plVar6 = (longlong *)**(undefined8 **)(lVar3 + 0x128); } cVar1 = FUN_140043cf0((longlong)plVar6); if (((cVar1 == '\0') || (lVar3 = FUN_14009c0f0(*(longlong *)(param_1 + 0x108)), *(char *)(lVar3 + 0x80) != '\0') ) || (lVar3 = FUN_14009c0f0(*(longlong *)(param_1 + 0x108)), *(char *)(lVar3 + 0xc0) != '\0')) { uVar11 = 3; goto LAB_1400c1833; } } } cVar1 = FUN_140048a20(*(longlong *)(param_1 + 0x108) + 0x1620); if (cVar1 == '\0') { FUN_140048920((char *)(*(longlong *)(param_1 + 0x108) + 0x1620)); } FUN_1400b25d0(*(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_1400c1833: 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_14003e7c0(plVar6,puVar8,param_3,param_4); local_res18 = (longlong *)PTR_DAT_14016f010; uVar12 = (ulonglong)uVar11; pwVar9 = L"Too long time elapsed since disconnecting mode! unsafeDisconnectReason=%d"; pplVar7 = &local_res18; FUN_140029b80((longlong *)pplVar7, L"Too long time elapsed since disconnecting mode! unsafeDisconnectReason=%d", uVar12,param_4); FUN_14003e7c0(pplVar7,pwVar9,uVar12,param_4); plVar6 = local_res18; local_res10 = (longlong *)PTR_DAT_14016f010; if (PTR_DAT_14016f010 == (undefined *)0x0) { local_res10 = plVar10; } if (local_res18 != (longlong *)PTR_DAT_14016f010) { piVar4 = (int *)FUN_14003e7c0(pplVar7,pwVar9,uVar12,param_4); FUN_14003d040(piVar4); FUN_140002190((longlong *)&local_res10,pwVar9,uVar12,param_4); local_res10 = plVar6; if (((plVar6 != (longlong *)PTR_DAT_14016f010) && (plVar6 != (longlong *)0x0)) && (plVar6 != (longlong *)0x8)) { *(int *)((longlong)plVar6 + -4) = *(int *)((longlong)plVar6 + -4) + 1; } FUN_14003d0d0((longlong)piVar4); } pplVar7 = &local_res10; FUN_1400416f0((longlong *)pplVar7,pwVar9,uVar12,param_4); *(undefined1 *)(param_1 + 0xc0) = 1; if (((plVar6 != (longlong *)0x0) && (plVar6 != (longlong *)PTR_DAT_14016f010)) && (plVar6 + -1 != (longlong *)0x0)) { piVar5 = (int *)FUN_14003e7c0(pplVar7,pwVar9,uVar12,param_4); FUN_14003d040(piVar5); piVar4 = (int *)((longlong)plVar6 + -4); *piVar4 = *piVar4 + -1; if (*piVar4 == 0) { FUN_14003e8b0(plVar6 + -1); } FUN_14003d0d0((longlong)piVar5); } } } FUN_14003d0d0((longlong)piVar2); return; }