184 lines
5.2 KiB
C
184 lines
5.2 KiB
C
/* 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,"<register-server>",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,"</register-server>",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;
|
|
}
|
|
|