/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400e84c0 FUN_1400e84c0 * Pseudocode, not original source. */ undefined8 FUN_1400e84c0(longlong param_1,undefined **param_2) { longlong *plVar1; undefined8 *puVar2; bool bVar3; uint uVar4; IMAGE_DOS_HEADER *pIVar5; undefined8 uVar6; undefined *puVar7; int *piVar8; wchar_t *pwVar9; IMAGE_DOS_HEADER *pIVar10; TypeDescriptor *pTVar11; ulonglong uVar12; TypeDescriptor *pTVar13; int *piVar14; IMAGE_DOS_HEADER *local_res18 [2]; pIVar10 = (IMAGE_DOS_HEADER *)0x0; pTVar13 = &Proud::CUdpSocket_C::RTTI_Type_Descriptor; pTVar11 = &Proud::ICompletionContext::RTTI_Type_Descriptor; uVar6 = 0; pIVar5 = (IMAGE_DOS_HEADER *)__RTDynamicCast(*param_2); if (pIVar5 == (IMAGE_DOS_HEADER *)0x0) { uVar6 = 0; } else { piVar14 = (int *)(param_1 + 0x10); local_res18[0] = pIVar5; FUN_14006b350(piVar14); bVar3 = true; if (*(int *)(param_2 + 2) == 1) { plVar1 = *(longlong **)(*(longlong *)&pIVar5[2].e_lfarlc + 0x5d0); if (plVar1 != (longlong *)0x0) { pIVar10 = (IMAGE_DOS_HEADER *)*plVar1; } uVar6 = FUN_1400e0070((longlong)pIVar10,(longlong)pIVar5,(longlong)param_2,pTVar13); } else if (*(int *)(param_2 + 2) == 2) { puVar2 = *(undefined8 **)(*(longlong *)&pIVar5[2].e_lfarlc + 0x5d0); if (puVar2 != (undefined8 *)0x0) { pIVar10 = (IMAGE_DOS_HEADER *)*puVar2; } uVar6 = FUN_1400e76a0(pIVar10,pIVar5,param_2,&pTVar13->pVFTable); } else { piVar8 = piVar14; FUN_14006b3e0((longlong)piVar14); bVar3 = false; FUN_14006cb70(piVar8,uVar6,pTVar11,pTVar13); local_res18[0] = (IMAGE_DOS_HEADER *)PTR_DAT_1401ac010; uVar4 = FUN_14006c9f0(L"Unexpected at Client IOCP UDP completion!"); puVar7 = FUN_140002f30((longlong *)local_res18,uVar4); uVar12 = (ulonglong)uVar4; pwVar9 = L"Unexpected at Client IOCP UDP completion!"; FUN_14006ca20(puVar7,L"Unexpected at Client IOCP UDP completion!",uVar4); FUN_140003010((longlong *)local_res18); uVar6 = FUN_14006fa80((longlong *)local_res18,pwVar9,uVar12,pTVar13); } if (bVar3) { uVar6 = FUN_14006b3e0((longlong)piVar14); } uVar6 = CONCAT71((int7)((ulonglong)uVar6 >> 8),1); } return uVar6; }