/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400aadd0 FUN_1400aadd0 * Pseudocode, not original source. */ void FUN_1400aadd0(IMAGE_DOS_HEADER *param_1,IMAGE_DOS_HEADER *param_2,undefined8 param_3, undefined ***param_4) { longlong lVar1; longlong lVar2; longlong *plVar3; longlong *plVar4; undefined1 local_78 [56]; word local_40 [2]; undefined2 local_3c; byte local_38; (**(code **)(*(longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x78) + 0x10))(); lVar1 = *(longlong *)¶m_1[2].e_cparhdr; lVar2 = *(longlong *)(lVar1 + 0x6f8); while( true ) { if (lVar2 == 0) { return; } lVar2 = *(longlong *)(lVar1 + 0x6e8); if (lVar2 == 0) { /* WARNING: Subroutine does not return */ FUN_14000b450(0x80004005); } FUN_140080700((undefined4 *)local_78,(undefined4 *)(lVar2 + 0x10)); local_78._40_4_ = *(undefined4 *)(lVar2 + 0x38); local_78._48_8_ = Proud::AddrPort::vftable; local_40 = *(word (*) [2])(lVar2 + 0x48); local_3c = *(undefined2 *)(lVar2 + 0x4c); local_38 = *(byte *)(lVar2 + 0x50); FUN_1400aa720(param_1,param_2,(IMAGE_DOS_HEADER *)local_78,param_4); plVar3 = *(longlong **)(lVar1 + 0x6e8); if (plVar3 == (longlong *)0x0) { /* WARNING: Subroutine does not return */ FUN_14000b450(0x80004005); } lVar2 = *plVar3; *(longlong *)(lVar1 + 0x6e8) = lVar2; if (lVar2 == 0) { *(undefined8 *)(lVar1 + 0x6f0) = 0; } else { *(undefined8 *)(lVar2 + 8) = 0; } FUN_140095270(plVar3 + 3); if (plVar3[4] != 0) { if (*(int *)((longlong)plVar3 + 0x2c) < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } *(undefined4 *)(plVar3 + 5) = 0; } plVar4 = *(longlong **)(lVar1 + 0x6e0); if (plVar4 == (longlong *)0x0) { FUN_1400302f0(plVar3); } else { (**(code **)(*plVar4 + 0x10))(plVar4,plVar3); } *(longlong *)(lVar1 + 0x6f8) = *(longlong *)(lVar1 + 0x6f8) + -1; FUN_140095270((longlong *)(local_78 + 8)); if ((local_78._16_8_ != 0) && ((int)local_78._28_4_ < 0)) break; lVar2 = *(longlong *)(lVar1 + 0x6f8); } /* WARNING: Subroutine does not return */ FUN_14002f590(); }