771 lines
29 KiB
C
771 lines
29 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x14019ff40 FUN_14019ff40
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
ulonglong FUN_14019ff40(longlong *param_1,undefined8 param_2,int *param_3,undefined8 param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
undefined *puVar1;
|
|
undefined4 uVar2;
|
|
byte bVar3;
|
|
char cVar4;
|
|
int iVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
uint uVar8;
|
|
undefined8 uVar9;
|
|
int *piVar10;
|
|
uint *puVar11;
|
|
undefined8 uVar12;
|
|
undefined *extraout_RAX;
|
|
undefined *puVar13;
|
|
ulonglong uVar14;
|
|
longlong lVar15;
|
|
uint *puVar16;
|
|
uint uVar17;
|
|
uint uVar18;
|
|
int iVar19;
|
|
undefined1 auStack_1d58 [32];
|
|
undefined ***local_1d38;
|
|
uint *local_1d28;
|
|
int local_1d20;
|
|
uint *local_1d18;
|
|
undefined8 local_1d10;
|
|
undefined2 local_1d08 [4];
|
|
undefined *local_1d00;
|
|
undefined **local_1cf8;
|
|
undefined8 local_1cf0;
|
|
undefined8 local_1ce8;
|
|
undefined8 local_1ce0;
|
|
undefined8 local_1cd8;
|
|
undefined8 local_1cb0;
|
|
undefined8 local_1ca8;
|
|
undefined1 local_1ca0;
|
|
undefined1 local_1c98 [8];
|
|
undefined1 local_1c90 [8];
|
|
longlong local_1c88;
|
|
undefined4 local_1c80;
|
|
int local_1c7c;
|
|
undefined1 *local_1c70;
|
|
undefined1 local_1c68 [8];
|
|
longlong local_1c60;
|
|
longlong local_1c58;
|
|
int local_1c50;
|
|
int local_1c4c;
|
|
undefined8 local_1c40;
|
|
undefined1 local_1c38;
|
|
undefined8 local_1c30;
|
|
undefined1 local_1c28;
|
|
undefined8 local_1c20;
|
|
undefined1 local_1c18;
|
|
undefined8 local_1c10;
|
|
undefined4 uStack_1c08;
|
|
undefined4 uStack_1c04;
|
|
undefined8 local_1c00;
|
|
int iStack_1bf8;
|
|
undefined4 uStack_1bf4;
|
|
undefined1 local_1bf0 [8];
|
|
undefined1 local_1be8 [8];
|
|
undefined8 local_1be0;
|
|
undefined1 local_1bd8 [8];
|
|
longlong local_1bd0;
|
|
longlong local_1bc8;
|
|
undefined4 local_1bc0;
|
|
int local_1bbc;
|
|
undefined1 local_1bb0 [136];
|
|
void *local_1b28;
|
|
longlong local_1b20;
|
|
ulonglong local_1b18;
|
|
undefined8 local_1b10;
|
|
int local_1b08 [100];
|
|
undefined4 local_1978;
|
|
undefined4 uStack_1974;
|
|
int iStack_1970;
|
|
undefined4 uStack_196c;
|
|
undefined4 *local_cf8;
|
|
undefined4 local_cf0;
|
|
int local_cec;
|
|
undefined1 local_ce8 [3200];
|
|
undefined1 *local_68;
|
|
undefined4 local_60;
|
|
int local_5c;
|
|
ulonglong local_58;
|
|
undefined8 uStack_48;
|
|
|
|
uStack_48 = 0x14019ff5f;
|
|
local_1be0 = 0xfffffffffffffffe;
|
|
local_58 = DAT_1403463c0 ^ (ulonglong)auStack_1d58;
|
|
bVar3 = 0;
|
|
local_1cb0 = param_2;
|
|
if ((param_3[9] == 0) || (*param_3 == 2)) {
|
|
local_1d38 = (undefined ***)CONCAT44(local_1d38._4_4_,param_5);
|
|
uVar14 = (**(code **)(*param_1 + 0x78))();
|
|
}
|
|
else {
|
|
uVar9 = (**(code **)(*param_1 + 0x58))();
|
|
local_1c40 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_1c38 = 1;
|
|
if (DAT_14034c86f != '\0') {
|
|
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetCoreImpl::Send_SecureLayer");
|
|
}
|
|
local_1b28 = (void *)0x0;
|
|
local_1b10 = 0;
|
|
local_1b20 = 0;
|
|
local_1b18 = 100;
|
|
(**(code **)(*param_1 + 0x50))(param_1,param_5,param_4,&local_1b28);
|
|
FUN_14016dbe0(uVar9);
|
|
local_1c38 = 0;
|
|
FUN_14016d8c0();
|
|
local_1d00 = PTR_DAT_1403440a0;
|
|
iVar19 = 0;
|
|
local_1d10 = (longlong *)((ulonglong)local_1d10._4_4_ << 0x20);
|
|
if (0 < local_1b20) {
|
|
lVar15 = 0;
|
|
do {
|
|
if ((lVar15 < 0) || (local_1b20 <= lVar15)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (local_1b18 < 0x65) {
|
|
piVar10 = local_1b08 + lVar15;
|
|
}
|
|
else {
|
|
piVar10 = (int *)((longlong)local_1b28 + lVar15 * 4);
|
|
}
|
|
local_1d20 = *piVar10;
|
|
iVar5 = (**(code **)(*param_1 + 0x30))(param_1);
|
|
if (iVar5 == local_1d20) {
|
|
local_1d38 = (undefined ***)CONCAT44(local_1d38._4_4_,1);
|
|
bVar3 = (**(code **)(*param_1 + 0x78))(param_1,param_2,param_3);
|
|
}
|
|
else {
|
|
lVar15 = (**(code **)(*param_1 + 0xc0))(param_1,local_1d20,&local_1d00);
|
|
if (lVar15 == 0) {
|
|
uVar9 = (**(code **)(*param_1 + 0x58))(param_1);
|
|
local_1ca8 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_1ca0 = 1;
|
|
if (DAT_14034c86f != '\0') {
|
|
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetCoreImpl::Send_SecureLayer");
|
|
}
|
|
if (((local_1d00 == (undefined *)0x0) || (local_1d00 == PTR_DAT_1403440a0)) ||
|
|
(*(int *)(local_1d00 + -8) < 1)) {
|
|
FUN_14016d8c0();
|
|
local_1d28 = (uint *)PTR_DAT_1403440a0;
|
|
uVar6 = FUN_14016d740(
|
|
L"CStartServerParameter.m_enableP2PEncryptedMessaging=false. P2P Messaging can not encrypted!!"
|
|
);
|
|
uVar17 = 0;
|
|
uVar18 = 0;
|
|
if ((local_1d28 != (uint *)0x0) &&
|
|
(uVar18 = 0, local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar18 = local_1d28[-2];
|
|
}
|
|
uVar7 = uVar6;
|
|
if ((((int)uVar6 <= (int)uVar18) && (uVar7 = uVar17, local_1d28 != (uint *)0x0)) &&
|
|
(local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = local_1d28[-2];
|
|
}
|
|
uVar18 = 1;
|
|
if (1 < (int)uVar7) {
|
|
uVar18 = uVar7;
|
|
}
|
|
uVar8 = 0;
|
|
uVar7 = uVar8;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = local_1d28[-2];
|
|
}
|
|
if ((int)uVar7 < (int)uVar18) {
|
|
if (local_1d28 == (uint *)0x0) {
|
|
local_1d28 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
if ((int)uVar18 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar18 == 0) {
|
|
FUN_14004eb70(&local_1d28);
|
|
}
|
|
else {
|
|
uVar7 = uVar8;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = local_1d28[-2];
|
|
}
|
|
if (uVar18 != uVar7) {
|
|
puVar11 = (uint *)FUN_14016d940((longlong)(int)uVar18 * 2 + 10);
|
|
if (puVar11 != (uint *)0x0) {
|
|
*puVar11 = 0;
|
|
puVar11[1] = 1;
|
|
}
|
|
*puVar11 = uVar18;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar8 = local_1d28[-2];
|
|
}
|
|
puVar16 = (uint *)PTR_DAT_1403440a0;
|
|
if ((int)uVar18 < (int)uVar8) {
|
|
LAB_1401a0897:
|
|
if (local_1d28 != (uint *)0x0) {
|
|
puVar16 = local_1d28;
|
|
}
|
|
}
|
|
else {
|
|
uVar18 = uVar17;
|
|
if (local_1d28 != (uint *)0x0) {
|
|
if (local_1d28 != (uint *)PTR_DAT_1403440a0) {
|
|
uVar18 = local_1d28[-2];
|
|
}
|
|
goto LAB_1401a0897;
|
|
}
|
|
}
|
|
FUN_14016d770(puVar11 + 2,puVar16,uVar18);
|
|
FUN_14004eb70(&local_1d28);
|
|
local_1d28 = puVar11 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_14004e850(&local_1d28);
|
|
puVar11 = local_1d28;
|
|
if (local_1d28 == (uint *)0x0) {
|
|
puVar11 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
FUN_14016d770(puVar11,
|
|
L"CStartServerParameter.m_enableP2PEncryptedMessaging=false. P2P Messaging can not encrypted!!"
|
|
,uVar6);
|
|
puVar11 = local_1d28;
|
|
if (local_1d28 == (uint *)0x0) {
|
|
puVar11 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
uVar6 = FUN_14016d740(puVar11);
|
|
uVar17 = 0;
|
|
uVar18 = 0;
|
|
if (0 < (int)uVar6) {
|
|
uVar18 = uVar6;
|
|
}
|
|
uVar6 = uVar17;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar6 = local_1d28[-2];
|
|
}
|
|
if (((int)uVar18 < (int)uVar6) || (uVar18 = uVar17, local_1d28 == (uint *)0x0)) {
|
|
LAB_1401a0935:
|
|
if (((local_1d28 != (uint *)PTR_DAT_1403440a0) && (local_1d28 != (uint *)0x0)) &&
|
|
(local_1d28 + -2 != (uint *)0x0)) {
|
|
local_1d28[-2] = uVar18;
|
|
*(undefined2 *)((longlong)local_1d28 + (longlong)(int)uVar18 * 2) = 0;
|
|
}
|
|
}
|
|
else if (local_1d28 != (uint *)PTR_DAT_1403440a0) {
|
|
uVar18 = local_1d28[-2];
|
|
goto LAB_1401a0935;
|
|
}
|
|
local_1cf0 = 0;
|
|
local_1ce8 = 0;
|
|
local_1ce0 = 0;
|
|
local_1cd8 = 0;
|
|
local_1cf8 = Proud::ByteArray::vftable;
|
|
local_1d38 = &local_1cf8;
|
|
uVar12 = FUN_140198f80(&local_1c70,5,local_1d20,&local_1d28);
|
|
(**(code **)(*param_1 + 0x80))(param_1,uVar12);
|
|
FUN_14019a9e0(&local_1cf8);
|
|
FUN_14004eb70(&local_1d28);
|
|
param_2 = local_1cb0;
|
|
iVar19 = (int)local_1d10;
|
|
}
|
|
else {
|
|
local_1cf0 = 0;
|
|
local_1ce8 = 0;
|
|
local_1ce0 = 0;
|
|
local_1cd8 = 0;
|
|
local_1cf8 = Proud::ByteArray::vftable;
|
|
local_1d38 = &local_1cf8;
|
|
uVar12 = FUN_140198f80(local_1be8,5,local_1d20,&local_1d00);
|
|
(**(code **)(*param_1 + 0x80))(param_1,uVar12);
|
|
FUN_14019a9e0(&local_1cf8);
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
local_1ca0 = 0;
|
|
}
|
|
else {
|
|
uVar9 = (**(code **)(*param_1 + 0x58))();
|
|
local_1c20 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_1c18 = 1;
|
|
if (DAT_14034c86f != '\0') {
|
|
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetCoreImpl::Send_SecureLayer");
|
|
}
|
|
FUN_14016b440(local_1c98);
|
|
FUN_14016abe0(local_1c98);
|
|
if (*param_3 == 1) {
|
|
cVar4 = (**(code **)(*param_1 + 0xa0))(param_1,local_1d20,local_1d08);
|
|
if (cVar4 == '\0') {
|
|
FUN_14016d8c0();
|
|
local_1d28 = (uint *)PTR_DAT_1403440a0;
|
|
uVar6 = FUN_14016d740(&DAT_140280fe0);
|
|
uVar17 = 0;
|
|
uVar18 = 0;
|
|
if ((local_1d28 != (uint *)0x0) &&
|
|
(uVar18 = 0, local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar18 = local_1d28[-2];
|
|
}
|
|
uVar7 = uVar6;
|
|
if ((((int)uVar6 <= (int)uVar18) && (uVar7 = uVar17, local_1d28 != (uint *)0x0)) &&
|
|
(local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = local_1d28[-2];
|
|
}
|
|
uVar18 = 1;
|
|
if (1 < (int)uVar7) {
|
|
uVar18 = uVar7;
|
|
}
|
|
uVar7 = uVar17;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = local_1d28[-2];
|
|
}
|
|
uVar8 = 0;
|
|
if ((int)uVar7 < (int)uVar18) {
|
|
if (local_1d28 == (uint *)0x0) {
|
|
local_1d28 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
if ((int)uVar18 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar18 == 0) {
|
|
FUN_14004eb70(&local_1d28);
|
|
}
|
|
else {
|
|
uVar7 = uVar17;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = local_1d28[-2];
|
|
}
|
|
if (uVar18 != uVar7) {
|
|
puVar11 = (uint *)FUN_14016d940((longlong)(int)uVar18 * 2 + 10);
|
|
if (puVar11 != (uint *)0x0) {
|
|
*puVar11 = 0;
|
|
puVar11[1] = 1;
|
|
}
|
|
*puVar11 = uVar18;
|
|
uVar7 = uVar8;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1403440a0))
|
|
{
|
|
uVar7 = local_1d28[-2];
|
|
}
|
|
puVar16 = (uint *)PTR_DAT_1403440a0;
|
|
if ((int)uVar18 < (int)uVar7) {
|
|
LAB_1401a0aed:
|
|
if (local_1d28 != (uint *)0x0) {
|
|
puVar16 = local_1d28;
|
|
}
|
|
}
|
|
else {
|
|
uVar18 = uVar17;
|
|
if (local_1d28 != (uint *)0x0) {
|
|
if (local_1d28 != (uint *)PTR_DAT_1403440a0) {
|
|
uVar18 = local_1d28[-2];
|
|
}
|
|
goto LAB_1401a0aed;
|
|
}
|
|
}
|
|
FUN_14016d770(puVar11 + 2,puVar16,uVar18);
|
|
FUN_14004eb70(&local_1d28);
|
|
local_1d28 = puVar11 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_14004e850(&local_1d28);
|
|
puVar11 = local_1d28;
|
|
if (local_1d28 == (uint *)0x0) {
|
|
puVar11 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
FUN_14016d770(puVar11,&DAT_140280fe0,uVar6);
|
|
puVar11 = local_1d28;
|
|
if (local_1d28 == (uint *)0x0) {
|
|
puVar11 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
uVar6 = FUN_14016d740(puVar11);
|
|
uVar18 = 0;
|
|
if (0 < (int)uVar6) {
|
|
uVar18 = uVar6;
|
|
}
|
|
uVar6 = uVar8;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar6 = local_1d28[-2];
|
|
}
|
|
if (((int)uVar6 <= (int)uVar18) && (uVar18 = uVar8, local_1d28 != (uint *)0x0)) {
|
|
if (local_1d28 == (uint *)PTR_DAT_1403440a0) goto LAB_1401a0ba7;
|
|
uVar18 = local_1d28[-2];
|
|
}
|
|
if (((local_1d28 != (uint *)PTR_DAT_1403440a0) && (local_1d28 != (uint *)0x0)) &&
|
|
(local_1d28 + -2 != (uint *)0x0)) {
|
|
local_1d28[-2] = uVar18;
|
|
*(undefined2 *)((longlong)local_1d28 + (longlong)(int)uVar18 * 2) = 0;
|
|
}
|
|
LAB_1401a0ba7:
|
|
local_1cf0 = 0;
|
|
local_1ce8 = 0;
|
|
local_1ce0 = 0;
|
|
local_1cd8 = 0;
|
|
local_1cf8 = Proud::ByteArray::vftable;
|
|
local_1d38 = &local_1cf8;
|
|
uVar12 = FUN_140198f80(&local_1c70,5,local_1d20,&local_1d28);
|
|
(**(code **)(*param_1 + 0x80))(param_1,uVar12);
|
|
FUN_14019a9e0(&local_1cf8);
|
|
puVar11 = local_1d28;
|
|
if (((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1403440a0)) &&
|
|
(puVar16 = local_1d28 + -2, puVar16 != (uint *)0x0)) {
|
|
uVar12 = FUN_14016d8c0();
|
|
local_1ca8 = uVar12;
|
|
FUN_14016db50(uVar12);
|
|
local_1ca0 = 1;
|
|
puVar11 = puVar11 + -1;
|
|
*puVar11 = *puVar11 - 1;
|
|
if (*puVar11 == 0) {
|
|
FUN_14016d970(puVar16);
|
|
}
|
|
FUN_14016dbe0(uVar12);
|
|
}
|
|
local_1c70 = local_1c90;
|
|
FUN_14016d0e0(local_1c90);
|
|
if (local_1c88 != 0) {
|
|
if (local_1c7c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_1c80 = 0;
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
puVar13 = local_1d00;
|
|
if (((local_1d00 != (undefined *)0x0) && (local_1d00 != PTR_DAT_1403440a0)) &&
|
|
(puVar1 = local_1d00 + -8, puVar1 != (undefined *)0x0)) {
|
|
uVar9 = FUN_14016d8c0();
|
|
local_1ca8 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_1ca0 = 1;
|
|
piVar10 = (int *)(puVar13 + -4);
|
|
*piVar10 = *piVar10 + -1;
|
|
if (*piVar10 == 0) {
|
|
FUN_14016d970(puVar1);
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
}
|
|
local_1d00 = PTR_DAT_1403440a0;
|
|
puVar13 = PTR_DAT_1403440a0;
|
|
if (100 < local_1b18) {
|
|
operator_delete__(local_1b28);
|
|
puVar13 = extraout_RAX;
|
|
}
|
|
return (ulonglong)puVar13 & 0xffffffffffffff00;
|
|
}
|
|
FUN_14004f3c0(local_1c98,local_1d08[0]);
|
|
}
|
|
FUN_14016b820(local_1c98,param_2);
|
|
FUN_14016b440(local_1c68);
|
|
FUN_14016abe0(local_1c68);
|
|
if (param_3[9] == 1) {
|
|
cVar4 = FUN_1401b1520(local_1c98,local_1c68,lVar15);
|
|
}
|
|
else {
|
|
cVar4 = FUN_1401c0ce0(local_1c98,local_1c68,lVar15 + 0x3d0,0);
|
|
}
|
|
if (cVar4 == '\0') {
|
|
FUN_14016d8c0();
|
|
local_1d18 = (uint *)PTR_DAT_1403440a0;
|
|
uVar6 = FUN_14016d740(L"Encrypt Error");
|
|
uVar17 = 0;
|
|
uVar18 = 0;
|
|
if ((local_1d18 != (uint *)0x0) &&
|
|
(uVar18 = 0, local_1d18 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar18 = local_1d18[-2];
|
|
}
|
|
uVar7 = uVar6;
|
|
if ((((int)uVar6 <= (int)uVar18) && (uVar7 = uVar17, local_1d18 != (uint *)0x0)) &&
|
|
(local_1d18 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = local_1d18[-2];
|
|
}
|
|
uVar18 = 1;
|
|
if (1 < (int)uVar7) {
|
|
uVar18 = uVar7;
|
|
}
|
|
uVar8 = 0;
|
|
uVar7 = uVar8;
|
|
if ((local_1d18 != (uint *)0x0) && (local_1d18 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = local_1d18[-2];
|
|
}
|
|
if ((int)uVar7 < (int)uVar18) {
|
|
if (local_1d18 == (uint *)0x0) {
|
|
local_1d18 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
if ((int)uVar18 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar18 == 0) {
|
|
FUN_14004eb70(&local_1d18);
|
|
}
|
|
else {
|
|
uVar7 = uVar8;
|
|
if ((local_1d18 != (uint *)0x0) && (local_1d18 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = local_1d18[-2];
|
|
}
|
|
if (uVar18 != uVar7) {
|
|
puVar11 = (uint *)FUN_14016d940((longlong)(int)uVar18 * 2 + 10);
|
|
if (puVar11 != (uint *)0x0) {
|
|
*puVar11 = 0;
|
|
puVar11[1] = 1;
|
|
}
|
|
*puVar11 = uVar18;
|
|
if ((local_1d18 != (uint *)0x0) && (local_1d18 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar8 = local_1d18[-2];
|
|
}
|
|
puVar16 = (uint *)PTR_DAT_1403440a0;
|
|
if ((int)uVar18 < (int)uVar8) {
|
|
LAB_1401a04fc:
|
|
if (local_1d18 != (uint *)0x0) {
|
|
puVar16 = local_1d18;
|
|
}
|
|
}
|
|
else {
|
|
uVar18 = uVar17;
|
|
if (local_1d18 != (uint *)0x0) {
|
|
if (local_1d18 != (uint *)PTR_DAT_1403440a0) {
|
|
uVar18 = local_1d18[-2];
|
|
}
|
|
goto LAB_1401a04fc;
|
|
}
|
|
}
|
|
FUN_14016d770(puVar11 + 2,puVar16,uVar18);
|
|
FUN_14004eb70(&local_1d18);
|
|
local_1d18 = puVar11 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_14004e850(&local_1d18);
|
|
puVar11 = local_1d18;
|
|
if (local_1d18 == (uint *)0x0) {
|
|
puVar11 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
FUN_14016d770(puVar11,L"Encrypt Error",uVar6);
|
|
puVar11 = local_1d18;
|
|
if (local_1d18 == (uint *)0x0) {
|
|
puVar11 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
uVar6 = FUN_14016d740(puVar11);
|
|
uVar17 = 0;
|
|
uVar18 = 0;
|
|
if (0 < (int)uVar6) {
|
|
uVar18 = uVar6;
|
|
}
|
|
uVar6 = uVar17;
|
|
if ((local_1d18 != (uint *)0x0) && (local_1d18 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar6 = local_1d18[-2];
|
|
}
|
|
if (((int)uVar18 < (int)uVar6) || (uVar18 = uVar17, local_1d18 == (uint *)0x0)) {
|
|
LAB_1401a059a:
|
|
if (((local_1d18 != (uint *)PTR_DAT_1403440a0) && (local_1d18 != (uint *)0x0)) &&
|
|
(local_1d18 + -2 != (uint *)0x0)) {
|
|
local_1d18[-2] = uVar18;
|
|
*(undefined2 *)((longlong)local_1d18 + (longlong)(int)uVar18 * 2) = 0;
|
|
}
|
|
}
|
|
else if (local_1d18 != (uint *)PTR_DAT_1403440a0) {
|
|
uVar18 = local_1d18[-2];
|
|
goto LAB_1401a059a;
|
|
}
|
|
local_1cf0 = 0;
|
|
local_1ce8 = 0;
|
|
local_1ce0 = 0;
|
|
local_1cd8 = 0;
|
|
local_1cf8 = Proud::ByteArray::vftable;
|
|
local_1d38 = &local_1cf8;
|
|
uVar12 = FUN_140198f80(local_1bf0,5,local_1d20);
|
|
(**(code **)(*param_1 + 0x80))(param_1,uVar12);
|
|
FUN_14019a9e0(&local_1cf8);
|
|
puVar11 = local_1d18;
|
|
if (((local_1d18 != (uint *)0x0) && (local_1d18 != (uint *)PTR_DAT_1403440a0)) &&
|
|
(puVar16 = local_1d18 + -2, puVar16 != (uint *)0x0)) {
|
|
uVar12 = FUN_14016d8c0();
|
|
local_1c30 = uVar12;
|
|
FUN_14016db50(uVar12);
|
|
local_1c28 = 1;
|
|
puVar11 = puVar11 + -1;
|
|
*puVar11 = *puVar11 - 1;
|
|
if (*puVar11 == 0) {
|
|
FUN_14016d970(puVar16);
|
|
}
|
|
FUN_14016dbe0(uVar12);
|
|
local_1c28 = 0;
|
|
}
|
|
local_1d18 = (uint *)PTR_DAT_1403440a0;
|
|
if (*param_3 == 1) {
|
|
(**(code **)(*param_1 + 0xa8))(param_1,local_1d20);
|
|
}
|
|
param_2 = local_1cb0;
|
|
iVar19 = (int)local_1d10;
|
|
}
|
|
else {
|
|
FUN_14016b440(local_1bd8);
|
|
FUN_14016b0c0(local_1bd8,local_1bb0,0x80);
|
|
uVar12 = 0x24;
|
|
if (*param_3 != 1) {
|
|
uVar12 = 0x25;
|
|
}
|
|
FUN_14004eef0(local_1bd8,uVar12);
|
|
FUN_14004eef0(local_1bd8,(char)param_3[9]);
|
|
if (local_1c60 == 0) {
|
|
iVar5 = local_1c50;
|
|
if (local_1c58 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
iVar5 = *(int *)(local_1c60 + 0x18);
|
|
}
|
|
FUN_14016cac0(local_1bd8,(longlong)iVar5);
|
|
local_5c = 200;
|
|
local_60 = 0;
|
|
local_68 = local_ce8;
|
|
local_cec = 200;
|
|
local_cf0 = 0;
|
|
local_cf8 = &local_1978;
|
|
if (local_1bd0 == 0) {
|
|
uVar2 = local_1bc0;
|
|
if (local_1bc8 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
uVar2 = *(undefined4 *)(local_1bd0 + 0x18);
|
|
}
|
|
lVar15 = local_1bc8;
|
|
if (local_1bc8 == 0) {
|
|
if (local_1bd0 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
lVar15 = 0;
|
|
if (*(int *)(local_1bd0 + 0x18) != 0) {
|
|
lVar15 = *(longlong *)(local_1bd0 + 0x10);
|
|
}
|
|
}
|
|
local_cf0 = 1;
|
|
local_1c10._0_4_ = (undefined4)lVar15;
|
|
local_1c10._4_4_ = (undefined4)((ulonglong)lVar15 >> 0x20);
|
|
local_1978 = (undefined4)local_1c10;
|
|
uStack_1974 = local_1c10._4_4_;
|
|
uStack_196c = uStack_1c04;
|
|
local_1c10 = lVar15;
|
|
uStack_1c08 = uVar2;
|
|
iStack_1970 = uVar2;
|
|
FUN_14016ded0(local_ce8,&local_1978);
|
|
if (local_cf8 == (undefined4 *)0x0) {
|
|
FUN_14016d300(&local_1cf8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(&local_1cf8,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_cec < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_cec = 200;
|
|
local_cf0 = 0;
|
|
local_cf8 = &local_1978;
|
|
if (local_1c60 == 0) {
|
|
iVar5 = local_1c50;
|
|
if (local_1c58 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
iVar5 = *(int *)(local_1c60 + 0x18);
|
|
}
|
|
lVar15 = local_1c58;
|
|
if (local_1c58 == 0) {
|
|
if (local_1c60 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
lVar15 = 0;
|
|
if (*(int *)(local_1c60 + 0x18) != 0) {
|
|
lVar15 = *(longlong *)(local_1c60 + 0x10);
|
|
}
|
|
}
|
|
local_cf0 = 1;
|
|
local_1c00._0_4_ = (undefined4)lVar15;
|
|
local_1c00._4_4_ = (undefined4)((ulonglong)lVar15 >> 0x20);
|
|
local_1978 = (undefined4)local_1c00;
|
|
uStack_1974 = local_1c00._4_4_;
|
|
uStack_196c = uStack_1bf4;
|
|
local_1c00 = lVar15;
|
|
iStack_1bf8 = iVar5;
|
|
iStack_1970 = iVar5;
|
|
FUN_14016ded0(local_ce8,&local_1978);
|
|
if (local_cf8 == (undefined4 *)0x0) {
|
|
FUN_14016d300(&local_1cf8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(&local_1cf8,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_cec < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_1d38 = (undefined ***)CONCAT44(local_1d38._4_4_,1);
|
|
bVar3 = (**(code **)(*param_1 + 0x78))(param_1,local_ce8,param_3);
|
|
if (local_68 == (undefined1 *)0x0) {
|
|
FUN_14016d300(&local_1cf8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(&local_1cf8,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_5c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_60 = 0;
|
|
local_1d10 = &local_1bd0;
|
|
FUN_14016d0e0(&local_1bd0);
|
|
if ((local_1bc8 != 0) && (local_1bbc < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
local_1d10 = &local_1c60;
|
|
FUN_14016d0e0(&local_1c60);
|
|
if (local_1c58 != 0) {
|
|
if (local_1c4c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_1c50 = 0;
|
|
}
|
|
local_1d10 = (longlong *)local_1c90;
|
|
FUN_14016d0e0(local_1c90);
|
|
if (local_1c88 != 0) {
|
|
if (local_1c7c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_1c80 = 0;
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
local_1c18 = 0;
|
|
}
|
|
}
|
|
iVar19 = iVar19 + 1;
|
|
local_1d10 = (longlong *)CONCAT44(local_1d10._4_4_,iVar19);
|
|
lVar15 = (longlong)iVar19;
|
|
} while (lVar15 < local_1b20);
|
|
}
|
|
FUN_14004eb70(&local_1d00);
|
|
if (100 < local_1b18) {
|
|
operator_delete__(local_1b28);
|
|
}
|
|
uVar14 = (ulonglong)bVar3;
|
|
}
|
|
return uVar14;
|
|
}
|
|
|