102 lines
4.4 KiB
C
102 lines
4.4 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401e8eb0 FUN_1401e8eb0
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1401e8eb0(longlong param_1,int param_2,int param_3,uint param_4)
|
|
|
|
{
|
|
ushort uVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
byte *pbVar4;
|
|
ulonglong uVar5;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x1714);
|
|
uVar5 = (ulonglong)param_4;
|
|
if (iVar2 < 0xc) {
|
|
*(ushort *)(param_1 + 0x1710) =
|
|
*(ushort *)(param_1 + 0x1710) | (short)param_2 + -0x101 << ((byte)iVar2 & 0x1f);
|
|
iVar2 = iVar2 + 5;
|
|
}
|
|
else {
|
|
uVar1 = (short)param_2 - 0x101;
|
|
*(ushort *)(param_1 + 0x1710) = *(ushort *)(param_1 + 0x1710) | uVar1 << ((byte)iVar2 & 0x1f);
|
|
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
|
|
*(undefined1 *)(param_1 + 0x1710);
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
|
|
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
|
|
*(undefined1 *)(param_1 + 0x1711);
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
|
|
iVar2 = *(int *)(param_1 + 0x1714) + -0xb;
|
|
*(ushort *)(param_1 + 0x1710) = uVar1 >> (0x10U - (char)*(int *)(param_1 + 0x1714) & 0x1f);
|
|
}
|
|
*(int *)(param_1 + 0x1714) = iVar2;
|
|
if (iVar2 < 0xc) {
|
|
*(ushort *)(param_1 + 0x1710) =
|
|
*(ushort *)(param_1 + 0x1710) | (short)param_3 + -1 << ((byte)iVar2 & 0x1f);
|
|
iVar2 = iVar2 + 5;
|
|
}
|
|
else {
|
|
uVar1 = (short)param_3 - 1;
|
|
*(ushort *)(param_1 + 0x1710) = *(ushort *)(param_1 + 0x1710) | uVar1 << ((byte)iVar2 & 0x1f);
|
|
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
|
|
*(undefined1 *)(param_1 + 0x1710);
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
|
|
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
|
|
*(undefined1 *)(param_1 + 0x1711);
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
|
|
iVar2 = *(int *)(param_1 + 0x1714) + -0xb;
|
|
*(ushort *)(param_1 + 0x1710) = uVar1 >> (0x10U - (char)*(int *)(param_1 + 0x1714) & 0x1f);
|
|
}
|
|
*(int *)(param_1 + 0x1714) = iVar2;
|
|
if (iVar2 < 0xd) {
|
|
*(ushort *)(param_1 + 0x1710) =
|
|
*(ushort *)(param_1 + 0x1710) | (short)param_4 + -4 << ((byte)iVar2 & 0x1f);
|
|
iVar2 = iVar2 + 4;
|
|
}
|
|
else {
|
|
uVar1 = (short)param_4 - 4;
|
|
*(ushort *)(param_1 + 0x1710) = *(ushort *)(param_1 + 0x1710) | uVar1 << ((byte)iVar2 & 0x1f);
|
|
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
|
|
*(undefined1 *)(param_1 + 0x1710);
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
|
|
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
|
|
*(undefined1 *)(param_1 + 0x1711);
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
|
|
iVar2 = *(int *)(param_1 + 0x1714) + -0xc;
|
|
*(ushort *)(param_1 + 0x1710) = uVar1 >> (0x10U - (char)*(int *)(param_1 + 0x1714) & 0x1f);
|
|
}
|
|
*(int *)(param_1 + 0x1714) = iVar2;
|
|
if (0 < (int)param_4) {
|
|
pbVar4 = &DAT_1402924a0;
|
|
do {
|
|
iVar2 = *(int *)(param_1 + 0x1714);
|
|
if (iVar2 < 0xe) {
|
|
iVar3 = iVar2 + 3;
|
|
*(ushort *)(param_1 + 0x1710) =
|
|
*(ushort *)(param_1 + 0x1710) |
|
|
*(short *)(param_1 + 0xaa6 + (ulonglong)*pbVar4 * 4) << ((byte)iVar2 & 0x1f);
|
|
}
|
|
else {
|
|
uVar1 = *(ushort *)(param_1 + 0xaa6 + (ulonglong)*pbVar4 * 4);
|
|
*(ushort *)(param_1 + 0x1710) =
|
|
*(ushort *)(param_1 + 0x1710) | uVar1 << ((byte)iVar2 & 0x1f);
|
|
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
|
|
*(undefined1 *)(param_1 + 0x1710);
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
|
|
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
|
|
*(undefined1 *)(param_1 + 0x1711);
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
|
|
iVar3 = *(int *)(param_1 + 0x1714) + -0xd;
|
|
*(ushort *)(param_1 + 0x1710) = uVar1 >> (0x10U - (char)*(int *)(param_1 + 0x1714) & 0x1f);
|
|
}
|
|
pbVar4 = pbVar4 + 1;
|
|
uVar5 = uVar5 - 1;
|
|
*(int *)(param_1 + 0x1714) = iVar3;
|
|
} while (uVar5 != 0);
|
|
}
|
|
FUN_1401e8940(param_1,param_1 + 0xbc,param_2 + -1);
|
|
FUN_1401e8940(param_1,param_1 + 0x9b0,param_3 + -1);
|
|
return;
|
|
}
|
|
|