/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14001bbc0 FUN_14001bbc0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_14001bbc0(int *param_1,int param_2,longlong param_3,uint *param_4) { int *piVar1; LPCWSTR pWVar2; undefined8 uVar3; LPCWSTR pWVar4; int iVar5; longlong *plVar6; char *****pppppcVar7; longlong lVar8; char *pcVar9; uint uVar10; uint uVar11; ulonglong uVar12; uint uVar13; uint uVar14; uint uVar15; uint uVar16; undefined1 auStack_418 [32]; uint local_3f8; uint local_3f0; uint local_3e8; uint local_3e0; LPCWSTR local_3d8; int local_3d0; int *local_3c8; undefined1 local_3c0; undefined8 local_3b8; char ****local_3b0 [2]; char ***local_3a0; char ***local_398; undefined1 local_388; undefined7 uStack_387; undefined8 local_378; ulonglong local_370; ushort local_360 [8]; undefined1 local_350 [6]; ushort local_34a; undefined1 local_340 [6]; ushort local_33a; undefined1 local_330 [2]; ushort local_32e; undefined1 local_320 [12]; ushort local_314; ushort local_310 [8]; undefined1 local_300 [10]; ushort local_2f6; undefined1 local_2f0 [10]; ushort local_2e6; undefined1 local_2e0 [2]; ushort local_2de; undefined1 local_2d0 [8]; ushort local_2c8; undefined1 local_2c0 [8]; ushort local_2b8; undefined1 local_2b0 [12]; ushort local_2a4; void *local_2a0 [3]; ulonglong local_288; undefined4 local_278; undefined4 local_274; char local_270 [520]; ulonglong local_68; local_3b8 = 0xfffffffffffffffe; local_68 = DAT_14016f5a0 ^ (ulonglong)auStack_418; local_3d0 = param_2; local_3c8 = param_1; memset(local_270,0,0x200); local_278 = 0x208; local_274 = 0x4e2e; local_398 = (char ***)0xf; local_3a0 = (char ***)0x0; local_3b0[0] = (char ****)((ulonglong)local_3b0[0] & 0xffffffffffffff00); plVar6 = FUN_140010200((longlong *)local_2a0,&DAT_140175048); pppppcVar7 = (char *****)FUN_1400102b0((undefined8 *)&local_388,plVar6); if (local_3b0 != pppppcVar7) { if ((char ****)0xf < local_398) { operator_delete(local_3b0[0]); } local_398 = (char ***)0xf; local_3a0 = (char ***)0x0; local_3b0[0] = (char ****)((ulonglong)local_3b0[0] & 0xffffffffffffff00); if (pppppcVar7[3] < (char ****)0x10) { memmove(local_3b0,pppppcVar7,(longlong)pppppcVar7[2] + 1); } else { local_3b0[0] = *pppppcVar7; *pppppcVar7 = (char ****)0x0; } local_3a0 = (char ***)pppppcVar7[2]; local_398 = (char ***)pppppcVar7[3]; pppppcVar7[3] = (char ****)0xf; pppppcVar7[2] = (char ****)0x0; *(undefined1 *)pppppcVar7 = 0; } if (0xf < local_370) { operator_delete((void *)CONCAT71(uStack_387,local_388)); } local_370 = 0xf; local_378 = 0; local_388 = 0; if (0xf < local_288) { operator_delete(local_2a0[0]); } FUN_14000c480((ulonglong *)local_3b0,"",0xf); FUN_14000f580((longlong *)local_3b0,(ulonglong)*(uint *)(param_3 + 0xc),"world"); FUN_14000fa00((longlong *)local_3b0,(LPCWSTR)(param_3 + 0x20),"name"); FUN_14000f580((longlong *)local_3b0,(ulonglong)*param_4,"usercount"); FUN_14000f580((longlong *)local_3b0,(ulonglong)param_4[1],"servercount"); FUN_14000f580((longlong *)local_3b0,(ulonglong)param_4[2],"frame"); FUN_14000f580((longlong *)local_3b0,(ulonglong)(byte)param_4[6],"open"); FUN_14000f580((longlong *)local_3b0,(ulonglong)*(uint *)(param_3 + 0x10),"version"); uVar16 = param_4[4]; if (uVar16 == 0) { pcVar9 = "DISCONNECT"; } else if (uVar16 == 1) { pcVar9 = "LOADING"; } else if (uVar16 == 2) { pcVar9 = "BAD"; } else { if (uVar16 != 3) goto LAB_14001be04; pcVar9 = "GOOD"; } FUN_14000f7e0((longlong *)local_3b0,pcVar9,"state"); LAB_14001be04: uVar3 = *(undefined8 *)(param_3 + 0x18); lVar8 = (**(code **)(PTR_PTR_14016f508 + 0x18))(&PTR_PTR_14016f508); local_3d8 = (LPCWSTR)(lVar8 + 0x18); iVar5 = Ordinal_185(uVar3,local_320); uVar15 = 0xffffffff; uVar16 = (uint)local_314; if (iVar5 == 0) { uVar16 = uVar15; } iVar5 = Ordinal_185(uVar3,local_2f0); uVar14 = (uint)local_2e6; if (iVar5 == 0) { uVar14 = uVar15; } iVar5 = Ordinal_185(uVar3,local_2d0); uVar13 = (uint)local_2c8; if (iVar5 == 0) { uVar13 = uVar15; } iVar5 = Ordinal_185(uVar3,local_340); uVar11 = (uint)local_33a; if (iVar5 == 0) { uVar11 = uVar15; } iVar5 = Ordinal_185(uVar3,local_2e0); uVar10 = (uint)local_2de; if (iVar5 == 0) { uVar10 = uVar15; } iVar5 = Ordinal_185(uVar3,local_360); uVar12 = (ulonglong)local_360[0]; if (iVar5 == 0) { uVar12 = 0xffffffff; } local_3f8 = uVar11; local_3f0 = uVar13; local_3e8 = uVar14; local_3e0 = uVar16; FUN_14001c310((longlong *)&local_3d8,L"%d-%d-%d %d:%d:%d",uVar12,(ulonglong)uVar10); FUN_14000fa00((longlong *)local_3b0,local_3d8,"starttime"); uVar3 = *(undefined8 *)(param_4 + 8); iVar5 = Ordinal_185(uVar3,local_2b0); uVar16 = (uint)local_2a4; if (iVar5 == 0) { uVar16 = uVar15; } iVar5 = Ordinal_185(uVar3,local_300); uVar14 = (uint)local_2f6; if (iVar5 == 0) { uVar14 = uVar15; } iVar5 = Ordinal_185(uVar3,local_2c0); uVar13 = (uint)local_2b8; if (iVar5 == 0) { uVar13 = uVar15; } iVar5 = Ordinal_185(uVar3,local_350); uVar11 = (uint)local_34a; if (iVar5 == 0) { uVar11 = uVar15; } iVar5 = Ordinal_185(uVar3,local_330); uVar10 = (uint)local_32e; if (iVar5 == 0) { uVar10 = uVar15; } iVar5 = Ordinal_185(uVar3,local_310); uVar12 = (ulonglong)local_310[0]; if (iVar5 == 0) { uVar12 = 0xffffffff; } local_3f8 = uVar11; local_3f0 = uVar13; local_3e8 = uVar14; local_3e0 = uVar16; FUN_14001c310((longlong *)&local_3d8,L"%d-%d-%d %d:%d:%d",uVar12,(ulonglong)uVar10); pWVar4 = local_3d8; FUN_14000fa00((longlong *)local_3b0,local_3d8,"refreshtime"); FUN_14000c480((ulonglong *)local_3b0,"",0x10); if (local_3a0 < (char ****)0x400) { pppppcVar7 = local_3b0; if ((char ****)0xf < local_398) { pppppcVar7 = (char *****)local_3b0[0]; } strncpy(local_270,(char *)pppppcVar7,(size_t)local_3a0); } else { printf("PWE_RESP_STATUS_SERVER - Msg Size Full!\n"); } lVar8 = *(longlong *)(local_3c8 + 0x16); if (lVar8 != 0) { piVar1 = (int *)(lVar8 + 0x70); local_3c8 = piVar1; FUN_14003d040(piVar1); local_3c0 = 1; lVar8 = FUN_14003c450(lVar8,local_3d0); if (lVar8 != 0) { Ordinal_19(*(undefined8 *)(lVar8 + 8),&local_278,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_398) { operator_delete(local_3b0[0]); } return; }