/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400c78f0 FUN_1400c78f0 * Pseudocode, not original source. */ undefined8 FUN_1400c78f0(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_14003d040(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_1400bf490((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_1400c6ad0(pIVar10,pIVar5,param_2,&pTVar13->pVFTable); } else { piVar8 = piVar14; FUN_14003d0d0((longlong)piVar14); bVar3 = false; FUN_14003e7c0(piVar8,uVar6,pTVar11,pTVar13); local_res18[0] = (IMAGE_DOS_HEADER *)PTR_DAT_14016f010; uVar4 = FUN_14003e620(L"Unexpected at Client IOCP UDP completion!"); puVar7 = FUN_140001ee0((longlong *)local_res18,uVar4); uVar12 = (ulonglong)uVar4; pwVar9 = L"Unexpected at Client IOCP UDP completion!"; FUN_14003e650(puVar7,L"Unexpected at Client IOCP UDP completion!",uVar4); FUN_140001fc0((longlong *)local_res18); uVar6 = FUN_1400416f0((longlong *)local_res18,pwVar9,uVar12,pTVar13); } if (bVar3) { uVar6 = FUN_14003d0d0((longlong)piVar14); } uVar6 = CONCAT71((int7)((ulonglong)uVar6 >> 8),1); } return uVar6; }