/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400e74f0 FUN_1400e74f0 * Pseudocode, not original source. */ void FUN_1400e74f0(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_1400064e0(0x80004005); } FUN_1400bca30((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_1400e6e40(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_1400064e0(0x80004005); } lVar2 = *plVar3; *(longlong *)(lVar1 + 0x6e8) = lVar2; if (lVar2 == 0) { *(undefined8 *)(lVar1 + 0x6f0) = 0; } else { *(undefined8 *)(lVar2 + 8) = 0; } FUN_1400d1800(plVar3 + 3); if (plVar3[4] != 0) { if (*(int *)((longlong)plVar3 + 0x2c) < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } *(undefined4 *)(plVar3 + 5) = 0; } plVar4 = *(longlong **)(lVar1 + 0x6e0); if (plVar4 == (longlong *)0x0) { FUN_14006cc60(plVar3); } else { (**(code **)(*plVar4 + 0x10))(plVar4,plVar3); } *(longlong *)(lVar1 + 0x6f8) = *(longlong *)(lVar1 + 0x6f8) + -1; FUN_1400d1800((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_14006be00(); }