185 lines
5.7 KiB
C
185 lines
5.7 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x1400ab500 FUN_1400ab500
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1400ab500(longlong *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)
|
|
|
|
{
|
|
longlong lVar1;
|
|
longlong *plVar2;
|
|
uint uVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
ulonglong uVar6;
|
|
uint *puVar7;
|
|
longlong *plVar8;
|
|
int *piVar9;
|
|
undefined ***pppuVar10;
|
|
uint *puVar11;
|
|
uint uVar12;
|
|
uint uVar13;
|
|
undefined8 uVar15;
|
|
longlong lVar16;
|
|
ulonglong uVar17;
|
|
uint **ppuVar18;
|
|
uint local_res8 [2];
|
|
uint *local_res18;
|
|
longlong local_res20;
|
|
undefined **local_50;
|
|
undefined8 local_48;
|
|
undefined8 local_40;
|
|
undefined8 local_38;
|
|
undefined8 local_30;
|
|
longlong *plVar14;
|
|
|
|
FUN_14007e740(param_2,0,param_3,param_4);
|
|
(**(code **)(param_1[0xf] + 0x10))();
|
|
plVar14 = (longlong *)0x0;
|
|
uVar13 = 0;
|
|
if (((longlong *)param_1[699] == (longlong *)0x0) ||
|
|
(lVar16 = *(longlong *)param_1[699], plVar8 = (longlong *)(lVar16 + -0x40), lVar16 == 0)) {
|
|
plVar8 = plVar14;
|
|
}
|
|
plVar8 = plVar8 + 0x26;
|
|
uVar17 = (ulonglong)*(uint *)((longlong)param_1 + 0x6a4);
|
|
uVar15 = 1;
|
|
uVar6 = FUN_1400947a0(plVar8,param_2,1,uVar17,local_res8);
|
|
if (-1 < (int)uVar6) {
|
|
return;
|
|
}
|
|
FUN_14003e7c0(plVar8,param_2,uVar15,uVar17);
|
|
local_res18 = (uint *)PTR_DAT_14016f010;
|
|
uVar3 = FUN_14003e620(L"Received stream from TCP server became inconsistent!");
|
|
uVar5 = 0;
|
|
plVar8 = plVar14;
|
|
if ((local_res18 != (uint *)0x0) &&
|
|
(plVar8 = (longlong *)0x0, local_res18 != (uint *)PTR_DAT_14016f010)) {
|
|
plVar8 = (longlong *)(ulonglong)local_res18[-2];
|
|
}
|
|
uVar4 = uVar3;
|
|
if ((((int)uVar3 <= (int)plVar8) && (uVar4 = uVar5, local_res18 != (uint *)0x0)) &&
|
|
(local_res18 != (uint *)PTR_DAT_14016f010)) {
|
|
uVar4 = local_res18[-2];
|
|
}
|
|
uVar12 = 1;
|
|
if (1 < (int)uVar4) {
|
|
uVar12 = uVar4;
|
|
}
|
|
uVar4 = uVar5;
|
|
if ((local_res18 != (uint *)0x0) && (local_res18 != (uint *)PTR_DAT_14016f010)) {
|
|
uVar4 = local_res18[-2];
|
|
}
|
|
if ((int)uVar4 < (int)uVar12) {
|
|
if (local_res18 == (uint *)0x0) {
|
|
local_res18 = (uint *)PTR_DAT_14016f010;
|
|
}
|
|
if ((int)uVar12 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
if (uVar12 == 0) {
|
|
FUN_140002190((longlong *)&local_res18,PTR_DAT_14016f010,plVar8,uVar17);
|
|
}
|
|
else {
|
|
uVar4 = uVar5;
|
|
if ((local_res18 != (uint *)0x0) && (local_res18 != (uint *)PTR_DAT_14016f010)) {
|
|
uVar4 = local_res18[-2];
|
|
}
|
|
if (uVar12 != uVar4) {
|
|
puVar7 = (uint *)FUN_14003e840((longlong)(int)uVar12 * 2 + 10);
|
|
if (puVar7 != (uint *)0x0) {
|
|
*puVar7 = 0;
|
|
puVar7[1] = 1;
|
|
}
|
|
*puVar7 = uVar12;
|
|
uVar4 = uVar5;
|
|
if ((local_res18 != (uint *)0x0) && (local_res18 != (uint *)PTR_DAT_14016f010)) {
|
|
uVar4 = local_res18[-2];
|
|
}
|
|
puVar11 = (uint *)PTR_DAT_14016f010;
|
|
if ((int)uVar12 < (int)uVar4) {
|
|
LAB_1400ab67b:
|
|
if (local_res18 != (uint *)0x0) {
|
|
puVar11 = local_res18;
|
|
}
|
|
}
|
|
else {
|
|
uVar12 = uVar5;
|
|
if (local_res18 != (uint *)0x0) {
|
|
if (local_res18 != (uint *)PTR_DAT_14016f010) {
|
|
uVar12 = local_res18[-2];
|
|
}
|
|
goto LAB_1400ab67b;
|
|
}
|
|
}
|
|
uVar6 = (ulonglong)uVar12;
|
|
FUN_14003e650(puVar7 + 2,puVar11,uVar12);
|
|
FUN_140002190((longlong *)&local_res18,puVar11,uVar6,uVar17);
|
|
local_res18 = puVar7 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_140001df0((longlong *)&local_res18);
|
|
puVar7 = local_res18;
|
|
if (local_res18 == (uint *)0x0) {
|
|
puVar7 = (uint *)PTR_DAT_14016f010;
|
|
}
|
|
FUN_14003e650(puVar7,L"Received stream from TCP server became inconsistent!",uVar3);
|
|
puVar7 = local_res18;
|
|
if (local_res18 == (uint *)0x0) {
|
|
puVar7 = (uint *)PTR_DAT_14016f010;
|
|
}
|
|
uVar5 = FUN_14003e620((short *)puVar7);
|
|
uVar3 = uVar13;
|
|
if (0 < (int)uVar5) {
|
|
uVar3 = uVar5;
|
|
}
|
|
uVar5 = uVar13;
|
|
if ((local_res18 != (uint *)0x0) && (local_res18 != (uint *)PTR_DAT_14016f010)) {
|
|
uVar5 = local_res18[-2];
|
|
}
|
|
if (((int)uVar5 <= (int)uVar3) && (uVar3 = uVar13, local_res18 != (uint *)0x0)) {
|
|
if (local_res18 == (uint *)PTR_DAT_14016f010) goto LAB_1400ab72b;
|
|
uVar3 = local_res18[-2];
|
|
}
|
|
if (((local_res18 != (uint *)PTR_DAT_14016f010) && (local_res18 != (uint *)0x0)) &&
|
|
(local_res18 + -2 != (uint *)0x0)) {
|
|
local_res18[-2] = uVar3;
|
|
*(undefined2 *)((longlong)local_res18 + (longlong)(int)uVar3 * 2) = 0;
|
|
}
|
|
LAB_1400ab72b:
|
|
local_48 = 0;
|
|
local_40 = 0;
|
|
local_38 = 0;
|
|
local_30 = 0;
|
|
local_50 = Proud::ByteArray::vftable;
|
|
ppuVar18 = &local_res18;
|
|
plVar8 = FUN_140071c20(&local_res20,(ulonglong)local_res8[0],1,(longlong *)ppuVar18,
|
|
(longlong)&local_50);
|
|
lVar16 = *param_1;
|
|
(**(code **)(lVar16 + 0x80))(param_1);
|
|
pppuVar10 = &local_50;
|
|
FUN_140049e40(pppuVar10);
|
|
puVar7 = local_res18;
|
|
if (((local_res18 != (uint *)0x0) && (local_res18 != (uint *)PTR_DAT_14016f010)) &&
|
|
(puVar11 = local_res18 + -2, puVar11 != (uint *)0x0)) {
|
|
piVar9 = (int *)FUN_14003e7c0(pppuVar10,plVar8,lVar16,ppuVar18);
|
|
FUN_14003d040(piVar9);
|
|
puVar7 = puVar7 + -1;
|
|
*puVar7 = *puVar7 - 1;
|
|
if (*puVar7 == 0) {
|
|
FUN_14003e8b0(puVar11);
|
|
}
|
|
FUN_14003d0d0((longlong)piVar9);
|
|
}
|
|
if ((((longlong *)param_1[699] != (longlong *)0x0) &&
|
|
(lVar1 = *(longlong *)param_1[699], lVar1 != 0)) &&
|
|
((plVar2 = *(longlong **)(lVar1 + 0xe8), plVar2 != (longlong *)0x0 && (*plVar2 != 0)))) {
|
|
if (plVar2 != (longlong *)0x0) {
|
|
plVar14 = (longlong *)*plVar2;
|
|
}
|
|
FUN_140043a50(plVar14,plVar8,lVar16,ppuVar18);
|
|
}
|
|
return;
|
|
}
|
|
|