/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400b9010 FUN_1400b9010 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ uint FUN_1400b9010(undefined1 *param_1,uint param_2,longlong param_3) { ulonglong uVar1; undefined8 uVar2; char *pcVar3; char *pcVar4; ulonglong _Size; undefined1 auStack_78 [32]; undefined1 local_58 [16]; ulonglong local_48; local_48 = DAT_14016f5a0 ^ (ulonglong)auStack_78; _Size = (ulonglong)param_2; if ((param_1 == (undefined1 *)0x0) || (param_3 == 0)) { param_2 = 0x10; } else { EnterCriticalSection((LPCRITICAL_SECTION)(param_3 + 0x1030)); *(int *)(param_3 + 0x1020) = *(int *)(param_3 + 0x1020) + 1; if (((*(int *)(param_3 + 0x1020) == 10) || (0x3f < *(uint *)(param_3 + 0x101c))) && (uVar1 = FUN_1400b8c00(param_3), (int)uVar1 != 0)) { LeaveCriticalSection((LPCRITICAL_SECTION)(param_3 + 0x1030)); param_2 = 0; } else { if (0xf < param_2) { uVar1 = (ulonglong)(param_2 >> 4); do { FUN_1400d7ed0((undefined1 *)(param_3 + 0x1008),param_1,(uint *)(param_3 + 0xe00)); param_1 = param_1 + 0x10; _Size = (ulonglong)((int)_Size - 0x10); pcVar3 = (char *)(param_3 + 0x1008); do { *pcVar3 = *pcVar3 + '\x01'; if (*pcVar3 != '\0') break; pcVar3 = pcVar3 + 1; } while ((longlong)pcVar3 - (param_3 + 0x1008) < 0x10); uVar1 = uVar1 - 1; } while (uVar1 != 0); } if ((int)_Size != 0) { pcVar3 = (char *)(param_3 + 0x1008); FUN_1400d7ed0(pcVar3,local_58,(uint *)(param_3 + 0xe00)); memcpy(param_1,local_58,_Size); pcVar4 = pcVar3; do { *pcVar4 = *pcVar4 + '\x01'; if (*pcVar4 != '\0') break; pcVar4 = pcVar4 + 1; } while ((longlong)pcVar4 - (longlong)pcVar3 < 0x10); } pcVar3 = (char *)(param_3 + 0x1008); FUN_1400d7ed0(pcVar3,(undefined1 *)(param_3 + 0xfe8),(uint *)(param_3 + 0xe00)); pcVar4 = pcVar3; do { *pcVar4 = *pcVar4 + '\x01'; if (*pcVar4 != '\0') break; pcVar4 = pcVar4 + 1; } while ((longlong)pcVar4 - (longlong)pcVar3 < 0x10); FUN_1400d7ed0(pcVar3,(undefined1 *)(param_3 + 0xff8),(uint *)(param_3 + 0xe00)); pcVar4 = pcVar3; do { *pcVar4 = *pcVar4 + '\x01'; if (*pcVar4 != '\0') break; pcVar4 = pcVar4 + 1; } while ((longlong)pcVar4 - (longlong)pcVar3 < 0x10); uVar2 = FUN_1400d7730((undefined1 *)(param_3 + 0xfe8),0x20,0,(uint *)(param_3 + 0xe00)); if ((int)uVar2 == 0) { LeaveCriticalSection((LPCRITICAL_SECTION)(param_3 + 0x1030)); } else { LeaveCriticalSection((LPCRITICAL_SECTION)(param_3 + 0x1030)); param_2 = 0; } } } return param_2; }