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

273 lines
8.5 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400abfe0 FUN_1400abfe0
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x0001400ac3ec) */
/* WARNING: Removing unreachable block (ram,0x0001400ac3fb) */
/* WARNING: Removing unreachable block (ram,0x0001400ac400) */
/* WARNING: Removing unreachable block (ram,0x0001400ac43e) */
/* WARNING: Removing unreachable block (ram,0x0001400ac410) */
/* WARNING: Removing unreachable block (ram,0x0001400ac42f) */
/* WARNING: Removing unreachable block (ram,0x0001400ac421) */
/* WARNING: Removing unreachable block (ram,0x0001400ac437) */
/* WARNING: Removing unreachable block (ram,0x0001400ac43c) */
undefined8 FUN_1400abfe0(undefined8 *param_1,LPCWSTR param_2,undefined8 param_3,undefined8 param_4)
{
int *piVar1;
longlong lVar2;
undefined8 *puVar3;
undefined8 *puVar4;
undefined2 *puVar5;
undefined8 *puVar6;
undefined8 *puVar7;
DWORD DVar8;
BOOL BVar9;
undefined **ppuVar10;
undefined8 *puVar11;
int *piVar12;
int *piVar13;
undefined4 extraout_var;
ulonglong uVar14;
undefined *puVar15;
wchar_t *pwVar16;
undefined4 extraout_var_00;
undefined4 extraout_var_01;
undefined4 extraout_var_02;
longlong *plVar17;
undefined **ppuVar18;
undefined8 uVar19;
undefined2 *lpBuffer;
undefined *puVar20;
undefined8 *puVar21;
undefined8 *puVar22;
undefined *puVar23;
int iVar24;
undefined8 uVar25;
undefined8 uVar26;
undefined8 **lpNumberOfBytesWritten;
undefined8 *local_res8;
LPCWSTR local_res10;
undefined2 local_res18 [4];
undefined8 *local_res20;
undefined2 *local_118;
undefined8 *local_110;
undefined8 *local_108;
undefined8 *local_100;
undefined8 *local_f8;
int *local_f0;
undefined8 local_e8;
int *local_e0;
undefined1 local_d8;
undefined8 local_d0;
__time64_t local_c8;
longlong local_c0;
undefined *local_b8;
int local_b0;
__time64_t local_a8;
int *local_a0;
undefined1 local_98;
int *local_90;
undefined1 local_88;
undefined8 local_80;
int *local_78;
undefined1 local_70;
undefined *local_68 [5];
local_80 = 0xfffffffffffffffe;
local_res8 = param_1;
local_res10 = param_2;
local_e0 = (int *)(**(code **)(param_1[-0xe] + 0x58))();
FUN_14003d040(local_e0);
puVar6 = local_res8;
local_d8 = 1;
puVar21 = (undefined8 *)0x0;
local_110 = (undefined8 *)0x0;
local_f8 = (undefined8 *)0x0;
local_108 = (undefined8 *)0x0;
local_100 = (undefined8 *)0x0;
lVar2 = param_1[0x2eb];
puVar3 = puVar21;
puVar4 = puVar21;
puVar11 = local_110;
while (local_110 = puVar11, lVar2 != 0) {
ppuVar18 = local_68;
ppuVar10 = (undefined **)FUN_1400a9060(param_1 + 0x2e8,(longlong *)ppuVar18,param_3,param_4);
plVar17 = (longlong *)0x28;
puVar11 = (undefined8 *)FUN_14003e840(0x28);
local_res8 = puVar11;
local_res20 = puVar11;
if (puVar11 != (undefined8 *)0x0) {
FUN_14003e7c0(plVar17,ppuVar18,param_3,param_4);
puVar11[2] = PTR_DAT_14016f010;
plVar17 = puVar11 + 2;
ppuVar18 = ppuVar10;
FUN_1400020c0(plVar17,(longlong *)ppuVar10,param_3,param_4);
*(undefined4 *)(puVar11 + 3) = *(undefined4 *)(ppuVar10 + 1);
puVar11[4] = ppuVar10[2];
}
puVar15 = local_68[0];
puVar11[1] = puVar3;
*puVar11 = 0;
puVar21 = (undefined8 *)((longlong)puVar21 + 1);
puVar22 = puVar11;
puVar7 = puVar11;
if (puVar3 != (undefined8 *)0x0) {
*puVar3 = puVar11;
puVar22 = puVar4;
puVar7 = local_108;
}
local_108 = puVar7;
local_100 = puVar11;
local_f8 = puVar21;
if (((local_68[0] != (undefined *)0x0) && (local_68[0] != PTR_DAT_14016f010)) &&
(puVar20 = local_68[0] + -8, puVar20 != (undefined *)0x0)) {
piVar12 = (int *)FUN_14003e7c0(plVar17,ppuVar18,param_3,param_4);
local_90 = piVar12;
FUN_14003d040(piVar12);
local_88 = 1;
piVar13 = (int *)(puVar15 + -4);
*piVar13 = *piVar13 + -1;
if (*piVar13 == 0) {
FUN_14003e8b0(puVar20);
}
FUN_14003d0d0((longlong)piVar12);
local_88 = 0;
}
param_1 = puVar6;
puVar3 = puVar11;
puVar4 = puVar22;
puVar11 = local_110;
lVar2 = puVar6[0x2eb];
}
FUN_14003d0d0((longlong)local_e0);
local_d8 = 0;
local_f0 = (int *)0x0;
local_e8 = 0;
uVar26 = 0;
uVar19 = 0x40000000;
uVar25 = 1;
piVar13 = CreateFileW(local_res10,0x40000000,1,(LPSECURITY_ATTRIBUTES)0x0,2,0x80,(HANDLE)0x0);
piVar12 = piVar13;
if (piVar13 == (int *)0xffffffffffffffff) {
DVar8 = FUN_140083b60();
uVar14 = CONCAT44(extraout_var,DVar8);
piVar13 = (int *)0x0;
piVar12 = local_f0;
if ((int)DVar8 < 0) {
while( true ) {
if (puVar21 == (undefined8 *)0x0) {
return uVar14 & 0xffffffffffffff00;
}
if (puVar4 == (undefined8 *)0x0) break;
puVar3 = (undefined8 *)*puVar4;
FUN_140002190(puVar4 + 2,uVar19,uVar25,uVar26);
uVar14 = FUN_14003e8b0(puVar4);
puVar21 = (undefined8 *)((longlong)puVar21 + -1);
puVar4 = puVar3;
}
/* WARNING: Subroutine does not return */
FUN_1400050d0(0x80004005);
}
}
local_f0 = piVar12;
local_d0 = 0;
DVar8 = SetFilePointer(piVar13,0,(PLONG)((longlong)&local_d0 + 4),0);
if (DVar8 == 0xffffffff) {
FUN_140083b60();
}
local_res18[0] = 0xfeff;
lpNumberOfBytesWritten = &local_res8;
uVar14 = 2;
lpBuffer = local_res18;
piVar12 = piVar13;
BVar9 = WriteFile(piVar13,lpBuffer,2,(LPDWORD)lpNumberOfBytesWritten,(LPOVERLAPPED)0x0);
if (BVar9 == 0) {
FUN_140083b60();
}
puVar15 = FUN_14003e7c0(piVar12,lpBuffer,uVar14,lpNumberOfBytesWritten);
local_118 = (undefined2 *)PTR_DAT_14016f010;
puVar5 = (undefined2 *)PTR_DAT_14016f010;
while (puVar21 != (undefined8 *)0x0) {
FUN_1400a9060((longlong *)&local_110,(longlong *)&local_b8,uVar14,lpNumberOfBytesWritten);
local_c8 = local_a8;
plVar17 = FUN_1400841b0(&local_c8,&local_c0,L"%#c");
lVar2 = *plVar17;
pwVar16 = FUN_140092390(local_b0);
FUN_140029b80((longlong *)&local_118,L"[%s] [%s] %s\r\n",pwVar16,lVar2);
LOCK();
piVar13 = (int *)(local_c0 + -8);
iVar24 = *piVar13;
*piVar13 = *piVar13 + -1;
UNLOCK();
if (iVar24 + -1 < 1) {
(**(code **)(**(longlong **)(local_c0 + -0x18) + 8))();
}
piVar13 = local_f0;
puVar5 = local_118;
iVar24 = 0;
lpBuffer = (undefined2 *)PTR_DAT_14016f010;
if (local_118 != (undefined2 *)0x0) {
piVar12 = (int *)0x0;
if (local_118 != (undefined2 *)PTR_DAT_14016f010) {
piVar12 = (int *)(ulonglong)*(uint *)(local_118 + -4);
}
iVar24 = (int)piVar12;
lpBuffer = local_118;
}
uVar14 = (ulonglong)(uint)(iVar24 * 2);
lpNumberOfBytesWritten = &local_res20;
piVar12 = local_f0;
BVar9 = WriteFile(local_f0,lpBuffer,iVar24 * 2,(LPDWORD)lpNumberOfBytesWritten,(LPOVERLAPPED)0x0
);
puVar15 = (undefined *)CONCAT44(extraout_var_00,BVar9);
if (BVar9 == 0) {
DVar8 = FUN_140083b60();
puVar15 = (undefined *)CONCAT44(extraout_var_01,DVar8);
}
puVar20 = local_b8;
puVar11 = local_110;
puVar21 = local_f8;
if (((local_b8 != (undefined *)0x0) && (local_b8 != PTR_DAT_14016f010)) &&
(puVar23 = local_b8 + -8, puVar23 != (undefined *)0x0)) {
piVar12 = (int *)FUN_14003e7c0(piVar12,lpBuffer,uVar14,lpNumberOfBytesWritten);
local_a0 = piVar12;
FUN_14003d040(piVar12);
local_98 = 1;
piVar1 = (int *)(puVar20 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14003e8b0(puVar23);
}
puVar15 = (undefined *)FUN_14003d0d0((longlong)piVar12);
local_98 = 0;
puVar11 = local_110;
puVar21 = local_f8;
}
}
if (piVar13 != (int *)0x0) {
BVar9 = CloseHandle(piVar13);
puVar15 = (undefined *)CONCAT44(extraout_var_02,BVar9);
local_f0 = (int *)0x0;
piVar12 = piVar13;
}
if (((puVar5 != (undefined2 *)0x0) && (puVar5 != (undefined2 *)PTR_DAT_14016f010)) &&
(puVar5 + -4 != (undefined2 *)0x0)) {
piVar12 = (int *)FUN_14003e7c0(piVar12,lpBuffer,uVar14,lpNumberOfBytesWritten);
local_78 = piVar12;
FUN_14003d040(piVar12);
local_70 = 1;
piVar13 = (int *)(puVar5 + -2);
*piVar13 = *piVar13 + -1;
if (*piVar13 == 0) {
FUN_14003e8b0(puVar5 + -4);
}
puVar15 = (undefined *)FUN_14003d0d0((longlong)piVar12);
}
if (puVar11 != (undefined8 *)0x0) {
puVar15 = (undefined *)(**(code **)*puVar11)(puVar11,1);
}
return CONCAT71((int7)((ulonglong)puVar15 >> 8),1);
}