server-re/decomp/DBCServer_Release_x64/full/functions/0x1401e9dc0.c

103 lines
3.5 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401e9dc0 FUN_1401e9dc0
* Pseudocode, not original source. */
void FUN_1401e9dc0(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_1401e8540(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_1401e8540(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);
FUN_1401e8540(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_1401e8630();
FUN_1401e9d10(lVar2,iVar7,param_1 + 0xb88);
return;
}