add agent manager release decomp
This commit is contained in:
parent
31ff800b2a
commit
fac6117145
7019 changed files with 254032 additions and 5 deletions
276
decomp/AgentManager_Release_x64/full/functions/0x140021d50.c
Normal file
276
decomp/AgentManager_Release_x64/full/functions/0x140021d50.c
Normal file
|
|
@ -0,0 +1,276 @@
|
|||
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
||||
* Ghidra 12.1.2 decompiler output for 0x140021d50 FUN_140021d50
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
byte * FUN_140021d50(longlong *param_1,byte *param_2,longlong *param_3,int param_4)
|
||||
|
||||
{
|
||||
ulonglong uVar1;
|
||||
byte bVar2;
|
||||
char cVar3;
|
||||
char cVar4;
|
||||
size_t sVar5;
|
||||
size_t sVar6;
|
||||
longlong *plVar7;
|
||||
undefined1 auVar8 [16];
|
||||
undefined1 auVar9 [16];
|
||||
byte *pbVar10;
|
||||
longlong lVar11;
|
||||
byte *pbVar12;
|
||||
__uint64 _Var13;
|
||||
size_t *psVar14;
|
||||
longlong *plVar15;
|
||||
char *pcVar16;
|
||||
size_t *psVar17;
|
||||
ulonglong uVar18;
|
||||
longlong lVar19;
|
||||
size_t *psVar20;
|
||||
size_t *local_res10;
|
||||
size_t *local_60;
|
||||
size_t *local_50;
|
||||
|
||||
pbVar10 = FUN_140020ee0(param_2,param_4);
|
||||
for (plVar15 = param_1; plVar15 != (longlong *)0x0; plVar15 = (longlong *)plVar15[3]) {
|
||||
lVar11 = (**(code **)(*plVar15 + 0x20))(plVar15);
|
||||
if (lVar11 != 0) {
|
||||
lVar11 = (**(code **)(*plVar15 + 0x20))(plVar15);
|
||||
goto LAB_140021dca;
|
||||
}
|
||||
}
|
||||
lVar11 = 0;
|
||||
LAB_140021dca:
|
||||
if ((pbVar10 == (byte *)0x0) || (*pbVar10 == 0)) {
|
||||
if (lVar11 == 0) {
|
||||
return (byte *)0x0;
|
||||
}
|
||||
if (*(char *)(lVar11 + 0x58) != '\0') {
|
||||
return (byte *)0x0;
|
||||
}
|
||||
*(undefined1 *)(lVar11 + 0x58) = 1;
|
||||
*(undefined4 *)(lVar11 + 0x5c) = 4;
|
||||
uVar18 = 0xffffffffffffffff;
|
||||
pcVar16 = PTR_s_Error_parsing_Element__140174c50;
|
||||
do {
|
||||
if (uVar18 == 0) break;
|
||||
uVar18 = uVar18 - 1;
|
||||
cVar3 = *pcVar16;
|
||||
pcVar16 = pcVar16 + 1;
|
||||
} while (cVar3 != '\0');
|
||||
FUN_14001e2c0((longlong *)(lVar11 + 0x60),PTR_s_Error_parsing_Element__140174c50,~uVar18 - 1);
|
||||
*(undefined4 *)(lVar11 + 0x78) = 0xffffffff;
|
||||
*(undefined4 *)(lVar11 + 0x74) = 0xffffffff;
|
||||
return (byte *)0x0;
|
||||
}
|
||||
if (param_3 != (longlong *)0x0) {
|
||||
FUN_140020d90((int *)param_3,pbVar10,param_4);
|
||||
param_1[1] = *param_3;
|
||||
}
|
||||
if (*pbVar10 != 0x3c) {
|
||||
if (lVar11 == 0) {
|
||||
return (byte *)0x0;
|
||||
}
|
||||
FUN_1400219a0(lVar11,4,pbVar10,(int *)param_3,param_4);
|
||||
return (byte *)0x0;
|
||||
}
|
||||
pbVar10 = FUN_140020ee0(pbVar10 + 1,param_4);
|
||||
pbVar12 = FUN_140020fc0(pbVar10,param_1 + 7);
|
||||
if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) {
|
||||
if (lVar11 == 0) {
|
||||
return (byte *)0x0;
|
||||
}
|
||||
FUN_1400219a0(lVar11,5,pbVar10,(int *)param_3,param_4);
|
||||
return (byte *)0x0;
|
||||
}
|
||||
_Var13 = SUB168(ZEXT816(4) * ZEXT816(7),0);
|
||||
if (SUB168(ZEXT816(4) * ZEXT816(7),8) != 0) {
|
||||
_Var13 = 0xffffffffffffffff;
|
||||
}
|
||||
psVar14 = operator_new(_Var13);
|
||||
*psVar14 = 2;
|
||||
*(undefined1 *)((longlong)psVar14 + 0x12) = 0;
|
||||
psVar14[1] = 2;
|
||||
memcpy(psVar14 + 2,&DAT_1401305e0,*psVar14);
|
||||
psVar20 = (size_t *)param_1[7];
|
||||
sVar5 = *psVar20;
|
||||
uVar18 = *psVar14 + sVar5;
|
||||
local_res10 = psVar14;
|
||||
local_60 = psVar14;
|
||||
if ((psVar14[1] < uVar18) && (uVar1 = psVar14[1] + uVar18, psVar14[1] < uVar1)) {
|
||||
sVar6 = *psVar14;
|
||||
if (uVar1 == 0) {
|
||||
local_res10 = &DAT_14017ce88;
|
||||
local_60 = local_50;
|
||||
}
|
||||
else {
|
||||
auVar8._8_8_ = 0;
|
||||
auVar8._0_8_ = uVar1 + 0x1b >> 2;
|
||||
_Var13 = SUB168(ZEXT816(4) * auVar8,0);
|
||||
if (SUB168(ZEXT816(4) * auVar8,8) != 0) {
|
||||
_Var13 = 0xffffffffffffffff;
|
||||
}
|
||||
local_res10 = operator_new(_Var13);
|
||||
*local_res10 = sVar6;
|
||||
*(undefined1 *)((longlong)local_res10 + sVar6 + 0x10) = 0;
|
||||
local_res10[1] = uVar1;
|
||||
local_60 = local_res10;
|
||||
}
|
||||
memcpy(local_res10 + 2,psVar14 + 2,*psVar14);
|
||||
if (psVar14 != &DAT_14017ce88) {
|
||||
operator_delete__(psVar14);
|
||||
}
|
||||
}
|
||||
memmove((void *)(*local_res10 + 0x10 + (longlong)local_res10),psVar20 + 2,sVar5);
|
||||
*local_res10 = uVar18;
|
||||
*(undefined1 *)((longlong)local_res10 + uVar18 + 0x10) = 0;
|
||||
sVar5 = *local_res10;
|
||||
uVar18 = sVar5 + 1;
|
||||
psVar20 = local_60;
|
||||
psVar14 = local_res10;
|
||||
if ((local_res10[1] < uVar18) && (uVar1 = local_res10[1] + uVar18, local_res10[1] < uVar1)) {
|
||||
sVar6 = *local_res10;
|
||||
if (uVar1 == 0) {
|
||||
psVar14 = &DAT_14017ce88;
|
||||
}
|
||||
else {
|
||||
auVar9._8_8_ = 0;
|
||||
auVar9._0_8_ = uVar1 + 0x1b >> 2;
|
||||
_Var13 = SUB168(ZEXT816(4) * auVar9,0);
|
||||
if (SUB168(ZEXT816(4) * auVar9,8) != 0) {
|
||||
_Var13 = 0xffffffffffffffff;
|
||||
}
|
||||
psVar14 = operator_new(_Var13);
|
||||
*psVar14 = sVar6;
|
||||
*(undefined1 *)((longlong)psVar14 + sVar6 + 0x10) = 0;
|
||||
psVar14[1] = uVar1;
|
||||
local_50 = psVar14;
|
||||
}
|
||||
memcpy(psVar14 + 2,local_res10 + 2,*local_res10);
|
||||
psVar20 = local_50;
|
||||
if (local_res10 != &DAT_14017ce88) {
|
||||
operator_delete__(local_60);
|
||||
}
|
||||
}
|
||||
memmove((void *)(*psVar14 + 0x10 + (longlong)psVar14),&DAT_140132688,1);
|
||||
*psVar14 = uVar18;
|
||||
*(undefined1 *)(sVar5 + 0x11 + (longlong)psVar14) = 0;
|
||||
while( true ) {
|
||||
if (*pbVar12 == 0) {
|
||||
if (psVar14 != &DAT_14017ce88) {
|
||||
operator_delete__(psVar20);
|
||||
return pbVar12;
|
||||
}
|
||||
return pbVar12;
|
||||
}
|
||||
pbVar10 = FUN_140020ee0(pbVar12,param_4);
|
||||
if ((pbVar10 == (byte *)0x0) || (bVar2 = *pbVar10, bVar2 == 0)) {
|
||||
if (lVar11 != 0) {
|
||||
FUN_1400219a0(lVar11,7,pbVar12,(int *)param_3,param_4);
|
||||
}
|
||||
goto LAB_1400221f4;
|
||||
}
|
||||
if (bVar2 == 0x2f) {
|
||||
if (pbVar10[1] == 0x3e) {
|
||||
if (psVar14 != &DAT_14017ce88) {
|
||||
operator_delete__(psVar20);
|
||||
}
|
||||
return pbVar10 + 2;
|
||||
}
|
||||
if (lVar11 != 0) {
|
||||
FUN_1400219a0(lVar11,8,pbVar10 + 1,(int *)param_3,param_4);
|
||||
}
|
||||
goto LAB_1400221f4;
|
||||
}
|
||||
if (bVar2 == 0x3e) break;
|
||||
plVar15 = operator_new(0x50);
|
||||
if (plVar15 == (longlong *)0x0) {
|
||||
if (lVar11 != 0) {
|
||||
FUN_1400219a0(lVar11,3,pbVar12,(int *)param_3,param_4);
|
||||
}
|
||||
goto LAB_1400221f4;
|
||||
}
|
||||
*(undefined4 *)((longlong)plVar15 + 0xc) = 0xffffffff;
|
||||
*(undefined4 *)(plVar15 + 1) = 0xffffffff;
|
||||
plVar15[2] = 0;
|
||||
*plVar15 = (longlong)TiXmlAttribute::vftable;
|
||||
plVar15[4] = (longlong)&DAT_14017ce88;
|
||||
plVar15[6] = (longlong)&DAT_14017ce88;
|
||||
plVar15[9] = 0;
|
||||
plVar15[8] = 0;
|
||||
plVar15[3] = lVar11;
|
||||
pbVar12 = (byte *)(**(code **)(*plVar15 + 0x10))(plVar15,pbVar10,param_3,param_4);
|
||||
if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) {
|
||||
if (lVar11 != 0) {
|
||||
FUN_1400219a0(lVar11,4,pbVar10,(int *)param_3,param_4);
|
||||
}
|
||||
(**(code **)*plVar15)(plVar15,1);
|
||||
goto LAB_1400221f4;
|
||||
}
|
||||
for (plVar7 = (longlong *)param_1[0x14]; plVar7 != param_1 + 0xb; plVar7 = (longlong *)plVar7[9]
|
||||
) {
|
||||
pcVar16 = (char *)(plVar7[4] + 0x10);
|
||||
lVar19 = (plVar15[4] + 0x10) - (longlong)pcVar16;
|
||||
do {
|
||||
cVar3 = *pcVar16;
|
||||
cVar4 = pcVar16[lVar19];
|
||||
if (cVar3 != cVar4) break;
|
||||
pcVar16 = pcVar16 + 1;
|
||||
} while (cVar4 != '\0');
|
||||
if (cVar3 == cVar4) {
|
||||
if (plVar7 != (longlong *)0x0) {
|
||||
uVar18 = 0xffffffffffffffff;
|
||||
pcVar16 = (char *)(plVar15[6] + 0x10);
|
||||
goto code_r0x0001400221d4;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
plVar15[9] = (longlong)(param_1 + 0xb);
|
||||
plVar15[8] = param_1[0x13];
|
||||
*(longlong **)(param_1[0x13] + 0x48) = plVar15;
|
||||
param_1[0x13] = (longlong)plVar15;
|
||||
}
|
||||
pbVar10 = (byte *)FUN_140022410(param_1,pbVar10 + 1,param_3,param_4);
|
||||
if ((pbVar10 == (byte *)0x0) || (*pbVar10 == 0)) {
|
||||
if (lVar11 != 0) {
|
||||
FUN_1400219a0(lVar11,9,pbVar10,(int *)param_3,param_4);
|
||||
}
|
||||
}
|
||||
else {
|
||||
psVar17 = psVar14 + 2;
|
||||
lVar19 = (longlong)pbVar10 - (longlong)psVar17;
|
||||
do {
|
||||
if ((char)*psVar17 == '\0') goto LAB_1400222c9;
|
||||
} while ((*(char *)(lVar19 + (longlong)psVar17) == (char)*psVar17) &&
|
||||
(psVar17 = (size_t *)((longlong)psVar17 + 1),
|
||||
*(char *)(lVar19 + (longlong)psVar17) != '\0'));
|
||||
if ((char)*psVar17 == '\0') {
|
||||
LAB_1400222c9:
|
||||
sVar5 = *psVar14;
|
||||
if (psVar14 != &DAT_14017ce88) {
|
||||
operator_delete__(psVar20);
|
||||
return pbVar10 + sVar5;
|
||||
}
|
||||
return pbVar10 + sVar5;
|
||||
}
|
||||
if (lVar11 != 0) {
|
||||
FUN_1400219a0(lVar11,9,pbVar10,(int *)param_3,param_4);
|
||||
}
|
||||
}
|
||||
goto LAB_1400221f4;
|
||||
while( true ) {
|
||||
uVar18 = uVar18 - 1;
|
||||
cVar3 = *pcVar16;
|
||||
pcVar16 = pcVar16 + 1;
|
||||
if (cVar3 == '\0') break;
|
||||
code_r0x0001400221d4:
|
||||
if (uVar18 == 0) break;
|
||||
}
|
||||
FUN_14001e2c0(plVar7 + 6,(char *)(plVar15[6] + 0x10),~uVar18 - 1);
|
||||
(**(code **)*plVar15)(plVar15,1);
|
||||
LAB_1400221f4:
|
||||
if (psVar14 != &DAT_14017ce88) {
|
||||
operator_delete__(psVar20);
|
||||
}
|
||||
return (byte *)0x0;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue