373 lines
14 KiB
C
373 lines
14 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x1400b0cd0 FUN_1400b0cd0
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined8 FUN_1400b0cd0(longlong ****param_1,longlong *param_2,longlong *param_3,ulonglong param_4)
|
|
|
|
{
|
|
longlong ****pppplVar1;
|
|
undefined8 *puVar2;
|
|
longlong *plVar3;
|
|
char cVar4;
|
|
int iVar5;
|
|
wchar_t *pwVar6;
|
|
longlong *plVar7;
|
|
longlong *****ppppplVar8;
|
|
int *piVar9;
|
|
int *piVar10;
|
|
longlong ****pppplVar11;
|
|
longlong ****pppplVar12;
|
|
longlong ****pppplVar13;
|
|
undefined8 uVar14;
|
|
ushort *puVar15;
|
|
longlong **pplVar16;
|
|
longlong ***ppplVar17;
|
|
undefined1 local_res8 [8];
|
|
longlong ****local_res18;
|
|
longlong ****local_res20;
|
|
longlong *local_1c8;
|
|
longlong *local_1c0;
|
|
longlong *local_1b8;
|
|
longlong ****local_1b0;
|
|
longlong ****local_1a8;
|
|
undefined *local_1a0;
|
|
undefined *local_198;
|
|
int *local_190;
|
|
undefined1 local_188;
|
|
int *local_180;
|
|
undefined1 local_178;
|
|
longlong *****local_170;
|
|
undefined1 local_168;
|
|
int *local_160;
|
|
undefined1 local_158;
|
|
longlong *****local_150;
|
|
undefined1 local_148;
|
|
longlong ****local_140;
|
|
undefined1 local_138;
|
|
int *local_130;
|
|
undefined1 local_128;
|
|
longlong *****local_120;
|
|
undefined1 local_118;
|
|
undefined8 local_110;
|
|
undefined4 local_d8;
|
|
uint uStack_d4;
|
|
undefined4 local_d0;
|
|
uint uStack_cc;
|
|
exception local_c8 [72];
|
|
exception local_80 [72];
|
|
|
|
local_110 = 0xfffffffffffffffe;
|
|
local_140 = param_1 + 0x95;
|
|
FUN_14003d040((int *)local_140);
|
|
local_138 = 1;
|
|
pppplVar12 = param_1 + 1;
|
|
(*(code *)(*pppplVar12)[3])(pppplVar12);
|
|
LOCK();
|
|
*(int *)(param_1 + 0xaa) = *(int *)(param_1 + 0xaa) + 1;
|
|
UNLOCK();
|
|
pppplVar1 = param_1 + -0xe;
|
|
local_160 = (int *)(*(code *)(*pppplVar1)[0xb])(pppplVar1);
|
|
FUN_14003d040(local_160);
|
|
local_158 = 1;
|
|
local_res8[0] = 0;
|
|
pwVar6 = (wchar_t *)local_res8;
|
|
ppppplVar8 = (longlong *****)param_1;
|
|
iVar5 = (*(code *)(*param_1)[0x21])();
|
|
if (iVar5 != 0) {
|
|
pwVar6 = FUN_1400923c0(iVar5);
|
|
FUN_14003db10(local_c8,
|
|
L"Wrong state(%s)! Disconnect() or GetServerConnectionState() may be required.",
|
|
pwVar6,param_4);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_c8,(ThrowInfo *)&DAT_14016c210);
|
|
}
|
|
pppplVar13 = (longlong ****)0x0;
|
|
if ((param_1[0xac] != (longlong ***)0x0) && (*param_1[0xac] != (longlong **)0x0)) {
|
|
FUN_14003e7c0(ppppplVar8,pwVar6,param_3,param_4);
|
|
local_res20 = (longlong ****)PTR_DAT_14016f010;
|
|
plVar7 = FUN_14003e4d0((longlong *)&local_1a0,pwVar6,param_3,param_4);
|
|
param_3 = (longlong *)*plVar7;
|
|
if (param_3 == (longlong *)0x0) {
|
|
param_3 = (longlong *)PTR_DAT_14016f010;
|
|
}
|
|
pwVar6 = L"Unstability in Connect #3! Process=%s";
|
|
ppppplVar8 = &local_res20;
|
|
FUN_140029b80((longlong *)ppppplVar8,L"Unstability in Connect #3! Process=%s",param_3,param_4);
|
|
if (((local_1a0 != (undefined *)0x0) && (local_1a0 != PTR_DAT_14016f010)) &&
|
|
(local_1a0 + -8 != (undefined *)0x0)) {
|
|
ppppplVar8 = (longlong *****)FUN_14003e7c0(ppppplVar8,pwVar6,param_3,param_4);
|
|
local_170 = ppppplVar8;
|
|
FUN_14003d040((int *)ppppplVar8);
|
|
local_168 = 1;
|
|
piVar9 = (int *)(local_1a0 + -4);
|
|
*piVar9 = *piVar9 + -1;
|
|
if (*piVar9 == 0) {
|
|
FUN_14003e8b0(local_1a0 + -8);
|
|
}
|
|
FUN_14003d0d0((longlong)ppppplVar8);
|
|
local_168 = 0;
|
|
}
|
|
local_1a0 = PTR_DAT_14016f010;
|
|
FUN_14003e7c0(ppppplVar8,pwVar6,param_3,param_4);
|
|
pppplVar11 = local_res20;
|
|
local_res18 = (longlong ****)PTR_DAT_14016f010;
|
|
if (PTR_DAT_14016f010 == (undefined *)0x0) {
|
|
local_res18 = pppplVar13;
|
|
}
|
|
if (local_res20 != (longlong ****)PTR_DAT_14016f010) {
|
|
piVar9 = (int *)FUN_14003e7c0(ppppplVar8,pwVar6,param_3,param_4);
|
|
local_190 = piVar9;
|
|
FUN_14003d040(piVar9);
|
|
local_188 = 1;
|
|
FUN_140002190((longlong *)&local_res18,pwVar6,param_3,param_4);
|
|
local_res18 = pppplVar11;
|
|
if (((pppplVar11 != (longlong ****)PTR_DAT_14016f010) && (pppplVar11 != (longlong ****)0x0))
|
|
&& (pppplVar11 != (longlong ****)0x8)) {
|
|
*(int *)((longlong)pppplVar11 + -4) = *(int *)((longlong)pppplVar11 + -4) + 1;
|
|
}
|
|
FUN_14003d0d0((longlong)piVar9);
|
|
local_188 = 0;
|
|
}
|
|
ppppplVar8 = &local_res18;
|
|
FUN_1400416f0((longlong *)ppppplVar8,pwVar6,param_3,param_4);
|
|
if (((pppplVar11 != (longlong ****)0x0) && (pppplVar11 != (longlong ****)PTR_DAT_14016f010)) &&
|
|
(pppplVar11 + -1 != (longlong ****)0x0)) {
|
|
ppppplVar8 = (longlong *****)FUN_14003e7c0(ppppplVar8,pwVar6,param_3,param_4);
|
|
local_150 = ppppplVar8;
|
|
FUN_14003d040((int *)ppppplVar8);
|
|
local_148 = 1;
|
|
piVar9 = (int *)((longlong)pppplVar11 + -4);
|
|
*piVar9 = *piVar9 + -1;
|
|
if (*piVar9 == 0) {
|
|
FUN_14003e8b0(pppplVar11 + -1);
|
|
}
|
|
FUN_14003d0d0((longlong)ppppplVar8);
|
|
local_148 = 0;
|
|
}
|
|
local_res20 = (longlong ****)PTR_DAT_14016f010;
|
|
}
|
|
if (((param_1[0x296] != (longlong ***)0x0) && (*param_1[0x296] != (longlong **)0x0)) ||
|
|
((param_1[0x2a0] != (longlong ***)0x0 && (*param_1[0x2a0] != (longlong **)0x0)))) {
|
|
FUN_14003e7c0(ppppplVar8,pwVar6,param_3,param_4);
|
|
local_1a8 = (longlong ****)PTR_DAT_14016f010;
|
|
plVar7 = FUN_14003e4d0((longlong *)&local_198,pwVar6,param_3,param_4);
|
|
param_3 = (longlong *)*plVar7;
|
|
if (param_3 == (longlong *)0x0) {
|
|
param_3 = (longlong *)PTR_DAT_14016f010;
|
|
}
|
|
pwVar6 = L"Unstability in Connect #1! Process=%s";
|
|
ppppplVar8 = &local_1a8;
|
|
FUN_140029b80((longlong *)ppppplVar8,L"Unstability in Connect #1! Process=%s",param_3,param_4);
|
|
if (((local_198 != (undefined *)0x0) && (local_198 != PTR_DAT_14016f010)) &&
|
|
(local_198 + -8 != (undefined *)0x0)) {
|
|
ppppplVar8 = (longlong *****)FUN_14003e7c0(ppppplVar8,pwVar6,param_3,param_4);
|
|
local_120 = ppppplVar8;
|
|
FUN_14003d040((int *)ppppplVar8);
|
|
local_118 = 1;
|
|
piVar9 = (int *)(local_198 + -4);
|
|
*piVar9 = *piVar9 + -1;
|
|
if (*piVar9 == 0) {
|
|
FUN_14003e8b0(local_198 + -8);
|
|
}
|
|
FUN_14003d0d0((longlong)ppppplVar8);
|
|
local_118 = 0;
|
|
}
|
|
local_198 = PTR_DAT_14016f010;
|
|
FUN_14003e7c0(ppppplVar8,pwVar6,param_3,param_4);
|
|
pppplVar11 = local_1a8;
|
|
local_1b0 = (longlong ****)PTR_DAT_14016f010;
|
|
if (PTR_DAT_14016f010 == (undefined *)0x0) {
|
|
local_1b0 = pppplVar13;
|
|
}
|
|
if (local_1a8 != (longlong ****)PTR_DAT_14016f010) {
|
|
piVar9 = (int *)FUN_14003e7c0(ppppplVar8,pwVar6,param_3,param_4);
|
|
local_130 = piVar9;
|
|
FUN_14003d040(piVar9);
|
|
local_128 = 1;
|
|
FUN_140002190((longlong *)&local_1b0,pwVar6,param_3,param_4);
|
|
local_1b0 = pppplVar11;
|
|
if (((pppplVar11 != (longlong ****)PTR_DAT_14016f010) && (pppplVar11 != (longlong ****)0x0))
|
|
&& (pppplVar11 != (longlong ****)0x8)) {
|
|
*(int *)((longlong)pppplVar11 + -4) = *(int *)((longlong)pppplVar11 + -4) + 1;
|
|
}
|
|
FUN_14003d0d0((longlong)piVar9);
|
|
local_128 = 0;
|
|
}
|
|
ppppplVar8 = &local_1b0;
|
|
FUN_1400416f0((longlong *)ppppplVar8,pwVar6,param_3,param_4);
|
|
if (((pppplVar11 != (longlong ****)0x0) && (pppplVar11 != (longlong ****)PTR_DAT_14016f010)) &&
|
|
(pppplVar11 + -1 != (longlong ****)0x0)) {
|
|
piVar10 = (int *)FUN_14003e7c0(ppppplVar8,pwVar6,param_3,param_4);
|
|
local_180 = piVar10;
|
|
FUN_14003d040(piVar10);
|
|
local_178 = 1;
|
|
piVar9 = (int *)((longlong)pppplVar11 + -4);
|
|
*piVar9 = *piVar9 + -1;
|
|
if (*piVar9 == 0) {
|
|
FUN_14003e8b0(pppplVar11 + -1);
|
|
}
|
|
FUN_14003d0d0((longlong)piVar10);
|
|
local_178 = 0;
|
|
}
|
|
local_1a8 = (longlong ****)PTR_DAT_14016f010;
|
|
}
|
|
puVar15 = (ushort *)*param_2;
|
|
if ((ushort *)*param_2 == (ushort *)0x0) {
|
|
puVar15 = (ushort *)PTR_DAT_14016f010;
|
|
}
|
|
iVar5 = FUN_14003e660(puVar15,0x140120cf0);
|
|
if (((iVar5 != 0) && ((short)param_2[1] != 0)) && ((short)param_2[1] != -1)) {
|
|
puVar15 = (ushort *)*param_2;
|
|
if ((ushort *)*param_2 == (ushort *)0x0) {
|
|
puVar15 = (ushort *)PTR_DAT_14016f010;
|
|
}
|
|
pwVar6 = L"255.255.255.255";
|
|
iVar5 = FUN_14003e660(puVar15,0x140120cd0);
|
|
if (iVar5 != 0) {
|
|
ppplVar17 = (longlong ***)param_2[9];
|
|
if ((double)param_2[9] <= 0.0) {
|
|
ppplVar17 = DAT_14016f1a0;
|
|
}
|
|
param_1[0x2fe] = ppplVar17;
|
|
FUN_14009a9f0((double *)(param_1 + 0x2e1));
|
|
FUN_14009a9c0((double *)(param_1 + 0x301),(double)param_1[0x2fe]);
|
|
FUN_14009a9f0((double *)(param_1 + 0x301));
|
|
FUN_14009a9f0((double *)(param_1 + 9));
|
|
FUN_1400b0a90((longlong *)(param_1 + 0x2ae),(longlong *)pwVar6,param_3,param_4);
|
|
FUN_1400b0a90((longlong *)(param_1 + 0x2b2),(longlong *)pwVar6,param_3,param_4);
|
|
ppplVar17 = (longlong ***)(*(code *)(*param_1)[0x38])(param_1);
|
|
param_1[0x30a] = ppplVar17;
|
|
*(undefined1 *)(param_1 + 0xbc) = 0;
|
|
ppplVar17 = (longlong ***)FUN_14003e970();
|
|
param_1[0xba] = ppplVar17;
|
|
param_1[0xbb] = DAT_14016f090;
|
|
cVar4 = FUN_140048a20((longlong)(param_1 + 0x2b6));
|
|
if (cVar4 == '\0') {
|
|
FUN_140048920((char *)(param_1 + 0x2b6));
|
|
}
|
|
FUN_1400488d0((char *)(param_1 + 0x2b6));
|
|
uStack_d4 = uStack_d4 & 0xffffff00;
|
|
local_d8 = 0;
|
|
local_d0 = 0;
|
|
param_1[0xbd] = (longlong ***)0x0;
|
|
param_1[0xbe] = (longlong ***)0x0;
|
|
param_1[0xbf] = (longlong ***)0x0;
|
|
param_1[0xc0] = (longlong ***)0x0;
|
|
param_1[0xc1] = (longlong ***)0x0;
|
|
param_1[0xc2] = (longlong ***)0x0;
|
|
param_1[0xc3] = (longlong ***)((ulonglong)uStack_d4 << 0x20);
|
|
param_1[0xc4] = (longlong ***)((ulonglong)uStack_cc << 0x20);
|
|
ppplVar17 = (longlong ***)(*(code *)(*param_1)[0x38])(param_1);
|
|
param_1[699] = ppplVar17;
|
|
*(undefined4 *)(param_1 + 0xd2) = 0;
|
|
param_1[0xab] = (longlong ***)0x0;
|
|
*(undefined4 *)((longlong)param_1 + 0x47c) = 0;
|
|
param_1[0x90] = (longlong ***)0x0;
|
|
param_1[0x91] = (longlong ***)0x0;
|
|
param_1[0x92] = (longlong ***)0x0;
|
|
*(undefined4 *)(param_1 + 0x2a1) = 0;
|
|
param_1[0x304] = (longlong ***)0x0;
|
|
*(undefined4 *)(param_1 + 0x8d) = 0;
|
|
local_1b8 = operator_new(0x200);
|
|
pppplVar11 = pppplVar13;
|
|
if (local_1b8 != (longlong *)0x0) {
|
|
if (pppplVar1 != (longlong ****)0x0) {
|
|
pppplVar11 = pppplVar12;
|
|
}
|
|
pppplVar11 = (longlong ****)FUN_1400ced80(local_1b8,(longlong *)pppplVar11,param_3,param_4);
|
|
}
|
|
if ((pppplVar11 == (longlong ****)0x0) || (pppplVar11 + 8 == (longlong ****)0x0)) {
|
|
local_1b8 = (longlong *)0x0;
|
|
}
|
|
else {
|
|
local_1b8 = (longlong *)FUN_14003e840(0x10);
|
|
local_1b8[1] = 1;
|
|
*local_1b8 = (longlong)(pppplVar11 + 8);
|
|
}
|
|
plVar7 = local_1b8;
|
|
FUN_14009d860((longlong *)(param_1 + 0x2ad),(longlong *)&local_1b8);
|
|
plVar3 = local_1b8;
|
|
if (plVar7 != (longlong *)0x0) {
|
|
plVar7 = plVar7 + 1;
|
|
*plVar7 = *plVar7 + -1;
|
|
if (*plVar7 == 0) {
|
|
puVar2 = (undefined8 *)*local_1b8;
|
|
if (puVar2 != (undefined8 *)0x0) {
|
|
(**(code **)*puVar2)(puVar2,1);
|
|
}
|
|
FUN_14003e8b0(plVar3);
|
|
}
|
|
}
|
|
*(undefined1 *)(param_1 + 0x8f) = 0;
|
|
FUN_14009db30((longlong *)(param_1 + 0x2a3),param_2,(SIZE_T)param_3,param_4);
|
|
plVar7 = FUN_14009e780((longlong *)(param_1 + 0x2a3));
|
|
plVar7 = FUN_14009d4d0(plVar7);
|
|
FUN_1400020c0((longlong *)(param_1 + 0x2a3),plVar7,param_3,param_4);
|
|
ppplVar17 = param_1[0x2a3];
|
|
if (((ppplVar17 == (longlong ***)0x0) || (ppplVar17 == (longlong ***)PTR_DAT_14016f010)) ||
|
|
(*(int *)(ppplVar17 + -1) == 0)) {
|
|
FUN_140005dd0((longlong *)(param_1 + 0x2a3),L"localhost",param_3,param_4);
|
|
}
|
|
local_1c8 = operator_new(0x240);
|
|
pppplVar12 = pppplVar13;
|
|
if (local_1c8 != (longlong *)0x0) {
|
|
pppplVar12 = (longlong ****)FUN_1400c81b0(local_1c8,(longlong)pppplVar1);
|
|
}
|
|
if (pppplVar12 == (longlong ****)0x0) {
|
|
local_1c8 = (longlong *)0x0;
|
|
}
|
|
else {
|
|
local_1c8 = (longlong *)FUN_14003e840(0x10);
|
|
local_1c8[1] = 1;
|
|
*local_1c8 = (longlong)pppplVar12;
|
|
}
|
|
plVar7 = local_1c8;
|
|
FUN_14009d7e0((longlong *)(param_1 + 0x2a0),(longlong *)&local_1c8);
|
|
plVar3 = local_1c8;
|
|
if (plVar7 != (longlong *)0x0) {
|
|
plVar7 = plVar7 + 1;
|
|
*plVar7 = *plVar7 + -1;
|
|
if (*plVar7 == 0) {
|
|
operator_delete((void *)*local_1c8);
|
|
FUN_14003e8b0(plVar3);
|
|
}
|
|
}
|
|
local_1c0 = operator_new(0x140);
|
|
if (local_1c0 != (longlong *)0x0) {
|
|
pppplVar13 = (longlong ****)FUN_1400bfb60(local_1c0,(longlong)pppplVar1,param_3,param_4);
|
|
}
|
|
if (pppplVar13 == (longlong ****)0x0) {
|
|
local_1c0 = (longlong *)0x0;
|
|
}
|
|
else {
|
|
local_1c0 = (longlong *)FUN_14003e840(0x10);
|
|
local_1c0[1] = 1;
|
|
*local_1c0 = (longlong)pppplVar13;
|
|
}
|
|
plVar7 = local_1c0;
|
|
pplVar16 = &local_1c0;
|
|
FUN_14009e820((longlong *)(param_1 + 0xac),(longlong *)pplVar16);
|
|
plVar3 = local_1c0;
|
|
if (plVar7 != (longlong *)0x0) {
|
|
plVar7 = plVar7 + 1;
|
|
*plVar7 = *plVar7 + -1;
|
|
if (*plVar7 == 0) {
|
|
plVar7 = (longlong *)*local_1c0;
|
|
if (plVar7 != (longlong *)0x0) {
|
|
FUN_1400c0900(plVar7,pplVar16,(ulonglong)param_3,param_4);
|
|
operator_delete(plVar7);
|
|
}
|
|
FUN_14003e8b0(plVar3);
|
|
}
|
|
}
|
|
FUN_14003d0d0((longlong)local_160);
|
|
uVar14 = FUN_14003d0d0((longlong)local_140);
|
|
return CONCAT71((int7)((ulonglong)uVar14 >> 8),1);
|
|
}
|
|
}
|
|
pwVar6 = (wchar_t *)FUN_140071b40(0xe);
|
|
FUN_14003db10(local_80,pwVar6,param_3,param_4);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_80,(ThrowInfo *)&DAT_14016c210);
|
|
}
|
|
|