/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400d0130 FUN_1400d0130 * Pseudocode, not original source. */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ ulonglong FUN_1400d0130(longlong *param_1,undefined8 param_2,SIZE_T param_3,undefined8 param_4) { int *piVar1; undefined4 uVar2; longlong lVar3; longlong *plVar4; longlong lVar5; undefined1 uVar6; ulonglong extraout_RAX; ulonglong uVar7; ulonglong extraout_RAX_00; undefined8 *puVar8; longlong lVar9; undefined8 uVar10; ushort uVar11; uint uVar12; ulonglong uVar13; double dVar14; undefined8 local_d8; undefined8 uStack_d0; int local_c8 [2]; longlong local_c0; longlong local_b8; int local_ac; undefined **local_a0; undefined4 local_98; ushort local_94; undefined **local_90; undefined4 local_88; undefined2 local_84; undefined **local_80; undefined4 local_78; undefined2 local_74; undefined4 local_70 [2]; undefined8 local_68; undefined1 local_60; undefined4 local_5c; undefined1 local_58; undefined1 local_57; undefined8 local_50; undefined8 local_48 [4]; local_50 = 0xfffffffffffffffe; dVar14 = (double)FUN_14009bf00(*(longlong *)(*param_1 + 0x670)); dVar14 = dVar14 + (double)param_1[1]; param_1[1] = (longlong)dVar14; lVar9 = *param_1; uVar7 = *(ulonglong *)(lVar9 + 0x670); if (dVar14 < *(double *)(uVar7 + 0x640) || dVar14 == *(double *)(uVar7 + 0x640)) { lVar3 = param_1[2]; if (*(int *)(lVar3 + 8) == 0) { dVar14 = (double)FUN_14009bf00(uVar7); dVar14 = *(double *)(lVar3 + 0x10) - dVar14; *(double *)(lVar3 + 0x10) = dVar14; uVar7 = extraout_RAX_00; if (dVar14 < 0.0) { *(undefined8 *)(lVar3 + 0x10) = DAT_14016f080; FUN_140074fb0(local_c8); FUN_140074a40((longlong)local_c8,lVar9,param_3,param_4); FUN_140075110(local_c8,0x800,param_3,param_4); uVar10 = 0; FUN_140075110(local_c8,0,param_3,param_4); FUN_140029d80((longlong)local_c8,CONCAT71((int7)((ulonglong)uVar10 >> 8),0x10),param_3, param_4); local_d8 = *(undefined8 *)(lVar3 + 0x1c); uStack_d0 = *(undefined8 *)(lVar3 + 0x24); FUN_140051cf0((longlong)local_c8,&local_d8,param_3,param_4); FUN_140029e60((longlong)local_c8,(ulonglong)*(uint *)(*param_1 + 0x56c),param_3,param_4); lVar3 = *param_1; local_70[0] = 5; lVar9 = 0; local_68 = 0; local_60 = 1; local_5c = 0xffffffff; local_58 = 1; local_57 = DAT_14016f1cc; if ((*(longlong **)(lVar3 + 0x18) != (longlong *)0x0) && (lVar5 = **(longlong **)(lVar3 + 0x18), lVar5 != 0)) { lVar9 = lVar5 + -0x40; } plVar4 = *(longlong **)(lVar3 + 0x670); dVar14 = (double)(**(code **)(*(longlong *)(*(longlong *)(lVar3 + 0x670) + 0x70) + 0x1c0))() ; puVar8 = FUN_1400cf0b0(param_1,local_48); uVar6 = (**(code **)(*plVar4 + 0x30))(plVar4); uVar11 = FUN_14008be40(uVar6,1); FUN_1400d31e0(lVar9,1,(ulonglong)uVar11,(longlong)puVar8,(longlong)local_c8,dVar14, (undefined8 *)local_70); uVar7 = FUN_14008a320(&local_c0); if ((local_b8 != 0) && (local_ac < 0)) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } } } else if (*(int *)(lVar3 + 8) == 1) { dVar14 = (double)FUN_14009bf00(uVar7); dVar14 = *(double *)(lVar3 + 0x10) - dVar14; *(double *)(lVar3 + 0x10) = dVar14; uVar7 = extraout_RAX; if (dVar14 < 0.0) { *(undefined8 *)(lVar3 + 0x10) = *(undefined8 *)(*(longlong *)(*param_1 + 0x670) + 0x648); *(int *)(lVar3 + 0x18) = *(int *)(lVar3 + 0x18) + 1; lVar9 = *param_1; local_d8 = *(undefined8 *)(lVar9 + 0x30); uStack_d0 = *(undefined8 *)(lVar9 + 0x38); local_90 = Proud::AddrPort::vftable; local_88 = *(undefined4 *)(lVar9 + 0x578); local_84 = *(undefined2 *)(lVar9 + 0x57c); FUN_1400cf900(param_1,(longlong)&local_90,&local_d8,param_4); lVar9 = *param_1; plVar4 = *(longlong **)(lVar9 + 0x18); uVar13 = 0; if ((plVar4 != (longlong *)0x0) && (*plVar4 != 0)) { uVar7 = uVar13; if ((plVar4 != (longlong *)0x0) && (*plVar4 != 0)) { uVar7 = *plVar4 - 0x40; } if (*(int *)(uVar7 + 0x140) == *(int *)(lVar9 + 0x578)) { uVar7 = uVar13; if ((*(longlong **)(lVar9 + 0x18) != (longlong *)0x0) && (lVar5 = **(longlong **)(lVar9 + 0x18), lVar5 != 0)) { uVar7 = lVar5 - 0x40; } if (((*(char *)(uVar7 + 0x130) == *(char *)(lVar9 + 0x588)) && (*(char *)(uVar7 + 0x131) == *(char *)(lVar9 + 0x589))) && (*(char *)(uVar7 + 0x132) == *(char *)(lVar9 + 0x58a))) { local_d8 = *(undefined8 *)(lVar9 + 0x30); uStack_d0 = *(undefined8 *)(lVar9 + 0x38); local_80 = Proud::AddrPort::vftable; local_78 = *(undefined4 *)(lVar9 + 0x588); local_74 = *(undefined2 *)(lVar9 + 0x58c); FUN_1400cf900(param_1,(longlong)&local_80,&local_d8,param_4); } } } uVar7 = (ulonglong)DAT_14016f08c; if ((int)DAT_14016f08c < *(int *)(lVar3 + 0x18)) { piVar1 = (int *)(lVar3 + 0x30); *piVar1 = *piVar1 + -1; if (*piVar1 < 0) { *(undefined4 *)(lVar3 + 0x30) = DAT_14016f0e8; *(short *)(lVar3 + 0x34) = *(short *)(lVar3 + 0x34) + (short)_DAT_140176140; uVar11 = *(ushort *)(lVar3 + 0x34); if ((uVar11 < 0x3ff) || (uVar11 == 0xffff)) { uVar11 = 0x3ff; } *(ushort *)(lVar3 + 0x34) = uVar11; } uVar7 = *param_1; uVar2 = *(undefined4 *)(uVar7 + 0x578); uVar11 = *(ushort *)(lVar3 + 0x34); if (0 < _DAT_140176140) { do { local_d8 = *(undefined8 *)(*param_1 + 0x30); uStack_d0 = *(undefined8 *)(*param_1 + 0x38); local_a0 = Proud::AddrPort::vftable; local_98 = uVar2; local_94 = uVar11; uVar7 = FUN_1400cf900(param_1,(longlong)&local_a0,&local_d8,param_4); uVar11 = uVar11 + 1; if ((uVar11 < 0x3ff) || (uVar11 == 0xffff)) { uVar11 = 0x3ff; } uVar12 = (int)uVar13 + 1; uVar13 = (ulonglong)uVar12; } while ((int)uVar12 < _DAT_140176140); } } } } uVar7 = CONCAT71((int7)(uVar7 >> 8),1); } else { uVar7 = uVar7 & 0xffffffffffffff00; } return uVar7; }