/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400af630 FUN_1400af630 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1400af630(longlong param_1,undefined8 param_2,wchar_t *param_3,undefined8 param_4) { undefined *puVar1; longlong ****pppplVar2; uint uVar3; uint uVar4; uint *puVar5; int *piVar6; int *piVar7; __time64_t _Var8; longlong *****ppppplVar9; longlong *plVar10; int *piVar11; uint *puVar12; longlong *****ppppplVar13; uint uVar14; ulonglong uVar15; longlong ****pppplVar16; va_list _ArgList; uint uVar17; longlong *****ppppplVar18; undefined8 local_res20; undefined1 auStack_918 [32]; uint **local_8f8; uint *local_8e8; undefined4 local_8e0 [2]; longlong ****local_8d8; undefined1 local_8d0; int *local_8c0; undefined1 local_8b8; int *local_8b0; int *local_8a8; undefined1 local_8a0; uint *local_898; undefined4 local_890; __time64_t local_888; undefined8 local_880; wchar_t local_878 [1040]; ulonglong local_58; local_880 = 0xfffffffffffffffe; local_58 = DAT_1401ac5a0 ^ (ulonglong)auStack_918; local_8e0[0] = (undefined4)param_2; local_res20 = param_4; FUN_14006cb70(param_1,param_2,param_3,param_4); local_8e8 = (uint *)PTR_DAT_1401ac010; _ArgList = (va_list)&local_res20; if (param_3 == (wchar_t *)0x0) { /* WARNING: Subroutine does not return */ FUN_1400064e0(0x80070057); } uVar3 = vswprintf_s(local_878,0x400,param_3,_ArgList); ppppplVar18 = (longlong *****)0x0; uVar17 = 0; ppppplVar9 = ppppplVar18; if ((local_8e8 != (uint *)0x0) && (ppppplVar9 = (longlong *****)0x0, local_8e8 != (uint *)PTR_DAT_1401ac010)) { ppppplVar9 = (longlong *****)(ulonglong)local_8e8[-2]; } uVar4 = uVar3; if ((((int)uVar3 <= (int)ppppplVar9) && (uVar4 = uVar17, local_8e8 != (uint *)0x0)) && (local_8e8 != (uint *)PTR_DAT_1401ac010)) { uVar4 = local_8e8[-2]; } uVar14 = 1; if (1 < (int)uVar4) { uVar14 = uVar4; } uVar4 = uVar17; if ((local_8e8 != (uint *)0x0) && (local_8e8 != (uint *)PTR_DAT_1401ac010)) { uVar4 = local_8e8[-2]; } if ((int)uVar4 < (int)uVar14) { if (local_8e8 == (uint *)0x0) { local_8e8 = (uint *)PTR_DAT_1401ac010; } if ((int)uVar14 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } if (uVar14 == 0) { FUN_1400031e0((longlong *)&local_8e8,PTR_DAT_1401ac010,ppppplVar9,_ArgList); } else { uVar4 = uVar17; if ((local_8e8 != (uint *)0x0) && (local_8e8 != (uint *)PTR_DAT_1401ac010)) { uVar4 = local_8e8[-2]; } if (uVar14 != uVar4) { puVar5 = (uint *)FUN_14006cbf0((longlong)(int)uVar14 * 2 + 10); if (puVar5 != (uint *)0x0) { *puVar5 = 0; puVar5[1] = 1; } *puVar5 = uVar14; uVar4 = uVar17; if ((local_8e8 != (uint *)0x0) && (local_8e8 != (uint *)PTR_DAT_1401ac010)) { uVar4 = local_8e8[-2]; } puVar12 = (uint *)PTR_DAT_1401ac010; if ((int)uVar14 < (int)uVar4) { LAB_1400af796: if (local_8e8 != (uint *)0x0) { puVar12 = local_8e8; } } else { uVar14 = uVar17; if (local_8e8 != (uint *)0x0) { if (local_8e8 != (uint *)PTR_DAT_1401ac010) { uVar14 = local_8e8[-2]; } goto LAB_1400af796; } } uVar15 = (ulonglong)uVar14; FUN_14006ca20(puVar5 + 2,puVar12,uVar14); FUN_1400031e0((longlong *)&local_8e8,puVar12,uVar15,_ArgList); local_8e8 = puVar5 + 2; } } } FUN_140002e40((longlong *)&local_8e8); puVar5 = local_8e8; if (local_8e8 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_1401ac010; } pppplVar16 = (longlong ****)(ulonglong)uVar3; FUN_14006ca20(puVar5,local_878,uVar3); puVar5 = local_8e8; if (local_8e8 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_1401ac010; } uVar3 = FUN_14006c9f0((short *)puVar5); ppppplVar9 = ppppplVar18; if (0 < (int)uVar3) { ppppplVar9 = (longlong *****)(ulonglong)uVar3; } ppppplVar13 = ppppplVar18; if ((local_8e8 != (uint *)0x0) && (ppppplVar13 = (longlong *****)0x0, local_8e8 != (uint *)PTR_DAT_1401ac010)) { ppppplVar13 = (longlong *****)(ulonglong)local_8e8[-2]; } if (((int)ppppplVar13 <= (int)ppppplVar9) && (ppppplVar9 = ppppplVar18, local_8e8 != (uint *)0x0)) { if (local_8e8 == (uint *)PTR_DAT_1401ac010) goto LAB_1400af858; ppppplVar9 = (longlong *****)(ulonglong)local_8e8[-2]; } if (((local_8e8 != (uint *)PTR_DAT_1401ac010) && (local_8e8 != (uint *)0x0)) && (pppplVar16 = (longlong ****)(local_8e8 + -2), pppplVar16 != (longlong ****)0x0)) { *(uint *)pppplVar16 = (uint)ppppplVar9; *(undefined2 *)((longlong)local_8e8 + (longlong)(int)(uint)ppppplVar9 * 2) = 0; } LAB_1400af858: if (*(char *)(param_1 + 0x1790) != '\0') { ppppplVar9 = (longlong *****)(param_1 + 0x1818); local_8f8 = &local_8e8; _ArgList = (va_list)local_8e0; pppplVar16 = (longlong ****)&DAT_1401b6110; ppppplVar13 = (longlong *****)0x1; (*(code *)(*ppppplVar9)[0x16])(); } if (*(int *)(param_1 + 0x6c8) != 0) { plVar10 = (longlong *)(param_1 + 0x78); (**(code **)(*plVar10 + 0x10))(); FUN_14006cb70(plVar10,ppppplVar13,pppplVar16,_ArgList); puVar1 = PTR_DAT_1401ac010; local_890 = 2; local_898 = (uint *)PTR_DAT_1401ac010; puVar5 = (uint *)PTR_DAT_1401ac010; if (local_8e8 != (uint *)PTR_DAT_1401ac010) { piVar6 = (int *)FUN_14006cb70(plVar10,ppppplVar13,pppplVar16,_ArgList); piVar11 = piVar6; local_8a8 = piVar6; FUN_14006b350(piVar6); local_8a0 = 1; if (((puVar1 != (undefined *)0x0) && (puVar1 != PTR_DAT_1401ac010)) && (puVar1 + -8 != (undefined *)0x0)) { piVar7 = (int *)FUN_14006cb70(piVar11,ppppplVar13,pppplVar16,_ArgList); local_8c0 = piVar7; FUN_14006b350(piVar7); local_8b8 = 1; piVar11 = (int *)(puVar1 + -4); *piVar11 = *piVar11 + -1; if (*piVar11 == 0) { FUN_14006cc60(puVar1 + -8); } FUN_14006b3e0((longlong)piVar7); } puVar5 = local_8e8; local_898 = local_8e8; if (((local_8e8 != (uint *)PTR_DAT_1401ac010) && (local_8e8 != (uint *)0x0)) && (local_8e8 != (uint *)0x8)) { local_8e8[-1] = local_8e8[-1] + 1; } FUN_14006b3e0((longlong)piVar6); } _Var8 = _time64((__time64_t *)0x0); piVar11 = *(int **)(param_1 + 0x17c0); ppppplVar9 = *(longlong ******)(param_1 + 0x17b0); local_8c0 = piVar11; local_888 = _Var8; if (ppppplVar9 == (longlong *****)0x0) { ppppplVar9 = (longlong *****)0x28; piVar6 = (int *)FUN_14006cbf0(0x28); } else { pppplVar16 = *ppppplVar9; ppppplVar13 = (longlong *****)0x28; piVar6 = (int *)(*(code *)pppplVar16[1])(); } local_8b0 = piVar6; local_8a8 = piVar6; if (piVar6 != (int *)0x0) { FUN_14006cb70(ppppplVar9,ppppplVar13,pppplVar16,_ArgList); puVar1 = PTR_DAT_1401ac010; *(undefined **)(piVar6 + 4) = PTR_DAT_1401ac010; if (puVar1 == (undefined *)0x0) { *(undefined **)(piVar6 + 4) = PTR_DAT_1401ac010; } if (puVar5 != *(uint **)(piVar6 + 4)) { ppppplVar9 = (longlong *****)FUN_14006cb70(ppppplVar9,ppppplVar13,pppplVar16,_ArgList); local_8d8 = (longlong ****)ppppplVar9; FUN_14006b350((int *)ppppplVar9); local_8d0 = 1; FUN_1400031e0((longlong *)(piVar6 + 4),ppppplVar13,pppplVar16,_ArgList); *(uint **)(piVar6 + 4) = puVar5; if (((puVar5 != (uint *)PTR_DAT_1401ac010) && (puVar5 != (uint *)0x0)) && (puVar5 != (uint *)0x8)) { puVar5[-1] = puVar5[-1] + 1; } FUN_14006b3e0((longlong)ppppplVar9); piVar11 = local_8c0; } piVar6[6] = 2; *(__time64_t *)(piVar6 + 8) = _Var8; } *(int **)(piVar6 + 2) = piVar11; piVar6[0] = 0; piVar6[1] = 0; *(longlong *)(param_1 + 0x17c8) = *(longlong *)(param_1 + 0x17c8) + 1; if (*(undefined8 **)(param_1 + 0x17c0) == (undefined8 *)0x0) { *(int **)(param_1 + 0x17b8) = piVar6; } else { **(undefined8 **)(param_1 + 0x17c0) = piVar6; } *(int **)(param_1 + 0x17c0) = piVar6; if ((ulonglong)*(uint *)(param_1 + 0x6c8) < *(ulonglong *)(param_1 + 0x17c8)) { ppppplVar13 = &local_8d8; ppppplVar9 = (longlong *****)(param_1 + 0x17b0); FUN_1400ae1d0((longlong *)ppppplVar9,(longlong *)ppppplVar13,pppplVar16,_ArgList); pppplVar2 = local_8d8; if ((((longlong *****)local_8d8 != (longlong *****)0x0) && (local_8d8 != (longlong ****)PTR_DAT_1401ac010)) && (ppppplVar18 = (longlong *****)(local_8d8 + -1), ppppplVar18 != (longlong *****)0x0)) { ppppplVar9 = (longlong *****)FUN_14006cb70(ppppplVar9,ppppplVar13,pppplVar16,_ArgList); local_8d8 = (longlong ****)ppppplVar9; FUN_14006b350((int *)ppppplVar9); local_8d0 = 1; piVar11 = (int *)((longlong)pppplVar2 + -4); *piVar11 = *piVar11 + -1; if (*piVar11 == 0) { FUN_14006cc60(ppppplVar18); } FUN_14006b3e0((longlong)ppppplVar9); } } if (((puVar5 != (uint *)0x0) && (puVar5 != (uint *)PTR_DAT_1401ac010)) && (puVar5 + -2 != (uint *)0x0)) { ppppplVar9 = (longlong *****)FUN_14006cb70(ppppplVar9,ppppplVar13,pppplVar16,_ArgList); local_8d8 = (longlong ****)ppppplVar9; FUN_14006b350((int *)ppppplVar9); local_8d0 = 1; puVar12 = puVar5 + -1; *puVar12 = *puVar12 - 1; if (*puVar12 == 0) { FUN_14006cc60(puVar5 + -2); } FUN_14006b3e0((longlong)ppppplVar9); } } puVar5 = local_8e8; if (((local_8e8 != (uint *)0x0) && (local_8e8 != (uint *)PTR_DAT_1401ac010)) && (puVar12 = local_8e8 + -2, puVar12 != (uint *)0x0)) { pppplVar16 = (longlong ****)FUN_14006cb70(ppppplVar9,ppppplVar13,pppplVar16,_ArgList); local_8d8 = pppplVar16; FUN_14006b350((int *)pppplVar16); local_8d0 = 1; puVar5 = puVar5 + -1; *puVar5 = *puVar5 - 1; if (*puVar5 == 0) { FUN_14006cc60(puVar12); } FUN_14006b3e0((longlong)pppplVar16); } return; }