server-re/decomp/Agent_Release_x64/full/functions/0x14002ac70.c
2026-10-14 16:45:19 -04:00

330 lines
10 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x14002ac70 FUN_14002ac70
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00014002b060) */
/* WARNING: Removing unreachable block (ram,0x00014002b067) */
/* WARNING: Removing unreachable block (ram,0x00014002b080) */
/* WARNING: Removing unreachable block (ram,0x00014002b08c) */
/* WARNING: Removing unreachable block (ram,0x00014002b084) */
/* WARNING: Removing unreachable block (ram,0x00014002b092) */
/* WARNING: Removing unreachable block (ram,0x00014002b0a4) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_14002ac70(undefined8 *param_1,undefined8 param_2,longlong param_3,longlong param_4)
{
uint uVar1;
int *piVar2;
int *piVar3;
ulonglong *puVar4;
undefined *puVar5;
int *piVar6;
undefined4 *puVar7;
undefined4 *puVar8;
undefined4 **ppuVar9;
LPCWSTR pWVar10;
longlong lVar11;
int iVar12;
undefined4 *puVar13;
undefined *puVar14;
undefined4 *puVar15;
longlong lVar16;
longlong *plVar17;
int iVar18;
undefined1 auStack_178 [32];
int *local_158;
int *local_150;
undefined1 local_148;
int *local_140;
undefined1 local_138;
undefined8 local_128;
undefined4 **local_120;
longlong *local_118;
undefined4 *local_110;
uint local_108;
undefined4 uStack_104;
undefined4 uStack_100;
undefined4 local_fc;
undefined *local_f8;
undefined4 *local_f0;
uint local_e8;
undefined **local_e0;
longlong *local_d8;
undefined4 *local_d0;
int local_c8;
undefined4 local_b8;
undefined4 local_b4;
undefined4 local_b0;
undefined4 local_ac;
undefined4 local_a8;
undefined8 local_a4;
undefined4 local_9c;
undefined1 local_91;
undefined1 local_80;
undefined **local_70;
longlong *local_68;
undefined4 *local_60;
ulonglong local_38;
local_128 = 0xfffffffffffffffe;
local_38 = DAT_1401555a0 ^ (ulonglong)auStack_178;
(**(code **)(*(longlong *)*param_1 + 0x178))((longlong *)*param_1,0x406e000000000000);
FUN_14003b670(&local_f8,param_2,param_3,param_4);
if (*(char *)(DAT_140162d68 + 0x151) == '\0') {
if (local_f0 == (undefined4 *)0x0) {
local_f0 = (undefined4 *)PTR_DAT_140155010;
}
if ((undefined4 *)param_1[1] != local_f0) {
puVar5 = PTR_DAT_140155010;
piVar2 = (int *)FUN_140030200(local_f0,PTR_DAT_140155010,param_3,param_4);
piVar6 = piVar2;
local_150 = piVar2;
FUN_14002e6e0(piVar2);
puVar7 = local_f0;
local_148 = 1;
if (((local_f0 != (undefined4 *)0x0) && (local_f0 != (undefined4 *)PTR_DAT_140155010)) &&
(puVar13 = local_f0 + -2, puVar13 != (undefined4 *)0x0)) {
piVar3 = (int *)FUN_140030200(piVar6,puVar5,param_3,param_4);
local_140 = piVar3;
FUN_14002e6e0(piVar3);
local_138 = 1;
piVar6 = puVar7 + -1;
*piVar6 = *piVar6 + -1;
if (*piVar6 == 0) {
FUN_1400302f0(puVar13);
}
FUN_14002e770((longlong)piVar3);
}
local_f0 = (undefined4 *)param_1[1];
if (((local_f0 != (undefined4 *)PTR_DAT_140155010) && (local_f0 != (undefined4 *)0x0)) &&
(local_f0 != (undefined4 *)0x8)) {
local_f0[-1] = local_f0[-1] + 1;
}
FUN_14002e770((longlong)piVar2);
}
puVar5 = PTR_DAT_140155010;
puVar7 = (undefined4 *)param_1[1];
if ((undefined4 *)param_1[1] == (undefined4 *)0x0) {
puVar7 = (undefined4 *)PTR_DAT_140155010;
}
param_1[1] = puVar7;
if (local_f0 == puVar7) goto LAB_14002af7d;
piVar6 = (int *)FUN_140030200(local_f0,puVar5,param_3,param_4);
local_150 = piVar6;
FUN_14002e6e0(piVar6);
local_148 = 1;
FUN_140003240(param_1 + 1,puVar5,param_3,param_4);
param_1[1] = local_f0;
if (((local_f0 != (undefined4 *)PTR_DAT_140155010) && (local_f0 != (undefined4 *)0x0)) &&
(local_f0 != (undefined4 *)0x8)) {
local_f0[-1] = local_f0[-1] + 1;
}
}
else {
if (local_f8 == (undefined *)0x0) {
local_f8 = PTR_DAT_140155010;
}
if ((undefined *)param_1[1] != local_f8) {
piVar2 = (int *)FUN_140030200(PTR_DAT_140155010,param_2,param_3,param_4);
piVar6 = piVar2;
local_140 = piVar2;
FUN_14002e6e0(piVar2);
puVar5 = local_f8;
local_138 = 1;
if (((local_f8 != (undefined *)0x0) && (local_f8 != PTR_DAT_140155010)) &&
(puVar14 = local_f8 + -8, puVar14 != (undefined *)0x0)) {
piVar3 = (int *)FUN_140030200(piVar6,param_2,param_3,param_4);
local_150 = piVar3;
FUN_14002e6e0(piVar3);
local_148 = 1;
piVar6 = (int *)(puVar5 + -4);
*piVar6 = *piVar6 + -1;
if (*piVar6 == 0) {
FUN_1400302f0(puVar14);
}
FUN_14002e770((longlong)piVar3);
}
local_f8 = (undefined *)param_1[1];
if (((local_f8 != PTR_DAT_140155010) && (local_f8 != (undefined *)0x0)) &&
(local_f8 != (undefined *)0x8)) {
*(int *)(local_f8 + -4) = *(int *)(local_f8 + -4) + 1;
}
FUN_14002e770((longlong)piVar2);
}
pWVar10 = (LPCWSTR)param_1[1];
if ((LPCWSTR)param_1[1] == (LPCWSTR)0x0) {
pWVar10 = (LPCWSTR)PTR_DAT_140155010;
}
puVar4 = FUN_140026050((ulonglong *)&local_120,pWVar10);
if (7 < puVar4[3]) {
puVar4 = (ulonglong *)*puVar4;
}
ppuVar9 = &local_f0;
FUN_140006c60((longlong *)ppuVar9,(short *)puVar4,param_3,param_4);
if (7 < CONCAT44(uStack_104,local_108)) {
ppuVar9 = local_120;
operator_delete(local_120);
}
puVar5 = (undefined *)param_1[1];
if ((undefined *)param_1[1] == (undefined *)0x0) {
puVar5 = PTR_DAT_140155010;
}
param_1[1] = puVar5;
if (local_f8 == puVar5) goto LAB_14002af7d;
piVar6 = (int *)FUN_140030200(ppuVar9,puVar4,param_3,param_4);
local_150 = piVar6;
FUN_14002e6e0(piVar6);
local_148 = 1;
FUN_140003240(param_1 + 1,puVar4,param_3,param_4);
param_1[1] = local_f8;
if (((local_f8 != PTR_DAT_140155010) && (local_f8 != (undefined *)0x0)) &&
(local_f8 != (undefined *)0x8)) {
*(int *)(local_f8 + -4) = *(int *)(local_f8 + -4) + 1;
}
}
FUN_14002e770((longlong)piVar6);
LAB_14002af7d:
local_e8 = *(uint *)(param_1 + 2);
local_b4 = DAT_140162d38;
local_b0 = _DAT_140162d3c;
local_ac = _DAT_140162d40;
local_a8 = _DAT_140162d44;
local_80 = 0;
local_9c = 0x80;
puVar7 = (undefined4 *)0x0;
local_a4 = 0;
local_91 = 1;
iVar18 = *(int *)((longlong)param_1 + 0x14);
if ((iVar18 < 1) || (*(int *)(param_1 + 3) < 1)) {
(**(code **)(*(longlong *)*param_1 + 0x180))((longlong *)*param_1,2);
}
else {
local_120 = (undefined4 **)Proud::CFastArray<int,0>::vftable;
local_118 = (longlong *)0x0;
local_fc = 0;
local_110 = (undefined4 *)0x0;
local_108 = 0;
uStack_104 = 0;
uStack_100 = 0;
local_b8 = 1;
puVar13 = puVar7;
if (iVar18 < *(int *)(param_1 + 3) + iVar18) {
do {
iVar12 = (int)puVar13;
if (iVar12 < 0) {
/* WARNING: Subroutine does not return */
FUN_14002f590();
}
FUN_14002d430((longlong)&local_120,iVar12 + 1,param_3,param_4);
param_4 = (longlong)iVar12;
puVar13 = (undefined4 *)(ulonglong)local_108;
puVar8 = local_110;
if (local_108 == 0) {
puVar8 = puVar7;
}
puVar8[param_4] = iVar18;
iVar18 = iVar18 + 1;
} while (iVar18 < *(int *)(param_1 + 3) + *(int *)((longlong)param_1 + 0x14));
if ((int)local_108 < 0) {
/* WARNING: Subroutine does not return */
FUN_14002f590();
}
}
uVar1 = local_108;
puVar13 = local_110;
plVar17 = local_118;
FUN_14002d430((longlong)&local_e0,local_108,param_3,param_4);
puVar8 = local_d0;
if (local_c8 == 0) {
puVar8 = puVar7;
}
puVar15 = puVar13;
if (uVar1 == 0) {
puVar15 = puVar7;
}
lVar11 = (longlong)(int)uVar1;
if (0 < (int)uVar1) {
lVar16 = (longlong)puVar15 - (longlong)puVar8;
do {
*puVar8 = *(undefined4 *)(lVar16 + (longlong)puVar8);
puVar8 = puVar8 + 1;
lVar11 = lVar11 + -1;
} while (lVar11 != 0);
}
if (puVar13 != (undefined4 *)0x0) {
if (plVar17 == (longlong *)0x0) {
FUN_1400302f0(puVar13);
}
else {
(**(code **)(*plVar17 + 0x18))(plVar17,puVar13);
}
}
}
local_158 = (int *)0x0;
(**(code **)(*(longlong *)*param_1 + 0x138))((longlong *)*param_1,&local_f8,&local_158);
puVar7 = local_f0;
if (local_f0 == (undefined4 *)0x0) {
puVar7 = (undefined4 *)PTR_DAT_140155010;
}
plVar17 = (longlong *)(ulonglong)local_e8;
FUN_140010960(L"Server Start : ADDRESS[%s] PORT[%d]",puVar7,plVar17,param_4);
piVar6 = local_158;
if (local_158 != (int *)0x0) {
local_140 = local_158;
FUN_14002e6e0(local_158);
local_138 = 1;
*(longlong *)(local_158 + 0x10) = *(longlong *)(local_158 + 0x10) + -1;
if (*(longlong *)(local_158 + 0x10) == 0) {
FUN_14002e770((longlong)piVar6);
local_138 = 0;
FUN_14002b500(local_158,puVar7,plVar17,param_4);
}
else {
FUN_14002e770((longlong)piVar6);
}
}
local_70 = Proud::CFastArray<int,0>::vftable;
if (local_60 != (undefined4 *)0x0) {
if (local_68 == (longlong *)0x0) {
FUN_1400302f0(local_60);
plVar17 = local_68;
}
else {
(**(code **)(*local_68 + 0x18))(local_68);
puVar7 = local_60;
plVar17 = local_68;
}
}
local_e0 = Proud::CFastArray<int,0>::vftable;
if (local_d0 != (undefined4 *)0x0) {
if (local_d8 == (longlong *)0x0) {
FUN_1400302f0(local_d0);
plVar17 = local_d8;
}
else {
(**(code **)(*local_d8 + 0x18))(local_d8);
puVar7 = local_d0;
plVar17 = local_d8;
}
}
ppuVar9 = &local_f0;
FUN_140003240((longlong *)ppuVar9,puVar7,plVar17,param_4);
puVar5 = local_f8;
if (((local_f8 != (undefined *)0x0) && (local_f8 != PTR_DAT_140155010)) &&
(puVar14 = local_f8 + -8, puVar14 != (undefined *)0x0)) {
piVar2 = (int *)FUN_140030200(ppuVar9,puVar7,plVar17,param_4);
local_150 = piVar2;
FUN_14002e6e0(piVar2);
local_148 = 1;
piVar6 = (int *)(puVar5 + -4);
*piVar6 = *piVar6 + -1;
if (*piVar6 == 0) {
FUN_1400302f0(puVar14);
}
FUN_14002e770((longlong)piVar2);
}
return;
}