78 lines
2.2 KiB
C
78 lines
2.2 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401d1b90 FUN_1401d1b90
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1401d1b90(longlong param_1,undefined8 *param_2,int param_3,undefined4 *param_4)
|
|
|
|
{
|
|
undefined8 *_Dst;
|
|
longlong lVar1;
|
|
longlong *plVar2;
|
|
ulonglong uVar3;
|
|
size_t _Size;
|
|
ulonglong uVar4;
|
|
undefined4 local_60;
|
|
undefined4 local_5c;
|
|
undefined *local_58;
|
|
undefined4 local_50;
|
|
undefined4 local_4c;
|
|
undefined **local_48;
|
|
longlong *local_40;
|
|
undefined8 *local_38;
|
|
undefined8 local_30;
|
|
undefined8 local_28;
|
|
|
|
if (*(longlong *)(param_1 + 0x58) != 0) {
|
|
local_48 = Proud::CFastArray<Proud::HostID,0>::vftable;
|
|
local_40 = (longlong *)0x0;
|
|
local_38 = (undefined8 *)0x0;
|
|
local_30 = 0;
|
|
local_28 = 0;
|
|
FUN_14015e670(&local_48,param_3);
|
|
_Dst = local_38;
|
|
if ((int)local_30 == 0) {
|
|
_Dst = (undefined8 *)0x0;
|
|
}
|
|
_Size = (longlong)param_3 << 2;
|
|
if (_Size < 0x21) {
|
|
uVar3 = (ulonglong)((uint)_Size & 7);
|
|
for (uVar4 = ((longlong)param_3 & 0x3fffffffffffffffU) >> 1; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*_Dst = *param_2;
|
|
_Dst = _Dst + 1;
|
|
param_2 = param_2 + 1;
|
|
}
|
|
if (uVar3 != 0) {
|
|
lVar1 = (longlong)_Dst - (longlong)param_2;
|
|
do {
|
|
*(undefined1 *)(lVar1 + (longlong)param_2) = *(undefined1 *)param_2;
|
|
param_2 = (undefined8 *)((longlong)param_2 + 1);
|
|
uVar3 = uVar3 - 1;
|
|
} while (uVar3 != 0);
|
|
}
|
|
}
|
|
else {
|
|
memcpy(_Dst,param_2,_Size);
|
|
}
|
|
FUN_14016d8c0();
|
|
local_58 = PTR_DAT_1403440a0;
|
|
local_60 = *param_4;
|
|
local_5c = param_4[1];
|
|
FUN_14004c050(&local_58,*(undefined8 *)(param_4 + 2));
|
|
local_50 = param_4[4];
|
|
local_4c = param_4[5];
|
|
plVar2 = (longlong *)(*(longlong *)(param_1 + 0x58) + 0x68);
|
|
(**(code **)(*plVar2 + 0x40))(plVar2,1,&DAT_14034c4b0,&local_48,&local_60);
|
|
FUN_14004eb70(&local_58);
|
|
local_48 = Proud::CFastArray<Proud::HostID,0>::vftable;
|
|
if (local_38 != (undefined8 *)0x0) {
|
|
if (local_40 == (longlong *)0x0) {
|
|
FUN_14016d970(local_38);
|
|
}
|
|
else {
|
|
(**(code **)(*local_40 + 0x18))();
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|