/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x140005950 FUN_140005950 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_140005950(longlong param_1,short *param_2,undefined8 param_3,uint *param_4) { ulonglong *puVar1; ulonglong *puVar2; ulonglong *puVar3; BOOL BVar4; HANDLE hProcess; longlong lVar5; char *_Format; short *psVar6; wchar_t *pwVar7; ulonglong *puVar8; short *psVar9; wchar_t *pwVar10; bool bVar11; undefined1 auStack_188 [32]; DWORD local_168 [2]; ulonglong *local_160; ulonglong *local_158; undefined8 local_150; undefined8 local_140; undefined4 local_138 [10]; void *local_110; ulonglong local_f8; undefined2 local_e8; undefined6 uStack_e6; undefined8 local_d8; ulonglong local_d0; undefined2 local_c0; undefined6 uStack_be; undefined8 local_b0; ulonglong local_a8; undefined8 local_98; ulonglong uStack_90; ulonglong local_88; ulonglong local_80; ulonglong local_78; ulonglong local_70; ulonglong local_68; void *local_60; undefined8 local_58; undefined8 local_50; ulonglong local_38; local_140 = 0xfffffffffffffffe; local_38 = DAT_1401555a0 ^ (ulonglong)auStack_188; bVar11 = local_38 == 0; lVar5 = 7; pwVar7 = param_2; pwVar10 = L"update"; do { if (lVar5 == 0) break; lVar5 = lVar5 + -1; bVar11 = *pwVar7 == *pwVar10; pwVar7 = pwVar7 + 1; pwVar10 = pwVar10 + 1; } while (bVar11); if (!bVar11) { lVar5 = 5; psVar6 = param_2; psVar9 = &DAT_14011ca78; do { if (lVar5 == 0) break; lVar5 = lVar5 + -1; bVar11 = *psVar6 == *psVar9; psVar6 = psVar6 + 1; psVar9 = psVar9 + 1; } while (bVar11); if (bVar11) { local_160 = (ulonglong *)0x0; local_158 = (ulonglong *)0x0; local_150 = 0; FUN_14002ce60(DAT_140162d60,(ulonglong *)&local_160); puVar3 = local_158; puVar2 = local_160; if (local_160 != local_158) { puVar8 = local_160 + 0x17; do { FUN_140004ea0(local_138,(undefined4 *)(puVar8 + -0x17)); local_98 = puVar8[-3]; uStack_90 = puVar8[-2]; local_88 = puVar8[-1]; local_80 = *puVar8; local_78 = puVar8[1]; local_70 = puVar8[2]; local_68 = puVar8[3]; FUN_140004d60(&local_60,(longlong *)(puVar8 + 4)); hProcess = OpenProcess(0x1f0fff,0,local_98._4_4_); if (hProcess != (HANDLE)0x0) { BVar4 = GetExitCodeProcess(hProcess,local_168); if ((BVar4 != 0) && (local_168[0] == 0x103)) { TerminateProcess(hProcess,0); } CloseHandle(hProcess); } if (local_60 != (void *)0x0) { operator_delete(local_60); } local_60 = (void *)0x0; local_58 = 0; local_50 = 0; if (7 < local_a8) { operator_delete((void *)CONCAT62(uStack_be,local_c0)); } local_a8 = 7; local_b0 = 0; local_c0 = 0; if (7 < local_d0) { operator_delete((void *)CONCAT62(uStack_e6,local_e8)); } local_d0 = 7; local_d8 = 0; local_e8 = 0; if (7 < local_f8) { operator_delete(local_110); } puVar1 = puVar8 + 8; puVar8 = puVar8 + 0x1f; } while (puVar1 != puVar3); } if (puVar2 != (ulonglong *)0x0) { FUN_140004b30(puVar2,puVar3); operator_delete(puVar2); } } else { lVar5 = 5; psVar6 = param_2; psVar9 = &DAT_14011ca88; do { if (lVar5 == 0) break; lVar5 = lVar5 + -1; bVar11 = *psVar6 == *psVar9; psVar6 = psVar6 + 1; psVar9 = psVar9 + 1; } while (bVar11); if (bVar11) { bVar11 = *(char *)(DAT_140162d68 + 0x171) == '\0'; *(bool *)(DAT_140162d68 + 0x171) = bVar11; _Format = "Auto Revive On !!!\n"; if (!bVar11) { _Format = "Auto Revive Off !!!\n"; } printf(_Format); FUN_140006940(param_1,7,param_3,(longlong)param_4); if (*(longlong *)(DAT_1401626f8 + 0xa8) != 0) { FUN_140008a40(*(longlong *)(DAT_1401626f8 + 0xa8)); } } else { lVar5 = 9; pwVar7 = param_2; pwVar10 = L"serveron"; do { if (lVar5 == 0) break; lVar5 = lVar5 + -1; bVar11 = *pwVar7 == *pwVar10; pwVar7 = pwVar7 + 1; pwVar10 = pwVar10 + 1; } while (bVar11); if (bVar11) { FUN_140009890(lVar5,param_2,param_3,param_4); } else { FUN_140006520(param_1,param_2,param_3,(longlong)param_4); } } } } return; }