/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401e8850 FUN_1401e8850 * Pseudocode, not original source. */ void FUN_1401e8850(longlong param_1,longlong param_2,int param_3) { short *psVar1; ushort uVar2; int iVar3; longlong lVar4; uint uVar5; uint uVar6; uint uVar7; int iVar8; int iVar9; ushort *puVar10; uVar2 = *(ushort *)(param_2 + 2); uVar5 = 0xffffffff; iVar9 = 0; iVar3 = 7; iVar8 = 4; if (uVar2 == 0) { iVar3 = 0x8a; iVar8 = 3; } lVar4 = (longlong)param_3; *(undefined2 *)(param_2 + 6 + lVar4 * 4) = 0xffff; if (-1 < lVar4) { puVar10 = (ushort *)(param_2 + 6); lVar4 = lVar4 + 1; uVar6 = (uint)uVar2; do { iVar9 = iVar9 + 1; uVar2 = *puVar10; uVar7 = (uint)uVar2; if ((iVar3 <= iVar9) || (uVar6 != uVar7)) { if (iVar9 < iVar8) { psVar1 = (short *)(param_1 + 0xaa4 + (longlong)(int)uVar6 * 4); *psVar1 = *psVar1 + (short)iVar9; } else if (uVar6 == 0) { if (iVar9 < 0xb) { *(short *)(param_1 + 0xae8) = *(short *)(param_1 + 0xae8) + 1; } else { *(short *)(param_1 + 0xaec) = *(short *)(param_1 + 0xaec) + 1; } } else { if (uVar6 != uVar5) { psVar1 = (short *)(param_1 + 0xaa4 + (longlong)(int)uVar6 * 4); *psVar1 = *psVar1 + 1; } *(short *)(param_1 + 0xae4) = *(short *)(param_1 + 0xae4) + 1; } iVar9 = 0; uVar5 = uVar6; if (uVar2 == 0) { iVar3 = 0x8a; iVar8 = 3; iVar9 = 0; } else if (uVar6 == uVar7) { iVar3 = 6; iVar8 = 3; iVar9 = 0; } else { iVar3 = 7; iVar8 = 4; } } puVar10 = puVar10 + 2; lVar4 = lVar4 + -1; uVar6 = uVar7; } while (lVar4 != 0); } return; }