819 lines
32 KiB
C
819 lines
32 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400bf730 FUN_1400bf730
|
|
* 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_1400bf730(longlong *param_1,longlong *param_2,int *param_3,int *param_4,uint param_5)
|
|
|
|
{
|
|
byte bVar1;
|
|
char cVar2;
|
|
uint uVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
int *piVar6;
|
|
uint *puVar7;
|
|
undefined8 uVar8;
|
|
longlong *plVar9;
|
|
int *piVar10;
|
|
longlong *plVar11;
|
|
undefined *extraout_RAX;
|
|
undefined *puVar12;
|
|
ulonglong uVar13;
|
|
undefined8 *puVar14;
|
|
undefined4 *puVar15;
|
|
longlong lVar16;
|
|
undefined ***pppuVar17;
|
|
wchar_t *pwVar18;
|
|
undefined1 *puVar19;
|
|
undefined7 uVar21;
|
|
uint *puVar20;
|
|
uint uVar22;
|
|
int iVar23;
|
|
uint uVar24;
|
|
uint **ppuVar25;
|
|
SIZE_T SVar26;
|
|
uint **ppuVar27;
|
|
undefined8 uVar28;
|
|
uint *puVar29;
|
|
undefined1 auStackY_1d58 [32];
|
|
uint *local_1d28;
|
|
uint local_1d20 [2];
|
|
uint *local_1d18;
|
|
undefined8 local_1d10;
|
|
ushort local_1d08 [4];
|
|
uint *local_1d00;
|
|
undefined **local_1cf8;
|
|
undefined8 local_1cf0;
|
|
undefined8 local_1ce8;
|
|
undefined8 local_1ce0;
|
|
undefined8 local_1cd8;
|
|
longlong *local_1cb0;
|
|
longlong *local_1ca8;
|
|
undefined1 local_1ca0;
|
|
undefined8 local_1c98;
|
|
longlong local_1c90;
|
|
longlong local_1c88;
|
|
undefined4 local_1c80;
|
|
int local_1c7c;
|
|
longlong *local_1c70;
|
|
int local_1c68 [2];
|
|
longlong local_1c60;
|
|
longlong local_1c58;
|
|
uint local_1c50;
|
|
int local_1c4c;
|
|
int *local_1c40;
|
|
undefined1 local_1c38;
|
|
int *local_1c30;
|
|
undefined1 local_1c28;
|
|
int *local_1c20;
|
|
undefined1 local_1c18;
|
|
longlong local_1c10;
|
|
uint uStack_1c08;
|
|
undefined4 uStack_1c04;
|
|
longlong local_1c00;
|
|
uint uStack_1bf8;
|
|
undefined4 uStack_1bf4;
|
|
longlong local_1bf0;
|
|
longlong local_1be8 [2];
|
|
undefined4 local_1bd8 [2];
|
|
longlong local_1bd0;
|
|
longlong local_1bc8;
|
|
uint local_1bc0;
|
|
int local_1bbc;
|
|
undefined1 local_1bb0 [136];
|
|
uint *local_1b28;
|
|
longlong local_1b20;
|
|
ulonglong local_1b18;
|
|
undefined8 local_1b10;
|
|
uint local_1b08 [100];
|
|
longlong local_1978;
|
|
undefined8 uStack_1970;
|
|
longlong *local_cf8;
|
|
undefined4 local_cf0;
|
|
int local_cec;
|
|
longlong local_ce8 [400];
|
|
longlong *local_68;
|
|
undefined4 local_60;
|
|
int local_5c;
|
|
ulonglong local_58;
|
|
undefined8 uStack_48;
|
|
|
|
uStack_48 = 0x1400bf74f;
|
|
local_1be8[1] = 0xfffffffffffffffe;
|
|
local_58 = DAT_1401ac5a0 ^ (ulonglong)auStackY_1d58;
|
|
bVar1 = 0;
|
|
local_1cb0 = param_2;
|
|
if ((param_3[9] == 0) || (*param_3 == 2)) {
|
|
uVar13 = (**(code **)(*param_1 + 0x78))();
|
|
}
|
|
else {
|
|
piVar6 = (int *)(**(code **)(*param_1 + 0x58))();
|
|
local_1c40 = piVar6;
|
|
FUN_14006b350(piVar6);
|
|
local_1c38 = 1;
|
|
if (DAT_1401b42cf != '\0') {
|
|
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetCoreImpl::Send_SecureLayer");
|
|
}
|
|
local_1b28 = (uint *)0x0;
|
|
local_1b10 = 0;
|
|
local_1b20 = 0;
|
|
local_1b18 = 100;
|
|
ppuVar27 = &local_1b28;
|
|
plVar9 = (longlong *)(ulonglong)param_5;
|
|
(**(code **)(*param_1 + 0x50))(param_1);
|
|
FUN_14006b3e0((longlong)piVar6);
|
|
local_1c38 = 0;
|
|
FUN_14006cb70(piVar6,plVar9,param_4,ppuVar27);
|
|
local_1d00 = (uint *)PTR_DAT_1401ac010;
|
|
iVar23 = 0;
|
|
local_1d10 = (longlong *)((ulonglong)local_1d10._4_4_ << 0x20);
|
|
if (0 < local_1b20) {
|
|
lVar16 = 0;
|
|
do {
|
|
if ((lVar16 < 0) || (local_1b20 <= lVar16)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
puVar7 = local_1b28;
|
|
if (local_1b18 < 0x65) {
|
|
puVar7 = local_1b08;
|
|
}
|
|
local_1d20[0] = puVar7[lVar16];
|
|
uVar3 = (**(code **)(*param_1 + 0x30))(param_1);
|
|
pwVar18 = (wchar_t *)(ulonglong)local_1d20[0];
|
|
param_4 = param_3;
|
|
if (uVar3 == local_1d20[0]) {
|
|
ppuVar27 = (uint **)local_1d20;
|
|
plVar9 = param_2;
|
|
bVar1 = (**(code **)(*param_1 + 0x78))();
|
|
}
|
|
else {
|
|
ppuVar25 = &local_1d00;
|
|
puVar7 = (uint *)(**(code **)(*param_1 + 0xc0))(param_1);
|
|
if (puVar7 == (uint *)0x0) {
|
|
plVar11 = (longlong *)(**(code **)(*param_1 + 0x58))(param_1);
|
|
plVar9 = plVar11;
|
|
local_1ca8 = plVar11;
|
|
FUN_14006b350((int *)plVar11);
|
|
local_1ca0 = 1;
|
|
if (DAT_1401b42cf != '\0') {
|
|
ppuVar25 = (uint **)*param_1;
|
|
pwVar18 = L"Proud::CNetCoreImpl::Send_SecureLayer";
|
|
plVar9 = param_1;
|
|
(*(code *)ppuVar25[0x19])();
|
|
}
|
|
if (((local_1d00 == (uint *)0x0) || (local_1d00 == (uint *)PTR_DAT_1401ac010)) ||
|
|
((int)local_1d00[-2] < 1)) {
|
|
FUN_14006cb70(plVar9,pwVar18,ppuVar25,ppuVar27);
|
|
local_1d28 = (uint *)PTR_DAT_1401ac010;
|
|
uVar3 = FUN_14006c9f0(
|
|
L"CStartServerParameter.m_enableP2PEncryptedMessaging=false. P2P Messaging can not encrypted!!"
|
|
);
|
|
uVar4 = 0;
|
|
uVar13 = 0;
|
|
if ((local_1d28 != (uint *)0x0) &&
|
|
(uVar13 = 0, local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar13 = (ulonglong)local_1d28[-2];
|
|
}
|
|
uVar5 = uVar3;
|
|
if ((((int)uVar3 <= (int)uVar13) && (uVar5 = uVar4, local_1d28 != (uint *)0x0)) &&
|
|
(local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar5 = local_1d28[-2];
|
|
}
|
|
uVar22 = 1;
|
|
if (1 < (int)uVar5) {
|
|
uVar22 = uVar5;
|
|
}
|
|
uVar5 = uVar4;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar5 = local_1d28[-2];
|
|
}
|
|
if ((int)uVar5 < (int)uVar22) {
|
|
if (local_1d28 == (uint *)0x0) {
|
|
local_1d28 = (uint *)PTR_DAT_1401ac010;
|
|
}
|
|
if ((int)uVar22 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
if (uVar22 == 0) {
|
|
FUN_1400031e0((longlong *)&local_1d28,uVar13,PTR_DAT_1401ac010,ppuVar27);
|
|
}
|
|
else {
|
|
uVar5 = uVar4;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar5 = local_1d28[-2];
|
|
}
|
|
if (uVar22 != uVar5) {
|
|
puVar7 = (uint *)FUN_14006cbf0((longlong)(int)uVar22 * 2 + 10);
|
|
if (puVar7 != (uint *)0x0) {
|
|
*puVar7 = 0;
|
|
puVar7[1] = 1;
|
|
}
|
|
*puVar7 = uVar22;
|
|
uVar5 = 0;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar5 = local_1d28[-2];
|
|
}
|
|
puVar20 = (uint *)PTR_DAT_1401ac010;
|
|
if ((int)uVar22 < (int)uVar5) {
|
|
LAB_1400c0087:
|
|
if (local_1d28 != (uint *)0x0) {
|
|
puVar20 = local_1d28;
|
|
}
|
|
}
|
|
else {
|
|
uVar22 = uVar4;
|
|
if (local_1d28 != (uint *)0x0) {
|
|
if (local_1d28 != (uint *)PTR_DAT_1401ac010) {
|
|
uVar22 = local_1d28[-2];
|
|
}
|
|
goto LAB_1400c0087;
|
|
}
|
|
}
|
|
uVar13 = (ulonglong)uVar22;
|
|
puVar29 = puVar20;
|
|
FUN_14006ca20(puVar7 + 2,puVar20,uVar22);
|
|
FUN_1400031e0((longlong *)&local_1d28,puVar20,uVar13,puVar29);
|
|
local_1d28 = puVar7 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_140002e40((longlong *)&local_1d28);
|
|
puVar7 = local_1d28;
|
|
if (local_1d28 == (uint *)0x0) {
|
|
puVar7 = (uint *)PTR_DAT_1401ac010;
|
|
}
|
|
FUN_14006ca20(puVar7,
|
|
L"CStartServerParameter.m_enableP2PEncryptedMessaging=false. P2P Messaging can not encrypted!!"
|
|
,uVar3);
|
|
puVar7 = local_1d28;
|
|
if (local_1d28 == (uint *)0x0) {
|
|
puVar7 = (uint *)PTR_DAT_1401ac010;
|
|
}
|
|
uVar4 = FUN_14006c9f0((short *)puVar7);
|
|
uVar5 = 0;
|
|
uVar3 = 0;
|
|
if (0 < (int)uVar4) {
|
|
uVar3 = uVar4;
|
|
}
|
|
uVar4 = uVar5;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar4 = local_1d28[-2];
|
|
}
|
|
if (((int)uVar3 < (int)uVar4) || (uVar3 = uVar5, local_1d28 == (uint *)0x0)) {
|
|
LAB_1400c0125:
|
|
if (((local_1d28 != (uint *)PTR_DAT_1401ac010) && (local_1d28 != (uint *)0x0)) &&
|
|
(local_1d28 + -2 != (uint *)0x0)) {
|
|
local_1d28[-2] = uVar3;
|
|
*(undefined2 *)((longlong)local_1d28 + (longlong)(int)uVar3 * 2) = 0;
|
|
}
|
|
}
|
|
else if (local_1d28 != (uint *)PTR_DAT_1401ac010) {
|
|
uVar3 = local_1d28[-2];
|
|
goto LAB_1400c0125;
|
|
}
|
|
local_1cf0 = 0;
|
|
local_1ce8 = 0;
|
|
local_1ce0 = 0;
|
|
local_1cd8 = 0;
|
|
local_1cf8 = Proud::ByteArray::vftable;
|
|
ppuVar27 = &local_1d28;
|
|
plVar9 = FUN_140078c10((longlong *)&local_1c70,5,(ulonglong)local_1d20[0],
|
|
(longlong *)ppuVar27,(longlong)&local_1cf8);
|
|
param_4 = (int *)*param_1;
|
|
(**(code **)(param_4 + 0x20))(param_1);
|
|
FUN_140078360(&local_1cf8);
|
|
FUN_1400031e0((longlong *)&local_1d28,plVar9,param_4,ppuVar27);
|
|
param_2 = local_1cb0;
|
|
iVar23 = (int)local_1d10;
|
|
}
|
|
else {
|
|
local_1cf0 = 0;
|
|
local_1ce8 = 0;
|
|
local_1ce0 = 0;
|
|
local_1cd8 = 0;
|
|
local_1cf8 = Proud::ByteArray::vftable;
|
|
ppuVar27 = &local_1d00;
|
|
plVar9 = FUN_140078c10(local_1be8,5,(ulonglong)local_1d20[0],(longlong *)ppuVar27,
|
|
(longlong)&local_1cf8);
|
|
param_4 = (int *)*param_1;
|
|
(**(code **)(param_4 + 0x20))(param_1);
|
|
FUN_140078360(&local_1cf8);
|
|
}
|
|
FUN_14006b3e0((longlong)plVar11);
|
|
local_1ca0 = 0;
|
|
}
|
|
else {
|
|
pwVar18 = (wchar_t *)*param_1;
|
|
piVar6 = (int *)(**(code **)(pwVar18 + 0x2c))();
|
|
local_1c20 = piVar6;
|
|
FUN_14006b350(piVar6);
|
|
local_1c18 = 1;
|
|
if (DAT_1401b42cf != '\0') {
|
|
ppuVar25 = (uint **)*param_1;
|
|
pwVar18 = L"Proud::CNetCoreImpl::Send_SecureLayer";
|
|
(*(code *)ppuVar25[0x19])(param_1);
|
|
}
|
|
FUN_1400bca00((undefined4 *)&local_1c98);
|
|
FUN_1400bc4d0((longlong)&local_1c98,pwVar18,(SIZE_T)ppuVar25,ppuVar27);
|
|
if (*param_3 == 1) {
|
|
ppuVar25 = (uint **)local_1d08;
|
|
uVar13 = (ulonglong)local_1d20[0];
|
|
plVar9 = param_1;
|
|
cVar2 = (**(code **)(*param_1 + 0xa0))();
|
|
if (cVar2 == '\0') {
|
|
FUN_14006cb70(plVar9,uVar13,ppuVar25,ppuVar27);
|
|
local_1d28 = (uint *)PTR_DAT_1401ac010;
|
|
uVar3 = FUN_14006c9f0((short *)&DAT_14013fa00);
|
|
uVar4 = 0;
|
|
uVar5 = 0;
|
|
uVar13 = 0;
|
|
if ((local_1d28 != (uint *)0x0) &&
|
|
(uVar13 = 0, local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar13 = (ulonglong)local_1d28[-2];
|
|
}
|
|
uVar22 = uVar3;
|
|
if ((((int)uVar3 <= (int)uVar13) && (uVar22 = uVar5, local_1d28 != (uint *)0x0)) &&
|
|
(local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar22 = local_1d28[-2];
|
|
}
|
|
uVar24 = 1;
|
|
if (1 < (int)uVar22) {
|
|
uVar24 = uVar22;
|
|
}
|
|
uVar22 = uVar5;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar22 = local_1d28[-2];
|
|
}
|
|
if ((int)uVar22 < (int)uVar24) {
|
|
if (local_1d28 == (uint *)0x0) {
|
|
local_1d28 = (uint *)PTR_DAT_1401ac010;
|
|
}
|
|
if ((int)uVar24 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
if (uVar24 == 0) {
|
|
FUN_1400031e0((longlong *)&local_1d28,PTR_DAT_1401ac010,uVar13,ppuVar27);
|
|
}
|
|
else {
|
|
uVar22 = uVar5;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar22 = local_1d28[-2];
|
|
}
|
|
if (uVar24 != uVar22) {
|
|
puVar7 = (uint *)FUN_14006cbf0((longlong)(int)uVar24 * 2 + 10);
|
|
if (puVar7 != (uint *)0x0) {
|
|
*puVar7 = 0;
|
|
puVar7[1] = 1;
|
|
}
|
|
*puVar7 = uVar24;
|
|
uVar22 = uVar5;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1401ac010))
|
|
{
|
|
uVar22 = local_1d28[-2];
|
|
}
|
|
puVar20 = (uint *)PTR_DAT_1401ac010;
|
|
if ((int)uVar24 < (int)uVar22) {
|
|
LAB_1400c02dd:
|
|
if (local_1d28 != (uint *)0x0) {
|
|
puVar20 = local_1d28;
|
|
}
|
|
}
|
|
else {
|
|
uVar24 = uVar5;
|
|
if (local_1d28 != (uint *)0x0) {
|
|
if (local_1d28 != (uint *)PTR_DAT_1401ac010) {
|
|
uVar24 = local_1d28[-2];
|
|
}
|
|
goto LAB_1400c02dd;
|
|
}
|
|
}
|
|
uVar13 = (ulonglong)uVar24;
|
|
FUN_14006ca20(puVar7 + 2,puVar20,uVar24);
|
|
FUN_1400031e0((longlong *)&local_1d28,puVar20,uVar13,ppuVar27);
|
|
local_1d28 = puVar7 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_140002e40((longlong *)&local_1d28);
|
|
puVar7 = local_1d28;
|
|
if (local_1d28 == (uint *)0x0) {
|
|
puVar7 = (uint *)PTR_DAT_1401ac010;
|
|
}
|
|
FUN_14006ca20(puVar7,&DAT_14013fa00,uVar3);
|
|
puVar7 = local_1d28;
|
|
if (local_1d28 == (uint *)0x0) {
|
|
puVar7 = (uint *)PTR_DAT_1401ac010;
|
|
}
|
|
uVar5 = FUN_14006c9f0((short *)puVar7);
|
|
uVar3 = uVar4;
|
|
if (0 < (int)uVar5) {
|
|
uVar3 = uVar5;
|
|
}
|
|
uVar5 = uVar4;
|
|
if ((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar5 = local_1d28[-2];
|
|
}
|
|
if (((int)uVar5 <= (int)uVar3) && (uVar3 = uVar4, local_1d28 != (uint *)0x0)) {
|
|
if (local_1d28 == (uint *)PTR_DAT_1401ac010) goto LAB_1400c0397;
|
|
uVar3 = local_1d28[-2];
|
|
}
|
|
if (((local_1d28 != (uint *)PTR_DAT_1401ac010) && (local_1d28 != (uint *)0x0)) &&
|
|
(local_1d28 + -2 != (uint *)0x0)) {
|
|
local_1d28[-2] = uVar3;
|
|
*(undefined2 *)((longlong)local_1d28 + (longlong)(int)uVar3 * 2) = 0;
|
|
}
|
|
LAB_1400c0397:
|
|
local_1cf0 = 0;
|
|
local_1ce8 = 0;
|
|
local_1ce0 = 0;
|
|
local_1cd8 = 0;
|
|
local_1cf8 = Proud::ByteArray::vftable;
|
|
ppuVar27 = &local_1d28;
|
|
plVar9 = FUN_140078c10((longlong *)&local_1c70,5,(ulonglong)local_1d20[0],
|
|
(longlong *)ppuVar27,(longlong)&local_1cf8);
|
|
lVar16 = *param_1;
|
|
(**(code **)(lVar16 + 0x80))(param_1);
|
|
pppuVar17 = &local_1cf8;
|
|
FUN_140078360(pppuVar17);
|
|
puVar7 = local_1d28;
|
|
if (((local_1d28 != (uint *)0x0) && (local_1d28 != (uint *)PTR_DAT_1401ac010)) &&
|
|
(puVar20 = local_1d28 + -2, puVar20 != (uint *)0x0)) {
|
|
plVar11 = (longlong *)FUN_14006cb70(pppuVar17,plVar9,lVar16,ppuVar27);
|
|
local_1ca8 = plVar11;
|
|
FUN_14006b350((int *)plVar11);
|
|
local_1ca0 = 1;
|
|
puVar7 = puVar7 + -1;
|
|
*puVar7 = *puVar7 - 1;
|
|
if (*puVar7 == 0) {
|
|
FUN_14006cc60(puVar20);
|
|
}
|
|
FUN_14006b3e0((longlong)plVar11);
|
|
}
|
|
local_1c70 = &local_1c90;
|
|
FUN_1400d1800(&local_1c90);
|
|
if (local_1c88 != 0) {
|
|
if (local_1c7c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
local_1c80 = 0;
|
|
}
|
|
FUN_14006b3e0((longlong)piVar6);
|
|
puVar7 = local_1d00;
|
|
if (((local_1d00 != (uint *)0x0) && (local_1d00 != (uint *)PTR_DAT_1401ac010)) &&
|
|
(puVar20 = local_1d00 + -2, puVar20 != (uint *)0x0)) {
|
|
plVar9 = (longlong *)FUN_14006cb70(piVar6,plVar9,lVar16,ppuVar27);
|
|
local_1ca8 = plVar9;
|
|
FUN_14006b350((int *)plVar9);
|
|
local_1ca0 = 1;
|
|
puVar7 = puVar7 + -1;
|
|
*puVar7 = *puVar7 - 1;
|
|
if (*puVar7 == 0) {
|
|
FUN_14006cc60(puVar20);
|
|
}
|
|
FUN_14006b3e0((longlong)plVar9);
|
|
}
|
|
local_1d00 = (uint *)PTR_DAT_1401ac010;
|
|
puVar12 = PTR_DAT_1401ac010;
|
|
if (100 < local_1b18) {
|
|
operator_delete__(local_1b28);
|
|
puVar12 = extraout_RAX;
|
|
}
|
|
return (ulonglong)puVar12 & 0xffffffffffffff00;
|
|
}
|
|
FUN_140054930((longlong)&local_1c98,(ulonglong)local_1d08[0],(SIZE_T)ppuVar25,ppuVar27
|
|
);
|
|
}
|
|
plVar9 = param_2;
|
|
FUN_1400bcde0(&local_1c98,(longlong)param_2,(SIZE_T)ppuVar25,(longlong)ppuVar27);
|
|
FUN_1400bca00(local_1c68);
|
|
FUN_1400bc4d0((longlong)local_1c68,plVar9,(SIZE_T)ppuVar25,ppuVar27);
|
|
uVar28 = 0;
|
|
piVar10 = local_1c68;
|
|
puVar14 = &local_1c98;
|
|
if (param_3[9] == 1) {
|
|
uVar8 = FUN_1400cf240((longlong)puVar14,piVar10,puVar7,0);
|
|
cVar2 = (char)uVar8;
|
|
}
|
|
else {
|
|
puVar7 = puVar7 + 0xf4;
|
|
uVar8 = FUN_1400dce10((longlong)puVar14,piVar10,(SIZE_T)puVar7,0);
|
|
cVar2 = (char)uVar8;
|
|
}
|
|
if (cVar2 == '\0') {
|
|
FUN_14006cb70(puVar14,piVar10,puVar7,uVar28);
|
|
local_1d18 = (uint *)PTR_DAT_1401ac010;
|
|
uVar3 = FUN_14006c9f0(L"Encrypt Error");
|
|
uVar4 = 0;
|
|
uVar13 = 0;
|
|
if ((local_1d18 != (uint *)0x0) &&
|
|
(uVar13 = 0, local_1d18 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar13 = (ulonglong)local_1d18[-2];
|
|
}
|
|
uVar5 = uVar3;
|
|
if ((((int)uVar3 <= (int)uVar13) && (uVar5 = uVar4, local_1d18 != (uint *)0x0)) &&
|
|
(local_1d18 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar5 = local_1d18[-2];
|
|
}
|
|
uVar22 = 1;
|
|
if (1 < (int)uVar5) {
|
|
uVar22 = uVar5;
|
|
}
|
|
uVar5 = uVar4;
|
|
if ((local_1d18 != (uint *)0x0) && (local_1d18 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar5 = local_1d18[-2];
|
|
}
|
|
if ((int)uVar5 < (int)uVar22) {
|
|
if (local_1d18 == (uint *)0x0) {
|
|
local_1d18 = (uint *)PTR_DAT_1401ac010;
|
|
}
|
|
if ((int)uVar22 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
if (uVar22 == 0) {
|
|
FUN_1400031e0((longlong *)&local_1d18,uVar13,PTR_DAT_1401ac010,uVar28);
|
|
}
|
|
else {
|
|
uVar5 = uVar4;
|
|
if ((local_1d18 != (uint *)0x0) && (local_1d18 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar5 = local_1d18[-2];
|
|
}
|
|
if (uVar22 != uVar5) {
|
|
puVar7 = (uint *)FUN_14006cbf0((longlong)(int)uVar22 * 2 + 10);
|
|
if (puVar7 != (uint *)0x0) {
|
|
*puVar7 = 0;
|
|
puVar7[1] = 1;
|
|
}
|
|
*puVar7 = uVar22;
|
|
uVar5 = 0;
|
|
if ((local_1d18 != (uint *)0x0) && (local_1d18 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar5 = local_1d18[-2];
|
|
}
|
|
puVar20 = (uint *)PTR_DAT_1401ac010;
|
|
if ((int)uVar22 < (int)uVar5) {
|
|
LAB_1400bfcec:
|
|
if (local_1d18 != (uint *)0x0) {
|
|
puVar20 = local_1d18;
|
|
}
|
|
}
|
|
else {
|
|
uVar22 = uVar4;
|
|
if (local_1d18 != (uint *)0x0) {
|
|
if (local_1d18 != (uint *)PTR_DAT_1401ac010) {
|
|
uVar22 = local_1d18[-2];
|
|
}
|
|
goto LAB_1400bfcec;
|
|
}
|
|
}
|
|
uVar13 = (ulonglong)uVar22;
|
|
puVar29 = puVar20;
|
|
FUN_14006ca20(puVar7 + 2,puVar20,uVar22);
|
|
FUN_1400031e0((longlong *)&local_1d18,puVar20,uVar13,puVar29);
|
|
local_1d18 = puVar7 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_140002e40((longlong *)&local_1d18);
|
|
puVar7 = local_1d18;
|
|
if (local_1d18 == (uint *)0x0) {
|
|
puVar7 = (uint *)PTR_DAT_1401ac010;
|
|
}
|
|
FUN_14006ca20(puVar7,L"Encrypt Error",uVar3);
|
|
puVar7 = local_1d18;
|
|
if (local_1d18 == (uint *)0x0) {
|
|
puVar7 = (uint *)PTR_DAT_1401ac010;
|
|
}
|
|
uVar4 = FUN_14006c9f0((short *)puVar7);
|
|
uVar5 = 0;
|
|
uVar3 = 0;
|
|
if (0 < (int)uVar4) {
|
|
uVar3 = uVar4;
|
|
}
|
|
uVar4 = uVar5;
|
|
if ((local_1d18 != (uint *)0x0) && (local_1d18 != (uint *)PTR_DAT_1401ac010)) {
|
|
uVar4 = local_1d18[-2];
|
|
}
|
|
if (((int)uVar3 < (int)uVar4) || (uVar3 = uVar5, local_1d18 == (uint *)0x0)) {
|
|
LAB_1400bfd8a:
|
|
if (((local_1d18 != (uint *)PTR_DAT_1401ac010) && (local_1d18 != (uint *)0x0)) &&
|
|
(local_1d18 + -2 != (uint *)0x0)) {
|
|
local_1d18[-2] = uVar3;
|
|
*(undefined2 *)((longlong)local_1d18 + (longlong)(int)uVar3 * 2) = 0;
|
|
}
|
|
}
|
|
else if (local_1d18 != (uint *)PTR_DAT_1401ac010) {
|
|
uVar3 = local_1d18[-2];
|
|
goto LAB_1400bfd8a;
|
|
}
|
|
local_1cf0 = 0;
|
|
local_1ce8 = 0;
|
|
local_1ce0 = 0;
|
|
local_1cd8 = 0;
|
|
local_1cf8 = Proud::ByteArray::vftable;
|
|
ppuVar27 = &local_1d18;
|
|
plVar9 = FUN_140078c10(&local_1bf0,5,(ulonglong)local_1d20[0],(longlong *)ppuVar27,
|
|
(longlong)&local_1cf8);
|
|
param_4 = (int *)*param_1;
|
|
(**(code **)(param_4 + 0x20))(param_1);
|
|
pppuVar17 = &local_1cf8;
|
|
FUN_140078360(pppuVar17);
|
|
puVar7 = local_1d18;
|
|
if (((local_1d18 != (uint *)0x0) && (local_1d18 != (uint *)PTR_DAT_1401ac010)) &&
|
|
(puVar20 = local_1d18 + -2, puVar20 != (uint *)0x0)) {
|
|
piVar10 = (int *)FUN_14006cb70(pppuVar17,plVar9,param_4,ppuVar27);
|
|
local_1c30 = piVar10;
|
|
FUN_14006b350(piVar10);
|
|
local_1c28 = 1;
|
|
puVar7 = puVar7 + -1;
|
|
*puVar7 = *puVar7 - 1;
|
|
if (*puVar7 == 0) {
|
|
FUN_14006cc60(puVar20);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar10);
|
|
local_1c28 = 0;
|
|
}
|
|
local_1d18 = (uint *)PTR_DAT_1401ac010;
|
|
if (*param_3 == 1) {
|
|
plVar9 = (longlong *)(ulonglong)local_1d20[0];
|
|
(**(code **)(*param_1 + 0xa8))(param_1);
|
|
}
|
|
param_2 = local_1cb0;
|
|
iVar23 = (int)local_1d10;
|
|
}
|
|
else {
|
|
FUN_1400bca00(local_1bd8);
|
|
SVar26 = 0x80;
|
|
puVar19 = local_1bb0;
|
|
FUN_1400bc680((longlong)local_1bd8,(longlong)puVar19,0x80,uVar28);
|
|
uVar21 = (undefined7)((ulonglong)puVar19 >> 8);
|
|
uVar8 = CONCAT71(uVar21,0x24);
|
|
if (*param_3 != 1) {
|
|
uVar8 = CONCAT71(uVar21,0x25);
|
|
}
|
|
FUN_140054a10((longlong)local_1bd8,uVar8,SVar26,uVar28);
|
|
uVar13 = (ulonglong)*(byte *)(param_3 + 9);
|
|
puVar15 = local_1bd8;
|
|
FUN_140054a10((longlong)puVar15,uVar13,SVar26,uVar28);
|
|
if (local_1c60 == 0) {
|
|
uVar3 = local_1c50;
|
|
if (local_1c58 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400d1900(puVar15,uVar13,SVar26,uVar28);
|
|
}
|
|
}
|
|
else {
|
|
uVar3 = *(uint *)(local_1c60 + 0x18);
|
|
}
|
|
lVar16 = (longlong)(int)uVar3;
|
|
FUN_1400bddd0((longlong)local_1bd8,lVar16,SVar26,uVar28);
|
|
local_5c = 200;
|
|
local_60 = 0;
|
|
local_68 = local_ce8;
|
|
local_cec = 200;
|
|
local_cf0 = 0;
|
|
local_cf8 = &local_1978;
|
|
if (local_1bd0 == 0) {
|
|
uVar3 = local_1bc0;
|
|
if (local_1bc8 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400d1900(0,lVar16,SVar26,uVar28);
|
|
}
|
|
}
|
|
else {
|
|
uVar3 = *(uint *)(local_1bd0 + 0x18);
|
|
}
|
|
lVar16 = local_1bc8;
|
|
if (local_1bc8 == 0) {
|
|
if (local_1bd0 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400d1900(0,(ulonglong)uVar3,SVar26,uVar28);
|
|
}
|
|
lVar16 = 0;
|
|
if (*(int *)(local_1bd0 + 0x18) != 0) {
|
|
lVar16 = *(longlong *)(local_1bd0 + 0x10);
|
|
}
|
|
}
|
|
local_cf0 = 1;
|
|
uStack_1970 = CONCAT44(uStack_1c04,uVar3);
|
|
plVar9 = &local_1978;
|
|
local_1c10 = lVar16;
|
|
uStack_1c08 = uVar3;
|
|
local_1978 = lVar16;
|
|
FUN_14007cb60((longlong)local_ce8,(longlong)plVar9,SVar26,uVar28);
|
|
if (local_cf8 == (longlong *)0x0) {
|
|
FUN_14006ba50((exception *)&local_1cf8,
|
|
(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,SVar26,
|
|
uVar28);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(&local_1cf8,(ThrowInfo *)&DAT_1401a93e8);
|
|
}
|
|
if (local_cec < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
local_cec = 200;
|
|
local_cf0 = 0;
|
|
local_cf8 = &local_1978;
|
|
if (local_1c60 == 0) {
|
|
uVar3 = local_1c50;
|
|
if (local_1c58 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400d1900(0,plVar9,SVar26,uVar28);
|
|
}
|
|
}
|
|
else {
|
|
uVar3 = *(uint *)(local_1c60 + 0x18);
|
|
}
|
|
lVar16 = local_1c58;
|
|
if (local_1c58 == 0) {
|
|
if (local_1c60 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400d1900(0,(ulonglong)uVar3,SVar26,uVar28);
|
|
}
|
|
lVar16 = 0;
|
|
if (*(int *)(local_1c60 + 0x18) != 0) {
|
|
lVar16 = *(longlong *)(local_1c60 + 0x10);
|
|
}
|
|
}
|
|
local_cf0 = 1;
|
|
uStack_1970 = CONCAT44(uStack_1bf4,uVar3);
|
|
local_1c00 = lVar16;
|
|
uStack_1bf8 = uVar3;
|
|
local_1978 = lVar16;
|
|
FUN_14007cb60((longlong)local_ce8,(longlong)&local_1978,SVar26,uVar28);
|
|
if (local_cf8 == (longlong *)0x0) {
|
|
FUN_14006ba50((exception *)&local_1cf8,
|
|
(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,SVar26,
|
|
uVar28);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(&local_1cf8,(ThrowInfo *)&DAT_1401a93e8);
|
|
}
|
|
if (local_cec < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
ppuVar27 = (uint **)local_1d20;
|
|
plVar9 = local_ce8;
|
|
bVar1 = (**(code **)(*param_1 + 0x78))(param_1);
|
|
if (local_68 == (longlong *)0x0) {
|
|
FUN_14006ba50((exception *)&local_1cf8,
|
|
(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,param_4,
|
|
ppuVar27);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(&local_1cf8,(ThrowInfo *)&DAT_1401a93e8);
|
|
}
|
|
if (local_5c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
local_60 = 0;
|
|
local_1d10 = &local_1bd0;
|
|
FUN_1400d1800(&local_1bd0);
|
|
if ((local_1bc8 != 0) && (local_1bbc < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
}
|
|
local_1d10 = &local_1c60;
|
|
FUN_1400d1800(&local_1c60);
|
|
if (local_1c58 != 0) {
|
|
if (local_1c4c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
local_1c50 = 0;
|
|
}
|
|
local_1d10 = &local_1c90;
|
|
FUN_1400d1800(&local_1c90);
|
|
if (local_1c88 != 0) {
|
|
if (local_1c7c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
local_1c80 = 0;
|
|
}
|
|
FUN_14006b3e0((longlong)piVar6);
|
|
local_1c18 = 0;
|
|
}
|
|
}
|
|
iVar23 = iVar23 + 1;
|
|
local_1d10 = (longlong *)CONCAT44(local_1d10._4_4_,iVar23);
|
|
lVar16 = (longlong)iVar23;
|
|
} while (lVar16 < local_1b20);
|
|
}
|
|
FUN_1400031e0((longlong *)&local_1d00,plVar9,param_4,ppuVar27);
|
|
if (100 < local_1b18) {
|
|
operator_delete__(local_1b28);
|
|
}
|
|
uVar13 = (ulonglong)bVar1;
|
|
}
|
|
return uVar13;
|
|
}
|
|
|