server-re/decomp/MessageServer_Release_x64/full/functions/0x1400bf730.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;
}