/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400d6070 FUN_1400d6070 * Pseudocode, not original source. */ /* WARNING: Removing unreachable block (ram,0x0001400d61c7) */ void FUN_1400d6070(longlong param_1,undefined8 param_2,undefined8 param_3,undefined *param_4) { longlong *plVar1; longlong *plVar2; LPVOID pvVar3; LPVOID pvVar4; undefined8 uVar5; code *pcVar6; if (*(longlong *)(param_1 + 0x40) == 0) { pvVar4 = (LPVOID)0x0; } else { pvVar4 = *(LPVOID *)(param_1 + 0x30); } while( true ) { if (pvVar4 == (LPVOID)0x0) { return; } if (pvVar4 == (LPVOID)0x0) break; plVar1 = *(longlong **)((longlong)pvVar4 + 0x10); if ((longlong *)plVar1[2] != (longlong *)0x0) { FUN_1400d34f0((longlong *)plVar1[2],plVar1,param_3,param_4); } plVar2 = *(longlong **)(param_1 + 0x78); FUN_1400d41c0((short *)plVar1); plVar1[0x33] = (longlong)Proud::CFastArray::vftable; if ((LPVOID)plVar1[0x35] != (LPVOID)0x0) { if ((longlong *)plVar1[0x34] == (longlong *)0x0) { FUN_14006cc60((LPVOID)plVar1[0x35]); } else { (**(code **)(*(longlong *)plVar1[0x34] + 0x18))(); } } pcVar6 = FUN_1400d4250; uVar5 = 6; _eh_vector_destructor_iterator_(plVar1 + 3,0x38,6,FUN_1400d4250); param_4 = pcVar6; if ((longlong *)plVar1[2] != (longlong *)0x0) { FUN_1400d34f0((longlong *)plVar1[2],plVar1,uVar5,pcVar6); param_4 = pcVar6; } (**(code **)(*plVar2 + 0x18))(plVar2,plVar1); if (pvVar4 == (LPVOID)0x0) { /* WARNING: Subroutine does not return */ FUN_1400064e0(0x80004005); } pvVar3 = *(LPVOID *)((longlong)pvVar4 + 0x18); param_3 = 0; FUN_1400d4570((char *)(param_1 + 0x20),pvVar4,'\0'); pvVar4 = pvVar3; } /* WARNING: Subroutine does not return */ FUN_1400064e0(0x80004005); }