118 lines
4.4 KiB
C
118 lines
4.4 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14008f040 FUN_14008f040
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_14008f040(longlong *param_1,undefined8 param_2,undefined8 param_3,ulonglong param_4,
|
|
longlong param_5,double param_6,uint *param_7)
|
|
|
|
{
|
|
ushort uVar1;
|
|
longlong lVar2;
|
|
int iVar3;
|
|
uint uVar4;
|
|
ulonglong uVar5;
|
|
longlong *plVar6;
|
|
longlong *plVar7;
|
|
longlong *plVar8;
|
|
undefined8 uVar9;
|
|
undefined2 uVar10;
|
|
longlong **pplVar11;
|
|
ulonglong uVar12;
|
|
ulonglong uVar13;
|
|
longlong *local_78;
|
|
exception local_70 [88];
|
|
|
|
uVar10 = (undefined2)param_3;
|
|
uVar9 = param_2;
|
|
uVar12 = param_4;
|
|
uVar5 = FUN_140041850(param_4);
|
|
if (((char)uVar5 != '\0') && (iVar3 = FUN_140096ef0(param_5,uVar9,param_3,uVar12), 0 < iVar3)) {
|
|
uVar1 = *(ushort *)(param_4 + 0xc);
|
|
pplVar11 = (longlong **)(ulonglong)uVar1;
|
|
uVar4 = *(uint *)(param_4 + 8);
|
|
uVar13 = (ulonglong)uVar4;
|
|
uVar12 = (ulonglong)(uVar1 ^ uVar4) % (ulonglong)*(uint *)(param_1 + 9);
|
|
uVar5 = uVar12;
|
|
if (param_1[5] != 0) {
|
|
lVar2 = *(longlong *)(param_1[5] + uVar12 * 8);
|
|
while ((lVar2 != 0 &&
|
|
(uVar5 = (ulonglong)*(uint *)(lVar2 + 0x28) % (ulonglong)*(uint *)(param_1 + 9),
|
|
(int)uVar12 == (int)uVar5))) {
|
|
if ((*(uint *)(lVar2 + 8) == uVar4) && (*(ushort *)(lVar2 + 0xc) == uVar1)) {
|
|
plVar6 = *(longlong **)(lVar2 + 0x10);
|
|
goto LAB_14008f158;
|
|
}
|
|
lVar2 = *(longlong *)(lVar2 + 0x18);
|
|
}
|
|
}
|
|
plVar6 = FUN_14008ec10((longlong *)param_1[0xf],uVar5,pplVar11,uVar13);
|
|
pplVar11 = &local_78;
|
|
plVar6[0x31] = param_1[0xf];
|
|
*(undefined4 *)((longlong)plVar6 + 0x1bc) = 1;
|
|
plVar6[0x32] = (longlong)param_1;
|
|
*(undefined4 *)(plVar6 + 0x2f) = *(undefined4 *)(param_4 + 8);
|
|
*(undefined2 *)((longlong)plVar6 + 0x17c) = *(undefined2 *)(param_4 + 0xc);
|
|
*(undefined2 *)(plVar6 + 0x30) = uVar10;
|
|
plVar6[0x2d] = (longlong)param_6;
|
|
uVar5 = param_4;
|
|
local_78 = plVar6;
|
|
FUN_14008eb60((char *)(param_1 + 4),param_4,pplVar11);
|
|
LAB_14008f158:
|
|
if (((int)plVar6[0x2f] != *(int *)(param_4 + 8)) ||
|
|
(*(short *)((longlong)plVar6 + 0x17c) != *(short *)(param_4 + 0xc))) {
|
|
FUN_14003db10(local_70,L"PacketQueue consistency failed!",pplVar11,uVar13);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_70,(ThrowInfo *)&DAT_14016c210);
|
|
}
|
|
uVar4 = *param_7;
|
|
if (((int)uVar4 < 0) || (5 < (int)uVar4)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
if (DAT_14016f144 == '\0') {
|
|
uVar4 = 0;
|
|
}
|
|
*param_7 = uVar4;
|
|
if (5 < uVar4) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003def0(0,uVar5,pplVar11,uVar13);
|
|
}
|
|
plVar8 = plVar6 + (longlong)(int)uVar4 * 7 + 3;
|
|
iVar3 = (int)param_2;
|
|
if ((*(longlong *)(param_7 + 2) != 0) && (iVar3 != 0)) {
|
|
if (*(char *)((longlong)param_7 + 0x19) == '\0') {
|
|
plVar7 = (longlong *)plVar8[3];
|
|
}
|
|
else {
|
|
plVar7 = (longlong *)*plVar8;
|
|
}
|
|
for (; plVar7 != (longlong *)0x0; plVar7 = (longlong *)plVar7[1]) {
|
|
if (((plVar7[8] != 0) && (*(longlong *)(param_7 + 2) == plVar7[8])) &&
|
|
(iVar3 == *(int *)((longlong)plVar7 + 0x4c))) goto LAB_14008f23b;
|
|
}
|
|
}
|
|
plVar7 = (longlong *)FUN_14008cdf0(param_1 + 0x10);
|
|
if (*(char *)((longlong)param_7 + 0x19) == '\0') {
|
|
plVar8 = plVar8 + 3;
|
|
}
|
|
FUN_14008c190(plVar8,plVar7,pplVar11,uVar13);
|
|
plVar7[8] = *(longlong *)(param_7 + 2);
|
|
uVar4 = param_7[5];
|
|
*(int *)((longlong)plVar7 + 0x4c) = iVar3;
|
|
*(uint *)(plVar7 + 9) = uVar4;
|
|
LAB_14008f23b:
|
|
thunk_FUN_140097060(param_5,(longlong)(plVar7 + 3),(SIZE_T)pplVar11,uVar13);
|
|
if ((int)plVar6[0x2b] + (int)plVar6[0x28] + (int)plVar6[0x24] + (int)plVar6[0x21] +
|
|
(int)plVar6[0x1d] + (int)plVar6[0x1a] + (int)plVar6[0x16] + (int)plVar6[0x13] +
|
|
(int)plVar6[0xf] + (int)plVar6[0xc] + (int)plVar6[8] + (int)plVar6[5] + (int)plVar6[0x36] <
|
|
1) {
|
|
FUN_14003db10(local_70,L"PacketQueue consistency 2 failed!",pplVar11,uVar13);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_70,(ThrowInfo *)&DAT_14016c210);
|
|
}
|
|
plVar6[0x2d] = (longlong)param_6;
|
|
FUN_14008c810(param_1,plVar6,param_6,uVar13);
|
|
}
|
|
return;
|
|
}
|
|
|