208 lines
7.5 KiB
C
208 lines
7.5 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x14008b450 FUN_14008b450
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_14008b450(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_1401555a0 ^ (ulonglong)auStack_e68;
|
|
plVar12 = param_3;
|
|
local_e38 = param_3;
|
|
local_db0 = param_1;
|
|
FUN_140093300();
|
|
pbVar14 = (byte *)0x0;
|
|
local_df8 = 0;
|
|
local_df0 = (byte *)0x0;
|
|
local_de8 = 0;
|
|
local_de0 = 0;
|
|
local_e00 = Proud::ByteArray::vftable;
|
|
uVar1 = FUN_140080ca0(param_2,&local_e48,plVar12,param_4);
|
|
piVar3 = local_e48;
|
|
if ((((char)uVar1 != '\0') && (iVar7 = (int)local_e48, -1 < iVar7)) && (iVar7 <= DAT_140155140)) {
|
|
FUN_14001bc70((longlong)&local_e00,iVar7,(SIZE_T)plVar12);
|
|
pbVar4 = local_df0;
|
|
if ((int)local_de8 == 0) {
|
|
pbVar4 = pbVar14;
|
|
}
|
|
SVar8 = (ulonglong)piVar3 & 0xffffffff;
|
|
uVar2 = FUN_140080600(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_140080ca0(param_2,&local_e48,SVar8,param_4);
|
|
piVar3 = local_e48;
|
|
if ((((char)uVar1 != '\0') && (iVar7 = (int)local_e48, -1 < iVar7)) &&
|
|
(iVar7 <= DAT_140155140)) {
|
|
FUN_14001bc70((longlong)&local_dd8,iVar7,SVar8);
|
|
pbVar4 = local_dc8;
|
|
if ((int)local_dc0 == 0) {
|
|
pbVar4 = pbVar14;
|
|
}
|
|
uVar2 = FUN_140080600(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_1400a1330((ulonglong *)&local_e48,(longlong)pppuVar6,(SIZE_T)pppuVar9,plVar12);
|
|
if ((local_e48 == (int *)0x0) || (*(longlong *)(local_e48 + 0xe) == 0)) {
|
|
FUN_14002b570((longlong *)&local_e48,pppuVar6,pppuVar9,plVar12);
|
|
piVar3 = (int *)(**(code **)(**(longlong **)(param_1 + 0x52) + 0x58))();
|
|
local_e48 = piVar3;
|
|
FUN_14002e6e0(piVar3);
|
|
local_e40 = 1;
|
|
if (DAT_14015bfcf != '\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_140090ac0(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_140092530((longlong)&local_dd8,(longlong)&local_e28,puVar10,uVar13);
|
|
if ((char)uVar2 == '\0') {
|
|
FUN_14002f1e0(local_d18,L"Decrypt Fast EncryptKey Error",puVar10,uVar13);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_d18,(ThrowInfo *)&DAT_140151b88);
|
|
}
|
|
pbVar4 = local_e18;
|
|
if ((int)local_e10 == 0) {
|
|
pbVar4 = pbVar14;
|
|
}
|
|
SVar8 = (SIZE_T)(*(uint *)(*(longlong *)(param_1 + 0x52) + 0x248) >> 3);
|
|
FUN_1400a0660((ulonglong)(param_3 + 0xcb),(longlong)pbVar4,SVar8,uVar13);
|
|
FUN_14003b870(&local_e28);
|
|
*(undefined1 *)(param_3 + 0xd1) = 1;
|
|
FUN_14002e770((longlong)piVar3);
|
|
local_e40 = 0;
|
|
FUN_1400806d0(local_d78);
|
|
FUN_1400801a0((longlong)local_d78,pbVar4,SVar8,uVar13);
|
|
FUN_140080830(local_d78,0x800,SVar8,uVar13);
|
|
uVar2 = 0;
|
|
FUN_140080830(local_d78,0,SVar8,uVar13);
|
|
FUN_14001ba80((longlong)local_d78,CONCAT71((int7)((ulonglong)uVar2 >> 8),6),SVar8,
|
|
uVar13);
|
|
piVar3 = (int *)(**(code **)(param_3[0x21] + 0x10))();
|
|
local_db0 = piVar3;
|
|
FUN_14002e6e0(piVar3);
|
|
local_da8 = 1;
|
|
lVar5 = FUN_140041760((longlong)local_cc8,(longlong)local_d78,SVar8);
|
|
local_e38 = (longlong *)0x0;
|
|
local_e30 = 1;
|
|
pplVar11 = &local_e38;
|
|
FUN_14009c2b0((char *)param_3[0xe9],lVar5,(SIZE_T *)pplVar11,uVar13);
|
|
FUN_140040950((longlong)local_cc8,lVar5,pplVar11,uVar13);
|
|
FUN_14002e770((longlong)piVar3);
|
|
local_e38 = &local_d70;
|
|
FUN_140095270(&local_d70);
|
|
if (local_d68 != 0) {
|
|
if (local_d5c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14002f590();
|
|
}
|
|
local_d60 = 0;
|
|
}
|
|
FUN_14003b870(&local_da0);
|
|
FUN_14003b870(&local_dd8);
|
|
goto LAB_14008b923;
|
|
}
|
|
}
|
|
FUN_14002e770((longlong)piVar3);
|
|
FUN_14003b870(&local_da0);
|
|
FUN_14003b870(&local_dd8);
|
|
}
|
|
else {
|
|
FUN_14002b570((longlong *)&local_e48,pppuVar6,pppuVar9,plVar12);
|
|
FUN_14003b870(&local_da0);
|
|
FUN_14003b870(&local_dd8);
|
|
}
|
|
goto LAB_14008b923;
|
|
}
|
|
}
|
|
FUN_14003b870(&local_dd8);
|
|
}
|
|
}
|
|
LAB_14008b923:
|
|
FUN_14003b870(&local_e00);
|
|
return;
|
|
}
|
|
|