/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14001b0d0 FUN_14001b0d0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_14001b0d0(longlong param_1,int param_2,uint param_3,uint *param_4,undefined8 *param_5) { int *piVar1; LPCWSTR pWVar2; undefined8 uVar3; uint *puVar4; LPCWSTR pWVar5; int iVar6; longlong *plVar7; char *****pppppcVar8; longlong lVar9; uint uVar10; uint *puVar11; uint uVar12; ulonglong uVar13; uint uVar14; uint uVar15; uint uVar16; uint uVar17; undefined1 auStack_3b8 [32]; uint local_398; uint local_390; uint local_388; uint local_380; int local_378; LPCWSTR local_370; undefined8 local_368; int *local_360; undefined1 local_358; char ****local_350 [2]; char ***local_340; char ***local_338; undefined1 local_328; undefined7 uStack_327; undefined8 local_318; ulonglong local_310; undefined1 local_300 [6]; ushort local_2fa; undefined1 local_2f0 [8]; ushort local_2e8; undefined1 local_2e0 [2]; ushort local_2de; undefined1 local_2d0 [12]; ushort local_2c4; undefined1 local_2c0 [10]; ushort local_2b6; ushort local_2b0 [8]; void *local_2a0 [3]; ulonglong local_288; undefined4 local_278; undefined4 local_274; char local_270 [520]; ulonglong local_68; local_368 = 0xfffffffffffffffe; local_68 = DAT_14016f5a0 ^ (ulonglong)auStack_3b8; local_378 = param_2; memset(local_270,0,0x200); local_278 = 0x208; local_274 = 0x4e27; local_338 = (char ***)0xf; local_340 = (char ***)0x0; local_350[0] = (char ****)((ulonglong)local_350[0] & 0xffffffffffffff00); plVar7 = FUN_140010200((longlong *)local_2a0,&DAT_140175048); pppppcVar8 = (char *****)FUN_1400102b0((undefined8 *)&local_328,plVar7); if (local_350 != pppppcVar8) { if ((char ****)0xf < local_338) { operator_delete(local_350[0]); } local_338 = (char ***)0xf; local_340 = (char ***)0x0; local_350[0] = (char ****)((ulonglong)local_350[0] & 0xffffffffffffff00); if (pppppcVar8[3] < (char ****)0x10) { memmove(local_350,pppppcVar8,(longlong)pppppcVar8[2] + 1); } else { local_350[0] = *pppppcVar8; *pppppcVar8 = (char ****)0x0; } local_340 = (char ***)pppppcVar8[2]; local_338 = (char ***)pppppcVar8[3]; pppppcVar8[3] = (char ****)0xf; pppppcVar8[2] = (char ****)0x0; *(undefined1 *)pppppcVar8 = 0; } if (0xf < local_310) { operator_delete((void *)CONCAT71(uStack_327,local_328)); } local_310 = 0xf; local_318 = 0; local_328 = 0; if (0xf < local_288) { operator_delete(local_2a0[0]); } FUN_14000c480((ulonglong *)local_350,"",0x1d); FUN_14000f580((longlong *)local_350,(ulonglong)param_3,"code"); FUN_14000f580((longlong *)local_350,(ulonglong)*param_4,"usercount"); FUN_14000f580((longlong *)local_350,(ulonglong)param_4[1],"servercount"); FUN_14000f580((longlong *)local_350,(ulonglong)param_4[2],"frame"); FUN_14000f580((longlong *)local_350,(ulonglong)param_4[3],"performance"); FUN_14000f580((longlong *)local_350,(ulonglong)param_4[4],"state"); FUN_14000f580((longlong *)local_350,(ulonglong)param_4[5],"channel"); FUN_14000f580((longlong *)local_350,(ulonglong)(byte)param_4[6],"open"); FUN_14000f580((longlong *)local_350,(ulonglong)*(byte *)((longlong)param_4 + 0x19),"auto"); puVar4 = (uint *)param_5[1]; for (puVar11 = (uint *)*param_5; puVar11 != puVar4; puVar11 = puVar11 + 1) { FUN_14000f580((longlong *)local_350,(ulonglong)*puVar11,"event"); } uVar3 = *(undefined8 *)(param_4 + 8); lVar9 = (**(code **)(PTR_PTR_14016f508 + 0x18))(&PTR_PTR_14016f508); local_370 = (LPCWSTR)(lVar9 + 0x18); iVar6 = Ordinal_185(uVar3,local_2d0); uVar16 = 0xffffffff; uVar17 = (uint)local_2c4; if (iVar6 == 0) { uVar17 = uVar16; } iVar6 = Ordinal_185(uVar3,local_2c0); uVar15 = (uint)local_2b6; if (iVar6 == 0) { uVar15 = uVar16; } iVar6 = Ordinal_185(uVar3,local_2f0); uVar14 = (uint)local_2e8; if (iVar6 == 0) { uVar14 = uVar16; } iVar6 = Ordinal_185(uVar3,local_300); uVar12 = (uint)local_2fa; if (iVar6 == 0) { uVar12 = uVar16; } iVar6 = Ordinal_185(uVar3,local_2e0); uVar10 = (uint)local_2de; if (iVar6 == 0) { uVar10 = uVar16; } iVar6 = Ordinal_185(uVar3,local_2b0); uVar13 = (ulonglong)local_2b0[0]; if (iVar6 == 0) { uVar13 = 0xffffffff; } local_398 = uVar12; local_390 = uVar14; local_388 = uVar15; local_380 = uVar17; FUN_14001c310((longlong *)&local_370,L"%d-%d-%d %d:%d:%d",uVar13,(ulonglong)uVar10); pWVar5 = local_370; FUN_14000fa00((longlong *)local_350,local_370,"refreshtime"); FUN_14000c480((ulonglong *)local_350,"",0x1e); if (local_340 < (char ****)0x400) { pppppcVar8 = local_350; if ((char ****)0xf < local_338) { pppppcVar8 = (char *****)local_350[0]; } strncpy(local_270,(char *)pppppcVar8,(size_t)local_340); } else { printf("PWE_RESP_REGISTER_SERVER_OPTION - Msg Size Full!\n"); } lVar9 = *(longlong *)(param_1 + 0x58); if (lVar9 != 0) { piVar1 = (int *)(lVar9 + 0x70); local_360 = piVar1; FUN_14003d040(piVar1); local_358 = 1; lVar9 = FUN_14003c450(lVar9,local_378); if (lVar9 != 0) { Ordinal_19(*(undefined8 *)(lVar9 + 8),&local_278,0x208,0); } FUN_14003d0d0((longlong)piVar1); } LOCK(); pWVar2 = pWVar5 + -4; iVar6 = *(int *)pWVar2; *(int *)pWVar2 = *(int *)pWVar2 + -1; UNLOCK(); if (iVar6 + -1 < 1) { (**(code **)(**(longlong **)(pWVar5 + -0xc) + 8))(); } if ((char ****)0xf < local_338) { operator_delete(local_350[0]); } return; }