/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400c7530 FUN_1400c7530 * Pseudocode, not original source. */ ulonglong FUN_1400c7530(int *param_1,uint param_2,int *param_3) { int iVar1; int iVar2; ulonglong uVar3; int iVar4; uint uVar5; uint *puVar6; uint *puVar7; int *piVar8; if ((param_3[1] < (int)(*param_1 + 1U)) && (uVar3 = FUN_1400cce50((longlong)param_3,*param_1 + 1U), (int)uVar3 != 0)) { return uVar3; } if ((param_1[2] == 1) && ((1 < *param_1 || (param_2 <= **(uint **)(param_1 + 4))))) { param_1[2] = 0; uVar3 = FUN_1400c76f0(param_1,param_2,param_3); param_3[2] = 1; param_1[2] = 1; FUN_1400ccef0(param_3); return uVar3 & 0xffffffff; } iVar1 = *param_3; puVar6 = *(uint **)(param_3 + 4); param_3[2] = 0; piVar8 = *(int **)(param_1 + 4); iVar4 = 1; if (param_1[2] == 0) { iVar2 = *piVar8; puVar7 = puVar6 + 1; *puVar6 = param_2 + iVar2 & 0xfffffff; uVar5 = param_2 + iVar2 >> 0x1c; puVar6 = puVar7; if (1 < *param_1) { do { piVar8 = piVar8 + 1; iVar2 = *piVar8; iVar4 = iVar4 + 1; puVar7 = puVar6 + 1; *puVar6 = uVar5 + iVar2 & 0xfffffff; uVar5 = uVar5 + iVar2 >> 0x1c; puVar6 = puVar7; } while (iVar4 < *param_1); } *puVar7 = uVar5; iVar4 = iVar4 + 1; *param_3 = *param_1 + 1; puVar6 = puVar7; } else { *param_3 = 1; if (*param_1 == 1) { param_2 = param_2 - **(int **)(param_1 + 4); } *puVar6 = param_2; } if (iVar4 < iVar1) { memset(puVar6 + 1,0,(ulonglong)(uint)(iVar1 - iVar4) << 2); } FUN_1400ccef0(param_3); return 0; }