/* 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; }