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

63 lines
2 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400abc40 FUN_1400abc40
* Pseudocode, not original source. */
undefined8 FUN_1400abc40(longlong param_1,undefined8 *param_2)
{
bool bVar1;
uint uVar2;
undefined *puVar3;
longlong lVar4;
undefined8 uVar5;
IMAGE_DOS_HEADER *pIVar6;
int *piVar7;
wchar_t *pwVar8;
int *piVar9;
TypeDescriptor *pTVar10;
ulonglong uVar11;
TypeDescriptor *pTVar12;
undefined *local_res18;
pTVar12 = &Proud::CTcpLayer_C::RTTI_Type_Descriptor;
pTVar10 = &Proud::ICompletionContext::RTTI_Type_Descriptor;
uVar5 = 0;
puVar3 = (undefined *)__RTDynamicCast(*param_2);
if (puVar3 == (undefined *)0x0) {
uVar5 = 0;
}
else {
piVar9 = (int *)(param_1 + 0x10);
local_res18 = puVar3;
FUN_14002e6e0(piVar9);
bVar1 = true;
if (*(int *)(param_2 + 2) == 1) {
lVar4 = (**(code **)(**(longlong **)(puVar3 + 0x120) + 0x38))();
uVar5 = FUN_1400a56f0(lVar4,(ulonglong)param_2,pTVar10,pTVar12);
}
else if (*(int *)(param_2 + 2) == 2) {
pIVar6 = (IMAGE_DOS_HEADER *)(**(code **)(**(longlong **)(puVar3 + 0x120) + 0x38))();
uVar5 = FUN_1400ab530(pIVar6,(longlong)param_2,&pTVar10->pVFTable,&pTVar12->pVFTable);
}
else {
piVar7 = piVar9;
FUN_14002e770((longlong)piVar9);
bVar1 = false;
FUN_140030200(piVar7,uVar5,pTVar10,pTVar12);
local_res18 = PTR_DAT_140155010;
uVar2 = FUN_140030080(L"Unexpected at Client IOCP TCP completion!");
puVar3 = FUN_140002f90((longlong *)&local_res18,uVar2);
uVar11 = (ulonglong)uVar2;
pwVar8 = L"Unexpected at Client IOCP TCP completion!";
FUN_1400300b0(puVar3,L"Unexpected at Client IOCP TCP completion!",uVar2);
FUN_140003070((longlong *)&local_res18);
uVar5 = FUN_140033120((longlong *)&local_res18,pwVar8,uVar11,pTVar12);
}
if (bVar1) {
uVar5 = FUN_14002e770((longlong)piVar9);
}
uVar5 = CONCAT71((int7)((ulonglong)uVar5 >> 8),1);
}
return uVar5;
}