/* 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 ); }