/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400cd440 FUN_1400cd440 * Pseudocode, not original source. */ undefined8 FUN_1400cd440(uint *param_1,uint *param_2,uint *param_3) { uint uVar1; uint uVar2; uint uVar3; int iVar4; uint uVar5; undefined8 uVar6; uint *puVar7; uint *_Dst; ulonglong uVar8; uint uVar9; int *piVar10; longlong lVar11; int *piVar12; uVar1 = *param_1; uVar2 = *param_2; uVar8 = (ulonglong)uVar2; if (((int)uVar1 <= (int)param_3[1]) || (uVar6 = FUN_1400cce50((longlong)param_3,uVar1), (int)uVar6 == 0)) { uVar3 = *param_3; _Dst = *(uint **)(param_3 + 4); uVar5 = 0; *param_3 = uVar1; piVar10 = *(int **)(param_1 + 4); piVar12 = *(int **)(param_2 + 4); puVar7 = _Dst; uVar9 = 0; if (0 < (int)uVar2) { do { iVar4 = *piVar10; _Dst = puVar7 + 1; piVar10 = piVar10 + 1; uVar5 = (iVar4 - *piVar12) - uVar5; *puVar7 = uVar5 & 0xfffffff; uVar5 = uVar5 >> 0x1f; uVar8 = uVar8 - 1; puVar7 = _Dst; piVar12 = piVar12 + 1; uVar9 = uVar2; } while (uVar8 != 0); } if ((int)uVar9 < (int)uVar1) { lVar11 = (longlong)piVar10 - (longlong)_Dst; uVar8 = (ulonglong)(uVar1 - uVar9); puVar7 = _Dst; do { _Dst = puVar7 + 1; uVar5 = *(int *)(lVar11 + (longlong)puVar7) - uVar5; *puVar7 = uVar5; *puVar7 = *puVar7 & 0xfffffff; uVar5 = uVar5 >> 0x1f; uVar8 = uVar8 - 1; puVar7 = _Dst; } while (uVar8 != 0); } if ((int)*param_3 < (int)uVar3) { memset(_Dst,0,(ulonglong)(uVar3 - *param_3) << 2); } FUN_1400ccef0((int *)param_3); uVar6 = 0; } return uVar6; }