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

140 lines
3.6 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14003a320 FUN_14003a320
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_14003a320(longlong param_1)
{
ulonglong *puVar1;
ulonglong *puVar2;
wchar_t *pwVar3;
wchar_t *pwVar4;
ulonglong uVar5;
wchar_t ******ppppppwVar6;
ulonglong *puVar7;
ulonglong uVar8;
int iVar9;
undefined1 auStack_128 [32];
ulonglong *local_108;
ulonglong *local_100;
undefined8 local_f8;
undefined8 local_e8;
undefined4 local_d8;
int local_d4;
char local_cc;
undefined4 local_c8;
wchar_t *****local_b0 [3];
ulonglong local_98;
undefined2 local_88;
undefined6 uStack_86;
undefined8 local_78;
ulonglong local_70;
wchar_t local_60;
undefined6 uStack_5e;
ulonglong local_50;
ulonglong local_48;
ulonglong local_38;
local_e8 = 0xfffffffffffffffe;
local_38 = DAT_14016f5a0 ^ (ulonglong)auStack_128;
local_108 = (ulonglong *)0x0;
local_100 = (ulonglong *)0x0;
local_f8 = 0;
FUN_140039b70(param_1,(ulonglong *)&local_108);
puVar2 = local_100;
puVar1 = local_108;
iVar9 = 700;
puVar7 = local_108;
do {
if (puVar7 == puVar2) {
LAB_14003a552:
if (puVar1 != (ulonglong *)0x0) {
FUN_14000a5f0(puVar1,puVar2);
operator_delete(puVar1);
}
return;
}
FUN_140004f20(&local_d8,(undefined4 *)puVar7);
pwVar4 = (wchar_t *)CONCAT62(uStack_5e,local_60);
pwVar3 = &local_60;
if (7 < local_48) {
pwVar3 = pwVar4;
}
if (L"PATCH" < pwVar3) {
LAB_14003a432:
if (local_48 < 5) {
FUN_140001920((undefined8 *)&local_60,5,local_50);
pwVar4 = (wchar_t *)CONCAT62(uStack_5e,local_60);
}
pwVar3 = &local_60;
if (7 < local_48) {
pwVar3 = pwVar4;
}
builtin_wcsncpy(pwVar3,L"PATCH",5);
local_50 = 5;
pwVar4 = &local_60;
if (7 < local_48) {
pwVar4 = (wchar_t *)CONCAT62(uStack_5e,local_60);
}
pwVar4[5] = L'\0';
}
else {
pwVar3 = &local_60;
if (7 < local_48) {
pwVar3 = pwVar4;
}
if (pwVar3 + local_50 < (wchar_t *)((longlong)L"PATCH" + 1)) goto LAB_14003a432;
pwVar3 = &local_60;
if (7 < local_48) {
pwVar3 = pwVar4;
}
uVar8 = (longlong)L"PATCH" - (longlong)pwVar3 >> 1;
if (local_50 < uVar8) {
std::_Xout_of_range("invalid string position");
goto LAB_14003a552;
}
uVar5 = local_50 - uVar8;
if (5 < uVar5) {
uVar5 = 5;
}
FUN_140001800((undefined8 *)&local_60,uVar5 + uVar8,0xffffffffffffffff);
FUN_140001800((undefined8 *)&local_60,0,uVar8);
}
if (local_cc == '\r') {
LAB_14003a4b4:
local_cc = '\x18';
local_c8 = 0xc3b1;
local_d4 = iVar9;
FUN_140033c30((ulonglong *)&local_60,0x18,iVar9);
FUN_1400394f0(param_1,&local_d8);
iVar9 = iVar9 + 1;
}
else if (local_cc == '\x15') {
ppppppwVar6 = local_b0;
if (7 < local_98) {
ppppppwVar6 = (wchar_t ******)local_b0[0];
}
uVar8 = FUN_14003a250(param_1,(wchar_t *)ppppppwVar6);
if ((char)uVar8 == '\0') goto LAB_14003a4b4;
}
if (7 < local_48) {
operator_delete((void *)CONCAT62(uStack_5e,local_60));
}
local_48 = 7;
local_50 = 0;
local_60 = L'\0';
if (7 < local_70) {
operator_delete((void *)CONCAT62(uStack_86,local_88));
}
local_70 = 7;
local_78 = 0;
local_88 = 0;
if (7 < local_98) {
operator_delete(local_b0[0]);
}
puVar7 = puVar7 + 0x14;
} while( true );
}