server-re/decomp/DBCServer_Release_x64/full/functions/0x1401a33f0.c

48 lines
1.6 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401a33f0 FUN_1401a33f0
* Pseudocode, not original source. */
void FUN_1401a33f0(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)
{
undefined8 *puVar1;
longlong lVar2;
undefined1 local_50 [72];
if (param_2[0x5d] == 0) {
FUN_14016d300(local_50,&DAT_1402815d0,param_3,param_4,0xfffffffffffffffe);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_50,(ThrowInfo *)&DAT_1403417f8);
}
if (param_2[0x79] != 0) {
FUN_14016d300(local_50,&DAT_1402815b0,param_3,param_4,0xfffffffffffffffe);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_50,(ThrowInfo *)&DAT_1403417f8);
}
if (*(longlong *)(param_1 + 0x28) != 0) {
puVar1 = (undefined8 *)FUN_14016f040();
lVar2 = (*(code *)*puVar1)(param_2[0x7a],*(undefined8 *)(param_1 + 0x28),param_2,0);
if (lVar2 == 0) {
FUN_1401a32c0(param_1,L"Proud::CompletionPort::AssociateSocket");
}
}
FUN_14016db50(param_1 + 0x50);
puVar1 = (undefined8 *)(param_1 + 0x38);
if (param_2[2] != 0) {
FUN_14019c130(puVar1,param_2);
}
if (*(longlong *)(param_1 + 0x40) == 0) {
*puVar1 = param_2;
}
else {
*(undefined8 **)(*(longlong *)(param_1 + 0x40) + 8) = param_2;
*param_2 = *(undefined8 *)(param_1 + 0x40);
}
*(undefined8 **)(param_1 + 0x40) = param_2;
param_2[2] = puVar1;
*(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + 1;
param_2[0x79] = param_1;
FUN_14016dbe0(param_1 + 0x50);
return;
}