/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14001ad00 FUN_14001ad00 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_14001ad00(longlong param_1,int param_2,uint *param_3) { int *piVar1; LPCWSTR pWVar2; undefined8 uVar3; LPCWSTR pWVar4; int iVar5; longlong *plVar6; char *****pppppcVar7; longlong lVar8; uint uVar9; uint uVar10; ulonglong uVar11; uint uVar12; uint uVar13; uint uVar14; uint uVar15; undefined1 auStack_3a8 [32]; uint local_388; uint local_380; uint local_378; uint local_370; int local_368; LPCWSTR local_360; undefined8 local_358; int *local_350; undefined1 local_348; char ****local_340 [2]; char ***local_330; char ***local_328; undefined1 local_318; undefined7 uStack_317; undefined8 local_308; ulonglong local_300; undefined1 local_2f0 [6]; ushort local_2ea; undefined1 local_2e0 [8]; ushort local_2d8; undefined1 local_2d0 [2]; ushort local_2ce; undefined1 local_2c0 [12]; ushort local_2b4; undefined1 local_2b0 [10]; ushort local_2a6; ushort local_2a0 [8]; void *local_290 [3]; ulonglong local_278; undefined4 local_268; undefined4 local_264; char local_260 [520]; ulonglong local_58; local_358 = 0xfffffffffffffffe; local_58 = DAT_14016f5a0 ^ (ulonglong)auStack_3a8; local_368 = param_2; memset(local_260,0,0x200); local_268 = 0x208; local_264 = 0x4e26; local_328 = (char ***)0xf; local_330 = (char ***)0x0; local_340[0] = (char ****)((ulonglong)local_340[0] & 0xffffffffffffff00); plVar6 = FUN_140010200((longlong *)local_290,&DAT_140175048); pppppcVar7 = (char *****)FUN_1400102b0((undefined8 *)&local_318,plVar6); if (local_340 != pppppcVar7) { if ((char ****)0xf < local_328) { operator_delete(local_340[0]); } local_328 = (char ***)0xf; local_330 = (char ***)0x0; local_340[0] = (char ****)((ulonglong)local_340[0] & 0xffffffffffffff00); if (pppppcVar7[3] < (char ****)0x10) { memmove(local_340,pppppcVar7,(longlong)pppppcVar7[2] + 1); } else { local_340[0] = *pppppcVar7; *pppppcVar7 = (char ****)0x0; } local_330 = (char ***)pppppcVar7[2]; local_328 = (char ***)pppppcVar7[3]; pppppcVar7[3] = (char ****)0xf; pppppcVar7[2] = (char ****)0x0; *(undefined1 *)pppppcVar7 = 0; } if (0xf < local_300) { operator_delete((void *)CONCAT71(uStack_317,local_318)); } local_300 = 0xf; local_308 = 0; local_318 = 0; if (0xf < local_278) { operator_delete(local_290[0]); } FUN_14000c480((ulonglong *)local_340,"",0x11); FUN_14000f580((longlong *)local_340,(ulonglong)*param_3,"code"); FUN_14000f580((longlong *)local_340,(ulonglong)param_3[1],"processid"); FUN_14000f580((longlong *)local_340,(ulonglong)param_3[2],"type"); FUN_14000f580((longlong *)local_340,(ulonglong)param_3[3],"world"); FUN_14000f580((longlong *)local_340,(ulonglong)param_3[4],"version"); FUN_14000fa00((longlong *)local_340,(LPCWSTR)(param_3 + 8),"name"); uVar3 = *(undefined8 *)(param_3 + 6); lVar8 = (**(code **)(PTR_PTR_14016f508 + 0x18))(&PTR_PTR_14016f508); local_360 = (LPCWSTR)(lVar8 + 0x18); iVar5 = Ordinal_185(uVar3,local_2c0); uVar14 = 0xffffffff; uVar15 = (uint)local_2b4; if (iVar5 == 0) { uVar15 = uVar14; } iVar5 = Ordinal_185(uVar3,local_2b0); uVar13 = (uint)local_2a6; if (iVar5 == 0) { uVar13 = uVar14; } iVar5 = Ordinal_185(uVar3,local_2e0); uVar12 = (uint)local_2d8; if (iVar5 == 0) { uVar12 = uVar14; } iVar5 = Ordinal_185(uVar3,local_2f0); uVar10 = (uint)local_2ea; if (iVar5 == 0) { uVar10 = uVar14; } iVar5 = Ordinal_185(uVar3,local_2d0); uVar9 = (uint)local_2ce; if (iVar5 == 0) { uVar9 = uVar14; } iVar5 = Ordinal_185(uVar3,local_2a0); uVar11 = (ulonglong)local_2a0[0]; if (iVar5 == 0) { uVar11 = 0xffffffff; } local_388 = uVar10; local_380 = uVar12; local_378 = uVar13; local_370 = uVar15; FUN_14001c310((longlong *)&local_360,L"%d-%d-%d %d:%d:%d",uVar11,(ulonglong)uVar9); pWVar4 = local_360; FUN_14000fa00((longlong *)local_340,local_360,"starttime"); FUN_14000c480((ulonglong *)local_340,"",0x12); if (local_330 < (char ****)0x400) { pppppcVar7 = local_340; if ((char ****)0xf < local_328) { pppppcVar7 = (char *****)local_340[0]; } strncpy(local_260,(char *)pppppcVar7,(size_t)local_330); } else { printf("PWE_RESP_REGISTER_SERVER - Msg Size Full!\n"); } lVar8 = *(longlong *)(param_1 + 0x58); if (lVar8 != 0) { piVar1 = (int *)(lVar8 + 0x70); local_350 = piVar1; FUN_14003d040(piVar1); local_348 = 1; lVar8 = FUN_14003c450(lVar8,local_368); if (lVar8 != 0) { Ordinal_19(*(undefined8 *)(lVar8 + 8),&local_268,0x208,0); } FUN_14003d0d0((longlong)piVar1); } LOCK(); pWVar2 = pWVar4 + -4; iVar5 = *(int *)pWVar2; *(int *)pWVar2 = *(int *)pWVar2 + -1; UNLOCK(); if (iVar5 + -1 < 1) { (**(code **)(**(longlong **)(pWVar4 + -0xc) + 8))(); } if ((char ****)0xf < local_328) { operator_delete(local_340[0]); } return; }