208 lines
7.5 KiB
C
208 lines
7.5 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400c7630 FUN_1400c7630
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_1400c7630(int *param_1,uint *param_2,longlong *param_3,undefined8 param_4)
|
|
|
|
{
|
|
ulonglong uVar1;
|
|
undefined8 uVar2;
|
|
int *piVar3;
|
|
byte *pbVar4;
|
|
longlong lVar5;
|
|
undefined ***pppuVar6;
|
|
int iVar7;
|
|
SIZE_T SVar8;
|
|
undefined ***pppuVar9;
|
|
uint *puVar10;
|
|
longlong **pplVar11;
|
|
longlong *plVar12;
|
|
undefined8 uVar13;
|
|
byte *pbVar14;
|
|
undefined1 auStack_e68 [32];
|
|
int *local_e48;
|
|
undefined1 local_e40;
|
|
longlong *local_e38;
|
|
undefined1 local_e30;
|
|
undefined **local_e28;
|
|
undefined8 local_e20;
|
|
byte *local_e18;
|
|
undefined8 local_e10;
|
|
undefined8 local_e08;
|
|
undefined **local_e00;
|
|
undefined8 local_df8;
|
|
byte *local_df0;
|
|
undefined8 local_de8;
|
|
undefined8 local_de0;
|
|
undefined **local_dd8;
|
|
undefined8 local_dd0;
|
|
byte *local_dc8;
|
|
undefined8 local_dc0;
|
|
undefined8 local_db8;
|
|
int *local_db0;
|
|
undefined1 local_da8;
|
|
undefined **local_da0;
|
|
undefined8 local_d98;
|
|
byte *local_d90;
|
|
undefined8 local_d88;
|
|
undefined8 local_d80;
|
|
int local_d78 [2];
|
|
longlong local_d70;
|
|
longlong local_d68;
|
|
undefined4 local_d60;
|
|
int local_d5c;
|
|
undefined8 local_d20;
|
|
exception local_d18 [80];
|
|
undefined1 local_cc8 [3216];
|
|
ulonglong local_38;
|
|
|
|
local_d20 = 0xfffffffffffffffe;
|
|
local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_e68;
|
|
plVar12 = param_3;
|
|
local_e38 = param_3;
|
|
local_db0 = param_1;
|
|
FUN_1400cf890();
|
|
pbVar14 = (byte *)0x0;
|
|
local_df8 = 0;
|
|
local_df0 = (byte *)0x0;
|
|
local_de8 = 0;
|
|
local_de0 = 0;
|
|
local_e00 = Proud::ByteArray::vftable;
|
|
uVar1 = FUN_1400bcfd0(param_2,&local_e48,plVar12,param_4);
|
|
piVar3 = local_e48;
|
|
if ((((char)uVar1 != '\0') && (iVar7 = (int)local_e48, -1 < iVar7)) && (iVar7 <= DAT_1401ac140)) {
|
|
FUN_1400146f0((longlong)&local_e00,iVar7,(SIZE_T)plVar12);
|
|
pbVar4 = local_df0;
|
|
if ((int)local_de8 == 0) {
|
|
pbVar4 = pbVar14;
|
|
}
|
|
SVar8 = (ulonglong)piVar3 & 0xffffffff;
|
|
uVar2 = FUN_1400bc930(param_2,(undefined8 *)pbVar4,SVar8);
|
|
if ((char)uVar2 != '\0') {
|
|
local_dd0 = 0;
|
|
local_dc8 = (byte *)0x0;
|
|
local_dc0 = 0;
|
|
local_db8 = 0;
|
|
local_dd8 = Proud::ByteArray::vftable;
|
|
uVar1 = FUN_1400bcfd0(param_2,&local_e48,SVar8,param_4);
|
|
piVar3 = local_e48;
|
|
if ((((char)uVar1 != '\0') && (iVar7 = (int)local_e48, -1 < iVar7)) &&
|
|
(iVar7 <= DAT_1401ac140)) {
|
|
FUN_1400146f0((longlong)&local_dd8,iVar7,SVar8);
|
|
pbVar4 = local_dc8;
|
|
if ((int)local_dc0 == 0) {
|
|
pbVar4 = pbVar14;
|
|
}
|
|
uVar2 = FUN_1400bc930(param_2,(undefined8 *)pbVar4,(ulonglong)piVar3 & 0xffffffff);
|
|
if ((char)uVar2 != '\0') {
|
|
local_d98 = 0;
|
|
local_d90 = (byte *)0x0;
|
|
local_d88 = 0;
|
|
local_d80 = 0;
|
|
local_da0 = Proud::ByteArray::vftable;
|
|
plVar12 = (longlong *)(*(longlong *)(param_1 + 0x52) + 0xc48);
|
|
pppuVar9 = &local_e00;
|
|
pppuVar6 = &local_da0;
|
|
FUN_1400dd990((ulonglong *)&local_e48,(longlong)pppuVar6,(SIZE_T)pppuVar9,plVar12);
|
|
if ((local_e48 == (int *)0x0) || (*(longlong *)(local_e48 + 0xe) == 0)) {
|
|
FUN_140064150((longlong *)&local_e48,pppuVar6,pppuVar9,plVar12);
|
|
piVar3 = (int *)(**(code **)(**(longlong **)(param_1 + 0x52) + 0x58))();
|
|
local_e48 = piVar3;
|
|
FUN_14006b350(piVar3);
|
|
local_e40 = 1;
|
|
if (DAT_1401b42cf != '\0') {
|
|
(**(code **)(**(longlong **)(param_1 + 0x52) + 200))
|
|
(*(longlong **)(param_1 + 0x52),
|
|
L"Proud::CNetThreads_S::NetworkerThread_ProcessMessage_NotifyCSEncryptedSessionKey"
|
|
);
|
|
}
|
|
pbVar4 = pbVar14;
|
|
if (*(longlong *)(*(longlong *)(param_1 + 0x52) + 0x1708) != 0) {
|
|
pbVar4 = *(byte **)(*(longlong *)(param_1 + 0x52) + 0x16f8);
|
|
}
|
|
for (; pbVar4 != (byte *)0x0; pbVar4 = *(byte **)(pbVar4 + 0x18)) {
|
|
if (param_3 == *(longlong **)(pbVar4 + 0x10)) {
|
|
pbVar4 = local_d90;
|
|
if ((int)local_d88 == 0) {
|
|
pbVar4 = pbVar14;
|
|
}
|
|
uVar13 = 0x10;
|
|
FUN_1400cd030(param_3 + 0x51,pbVar4,
|
|
(ulonglong)(*(uint *)(*(longlong *)(param_1 + 0x52) + 0x244) >> 3),
|
|
0x10);
|
|
local_e20 = 0;
|
|
local_e18 = (byte *)0x0;
|
|
local_e10 = 0;
|
|
local_e08 = 0;
|
|
local_e28 = Proud::ByteArray::vftable;
|
|
puVar10 = (uint *)(param_3 + 0x51);
|
|
uVar2 = FUN_1400ceaa0((longlong)&local_dd8,(longlong)&local_e28,puVar10,uVar13);
|
|
if ((char)uVar2 == '\0') {
|
|
FUN_14006ba50(local_d18,L"Decrypt Fast EncryptKey Error",puVar10,uVar13);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_d18,(ThrowInfo *)&DAT_1401a93e8);
|
|
}
|
|
pbVar4 = local_e18;
|
|
if ((int)local_e10 == 0) {
|
|
pbVar4 = pbVar14;
|
|
}
|
|
SVar8 = (SIZE_T)(*(uint *)(*(longlong *)(param_1 + 0x52) + 0x248) >> 3);
|
|
FUN_1400dccc0((ulonglong)(param_3 + 0xcb),(longlong)pbVar4,SVar8,uVar13);
|
|
FUN_140078360(&local_e28);
|
|
*(undefined1 *)(param_3 + 0xd1) = 1;
|
|
FUN_14006b3e0((longlong)piVar3);
|
|
local_e40 = 0;
|
|
FUN_1400bca00(local_d78);
|
|
FUN_1400bc4d0((longlong)local_d78,pbVar4,SVar8,uVar13);
|
|
FUN_1400bcb60(local_d78,0x800,SVar8,uVar13);
|
|
uVar2 = 0;
|
|
FUN_1400bcb60(local_d78,0,SVar8,uVar13);
|
|
FUN_140054a10((longlong)local_d78,CONCAT71((int7)((ulonglong)uVar2 >> 8),6),SVar8,
|
|
uVar13);
|
|
piVar3 = (int *)(**(code **)(param_3[0x21] + 0x10))();
|
|
local_db0 = piVar3;
|
|
FUN_14006b350(piVar3);
|
|
local_da8 = 1;
|
|
lVar5 = FUN_14007db50((longlong)local_cc8,(longlong)local_d78,SVar8);
|
|
local_e38 = (longlong *)0x0;
|
|
local_e30 = 1;
|
|
pplVar11 = &local_e38;
|
|
FUN_1400d87b0((char *)param_3[0xe9],lVar5,(SIZE_T *)pplVar11,uVar13);
|
|
FUN_14007ca50((longlong)local_cc8,lVar5,pplVar11,uVar13);
|
|
FUN_14006b3e0((longlong)piVar3);
|
|
local_e38 = &local_d70;
|
|
FUN_1400d1800(&local_d70);
|
|
if (local_d68 != 0) {
|
|
if (local_d5c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
local_d60 = 0;
|
|
}
|
|
FUN_140078360(&local_da0);
|
|
FUN_140078360(&local_dd8);
|
|
goto LAB_1400c7b03;
|
|
}
|
|
}
|
|
FUN_14006b3e0((longlong)piVar3);
|
|
FUN_140078360(&local_da0);
|
|
FUN_140078360(&local_dd8);
|
|
}
|
|
else {
|
|
FUN_140064150((longlong *)&local_e48,pppuVar6,pppuVar9,plVar12);
|
|
FUN_140078360(&local_da0);
|
|
FUN_140078360(&local_dd8);
|
|
}
|
|
goto LAB_1400c7b03;
|
|
}
|
|
}
|
|
FUN_140078360(&local_dd8);
|
|
}
|
|
}
|
|
LAB_1400c7b03:
|
|
FUN_140078360(&local_e00);
|
|
return;
|
|
}
|
|
|