122 lines
3.8 KiB
C
122 lines
3.8 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400f8ff0 FUN_1400f8ff0
|
|
* Pseudocode, not original source. */
|
|
|
|
longlong * FUN_1400f8ff0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
DWORD DVar2;
|
|
ulonglong uVar3;
|
|
undefined8 *puVar4;
|
|
longlong lVar5;
|
|
longlong lVar6;
|
|
longlong *plVar7;
|
|
longlong *plVar8;
|
|
longlong **pplVar9;
|
|
longlong *plVar10;
|
|
int iVar11;
|
|
longlong *plVar12;
|
|
longlong *plVar13;
|
|
longlong lVar14;
|
|
longlong lVar15;
|
|
int iVar16;
|
|
longlong *local_res18;
|
|
|
|
uVar3 = FUN_140079250();
|
|
pplVar9 = (longlong **)(uVar3 & 0xffffffff);
|
|
plVar13 = (longlong *)CONCAT71((int7)((ulonglong)param_3 >> 8),1);
|
|
plVar7 = param_1;
|
|
FUN_14006b270((undefined4 *)param_1,(ulonglong)pplVar9,plVar13,param_4);
|
|
iVar16 = 0;
|
|
param_1[7] = 0;
|
|
param_1[8] = 0;
|
|
*(undefined4 *)(param_1 + 9) = 0;
|
|
plVar10 = param_1 + 10;
|
|
*plVar10 = (longlong)Proud::CFastArray<Proud::RefCount<Proud::Thread>,0>::vftable;
|
|
param_1[0xb] = 0;
|
|
param_1[0xc] = 0;
|
|
param_1[0xd] = 0;
|
|
param_1[0xe] = 0;
|
|
*(undefined1 *)(param_1 + 0x10) = 1;
|
|
DVar2 = FUN_14006c0c0();
|
|
if (0 < (int)DVar2) {
|
|
do {
|
|
puVar4 = (undefined8 *)0x0;
|
|
local_res18 = operator_new(0x28);
|
|
if (local_res18 != (longlong *)0x0) {
|
|
plVar13 = param_1;
|
|
puVar4 = FUN_140074090(local_res18,&LAB_1400f8d60,param_1);
|
|
}
|
|
if (puVar4 == (undefined8 *)0x0) {
|
|
local_res18 = (longlong *)0x0;
|
|
}
|
|
else {
|
|
local_res18 = (longlong *)FUN_14006cbf0(0x10);
|
|
local_res18[1] = 1;
|
|
*local_res18 = (longlong)puVar4;
|
|
}
|
|
plVar12 = local_res18;
|
|
iVar1 = (int)param_1[0xd];
|
|
if (iVar1 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
lVar14 = param_1[0xd];
|
|
FUN_1400c6490((longlong)plVar10,(int)lVar14 + 1,plVar13,param_4);
|
|
iVar11 = (int)lVar14 - iVar1;
|
|
if ((0 < iVar11) && (iVar11 = iVar11 + -1, -1 < iVar11)) {
|
|
lVar14 = (longlong)(iVar11 + iVar1 + 1) << 3;
|
|
lVar15 = (longlong)(iVar11 + iVar1) << 3;
|
|
do {
|
|
lVar5 = FUN_14007a110((longlong)plVar10);
|
|
lVar6 = FUN_14007a110((longlong)plVar10);
|
|
FUN_1400c2980((longlong *)(lVar14 + lVar6),(longlong *)(lVar15 + lVar5));
|
|
lVar15 = lVar15 + -8;
|
|
lVar14 = lVar14 + -8;
|
|
iVar11 = iVar11 + -1;
|
|
} while (-1 < iVar11);
|
|
}
|
|
lVar14 = FUN_14007a110((longlong)plVar10);
|
|
plVar7 = (longlong *)(lVar14 + (longlong)iVar1 * 8);
|
|
pplVar9 = &local_res18;
|
|
FUN_1400c2980(plVar7,(longlong *)pplVar9);
|
|
plVar8 = local_res18;
|
|
if (plVar12 != (longlong *)0x0) {
|
|
plVar12 = plVar12 + 1;
|
|
*plVar12 = *plVar12 + -1;
|
|
if (*plVar12 == 0) {
|
|
puVar4 = (undefined8 *)*local_res18;
|
|
if (puVar4 != (undefined8 *)0x0) {
|
|
FUN_1400741a0(puVar4);
|
|
operator_delete(puVar4);
|
|
}
|
|
FUN_14006cc60(plVar8);
|
|
plVar7 = plVar8;
|
|
}
|
|
}
|
|
iVar16 = iVar16 + 1;
|
|
} while (iVar16 < (int)DVar2);
|
|
}
|
|
plVar8 = (longlong *)0x0;
|
|
plVar10 = plVar8;
|
|
plVar12 = plVar8;
|
|
if (0 < (int)DVar2) {
|
|
do {
|
|
if (((longlong)plVar10 < 0) || ((int)param_1[0xd] <= (int)plVar12)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be30(plVar7,pplVar9,plVar13,param_4);
|
|
}
|
|
puVar4 = *(undefined8 **)(param_1[0xc] + (longlong)plVar10 * 8);
|
|
plVar7 = plVar8;
|
|
if (puVar4 != (undefined8 *)0x0) {
|
|
plVar7 = (longlong *)*puVar4;
|
|
}
|
|
FUN_140074290(plVar7,pplVar9,plVar13,param_4);
|
|
plVar12 = (longlong *)(ulonglong)((int)plVar12 + 1);
|
|
plVar10 = (longlong *)((longlong)plVar10 + 1);
|
|
} while ((longlong)plVar10 < (longlong)(int)DVar2);
|
|
}
|
|
return param_1;
|
|
}
|
|
|