/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14020efb0 FUN_14020efb0 * Pseudocode, not original source. */ undefined8 FUN_14020efb0(int *param_1,uint *param_2,ulonglong param_3) { uint uVar1; int iVar2; undefined8 uVar3; ulonglong uVar4; uint *puVar5; uint *puVar6; uint uVar7; uint *puVar9; ulonglong uVar10; ulonglong uVar8; uVar1 = *param_2; if (((int)(uVar1 * 2) <= param_1[1]) || (uVar3 = FUN_140208db0(), (int)uVar3 == 0)) { while( true ) { puVar6 = *(uint **)(param_1 + 4); puVar9 = puVar6 + (int)uVar1; puVar5 = puVar6; uVar8 = 0; uVar10 = (ulonglong)uVar1; uVar7 = 0; if (0 < (int)uVar1) { do { uVar7 = *puVar9; puVar6 = puVar5 + 1; puVar9 = puVar9 + 1; uVar4 = (ulonglong)uVar7 * (param_3 & 0xffffffff) + (ulonglong)*puVar5 + (uVar8 & 0xffffffff); uVar8 = uVar4 >> 0x1c; uVar7 = (uint)uVar8; uVar10 = uVar10 - 1; *puVar5 = (uint)uVar4 & 0xfffffff; puVar5 = puVar6; } while (uVar10 != 0); } *puVar6 = uVar7; iVar2 = uVar1 + 1; if ((int)(uVar1 + 1) < *param_1) { do { puVar6 = puVar6 + 1; *puVar6 = 0; iVar2 = iVar2 + 1; } while (iVar2 < *param_1); } FUN_140208e50(param_1); iVar2 = FUN_140208fc0(param_1,param_2); if (iVar2 == -1) break; FUN_1402093a0(param_1,param_2,param_1); } uVar3 = 0; } return uVar3; }