decomp DBCServer_Release and inspect/document database
This commit is contained in:
parent
4b267cbe05
commit
7834b98bf0
28222 changed files with 843300 additions and 144 deletions
|
|
@ -0,0 +1,86 @@
|
|||
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
||||
* Ghidra 12.1.2 decompiler output for 0x1400feab0 FUN_1400feab0
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
uint FUN_1400feab0(longlong param_1,uint param_2)
|
||||
|
||||
{
|
||||
char *pcVar1;
|
||||
char *pcVar2;
|
||||
uint uVar3;
|
||||
longlong lVar4;
|
||||
char *pcVar5;
|
||||
uint uVar6;
|
||||
uint uVar7;
|
||||
char *pcVar8;
|
||||
char *pcVar9;
|
||||
int iVar10;
|
||||
uint uVar11;
|
||||
ulonglong uVar12;
|
||||
char cVar13;
|
||||
char cVar14;
|
||||
uint uVar15;
|
||||
|
||||
uVar7 = *(uint *)(param_1 + 0x94);
|
||||
uVar6 = *(uint *)(param_1 + 0xa4);
|
||||
lVar4 = *(longlong *)(param_1 + 0x50);
|
||||
uVar12 = (ulonglong)(int)*(uint *)(param_1 + 0xa0);
|
||||
pcVar2 = (char *)((ulonglong)uVar7 + lVar4);
|
||||
if (*(int *)(param_1 + 0x44) - 0x106U < uVar7) {
|
||||
uVar7 = (uVar7 - *(int *)(param_1 + 0x44)) + 0x106;
|
||||
}
|
||||
else {
|
||||
uVar7 = 0;
|
||||
}
|
||||
cVar13 = pcVar2[uVar12 - 1];
|
||||
cVar14 = pcVar2[uVar12];
|
||||
if (*(uint *)(param_1 + 0xb4) <= *(uint *)(param_1 + 0xa0)) {
|
||||
uVar6 = uVar6 >> 2;
|
||||
}
|
||||
uVar3 = *(uint *)(param_1 + 0x9c);
|
||||
uVar15 = *(uint *)(param_1 + 0xb8);
|
||||
if (uVar3 < *(uint *)(param_1 + 0xb8)) {
|
||||
uVar15 = uVar3;
|
||||
}
|
||||
do {
|
||||
iVar10 = (int)uVar12;
|
||||
pcVar5 = (char *)(lVar4 + (ulonglong)param_2);
|
||||
if ((((pcVar5[iVar10] == cVar14) && (pcVar5[(longlong)iVar10 + -1] == cVar13)) &&
|
||||
(*pcVar5 == *pcVar2)) && (pcVar5[1] == pcVar2[1])) {
|
||||
pcVar5 = pcVar5 + 2;
|
||||
pcVar8 = pcVar2 + 2;
|
||||
while (((((pcVar9 = pcVar8 + 1, *pcVar9 == pcVar5[1] &&
|
||||
(pcVar9 = pcVar8 + 2, *pcVar9 == pcVar5[2])) &&
|
||||
((pcVar9 = pcVar8 + 3, *pcVar9 == pcVar5[3] &&
|
||||
((pcVar9 = pcVar8 + 4, *pcVar9 == pcVar5[4] &&
|
||||
(pcVar9 = pcVar8 + 5, *pcVar9 == pcVar5[5])))))) &&
|
||||
(pcVar9 = pcVar8 + 6, *pcVar9 == pcVar5[6])) &&
|
||||
(pcVar9 = pcVar8 + 7, *pcVar9 == pcVar5[7]))) {
|
||||
pcVar1 = pcVar5 + 8;
|
||||
pcVar5 = pcVar5 + 8;
|
||||
pcVar9 = pcVar8 + 8;
|
||||
if ((*pcVar9 != *pcVar1) || (pcVar8 = pcVar9, pcVar2 + 0x102 <= pcVar9)) break;
|
||||
}
|
||||
uVar11 = ((int)pcVar9 - (int)(pcVar2 + 0x102)) + 0x102;
|
||||
if (iVar10 < (int)uVar11) {
|
||||
*(uint *)(param_1 + 0x98) = param_2;
|
||||
uVar12 = (ulonglong)uVar11;
|
||||
if ((int)uVar15 <= (int)uVar11) break;
|
||||
cVar13 = pcVar2[(longlong)(int)uVar11 + -1];
|
||||
cVar14 = pcVar2[(int)uVar11];
|
||||
}
|
||||
}
|
||||
uVar11 = (uint)uVar12;
|
||||
param_2 = (uint)*(ushort *)
|
||||
(*(longlong *)(param_1 + 0x60) +
|
||||
(ulonglong)(*(uint *)(param_1 + 0x4c) & param_2) * 2);
|
||||
if (param_2 <= uVar7) break;
|
||||
uVar6 = uVar6 - 1;
|
||||
lVar4 = *(longlong *)(param_1 + 0x50);
|
||||
} while (uVar6 != 0);
|
||||
if (uVar11 <= uVar3) {
|
||||
uVar3 = uVar11;
|
||||
}
|
||||
return uVar3;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue