/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400de250 FUN_1400de250 * Pseudocode, not original source. */ undefined8 FUN_1400de250(uint *param_1,uint *param_2,uint *param_3) { uint uVar1; int iVar2; int iVar3; uint uVar4; undefined8 uVar5; int *piVar6; uint uVar7; uint uVar8; int *piVar9; longlong lVar10; uint *puVar11; uint *puVar12; ulonglong uVar13; uint uVar14; uint *puVar15; uVar14 = *param_1; uVar4 = *param_2; puVar15 = param_2; uVar7 = uVar4; if ((int)uVar4 < (int)uVar14) { puVar15 = param_1; uVar7 = uVar14; uVar14 = uVar4; } uVar4 = uVar7 + 1; if (((int)uVar4 <= (int)param_3[1]) || (uVar5 = FUN_1400ddb60((longlong)param_3,uVar4), (int)uVar5 == 0)) { uVar1 = *param_3; puVar12 = *(uint **)(param_3 + 4); *param_3 = uVar4; piVar6 = *(int **)(param_1 + 4); piVar9 = *(int **)(param_2 + 4); uVar4 = 0; uVar8 = 0; if (0 < (int)uVar14) { uVar13 = (ulonglong)uVar14; puVar11 = puVar12; do { iVar2 = *piVar9; puVar12 = puVar11 + 1; piVar9 = piVar9 + 1; iVar3 = *piVar6; piVar6 = piVar6 + 1; uVar4 = iVar2 + iVar3 + uVar4; *puVar11 = uVar4 & 0xfffffff; uVar4 = uVar4 >> 0x1c; uVar13 = uVar13 - 1; puVar11 = puVar12; uVar8 = uVar14; } while (uVar13 != 0); } if (uVar14 != uVar7) { lVar10 = (longlong)(int)uVar8; while (lVar10 < (int)uVar7) { lVar10 = lVar10 + 1; uVar4 = uVar4 + *(int *)(*(longlong *)(puVar15 + 4) + -4 + lVar10 * 4); *puVar12 = uVar4; *puVar12 = *puVar12 & 0xfffffff; uVar4 = uVar4 >> 0x1c; puVar12 = puVar12 + 1; } } *puVar12 = uVar4; if ((int)*param_3 < (int)uVar1) { memset(puVar12 + 1,0,(ulonglong)(uVar1 - *param_3) << 2); } FUN_1400ddc00((int *)param_3); uVar5 = 0; } return uVar5; }