183 lines
6.5 KiB
C
183 lines
6.5 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x1400aaf80 FUN_1400aaf80
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1400aaf80(IMAGE_DOS_HEADER *param_1,IMAGE_DOS_HEADER *param_2,undefined **param_3,
|
|
undefined ***param_4)
|
|
|
|
{
|
|
undefined **ppuVar1;
|
|
int *piVar2;
|
|
longlong *plVar3;
|
|
longlong lVar4;
|
|
char cVar5;
|
|
IMAGE_DOS_HEADER *pIVar6;
|
|
undefined8 uVar7;
|
|
undefined **ppuVar8;
|
|
IMAGE_DOS_HEADER *pIVar9;
|
|
int *piVar10;
|
|
undefined ***pppuVar11;
|
|
int iVar12;
|
|
undefined **ppuVar13;
|
|
longlong lVar14;
|
|
uint local_res8 [2];
|
|
undefined **local_res10;
|
|
longlong local_e8;
|
|
undefined **local_e0;
|
|
undefined4 local_d8;
|
|
undefined2 local_d4;
|
|
undefined **local_d0;
|
|
undefined8 local_c8;
|
|
longlong local_c0;
|
|
undefined8 local_b8;
|
|
undefined4 local_b0;
|
|
undefined4 local_ac;
|
|
undefined **local_a8;
|
|
undefined4 local_a0;
|
|
undefined2 local_9c;
|
|
undefined **local_98;
|
|
undefined4 local_90;
|
|
word local_8c;
|
|
undefined **local_88;
|
|
word local_80 [2];
|
|
word local_7c;
|
|
undefined **local_78;
|
|
word local_70 [2];
|
|
word local_6c;
|
|
int *local_68;
|
|
undefined1 local_60;
|
|
byte local_58 [32];
|
|
|
|
local_58[0] = 0xfe;
|
|
local_58[1] = 0xff;
|
|
local_58[2] = 0xff;
|
|
local_58[3] = 0xff;
|
|
local_58[4] = 0xff;
|
|
local_58[5] = 0xff;
|
|
local_58[6] = 0xff;
|
|
local_58[7] = 0xff;
|
|
pIVar6 = param_2;
|
|
ppuVar13 = param_3;
|
|
(**(code **)(*(longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x78) + 0x10))();
|
|
param_2[1].e_program[0] = 0;
|
|
if ((*(double *)(param_2[2].e_program + 8) == 0.0) && (0 < *(int *)(param_3 + 1))) {
|
|
lVar14 = (**(code **)(*(longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x70) + 0x1c0))();
|
|
plVar3 = (longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x678);
|
|
*plVar3 = *plVar3 + 1;
|
|
lVar4 = *(longlong *)¶m_1[2].e_cparhdr;
|
|
plVar3 = (longlong *)(lVar4 + 0x680);
|
|
*plVar3 = *plVar3 + (longlong)*(int *)(param_3 + 1);
|
|
local_e0 = Proud::AddrPort::vftable;
|
|
pIVar9 = (IMAGE_DOS_HEADER *)0x0;
|
|
local_d8 = 0;
|
|
local_d4 = 0;
|
|
local_e8 = 0;
|
|
FUN_140030200(lVar4,pIVar6,ppuVar13,param_4);
|
|
local_res10 = (undefined **)PTR_DAT_140155010;
|
|
local_78 = Proud::AddrPort::vftable;
|
|
local_80 = *(word (*) [2])(param_3 + 6);
|
|
local_7c = *(word *)((longlong)param_3 + 0x34);
|
|
local_88 = Proud::AddrPort::vftable;
|
|
pIVar6 = pIVar9;
|
|
if (*(undefined8 **)(param_2 + 2) != (undefined8 *)0x0) {
|
|
pIVar6 = (IMAGE_DOS_HEADER *)**(undefined8 **)(param_2 + 2);
|
|
}
|
|
pppuVar11 = *(undefined ****)¶m_2[3].e_cparhdr;
|
|
local_70 = local_80;
|
|
local_6c = local_7c;
|
|
cVar5 = (**(code **)(**(longlong **)¶m_1[2].e_cparhdr + 0xe0))
|
|
(*(longlong **)¶m_1[2].e_cparhdr,&local_78);
|
|
pIVar6 = (IMAGE_DOS_HEADER *)FUN_140035710((longlong)pIVar6);
|
|
param_4 = &local_88;
|
|
ppuVar13 = (undefined **)(ulonglong)*(uint *)(param_3 + 1);
|
|
uVar7 = FUN_14009a550(pppuVar11,(longlong)pIVar6,*(uint *)(param_3 + 1),(longlong)param_4,cVar5,
|
|
lVar14,&local_e8,(longlong *)&local_res10);
|
|
if ((int)uVar7 == 0) {
|
|
local_c8 = 0;
|
|
local_c0 = 0;
|
|
local_b8 = 0;
|
|
local_d0 = Proud::CReceivedMessageList::vftable;
|
|
local_b0 = 1000;
|
|
local_ac = 1;
|
|
local_a8 = Proud::AddrPort::vftable;
|
|
local_a0 = local_d8;
|
|
local_9c = local_d4;
|
|
ppuVar13 = (undefined **)(ulonglong)*(uint *)(local_e8 + 0x40);
|
|
pIVar6 = pIVar9;
|
|
if (*(uint *)(local_e8 + 0x40) != 0) {
|
|
pIVar6 = *(IMAGE_DOS_HEADER **)(local_e8 + 0x38);
|
|
}
|
|
param_4 = &local_a8;
|
|
pppuVar11 = *(undefined ****)¶m_1[2].e_cparhdr;
|
|
FUN_140074030(pppuVar11,(longlong)pIVar6,ppuVar13,(longlong)param_4,(uint *)&local_d0,
|
|
local_res8);
|
|
while (iVar12 = (int)pIVar9, iVar12 != (int)local_b8) {
|
|
if ((iVar12 < 0) || ((int)local_b8 <= iVar12)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14002f5c0(pppuVar11,pIVar6,ppuVar13,param_4);
|
|
}
|
|
pIVar6 = (IMAGE_DOS_HEADER *)(local_c0 + (longlong)iVar12 * 0x48);
|
|
lVar4 = *(longlong *)¶m_1[2].e_cparhdr;
|
|
param_4 = (undefined ***)0x0;
|
|
ppuVar13 = *(undefined ***)(lVar4 + 0x6f0);
|
|
ppuVar8 = (undefined **)
|
|
FUN_1400a6640((longlong *)(lVar4 + 0x6e0),(undefined4 *)pIVar6,ppuVar13,0);
|
|
pppuVar11 = *(undefined ****)(lVar4 + 0x6f0);
|
|
if (pppuVar11 == (undefined ***)0x0) {
|
|
*(undefined ***)(lVar4 + 0x6e8) = ppuVar8;
|
|
}
|
|
else {
|
|
*pppuVar11 = ppuVar8;
|
|
}
|
|
*(undefined ***)(lVar4 + 0x6f0) = ppuVar8;
|
|
if ((int)local_b8 <= iVar12) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14002f5c0(pppuVar11,pIVar6,ppuVar13,param_4);
|
|
}
|
|
pIVar9 = (IMAGE_DOS_HEADER *)(ulonglong)(iVar12 + 1);
|
|
}
|
|
if ((*(longlong *)(param_2[2].e_res_4_ + 2) != 0) ||
|
|
(lVar4._0_2_ = param_1[2].e_cparhdr, lVar4._2_2_ = param_1[2].e_minalloc,
|
|
lVar4._4_2_ = param_1[2].e_maxalloc, lVar4._6_2_ = param_1[2].e_ss,
|
|
pIVar9 = (IMAGE_DOS_HEADER *)FUN_140064bc0(lVar4), param_2 == pIVar9)) {
|
|
pIVar6 = param_2;
|
|
FUN_1400aadd0(param_1,param_2,ppuVar13,param_4);
|
|
}
|
|
pppuVar11 = &local_d0;
|
|
FUN_140089980(pppuVar11);
|
|
}
|
|
else if ((int)uVar7 == 2) {
|
|
ppuVar13 = local_res10;
|
|
if (local_res10 == (undefined **)0x0) {
|
|
ppuVar13 = (undefined **)PTR_DAT_140155010;
|
|
}
|
|
local_98 = Proud::AddrPort::vftable;
|
|
local_90 = *(undefined4 *)(param_3 + 6);
|
|
local_8c = *(word *)((longlong)param_3 + 0x34);
|
|
pppuVar11 = (undefined ***)(*(longlong *)¶m_1[2].e_cparhdr + 0x88);
|
|
pIVar6 = (IMAGE_DOS_HEADER *)&local_98;
|
|
(*(code *)**pppuVar11)();
|
|
}
|
|
ppuVar8 = local_res10;
|
|
if (((local_res10 != (undefined **)0x0) && (local_res10 != (undefined **)PTR_DAT_140155010)) &&
|
|
(ppuVar1 = local_res10 + -1, ppuVar1 != (undefined **)0x0)) {
|
|
piVar10 = (int *)FUN_140030200(pppuVar11,pIVar6,ppuVar13,param_4);
|
|
local_68 = piVar10;
|
|
FUN_14002e6e0(piVar10);
|
|
local_60 = 1;
|
|
piVar2 = (int *)((longlong)ppuVar8 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_1400302f0(ppuVar1);
|
|
}
|
|
FUN_14002e770((longlong)piVar10);
|
|
}
|
|
local_res10 = (undefined **)PTR_DAT_140155010;
|
|
if (local_e8 != 0) {
|
|
FUN_140086680(local_e8,pIVar6,(SIZE_T)ppuVar13);
|
|
}
|
|
}
|
|
FUN_1400b6ec0((longlong)param_2,pIVar6,ppuVar13,param_4);
|
|
return;
|
|
}
|
|
|