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

208 lines
6.3 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x14018df10 FUN_14018df10
* Pseudocode, not original source. */
void FUN_14018df10(longlong *param_1,undefined4 *param_2)
{
undefined *puVar1;
int *piVar2;
undefined4 *puVar3;
undefined *puVar4;
char cVar5;
undefined **ppuVar6;
undefined8 uVar7;
longlong lVar8;
undefined4 *puVar9;
undefined8 uVar10;
undefined *local_res18;
undefined1 local_res20 [8];
undefined **local_188;
uint local_180;
undefined2 local_17c;
undefined **local_178;
undefined8 local_170;
undefined8 local_168;
undefined8 local_160;
undefined8 local_158;
undefined **local_128;
undefined8 local_120;
undefined8 local_118;
undefined8 local_110;
undefined8 local_108;
undefined **local_100;
undefined4 local_f8;
undefined2 local_f4;
undefined **local_f0;
undefined8 local_e8;
undefined8 local_e0;
undefined8 local_d8;
undefined8 local_d0;
undefined **local_c8;
undefined8 local_c0;
undefined8 local_b8;
undefined8 local_b0;
undefined8 local_a8;
undefined **local_a0;
undefined8 local_98;
undefined8 local_90;
undefined8 local_88;
undefined8 local_80;
undefined8 local_78;
undefined1 local_70;
undefined1 local_60 [16];
undefined1 local_50 [8];
undefined8 local_48;
undefined1 local_38 [16];
local_48 = 0xfffffffffffffffe;
if (param_1[0xeb] != 0) {
switch(*param_2) {
case 4:
local_120 = 0;
local_118 = 0;
local_110 = 0;
local_108 = 0;
local_128 = Proud::ByteArray::vftable;
local_100 = Proud::AddrPort::vftable;
local_f8 = param_2[0x2c];
local_f4 = *(undefined2 *)(param_2 + 0x2d);
cVar5 = (**(code **)(*(longlong *)param_1[0xeb] + 0x48))
((longlong *)param_1[0xeb],&local_100,param_2 + 0x30,&local_128);
uVar7 = (**(code **)(*param_1 + 0x58))(param_1);
local_70 = 0;
local_78 = uVar7;
FUN_14016db50(uVar7);
local_70 = 1;
if (DAT_14034c86f != '\0') {
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetServerImpl::ProcessOneLocalEvent");
}
local_188 = Proud::AddrPort::vftable;
local_180 = param_2[0x2c];
local_17c = *(undefined2 *)(param_2 + 0x2d);
lVar8 = FUN_1401747b0(param_1,&local_188);
if (lVar8 != 0) {
if (cVar5 == '\0') {
FUN_140183a30(param_1,lVar8,&local_128);
}
else {
FUN_14018d970();
}
}
FUN_14016dbe0(uVar7);
FUN_14019a9e0(&local_128);
break;
case 5:
uVar7 = 0;
if (*(longlong *)(param_2 + 6) != 0) {
uVar7 = *(undefined8 *)(*(longlong *)(param_2 + 6) + 0x38);
}
(**(code **)(*(longlong *)param_1[0xeb] + 0x38))((longlong *)param_1[0xeb],uVar7);
break;
case 6:
uVar7 = 0;
uVar10 = uVar7;
if (*(longlong *)(param_2 + 2) != 0) {
uVar10 = *(undefined8 *)(*(longlong *)(param_2 + 2) + 0x38);
}
if (*(longlong *)(param_2 + 6) != 0) {
uVar7 = *(undefined8 *)(*(longlong *)(param_2 + 6) + 0x38);
}
(**(code **)(*(longlong *)param_1[0xeb] + 0x40))
((longlong *)param_1[0xeb],uVar7,uVar10,param_2 + 10);
break;
case 7:
puVar9 = (undefined4 *)0x0;
if (*(longlong *)(param_2 + 2) != 0) {
puVar9 = *(undefined4 **)(*(longlong *)(param_2 + 2) + 0x38);
}
(**(code **)(*(longlong *)param_1[0xeb] + 0x50))
((longlong *)param_1[0xeb],param_2[0x1a],param_2[0x1b],*puVar9);
break;
case 0xf:
(**(code **)(*(longlong *)param_1[0xeb] + 0x68))
((longlong *)param_1[0xeb],param_2[0x1c],param_2[4]);
break;
case 0x10:
local_e8 = 0;
local_e0 = 0;
local_d8 = 0;
local_d0 = 0;
local_f0 = Proud::ByteArray::vftable;
FUN_14016d8c0();
local_res18 = PTR_DAT_1403440a0;
uVar7 = FUN_140198f80(local_res20,0x10,1,&local_res18,&local_f0);
(**(code **)(*param_1 + 0x38))(param_1,uVar7);
puVar4 = local_res18;
if (((local_res18 != (undefined *)0x0) && (local_res18 != PTR_DAT_1403440a0)) &&
(puVar1 = local_res18 + -8, puVar1 != (undefined *)0x0)) {
ppuVar6 = (undefined **)FUN_14016d8c0();
local_180 = local_180 & 0xffffff00;
local_188 = ppuVar6;
FUN_14016db50(ppuVar6);
local_180 = CONCAT31(local_180._1_3_,1);
piVar2 = (int *)(puVar4 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14016d970(puVar1);
}
FUN_14016dbe0(ppuVar6);
}
local_res18 = PTR_DAT_1403440a0;
FUN_14019a9e0(&local_f0);
break;
case 0x11:
(**(code **)(*(longlong *)param_1[0xeb] + 0x70))((longlong *)param_1[0xeb],param_2[0x1c]);
break;
case 0x13:
lVar8 = 0;
local_98 = 0;
local_90 = 0;
local_88 = 0;
local_80 = 0;
local_a0 = Proud::ByteArray::vftable;
if (*(longlong *)(param_2 + 2) != 0) {
lVar8 = *(longlong *)(*(longlong *)(param_2 + 2) + 0x38);
}
uVar7 = FUN_140198f80(local_60,0x19,1,lVar8 + 0x10,&local_a0);
(**(code **)(*param_1 + 0x38))(param_1,uVar7);
FUN_14019a9e0(&local_a0);
break;
case 0x14:
puVar9 = (undefined4 *)0x0;
local_c0 = 0;
local_b8 = 0;
local_b0 = 0;
local_a8 = 0;
local_c8 = Proud::ByteArray::vftable;
lVar8 = *(longlong *)(param_2 + 2);
puVar3 = puVar9;
if (lVar8 != 0) {
puVar9 = *(undefined4 **)(lVar8 + 0x38);
puVar3 = *(undefined4 **)(lVar8 + 0x38);
}
uVar7 = FUN_140198f80(local_50,*puVar9,param_2[0x1c],puVar3 + 4,&local_c8);
(**(code **)(*param_1 + 0x38))(param_1,uVar7);
FUN_14019a9e0(&local_c8);
break;
case 0x15:
puVar9 = (undefined4 *)0x0;
local_170 = 0;
local_168 = 0;
local_160 = 0;
local_158 = 0;
local_178 = Proud::ByteArray::vftable;
lVar8 = *(longlong *)(param_2 + 2);
puVar3 = puVar9;
if (lVar8 != 0) {
puVar9 = *(undefined4 **)(lVar8 + 0x38);
puVar3 = *(undefined4 **)(lVar8 + 0x38);
}
uVar7 = FUN_140198f80(local_38,*puVar9,param_2[0x1c],puVar3 + 4,&local_178);
FUN_140186b80(param_1,uVar7);
FUN_14019a9e0(&local_178);
}
}
return;
}