137 lines
4.2 KiB
C
137 lines
4.2 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401aa1d0 FUN_1401aa1d0
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1401aa1d0(longlong param_1,longlong param_2,undefined8 param_3)
|
|
|
|
{
|
|
longlong *plVar1;
|
|
char cVar2;
|
|
int iVar3;
|
|
undefined4 uVar4;
|
|
longlong lVar5;
|
|
undefined4 *puVar6;
|
|
undefined4 *puVar7;
|
|
undefined4 *puVar8;
|
|
int iVar9;
|
|
undefined4 *local_res20;
|
|
undefined4 *local_198;
|
|
undefined1 local_190;
|
|
undefined8 local_120;
|
|
undefined1 local_118 [4];
|
|
undefined4 local_114;
|
|
undefined8 local_e0;
|
|
undefined1 local_70 [72];
|
|
|
|
local_120 = 0xfffffffffffffffe;
|
|
if ((int)(*(int *)(param_2 + 8) + (*(int *)(param_2 + 8) >> 0x1f & 7U)) >> 3 != 0) {
|
|
FUN_140193740(*(undefined8 *)(param_1 + 0x148),0,
|
|
"Proud::CNetThreads_S::UserWorkerThread_FinalReceiveUserMessage",2);
|
|
}
|
|
if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x758) != 0) {
|
|
FUN_14016ec40(local_118);
|
|
local_114 = *(undefined4 *)(param_2 + 0x30);
|
|
local_118[0] = *(undefined1 *)(param_2 + 0x48);
|
|
local_e0 = param_3;
|
|
cVar2 = FUN_14016ba10(param_2 + 8,&local_res20);
|
|
if (cVar2 != '\0') {
|
|
lVar5 = *(longlong *)(param_2 + 0x10);
|
|
if (lVar5 == 0) {
|
|
if (*(longlong *)(param_2 + 0x18) == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
iVar9 = *(int *)(param_2 + 0x20);
|
|
}
|
|
else {
|
|
iVar9 = *(int *)(lVar5 + 0x18);
|
|
}
|
|
iVar3 = (int)(*(int *)(param_2 + 8) + (*(int *)(param_2 + 8) >> 0x1f & 7U)) >> 3;
|
|
if ((int)local_res20 == iVar9 - iVar3) {
|
|
if (*(longlong *)(param_2 + 0x18) == 0) {
|
|
if (lVar5 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
if (*(int *)(lVar5 + 0x18) == 0) {
|
|
lVar5 = 0;
|
|
}
|
|
else {
|
|
lVar5 = *(longlong *)(lVar5 + 0x10);
|
|
}
|
|
}
|
|
else {
|
|
lVar5 = *(longlong *)(param_2 + 0x18);
|
|
if (lVar5 == 0) {
|
|
FUN_14016d300(local_70,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_70,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
}
|
|
plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x148) + 0x758);
|
|
(**(code **)(*plVar1 + 0x30))
|
|
(plVar1,*(undefined4 *)(param_2 + 0x30),local_118,lVar5 + iVar3,(int)local_res20);
|
|
goto LAB_1401aa497;
|
|
}
|
|
}
|
|
local_res20 = (undefined4 *)FUN_14016d940(0x60);
|
|
if (local_res20 == (undefined4 *)0x0) {
|
|
lVar5 = 0;
|
|
}
|
|
else {
|
|
lVar5 = FUN_140198ee0(local_res20);
|
|
}
|
|
puVar8 = (undefined4 *)0x0;
|
|
if (lVar5 == 0) {
|
|
local_res20 = (undefined4 *)0x0;
|
|
puVar6 = puVar8;
|
|
}
|
|
else {
|
|
puVar6 = (undefined4 *)FUN_14016d940(0x48);
|
|
local_198 = puVar6;
|
|
if (puVar6 != (undefined4 *)0x0) {
|
|
local_res20 = puVar6;
|
|
uVar4 = FUN_140171510();
|
|
FUN_14016da70(puVar6,uVar4,1);
|
|
}
|
|
local_res20 = puVar6;
|
|
FUN_14016db50(puVar6);
|
|
*(undefined8 *)(puVar6 + 0x10) = 1;
|
|
*(longlong *)(puVar6 + 0xe) = lVar5;
|
|
FUN_14016dbe0(puVar6);
|
|
}
|
|
puVar7 = puVar8;
|
|
if (puVar6 != (undefined4 *)0x0) {
|
|
puVar7 = *(undefined4 **)(puVar6 + 0xe);
|
|
}
|
|
*puVar7 = 0x1f;
|
|
if (puVar6 != (undefined4 *)0x0) {
|
|
puVar8 = *(undefined4 **)(puVar6 + 0xe);
|
|
}
|
|
FUN_14004c050(puVar8 + 4,L"Invalid payload size in User Message!");
|
|
local_198 = (undefined4 *)0x0;
|
|
FUN_140184b90(&local_198,&local_res20);
|
|
(**(code **)(**(longlong **)(param_1 + 0x148) + 0x80))
|
|
(*(longlong **)(param_1 + 0x148),&local_198);
|
|
if (puVar6 != (undefined4 *)0x0) {
|
|
local_190 = 0;
|
|
local_198 = puVar6;
|
|
FUN_14016db50(puVar6);
|
|
local_190 = 1;
|
|
plVar1 = (longlong *)(puVar6 + 0x10);
|
|
*plVar1 = *plVar1 + -1;
|
|
if (*plVar1 == 0) {
|
|
FUN_14016dbe0(puVar6);
|
|
local_190 = 0;
|
|
FUN_140154a90(puVar6);
|
|
}
|
|
else {
|
|
FUN_14016dbe0(puVar6);
|
|
}
|
|
}
|
|
}
|
|
LAB_1401aa497:
|
|
FUN_1401c2880(param_1 + 0x160,*(undefined4 *)(param_2 + 0x30),0);
|
|
return;
|
|
}
|
|
|