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