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

163 lines
4.5 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401bd190 FUN_1401bd190
* Pseudocode, not original source. */
void FUN_1401bd190(int *param_1,undefined8 param_2)
{
int *piVar1;
undefined *puVar2;
char cVar3;
DWORD DVar4;
int iVar5;
int iVar6;
int *piVar7;
undefined8 uVar8;
LPCWSTR pWVar9;
LPCWSTR pWVar10;
int iVar11;
LPCWSTR local_res8;
piVar1 = param_1 + 0xc;
cVar3 = FUN_14016dbf0(piVar1);
if (cVar3 == '\0') {
return;
}
FUN_14016db50(piVar1);
puVar2 = *(undefined **)(param_1 + 2);
if ((((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_1403440a0)) &&
(*(int *)(puVar2 + -8) != 0)) ||
((*param_1 != 3 || (DVar4 = GetTickCount(), DVar4 - param_1[1] < 0x7531)))) goto LAB_1401bd451;
FUN_14004e6d0(param_1 + 2,param_2);
*param_1 = 0;
DVar4 = GetTickCount();
param_1[1] = DVar4;
FUN_14016d8c0();
pWVar10 = (LPCWSTR)PTR_DAT_1403440a0;
local_res8 = (LPCWSTR)PTR_DAT_1403440a0;
iVar5 = FUN_14016d740(L"**ErrorReport** ");
iVar11 = 0;
if ((pWVar10 != (LPCWSTR)0x0) && (pWVar10 != (LPCWSTR)PTR_DAT_1403440a0)) {
iVar11 = *(int *)((longlong)pWVar10 + -8);
}
iVar6 = iVar5;
if (iVar5 <= iVar11) {
iVar6 = 0;
if ((pWVar10 != (LPCWSTR)0x0) && (iVar6 = 0, pWVar10 != (LPCWSTR)PTR_DAT_1403440a0)) {
iVar6 = *(int *)((longlong)pWVar10 + -8);
}
}
iVar11 = 1;
if (1 < iVar6) {
iVar11 = iVar6;
}
iVar6 = 0;
if ((pWVar10 != (LPCWSTR)0x0) && (pWVar10 != (LPCWSTR)PTR_DAT_1403440a0)) {
iVar6 = *(int *)((longlong)pWVar10 + -8);
}
if (iVar6 < iVar11) {
if (pWVar10 == (LPCWSTR)0x0) {
pWVar10 = (LPCWSTR)PTR_DAT_1403440a0;
}
local_res8 = pWVar10;
if (iVar11 < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
if (iVar11 == 0) {
FUN_14004eb70(&local_res8);
}
else {
iVar6 = 0;
if ((pWVar10 != (LPCWSTR)0x0) && (iVar6 = 0, pWVar10 != (LPCWSTR)PTR_DAT_1403440a0)) {
iVar6 = *(int *)(pWVar10 + -4);
}
if (iVar11 != iVar6) {
piVar7 = (int *)FUN_14016d940((longlong)iVar11 * 2 + 10);
if (piVar7 != (int *)0x0) {
*piVar7 = 0;
piVar7[1] = 1;
}
*piVar7 = iVar11;
iVar6 = 0;
if ((pWVar10 != (LPCWSTR)0x0) && (iVar6 = 0, pWVar10 != (LPCWSTR)PTR_DAT_1403440a0)) {
iVar6 = *(int *)(pWVar10 + -4);
}
pWVar9 = (LPCWSTR)PTR_DAT_1403440a0;
if (iVar11 < iVar6) {
LAB_1401bd321:
if (pWVar10 != (LPCWSTR)0x0) {
pWVar9 = pWVar10;
}
}
else {
iVar11 = 0;
if (pWVar10 != (LPCWSTR)0x0) {
if (pWVar10 != (LPCWSTR)PTR_DAT_1403440a0) {
iVar11 = *(int *)(pWVar10 + -4);
}
goto LAB_1401bd321;
}
}
FUN_14016d770(piVar7 + 2,pWVar9,iVar11);
FUN_14004eb70(&local_res8);
local_res8 = (LPCWSTR)(piVar7 + 2);
}
}
}
FUN_14004e850(&local_res8);
pWVar10 = local_res8;
pWVar9 = local_res8;
if (local_res8 == (LPCWSTR)0x0) {
pWVar9 = (LPCWSTR)PTR_DAT_1403440a0;
}
FUN_14016d770(pWVar9,L"**ErrorReport** ",iVar5);
pWVar9 = pWVar10;
if (pWVar10 == (LPCWSTR)0x0) {
pWVar9 = (LPCWSTR)PTR_DAT_1403440a0;
}
iVar5 = FUN_14016d740(pWVar9);
iVar11 = 0;
if (0 < iVar5) {
iVar11 = iVar5;
}
iVar5 = 0;
if ((pWVar10 != (LPCWSTR)0x0) && (pWVar10 != (LPCWSTR)PTR_DAT_1403440a0)) {
iVar5 = *(int *)(pWVar10 + -4);
}
if ((iVar11 < iVar5) || (iVar11 = 0, pWVar10 == (LPCWSTR)0x0)) {
LAB_1401bd3b9:
if (((pWVar10 != (LPCWSTR)PTR_DAT_1403440a0) && (pWVar10 != (LPCWSTR)0x0)) &&
(pWVar10 + -4 != (LPCWSTR)0x0)) {
*(int *)(pWVar10 + -4) = iVar11;
pWVar10[iVar11] = L'\0';
}
}
else if (pWVar10 != (LPCWSTR)PTR_DAT_1403440a0) {
iVar11 = *(int *)(pWVar10 + -4);
goto LAB_1401bd3b9;
}
FUN_14004be20(&local_res8,param_2);
FUN_14004ea20(&local_res8,&DAT_1402b0a94);
pWVar10 = local_res8;
pWVar9 = local_res8;
if (local_res8 == (LPCWSTR)0x0) {
pWVar9 = (LPCWSTR)PTR_DAT_1403440a0;
}
OutputDebugStringW(pWVar9);
if (((pWVar10 != (LPCWSTR)0x0) && (pWVar10 != (LPCWSTR)PTR_DAT_1403440a0)) &&
(pWVar10 + -4 != (LPCWSTR)0x0)) {
uVar8 = FUN_14016d8c0();
FUN_14016db50(uVar8);
pWVar9 = pWVar10 + -2;
*(int *)pWVar9 = *(int *)pWVar9 + -1;
if (*(int *)pWVar9 == 0) {
FUN_14016d970(pWVar10 + -4);
}
FUN_14016dbe0(uVar8);
}
LAB_1401bd451:
FUN_14016dbe0(piVar1);
return;
}