208 lines
6.3 KiB
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;
|
|
}
|
|
|