241 lines
7.1 KiB
C
241 lines
7.1 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401d6d60 FUN_1401d6d60
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0001401d716c) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401d717b) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401d7180) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401d71be) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401d7190) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401d71af) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401d71a1) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401d71b7) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401d71bc) */
|
|
|
|
undefined8 FUN_1401d6d60(undefined8 *param_1,LPCWSTR param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
undefined8 *puVar2;
|
|
undefined8 *puVar3;
|
|
undefined8 *puVar4;
|
|
undefined8 *puVar5;
|
|
int iVar6;
|
|
DWORD DVar7;
|
|
BOOL BVar8;
|
|
longlong lVar9;
|
|
undefined8 *puVar10;
|
|
undefined8 uVar11;
|
|
HANDLE hFile;
|
|
undefined8 uVar12;
|
|
undefined *puVar13;
|
|
undefined8 *puVar14;
|
|
undefined8 *puVar15;
|
|
undefined *puVar16;
|
|
undefined *puVar17;
|
|
HANDLE pvVar18;
|
|
undefined8 *local_res8;
|
|
LPCWSTR local_res10;
|
|
undefined2 local_res18 [4];
|
|
undefined8 *local_res20;
|
|
undefined *local_118;
|
|
undefined8 *local_110;
|
|
undefined8 *local_108;
|
|
undefined8 *local_100;
|
|
undefined8 *local_f8;
|
|
HANDLE local_f0;
|
|
undefined8 local_e8;
|
|
undefined8 local_e0;
|
|
undefined1 local_d8;
|
|
undefined8 local_d0;
|
|
undefined8 local_c8;
|
|
longlong local_c0;
|
|
undefined *local_b8;
|
|
undefined4 local_b0;
|
|
undefined8 local_a8;
|
|
undefined8 local_a0;
|
|
undefined1 local_98;
|
|
undefined8 local_90;
|
|
undefined1 local_88;
|
|
undefined8 local_80;
|
|
undefined8 local_78;
|
|
undefined1 local_70;
|
|
undefined *local_68 [5];
|
|
|
|
local_80 = 0xfffffffffffffffe;
|
|
local_res8 = param_1;
|
|
local_res10 = param_2;
|
|
local_e0 = (**(code **)(param_1[-0xe] + 0x58))();
|
|
FUN_14016db50(local_e0);
|
|
puVar4 = local_res8;
|
|
local_d8 = 1;
|
|
puVar14 = (undefined8 *)0x0;
|
|
local_110 = (undefined8 *)0x0;
|
|
local_f8 = (undefined8 *)0x0;
|
|
local_108 = (undefined8 *)0x0;
|
|
local_100 = (undefined8 *)0x0;
|
|
lVar9 = param_1[0x2eb];
|
|
puVar2 = puVar14;
|
|
puVar3 = puVar14;
|
|
puVar10 = local_110;
|
|
while (local_110 = puVar10, lVar9 != 0) {
|
|
lVar9 = FUN_1401d3d60(param_1 + 0x2e8,local_68);
|
|
puVar10 = (undefined8 *)FUN_14016d940(0x28);
|
|
local_res8 = puVar10;
|
|
local_res20 = puVar10;
|
|
if (puVar10 != (undefined8 *)0x0) {
|
|
FUN_14016d8c0();
|
|
puVar10[2] = PTR_DAT_1403440a0;
|
|
FUN_14004e6d0(puVar10 + 2,lVar9);
|
|
*(undefined4 *)(puVar10 + 3) = *(undefined4 *)(lVar9 + 8);
|
|
puVar10[4] = *(undefined8 *)(lVar9 + 0x10);
|
|
}
|
|
puVar16 = local_68[0];
|
|
puVar10[1] = puVar2;
|
|
*puVar10 = 0;
|
|
puVar14 = (undefined8 *)((longlong)puVar14 + 1);
|
|
puVar15 = puVar10;
|
|
puVar5 = puVar10;
|
|
if (puVar2 != (undefined8 *)0x0) {
|
|
*puVar2 = puVar10;
|
|
puVar15 = puVar3;
|
|
puVar5 = local_108;
|
|
}
|
|
local_108 = puVar5;
|
|
local_100 = puVar10;
|
|
local_f8 = puVar14;
|
|
if (((local_68[0] != (undefined *)0x0) && (local_68[0] != PTR_DAT_1403440a0)) &&
|
|
(puVar13 = local_68[0] + -8, puVar13 != (undefined *)0x0)) {
|
|
uVar11 = FUN_14016d8c0();
|
|
local_90 = uVar11;
|
|
FUN_14016db50(uVar11);
|
|
local_88 = 1;
|
|
piVar1 = (int *)(puVar16 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(puVar13);
|
|
}
|
|
FUN_14016dbe0(uVar11);
|
|
local_88 = 0;
|
|
}
|
|
puVar2 = puVar10;
|
|
puVar3 = puVar15;
|
|
param_1 = puVar4;
|
|
puVar10 = local_110;
|
|
lVar9 = puVar4[0x2eb];
|
|
}
|
|
FUN_14016dbe0(local_e0);
|
|
local_d8 = 0;
|
|
local_f0 = (HANDLE)0x0;
|
|
local_e8 = 0;
|
|
hFile = CreateFileW(local_res10,0x40000000,1,(LPSECURITY_ATTRIBUTES)0x0,2,0x80,(HANDLE)0x0);
|
|
pvVar18 = hFile;
|
|
if ((hFile == (HANDLE)0xffffffffffffffff) &&
|
|
(iVar6 = FUN_1401ad250(), hFile = (HANDLE)0x0, pvVar18 = local_f0, iVar6 < 0)) {
|
|
for (; puVar14 != (undefined8 *)0x0; puVar14 = (undefined8 *)((longlong)puVar14 + -1)) {
|
|
if (puVar3 == (undefined8 *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14004dc60(0x80004005);
|
|
}
|
|
puVar2 = (undefined8 *)*puVar3;
|
|
FUN_14004eb70(puVar3 + 2);
|
|
FUN_14016d970(puVar3);
|
|
puVar3 = puVar2;
|
|
}
|
|
uVar11 = 0;
|
|
}
|
|
else {
|
|
local_f0 = pvVar18;
|
|
local_d0 = 0;
|
|
DVar7 = SetFilePointer(hFile,0,(PLONG)((longlong)&local_d0 + 4),0);
|
|
if (DVar7 == 0xffffffff) {
|
|
FUN_1401ad250();
|
|
}
|
|
local_res18[0] = 0xfeff;
|
|
BVar8 = WriteFile(hFile,local_res18,2,(LPDWORD)&local_res8,(LPOVERLAPPED)0x0);
|
|
if (BVar8 == 0) {
|
|
FUN_1401ad250();
|
|
}
|
|
FUN_14016d8c0();
|
|
local_118 = PTR_DAT_1403440a0;
|
|
puVar16 = PTR_DAT_1403440a0;
|
|
while (puVar14 != (undefined8 *)0x0) {
|
|
FUN_1401d3d60(&local_110,&local_b8);
|
|
local_c8 = local_a8;
|
|
puVar14 = (undefined8 *)FUN_1401ad910(&local_c8,&local_c0,&DAT_140283898);
|
|
puVar16 = local_b8;
|
|
if (local_b8 == (undefined *)0x0) {
|
|
puVar16 = PTR_DAT_1403440a0;
|
|
}
|
|
uVar11 = *puVar14;
|
|
uVar12 = FUN_1401bbc90(local_b0);
|
|
FUN_14004c020(&local_118,L"[%s] [%s] %s\r\n",uVar12,uVar11,puVar16);
|
|
LOCK();
|
|
piVar1 = (int *)(local_c0 + -8);
|
|
iVar6 = *piVar1;
|
|
*piVar1 = *piVar1 + -1;
|
|
UNLOCK();
|
|
if (iVar6 + -1 < 1) {
|
|
(**(code **)(**(longlong **)(local_c0 + -0x18) + 8))();
|
|
}
|
|
hFile = local_f0;
|
|
puVar16 = local_118;
|
|
iVar6 = 0;
|
|
puVar13 = PTR_DAT_1403440a0;
|
|
if (local_118 != (undefined *)0x0) {
|
|
pvVar18 = (HANDLE)0x0;
|
|
if (local_118 != PTR_DAT_1403440a0) {
|
|
pvVar18 = (HANDLE)(ulonglong)*(uint *)(local_118 + -8);
|
|
}
|
|
iVar6 = (int)pvVar18;
|
|
puVar13 = local_118;
|
|
}
|
|
BVar8 = WriteFile(local_f0,puVar13,iVar6 * 2,(LPDWORD)&local_res20,(LPOVERLAPPED)0x0);
|
|
if (BVar8 == 0) {
|
|
FUN_1401ad250();
|
|
}
|
|
puVar13 = local_b8;
|
|
puVar10 = local_110;
|
|
puVar14 = local_f8;
|
|
if (((local_b8 != (undefined *)0x0) && (local_b8 != PTR_DAT_1403440a0)) &&
|
|
(puVar17 = local_b8 + -8, puVar17 != (undefined *)0x0)) {
|
|
uVar11 = FUN_14016d8c0();
|
|
local_a0 = uVar11;
|
|
FUN_14016db50(uVar11);
|
|
local_98 = 1;
|
|
piVar1 = (int *)(puVar13 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(puVar17);
|
|
}
|
|
FUN_14016dbe0(uVar11);
|
|
local_98 = 0;
|
|
puVar10 = local_110;
|
|
puVar14 = local_f8;
|
|
}
|
|
}
|
|
if (hFile != (HANDLE)0x0) {
|
|
CloseHandle(hFile);
|
|
local_f0 = (HANDLE)0x0;
|
|
}
|
|
if (((puVar16 != (undefined *)0x0) && (puVar16 != PTR_DAT_1403440a0)) &&
|
|
(puVar16 + -8 != (undefined *)0x0)) {
|
|
uVar11 = FUN_14016d8c0();
|
|
local_78 = uVar11;
|
|
FUN_14016db50(uVar11);
|
|
local_70 = 1;
|
|
piVar1 = (int *)(puVar16 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(puVar16 + -8);
|
|
}
|
|
FUN_14016dbe0(uVar11);
|
|
}
|
|
if (puVar10 != (undefined8 *)0x0) {
|
|
(**(code **)*puVar10)(puVar10,1);
|
|
}
|
|
uVar11 = 1;
|
|
}
|
|
return uVar11;
|
|
}
|
|
|