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

381 lines
9.2 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x14019a030 FUN_14019a030
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
bool FUN_14019a030(short *param_1,UUID *param_2)
{
short sVar1;
undefined1 *puVar2;
uint uVar3;
int iVar4;
uint uVar5;
uint uVar6;
RPC_STATUS RVar7;
uint *puVar8;
uint *puVar9;
char cVar10;
longlong lVar11;
short *psVar12;
uint *puVar13;
undefined1 auStack_f8 [32];
uint *local_d8;
undefined1 local_d0;
undefined8 local_c8;
undefined1 *local_b8;
undefined1 local_b0 [136];
ulonglong local_28;
local_c8 = 0xfffffffffffffffe;
local_28 = DAT_1403463c0 ^ (ulonglong)auStack_f8;
lVar11 = -1;
psVar12 = param_1;
do {
if (lVar11 == 0) break;
lVar11 = lVar11 + -1;
sVar1 = *psVar12;
psVar12 = psVar12 + 1;
} while (sVar1 != 0);
if (lVar11 == -2) {
param_2->Data1 = 0;
param_2->Data2 = 0;
param_2->Data3 = 0;
param_2->Data4[0] = '\0';
param_2->Data4[1] = '\0';
param_2->Data4[2] = '\0';
param_2->Data4[3] = '\0';
param_2->Data4[4] = '\0';
param_2->Data4[5] = '\0';
param_2->Data4[6] = '\0';
param_2->Data4[7] = '\0';
return false;
}
local_b8 = local_b0;
FUN_14016ac90(&local_b8,param_1,3);
puVar2 = local_b8;
FUN_14016d8c0();
puVar13 = (uint *)PTR_DAT_140344098;
local_d8 = (uint *)PTR_DAT_140344098;
uVar3 = FUN_14016d7e0(puVar2);
if (puVar13 == (uint *)0x0) {
iVar4 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
iVar4 = 0;
}
else {
iVar4 = *(int *)((longlong)puVar13 + -8);
}
uVar5 = uVar3;
if ((int)uVar3 <= iVar4) {
if (puVar13 == (uint *)0x0) {
uVar5 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar5 = 0;
}
else {
uVar5 = *(uint *)((longlong)puVar13 + -8);
}
}
uVar6 = 1;
if (1 < (int)uVar5) {
uVar6 = uVar5;
}
if (puVar13 == (uint *)0x0) {
iVar4 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
iVar4 = 0;
}
else {
iVar4 = *(int *)((longlong)puVar13 + -8);
}
if (iVar4 < (int)uVar6) {
if (puVar13 == (uint *)0x0) {
puVar13 = (uint *)PTR_DAT_140344098;
}
local_d8 = puVar13;
if ((int)uVar6 < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
if (uVar6 == 0) {
FUN_14004f5a0(&local_d8);
}
else {
if (puVar13 == (uint *)0x0) {
uVar5 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar5 = 0;
}
else {
uVar5 = puVar13[-2];
}
if (uVar6 != uVar5) {
puVar8 = (uint *)FUN_14016d940();
if (puVar8 != (uint *)0x0) {
*puVar8 = 0;
puVar8[1] = 1;
}
*puVar8 = uVar6;
if (puVar13 == (uint *)0x0) {
uVar5 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar5 = 0;
}
else {
uVar5 = puVar13[-2];
}
puVar9 = (uint *)PTR_DAT_140344098;
if ((int)uVar6 < (int)uVar5) {
LAB_14019a1d9:
if (puVar13 != (uint *)0x0) {
puVar9 = puVar13;
}
}
else {
if (puVar13 != (uint *)0x0) {
if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar6 = 0;
}
else {
uVar6 = puVar13[-2];
}
goto LAB_14019a1d9;
}
uVar6 = 0;
}
FUN_14016d810(puVar8 + 2,puVar9,uVar6);
FUN_14004f5a0(&local_d8);
local_d8 = puVar8 + 2;
}
}
}
FUN_14013c600(&local_d8);
puVar13 = local_d8;
puVar8 = local_d8;
if (local_d8 == (uint *)0x0) {
puVar8 = (uint *)PTR_DAT_140344098;
}
FUN_14016d810(puVar8,puVar2,uVar3);
uVar5 = FUN_14016d7e0();
uVar3 = 0;
if (0 < (int)uVar5) {
uVar3 = uVar5;
}
if (puVar13 == (uint *)0x0) {
uVar5 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar5 = 0;
}
else {
uVar5 = puVar13[-2];
}
if ((int)uVar5 <= (int)uVar3) {
if (puVar13 == (uint *)0x0) {
uVar3 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar3 = 0;
}
else {
uVar3 = puVar13[-2];
}
}
if (((puVar13 != (uint *)PTR_DAT_140344098) && (puVar13 != (uint *)0x0)) &&
(puVar13 = puVar13 + -2, puVar13 != (uint *)0x0)) {
*puVar13 = uVar3;
*(char *)((longlong)(int)uVar3 + 8 + (longlong)puVar13) = '\0';
}
if (local_b8 != local_b0) {
free(local_b8);
}
FUN_140199970(&local_d8,0x7b);
puVar13 = local_d8;
puVar8 = local_d8;
if (local_d8 == (uint *)0x0) {
puVar8 = (uint *)PTR_DAT_140344098;
}
puVar9 = (uint *)0x0;
cVar10 = (char)*puVar8;
if (cVar10 != '\0') {
do {
if (cVar10 == '}') {
if (puVar9 == (uint *)0x0) {
puVar9 = puVar8;
}
}
else {
puVar9 = (uint *)0x0;
}
puVar8 = (uint *)_mbsinc((uchar *)puVar8);
cVar10 = (char)*puVar8;
} while (cVar10 != '\0');
if (puVar9 != (uint *)0x0) {
iVar4 = (int)puVar13;
if (puVar13 == (uint *)0x0) {
iVar4 = (int)PTR_DAT_140344098;
}
uVar3 = (int)puVar9 - iVar4;
if (puVar13 == (uint *)0x0) {
uVar5 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar5 = 0;
}
else {
uVar5 = puVar13[-2];
}
uVar6 = uVar3;
if ((int)uVar3 <= (int)uVar5) {
if (puVar13 == (uint *)0x0) {
uVar6 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar6 = 0;
}
else {
uVar6 = puVar13[-2];
}
}
uVar5 = 1;
if (1 < (int)uVar6) {
uVar5 = uVar6;
}
if (puVar13 == (uint *)0x0) {
uVar6 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar6 = 0;
}
else {
uVar6 = puVar13[-2];
}
if ((int)uVar6 < (int)uVar5) {
if (puVar13 == (uint *)0x0) {
puVar13 = (uint *)PTR_DAT_140344098;
}
local_d8 = puVar13;
if ((int)uVar5 < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
if (uVar5 == 0) {
FUN_14004f5a0(&local_d8);
}
else {
if (puVar13 == (uint *)0x0) {
uVar6 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar6 = 0;
}
else {
uVar6 = puVar13[-2];
}
if (uVar5 != uVar6) {
puVar8 = (uint *)FUN_14016d940();
if (puVar8 != (uint *)0x0) {
*puVar8 = 0;
puVar8[1] = 1;
}
*puVar8 = uVar5;
if (puVar13 == (uint *)0x0) {
uVar6 = 0;
}
else if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar6 = 0;
}
else {
uVar6 = puVar13[-2];
}
puVar9 = (uint *)PTR_DAT_140344098;
if ((int)uVar5 < (int)uVar6) {
LAB_14019a3fe:
if (puVar13 != (uint *)0x0) {
puVar9 = puVar13;
}
}
else {
if (puVar13 != (uint *)0x0) {
if (puVar13 == (uint *)PTR_DAT_140344098) {
uVar5 = 0;
}
else {
uVar5 = puVar13[-2];
}
goto LAB_14019a3fe;
}
uVar5 = 0;
}
FUN_14016d810(puVar8 + 2,puVar9,uVar5);
FUN_14004f5a0(&local_d8);
local_d8 = puVar8 + 2;
}
}
}
FUN_14013c600(&local_d8);
uVar5 = 0;
if (0 < (int)uVar3) {
uVar5 = uVar3;
}
if (local_d8 == (uint *)0x0) {
uVar3 = 0;
}
else if (local_d8 == (uint *)PTR_DAT_140344098) {
uVar3 = 0;
}
else {
uVar3 = local_d8[-2];
}
if ((int)uVar3 <= (int)uVar5) {
if (local_d8 == (uint *)0x0) {
uVar5 = 0;
}
else if (local_d8 == (uint *)PTR_DAT_140344098) {
uVar5 = 0;
}
else {
uVar5 = local_d8[-2];
}
}
puVar13 = local_d8;
if (local_d8 != (uint *)PTR_DAT_140344098) {
puVar8 = (uint *)PTR_DAT_140344098;
if (local_d8 == (uint *)0x0) goto LAB_14019a4a2;
puVar8 = local_d8 + -2;
if (puVar8 != (uint *)0x0) {
*puVar8 = uVar5;
*(char *)((longlong)(int)uVar5 + 8 + (longlong)puVar8) = '\0';
}
}
}
}
puVar8 = (uint *)PTR_DAT_140344098;
if (puVar13 != (uint *)0x0) {
puVar8 = puVar13;
}
LAB_14019a4a2:
RVar7 = UuidFromStringA((RPC_CSTR)puVar8,param_2);
if (((puVar13 != (uint *)0x0) && (puVar13 != (uint *)PTR_DAT_140344098)) &&
(puVar13 + -2 != (uint *)0x0)) {
puVar9 = (uint *)FUN_14016d8c0();
local_d8 = puVar9;
FUN_14016db50(puVar9);
local_d0 = 1;
puVar8 = puVar13 + -1;
*puVar8 = *puVar8 - 1;
if (*puVar8 == 0) {
FUN_14016d970(puVar13 + -2);
}
FUN_14016dbe0(puVar9);
}
return RVar7 == 0;
}