/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14003c950 FUN_14003c950 * Pseudocode, not original source. */ undefined8 FUN_14003c950(longlong *param_1,int *param_2) { ushort uVar1; int iVar2; undefined8 uVar3; int iVar4; int iVar5; EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 4)); iVar5 = *param_2; iVar4 = (int)param_1[1]; uVar1 = *(ushort *)((longlong)param_2 + 2); *(int *)(param_1 + 9) = iVar5; if (iVar4 - *(int *)((longlong)param_1 + 0x14) < iVar5) { LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4)); uVar3 = 0; } else { iVar2 = (int)param_1[2]; if (iVar4 < iVar2 + iVar5) { iVar4 = iVar4 - iVar2; *(int *)((longlong)param_1 + 0x4c) = iVar4; *(int *)(param_1 + 10) = iVar5 - iVar4; memcpy((void *)((longlong)iVar2 + *param_1),param_2,(longlong)iVar4); memcpy((void *)*param_1, (void *)((longlong)*(int *)((longlong)param_1 + 0x4c) + (longlong)param_2), (longlong)(int)param_1[10]); *(int *)(param_1 + 2) = (int)param_1[10]; } else { memcpy((void *)((longlong)iVar2 + *param_1),param_2,(longlong)iVar5); *(int *)(param_1 + 2) = (int)param_1[2] + (int)param_1[9]; iVar5 = (int)param_1[2]; if (iVar5 == (int)param_1[1]) { iVar5 = 0; } *(int *)(param_1 + 2) = iVar5; } *(int *)(param_1 + 3) = (int)param_1[3] + 1; iVar5 = (int)param_1[3]; *(int *)((longlong)param_1 + 0x14) = *(int *)((longlong)param_1 + 0x14) + (int)param_1[9]; if (uVar1 < 0x2329) { if (DAT_14017cea0 < iVar5) { DAT_14017cea0 = iVar5; } if (DAT_14017cea8 < *(int *)((longlong)param_1 + 0x14)) { DAT_14017cea8 = *(int *)((longlong)param_1 + 0x14); } } else { if (DAT_14017cea4 < iVar5) { DAT_14017cea4 = iVar5; } if (DAT_14017ceac < *(int *)((longlong)param_1 + 0x14)) { DAT_14017ceac = *(int *)((longlong)param_1 + 0x14); } } LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4)); uVar3 = 1; } return uVar3; }