381 lines
9.2 KiB
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;
|
|
}
|
|
|