122 lines
3.8 KiB
C
122 lines
3.8 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x1400bc5c0 FUN_1400bc5c0
|
|
* Pseudocode, not original source. */
|
|
|
|
longlong * FUN_1400bc5c0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
DWORD DVar2;
|
|
ulonglong uVar3;
|
|
undefined8 *puVar4;
|
|
longlong lVar5;
|
|
longlong lVar6;
|
|
longlong *plVar7;
|
|
longlong *plVar8;
|
|
longlong **pplVar9;
|
|
longlong *plVar10;
|
|
int iVar11;
|
|
longlong *plVar12;
|
|
longlong *plVar13;
|
|
longlong lVar14;
|
|
longlong lVar15;
|
|
int iVar16;
|
|
longlong *local_res18;
|
|
|
|
uVar3 = FUN_14002e790();
|
|
pplVar9 = (longlong **)(uVar3 & 0xffffffff);
|
|
plVar13 = (longlong *)CONCAT71((int7)((ulonglong)param_3 >> 8),1);
|
|
plVar7 = param_1;
|
|
FUN_14002e600((undefined4 *)param_1,(ulonglong)pplVar9,plVar13,param_4);
|
|
iVar16 = 0;
|
|
param_1[7] = 0;
|
|
param_1[8] = 0;
|
|
*(undefined4 *)(param_1 + 9) = 0;
|
|
plVar10 = param_1 + 10;
|
|
*plVar10 = (longlong)Proud::CFastArray<Proud::RefCount<Proud::Thread>,0>::vftable;
|
|
param_1[0xb] = 0;
|
|
param_1[0xc] = 0;
|
|
param_1[0xd] = 0;
|
|
param_1[0xe] = 0;
|
|
*(undefined1 *)(param_1 + 0x10) = 1;
|
|
DVar2 = FUN_14002f850();
|
|
if (0 < (int)DVar2) {
|
|
do {
|
|
puVar4 = (undefined8 *)0x0;
|
|
local_res18 = operator_new(0x28);
|
|
if (local_res18 != (longlong *)0x0) {
|
|
plVar13 = param_1;
|
|
puVar4 = FUN_140037560(local_res18,&LAB_1400bc330,param_1);
|
|
}
|
|
if (puVar4 == (undefined8 *)0x0) {
|
|
local_res18 = (longlong *)0x0;
|
|
}
|
|
else {
|
|
local_res18 = (longlong *)FUN_140030280(0x10);
|
|
local_res18[1] = 1;
|
|
*local_res18 = (longlong)puVar4;
|
|
}
|
|
plVar12 = local_res18;
|
|
iVar1 = (int)param_1[0xd];
|
|
if (iVar1 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14002f590();
|
|
}
|
|
lVar14 = param_1[0xd];
|
|
FUN_14008a2b0((longlong)plVar10,(int)lVar14 + 1,plVar13,param_4);
|
|
iVar11 = (int)lVar14 - iVar1;
|
|
if ((0 < iVar11) && (iVar11 = iVar11 + -1, -1 < iVar11)) {
|
|
lVar14 = (longlong)(iVar11 + iVar1 + 1) << 3;
|
|
lVar15 = (longlong)(iVar11 + iVar1) << 3;
|
|
do {
|
|
lVar5 = FUN_14003d690((longlong)plVar10);
|
|
lVar6 = FUN_14003d690((longlong)plVar10);
|
|
FUN_140086730((longlong *)(lVar14 + lVar6),(longlong *)(lVar15 + lVar5));
|
|
lVar15 = lVar15 + -8;
|
|
lVar14 = lVar14 + -8;
|
|
iVar11 = iVar11 + -1;
|
|
} while (-1 < iVar11);
|
|
}
|
|
lVar14 = FUN_14003d690((longlong)plVar10);
|
|
plVar7 = (longlong *)(lVar14 + (longlong)iVar1 * 8);
|
|
pplVar9 = &local_res18;
|
|
FUN_140086730(plVar7,(longlong *)pplVar9);
|
|
plVar8 = local_res18;
|
|
if (plVar12 != (longlong *)0x0) {
|
|
plVar12 = plVar12 + 1;
|
|
*plVar12 = *plVar12 + -1;
|
|
if (*plVar12 == 0) {
|
|
puVar4 = (undefined8 *)*local_res18;
|
|
if (puVar4 != (undefined8 *)0x0) {
|
|
FUN_140037670(puVar4);
|
|
operator_delete(puVar4);
|
|
}
|
|
FUN_1400302f0(plVar8);
|
|
plVar7 = plVar8;
|
|
}
|
|
}
|
|
iVar16 = iVar16 + 1;
|
|
} while (iVar16 < (int)DVar2);
|
|
}
|
|
plVar8 = (longlong *)0x0;
|
|
plVar10 = plVar8;
|
|
plVar12 = plVar8;
|
|
if (0 < (int)DVar2) {
|
|
do {
|
|
if (((longlong)plVar10 < 0) || ((int)param_1[0xd] <= (int)plVar12)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14002f5c0(plVar7,pplVar9,plVar13,param_4);
|
|
}
|
|
puVar4 = *(undefined8 **)(param_1[0xc] + (longlong)plVar10 * 8);
|
|
plVar7 = plVar8;
|
|
if (puVar4 != (undefined8 *)0x0) {
|
|
plVar7 = (longlong *)*puVar4;
|
|
}
|
|
FUN_140037760(plVar7,pplVar9,plVar13,param_4);
|
|
plVar12 = (longlong *)(ulonglong)((int)plVar12 + 1);
|
|
plVar10 = (longlong *)((longlong)plVar10 + 1);
|
|
} while ((longlong)plVar10 < (longlong)(int)DVar2);
|
|
}
|
|
return param_1;
|
|
}
|
|
|