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

311 lines
11 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x14004b260 FUN_14004b260
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
/* WARNING: Removing unreachable block (ram,0x00014004b6c0) */
void FUN_14004b260(longlong *param_1,wchar_t *param_2,SIZE_T *param_3,undefined8 param_4)
{
ulonglong _Size;
uint uVar1;
longlong lVar2;
code *pcVar3;
char *pcVar4;
double dVar5;
int *piVar6;
ulonglong uVar7;
undefined4 *puVar8;
longlong lVar9;
undefined8 uVar10;
undefined1 *puVar11;
undefined1 *puVar12;
longlong lVar13;
longlong lVar14;
undefined8 *puVar15;
undefined1 auStack_dd8 [32];
int local_db8 [2];
longlong local_db0;
longlong local_da8;
uint local_da0;
int local_d9c;
int *local_d90;
bool local_d88;
longlong *local_d80;
SIZE_T local_d78;
undefined1 local_d70;
SIZE_T local_d68;
undefined1 local_d60;
longlong local_d58;
uint uStack_d50;
undefined4 uStack_d4c;
int *local_d48;
undefined1 local_d40;
longlong local_d38;
uint uStack_d30;
undefined4 uStack_d2c;
undefined8 local_d28;
exception local_d20 [72];
longlong local_cd8;
undefined8 uStack_cd0;
longlong *local_58;
undefined4 local_50;
int local_4c;
ulonglong local_48;
puVar11 = auStack_dd8;
puVar12 = auStack_dd8;
local_d28 = 0xfffffffffffffffe;
local_48 = DAT_1401555a0 ^ (ulonglong)local_db8;
piVar6 = (int *)(**(code **)(*param_1 + 0x58))();
local_d48 = piVar6;
FUN_14002e6e0(piVar6);
local_d40 = 1;
if (DAT_14015bfcf != '\0') {
param_3 = (SIZE_T *)*param_1;
param_2 = L"Proud::CNetServerImpl::PurgeTooOldUnmatureClient";
(*(code *)param_3[0x19])(param_1);
}
if ((int)param_1[0x2e1] < 1) {
FUN_14002e770((longlong)piVar6);
goto LAB_14004b778;
}
lVar14 = (longlong)(int)param_1[0x2e1] * 8;
_Size = lVar14 + 0x10;
if (_Size < 0x401) {
uVar7 = lVar14 + 0x1f;
if (uVar7 <= _Size) {
uVar7 = 0xffffffffffffff0;
}
lVar14 = -(uVar7 & 0xfffffffffffffff0);
puVar11 = auStack_dd8 + lVar14;
puVar8 = (undefined4 *)((longlong)local_db8 + lVar14);
puVar15 = (undefined8 *)0x0;
puVar12 = auStack_dd8 + lVar14;
if (puVar8 != (undefined4 *)0x0) {
*puVar8 = 0xcccc;
LAB_14004b358:
puVar15 = (undefined8 *)(puVar8 + 4);
puVar12 = puVar11;
}
}
else {
puVar8 = malloc(_Size);
puVar15 = (undefined8 *)0x0;
puVar12 = auStack_dd8;
if (puVar8 != (undefined4 *)0x0) {
*puVar8 = 0xdddd;
goto LAB_14004b358;
}
}
*(undefined8 *)(puVar12 + -8) = 0x14004b368;
dVar5 = FUN_14003a420((char *)(param_1 + 0xec));
lVar13 = 0;
lVar14 = lVar13;
if (param_1[0x2e1] != 0) {
lVar14 = param_1[0x2df];
}
for (; lVar14 != 0; lVar14 = *(longlong *)(lVar14 + 0x18)) {
lVar2 = *(longlong *)(lVar14 + 0x10);
if ((DAT_14015c008 < dVar5 - *(double *)(lVar2 + 0x690)) && (*(char *)(lVar2 + 0x698) == '\0'))
{
*(undefined8 *)(puVar12 + -8) = 0x14004b3bc;
FUN_14009c460(lVar2 + 0xc0);
puVar15[lVar13] = lVar2;
lVar13 = lVar13 + 1;
}
}
*(undefined8 *)(puVar12 + -8) = 0x14004b3d4;
FUN_14002e770((longlong)piVar6);
local_d40 = 0;
while ((0 < lVar13 && (lVar14 = 0, 0 < lVar13))) {
do {
lVar2 = puVar15[lVar14];
pcVar3 = *(code **)(*(longlong *)(lVar2 + 0x108) + 0x10);
*(undefined8 *)(puVar12 + -8) = 0x14004b402;
piVar6 = (int *)(*pcVar3)();
local_d88 = false;
local_d90 = piVar6;
if (lVar14 == 0) {
local_d88 = true;
*(undefined8 *)(puVar12 + -8) = 0x14004b57d;
FUN_14002e6e0(piVar6);
*(undefined8 *)(puVar12 + -8) = 0x14004b586;
FUN_1400806d0(local_db8);
*(undefined8 *)(puVar12 + -8) = 0x14004b590;
FUN_1400801a0((longlong)local_db8,param_2,(SIZE_T)param_3,param_4);
*(undefined8 *)(puVar12 + -8) = 0x14004b59e;
FUN_140080830(local_db8,0x800,(SIZE_T)param_3,param_4);
uVar10 = 0;
*(undefined8 *)(puVar12 + -8) = 0x14004b5a9;
FUN_140080830(local_db8,0,(SIZE_T)param_3,param_4);
uVar10 = CONCAT71((int7)((ulonglong)uVar10 >> 8),3);
*(undefined8 *)(puVar12 + -8) = 0x14004b5b5;
FUN_14001ba80((longlong)local_db8,uVar10,(SIZE_T)param_3,param_4);
local_4c = 200;
local_50 = 0;
local_58 = &local_cd8;
if (local_db0 == 0) {
uVar1 = local_da0;
if (local_da8 == 0) {
/* WARNING: Subroutine does not return */
*(undefined8 *)(puVar12 + -8) = 0x14004b75f;
FUN_140095370(0,uVar10,param_3,param_4);
}
}
else {
uVar1 = *(uint *)(local_db0 + 0x18);
}
lVar9 = local_da8;
if (local_da8 == 0) {
if (local_db0 == 0) {
/* WARNING: Subroutine does not return */
*(undefined **)(puVar12 + -8) = &UNK_14004b759;
FUN_140095370(0,(ulonglong)uVar1,param_3,param_4);
}
lVar9 = 0;
if (*(int *)(local_db0 + 0x18) != 0) {
lVar9 = *(longlong *)(local_db0 + 0x10);
}
}
local_50 = 1;
uStack_cd0 = CONCAT44(uStack_d2c,uVar1);
local_d68 = 0;
local_d60 = 1;
param_3 = &local_d68;
param_2 = (wchar_t *)&local_cd8;
pcVar4 = *(char **)(lVar2 + 0x748);
local_d38 = lVar9;
uStack_d30 = uVar1;
local_cd8 = lVar9;
*(undefined8 *)(puVar12 + -8) = 0x14004b650;
FUN_14009c2b0(pcVar4,(longlong)param_2,param_3,param_4);
if (local_58 == (longlong *)0x0) {
*(undefined8 *)(puVar12 + -8) = 0x14004b740;
FUN_14002f1e0(local_d20,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401569a0,
param_3,param_4);
/* WARNING: Subroutine does not return */
*(undefined **)(puVar12 + -8) = &UNK_14004b753;
_CxxThrowException(local_d20,(ThrowInfo *)&DAT_140151b88);
}
if (local_4c < 0) {
/* WARNING: Subroutine does not return */
*(undefined **)(puVar12 + -8) = &UNK_14004b72c;
FUN_14002f590();
}
*(undefined1 *)(lVar2 + 0x698) = 1;
*(undefined8 *)(puVar12 + -8) = 0x14004b67d;
FUN_14002e770((longlong)piVar6);
local_d88 = false;
*(undefined8 *)(puVar12 + -8) = 0x14004b68f;
FUN_14009c470(lVar2 + 0xc0);
*puVar15 = puVar15[lVar13 + -1];
lVar13 = lVar13 + -1;
local_d80 = &local_db0;
*(undefined8 *)(puVar12 + -8) = 0x14004b6ae;
FUN_140095270(&local_db0);
if ((local_da8 != 0) && (local_d9c < 0)) {
/* WARNING: Subroutine does not return */
*(undefined8 *)(puVar12 + -8) = 0x14004b726;
FUN_14002f590();
}
}
else {
*(undefined8 *)(puVar12 + -8) = 0x14004b41e;
local_d88 = FUN_14002e730(piVar6);
if (local_d88) {
*(undefined8 *)(puVar12 + -8) = 0x14004b435;
FUN_1400806d0(local_db8);
*(undefined8 *)(puVar12 + -8) = 0x14004b43f;
FUN_1400801a0((longlong)local_db8,param_2,(SIZE_T)param_3,param_4);
*(undefined8 *)(puVar12 + -8) = 0x14004b44d;
FUN_140080830(local_db8,0x800,(SIZE_T)param_3,param_4);
uVar10 = 0;
*(undefined8 *)(puVar12 + -8) = 0x14004b458;
FUN_140080830(local_db8,0,(SIZE_T)param_3,param_4);
uVar10 = CONCAT71((int7)((ulonglong)uVar10 >> 8),3);
*(undefined8 *)(puVar12 + -8) = 0x14004b464;
FUN_14001ba80((longlong)local_db8,uVar10,(SIZE_T)param_3,param_4);
local_4c = 200;
local_50 = 0;
local_58 = &local_cd8;
if (local_db0 == 0) {
uVar1 = local_da0;
if (local_da8 == 0) {
/* WARNING: Subroutine does not return */
*(undefined8 *)(puVar12 + -8) = 0x14004b720;
FUN_140095370(0,uVar10,0,param_4);
}
}
else {
uVar1 = *(uint *)(local_db0 + 0x18);
}
lVar9 = local_da8;
if (local_da8 == 0) {
if (local_db0 == 0) {
/* WARNING: Subroutine does not return */
*(undefined **)(puVar12 + -8) = &UNK_14004b71a;
FUN_140095370(0,(ulonglong)uVar1,0,param_4);
}
lVar9 = 0;
if (*(int *)(local_db0 + 0x18) != 0) {
lVar9 = *(longlong *)(local_db0 + 0x10);
}
}
local_50 = 1;
uStack_cd0 = CONCAT44(uStack_d4c,uVar1);
local_d78 = 0;
local_d70 = 1;
param_3 = &local_d78;
param_2 = (wchar_t *)&local_cd8;
pcVar4 = *(char **)(lVar2 + 0x748);
local_d58 = lVar9;
uStack_d50 = uVar1;
local_cd8 = lVar9;
*(undefined8 *)(puVar12 + -8) = 0x14004b4fa;
FUN_14009c2b0(pcVar4,(longlong)param_2,param_3,param_4);
if (local_58 == (longlong *)0x0) {
*(undefined8 *)(puVar12 + -8) = 0x14004b701;
FUN_14002f1e0(local_d20,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401569a0,
param_3,param_4);
/* WARNING: Subroutine does not return */
*(undefined **)(puVar12 + -8) = &UNK_14004b714;
_CxxThrowException(local_d20,(ThrowInfo *)&DAT_140151b88);
}
if (local_4c < 0) {
/* WARNING: Subroutine does not return */
*(undefined **)(puVar12 + -8) = &UNK_14004b6ed;
FUN_14002f590();
}
*(undefined1 *)(lVar2 + 0x698) = 1;
*(undefined8 *)(puVar12 + -8) = 0x14004b527;
FUN_14002e770((longlong)piVar6);
local_d88 = false;
*(undefined8 *)(puVar12 + -8) = 0x14004b539;
FUN_14009c470(lVar2 + 0xc0);
puVar15[lVar14] = puVar15[lVar13 + -1];
lVar13 = lVar13 + -1;
local_d80 = &local_db0;
*(undefined8 *)(puVar12 + -8) = 0x14004b559;
FUN_140095270(&local_db0);
if ((local_da8 != 0) && (local_d9c < 0)) {
/* WARNING: Subroutine does not return */
*(undefined8 *)(puVar12 + -8) = 0x14004b6e7;
FUN_14002f590();
}
}
}
lVar14 = lVar14 + 1;
} while (lVar14 < lVar13);
}
if ((puVar15 != (undefined8 *)0x0) && (*(int *)(puVar15 + -2) == 0xdddd)) {
*(undefined8 *)(puVar12 + -8) = 0x14004b777;
free(puVar15 + -2);
}
LAB_14004b778:
*(undefined8 *)(puVar12 + -8) = 0x14004b787;
return;
}