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
229
decomp/DBCServer_Release_x64/full/functions/0x1401f4650.c
Normal file
229
decomp/DBCServer_Release_x64/full/functions/0x1401f4650.c
Normal file
|
|
@ -0,0 +1,229 @@
|
|||
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
||||
* Ghidra 12.1.2 decompiler output for 0x1401f4650 FUN_1401f4650
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
||||
|
||||
undefined8 FUN_1401f4650(longlong param_1,wchar_t *param_2)
|
||||
|
||||
{
|
||||
bool bVar1;
|
||||
bool bVar2;
|
||||
wchar_t *pwVar3;
|
||||
wchar_t wVar4;
|
||||
undefined2 uVar5;
|
||||
int iVar6;
|
||||
longlong lVar7;
|
||||
ulonglong uVar8;
|
||||
wchar_t *pwVar9;
|
||||
ulonglong uVar10;
|
||||
ulonglong uVar11;
|
||||
undefined1 auStack_188 [32];
|
||||
int local_168;
|
||||
int local_164;
|
||||
wchar_t *local_160;
|
||||
undefined8 local_158;
|
||||
wchar_t local_148 [136];
|
||||
ulonglong local_38;
|
||||
|
||||
local_158 = 0xfffffffffffffffe;
|
||||
local_38 = DAT_1403463c0 ^ (ulonglong)auStack_188;
|
||||
if (param_2 == (wchar_t *)0x0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14004dc60(0x80004005);
|
||||
}
|
||||
bVar2 = false;
|
||||
bVar1 = false;
|
||||
local_164 = 0;
|
||||
local_168 = 0;
|
||||
lVar7 = (**(code **)(PTR_PTR_140346350 + 0x18))(&PTR_PTR_140346350);
|
||||
local_160 = (wchar_t *)(lVar7 + 0x18);
|
||||
if ((int)(*(int *)(lVar7 + 0xc) - 0x82aU | 1U - *(int *)(lVar7 + 0x10)) < 0) {
|
||||
FUN_14016f480(&local_160,0x82a);
|
||||
}
|
||||
pwVar3 = local_160;
|
||||
uVar8 = 0;
|
||||
wVar4 = *param_2;
|
||||
pwVar9 = local_160;
|
||||
uVar11 = uVar8;
|
||||
if (wVar4 != L'\0') {
|
||||
LAB_1401f4712:
|
||||
uVar10 = 0;
|
||||
if (0x828 < uVar8) goto LAB_1401f4aac;
|
||||
if (wVar4 == L':') {
|
||||
if ((int)uVar11 == 0) {
|
||||
*pwVar9 = L'\0';
|
||||
if (bVar2) {
|
||||
if ((!bVar1) || (local_168 == 0)) {
|
||||
*pwVar9 = L'\0';
|
||||
pwVar9 = local_148;
|
||||
param_2 = param_2 + 1;
|
||||
wVar4 = *param_2;
|
||||
uVar8 = uVar10;
|
||||
while (((wVar4 != L'/' && (wVar4 != L'@')) && (wVar4 != L'\0'))) {
|
||||
if (0x7f < (int)uVar8) goto LAB_1401f4aac;
|
||||
*pwVar9 = wVar4;
|
||||
pwVar9 = pwVar9 + 1;
|
||||
uVar8 = (ulonglong)((int)uVar8 + 1);
|
||||
param_2 = param_2 + 1;
|
||||
wVar4 = *param_2;
|
||||
}
|
||||
*pwVar9 = L'\0';
|
||||
uVar8 = uVar10;
|
||||
if ((local_168 == 0) && ((wVar4 == L'/' || (wVar4 == L'\0')))) {
|
||||
iVar6 = FUN_1401f3b30(param_1,pwVar3);
|
||||
if (iVar6 == 0) goto LAB_1401f4aac;
|
||||
iVar6 = _wtoi(local_148);
|
||||
*(short *)(param_1 + 0x244c) = (short)iVar6;
|
||||
local_164 = 1;
|
||||
local_168 = 1;
|
||||
pwVar9 = pwVar3;
|
||||
}
|
||||
else {
|
||||
if ((bVar1) ||
|
||||
(((wVar4 != L'@' || (iVar6 = FUN_1401f3be0(param_1,pwVar3), iVar6 == 0)) ||
|
||||
(iVar6 = FUN_1401f3c90(param_1,local_148), iVar6 == 0)))) goto LAB_1401f4aac;
|
||||
bVar1 = true;
|
||||
param_2 = param_2 + 1;
|
||||
pwVar9 = pwVar3;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
iVar6 = FUN_1401f3ec0(param_1,pwVar3);
|
||||
if (iVar6 == 0) goto LAB_1401f4aac;
|
||||
bVar2 = true;
|
||||
pwVar9 = param_2;
|
||||
if (param_2[1] == L'/') {
|
||||
pwVar9 = param_2 + 2;
|
||||
if (*pwVar9 != L'/') {
|
||||
param_2 = param_2 + 1;
|
||||
uVar8 = 0;
|
||||
pwVar9 = pwVar3;
|
||||
goto LAB_1401f4990;
|
||||
}
|
||||
if (*(int *)(param_1 + 0x2450) == 6) goto LAB_1401f4aac;
|
||||
}
|
||||
uVar8 = 0;
|
||||
param_2 = pwVar9 + 1;
|
||||
pwVar9 = pwVar3;
|
||||
if (*(int *)(param_1 + 0x2450) == 4) goto LAB_1401f4990;
|
||||
}
|
||||
}
|
||||
else {
|
||||
LAB_1401f48e2:
|
||||
if (param_2[1] == L'\0') {
|
||||
LAB_1401f493c:
|
||||
if ((wVar4 != L'/') && (wVar4 != L'?')) {
|
||||
if (uVar8 < 0x828) {
|
||||
*pwVar9 = wVar4;
|
||||
pwVar9 = pwVar9 + 1;
|
||||
param_2 = param_2 + 1;
|
||||
goto LAB_1401f4960;
|
||||
}
|
||||
goto LAB_1401f4aac;
|
||||
}
|
||||
goto LAB_1401f4960;
|
||||
}
|
||||
if (wVar4 == L'[') {
|
||||
if ((bVar2) && (local_164 == 0)) {
|
||||
uVar11 = 1;
|
||||
}
|
||||
}
|
||||
else if (wVar4 == L']') {
|
||||
uVar11 = uVar10;
|
||||
}
|
||||
*pwVar9 = wVar4;
|
||||
param_2 = param_2 + 1;
|
||||
uVar8 = uVar8 + 1;
|
||||
pwVar9 = pwVar9 + 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (wVar4 != L'@') {
|
||||
if ((wVar4 != L'/') && (wVar4 != L'?')) goto LAB_1401f48e2;
|
||||
if (param_2[1] == L'\0') goto LAB_1401f493c;
|
||||
LAB_1401f4960:
|
||||
*pwVar9 = L'\0';
|
||||
if ((local_164 == 0) && (iVar6 = FUN_1401f3b30(param_1,pwVar3), iVar6 == 0))
|
||||
goto LAB_1401f4aac;
|
||||
uVar8 = 0;
|
||||
pwVar9 = pwVar3;
|
||||
goto LAB_1401f4987;
|
||||
}
|
||||
if (bVar1) goto LAB_1401f4aac;
|
||||
*pwVar9 = L'\0';
|
||||
iVar6 = FUN_1401f3be0(param_1,pwVar3);
|
||||
if (iVar6 == 0) goto LAB_1401f4aac;
|
||||
uVar11 = 0;
|
||||
bVar1 = true;
|
||||
param_2 = param_2 + 1;
|
||||
uVar8 = 0;
|
||||
pwVar9 = pwVar3;
|
||||
}
|
||||
wVar4 = *param_2;
|
||||
if (wVar4 == L'\0') goto LAB_1401f4987;
|
||||
goto LAB_1401f4712;
|
||||
}
|
||||
goto LAB_1401f4aac;
|
||||
LAB_1401f4987:
|
||||
if (bVar2) {
|
||||
LAB_1401f4990:
|
||||
wVar4 = *param_2;
|
||||
while (wVar4 != L'\0') {
|
||||
if (0x828 < uVar8) goto LAB_1401f4aac;
|
||||
if ((*(int *)(param_1 + 0x2450) != 4) && ((wVar4 == L'#' || (wVar4 == L'?')))) break;
|
||||
*pwVar9 = wVar4;
|
||||
pwVar9 = pwVar9 + 1;
|
||||
uVar8 = uVar8 + 1;
|
||||
param_2 = param_2 + 1;
|
||||
wVar4 = *param_2;
|
||||
}
|
||||
*pwVar9 = L'\0';
|
||||
if ((*pwVar3 == L'\0') || (iVar6 = FUN_1401bc810(param_1,pwVar3), iVar6 != 0)) {
|
||||
uVar8 = 0;
|
||||
wVar4 = *param_2;
|
||||
pwVar9 = pwVar3;
|
||||
while (wVar4 != L'\0') {
|
||||
param_2 = param_2 + 1;
|
||||
if (0x828 < uVar8) goto LAB_1401f4aac;
|
||||
*pwVar9 = wVar4;
|
||||
pwVar9 = pwVar9 + 1;
|
||||
uVar8 = uVar8 + 1;
|
||||
wVar4 = *param_2;
|
||||
}
|
||||
*pwVar9 = L'\0';
|
||||
if ((*pwVar3 == L'\0') || (iVar6 = FUN_1401f3d70(param_1,pwVar3), iVar6 != 0)) {
|
||||
iVar6 = *(int *)(param_1 + 0x2450);
|
||||
if ((iVar6 == 4) || ((iVar6 == 5 || (iVar6 == 6)))) {
|
||||
*(undefined2 *)(param_1 + 0x244c) = 0;
|
||||
}
|
||||
else if (local_168 == 0) {
|
||||
uVar5 = FUN_1401f3980();
|
||||
*(undefined2 *)(param_1 + 0x244c) = uVar5;
|
||||
}
|
||||
LOCK();
|
||||
pwVar9 = pwVar3 + -4;
|
||||
iVar6 = *(int *)pwVar9;
|
||||
*(int *)pwVar9 = *(int *)pwVar9 + -1;
|
||||
UNLOCK();
|
||||
if (iVar6 + -1 < 1) {
|
||||
(**(code **)(**(longlong **)(pwVar3 + -0xc) + 8))();
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
LAB_1401f4aac:
|
||||
FUN_1401bc8c0();
|
||||
LOCK();
|
||||
pwVar9 = pwVar3 + -4;
|
||||
iVar6 = *(int *)pwVar9;
|
||||
*(int *)pwVar9 = *(int *)pwVar9 + -1;
|
||||
UNLOCK();
|
||||
if (iVar6 + -1 < 1) {
|
||||
(**(code **)(**(longlong **)(pwVar3 + -0xc) + 8))();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue