/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14006e9e0 FUN_14006e9e0 * Pseudocode, not original source. */ void FUN_14006e9e0(int *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4) { int *piVar1; bool bVar2; DWORD DVar3; uint uVar4; int iVar5; uint uVar6; uint *puVar7; int *piVar8; longlong *plVar9; LPCWSTR pWVar10; longlong *plVar11; ulonglong uVar12; undefined *puVar13; LPCWSTR pWVar14; uint uVar15; LPCWSTR local_res8; piVar1 = param_1 + 0xc; bVar2 = FUN_14006b3f0(piVar1); if (!bVar2) { return; } FUN_14006b350(piVar1); puVar13 = *(undefined **)(param_1 + 2); if ((((puVar13 != (undefined *)0x0) && (puVar13 != PTR_DAT_1401ac010)) && (*(int *)(puVar13 + -8) != 0)) || ((*param_1 != 3 || (DVar3 = GetTickCount(), DVar3 - param_1[1] < 0x7531)))) goto LAB_14006eca1; plVar9 = (longlong *)(param_1 + 2); plVar11 = param_2; FUN_140003110(plVar9,param_2,param_3,param_4); *param_1 = 0; DVar3 = GetTickCount(); param_1[1] = DVar3; FUN_14006cb70(plVar9,plVar11,param_3,param_4); pWVar14 = (LPCWSTR)PTR_DAT_1401ac010; local_res8 = (LPCWSTR)PTR_DAT_1401ac010; uVar4 = FUN_14006c9f0(L"**ErrorReport** "); uVar12 = 0; if ((pWVar14 != (LPCWSTR)0x0) && (pWVar14 != (LPCWSTR)PTR_DAT_1401ac010)) { uVar12 = (ulonglong)*(uint *)((longlong)pWVar14 + -8); } uVar6 = uVar4; if ((((int)uVar4 <= (int)uVar12) && (uVar6 = 0, pWVar14 != (LPCWSTR)0x0)) && (pWVar14 != (LPCWSTR)PTR_DAT_1401ac010)) { uVar6 = *(uint *)((longlong)pWVar14 + -8); } uVar15 = 1; if (1 < (int)uVar6) { uVar15 = uVar6; } iVar5 = 0; if ((pWVar14 != (LPCWSTR)0x0) && (pWVar14 != (LPCWSTR)PTR_DAT_1401ac010)) { iVar5 = *(int *)((longlong)pWVar14 + -8); } if (iVar5 < (int)uVar15) { if (pWVar14 == (LPCWSTR)0x0) { pWVar14 = (LPCWSTR)PTR_DAT_1401ac010; } local_res8 = pWVar14; if ((int)uVar15 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } if (uVar15 == 0) { FUN_1400031e0((longlong *)&local_res8,uVar12,param_3,param_4); } else { uVar6 = 0; if ((pWVar14 != (LPCWSTR)0x0) && (uVar6 = 0, pWVar14 != (LPCWSTR)PTR_DAT_1401ac010)) { uVar6 = *(uint *)(pWVar14 + -4); } if (uVar15 != uVar6) { puVar7 = (uint *)FUN_14006cbf0((longlong)(int)uVar15 * 2 + 10); if (puVar7 != (uint *)0x0) { *puVar7 = 0; puVar7[1] = 1; } *puVar7 = uVar15; uVar6 = 0; if ((pWVar14 != (LPCWSTR)0x0) && (uVar6 = 0, pWVar14 != (LPCWSTR)PTR_DAT_1401ac010)) { uVar6 = *(uint *)(pWVar14 + -4); } pWVar10 = (LPCWSTR)PTR_DAT_1401ac010; if ((int)uVar15 < (int)uVar6) { LAB_14006eb71: if (pWVar14 != (LPCWSTR)0x0) { pWVar10 = pWVar14; } } else { uVar15 = 0; if (pWVar14 != (LPCWSTR)0x0) { if (pWVar14 != (LPCWSTR)PTR_DAT_1401ac010) { uVar15 = *(uint *)(pWVar14 + -4); } goto LAB_14006eb71; } } uVar12 = (ulonglong)uVar15; FUN_14006ca20(puVar7 + 2,pWVar10,uVar15); FUN_1400031e0((longlong *)&local_res8,pWVar10,uVar12,param_4); local_res8 = (LPCWSTR)(puVar7 + 2); } } } FUN_140002e40((longlong *)&local_res8); pWVar14 = local_res8; pWVar10 = local_res8; if (local_res8 == (LPCWSTR)0x0) { pWVar10 = (LPCWSTR)PTR_DAT_1401ac010; } uVar12 = (ulonglong)uVar4; FUN_14006ca20(pWVar10,L"**ErrorReport** ",uVar4); pWVar10 = pWVar14; if (pWVar14 == (LPCWSTR)0x0) { pWVar10 = (LPCWSTR)PTR_DAT_1401ac010; } uVar6 = FUN_14006c9f0(pWVar10); uVar4 = 0; if (0 < (int)uVar6) { uVar4 = uVar6; } uVar6 = 0; if ((pWVar14 != (LPCWSTR)0x0) && (pWVar14 != (LPCWSTR)PTR_DAT_1401ac010)) { uVar6 = *(uint *)(pWVar14 + -4); } if (((int)uVar4 < (int)uVar6) || (uVar4 = 0, pWVar14 == (LPCWSTR)0x0)) { LAB_14006ec09: if (((pWVar14 != (LPCWSTR)PTR_DAT_1401ac010) && (pWVar14 != (LPCWSTR)0x0)) && (pWVar14 + -4 != (LPCWSTR)0x0)) { *(uint *)(pWVar14 + -4) = uVar4; pWVar14[(int)uVar4] = L'\0'; } } else if (pWVar14 != (LPCWSTR)PTR_DAT_1401ac010) { uVar4 = *(uint *)(pWVar14 + -4); goto LAB_14006ec09; } FUN_140053b20((longlong *)&local_res8,param_2); puVar13 = &DAT_1401595e0; FUN_1400141f0((longlong *)&local_res8,(short *)&DAT_1401595e0); pWVar14 = local_res8; pWVar10 = local_res8; if (local_res8 == (LPCWSTR)0x0) { pWVar10 = (LPCWSTR)PTR_DAT_1401ac010; } OutputDebugStringW(pWVar10); if (((pWVar14 != (LPCWSTR)0x0) && (pWVar14 != (LPCWSTR)PTR_DAT_1401ac010)) && (pWVar14 + -4 != (LPCWSTR)0x0)) { piVar8 = (int *)FUN_14006cb70(pWVar10,puVar13,uVar12,param_4); FUN_14006b350(piVar8); pWVar10 = pWVar14 + -2; *(uint *)pWVar10 = *(uint *)pWVar10 - 1; if (*(uint *)pWVar10 == 0) { FUN_14006cc60(pWVar14 + -4); } FUN_14006b3e0((longlong)piVar8); } LAB_14006eca1: FUN_14006b3e0((longlong)piVar1); return; }