387 lines
12 KiB
C
387 lines
12 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14004f490 FUN_14004f490
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
/* WARNING: Removing unreachable block (ram,0x00014004f97b) */
|
|
/* WARNING: Removing unreachable block (ram,0x00014004f81f) */
|
|
/* WARNING: Removing unreachable block (ram,0x00014004fadb) */
|
|
|
|
void FUN_14004f490(SIZE_T *param_1,wchar_t *param_2,SIZE_T param_3,undefined *param_4)
|
|
|
|
{
|
|
code *pcVar1;
|
|
longlong lVar2;
|
|
int *piVar3;
|
|
longlong lVar4;
|
|
ulonglong uVar5;
|
|
undefined4 *puVar6;
|
|
longlong *plVar7;
|
|
ulonglong uVar8;
|
|
longlong lVar9;
|
|
undefined1 *puVar10;
|
|
undefined1 *puVar11;
|
|
undefined1 *puVar12;
|
|
undefined1 *puVar13;
|
|
int iVar14;
|
|
longlong lVar15;
|
|
SIZE_T SVar16;
|
|
undefined8 *puVar17;
|
|
longlong *plVar18;
|
|
double dVar19;
|
|
undefined1 auStack_a8 [32];
|
|
int *local_88;
|
|
bool local_80;
|
|
longlong *local_78;
|
|
int *local_70;
|
|
undefined1 local_68;
|
|
SIZE_T local_60;
|
|
SIZE_T local_58;
|
|
undefined8 local_50;
|
|
ulonglong local_48;
|
|
|
|
puVar10 = auStack_a8;
|
|
puVar13 = auStack_a8;
|
|
local_50 = 0xfffffffffffffffe;
|
|
local_48 = DAT_14016f5a0 ^ (ulonglong)&local_88;
|
|
piVar3 = (int *)(**(code **)(*param_1 + 0x58))();
|
|
local_70 = piVar3;
|
|
FUN_14003d040(piVar3);
|
|
local_68 = 1;
|
|
if (DAT_14017614f != '\0') {
|
|
param_3 = *param_1;
|
|
param_2 = L"Proud::CNetServerImpl::TcpAndUdp_DoForLongInterval";
|
|
(**(code **)(param_3 + 200))(param_1);
|
|
}
|
|
lVar4 = (longlong)(int)param_1[0xdc];
|
|
puVar17 = (undefined8 *)0x0;
|
|
if (0 < (int)param_1[0xdc]) {
|
|
uVar8 = lVar4 * 8 + 0x10;
|
|
if (uVar8 < 0x401) {
|
|
uVar5 = lVar4 * 8 + 0x1f;
|
|
if (uVar5 <= uVar8) {
|
|
uVar5 = 0xffffffffffffff0;
|
|
}
|
|
lVar9 = -(uVar5 & 0xfffffffffffffff0);
|
|
puVar10 = auStack_a8 + lVar9;
|
|
puVar6 = (undefined4 *)((longlong)&local_88 + lVar9);
|
|
puVar17 = (undefined8 *)0x0;
|
|
puVar13 = auStack_a8 + lVar9;
|
|
if (puVar6 != (undefined4 *)0x0) {
|
|
*puVar6 = 0xcccc;
|
|
LAB_14004f57e:
|
|
puVar17 = (undefined8 *)(puVar6 + 4);
|
|
puVar13 = puVar10;
|
|
}
|
|
}
|
|
else {
|
|
puVar6 = malloc(uVar8);
|
|
puVar17 = (undefined8 *)0x0;
|
|
puVar13 = auStack_a8;
|
|
if (puVar6 != (undefined4 *)0x0) {
|
|
*puVar6 = 0xdddd;
|
|
goto LAB_14004f57e;
|
|
}
|
|
}
|
|
iVar14 = 0;
|
|
lVar9 = 0;
|
|
piVar3 = local_70;
|
|
if (0 < lVar4) {
|
|
do {
|
|
if ((lVar9 < 0) || ((int)param_1[0xdc] <= iVar14)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar13 + -8) = &UNK_14004f5cf;
|
|
FUN_14003def0(uVar8,param_2,param_3,param_4);
|
|
}
|
|
plVar18 = *(longlong **)(param_1[0xdb] + lVar9 * 8);
|
|
lVar15 = 0;
|
|
if (plVar18 != (longlong *)0x0) {
|
|
lVar15 = *plVar18;
|
|
}
|
|
uVar8 = lVar15 + 0x40;
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f5ba;
|
|
FUN_140091240(uVar8);
|
|
puVar17[lVar9] = lVar15;
|
|
iVar14 = iVar14 + 1;
|
|
lVar9 = lVar9 + 1;
|
|
piVar3 = local_70;
|
|
} while (lVar9 < lVar4);
|
|
}
|
|
}
|
|
local_58 = param_1[0x193];
|
|
plVar18 = (longlong *)0x0;
|
|
if (0 < (int)local_58) {
|
|
lVar9 = (longlong)(int)local_58 * 8;
|
|
uVar8 = lVar9 + 0x10;
|
|
if (uVar8 < 0x401) {
|
|
uVar5 = lVar9 + 0x1f;
|
|
if (uVar5 <= uVar8) {
|
|
uVar5 = 0xffffffffffffff0;
|
|
}
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f61c;
|
|
lVar9 = -(uVar5 & 0xfffffffffffffff0);
|
|
puVar11 = puVar13 + lVar9;
|
|
puVar6 = (undefined4 *)(puVar13 + lVar9 + 0x20);
|
|
plVar18 = (longlong *)0x0;
|
|
puVar13 = puVar13 + lVar9;
|
|
if (puVar6 != (undefined4 *)0x0) {
|
|
*puVar6 = 0xcccc;
|
|
puVar13 = puVar11;
|
|
LAB_14004f646:
|
|
plVar18 = (longlong *)(puVar6 + 4);
|
|
}
|
|
}
|
|
else {
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f638;
|
|
puVar6 = malloc(uVar8);
|
|
plVar18 = (longlong *)0x0;
|
|
if (puVar6 != (undefined4 *)0x0) {
|
|
*puVar6 = 0xdddd;
|
|
goto LAB_14004f646;
|
|
}
|
|
}
|
|
plVar7 = plVar18;
|
|
if (param_1[0x193] == 0) {
|
|
SVar16 = 0;
|
|
}
|
|
else {
|
|
SVar16 = param_1[0x191];
|
|
}
|
|
for (; piVar3 = local_70, SVar16 != 0; SVar16 = *(SIZE_T *)(SVar16 + 0x10)) {
|
|
lVar9 = *(longlong *)(SVar16 + 8);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f677;
|
|
FUN_140091240(lVar9 + 0xc0);
|
|
*plVar7 = lVar9;
|
|
plVar7 = plVar7 + 1;
|
|
}
|
|
}
|
|
local_60 = param_1[0x2e1];
|
|
local_78 = (longlong *)0x0;
|
|
if ((int)local_60 < 1) goto LAB_14004f746;
|
|
lVar9 = (longlong)(int)local_60 * 8;
|
|
uVar8 = lVar9 + 0x10;
|
|
if (uVar8 < 0x401) {
|
|
uVar5 = lVar9 + 0x1f;
|
|
if (uVar5 <= uVar8) {
|
|
uVar5 = 0xffffffffffffff0;
|
|
}
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f6d1;
|
|
lVar9 = -(uVar5 & 0xfffffffffffffff0);
|
|
puVar12 = puVar13 + lVar9;
|
|
plVar7 = (longlong *)(puVar13 + lVar9 + 0x20);
|
|
puVar13 = puVar13 + lVar9;
|
|
local_78 = plVar7;
|
|
if (plVar7 != (longlong *)0x0) {
|
|
*(undefined4 *)plVar7 = 0xcccc;
|
|
puVar13 = puVar12;
|
|
LAB_14004f6ff:
|
|
local_78 = plVar7 + 2;
|
|
}
|
|
}
|
|
else {
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f6f0;
|
|
plVar7 = malloc(uVar8);
|
|
local_78 = plVar7;
|
|
if (plVar7 != (longlong *)0x0) {
|
|
*(undefined4 *)plVar7 = 0xdddd;
|
|
goto LAB_14004f6ff;
|
|
}
|
|
}
|
|
plVar7 = local_78;
|
|
if (param_1[0x2e1] == 0) {
|
|
SVar16 = 0;
|
|
}
|
|
else {
|
|
SVar16 = param_1[0x2df];
|
|
}
|
|
for (; piVar3 = local_70, SVar16 != 0; SVar16 = *(SIZE_T *)(SVar16 + 0x18)) {
|
|
lVar9 = *(longlong *)(SVar16 + 0x10);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f735;
|
|
FUN_140091240(lVar9 + 0xc0);
|
|
*plVar7 = lVar9;
|
|
plVar7 = plVar7 + 1;
|
|
}
|
|
LAB_14004f746:
|
|
pcVar1 = *(code **)(param_1[0x23] + 8);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f753;
|
|
dVar19 = (double)(*pcVar1)();
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f75f;
|
|
FUN_14003d0d0((longlong)piVar3);
|
|
local_68 = 0;
|
|
if (puVar17 != (undefined8 *)0x0) {
|
|
while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) {
|
|
do {
|
|
lVar15 = puVar17[lVar9];
|
|
pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x88) + 0x10);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f791;
|
|
piVar3 = (int *)(*pcVar1)();
|
|
local_80 = false;
|
|
local_88 = piVar3;
|
|
if (lVar9 == 0) {
|
|
local_80 = true;
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f7eb;
|
|
FUN_14003d040(piVar3);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f7f7;
|
|
FUN_1400915d0(lVar15,param_2,param_3,param_4);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f7ff;
|
|
FUN_14003d0d0((longlong)piVar3);
|
|
local_80 = false;
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f80f;
|
|
FUN_140091250(lVar15 + 0x40);
|
|
*puVar17 = puVar17[lVar4 + -1];
|
|
LAB_14004f817:
|
|
lVar4 = lVar4 + -1;
|
|
}
|
|
else {
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f7a9;
|
|
local_80 = FUN_14003d090(piVar3);
|
|
if (local_80) {
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f7bf;
|
|
FUN_1400915d0(lVar15,param_2,param_3,param_4);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f7c7;
|
|
FUN_14003d0d0((longlong)piVar3);
|
|
local_80 = false;
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f7d7;
|
|
FUN_140091250(lVar15 + 0x40);
|
|
puVar17[lVar9] = puVar17[lVar4 + -1];
|
|
goto LAB_14004f817;
|
|
}
|
|
}
|
|
lVar9 = lVar9 + 1;
|
|
} while (lVar9 < lVar4);
|
|
}
|
|
if (*(int *)(puVar17 + -2) == 0xdddd) {
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f852;
|
|
free(puVar17 + -2);
|
|
}
|
|
}
|
|
if (plVar18 != (longlong *)0x0) {
|
|
lVar4 = (longlong)(int)local_58;
|
|
while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) {
|
|
do {
|
|
lVar15 = plVar18[lVar9];
|
|
pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x108) + 0x10);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f892;
|
|
piVar3 = (int *)(*pcVar1)();
|
|
local_80 = false;
|
|
local_88 = piVar3;
|
|
if (lVar9 == 0) {
|
|
local_80 = true;
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f91c;
|
|
FUN_14003d040(piVar3);
|
|
lVar2 = *(longlong *)(lVar15 + 0x748);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f92d;
|
|
FUN_140090cc0(lVar2,dVar19);
|
|
if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) &&
|
|
(lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) {
|
|
lVar2 = *(longlong *)(lVar2 + 0x168);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f952;
|
|
FUN_14008e5f0(lVar2,dVar19,param_3,param_4);
|
|
}
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f95a;
|
|
FUN_14003d0d0((longlong)piVar3);
|
|
local_80 = false;
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f96c;
|
|
FUN_140091250(lVar15 + 0xc0);
|
|
*plVar18 = plVar18[lVar4 + -1];
|
|
LAB_14004f974:
|
|
lVar4 = lVar4 + -1;
|
|
}
|
|
else {
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f8aa;
|
|
local_80 = FUN_14003d090(piVar3);
|
|
if (local_80) {
|
|
lVar2 = *(longlong *)(lVar15 + 0x748);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f8c9;
|
|
FUN_140090cc0(lVar2,dVar19);
|
|
if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) &&
|
|
(lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) {
|
|
lVar2 = *(longlong *)(lVar2 + 0x168);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f8ee;
|
|
FUN_14008e5f0(lVar2,dVar19,param_3,param_4);
|
|
}
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f8f6;
|
|
FUN_14003d0d0((longlong)piVar3);
|
|
local_80 = false;
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f908;
|
|
FUN_140091250(lVar15 + 0xc0);
|
|
plVar18[lVar9] = plVar18[lVar4 + -1];
|
|
goto LAB_14004f974;
|
|
}
|
|
}
|
|
lVar9 = lVar9 + 1;
|
|
} while (lVar9 < lVar4);
|
|
}
|
|
if ((int)plVar18[-2] == 0xdddd) {
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f9ae;
|
|
free(plVar18 + -2);
|
|
}
|
|
}
|
|
plVar18 = local_78;
|
|
if (local_78 != (longlong *)0x0) {
|
|
lVar4 = (longlong)(int)local_60;
|
|
while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) {
|
|
do {
|
|
lVar15 = plVar18[lVar9];
|
|
pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x108) + 0x10);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004f9f2;
|
|
piVar3 = (int *)(*pcVar1)();
|
|
local_80 = false;
|
|
local_88 = piVar3;
|
|
if (lVar9 == 0) {
|
|
local_80 = true;
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004fa7c;
|
|
FUN_14003d040(piVar3);
|
|
lVar2 = *(longlong *)(lVar15 + 0x748);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004fa8d;
|
|
FUN_140090cc0(lVar2,dVar19);
|
|
if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) &&
|
|
(lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) {
|
|
lVar2 = *(longlong *)(lVar2 + 0x168);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004fab2;
|
|
FUN_14008e5f0(lVar2,dVar19,param_3,param_4);
|
|
}
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004faba;
|
|
FUN_14003d0d0((longlong)piVar3);
|
|
local_80 = false;
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004facc;
|
|
FUN_140091250(lVar15 + 0xc0);
|
|
*plVar18 = plVar18[lVar4 + -1];
|
|
LAB_14004fad4:
|
|
lVar4 = lVar4 + -1;
|
|
}
|
|
else {
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004fa0a;
|
|
local_80 = FUN_14003d090(piVar3);
|
|
if (local_80) {
|
|
lVar2 = *(longlong *)(lVar15 + 0x748);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004fa29;
|
|
FUN_140090cc0(lVar2,dVar19);
|
|
if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) &&
|
|
(lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) {
|
|
lVar2 = *(longlong *)(lVar2 + 0x168);
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004fa4e;
|
|
FUN_14008e5f0(lVar2,dVar19,param_3,param_4);
|
|
}
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004fa56;
|
|
FUN_14003d0d0((longlong)piVar3);
|
|
local_80 = false;
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004fa68;
|
|
FUN_140091250(lVar15 + 0xc0);
|
|
plVar18[lVar9] = plVar18[lVar4 + -1];
|
|
goto LAB_14004fad4;
|
|
}
|
|
}
|
|
lVar9 = lVar9 + 1;
|
|
} while (lVar9 < lVar4);
|
|
}
|
|
if ((int)plVar18[-2] == 0xdddd) {
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004fb0e;
|
|
free(plVar18 + -2);
|
|
}
|
|
}
|
|
*(undefined8 *)(puVar13 + -8) = 0x14004fb1b;
|
|
return;
|
|
}
|
|
|