311 lines
11 KiB
C
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;
|
|
}
|
|
|