293 lines
9.6 KiB
C
293 lines
9.6 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x1400d4350 FUN_1400d4350
|
|
* Pseudocode, not original source. */
|
|
|
|
ulonglong FUN_1400d4350(longlong *param_1,uint *param_2,ulonglong param_3,undefined4 *param_4)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
longlong *plVar2;
|
|
longlong *plVar3;
|
|
undefined8 uVar4;
|
|
ulonglong uVar5;
|
|
longlong *plVar6;
|
|
longlong *plVar7;
|
|
longlong *plVar8;
|
|
uint *puVar9;
|
|
uint ***pppuVar10;
|
|
int iVar11;
|
|
SIZE_T SVar12;
|
|
undefined4 *puVar13;
|
|
uint **local_res8;
|
|
undefined8 local_d8;
|
|
uint *local_d0;
|
|
longlong *local_c8;
|
|
undefined8 local_c0;
|
|
longlong *local_b8;
|
|
longlong *local_b0;
|
|
undefined4 local_a8;
|
|
undefined4 local_a4;
|
|
longlong *local_a0;
|
|
longlong *local_98;
|
|
undefined8 local_90;
|
|
exception local_88 [80];
|
|
|
|
local_90 = 0xfffffffffffffffe;
|
|
uVar5 = param_3;
|
|
puVar13 = param_4;
|
|
local_b0 = (longlong *)(**(code **)(*param_1 + 0x38))();
|
|
plVar8 = (longlong *)0x0;
|
|
local_c0 = 0;
|
|
local_c8 = (longlong *)0x0;
|
|
local_d0 = (uint *)0x0;
|
|
local_b8 = (longlong *)0x0;
|
|
local_d8 = 0;
|
|
local_a4 = 0;
|
|
uVar4 = FUN_140075810(param_2,(uint *)&local_d8,uVar5,puVar13);
|
|
if ((char)uVar4 == '\0') {
|
|
if (local_b8 != (longlong *)0x0) {
|
|
plVar8 = local_b8 + 1;
|
|
*plVar8 = *plVar8 + -1;
|
|
if (*plVar8 == 0) {
|
|
FUN_1400512a0((longlong)&local_b8,local_b8);
|
|
}
|
|
}
|
|
local_res8 = &local_d0;
|
|
uVar5 = FUN_14008a320((longlong *)&local_d0);
|
|
if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
}
|
|
else {
|
|
if ((uint)local_d8 != 1) {
|
|
if ((uint)local_d8 == 2) {
|
|
plVar6 = (longlong *)
|
|
(**(code **)(*(longlong *)(*(longlong *)(param_1[2] + 0x670) + 0x88) + 0x18))();
|
|
plVar7 = FUN_14005b3e0((longlong *)&local_a0,plVar6,uVar5,puVar13);
|
|
plVar3 = local_b0;
|
|
plVar2 = local_b8;
|
|
plVar6 = (longlong *)*plVar7;
|
|
if (plVar6 != (longlong *)0x0) {
|
|
plVar6[1] = plVar6[1] + 1;
|
|
plVar8 = plVar6;
|
|
}
|
|
if (local_b8 != (longlong *)0x0) {
|
|
plVar6 = local_b8 + 1;
|
|
*plVar6 = *plVar6 + -1;
|
|
if (*plVar6 == 0) {
|
|
puVar1 = (undefined8 *)*local_b8;
|
|
*puVar1 = Proud::CFastArray<Proud::CCompressedFrameNumbers::Elem,1>::vftable;
|
|
if ((LPVOID)puVar1[2] != (LPVOID)0x0) {
|
|
if ((longlong *)puVar1[1] == (longlong *)0x0) {
|
|
FUN_14003e8b0((LPVOID)puVar1[2]);
|
|
}
|
|
else {
|
|
(**(code **)(*(longlong *)puVar1[1] + 0x18))();
|
|
}
|
|
}
|
|
(**(code **)(*plVar3 + 0x18))(plVar3,puVar1);
|
|
(**(code **)(*local_b0 + 0x18))(local_b0,plVar2);
|
|
}
|
|
}
|
|
plVar6 = local_98;
|
|
local_b0 = (longlong *)plVar7[1];
|
|
local_b8 = plVar8;
|
|
if (local_a0 != (longlong *)0x0) {
|
|
plVar8 = local_a0 + 1;
|
|
*plVar8 = *plVar8 + -1;
|
|
if (*plVar8 == 0) {
|
|
puVar1 = (undefined8 *)*local_a0;
|
|
*puVar1 = Proud::CFastArray<Proud::CCompressedFrameNumbers::Elem,1>::vftable;
|
|
if ((LPVOID)puVar1[2] != (LPVOID)0x0) {
|
|
if ((longlong *)puVar1[1] == (longlong *)0x0) {
|
|
FUN_14003e8b0((LPVOID)puVar1[2]);
|
|
}
|
|
else {
|
|
(**(code **)(*(longlong *)puVar1[1] + 0x18))();
|
|
}
|
|
}
|
|
(**(code **)(*plVar6 + 0x18))(plVar6,puVar1);
|
|
(**(code **)(*local_98 + 0x18))(local_98,local_a0);
|
|
}
|
|
}
|
|
if (local_b8 == (longlong *)0x0) {
|
|
puVar9 = (uint *)0x0;
|
|
}
|
|
else {
|
|
puVar9 = (uint *)*local_b8;
|
|
}
|
|
uVar5 = FUN_140097e40(puVar9,param_2,uVar5,puVar13);
|
|
if ((char)uVar5 == '\0') {
|
|
if (local_b8 != (longlong *)0x0) {
|
|
plVar8 = local_b8 + 1;
|
|
*plVar8 = *plVar8 + -1;
|
|
if (*plVar8 == 0) {
|
|
FUN_1400512a0((longlong)&local_b8,local_b8);
|
|
}
|
|
}
|
|
local_res8 = &local_d0;
|
|
uVar5 = FUN_14008a320((longlong *)&local_d0);
|
|
if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
}
|
|
else {
|
|
uVar4 = FUN_140074ee0(param_2,&local_res8,4);
|
|
if ((char)uVar4 == '\0') {
|
|
local_a4 = 0;
|
|
if (local_b8 != (longlong *)0x0) {
|
|
plVar8 = local_b8 + 1;
|
|
*plVar8 = *plVar8 + -1;
|
|
if (*plVar8 == 0) {
|
|
FUN_1400512a0((longlong)&local_b8,local_b8);
|
|
}
|
|
}
|
|
local_res8 = &local_d0;
|
|
uVar5 = FUN_14008a320((longlong *)&local_d0);
|
|
if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
}
|
|
else {
|
|
local_a4 = local_res8._0_4_;
|
|
uVar5 = 4;
|
|
uVar4 = FUN_140074ee0(param_2,&local_res8,4);
|
|
if ((char)uVar4 != '\0') {
|
|
local_a8 = local_res8._0_4_;
|
|
goto LAB_1400d4761;
|
|
}
|
|
if (local_b8 != (longlong *)0x0) {
|
|
plVar8 = local_b8 + 1;
|
|
*plVar8 = *plVar8 + -1;
|
|
if (*plVar8 == 0) {
|
|
FUN_1400512a0((longlong)&local_b8,local_b8);
|
|
}
|
|
}
|
|
local_res8 = &local_d0;
|
|
uVar5 = FUN_14008a320((longlong *)&local_d0);
|
|
if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
}
|
|
}
|
|
goto LAB_1400d488d;
|
|
}
|
|
LAB_1400d4761:
|
|
FUN_14007e740(param_3,0,uVar5,puVar13);
|
|
FUN_1400d3930(param_1[1],&local_d8,uVar5,puVar13);
|
|
plVar8 = (longlong *)FUN_1400d38a0(param_1[1]);
|
|
uVar5 = FUN_1400947a0(plVar8,param_3,(ulonglong)*(uint *)(param_1[2] + 0x56c),
|
|
(ulonglong)*(uint *)(*(longlong *)(param_1[2] + 0x670) + 0x6a4),param_4)
|
|
;
|
|
if ((int)uVar5 < 0) {
|
|
*(undefined1 *)(param_1 + 3) = 1;
|
|
}
|
|
if (local_b8 != (longlong *)0x0) {
|
|
plVar8 = local_b8 + 1;
|
|
*plVar8 = *plVar8 + -1;
|
|
if (*plVar8 == 0) {
|
|
FUN_1400512a0((longlong)&local_b8,local_b8);
|
|
}
|
|
}
|
|
local_res8 = &local_d0;
|
|
uVar4 = FUN_14008a320((longlong *)&local_d0);
|
|
if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
return CONCAT71((int7)((ulonglong)uVar4 >> 8),1);
|
|
}
|
|
SVar12 = 4;
|
|
pppuVar10 = &local_res8;
|
|
puVar9 = param_2;
|
|
uVar4 = FUN_140074ee0(param_2,pppuVar10,4);
|
|
if ((char)uVar4 == '\0') {
|
|
local_d8 = local_d8 & 0xffffffff;
|
|
if (local_b8 != (longlong *)0x0) {
|
|
plVar8 = local_b8 + 1;
|
|
*plVar8 = *plVar8 + -1;
|
|
if (*plVar8 == 0) {
|
|
FUN_1400512a0((longlong)&local_b8,local_b8);
|
|
}
|
|
}
|
|
local_res8 = &local_d0;
|
|
uVar5 = FUN_14008a320((longlong *)&local_d0);
|
|
if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
goto LAB_1400d488d;
|
|
}
|
|
local_d8 = CONCAT44(local_res8._0_4_,(uint)local_d8);
|
|
if (local_c8 != (longlong *)0x0) {
|
|
FUN_14003db10(local_88,(wchar_t *)PTR_u_Cannot_use_internal_buffer_becau_140170560,SVar12,
|
|
puVar13);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_88,(ThrowInfo *)&DAT_14016c210);
|
|
}
|
|
if (local_d0 == (uint *)0x0) {
|
|
local_d0 = (uint *)FUN_14008a360(puVar9,pppuVar10,SVar12);
|
|
local_d0[10] = 1;
|
|
local_d0[0xb] = 0;
|
|
}
|
|
puVar9 = param_2;
|
|
uVar5 = FUN_140075580(param_2,&local_res8,SVar12,puVar13);
|
|
if ((((char)uVar5 != '\0') && (iVar11 = (int)local_res8, -1 < iVar11)) &&
|
|
(iVar11 <= DAT_14016f140)) {
|
|
if (local_c8 == (longlong *)0x0) {
|
|
puVar9 = local_d0;
|
|
if (iVar11 < 1) {
|
|
if (local_d0 == (uint *)0x0) goto LAB_1400d4800;
|
|
iVar11 = 0;
|
|
}
|
|
else if (local_d0 == (uint *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14008a420(0,0,SVar12,puVar13);
|
|
}
|
|
FUN_14002a050((longlong)local_d0,iVar11,SVar12);
|
|
}
|
|
else {
|
|
if (local_c0._4_4_ < iVar11) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
local_c0 = CONCAT44(local_c0._4_4_,iVar11);
|
|
}
|
|
plVar6 = local_c8;
|
|
if (local_c8 == (longlong *)0x0) {
|
|
if (local_d0 == (uint *)0x0) {
|
|
LAB_1400d4800:
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14008a420(puVar9,0,SVar12,puVar13);
|
|
}
|
|
plVar6 = plVar8;
|
|
if (local_d0[6] != 0) {
|
|
plVar6 = *(longlong **)(local_d0 + 4);
|
|
}
|
|
}
|
|
uVar5 = (ulonglong)local_res8 & 0xffffffff;
|
|
uVar4 = FUN_140074ee0(param_2,plVar6,uVar5);
|
|
if ((char)uVar4 != '\0') goto LAB_1400d4761;
|
|
}
|
|
if (local_b8 != (longlong *)0x0) {
|
|
plVar8 = local_b8 + 1;
|
|
*plVar8 = *plVar8 + -1;
|
|
if (*plVar8 == 0) {
|
|
FUN_1400512a0((longlong)&local_b8,local_b8);
|
|
}
|
|
}
|
|
local_res8 = &local_d0;
|
|
uVar5 = FUN_14008a320((longlong *)&local_d0);
|
|
if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
}
|
|
LAB_1400d488d:
|
|
return uVar5 & 0xffffffffffffff00;
|
|
}
|
|
|