170 lines
6.5 KiB
C
170 lines
6.5 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400c4f80 FUN_1400c4f80
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_1400c4f80(longlong param_1,uint *param_2,wchar_t *param_3,undefined8 param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
uint uVar2;
|
|
undefined8 uVar3;
|
|
ulonglong uVar4;
|
|
int *piVar5;
|
|
longlong lVar6;
|
|
uint uVar7;
|
|
undefined1 *puVar8;
|
|
wchar_t *pwVar9;
|
|
undefined8 uVar10;
|
|
SIZE_T SVar11;
|
|
longlong **pplVar12;
|
|
undefined1 auStack_1aa8 [32];
|
|
longlong *local_1a88;
|
|
undefined1 local_1a80;
|
|
uint local_1a78;
|
|
uint local_1a74;
|
|
int local_1a70 [2];
|
|
longlong local_1a68;
|
|
longlong local_1a60;
|
|
int local_1a54;
|
|
int *local_1a48;
|
|
undefined1 local_1a40;
|
|
int *local_1a38;
|
|
undefined1 local_1a30;
|
|
longlong local_1a28 [2];
|
|
undefined8 local_1a18;
|
|
undefined4 local_1a08 [2];
|
|
longlong local_1a00;
|
|
longlong local_19f8;
|
|
undefined4 local_19f0;
|
|
int local_19ec;
|
|
undefined1 local_19e0 [136];
|
|
undefined1 local_1958 [3200];
|
|
undefined1 *local_cd8;
|
|
undefined4 local_cd0;
|
|
undefined4 local_ccc;
|
|
undefined1 local_cc8 [3216];
|
|
ulonglong local_38;
|
|
undefined8 uStack_30;
|
|
|
|
uStack_30 = 0x1400c4f9a;
|
|
local_1a18 = 0xfffffffffffffffe;
|
|
local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_1aa8;
|
|
pwVar9 = param_3;
|
|
FUN_1400cf890();
|
|
uVar3 = FUN_1400bd3c0(param_2,&local_1a78,pwVar9,param_4);
|
|
if ((char)uVar3 != '\0') {
|
|
uVar10 = 4;
|
|
uVar3 = FUN_1400bc930(param_2,(undefined8 *)&local_1a74,4);
|
|
if ((char)uVar3 != '\0') {
|
|
uVar4 = FUN_1400bcfd0(param_2,&local_1a88,uVar10,param_4);
|
|
if ((char)uVar4 != '\0') {
|
|
if (((int)(uint)local_1a88 < 0) || (DAT_1401ac140 <= (int)(uint)local_1a88)) {
|
|
FUN_14009b0d0(*(longlong **)(param_1 + 0x148),param_3,
|
|
"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_LingerDataFrame1",2);
|
|
}
|
|
else {
|
|
uVar2 = *param_2;
|
|
uVar7 = (int)uVar2 >> 0x1f & 7;
|
|
iVar1 = FUN_14007c120((longlong)param_2,(ulonglong)uVar7,uVar10,param_4);
|
|
if (((int)(uVar7 + uVar2) >> 3) + (uint)local_1a88 != iVar1) {
|
|
param_4 = 2;
|
|
FUN_14009b0d0(*(longlong **)(param_1 + 0x148),param_3,
|
|
"msg.GetReadOffset() + frameLength == msg.GetLength()",2);
|
|
}
|
|
FUN_1400bca00(local_1a70);
|
|
uVar3 = FUN_1400bcc60(param_2,local_1a70,(uint)local_1a88,param_4);
|
|
if ((char)uVar3 == '\0') {
|
|
FUN_14009b0d0(*(longlong **)(param_1 + 0x148),param_3,
|
|
"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_LingerDataFrame1",2)
|
|
;
|
|
local_1a88 = &local_1a68;
|
|
FUN_1400d1800(&local_1a68);
|
|
if ((local_1a60 != 0) && (local_1a54 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
}
|
|
else {
|
|
piVar5 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))();
|
|
local_1a48 = piVar5;
|
|
FUN_14006b350(piVar5);
|
|
local_1a40 = 1;
|
|
if (DAT_1401b42cf != '\0') {
|
|
(**(code **)(**(longlong **)(param_1 + 0x148) + 200))
|
|
(*(longlong **)(param_1 + 0x148),
|
|
L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_LingerDataFrame1");
|
|
}
|
|
uVar2 = (**(code **)(*(longlong *)param_3 + 0x10))(param_3);
|
|
lVar6 = FUN_14007dea0(*(longlong *)(param_1 + 0x148),local_1a78);
|
|
if (lVar6 == 0) {
|
|
FUN_14006b3e0((longlong)piVar5);
|
|
local_1a88 = &local_1a68;
|
|
FUN_1400d1800(&local_1a68);
|
|
if ((local_1a60 != 0) && (local_1a54 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
}
|
|
else {
|
|
FUN_14006b3e0((longlong)piVar5);
|
|
local_1a40 = 0;
|
|
FUN_1400bca00(local_1a08);
|
|
SVar11 = 0x80;
|
|
puVar8 = local_19e0;
|
|
FUN_1400bc680((longlong)local_1a08,(longlong)puVar8,0x80,param_4);
|
|
FUN_140054a10((longlong)local_1a08,CONCAT71((int7)((ulonglong)puVar8 >> 8),0x19),
|
|
SVar11,param_4);
|
|
FUN_140014500((longlong)local_1a08,(ulonglong)uVar2,SVar11,param_4);
|
|
FUN_140014500((longlong)local_1a08,(ulonglong)local_1a74,SVar11,param_4);
|
|
FUN_1400bc450(local_1a28,(longlong)local_1a08);
|
|
FUN_1400bddd0((longlong)local_1a08,(longlong)(int)(uint)local_1a88,SVar11,param_4);
|
|
local_ccc = 200;
|
|
local_cd0 = 0;
|
|
local_cd8 = local_1958;
|
|
FUN_14007db50((longlong)local_cc8,(longlong)local_1a08,SVar11);
|
|
puVar8 = local_cc8;
|
|
FUN_14007cb60((longlong)local_1958,(longlong)puVar8,SVar11,param_4);
|
|
FUN_14007ca50((longlong)local_cc8,puVar8,SVar11,param_4);
|
|
FUN_14007db50((longlong)local_cc8,(longlong)local_1a70,SVar11);
|
|
puVar8 = local_cc8;
|
|
FUN_14007cb60((longlong)local_1958,(longlong)puVar8,SVar11,param_4);
|
|
FUN_14007ca50((longlong)local_cc8,puVar8,SVar11,param_4);
|
|
piVar5 = (int *)(**(code **)(*(longlong *)(lVar6 + 0x108) + 0x10))();
|
|
local_1a38 = piVar5;
|
|
FUN_14006b350(piVar5);
|
|
local_1a30 = 1;
|
|
local_1a88 = (longlong *)0x0;
|
|
local_1a80 = 1;
|
|
pplVar12 = &local_1a88;
|
|
puVar8 = local_1958;
|
|
FUN_1400d87b0(*(char **)(lVar6 + 0x748),(longlong)puVar8,(SIZE_T *)pplVar12,param_4);
|
|
FUN_14006b3e0((longlong)piVar5);
|
|
FUN_14007ca50((longlong)local_1958,puVar8,pplVar12,param_4);
|
|
FUN_1400bc470(local_1a28);
|
|
local_1a88 = &local_1a00;
|
|
FUN_1400d1800(&local_1a00);
|
|
if (local_19f8 != 0) {
|
|
if (local_19ec < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
local_19f0 = 0;
|
|
}
|
|
local_1a88 = &local_1a68;
|
|
FUN_1400d1800(&local_1a68);
|
|
if ((local_1a60 != 0) && (local_1a54 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|