server-re/decomp/AgentManager_Release_x64/full/functions/0x1400c27c0.c
2026-10-15 09:58:24 -04:00

419 lines
14 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400c27c0 FUN_1400c27c0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1400c27c0(longlong *param_1,uint *param_2,undefined8 param_3,undefined8 param_4)
{
longlong *plVar1;
uint uVar2;
longlong *plVar3;
undefined8 uVar4;
int *piVar5;
ulonglong uVar6;
int *piVar7;
longlong lVar8;
uint *puVar9;
longlong *plVar10;
uint uVar11;
undefined8 *puVar12;
longlong **pplVar13;
undefined ***pppuVar14;
undefined8 uVar15;
int iVar16;
longlong **pplVar17;
SIZE_T SVar18;
uint *puVar19;
SIZE_T *pSVar20;
longlong lVar21;
undefined1 auStack_ec8 [32];
undefined1 local_ea8 [8];
longlong *local_ea0;
int local_e98 [2];
longlong local_e90;
longlong local_e88;
undefined4 local_e80;
int local_e7c;
longlong *local_e70;
longlong *local_e68;
longlong *local_e60;
undefined **local_e58;
undefined8 local_e50;
longlong **local_e48;
undefined8 local_e40;
undefined8 local_e38;
undefined **local_e30;
undefined8 local_e28;
longlong **local_e20;
undefined8 local_e18;
undefined8 local_e10;
undefined **local_e08;
undefined8 local_e00;
longlong **local_df8;
undefined8 local_df0;
undefined8 local_de8;
longlong *local_dd0;
undefined **local_dc8;
undefined8 local_dc0;
longlong **local_db8;
ulonglong local_db0;
undefined8 local_da8;
undefined **local_da0;
undefined8 local_d98;
longlong **local_d90;
ulonglong local_d88;
undefined8 local_d80;
int *local_d78;
undefined1 local_d70;
int *local_d68;
undefined1 local_d60;
SIZE_T local_d58;
undefined1 local_d50;
uint local_d48;
int iStack_d44;
undefined8 local_d40;
undefined8 local_d38;
undefined8 local_d30;
undefined8 local_d28;
undefined8 local_d20;
int *local_d18;
undefined1 local_d10;
int *local_d08;
undefined1 local_d00;
undefined8 local_ce0;
undefined1 local_cb8 [3216];
ulonglong local_28;
local_ce0 = 0xfffffffffffffffe;
local_28 = DAT_14016f5a0 ^ (ulonglong)auStack_ec8;
local_ea0 = param_1;
(**(code **)(*(longlong *)(param_1[0x21] + 0x78) + 0x10))();
SVar18 = 1;
puVar12 = (undefined8 *)local_ea8;
puVar19 = param_2;
uVar4 = FUN_140074ee0(param_2,puVar12,1);
if ((char)uVar4 == '\0') {
FUN_14003e7c0(puVar19,puVar12,SVar18,param_4);
local_e70 = (longlong *)PTR_DAT_14016f010;
pplVar13 = &local_e70;
uVar4 = 8;
uVar15 = 3;
plVar10 = (longlong *)param_1[0x21];
FUN_1400b4a80(plVar10,8,(undefined *)0x3,pplVar13);
plVar3 = local_e70;
if (((local_e70 != (longlong *)0x0) && (local_e70 != (longlong *)PTR_DAT_14016f010)) &&
(plVar1 = local_e70 + -1, plVar1 != (longlong *)0x0)) {
piVar5 = (int *)FUN_14003e7c0(plVar10,uVar4,uVar15,pplVar13);
local_d68 = piVar5;
FUN_14003d040(piVar5);
local_d60 = 1;
piVar7 = (int *)((longlong)plVar3 + -4);
*piVar7 = *piVar7 + -1;
if (*piVar7 == 0) {
FUN_14003e8b0(plVar1);
}
FUN_14003d0d0((longlong)piVar5);
local_d60 = 0;
}
local_e70 = (longlong *)PTR_DAT_14016f010;
LAB_1400c28be:
if ((int)param_1[0x20] < 4) {
*(undefined4 *)(param_1 + 8) = 0;
*(undefined4 *)(param_1 + 0x20) = 4;
lVar21 = (**(code **)(*(longlong *)(param_1[0x21] + 0x70) + 0x1c0))();
param_1[0x10] = lVar21;
*(undefined1 *)(param_1 + 0x18) = 0;
}
return;
}
FUN_1400979a0(&local_d48);
puVar19 = &local_d48;
puVar9 = param_2;
uVar4 = FUN_1400759f0(param_2,puVar19,SVar18,param_4);
if ((char)uVar4 == '\0') {
FUN_14003e7c0(puVar9,puVar19,SVar18,param_4);
local_e60 = (longlong *)PTR_DAT_14016f010;
pplVar13 = &local_e60;
uVar4 = 8;
uVar15 = 3;
plVar10 = (longlong *)param_1[0x21];
FUN_1400b4a80(plVar10,8,(undefined *)0x3,pplVar13);
plVar3 = local_e60;
if (((local_e60 != (longlong *)0x0) && (local_e60 != (longlong *)PTR_DAT_14016f010)) &&
(plVar1 = local_e60 + -1, plVar1 != (longlong *)0x0)) {
piVar5 = (int *)FUN_14003e7c0(plVar10,uVar4,uVar15,pplVar13);
local_d78 = piVar5;
FUN_14003d040(piVar5);
local_d70 = 1;
piVar7 = (int *)((longlong)plVar3 + -4);
*piVar7 = *piVar7 + -1;
if (*piVar7 == 0) {
FUN_14003e8b0(plVar1);
}
FUN_14003d0d0((longlong)piVar5);
local_d70 = 0;
}
local_e60 = (longlong *)PTR_DAT_14016f010;
goto LAB_1400c28be;
}
lVar21 = param_1[0x21];
*(ulonglong *)(lVar21 + 0x6a0) = CONCAT44(iStack_d44,local_d48);
*(undefined8 *)(lVar21 + 0x6a8) = local_d40;
*(undefined8 *)(lVar21 + 0x6b0) = local_d38;
*(undefined8 *)(lVar21 + 0x6b8) = local_d30;
*(undefined8 *)(lVar21 + 0x6c0) = local_d28;
*(undefined8 *)(lVar21 + 0x6c8) = local_d20;
if (*(char *)(param_1[0x21] + 0x6cc) != '\0') {
uVar4 = (**(code **)(*(longlong *)(param_1[0x21] + 0x70) + 0x1c0))();
*(undefined8 *)(param_1[0x21] + 0x638) = uVar4;
}
pplVar17 = (longlong **)0x0;
local_e00 = 0;
local_df8 = (longlong **)0x0;
local_df0 = 0;
local_de8 = 0;
local_e08 = Proud::ByteArray::vftable;
pplVar13 = &local_dd0;
puVar19 = param_2;
uVar6 = FUN_140075580(param_2,pplVar13,SVar18,param_4);
plVar10 = local_dd0;
if ((((char)uVar6 != '\0') && (iVar16 = (int)local_dd0, -1 < iVar16)) && (iVar16 <= DAT_14016f140)
) {
FUN_14002a050((longlong)&local_e08,iVar16,SVar18);
pplVar13 = local_df8;
if ((int)local_df0 == 0) {
pplVar13 = pplVar17;
}
SVar18 = (ulonglong)plVar10 & 0xffffffff;
puVar19 = param_2;
uVar4 = FUN_140074ee0(param_2,pplVar13,SVar18);
if ((char)uVar4 != '\0') {
local_e50 = 0;
local_e48 = (longlong **)0x0;
local_e40 = 0;
local_e38 = 0;
local_e58 = Proud::ByteArray::vftable;
local_e28 = 0;
local_e20 = (longlong **)0x0;
local_e18 = 0;
local_e10 = 0;
local_e30 = Proud::ByteArray::vftable;
FUN_140095cc0((longlong)&local_e58,*(int *)(param_1[0x21] + 0x6bc),SVar18,param_4);
pplVar13 = local_e48;
if ((int)local_e40 == 0) {
pplVar13 = pplVar17;
}
SVar18 = (SIZE_T)(*(uint *)(param_1[0x21] + 0x6bc) >> 3);
uVar4 = 0x10;
FUN_140085bb0((void *)(param_1[0x21] + 0xd8),(byte *)pplVar13,SVar18,0x10);
FUN_140095cc0((longlong)&local_e30,*(int *)(param_1[0x21] + 0x6c0),SVar18,uVar4);
pplVar13 = local_e20;
if ((int)local_e18 == 0) {
pplVar13 = pplVar17;
}
SVar18 = (SIZE_T)(*(uint *)(param_1[0x21] + 0x6c0) >> 3);
FUN_1400953b0(param_1[0x21] + 0x4a8,(longlong)pplVar13,SVar18,uVar4);
piVar7 = (int *)FUN_14003e990();
FUN_14003d040(piVar7);
if (iStack_d44 < DAT_14016f140) {
iStack_d44 = DAT_14016f140;
}
DAT_14016f140 = iStack_d44;
FUN_14003d0d0((longlong)piVar7);
uVar11 = (int)*param_2 >> 0x1f & 7;
if (*(longlong *)(param_2 + 2) == 0) {
if (*(longlong *)(param_2 + 4) == 0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,(ulonglong)uVar11,SVar18,uVar4);
}
uVar2 = param_2[6];
}
else {
uVar2 = *(uint *)(*(longlong *)(param_2 + 2) + 0x18);
}
if ((int)(*param_2 + uVar11) >> 3 != uVar2) {
FUN_14003e7c0((ulonglong)uVar2,(ulonglong)uVar11,SVar18,uVar4);
local_ea0 = (longlong *)PTR_DAT_14016f010;
pplVar13 = &local_ea0;
uVar4 = 8;
uVar15 = 3;
plVar10 = (longlong *)param_1[0x21];
FUN_1400b4a80(plVar10,8,(undefined *)0x3,pplVar13);
plVar3 = local_ea0;
if (((local_ea0 != (longlong *)0x0) && (local_ea0 != (longlong *)PTR_DAT_14016f010)) &&
(plVar1 = local_ea0 + -1, plVar1 != (longlong *)0x0)) {
piVar5 = (int *)FUN_14003e7c0(plVar10,uVar4,uVar15,pplVar13);
local_d08 = piVar5;
FUN_14003d040(piVar5);
local_d00 = 1;
piVar7 = (int *)((longlong)plVar3 + -4);
*piVar7 = *piVar7 + -1;
if (*piVar7 == 0) {
FUN_14003e8b0(plVar1);
}
FUN_14003d0d0((longlong)piVar5);
}
FUN_1400bf180((longlong)param_1,4);
FUN_140049e40(&local_e30);
FUN_140049e40(&local_e58);
goto LAB_1400c3157;
}
*(undefined1 *)(param_1[0x21] + 0x1790) = local_ea8[0];
lVar21 = param_1[0x21];
lVar8 = FUN_14009c0f0(lVar21);
FUN_1400ce8f0(lVar8,*(char *)(lVar21 + 0x6b8));
local_dc0 = 0;
local_db8 = (longlong **)0x0;
local_db0 = 0;
local_da8 = 0;
local_dc8 = Proud::ByteArray::vftable;
local_d98 = 0;
local_d90 = (longlong **)0x0;
local_d88 = 0;
local_d80 = 0;
local_da0 = Proud::ByteArray::vftable;
FUN_140095cc0((longlong)&local_e58,*(int *)(param_1[0x21] + 0x6bc),SVar18,uVar4);
pplVar13 = local_e48;
if ((int)local_e40 == 0) {
pplVar13 = pplVar17;
}
uVar4 = 0x10;
FUN_140085bb0((void *)(param_1[0x21] + 0x708),(byte *)pplVar13,
(ulonglong)(*(uint *)(param_1[0x21] + 0x6bc) >> 3),0x10);
pppuVar14 = &local_e08;
FUN_140095e80((longlong)&local_dc8,(longlong)&local_e58,(longlong)pppuVar14);
FUN_140095cc0((longlong)&local_e30,*(int *)(param_1[0x21] + 0x6c0),(SIZE_T)pppuVar14,uVar4);
pplVar13 = local_e20;
if ((int)local_e18 == 0) {
pplVar13 = pplVar17;
}
FUN_1400953b0(param_1[0x21] + 0xad8,(longlong)pplVar13,
(ulonglong)(*(uint *)(param_1[0x21] + 0x6c0) >> 3),uVar4);
puVar19 = (uint *)(param_1[0x21] + 0x708);
pppuVar14 = &local_da0;
FUN_140087c70((longlong)&local_e30,(longlong)pppuVar14,puVar19,uVar4);
FUN_140074fb0(local_e98);
FUN_140074a40((longlong)local_e98,pppuVar14,(SIZE_T)puVar19,uVar4);
FUN_140075110(local_e98,0x800,(SIZE_T)puVar19,uVar4);
uVar15 = 0;
FUN_140075110(local_e98,0,(SIZE_T)puVar19,uVar4);
FUN_140029d80((longlong)local_e98,CONCAT71((int7)((ulonglong)uVar15 >> 8),5),(SIZE_T)puVar19,
uVar4);
uVar6 = local_db0;
iVar16 = (int)local_db0;
FUN_140076380((longlong)local_e98,(longlong)(int)local_db0,(SIZE_T)puVar19,uVar4);
pplVar13 = local_db8;
if ((int)local_db0 == 0) {
pplVar13 = pplVar17;
}
if (iVar16 != 0) {
local_e98[1] = 0;
if (local_e90 == 0) {
if (local_e88 == 0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,pplVar13,puVar19,uVar4);
}
LAB_1400c2ec2:
puVar19 = (uint *)(uVar6 & 0xffffffff);
FUN_140029f40(&local_e88,pplVar13,puVar19,uVar4);
}
else {
if (local_e88 != 0) goto LAB_1400c2ec2;
if (local_e90 == 0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,pplVar13,puVar19,uVar4);
}
puVar19 = (uint *)(uVar6 & 0xffffffff);
FUN_14002a110(local_e90,pplVar13,(SIZE_T)puVar19);
}
FUN_14002a180((longlong)local_e98,pplVar13,(SIZE_T)puVar19,uVar4);
}
uVar6 = local_d88;
iVar16 = (int)local_d88;
FUN_140076380((longlong)local_e98,(longlong)(int)local_d88,(SIZE_T)puVar19,uVar4);
pplVar13 = local_d90;
if ((int)local_d88 == 0) {
pplVar13 = pplVar17;
}
if (iVar16 != 0) {
local_e98[1] = 0;
if (local_e90 == 0) {
if (local_e88 == 0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,pplVar13,puVar19,uVar4);
}
LAB_1400c2f40:
puVar19 = (uint *)(uVar6 & 0xffffffff);
FUN_140029f40(&local_e88,pplVar13,puVar19,uVar4);
}
else {
if (local_e88 != 0) goto LAB_1400c2f40;
if (local_e90 == 0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,pplVar13,puVar19,uVar4);
}
puVar19 = (uint *)(uVar6 & 0xffffffff);
FUN_14002a110(local_e90,pplVar13,(SIZE_T)puVar19);
}
FUN_14002a180((longlong)local_e98,pplVar13,(SIZE_T)puVar19,uVar4);
}
lVar21 = FUN_14004ec50((longlong)local_cb8,(longlong)local_e98,puVar19);
local_d58 = 0;
local_d50 = 1;
lVar8 = FUN_14009c0f0(param_1[0x21]);
pSVar20 = &local_d58;
FUN_1400ceb20(lVar8,lVar21,pSVar20,uVar4);
FUN_14004db20((longlong)local_cb8,lVar21,pSVar20,uVar4);
local_dd0 = &local_e90;
FUN_14008a320(&local_e90);
if (local_e88 != 0) {
if (local_e7c < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
local_e80 = 0;
}
FUN_140049e40(&local_da0);
FUN_140049e40(&local_dc8);
FUN_140049e40(&local_e30);
FUN_140049e40(&local_e58);
goto LAB_1400c3157;
}
}
FUN_14003e7c0(puVar19,pplVar13,SVar18,param_4);
local_e68 = (longlong *)PTR_DAT_14016f010;
pplVar13 = &local_e68;
uVar4 = 8;
uVar15 = 3;
plVar10 = (longlong *)param_1[0x21];
FUN_1400b4a80(plVar10,8,(undefined *)0x3,pplVar13);
plVar3 = local_e68;
if (((local_e68 != (longlong *)0x0) && (local_e68 != (longlong *)PTR_DAT_14016f010)) &&
(plVar1 = local_e68 + -1, plVar1 != (longlong *)0x0)) {
piVar5 = (int *)FUN_14003e7c0(plVar10,uVar4,uVar15,pplVar13);
local_d18 = piVar5;
FUN_14003d040(piVar5);
local_d10 = 1;
piVar7 = (int *)((longlong)plVar3 + -4);
*piVar7 = *piVar7 + -1;
if (*piVar7 == 0) {
FUN_14003e8b0(plVar1);
}
FUN_14003d0d0((longlong)piVar5);
local_d10 = 0;
}
local_e68 = (longlong *)PTR_DAT_14016f010;
if ((int)param_1[0x20] < 4) {
*(undefined4 *)(param_1 + 8) = 0;
*(undefined4 *)(param_1 + 0x20) = 4;
lVar21 = (**(code **)(*(longlong *)(param_1[0x21] + 0x70) + 0x1c0))();
param_1[0x10] = lVar21;
*(undefined1 *)(param_1 + 0x18) = 0;
}
LAB_1400c3157:
FUN_140049e40(&local_e08);
return;
}