add agent manager release decomp

This commit is contained in:
Benjamin Palko 2026-10-15 09:58:24 -04:00
parent 31ff800b2a
commit fac6117145
7019 changed files with 254032 additions and 5 deletions

View file

@ -0,0 +1,520 @@
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x140002790 FUN_140002790
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 FUN_140002790(longlong param_1,undefined8 param_2,undefined8 param_3,longlong **param_4)
{
double dVar1;
char cVar2;
undefined4 *puVar3;
undefined1 auVar4 [16];
bool bVar5;
longlong *plVar6;
BOOL BVar7;
DWORD DVar8;
undefined8 *puVar9;
undefined8 *puVar10;
longlong *plVar11;
longlong lVar12;
wchar_t *pwVar13;
LPCSTR pCVar14;
short *psVar15;
longlong *plVar16;
longlong *plVar17;
undefined8 uVar18;
undefined *puVar19;
void **ppvVar20;
undefined8 *puVar21;
undefined8 *puVar22;
undefined8 *puVar23;
longlong lVar24;
undefined4 uVar25;
undefined4 uVar26;
undefined4 uVar27;
undefined4 uVar28;
undefined4 uVar29;
undefined4 uVar30;
undefined1 auStack_4d8 [32];
longlong *local_4b8;
longlong *local_4b0;
undefined8 *local_4a8;
longlong *local_4a0;
undefined8 *local_498;
undefined8 *local_490;
undefined8 *local_488;
undefined4 local_480 [2];
undefined8 *local_478;
undefined8 *local_470;
undefined8 *local_468;
LARGE_INTEGER local_460;
undefined8 local_458;
undefined2 local_448;
undefined1 local_446 [158];
undefined1 local_3a8 [160];
undefined4 local_308;
uint uStack_304;
undefined2 local_300;
undefined6 uStack_2fe;
undefined8 local_2f0;
ulonglong local_2e8;
WCHAR local_2d8;
undefined6 uStack_2d6;
undefined8 local_2c8;
ulonglong local_2c0;
short *local_2a8;
short local_2a0 [132];
short *local_198;
short local_190 [132];
ulonglong local_88;
local_458 = 0xfffffffffffffffe;
local_88 = DAT_14016f5a0 ^ (ulonglong)auStack_4d8;
pwVar13 = L"\t # PREPARE # \n";
FUN_1400ef250(DAT_14017c8a8,L"\t # PREPARE # \n",param_3,param_4);
CoInitialize((LPVOID)0x0);
local_460 = (LARGE_INTEGER)operator_new(0xd8);
puVar22 = (undefined8 *)0x0;
puVar9 = puVar22;
if ((undefined8 *)local_460.QuadPart != (undefined8 *)0x0) {
puVar9 = FUN_140005280((undefined8 *)local_460,pwVar13,param_3,param_4);
}
if (puVar9 == (undefined8 *)0x0) {
local_4b8 = (longlong *)0x0;
}
else {
local_4b8 = (longlong *)FUN_14003e840(0x10);
local_4b8[1] = 1;
*local_4b8 = (longlong)puVar9;
}
plVar16 = local_4b8;
local_498 = operator_new(0x118);
puVar9 = puVar22;
if (local_498 != (undefined8 *)0x0) {
puVar9 = FUN_1400060f0(local_498,pwVar13,param_3,param_4);
}
if (puVar9 == (undefined8 *)0x0) {
local_4b0 = (longlong *)0x0;
}
else {
local_4b0 = (longlong *)FUN_14003e840(0x10);
local_4b0[1] = 1;
*local_4b0 = (longlong)puVar9;
}
plVar17 = local_4b0;
local_498 = operator_new(0xa0);
puVar9 = puVar22;
if (local_498 != (undefined8 *)0x0) {
puVar9 = FUN_140007010(local_498,pwVar13,param_3,param_4);
}
if (puVar9 == (undefined8 *)0x0) {
local_4a8 = (undefined8 *)0x0;
}
else {
local_4a8 = (undefined8 *)FUN_14003e840(0x10);
local_4a8[1] = 1;
*local_4a8 = puVar9;
}
puVar9 = local_4a8;
local_468 = local_4a8;
puVar10 = operator_new(0x50);
puVar21 = puVar22;
local_498 = puVar10;
if (puVar10 != (undefined8 *)0x0) {
FUN_1400721c0(puVar10);
FUN_140073a40((void **)(puVar10 + 1));
puVar10[3] = 0;
puVar10[4] = 0;
puVar10[8] = 7;
puVar10[7] = 0;
*(undefined2 *)(puVar10 + 5) = 0;
puVar21 = puVar10;
}
if (puVar21 == (undefined8 *)0x0) {
local_490 = (undefined8 *)0x0;
}
else {
local_490 = (undefined8 *)FUN_14003e840(0x10);
local_490[1] = 1;
*local_490 = puVar21;
}
puVar21 = local_490;
local_498 = local_490;
puVar10 = operator_new(0x50);
local_488 = puVar10;
if (puVar10 != (undefined8 *)0x0) {
FUN_1400721c0(puVar10);
FUN_140073a40((void **)(puVar10 + 1));
puVar10[3] = 0;
puVar10[4] = 0;
puVar10[8] = 7;
puVar10[7] = 0;
*(undefined2 *)(puVar10 + 5) = 0;
puVar22 = puVar10;
}
if (puVar22 == (undefined8 *)0x0) {
local_488 = (undefined8 *)0x0;
}
else {
local_488 = (undefined8 *)FUN_14003e840(0x10);
local_488[1] = 1;
*local_488 = puVar22;
}
puVar22 = local_488;
puVar23 = (undefined8 *)0x0;
puVar10 = puVar23;
if (plVar16 != (longlong *)0x0) {
puVar10 = (undefined8 *)*plVar16;
}
*(undefined8 **)(param_1 + 0x49450) = puVar10;
puVar10 = puVar23;
if (plVar17 != (longlong *)0x0) {
puVar10 = (undefined8 *)*plVar17;
}
*(undefined8 **)(param_1 + 0x49458) = puVar10;
puVar10 = puVar23;
if (puVar9 != (undefined8 *)0x0) {
puVar10 = (undefined8 *)*puVar9;
}
*(undefined8 **)(param_1 + 0x49448) = puVar10;
puVar10 = puVar23;
if (puVar21 != (undefined8 *)0x0) {
puVar10 = (undefined8 *)*puVar21;
}
*(undefined8 **)(param_1 + 0x49460) = puVar10;
puVar10 = puVar23;
if (local_488 != (undefined8 *)0x0) {
puVar10 = (undefined8 *)*local_488;
}
*(undefined8 **)(param_1 + 0x49468) = puVar10;
pCVar14 = (LPCSTR)(DAT_14017cf28 + 0x90);
if (0xf < *(ulonglong *)(DAT_14017cf28 + 0xa8)) {
pCVar14 = *(LPCSTR *)pCVar14;
}
local_2a8 = local_2a0;
uVar18 = 3;
FUN_140005110((longlong *)&local_2a8,pCVar14,3);
FUN_140007430(*(longlong *)(param_1 + 0x49460),local_2a8,uVar18,(short *)param_4);
if (local_2a8 != local_2a0) {
free(local_2a8);
}
pCVar14 = (LPCSTR)(DAT_14017cf28 + 0x108);
if (0xf < *(ulonglong *)(DAT_14017cf28 + 0x120)) {
pCVar14 = *(LPCSTR *)pCVar14;
}
local_198 = local_190;
puVar19 = (undefined *)0x3;
FUN_140005110((longlong *)&local_198,pCVar14,3);
psVar15 = local_198;
FUN_140007430(*(longlong *)(param_1 + 0x49468),local_198,puVar19,(short *)param_4);
if (local_198 != local_190) {
free(local_198);
}
local_480[0] = 3;
*(undefined4 *)(param_1 + 0x10) = 3;
printf("STEP : DB_LOAD \n");
lVar24 = *(longlong *)(param_1 + 0x38);
if ((lVar24 != 0) && (*(char *)(lVar24 + 0x1a) != '\0')) {
param_4 = (longlong **)local_480;
puVar19 = &DAT_14016f5d0;
psVar15 = (short *)0x1;
(**(code **)(*(longlong *)(lVar24 + 0x68) + 0xb0))();
}
printf("AgentManager Auth...\n");
uVar18 = FUN_140007a20(*(longlong *)(param_1 + 0x49460),psVar15,puVar19,param_4);
if ((char)uVar18 == '\0') {
printf("AgentManager Auth Failed !!!\n");
Sleep(3000);
*(undefined1 *)(param_1 + 0x49440) = 0;
}
printf("Read ServerOption...\n");
uVar18 = FUN_140008410(*(longlong *)(param_1 + 0x49460),psVar15,puVar19,param_4);
if ((char)uVar18 == '\0') {
printf("Read ServerOption Failed !!!\n");
Sleep(3000);
*(undefined1 *)(param_1 + 0x49440) = 0;
}
printf("Read ServerFile...\n");
uVar18 = FUN_140009240(*(longlong *)(param_1 + 0x49460),psVar15,puVar19,(longlong)param_4);
if ((char)uVar18 == '\0') {
printf("Read ServerFile Failed !!!\n");
Sleep(3000);
*(undefined1 *)(param_1 + 0x49440) = 0;
}
printf("Read RealTimeEvent...\n");
uVar18 = FUN_140009760(*(longlong *)(param_1 + 0x49460),psVar15,puVar19,param_4);
if ((char)uVar18 == '\0') {
printf("Read RealTimeEvent Failed !!!\n");
Sleep(3000);
*(undefined1 *)(param_1 + 0x49440) = 0;
}
*(undefined8 *)(*(longlong *)(param_1 + 0x49460) + 0x18) = *(undefined8 *)(param_1 + 0x49450);
*(undefined8 *)(*(longlong *)(param_1 + 0x49468) + 0x18) = *(undefined8 *)(param_1 + 0x49450);
*(undefined8 *)(*(longlong *)(param_1 + 0x49450) + 0x68) = *(undefined8 *)(param_1 + 0x49460);
*(undefined8 *)(*(longlong *)(param_1 + 0x49450) + 0x70) = *(undefined8 *)(param_1 + 0x49468);
*(undefined8 *)(*(longlong *)(param_1 + 0x49450) + 0x78) = *(undefined8 *)(param_1 + 0x49458);
*(undefined8 *)(*(longlong *)(param_1 + 0x49450) + 0x80) = *(undefined8 *)(param_1 + 0x49448);
*(undefined8 *)(*(longlong *)(param_1 + 0x49458) + 0x68) = *(undefined8 *)(param_1 + 0x49460);
*(undefined8 *)(*(longlong *)(param_1 + 0x49458) + 0x70) = *(undefined8 *)(param_1 + 0x49468);
*(undefined8 *)(*(longlong *)(param_1 + 0x49458) + 0x78) = *(undefined8 *)(param_1 + 0x49450);
*(undefined8 *)(*(longlong *)(param_1 + 0x49458) + 0x80) = *(undefined8 *)(param_1 + 0x49448);
*(undefined8 *)(*(longlong *)(param_1 + 0x49448) + 0x98) = *(undefined8 *)(param_1 + 0x49450);
pwVar13 = L"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
FUN_1400ef250(DAT_14017c8a8,L"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",puVar19,param_4);
local_308 = 0;
uStack_304 = 0;
local_2e8 = 7;
local_2f0 = 0;
local_300 = 0;
local_2c0 = 7;
local_2c8 = 0;
local_2d8 = L'\0';
if (*(longlong *)(DAT_14017cf28 + 0x1c8) != 0) {
auVar4._8_8_ = 0;
auVar4._0_8_ = *(ulonglong *)(DAT_14017cf28 + 0x1b0);
pwVar13 = SUB168((ZEXT816(0) << 0x40 | ZEXT816(0x17)) % auVar4,0);
local_478 = (undefined8 *)(*(longlong *)(DAT_14017cf28 + 0x1a8) + (longlong)pwVar13 * 8);
for (local_470 = (undefined8 *)*local_478; local_470 != (undefined8 *)0x0;
local_470 = (undefined8 *)*local_470) {
if (*(char *)(local_470 + 1) == '\x17') {
if (local_470 != (undefined8 *)0x0) goto LAB_140002dd4;
break;
}
}
}
local_478 = (undefined8 *)0x0;
local_470 = puVar23;
LAB_140002dd4:
if ((local_470 != (undefined8 *)0x0) &&
(puVar3 = (undefined4 *)local_470[2], puVar3 != (undefined4 *)local_470[3])) {
local_308 = *puVar3;
uStack_304 = puVar3[1];
FUN_140001630((longlong *)&local_300,(longlong *)(puVar3 + 2),0,0xffffffffffffffff);
param_4 = (longlong **)0xffffffffffffffff;
FUN_140001630((longlong *)&local_2d8,(longlong *)(puVar3 + 0xc),0,0xffffffffffffffff);
pwVar13 = &local_2d8;
if (7 < local_2c0) {
pwVar13 = (LPCWSTR)CONCAT62(uStack_2d6,local_2d8);
}
puVar19 = (undefined *)(ulonglong)uStack_304;
FUN_14003bcb0(*(void **)(param_1 + 0x49448),pwVar13,puVar19,param_4);
}
lVar24 = 0;
lVar12 = lVar24;
if (plVar16 != (longlong *)0x0) {
lVar12 = *plVar16;
}
FUN_140005460(lVar12,pwVar13,puVar19,(longlong)param_4);
if (plVar17 != (longlong *)0x0) {
lVar24 = *plVar17;
}
FUN_140006380(lVar24,pwVar13,puVar19,(longlong)param_4);
FUN_1400ef250(DAT_14017c8a8,L"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",puVar19,param_4);
plVar11 = operator_new(0x18);
if (plVar11 == (longlong *)0x0) {
plVar11 = (longlong *)0x0;
}
else {
*plVar11 = (longlong)TimeSourceHRWin32::vftable;
BVar7 = QueryPerformanceFrequency(&local_460);
if (BVar7 == 0) {
*(undefined1 *)(plVar11 + 2) = 0;
GetLastError();
}
else {
*(undefined1 *)(plVar11 + 2) = 1;
plVar11[1] = (longlong)(1.0 / (double)local_460.QuadPart);
}
}
local_4a0 = DAT_14017cf18;
if ((undefined8 *)DAT_14017cf18[2] != (undefined8 *)0x0) {
(*(code *)**(undefined8 **)DAT_14017cf18[2])();
}
local_4a0[2] = (longlong)plVar11;
if (plVar11 != (longlong *)0x0) {
lVar24 = (**(code **)(*plVar11 + 8))(plVar11);
local_4a0[6] = lVar24;
local_4a0[7] = lVar24;
}
local_4a0[0x12] = 0x3ff0000000000000;
plVar11 = operator_new(0x28);
local_4a0 = plVar11;
if (plVar11 != (longlong *)0x0) {
*plVar11 = (longlong)Magi::Timer::vftable;
plVar6 = DAT_14017cf18;
plVar11[1] = (longlong)DAT_14017cf18;
plVar11[2] = 0;
plVar11[3] = 0;
*(undefined1 *)(plVar11 + 4) = 0;
*(undefined4 *)((longlong)plVar11 + 0x24) = 0x3f800000;
(**(code **)(*plVar6 + 0x10))();
}
*(longlong **)(param_1 + 0x49430) = plVar11;
local_448 = 0;
memset(local_446,0,0x9e);
ppvVar20 = (void **)0xa0;
memset(local_3a8,0,0xa0);
uVar26 = 0;
uVar28 = 0;
bVar5 = false;
pwVar13 = L"\t # RUN # \n";
FUN_1400ef250(DAT_14017c8a8,L"\t # RUN # \n",ppvVar20,param_4);
local_4a0 = (longlong *)CONCAT44(local_4a0._4_4_,5);
*(undefined4 *)(param_1 + 0x10) = 5;
if (DAT_14017ce74 != 0) {
printf("********************************\n");
DVar8 = timeGetTime();
pwVar13 = (wchar_t *)((ulonglong)(DVar8 - DAT_14017ce74) / 1000);
printf("** Server Load Time : %d sec\n");
printf("********************************\n");
}
printf("STEP : SERVER_RUN \n");
lVar24 = *(longlong *)(param_1 + 0x38);
if ((lVar24 != 0) && (*(char *)(lVar24 + 0x1a) != '\0')) {
param_4 = &local_4a0;
ppvVar20 = (void **)&DAT_14016f5d0;
pwVar13 = (wchar_t *)0x1;
(**(code **)(*(longlong *)(lVar24 + 0x68) + 0xb0))();
}
cVar2 = *(char *)(param_1 + 0x49440);
uVar29 = uVar26;
uVar30 = uVar28;
while (cVar2 != '\0') {
FUN_1400ed240((longlong)DAT_14017cf18);
dVar1 = *(double *)(*(longlong *)(param_1 + 0x49430) + 0x10);
if (DAT_14017ce84 != '\0') {
printf("AgentSession->Connect\n");
DAT_14017ce84 = DAT_14017ce84 == '\0';
}
FUN_14003c0a0(*(undefined8 **)(param_1 + 0x49448));
uVar25 = SUB84(dVar1,0);
uVar27 = (undefined4)((ulonglong)dVar1 >> 0x20);
if (1.0 <= dVar1 - (double)CONCAT44(uVar28,uVar26)) {
if (DAT_14017ce78 != 0) {
pwVar13 = (wchar_t *)&DAT_14012ea5c;
if (bVar5) {
pwVar13 = (wchar_t *)&DAT_14012ea58;
}
ppvVar20 = (void **)(ulonglong)DAT_14017ce7c;
printf("[ %s ] FPS[ %d ]\n");
bVar5 = !bVar5;
}
_DAT_14017ce80 = DAT_14017ce7c;
DAT_14017ce7c = 0;
uVar26 = uVar25;
uVar28 = uVar27;
}
if (0.10000000149011612 <= dVar1 - (double)CONCAT44(uVar30,uVar29)) {
DAT_14017ce7c = DAT_14017ce7c + 1;
FUN_140003420(param_1,(ulonglong *******)pwVar13,(undefined *)ppvVar20,(undefined2 *)param_4);
FUN_1400054f0(*(longlong *)(param_1 + 0x49450),dVar1,ppvVar20,(ulonglong)param_4);
uVar29 = uVar25;
uVar30 = uVar27;
if (*(char *)(*(longlong *)(param_1 + 0x49450) + 0x9c) != '\0') {
*(undefined4 *)(param_1 + 0x49444) = 1;
*(undefined1 *)(*(longlong *)(param_1 + 0x49450) + 0x9c) = 0;
}
}
*(double *)(param_1 + 0x49438) = dVar1;
if (0 < *(int *)(param_1 + 0x49444)) {
FUN_140003d00(param_1,pwVar13,ppvVar20,(longlong)param_4);
}
Sleep(1);
puVar9 = local_468;
puVar21 = local_498;
cVar2 = *(char *)(param_1 + 0x49440);
}
FUN_14003bfd0(*(longlong *)(param_1 + 0x49448),pwVar13,ppvVar20,param_4);
lVar24 = *(longlong *)(param_1 + 0x49450);
puVar10 = *(undefined8 **)(lVar24 + 0x28);
if (puVar10 != (undefined8 *)0x0) {
(**(code **)*puVar10)(puVar10,1);
}
*(undefined8 *)(lVar24 + 0x28) = 0;
FUN_140006430(*(longlong *)(param_1 + 0x49458));
CoUninitialize();
pwVar13 = L"# SERVER END... #\n";
FUN_1400ef250(DAT_14017c8a8,L"# SERVER END... #\n",ppvVar20,param_4);
if (7 < local_2c0) {
operator_delete((void *)CONCAT62(uStack_2d6,local_2d8));
}
local_2c0 = 7;
local_2c8 = 0;
local_2d8 = L'\0';
if (7 < local_2e8) {
operator_delete((void *)CONCAT62(uStack_2fe,local_300));
}
local_2e8 = 7;
local_2f0 = 0;
local_300 = 0;
if (puVar22 != (undefined8 *)0x0) {
plVar11 = puVar22 + 1;
*plVar11 = *plVar11 + -1;
plVar16 = local_4b8;
puVar9 = local_4a8;
plVar17 = local_4b0;
puVar21 = local_490;
if (*plVar11 == 0) {
FUN_140004b20(local_488,pwVar13,ppvVar20);
plVar16 = local_4b8;
puVar9 = local_4a8;
plVar17 = local_4b0;
puVar21 = local_490;
}
}
if (puVar21 != (undefined8 *)0x0) {
plVar11 = puVar21 + 1;
*plVar11 = *plVar11 + -1;
plVar16 = local_4b8;
puVar9 = local_4a8;
plVar17 = local_4b0;
if (*plVar11 == 0) {
FUN_140004b20(local_490,pwVar13,ppvVar20);
plVar16 = local_4b8;
puVar9 = local_4a8;
plVar17 = local_4b0;
}
}
if (puVar9 != (undefined8 *)0x0) {
plVar11 = puVar9 + 1;
*plVar11 = *plVar11 + -1;
plVar16 = local_4b8;
plVar17 = local_4b0;
if (*plVar11 == 0) {
FUN_140004aa0(local_4a8,pwVar13,ppvVar20,param_4);
plVar16 = local_4b8;
plVar17 = local_4b0;
}
}
plVar11 = local_4b0;
if (plVar17 != (longlong *)0x0) {
plVar17 = plVar17 + 1;
*plVar17 = *plVar17 + -1;
plVar16 = local_4b8;
if (*plVar17 == 0) {
puVar9 = (undefined8 *)*local_4b0;
if (puVar9 != (undefined8 *)0x0) {
(**(code **)*puVar9)(puVar9,1);
}
FUN_14003e8b0(plVar11);
plVar16 = local_4b8;
}
}
plVar17 = local_4b8;
if (plVar16 != (longlong *)0x0) {
plVar16 = plVar16 + 1;
*plVar16 = *plVar16 + -1;
if (*plVar16 == 0) {
puVar9 = (undefined8 *)*local_4b8;
if (puVar9 != (undefined8 *)0x0) {
(**(code **)*puVar9)(puVar9,1);
}
FUN_14003e8b0(plVar17);
}
}
return 0;
}