server-re/decomp/AgentManager_Release_x64/full/functions/0x1400af100.c
2026-10-15 09:58:24 -04:00

777 lines
29 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400af100 FUN_1400af100
* Pseudocode, not original source. */
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001400af840) */
/* WARNING: Removing unreachable block (ram,0x0001400af84c) */
/* WARNING: Removing unreachable block (ram,0x0001400af844) */
/* WARNING: Removing unreachable block (ram,0x0001400af852) */
/* WARNING: Removing unreachable block (ram,0x0001400af6d7) */
/* WARNING: Removing unreachable block (ram,0x0001400af6de) */
/* WARNING: Removing unreachable block (ram,0x0001400af6f6) */
/* WARNING: Removing unreachable block (ram,0x0001400af702) */
/* WARNING: Removing unreachable block (ram,0x0001400af6fa) */
/* WARNING: Removing unreachable block (ram,0x0001400af708) */
/* WARNING: Removing unreachable block (ram,0x0001400af724) */
/* WARNING: Removing unreachable block (ram,0x0001400af620) */
/* WARNING: Removing unreachable block (ram,0x0001400af627) */
/* WARNING: Removing unreachable block (ram,0x0001400af640) */
/* WARNING: Removing unreachable block (ram,0x0001400af64c) */
/* WARNING: Removing unreachable block (ram,0x0001400af644) */
/* WARNING: Removing unreachable block (ram,0x0001400af652) */
/* WARNING: Removing unreachable block (ram,0x0001400af66e) */
ulonglong FUN_1400af100(longlong *param_1,TypeDescriptor *param_2,TypeDescriptor *param_3,
TypeDescriptor *param_4,uint param_5)
{
undefined *puVar1;
undefined8 uVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
uint uVar6;
uint uVar7;
TypeDescriptor *pTVar8;
void *pvVar9;
void *pvVar10;
TypeDescriptor *pTVar11;
TypeDescriptor *extraout_RAX;
uint *puVar12;
longlong *plVar13;
int *piVar14;
longlong lVar15;
TypeDescriptor *pTVar16;
undefined8 *puVar17;
TypeDescriptor *pTVar18;
undefined8 uVar19;
undefined1 *puVar20;
undefined4 *puVar21;
uint *puVar22;
int iVar23;
TypeDescriptor *pTVar24;
uint uVar25;
ulonglong uVar26;
TypeDescriptor *pTVar27;
uint uVar28;
TypeDescriptor *pTVar29;
SIZE_T SVar30;
undefined4 *puVar31;
longlong *plVar32;
TypeDescriptor *pTVar33;
TypeDescriptor *pTVar34;
undefined1 auStackY_2c38 [32];
undefined8 local_2c08;
undefined1 local_2c00 [16];
TypeDescriptor *local_2bf0;
ulonglong local_2be8;
undefined8 local_2be0;
TypeDescriptor *local_2bd8;
uint uStack_2bd0;
undefined4 uStack_2bcc;
undefined4 local_2bc8;
undefined4 local_2bc4;
TypeDescriptor local_2bc0;
uint local_2bb0;
int local_2bac;
TypeDescriptor *local_2ba0;
TypeDescriptor local_2b98;
undefined1 local_2b88;
undefined4 local_2b84;
undefined1 local_2b80;
undefined1 local_2b7f;
void *local_2b78;
undefined8 local_2b70;
longlong *local_2b68;
undefined **local_2b60;
longlong *local_2b58;
TypeDescriptor *local_2b50;
uint local_2b48;
undefined8 local_2b44;
undefined4 local_2b3c;
TypeDescriptor *local_2b38;
int *local_2b30;
undefined4 local_2b28;
undefined4 uStack_2b24;
int *local_2b20;
char local_2b18;
TypeDescriptor *local_2b10;
longlong *local_2b08;
TypeDescriptor *local_2b00;
void *local_2af0;
undefined8 local_2ae0;
exception local_2ad8 [72];
exception local_2a90 [72];
exception local_2a48 [80];
undefined4 local_29f8 [2];
TypeDescriptor local_29f0;
undefined4 local_29e0;
int local_29dc;
undefined1 local_29d0 [136];
TypeDescriptor local_2948;
ulonglong local_2938;
undefined8 local_2930;
undefined8 auStack_2928 [100];
TypeDescriptor local_2608 [200];
TypeDescriptor *local_1988;
undefined4 local_1980;
int local_197c;
undefined1 local_1978 [3200];
undefined1 *local_cf8;
undefined4 local_cf0;
int local_cec;
TypeDescriptor local_ce8 [200];
TypeDescriptor *local_68;
undefined4 local_60;
undefined4 local_5c;
ulonglong local_58;
local_2ae0 = 0xfffffffffffffffe;
local_58 = DAT_14016f5a0 ^ (ulonglong)auStackY_2c38;
pTVar16 = (TypeDescriptor *)0x0;
local_2b78 = (void *)0x0;
pTVar18 = param_2;
pTVar29 = param_3;
pTVar33 = param_4;
local_2ba0 = param_2;
local_2b68 = param_1;
local_2b38 = param_3;
local_2b10 = param_2;
local_2b08 = param_1;
local_2b20 = (int *)(**(code **)(*param_1 + 0x58))();
FUN_14003d040(local_2b20);
puVar1 = PTR_u_Cannot_send_messages_unless_conn_140170a00;
local_2b18 = '\x01';
plVar32 = (longlong *)param_1[699];
uVar28 = 0;
if (((plVar32 != (longlong *)0x0) && (*plVar32 != 0)) && ((int)param_1[0x2af] != 0)) {
local_2948.pVFTable = (void *)0x0;
local_2930 = 0;
local_2948.spare = (void *)0x0;
local_2938 = 100;
if (0 < (int)param_5) {
uVar26 = (ulonglong)param_5;
do {
uVar4 = *(uint *)&param_4->pVFTable;
pTVar18 = (TypeDescriptor *)(ulonglong)uVar4;
if (uVar4 != 0) {
pTVar29 = &local_2948;
FUN_1400ae200(param_1,uVar4,(longlong *)pTVar29,pTVar33);
}
param_4 = (TypeDescriptor *)((longlong)&param_4->pVFTable + 4);
uVar26 = uVar26 - 1;
} while (uVar26 != 0);
}
FUN_14009d960((longlong *)&local_2948);
local_2b58 = (longlong *)0x0;
local_2b3c = 0;
local_2b50 = (TypeDescriptor *)0x0;
local_2b48 = 0;
local_2b44 = 0;
local_2b60 = Proud::CNetClientImpl::BypassDestList_C::vftable;
local_2b70 = (TypeDescriptor *)((ulonglong)local_2b70._4_4_ << 0x20);
pTVar11 = pTVar16;
pTVar24 = pTVar16;
pTVar34 = pTVar16;
while( true ) {
iVar5 = (int)pTVar11;
local_2c08 = (uint *)CONCAT44(local_2c08._4_4_,iVar5);
lVar15 = (longlong)iVar5;
iVar23 = (int)pTVar24;
if ((longlong)local_2948.spare <= lVar15) break;
if (iVar5 < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
if (local_2938 < 0x65) {
puVar17 = auStack_2928 + lVar15;
}
else {
puVar17 = (undefined8 *)((longlong)local_2948.pVFTable + lVar15 * 8);
}
pTVar11 = (TypeDescriptor *)*puVar17;
pTVar8 = (TypeDescriptor *)(param_1 + 0xc);
if (param_1 == (longlong *)0x0) {
pTVar8 = pTVar16;
}
if ((pTVar11 == pTVar8) && (*(char *)((longlong)&param_3[2].spare + 5) != '\0')) {
FUN_140074fb0((undefined4 *)local_2c00);
pTVar18 = (TypeDescriptor *)local_2c00;
FUN_140097200((longlong)local_2ba0,(int *)pTVar18,(SIZE_T)pTVar29,pTVar33);
pvVar9 = (void *)param_1[0x2a8];
if ((longlong *)local_2b68[0x2a6] == (longlong *)0x0) {
pTVar8 = (TypeDescriptor *)FUN_14003e840(0x38);
}
else {
pTVar18 = (TypeDescriptor *)0x38;
pTVar8 = (TypeDescriptor *)(**(code **)(*(longlong *)local_2b68[0x2a6] + 8))();
}
local_2b00 = pTVar8;
if (pTVar8 != (TypeDescriptor *)0x0) {
pTVar18 = (TypeDescriptor *)local_2c00;
local_2bd8 = pTVar8;
FUN_140074fe0((undefined4 *)(pTVar8 + 1),(undefined4 *)pTVar18);
}
param_1 = local_2b68;
pTVar8->spare = pvVar9;
pTVar8->pVFTable = (void *)0x0;
local_2b68[0x2a9] = local_2b68[0x2a9] + 1;
if ((longlong *)local_2b68[0x2a8] == (longlong *)0x0) {
local_2b68[0x2a7] = (longlong)pTVar8;
}
else {
*(longlong *)local_2b68[0x2a8] = (longlong)pTVar8;
}
local_2b68[0x2a8] = (longlong)pTVar8;
local_2bd8 = (TypeDescriptor *)(local_2c00 + 8);
FUN_14008a320((longlong *)(local_2c00 + 8));
if ((local_2bf0 != (TypeDescriptor *)0x0) && ((longlong)local_2be8 < 0)) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
}
param_2 = local_2ba0;
if (pTVar11 == (TypeDescriptor *)(param_1 + 0x2aa)) {
local_2b98.pVFTable._0_4_ = *(undefined4 *)&param_3[2].pVFTable;
local_2b98.spare = param_3[1].spare;
local_2b88 = *(undefined1 *)((longlong)&param_3[2].spare + 5);
local_2b84 = *(undefined4 *)&param_3[3].pVFTable;
local_2b80 = *(undefined1 *)((longlong)&param_3[4].pVFTable + 1);
local_2b7f = *(undefined1 *)&param_3[4].pVFTable;
local_2bd8 = local_ce8;
local_5c = 200;
local_60 = 0;
local_68 = local_ce8;
FUN_140096f90((longlong *)(local_2ba0 + 200),&local_68,pTVar29,pTVar33);
pTVar33 = local_ce8;
pTVar29 = (TypeDescriptor *)(ulonglong)*(uint *)&param_3->pVFTable;
pTVar18 = (TypeDescriptor *)0x1;
FUN_14009d260((longlong)param_1,1,*(uint *)&param_3->pVFTable,(SIZE_T *)pTVar33,
(SIZE_T *)&local_2b98);
}
else if (pTVar11 != (TypeDescriptor *)0x0) {
pTVar33 = &Proud::CRemotePeer_C::RTTI_Type_Descriptor;
pTVar29 = &Proud::ISendDest_C::RTTI_Type_Descriptor;
pTVar18 = (TypeDescriptor *)0x0;
pvVar9 = (void *)__RTDynamicCast(pTVar11);
param_2 = local_2ba0;
local_2b78 = pvVar9;
if (pvVar9 != (void *)0x0) {
if ((((*(char *)((longlong)pvVar9 + 0x608) != '\0') ||
(*(int *)&param_3[1].pVFTable <= (int)local_2b70)) ||
(*(double *)((longlong)pvVar9 + 0x50) <= 0.0)) ||
((*(double *)((longlong)pvVar9 + 0x60) <= 0.0 ||
((*(double *)((longlong)pvVar9 + 0x60) + (double)param_1[0x9f]) /
*(double *)((longlong)pvVar9 + 0x50) < (double)param_3[3].spare)))) {
if (*(int *)&param_3->pVFTable == 1) {
FUN_1400d5200((undefined8 *)(*(longlong *)((longlong)pvVar9 + 0x640) + 8),
(longlong *)CONCAT71((int7)((ulonglong)pTVar18 >> 8),1),
(longlong *)pTVar29,pTVar33);
uVar3 = FUN_1400d3b60((longlong)pvVar9 + 0x638);
local_2af0 = (void *)CONCAT44(local_2af0._4_4_,uVar3);
if (iVar23 < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
pTVar18 = (TypeDescriptor *)(ulonglong)(iVar23 + 1U);
FUN_14009cb60((longlong)&local_2b60,iVar23 + 1U,pTVar29,(longlong)pTVar33);
pTVar11 = local_2b50;
if (local_2b48 == 0) {
pTVar11 = pTVar16;
}
pTVar11[iVar23].pVFTable = pvVar9;
pvVar10 = local_2af0;
LAB_1400af755:
pTVar24 = (TypeDescriptor *)(ulonglong)local_2b48;
pTVar11[iVar23].spare = pvVar10;
pTVar34 = local_2b50;
}
else if (*(char *)((longlong)&param_3[2].spare + 6) != '\0') {
local_2b28 = 0;
if (iVar23 < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
pTVar18 = (TypeDescriptor *)(ulonglong)(iVar23 + 1U);
FUN_14009cb60((longlong)&local_2b60,iVar23 + 1U,pTVar29,(longlong)pTVar33);
pTVar11 = local_2b50;
if (local_2b48 == 0) {
pTVar11 = pTVar16;
}
pTVar11[iVar23].pVFTable = pvVar9;
pvVar10 = (void *)CONCAT44(uStack_2b24,local_2b28);
goto LAB_1400af755;
}
if (*(char *)((longlong)&param_3[2].spare + 4) != '\0') {
*(undefined1 *)((longlong)pvVar9 + 0x21) = 1;
}
}
else {
local_2b70 = (TypeDescriptor *)CONCAT44(local_2b70._4_4_,(int)local_2b70 + 1);
if (*(char *)((longlong)&param_3[4].pVFTable + 1) == '\0') {
*(int *)((longlong)pvVar9 + 0x40) = *(int *)((longlong)pvVar9 + 0x40) + 1;
}
pTVar18 = local_2ba0;
if (*(int *)&param_3->pVFTable == 1) {
FUN_1400d3bc0((longlong)pvVar9 + 0x638,(longlong)local_2ba0,pTVar29,pTVar33);
}
else {
local_2b98.pVFTable._0_4_ = *(undefined4 *)&param_3[2].pVFTable;
local_2b98.spare = param_3[1].spare;
local_2b88 = *(undefined1 *)((longlong)&param_3[2].spare + 5);
local_2b84 = *(undefined4 *)&param_3[3].pVFTable;
local_2b80 = *(undefined1 *)((longlong)&param_3[4].pVFTable + 1);
local_2b7f = *(undefined1 *)&param_3[4].pVFTable;
pTVar29 = &local_2b98;
FUN_1400cf2c0((longlong *)((longlong)pvVar9 + 0x668),(longlong)local_2ba0,
&pTVar29->pVFTable);
}
}
}
}
pTVar11 = (TypeDescriptor *)(ulonglong)((int)local_2c08 + 1);
}
if (iVar23 < 1) goto LAB_1400b000b;
if (*(int *)&param_3->pVFTable != 0) {
local_5c = 200;
local_60 = 0;
local_68 = local_ce8;
FUN_140074fb0(local_29f8);
FUN_140074c30((longlong)local_29f8,(longlong)local_29d0,0x80,pTVar33);
puVar31 = local_29f8;
FUN_140093d90((longlong)param_2,(longlong)local_ce8,(SIZE_T)puVar31,pTVar33);
local_2c00._8_8_ = (longlong *)0x0;
local_2bf0 = (TypeDescriptor *)0x0;
local_2be8 = 0;
local_2be0 = 0;
local_2c00._0_8_ = Proud::BypassDestList::vftable;
puVar20 = local_2c00;
FUN_14009e0a0((longlong)&local_2b60,(longlong)puVar20,puVar31,(longlong)pTVar33);
local_cec = 200;
local_cf0 = 0;
local_cf8 = local_1978;
FUN_140074fb0(&local_2bc8);
FUN_140074a40((longlong)&local_2bc8,puVar20,(SIZE_T)puVar31,pTVar33);
FUN_140029d80((longlong)&local_2bc8,CONCAT71((int7)((ulonglong)puVar20 >> 8),0x14),
(SIZE_T)puVar31,pTVar33);
FUN_1400766a0((longlong)&local_2bc8,(longlong)local_2c00,(SIZE_T)puVar31,pTVar33);
puVar21 = &local_2bc8;
FUN_140074a00((longlong *)&local_2b30,(longlong)puVar21);
iVar5 = FUN_140096ef0((longlong)local_ce8,puVar21,puVar31,pTVar33);
lVar15 = (longlong)iVar5;
FUN_140076380((longlong)&local_2bc8,lVar15,(SIZE_T)puVar31,pTVar33);
local_197c = 200;
local_1980 = 0;
local_1988 = local_2608;
if (local_2bc0.pVFTable == (void *)0x0) {
uStack_2bd0 = local_2bb0;
if (local_2bc0.spare == (TypeDescriptor *)0x0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,lVar15,puVar31,pTVar33);
}
}
else {
uStack_2bd0 = *(uint *)((longlong)local_2bc0.pVFTable + 0x18);
}
local_2608[0].pVFTable = local_2bc0.spare;
if (local_2bc0.spare == (TypeDescriptor *)0x0) {
if (local_2bc0.pVFTable == (void *)0x0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,(ulonglong)uStack_2bd0,puVar31,pTVar33);
}
local_2608[0].pVFTable = pTVar16;
if (*(int *)((longlong)local_2bc0.pVFTable + 0x18) != 0) {
local_2608[0].pVFTable = *(void **)((longlong)local_2bc0.pVFTable + 0x10);
}
}
local_1980 = 1;
local_2608[0].spare = (void *)CONCAT44(uStack_2bcc,uStack_2bd0);
local_2bd8 = local_2608[0].pVFTable;
FUN_14004dc30((longlong)local_1978,(longlong)local_2608,puVar31,pTVar33);
if (local_1988 == (TypeDescriptor *)0x0) {
FUN_14003db10(local_2ad8,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_140170368,puVar31
,pTVar33);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_2ad8,(ThrowInfo *)&DAT_14016c210);
}
if (local_197c < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
FUN_14004dc30((longlong)local_1978,(longlong)local_ce8,puVar31,pTVar33);
local_2b98.pVFTable._0_4_ = *(undefined4 *)&param_3[2].pVFTable;
local_2b98.spare = param_3[1].spare;
local_2b88 = *(undefined1 *)((longlong)&param_3[2].spare + 5);
local_2b84 = *(undefined4 *)&param_3[3].pVFTable;
local_2b7f = *(undefined1 *)&param_3[4].pVFTable;
local_2b80 = 1;
local_2bd8 = local_2608;
local_197c = 200;
local_1980 = 0;
local_1988 = local_2608;
FUN_140096f90((longlong *)&local_cf8,&local_1988,puVar31,pTVar33);
pTVar18 = local_2608;
pTVar33 = (TypeDescriptor *)0x0;
plVar32 = (longlong *)0x1;
FUN_14009d260((longlong)param_1,0,1,(SIZE_T *)pTVar18,(SIZE_T *)&local_2b98);
FUN_140074a20((longlong *)&local_2b30);
local_2bd8 = &local_2bc0;
FUN_14008a320((longlong *)&local_2bc0);
if (local_2bc0.spare != (TypeDescriptor *)0x0) {
if (local_2bac < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
local_2bb0 = 0;
}
FUN_14004db20((longlong)local_1978,pTVar33,plVar32,pTVar18);
local_2c00._0_8_ = Proud::CFastArray<Proud::BypassDest,0>::vftable;
if (local_2bf0 != (TypeDescriptor *)0x0) {
plVar32 = (longlong *)local_2c00._8_8_;
if ((longlong *)local_2c00._8_8_ == (longlong *)0x0) {
FUN_14003e8b0(local_2bf0);
}
else {
pTVar33 = local_2bf0;
(**(code **)(*(longlong *)local_2c00._8_8_ + 0x18))(local_2c00._8_8_);
}
}
local_2bd8 = &local_29f0;
FUN_14008a320((longlong *)&local_29f0);
if (local_29f0.spare != (void *)0x0) {
if (local_29dc < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
local_29e0 = 0;
}
pTVar11 = (TypeDescriptor *)FUN_14004db20((longlong)local_ce8,pTVar33,plVar32,pTVar18);
goto LAB_1400b000b;
}
local_2c00._8_8_ = (longlong *)0x0;
local_2bf0 = (TypeDescriptor *)0x0;
local_2be8 = 0;
local_2be0 = 0;
local_2c00._0_8_ = Proud::HostIDArray::vftable;
local_2c08 = (uint *)((ulonglong)local_2c08._4_4_ << 0x20);
local_2b78 = (void *)0x0;
pTVar11 = pTVar16;
pTVar8 = pTVar34;
pTVar27 = pTVar16;
pTVar24 = pTVar16;
if (0 < iVar23) {
do {
local_2b70 = pTVar8;
if (((longlong)local_2b78 < 0) || (iVar23 <= (int)pTVar11)) {
/* WARNING: Subroutine does not return */
FUN_14003def0(local_2b78,pTVar8,pTVar29,pTVar33);
}
local_2af0 = pTVar8->spare;
local_2b38 = (TypeDescriptor *)((longlong)pTVar8->pVFTable + 0x56c);
iVar5 = (int)pTVar27;
if (iVar5 < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
FUN_14004cce0((longlong)local_2c00,iVar5 + 1,(longlong)pTVar29);
pTVar24 = local_2bf0;
uVar28 = (uint)local_2be8;
pTVar27 = (TypeDescriptor *)(local_2be8 & 0xffffffff);
pTVar18 = local_2bf0;
if ((uint)local_2be8 == 0) {
pTVar18 = pTVar16;
}
pTVar29 = (TypeDescriptor *)0x4;
FUN_140006fb0((undefined8 *)((longlong)&pTVar18->pVFTable + (longlong)iVar5 * 4),
&local_2b38->pVFTable,4);
uVar4 = (int)local_2c08 + 1;
local_2c08 = (uint *)CONCAT44(local_2c08._4_4_,uVar4);
local_2b78 = (void *)((longlong)local_2b78 + 1);
pTVar18 = local_2b70 + 1;
pTVar11 = (TypeDescriptor *)(ulonglong)uVar4;
pTVar8 = pTVar18;
local_2b70 = pTVar18;
} while ((int)uVar4 < iVar23);
}
uVar2 = local_2c00._8_8_;
FUN_140074fb0(&local_2bc8);
FUN_140074a40((longlong)&local_2bc8,pTVar18,(SIZE_T)pTVar29,pTVar33);
FUN_140029d80((longlong)&local_2bc8,CONCAT71((int7)((ulonglong)pTVar18 >> 8),0x15),
(SIZE_T)pTVar29,pTVar33);
FUN_140029d80((longlong)&local_2bc8,(ulonglong)*(byte *)&param_3[2].pVFTable,(SIZE_T)pTVar29,
pTVar33);
FUN_140076380((longlong)&local_2bc8,(longlong)param_3[1].spare,(SIZE_T)pTVar29,pTVar33);
FUN_140076380((longlong)&local_2bc8,(longlong)(int)uVar28,(SIZE_T)pTVar29,pTVar33);
pTVar18 = pTVar24;
if (uVar28 == 0) {
pTVar18 = pTVar16;
}
SVar30 = (SIZE_T)(uVar28 * 4);
if (uVar28 * 4 != 0) {
local_2bc4 = 0;
if (local_2bc0.pVFTable == (void *)0x0) {
if (local_2bc0.spare == (TypeDescriptor *)0x0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,pTVar18,SVar30,pTVar33);
}
LAB_1400af95e:
FUN_140029f40((longlong *)&local_2bc0.spare,&pTVar18->pVFTable,SVar30,pTVar33);
}
else {
if (local_2bc0.spare != (TypeDescriptor *)0x0) goto LAB_1400af95e;
if (local_2bc0.pVFTable == (void *)0x0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,pTVar18,SVar30,pTVar33);
}
FUN_14002a110((longlong)local_2bc0.pVFTable,&pTVar18->pVFTable,SVar30);
}
FUN_14002a180((longlong)&local_2bc8,pTVar18,SVar30,pTVar33);
}
puVar21 = &local_2bc8;
FUN_140074a00((longlong *)&local_2b30,(longlong)puVar21);
pTVar18 = local_2ba0;
iVar5 = FUN_140096ef0((longlong)local_2ba0,puVar21,SVar30,pTVar33);
lVar15 = (longlong)iVar5;
FUN_140076380((longlong)&local_2bc8,lVar15,SVar30,pTVar33);
local_cec = 200;
local_cf0 = 0;
local_cf8 = local_1978;
local_197c = 200;
local_1980 = 0;
local_1988 = local_2608;
if (local_2bc0.pVFTable == (void *)0x0) {
uStack_2bd0 = local_2bb0;
if (local_2bc0.spare == (TypeDescriptor *)0x0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,lVar15,SVar30,pTVar33);
}
}
else {
uStack_2bd0 = *(uint *)((longlong)local_2bc0.pVFTable + 0x18);
}
local_2608[0].pVFTable = local_2bc0.spare;
if (local_2bc0.spare == (TypeDescriptor *)0x0) {
if (local_2bc0.pVFTable == (void *)0x0) {
/* WARNING: Subroutine does not return */
FUN_14008a420(0,(ulonglong)uStack_2bd0,SVar30,pTVar33);
}
local_2608[0].pVFTable = pTVar16;
if (*(int *)((longlong)local_2bc0.pVFTable + 0x18) != 0) {
local_2608[0].pVFTable = *(void **)((longlong)local_2bc0.pVFTable + 0x10);
}
}
local_1980 = 1;
local_2608[0].spare = (void *)CONCAT44(uStack_2bcc,uStack_2bd0);
local_2bd8 = local_2608[0].pVFTable;
FUN_14004dc30((longlong)local_1978,(longlong)local_2608,SVar30,pTVar33);
if (local_1988 == (TypeDescriptor *)0x0) {
FUN_14003db10(local_2a90,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_140170368,SVar30,
pTVar33);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_2a90,(ThrowInfo *)&DAT_14016c210);
}
if (local_197c < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
FUN_14004dc30((longlong)local_1978,(longlong)pTVar18,SVar30,pTVar33);
local_2b98.pVFTable._0_4_ = *(undefined4 *)&param_3[2].pVFTable;
local_2b98.spare = param_3[1].spare;
local_2b88 = *(undefined1 *)((longlong)&param_3[2].spare + 5);
local_2b84 = *(undefined4 *)&param_3[3].pVFTable;
local_2b7f = *(undefined1 *)&param_3[4].pVFTable;
local_2b80 = 1;
local_2bd8 = local_2608;
local_197c = 200;
local_1980 = 0;
local_1988 = local_2608;
FUN_140096f90((longlong *)&local_cf8,&local_1988,SVar30,pTVar33);
plVar32 = local_2b68;
local_2bd8 = local_2608;
FUN_14009c580((longlong)local_2b68);
if ((undefined8 *)plVar32[0x2ae] != (undefined8 *)0x0) {
pTVar16 = *(TypeDescriptor **)plVar32[0x2ae];
}
pTVar18 = &local_2b98;
pTVar33 = local_2608;
uVar19 = 0;
FUN_1400c8300((longlong *)pTVar16,0,(longlong)pTVar33,&pTVar18->pVFTable);
FUN_14004db20((longlong)local_2608,uVar19,pTVar33,pTVar18);
if (local_cf8 == (undefined1 *)0x0) {
FUN_14003db10(local_2a48,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_140170368,pTVar33,
pTVar18);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_2a48,(ThrowInfo *)&DAT_14016c210);
}
if (local_cec < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
local_cf0 = 0;
FUN_140074a20((longlong *)&local_2b30);
local_2bd8 = &local_2bc0;
pTVar11 = (TypeDescriptor *)FUN_14008a320((longlong *)&local_2bc0);
if (local_2bc0.spare != (TypeDescriptor *)0x0) {
if (local_2bac < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
local_2bb0 = 0;
}
if (pTVar24 != (TypeDescriptor *)0x0) {
if ((longlong *)uVar2 == (longlong *)0x0) {
pTVar11 = (TypeDescriptor *)FUN_14003e8b0(pTVar24);
}
else {
pTVar11 = (TypeDescriptor *)(**(code **)(*(longlong *)uVar2 + 0x18))(uVar2,pTVar24);
}
}
LAB_1400b000b:
if (pTVar34 != (TypeDescriptor *)0x0) {
if (local_2b58 == (longlong *)0x0) {
pTVar11 = (TypeDescriptor *)FUN_14003e8b0(pTVar34);
}
else {
pTVar11 = (TypeDescriptor *)(**(code **)(*local_2b58 + 0x18))(local_2b58,pTVar34);
}
}
if (100 < local_2938) {
operator_delete__(local_2948.pVFTable);
pTVar11 = extraout_RAX;
}
if (local_2b18 != '\0') {
pTVar11 = (TypeDescriptor *)FUN_14003d0d0((longlong)local_2b20);
}
return CONCAT71((int7)((ulonglong)pTVar11 >> 8),1);
}
FUN_14003e7c0(plVar32,pTVar18,pTVar29,pTVar33);
local_2c08 = (uint *)PTR_DAT_14016f010;
uVar4 = FUN_14003e620((short *)puVar1);
if ((local_2c08 != (uint *)0x0) &&
(pTVar16 = (TypeDescriptor *)0x0, local_2c08 != (uint *)PTR_DAT_14016f010)) {
pTVar16 = (TypeDescriptor *)(ulonglong)local_2c08[-2];
}
uVar6 = uVar4;
if ((((int)uVar4 <= (int)pTVar16) && (uVar6 = uVar28, local_2c08 != (uint *)0x0)) &&
(local_2c08 != (uint *)PTR_DAT_14016f010)) {
uVar6 = local_2c08[-2];
}
uVar25 = 1;
if (1 < (int)uVar6) {
uVar25 = uVar6;
}
uVar7 = 0;
uVar6 = uVar7;
if ((local_2c08 != (uint *)0x0) && (local_2c08 != (uint *)PTR_DAT_14016f010)) {
uVar6 = local_2c08[-2];
}
if ((int)uVar6 < (int)uVar25) {
if (local_2c08 == (uint *)0x0) {
local_2c08 = (uint *)PTR_DAT_14016f010;
}
if ((int)uVar25 < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
if (uVar25 == 0) {
FUN_140002190(&local_2c08,PTR_DAT_14016f010,pTVar16,pTVar33);
}
else {
uVar6 = uVar7;
if ((local_2c08 != (uint *)0x0) && (local_2c08 != (uint *)PTR_DAT_14016f010)) {
uVar6 = local_2c08[-2];
}
if (uVar25 != uVar6) {
puVar12 = (uint *)FUN_14003e840((longlong)(int)uVar25 * 2 + 10);
if (puVar12 != (uint *)0x0) {
*puVar12 = 0;
puVar12[1] = 1;
}
*puVar12 = uVar25;
uVar6 = uVar7;
if ((local_2c08 != (uint *)0x0) && (local_2c08 != (uint *)PTR_DAT_14016f010)) {
uVar6 = local_2c08[-2];
}
puVar22 = (uint *)PTR_DAT_14016f010;
if ((int)uVar25 < (int)uVar6) {
LAB_1400b0165:
if (local_2c08 != (uint *)0x0) {
puVar22 = local_2c08;
}
}
else {
uVar25 = uVar28;
if (local_2c08 != (uint *)0x0) {
if (local_2c08 != (uint *)PTR_DAT_14016f010) {
uVar25 = local_2c08[-2];
}
goto LAB_1400b0165;
}
}
uVar26 = (ulonglong)uVar25;
FUN_14003e650(puVar12 + 2,puVar22,uVar25);
FUN_140002190(&local_2c08,puVar22,uVar26,pTVar33);
local_2c08 = puVar12 + 2;
}
}
}
FUN_140001df0(&local_2c08);
puVar12 = local_2c08;
if (local_2c08 == (uint *)0x0) {
puVar12 = (uint *)PTR_DAT_14016f010;
}
FUN_14003e650(puVar12,puVar1,uVar4);
puVar12 = local_2c08;
if (local_2c08 == (uint *)0x0) {
puVar12 = (uint *)PTR_DAT_14016f010;
}
uVar4 = FUN_14003e620((short *)puVar12);
uVar28 = 0;
if (0 < (int)uVar4) {
uVar28 = uVar4;
}
uVar4 = uVar7;
if ((local_2c08 != (uint *)0x0) && (local_2c08 != (uint *)PTR_DAT_14016f010)) {
uVar4 = local_2c08[-2];
}
if (((int)uVar4 <= (int)uVar28) && (uVar28 = uVar7, local_2c08 != (uint *)0x0)) {
if (local_2c08 == (uint *)PTR_DAT_14016f010) goto LAB_1400b021a;
uVar28 = local_2c08[-2];
}
if (((local_2c08 != (uint *)PTR_DAT_14016f010) && (local_2c08 != (uint *)0x0)) &&
(local_2c08 + -2 != (uint *)0x0)) {
local_2c08[-2] = uVar28;
*(undefined2 *)((longlong)local_2c08 + (longlong)(int)uVar28 * 2) = 0;
}
LAB_1400b021a:
local_2c00._8_8_ = (void *)0x0;
local_2bf0 = (TypeDescriptor *)0x0;
local_2be8 = 0;
local_2be0 = 0;
local_2c00._0_8_ = Proud::ByteArray::vftable;
plVar32 = &local_2c08;
plVar13 = FUN_140071c20((longlong *)&local_2bd8,0x12,0,plVar32,(longlong)local_2c00);
lVar15 = *param_1;
(**(code **)(lVar15 + 0x80))(param_1);
puVar17 = (undefined8 *)local_2c00;
FUN_140049e40(puVar17);
puVar12 = local_2c08;
if (((local_2c08 != (uint *)0x0) && (local_2c08 != (uint *)PTR_DAT_14016f010)) &&
(puVar22 = local_2c08 + -2, puVar22 != (uint *)0x0)) {
piVar14 = (int *)FUN_14003e7c0(puVar17,plVar13,lVar15,plVar32);
local_2b30 = piVar14;
FUN_14003d040(piVar14);
local_2b28 = CONCAT31(local_2b28._1_3_,1);
puVar12 = puVar12 + -1;
*puVar12 = *puVar12 - 1;
if (*puVar12 == 0) {
FUN_14003e8b0(puVar22);
}
FUN_14003d0d0((longlong)piVar14);
}
uVar26 = FUN_14003d0d0((longlong)local_2b20);
return uVar26 & 0xffffffffffffff00;
}