server-re/decomp/Agent_Release_x64/full/functions/0x1400aebc0.c
2026-10-14 16:45:19 -04:00

183 lines
6.2 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400aebc0 FUN_1400aebc0
* Pseudocode, not original source. */
longlong *
FUN_1400aebc0(undefined8 param_1,longlong *param_2,longlong *******param_3,longlong *param_4)
{
int *piVar1;
longlong *****ppppplVar2;
longlong ************pppppppppppplVar3;
char *pcVar4;
longlong ******pppppplVar5;
longlong ***********ppppppppppplVar6;
longlong ************_Str;
longlong ******_Str_00;
longlong *****_SubStr;
longlong ***********_SubStr_00;
longlong *plVar7;
uint uVar8;
uint uVar9;
int iVar10;
undefined *puVar11;
ulonglong uVar12;
ulonglong uVar13;
longlong *****local_48;
longlong ***********local_40;
undefined1 local_38;
undefined8 local_30;
local_30 = 0xfffffffffffffffe;
plVar7 = param_4;
FUN_140030200(param_1,param_2,param_3,param_4);
local_48 = (longlong *****)PTR_DAT_140155008;
puVar11 = (undefined *)*param_4;
if ((undefined *)*param_4 == (undefined *)0x0) {
puVar11 = PTR_DAT_140155008;
}
pppppplVar5 = &local_48;
FUN_140031ea0((longlong *)pppppplVar5,"<%s>",puVar11,plVar7);
ppppplVar2 = local_48;
_SubStr = local_48;
if (local_48 == (longlong *****)0x0) {
_SubStr = (longlong *****)PTR_DAT_140155008;
}
if (_SubStr == (longlong *****)0x0) {
uVar8 = 0xffffffff;
}
else {
pppppplVar5 = *param_3;
_Str_00 = (longlong ******)PTR_DAT_140155008;
if (((pppppplVar5 == (longlong ******)0x0) ||
(_Str_00 = pppppplVar5, pppppplVar5 == (longlong ******)PTR_DAT_140155008)) ||
(uVar8 = 0xffffffff, -1 < *(int *)(pppppplVar5 + -1))) {
pcVar4 = strstr((char *)_Str_00,(char *)_SubStr);
if (pcVar4 == (char *)0x0) {
pppppplVar5 = _Str_00;
uVar8 = 0xffffffff;
}
else {
pppppplVar5 = *param_3;
if (*param_3 == (longlong ******)0x0) {
pppppplVar5 = (longlong ******)PTR_DAT_140155008;
}
uVar8 = (int)pcVar4 - (int)pppppplVar5;
pppppplVar5 = (longlong ******)PTR_DAT_140155008;
if (-1 < (int)uVar8) {
iVar10 = 0;
if ((ppppplVar2 != (longlong *****)0x0) &&
(iVar10 = 0, ppppplVar2 != (longlong *****)PTR_DAT_140155008)) {
iVar10 = *(int *)(ppppplVar2 + -1);
}
uVar8 = uVar8 + iVar10;
}
}
}
}
FUN_140030200(pppppplVar5,_SubStr,puVar11,plVar7);
local_40 = (longlong ***********)PTR_DAT_140155008;
puVar11 = (undefined *)*param_4;
if ((undefined *)*param_4 == (undefined *)0x0) {
puVar11 = PTR_DAT_140155008;
}
_Str = &local_40;
FUN_140031ea0((longlong *)_Str,"</%s>",puVar11,plVar7);
ppppppppppplVar6 = local_40;
_SubStr_00 = local_40;
if (local_40 == (longlong ***********)0x0) {
_SubStr_00 = (longlong ***********)PTR_DAT_140155008;
}
uVar9 = 0xffffffff;
if ((_SubStr_00 != (longlong ***********)0x0) &&
((((_Str = (longlong ************)*param_3,
pppppppppppplVar3 = (longlong ************)PTR_DAT_140155008, uVar9 = 0xffffffff,
_Str == (longlong ************)0x0 ||
(pppppppppppplVar3 = _Str, _Str == (longlong ************)PTR_DAT_140155008)) ||
(-1 < *(int *)(_Str + -1))) &&
(_Str = pppppppppppplVar3, pcVar4 = strstr((char *)_Str,(char *)_SubStr_00),
pcVar4 != (char *)0x0)))) {
pppppplVar5 = *param_3;
if (*param_3 == (longlong ******)0x0) {
pppppplVar5 = (longlong ******)PTR_DAT_140155008;
}
uVar9 = (int)pcVar4 - (int)pppppplVar5;
}
if ((((int)uVar8 < 0) || ((int)uVar9 < 0)) || ((int)uVar9 <= (int)uVar8)) {
FUN_140030200(_Str,_SubStr_00,puVar11,plVar7);
*param_2 = (longlong)PTR_DAT_140155008;
if (((ppppppppppplVar6 != (longlong ***********)0x0) &&
(ppppppppppplVar6 != (longlong ***********)PTR_DAT_140155008)) &&
(ppppppppppplVar6 + -1 != (longlong ***********)0x0)) {
_Str = (longlong ************)FUN_140030200(_Str,_SubStr_00,puVar11,plVar7);
local_40 = (longlong ***********)_Str;
FUN_14002e6e0((int *)_Str);
local_38 = 1;
piVar1 = (int *)((longlong)ppppppppppplVar6 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_1400302f0(ppppppppppplVar6 + -1);
}
FUN_14002e770((longlong)_Str);
}
if (ppppplVar2 == (longlong *****)0x0) {
return param_2;
}
if (ppppplVar2 == (longlong *****)PTR_DAT_140155008) {
return param_2;
}
if (ppppplVar2 + -1 == (longlong *****)0x0) {
return param_2;
}
ppppppppppplVar6 = (longlong ***********)FUN_140030200(_Str,_SubStr_00,puVar11,plVar7);
local_40 = ppppppppppplVar6;
FUN_14002e6e0((int *)ppppppppppplVar6);
local_38 = 1;
piVar1 = (int *)((longlong)ppppplVar2 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_1400302f0(ppppplVar2 + -1);
}
}
else {
uVar13 = (ulonglong)(uVar9 - uVar8);
uVar12 = (ulonglong)uVar8;
plVar7 = param_2;
FUN_1400adf90((longlong *)param_3,param_2,uVar8,uVar9 - uVar8);
if (((ppppppppppplVar6 != (longlong ***********)0x0) &&
(ppppppppppplVar6 != (longlong ***********)PTR_DAT_140155008)) &&
(ppppppppppplVar6 + -1 != (longlong ***********)0x0)) {
param_3 = (longlong *******)FUN_140030200(param_3,plVar7,uVar12,uVar13);
local_40 = (longlong ***********)param_3;
FUN_14002e6e0((int *)param_3);
local_38 = 1;
piVar1 = (int *)((longlong)ppppppppppplVar6 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_1400302f0(ppppppppppplVar6 + -1);
}
FUN_14002e770((longlong)param_3);
}
if (ppppplVar2 == (longlong *****)0x0) {
return param_2;
}
if (ppppplVar2 == (longlong *****)PTR_DAT_140155008) {
return param_2;
}
if (ppppplVar2 + -1 == (longlong *****)0x0) {
return param_2;
}
ppppppppppplVar6 = (longlong ***********)FUN_140030200(param_3,plVar7,uVar12,uVar13);
local_40 = ppppppppppplVar6;
FUN_14002e6e0((int *)ppppppppppplVar6);
local_38 = 1;
piVar1 = (int *)((longlong)ppppplVar2 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_1400302f0(ppppplVar2 + -1);
}
}
FUN_14002e770((longlong)ppppppppppplVar6);
return param_2;
}