168 lines
5.9 KiB
C
168 lines
5.9 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14007f930 FUN_14007f930
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined8 FUN_14007f930(longlong param_1,longlong param_2,ulonglong param_3)
|
|
|
|
{
|
|
int *piVar1;
|
|
uint uVar2;
|
|
int *piVar3;
|
|
short *psVar4;
|
|
undefined8 uVar5;
|
|
longlong *plVar6;
|
|
undefined8 *puVar7;
|
|
undefined **ppuVar8;
|
|
short **ppsVar9;
|
|
longlong lVar10;
|
|
ulonglong uVar11;
|
|
wchar_t *pwVar12;
|
|
char *pcVar13;
|
|
uint uVar14;
|
|
ulonglong uVar15;
|
|
longlong lVar16;
|
|
ulonglong uVar17;
|
|
undefined *puVar18;
|
|
short *psVar19;
|
|
short *local_res8;
|
|
undefined *local_res20;
|
|
undefined **local_60;
|
|
undefined4 local_58;
|
|
undefined2 local_54;
|
|
int *local_50;
|
|
undefined1 local_48;
|
|
|
|
piVar3 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))();
|
|
local_50 = piVar3;
|
|
FUN_14003d040(piVar3);
|
|
local_48 = 1;
|
|
if (DAT_14017614f != '\0') {
|
|
(**(code **)(**(longlong **)(param_1 + 0x148) + 200))();
|
|
}
|
|
FUN_140048960((char *)(*(longlong *)(param_1 + 0x148) + 0x760));
|
|
local_res8 = (short *)FUN_14003e840(0x780);
|
|
psVar19 = (short *)0x0;
|
|
psVar4 = psVar19;
|
|
if (local_res8 != (short *)0x0) {
|
|
local_60 = Proud::AddrPort::vftable;
|
|
local_58 = *(undefined4 *)(param_3 + 8);
|
|
local_54 = *(undefined2 *)(param_3 + 0xc);
|
|
psVar4 = (short *)FUN_14008b590((undefined8 *)local_res8,*(longlong *)(param_1 + 0x148),param_2,
|
|
&local_60);
|
|
}
|
|
lVar10 = *(longlong *)(param_1 + 0x148);
|
|
pcVar13 = (char *)(lVar10 + 0x1740);
|
|
uVar2 = *(uint *)(lVar10 + 0x1768);
|
|
uVar17 = (ulonglong)uVar2;
|
|
uVar11 = ((ulonglong)psVar4 & 0xffffffff) % uVar17;
|
|
uVar15 = *(ulonglong *)(lVar10 + 0x1748);
|
|
uVar14 = (uint)uVar11;
|
|
local_res8 = psVar4;
|
|
if (uVar15 != 0) {
|
|
for (plVar6 = *(longlong **)(uVar15 + uVar11 * 8);
|
|
(plVar6 != (longlong *)0x0 && (uVar14 == *(uint *)(plVar6 + 4) % uVar2));
|
|
plVar6 = (longlong *)plVar6[2]) {
|
|
if ((short *)*plVar6 == psVar4) goto LAB_14007fad9;
|
|
}
|
|
if (uVar15 != 0) {
|
|
for (plVar6 = *(longlong **)(uVar15 + uVar11 * 8);
|
|
(plVar6 != (longlong *)0x0 && (uVar14 == *(uint *)(plVar6 + 4) % uVar2));
|
|
plVar6 = (longlong *)plVar6[2]) {
|
|
if ((short *)*plVar6 == psVar4) goto LAB_14007fad5;
|
|
}
|
|
if (uVar15 != 0) goto LAB_14007faac;
|
|
}
|
|
}
|
|
uVar5 = FUN_14004c640((longlong)pcVar13,uVar2,'\x01');
|
|
if ((char)uVar5 == '\0') {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400050d0(0x8007000e);
|
|
}
|
|
LAB_14007faac:
|
|
FUN_1400c8cb0(pcVar13);
|
|
uVar17 = (ulonglong)psVar4 & 0xffffffff;
|
|
plVar6 = FUN_14004e780(pcVar13,&local_res8,uVar14,(int)psVar4);
|
|
FUN_1400c8cb0(pcVar13);
|
|
uVar15 = uVar11;
|
|
LAB_14007fad5:
|
|
*(undefined1 *)(plVar6 + 1) = 0;
|
|
LAB_14007fad9:
|
|
if (psVar4 != (short *)0x0) {
|
|
psVar19 = psVar4 + 0x1c;
|
|
}
|
|
FUN_140043150(*(longlong *)(*(longlong *)(psVar4 + 0x3a4) + 0x110),psVar19,uVar15,uVar17);
|
|
FUN_140091240((longlong)(psVar4 + 0x60));
|
|
FUN_1400479d0(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x788),
|
|
*(ULONG_PTR *)(*(longlong *)(psVar4 + 0x3a4) + 0x110),
|
|
(LPOVERLAPPED)0xffffffffffffffff);
|
|
lVar10 = *(longlong *)(param_1 + 0x148);
|
|
pcVar13 = (char *)(ulonglong)*(uint *)(lVar10 + 0x1710);
|
|
uVar15 = (ulonglong)((uint)*(ushort *)(param_3 + 0xc) ^ *(uint *)(param_3 + 8)) %
|
|
(ulonglong)pcVar13;
|
|
lVar16 = 0;
|
|
if (*(longlong *)(lVar10 + 0x16f0) != 0) {
|
|
lVar16 = *(longlong *)(*(longlong *)(lVar10 + 0x16f0) + uVar15 * 8);
|
|
while ((lVar16 != 0 &&
|
|
(uVar11 = (ulonglong)*(uint *)(lVar16 + 0x28) % (ulonglong)pcVar13,
|
|
(int)uVar15 == (int)uVar11))) {
|
|
if ((*(uint *)(lVar16 + 8) == *(uint *)(param_3 + 8)) &&
|
|
(*(ushort *)(lVar16 + 0xc) == *(ushort *)(param_3 + 0xc))) goto LAB_14007fb98;
|
|
lVar16 = *(longlong *)(lVar16 + 0x18);
|
|
}
|
|
}
|
|
pcVar13 = (char *)(lVar10 + 0x16e8);
|
|
uVar11 = param_3;
|
|
puVar7 = FUN_14007e690(pcVar13,param_3);
|
|
*puVar7 = psVar4;
|
|
LAB_14007fb98:
|
|
if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0) != 0) {
|
|
FUN_14003e7c0(pcVar13,uVar11,lVar16,uVar15);
|
|
local_res8 = (short *)PTR_DAT_14016f010;
|
|
plVar6 = FUN_1400420f0(param_3,(longlong *)&local_res20,lVar16,uVar15);
|
|
puVar18 = (undefined *)*plVar6;
|
|
if ((undefined *)*plVar6 == (undefined *)0x0) {
|
|
puVar18 = PTR_DAT_14016f010;
|
|
}
|
|
pwVar12 = L"new TCP socket is accepted. RemoteClient_S=%p,TCP socket=%s";
|
|
ppsVar9 = &local_res8;
|
|
FUN_140029b80((longlong *)ppsVar9,L"new TCP socket is accepted. RemoteClient_S=%p,TCP socket=%s"
|
|
,psVar4,puVar18);
|
|
if (((local_res20 != (undefined *)0x0) && (local_res20 != PTR_DAT_14016f010)) &&
|
|
(local_res20 + -8 != (undefined *)0x0)) {
|
|
ppuVar8 = (undefined **)FUN_14003e7c0(ppsVar9,pwVar12,psVar4,puVar18);
|
|
local_60 = ppuVar8;
|
|
FUN_14003d040((int *)ppuVar8);
|
|
local_58 = CONCAT31(local_58._1_3_,1);
|
|
piVar1 = (int *)(local_res20 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14003e8b0(local_res20 + -8);
|
|
}
|
|
FUN_14003d0d0((longlong)ppuVar8);
|
|
}
|
|
psVar19 = local_res8;
|
|
psVar4 = local_res8;
|
|
if (local_res8 == (short *)0x0) {
|
|
psVar4 = (short *)PTR_DAT_14016f010;
|
|
}
|
|
uVar5 = 0;
|
|
lVar10 = *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0);
|
|
FUN_1400843d0(lVar10,0,psVar4,puVar18);
|
|
if (((psVar19 != (short *)0x0) && (psVar19 != (short *)PTR_DAT_14016f010)) &&
|
|
(psVar19 + -4 != (short *)0x0)) {
|
|
ppuVar8 = (undefined **)FUN_14003e7c0(lVar10,uVar5,psVar4,puVar18);
|
|
local_60 = ppuVar8;
|
|
FUN_14003d040((int *)ppuVar8);
|
|
local_58 = CONCAT31(local_58._1_3_,1);
|
|
piVar1 = (int *)(psVar19 + -2);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14003e8b0(psVar19 + -4);
|
|
}
|
|
FUN_14003d0d0((longlong)ppuVar8);
|
|
}
|
|
}
|
|
uVar5 = FUN_14003d0d0((longlong)piVar3);
|
|
return CONCAT71((int7)((ulonglong)uVar5 >> 8),1);
|
|
}
|
|
|