104 lines
3.5 KiB
C
104 lines
3.5 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x140102ae0 FUN_140102ae0
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_140102ae0(longlong param_1,longlong *param_2)
|
|
|
|
{
|
|
byte bVar1;
|
|
longlong lVar2;
|
|
byte bVar3;
|
|
int iVar4;
|
|
longlong lVar5;
|
|
longlong lVar6;
|
|
int iVar7;
|
|
int iVar8;
|
|
int iVar9;
|
|
ulonglong uVar10;
|
|
|
|
lVar2 = *param_2;
|
|
iVar4 = *(int *)(param_2[2] + 0x14);
|
|
uVar10 = (ulonglong)iVar4;
|
|
lVar6 = *(longlong *)param_2[2];
|
|
iVar7 = -1;
|
|
*(undefined4 *)(param_1 + 0x149c) = 0;
|
|
*(undefined4 *)(param_1 + 0x14a0) = 0x23d;
|
|
iVar8 = 0;
|
|
lVar5 = 0;
|
|
if (0 < iVar4) {
|
|
do {
|
|
if (*(short *)(lVar2 + lVar5 * 4) == 0) {
|
|
*(undefined2 *)(lVar2 + 2 + lVar5 * 4) = 0;
|
|
}
|
|
else {
|
|
*(int *)(param_1 + 0x149c) = *(int *)(param_1 + 0x149c) + 1;
|
|
*(int *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x149c) * 4) = iVar8;
|
|
*(undefined1 *)(lVar5 + 0x14a4 + param_1) = 0;
|
|
iVar7 = iVar8;
|
|
}
|
|
lVar5 = lVar5 + 1;
|
|
iVar8 = iVar8 + 1;
|
|
} while (lVar5 < (longlong)uVar10);
|
|
}
|
|
iVar4 = *(int *)(param_1 + 0x149c);
|
|
while (iVar4 < 2) {
|
|
if (iVar7 < 2) {
|
|
iVar7 = iVar7 + 1;
|
|
iVar4 = iVar7;
|
|
}
|
|
else {
|
|
iVar4 = 0;
|
|
}
|
|
*(int *)(param_1 + 0x149c) = *(int *)(param_1 + 0x149c) + 1;
|
|
*(int *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x149c) * 4) = iVar4;
|
|
lVar5 = (longlong)iVar4;
|
|
*(undefined2 *)(lVar2 + lVar5 * 4) = 1;
|
|
*(undefined1 *)(lVar5 + 0x14a4 + param_1) = 0;
|
|
*(int *)(param_1 + 0x1700) = *(int *)(param_1 + 0x1700) + -1;
|
|
if (lVar6 != 0) {
|
|
*(int *)(param_1 + 0x1704) =
|
|
*(int *)(param_1 + 0x1704) - (uint)*(ushort *)(lVar6 + 2 + lVar5 * 4);
|
|
}
|
|
iVar4 = *(int *)(param_1 + 0x149c);
|
|
}
|
|
*(int *)(param_2 + 1) = iVar7;
|
|
for (iVar4 = *(int *)(param_1 + 0x149c) / 2; 0 < iVar4; iVar4 = iVar4 + -1) {
|
|
FUN_140101260(param_1,lVar2,iVar4);
|
|
}
|
|
do {
|
|
iVar4 = *(int *)(param_1 + 0xbac);
|
|
lVar5 = (longlong)iVar4;
|
|
*(undefined4 *)(param_1 + 0xbac) =
|
|
*(undefined4 *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x149c) * 4);
|
|
*(int *)(param_1 + 0x149c) = *(int *)(param_1 + 0x149c) + -1;
|
|
FUN_140101260(param_1,lVar2,1);
|
|
*(int *)(param_1 + 0x14a0) = *(int *)(param_1 + 0x14a0) + -1;
|
|
iVar8 = *(int *)(param_1 + 0xbac);
|
|
lVar6 = (longlong)iVar8;
|
|
iVar9 = (int)uVar10;
|
|
*(int *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x14a0) * 4) = iVar4;
|
|
*(int *)(param_1 + 0x14a0) = *(int *)(param_1 + 0x14a0) + -1;
|
|
*(int *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x14a0) * 4) = iVar8;
|
|
*(short *)(lVar2 + (longlong)iVar9 * 4) =
|
|
*(short *)(lVar2 + lVar6 * 4) + *(short *)(lVar2 + lVar5 * 4);
|
|
bVar3 = *(byte *)(lVar5 + 0x14a4 + param_1);
|
|
bVar1 = *(byte *)(lVar6 + 0x14a4 + param_1);
|
|
if (bVar3 < bVar1) {
|
|
bVar3 = bVar1;
|
|
}
|
|
*(byte *)((longlong)iVar9 + 0x14a4 + param_1) = bVar3 + 1;
|
|
*(short *)(lVar2 + 2 + lVar6 * 4) = (short)uVar10;
|
|
*(short *)(lVar2 + 2 + lVar5 * 4) = (short)uVar10;
|
|
*(int *)(param_1 + 0xbac) = iVar9;
|
|
uVar10 = (ulonglong)(iVar9 + 1);
|
|
lVar6 = param_1;
|
|
FUN_140101260(param_1,lVar2,1);
|
|
} while (1 < *(int *)(param_1 + 0x149c));
|
|
*(int *)(param_1 + 0x14a0) = *(int *)(param_1 + 0x14a0) + -1;
|
|
*(undefined4 *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x14a0) * 4) =
|
|
*(undefined4 *)(param_1 + 0xbac);
|
|
FUN_140101350(lVar6,param_2);
|
|
FUN_140102a30(lVar2,iVar7,param_1 + 0xb88);
|
|
return;
|
|
}
|
|
|