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

84 lines
2.6 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401fe530 FUN_1401fe530
* Pseudocode, not original source. */
undefined8 * FUN_1401fe530(undefined8 *param_1,longlong param_2,longlong param_3,undefined8 param_4)
{
void *pvVar1;
undefined8 *puVar2;
undefined8 *puVar3;
undefined8 *puVar4;
undefined8 uVar5;
undefined8 uVar6;
uVar6 = 0xfffffffffffffffe;
*param_1 = Proud::ICompletionContext::vftable;
FUN_14019c0d0(param_1 + 8);
*param_1 = Proud::CUdpSocket_C::vftable;
param_1[8] = Proud::CUdpSocket_C::vftable;
puVar4 = (undefined8 *)0x0;
param_1[0x20] = 0;
param_1[0x21] = 0;
param_1[0x22] = 0;
param_1[0x25] = Proud::AddrPort::vftable;
*(undefined4 *)(param_1 + 0x26) = 0;
*(undefined2 *)((longlong)param_1 + 0x134) = 0;
param_1[0x27] = Proud::AddrPort::vftable;
*(undefined4 *)(param_1 + 0x28) = 0;
*(undefined2 *)((longlong)param_1 + 0x144) = 0;
param_1[0x31] = 0;
*(undefined4 *)(param_1 + 0x28) = DAT_140344450;
*(undefined2 *)((longlong)param_1 + 0x144) = DAT_140344454;
*(undefined4 *)(param_1 + 0x26) = *(undefined4 *)(param_1 + 0x28);
*(undefined2 *)((longlong)param_1 + 0x134) = *(undefined2 *)((longlong)param_1 + 0x144);
*(undefined1 *)(param_1 + 0x10) = 0;
*(undefined1 *)(param_1 + 0x18) = 0;
param_1[0x29] = 0;
uVar5 = (**(code **)(*(longlong *)(param_2 + 0x70) + 0x1c0))();
param_1[0x30] = uVar5;
param_1[0x23] = param_2;
param_1[0x24] = param_3;
pvVar1 = operator_new(0x90);
puVar2 = puVar4;
if (pvVar1 != (void *)0x0) {
if (param_3 == 0) {
param_3 = param_2 + 0x90;
}
else {
param_3 = param_3 + 0x10;
}
uVar5 = (**(code **)(*(longlong *)(param_2 + 0x88) + 0x18))();
puVar2 = (undefined8 *)FUN_1401ba190(pvVar1,uVar5,param_3,param_4,uVar6);
}
param_1[0x21] = puVar2;
puVar3 = operator_new(0x6b8);
puVar2 = puVar4;
if (puVar3 != (undefined8 *)0x0) {
*puVar3 = 0;
puVar3[3] = 0;
puVar3[1] = 0;
puVar3[2] = 100;
puVar3[0xcf] = Proud::CFastArray<Proud::UdpPacketCtx*___ptr64,1>::vftable;
puVar3[0xd0] = 0;
puVar3[0xd1] = 0;
puVar3[0xd2] = 0;
puVar3[0xd3] = 0;
puVar3[0xd4] = Proud::AddrPort::vftable;
*(undefined4 *)(puVar3 + 0xd5) = 0;
*(undefined2 *)((longlong)puVar3 + 0x6ac) = 0;
puVar2 = puVar3;
}
param_1[0x22] = puVar2;
FUN_1401b5fb0(param_1[0x21]);
pvVar1 = operator_new(0x60);
if (pvVar1 != (void *)0x0) {
if (param_1[0x23] != 0) {
puVar4 = (undefined8 *)(param_1[0x23] + 0x88);
}
puVar4 = (undefined8 *)FUN_1401ba2f0(pvVar1,puVar4);
}
param_1[0x31] = puVar4;
return param_1;
}