server-re/decomp/AgentManager_Release_x64/full/functions/0x14001b0d0.c
2026-10-15 09:58:24 -04:00

193 lines
5.7 KiB
C

/* 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,"<register-server-option-list>",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,"</register-server-option-list>",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;
}