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
121
decomp/MessageServer_Release_x64/full/functions/0x1400cb030.c
Normal file
121
decomp/MessageServer_Release_x64/full/functions/0x1400cb030.c
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
||||
* Ghidra 12.1.2 decompiler output for 0x1400cb030 FUN_1400cb030
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
int FUN_1400cb030(longlong *param_1,wchar_t *param_2,short *param_3)
|
||||
|
||||
{
|
||||
undefined *puVar1;
|
||||
rsize_t _DstSize;
|
||||
int iVar2;
|
||||
int iVar3;
|
||||
int iVar4;
|
||||
int iVar5;
|
||||
wchar_t *pwVar6;
|
||||
longlong lVar7;
|
||||
int iVar8;
|
||||
int iVar9;
|
||||
int iVar10;
|
||||
wchar_t *pwVar11;
|
||||
longlong lVar12;
|
||||
longlong lVar13;
|
||||
wchar_t *pwVar14;
|
||||
int local_58;
|
||||
|
||||
iVar2 = FUN_14006c9f0(param_2);
|
||||
if (iVar2 != 0) {
|
||||
iVar3 = FUN_14006c9f0(param_3);
|
||||
pwVar14 = (wchar_t *)*param_1;
|
||||
iVar4 = 0;
|
||||
local_58 = 0;
|
||||
iVar5 = iVar4;
|
||||
pwVar11 = (wchar_t *)PTR_DAT_1401ac010;
|
||||
if ((pwVar14 != (wchar_t *)0x0) && (pwVar11 = pwVar14, pwVar14 != (wchar_t *)PTR_DAT_1401ac010))
|
||||
{
|
||||
iVar5 = *(int *)(pwVar14 + -4);
|
||||
}
|
||||
pwVar14 = pwVar11 + iVar5;
|
||||
if (pwVar11 < pwVar14) {
|
||||
do {
|
||||
pwVar6 = wcsstr(pwVar11,param_2);
|
||||
while (pwVar6 != (wchar_t *)0x0) {
|
||||
pwVar11 = pwVar6 + iVar2;
|
||||
iVar4 = iVar4 + 1;
|
||||
pwVar6 = wcsstr(pwVar11,param_2);
|
||||
local_58 = iVar4;
|
||||
}
|
||||
iVar5 = FUN_14006c9f0(pwVar11);
|
||||
pwVar11 = pwVar11 + (iVar5 + 1);
|
||||
} while (pwVar11 < pwVar14);
|
||||
if (0 < iVar4) {
|
||||
puVar1 = (undefined *)*param_1;
|
||||
iVar5 = 0;
|
||||
if ((puVar1 != (undefined *)0x0) && (puVar1 != PTR_DAT_1401ac010)) {
|
||||
iVar5 = *(int *)(puVar1 + -8);
|
||||
}
|
||||
lVar12 = (longlong)iVar3;
|
||||
iVar9 = (iVar3 - iVar2) * iVar4 + iVar5;
|
||||
iVar8 = iVar5;
|
||||
if (iVar5 < iVar9) {
|
||||
iVar8 = iVar9;
|
||||
}
|
||||
iVar10 = 0;
|
||||
if ((puVar1 != (undefined *)0x0) && (iVar10 = 0, puVar1 != PTR_DAT_1401ac010)) {
|
||||
iVar10 = *(int *)(puVar1 + -8);
|
||||
}
|
||||
if (iVar8 <= iVar10) {
|
||||
iVar8 = 0;
|
||||
if ((puVar1 != (undefined *)0x0) && (iVar8 = 0, puVar1 != PTR_DAT_1401ac010)) {
|
||||
iVar8 = *(int *)(puVar1 + -8);
|
||||
}
|
||||
}
|
||||
iVar10 = 1;
|
||||
if (1 < iVar8) {
|
||||
iVar10 = iVar8;
|
||||
}
|
||||
if (puVar1 == (undefined *)0x0) {
|
||||
iVar8 = 0;
|
||||
}
|
||||
else if (puVar1 == PTR_DAT_1401ac010) {
|
||||
iVar8 = 0;
|
||||
}
|
||||
else {
|
||||
iVar8 = *(int *)(puVar1 + -8);
|
||||
}
|
||||
if (iVar8 < iVar10) {
|
||||
FUN_140002d60(param_1,iVar10);
|
||||
}
|
||||
FUN_140002e40(param_1);
|
||||
lVar7 = (longlong)iVar5;
|
||||
pwVar11 = (wchar_t *)*param_1;
|
||||
if ((wchar_t *)*param_1 == (wchar_t *)0x0) {
|
||||
pwVar11 = (wchar_t *)PTR_DAT_1401ac010;
|
||||
}
|
||||
pwVar14 = pwVar11;
|
||||
while (pwVar14 < pwVar11 + lVar7) {
|
||||
pwVar6 = wcsstr(pwVar14,param_2);
|
||||
if (pwVar6 != (wchar_t *)0x0) {
|
||||
do {
|
||||
pwVar14 = pwVar6 + lVar12;
|
||||
lVar13 = (longlong)
|
||||
((iVar5 - (int)((longlong)pwVar6 - (longlong)pwVar11 >> 1)) - iVar2);
|
||||
_DstSize = lVar13 * 2;
|
||||
memmove_s(pwVar14,_DstSize,pwVar6 + iVar2,_DstSize);
|
||||
memcpy_s(pwVar6,lVar12 * 2,param_3,lVar12 * 2);
|
||||
pwVar6[lVar12 + lVar13] = L'\0';
|
||||
iVar5 = iVar5 + (iVar3 - iVar2);
|
||||
pwVar6 = wcsstr(pwVar14,param_2);
|
||||
} while (pwVar6 != (wchar_t *)0x0);
|
||||
}
|
||||
iVar4 = FUN_14006c9f0(pwVar14);
|
||||
pwVar14 = pwVar14 + (iVar4 + 1);
|
||||
iVar4 = local_58;
|
||||
}
|
||||
FUN_140002fb0(param_1,iVar9);
|
||||
}
|
||||
}
|
||||
return iVar4;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue