/* 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; }