server-re/decomp/Agent_Release_x64/full/functions/0x1400abda0.c
2026-10-14 16:45:19 -04:00

72 lines
2.3 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400abda0 FUN_1400abda0
* Pseudocode, not original source. */
undefined8 FUN_1400abda0(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_14002e6e0(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_1400a39b0((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_1400aaf80(pIVar10,pIVar5,param_2,&pTVar13->pVFTable);
}
else {
piVar8 = piVar14;
FUN_14002e770((longlong)piVar14);
bVar3 = false;
FUN_140030200(piVar8,uVar6,pTVar11,pTVar13);
local_res18[0] = (IMAGE_DOS_HEADER *)PTR_DAT_140155010;
uVar4 = FUN_140030080(L"Unexpected at Client IOCP UDP completion!");
puVar7 = FUN_140002f90((longlong *)local_res18,uVar4);
uVar12 = (ulonglong)uVar4;
pwVar9 = L"Unexpected at Client IOCP UDP completion!";
FUN_1400300b0(puVar7,L"Unexpected at Client IOCP UDP completion!",uVar4);
FUN_140003070((longlong *)local_res18);
uVar6 = FUN_140033120((longlong *)local_res18,pwVar9,uVar12,pTVar13);
}
if (bVar3) {
uVar6 = FUN_14002e770((longlong)piVar14);
}
uVar6 = CONCAT71((int7)((ulonglong)uVar6 >> 8),1);
}
return uVar6;
}