112 lines
3 KiB
C
112 lines
3 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x14010af90 FUN_14010af90
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
undefined8 FUN_14010af90(int *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
longlong lVar2;
|
|
uint uVar3;
|
|
uint uVar4;
|
|
undefined8 uVar5;
|
|
int iVar6;
|
|
uint *puVar7;
|
|
uint *puVar8;
|
|
int iVar9;
|
|
ulonglong uVar10;
|
|
ulonglong uVar11;
|
|
ulonglong uVar12;
|
|
int iVar13;
|
|
longlong lVar14;
|
|
ulonglong uVar15;
|
|
ulonglong uVar16;
|
|
ulonglong uVar17;
|
|
uint uVar18;
|
|
undefined1 auStack_878 [32];
|
|
int *local_858;
|
|
uint auStack_84c [513];
|
|
ulonglong local_48;
|
|
|
|
local_48 = DAT_1401ac5a0 ^ (ulonglong)auStack_878;
|
|
uVar3 = *param_1 * 2;
|
|
local_858 = param_2;
|
|
if (((int)uVar3 <= param_2[1]) ||
|
|
(uVar5 = FUN_140109880((longlong)param_2,uVar3), (int)uVar5 == 0)) {
|
|
uVar12 = 0;
|
|
lVar14 = (longlong)(int)uVar3;
|
|
if (0 < lVar14) {
|
|
lVar2 = *(longlong *)(param_1 + 4);
|
|
iVar1 = *param_1;
|
|
uVar11 = uVar12;
|
|
uVar15 = uVar12;
|
|
uVar17 = uVar12;
|
|
do {
|
|
iVar6 = iVar1 + -1;
|
|
iVar13 = (int)uVar11;
|
|
iVar9 = iVar13;
|
|
if (iVar6 < iVar13) {
|
|
iVar9 = iVar6;
|
|
}
|
|
iVar6 = iVar13 - iVar9;
|
|
puVar8 = (uint *)(lVar2 + (longlong)iVar6 * 4);
|
|
puVar7 = (uint *)(lVar2 + (longlong)iVar9 * 4);
|
|
uVar4 = iVar1 - iVar6;
|
|
uVar18 = iVar9 + 1U;
|
|
if ((int)uVar4 < (int)(iVar9 + 1U)) {
|
|
uVar18 = uVar4;
|
|
}
|
|
uVar4 = (iVar9 - iVar6) + 1 >> 1;
|
|
if ((int)uVar4 <= (int)uVar18) {
|
|
uVar18 = uVar4;
|
|
}
|
|
uVar16 = uVar12;
|
|
if (0 < (int)uVar18) {
|
|
uVar10 = (ulonglong)uVar18;
|
|
do {
|
|
uVar18 = *puVar7;
|
|
uVar4 = *puVar8;
|
|
puVar7 = puVar7 + -1;
|
|
puVar8 = puVar8 + 1;
|
|
uVar16 = uVar16 + (ulonglong)uVar18 * (ulonglong)uVar4;
|
|
uVar10 = uVar10 - 1;
|
|
} while (uVar10 != 0);
|
|
}
|
|
uVar16 = uVar17 + uVar16 * 2;
|
|
if ((uVar11 & 1) == 0) {
|
|
uVar11 = (ulonglong)*(uint *)(lVar2 + ((longlong)iVar13 >> 1) * 4);
|
|
uVar16 = uVar16 + uVar11 * uVar11;
|
|
}
|
|
uVar15 = uVar15 + 1;
|
|
uVar11 = (ulonglong)(iVar13 + 1);
|
|
uVar17 = uVar16 >> 0x1c;
|
|
auStack_84c[uVar15] = (uint)uVar16 & 0xfffffff;
|
|
param_2 = local_858;
|
|
} while ((longlong)uVar15 < lVar14);
|
|
}
|
|
iVar1 = *param_2;
|
|
puVar8 = *(uint **)(param_2 + 4);
|
|
*param_2 = *param_1 * 2;
|
|
puVar7 = puVar8;
|
|
uVar18 = 0;
|
|
if (0 < lVar14) {
|
|
do {
|
|
lVar2 = uVar12 + 1;
|
|
uVar12 = uVar12 + 1;
|
|
puVar8 = puVar7 + 1;
|
|
*puVar7 = auStack_84c[lVar2] & 0xfffffff;
|
|
puVar7 = puVar8;
|
|
uVar18 = uVar3;
|
|
} while ((longlong)uVar12 < lVar14);
|
|
}
|
|
if ((int)uVar18 < iVar1) {
|
|
memset(puVar8,0,(ulonglong)(iVar1 - uVar18) << 2);
|
|
}
|
|
FUN_140109920(param_2);
|
|
uVar5 = 0;
|
|
}
|
|
return uVar5;
|
|
}
|
|
|