735 lines
24 KiB
C
735 lines
24 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401d9ef0 FUN_1401d9ef0
|
|
* 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,0x0001401da630) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da63c) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da634) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da642) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da4c7) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da4ce) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da4e6) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da4f2) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da4ea) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da4f8) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da514) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da410) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da417) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da430) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da43c) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da434) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da442) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401da45e) */
|
|
|
|
undefined8 FUN_1401d9ef0(longlong *param_1,longlong param_2,int *param_3,int *param_4,uint param_5)
|
|
|
|
{
|
|
undefined *puVar1;
|
|
undefined4 uVar2;
|
|
uint uVar3;
|
|
int iVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
undefined8 *puVar7;
|
|
longlong lVar8;
|
|
longlong *plVar9;
|
|
longlong *plVar10;
|
|
longlong *plVar11;
|
|
uint *puVar12;
|
|
undefined8 uVar13;
|
|
longlong lVar14;
|
|
longlong *plVar15;
|
|
uint *puVar16;
|
|
int iVar17;
|
|
uint uVar18;
|
|
ulonglong uVar19;
|
|
longlong *plVar20;
|
|
uint uVar21;
|
|
longlong *plVar22;
|
|
undefined1 auStack_2c38 [32];
|
|
undefined ***local_2c18;
|
|
undefined8 local_2c08;
|
|
undefined **local_2c00;
|
|
longlong *local_2bf8;
|
|
longlong *local_2bf0;
|
|
ulonglong local_2be8;
|
|
undefined8 local_2be0;
|
|
undefined8 local_2bd8;
|
|
undefined4 uStack_2bd0;
|
|
undefined4 uStack_2bcc;
|
|
undefined1 local_2bc8 [4];
|
|
undefined4 local_2bc4;
|
|
longlong *local_2bc0;
|
|
longlong *local_2bb8;
|
|
undefined4 local_2bb0;
|
|
int local_2bac;
|
|
longlong local_2ba0;
|
|
int local_2b98 [2];
|
|
undefined8 local_2b90;
|
|
undefined1 local_2b88;
|
|
int local_2b84;
|
|
undefined1 local_2b80;
|
|
undefined1 local_2b7f;
|
|
longlong local_2b78;
|
|
undefined8 local_2b70;
|
|
longlong *local_2b68;
|
|
undefined **local_2b60;
|
|
longlong *local_2b58;
|
|
longlong *local_2b50;
|
|
uint local_2b48;
|
|
undefined8 local_2b44;
|
|
undefined4 local_2b3c;
|
|
int *local_2b38;
|
|
undefined8 local_2b30;
|
|
undefined4 local_2b28;
|
|
undefined4 uStack_2b24;
|
|
undefined8 local_2b20;
|
|
char local_2b18;
|
|
longlong local_2b10;
|
|
longlong *local_2b08;
|
|
undefined8 *local_2b00;
|
|
longlong local_2af0;
|
|
undefined8 local_2ae0;
|
|
undefined1 local_2ad8 [72];
|
|
undefined1 local_2a90 [72];
|
|
undefined1 local_2a48 [80];
|
|
undefined1 local_29f8 [8];
|
|
longlong *local_29f0;
|
|
longlong local_29e8;
|
|
undefined4 local_29e0;
|
|
int local_29dc;
|
|
undefined1 local_29d0 [136];
|
|
void *local_2948;
|
|
longlong local_2940;
|
|
ulonglong local_2938;
|
|
undefined8 local_2930;
|
|
undefined8 auStack_2928 [100];
|
|
undefined4 local_2608;
|
|
undefined4 uStack_2604;
|
|
undefined4 uStack_2600;
|
|
undefined4 uStack_25fc;
|
|
undefined4 *local_1988;
|
|
undefined4 local_1980;
|
|
int local_197c;
|
|
undefined1 local_1978 [3200];
|
|
undefined1 *local_cf8;
|
|
undefined4 local_cf0;
|
|
int local_cec;
|
|
longlong *local_ce8 [400];
|
|
longlong **local_68;
|
|
undefined4 local_60;
|
|
undefined4 local_5c;
|
|
ulonglong local_58;
|
|
|
|
local_2ae0 = 0xfffffffffffffffe;
|
|
local_58 = DAT_1403463c0 ^ (ulonglong)auStack_2c38;
|
|
plVar15 = (longlong *)0x0;
|
|
local_2b78 = 0;
|
|
local_2ba0 = param_2;
|
|
local_2b68 = param_1;
|
|
local_2b38 = param_3;
|
|
local_2b10 = param_2;
|
|
local_2b08 = param_1;
|
|
local_2b20 = (**(code **)(*param_1 + 0x58))();
|
|
FUN_14016db50(local_2b20);
|
|
puVar1 = PTR_u_Cannot_send_messages_unless_conn_1403459c0;
|
|
local_2b18 = '\x01';
|
|
uVar21 = 0;
|
|
if ((((longlong *)param_1[699] != (longlong *)0x0) && (*(longlong *)param_1[699] != 0)) &&
|
|
((int)param_1[0x2af] != 0)) {
|
|
local_2948 = (void *)0x0;
|
|
local_2930 = 0;
|
|
local_2940 = 0;
|
|
local_2938 = 100;
|
|
if (0 < (int)param_5) {
|
|
uVar19 = (ulonglong)param_5;
|
|
do {
|
|
if (*param_4 != 0) {
|
|
FUN_1401d8ff0(param_1,*param_4,&local_2948);
|
|
}
|
|
param_4 = param_4 + 1;
|
|
uVar19 = uVar19 - 1;
|
|
} while (uVar19 != 0);
|
|
}
|
|
FUN_1401c8850(&local_2948);
|
|
local_2b58 = (longlong *)0x0;
|
|
local_2b3c = 0;
|
|
local_2b50 = (longlong *)0x0;
|
|
local_2b48 = 0;
|
|
local_2b44 = 0;
|
|
local_2b60 = Proud::CNetClientImpl::BypassDestList_C::vftable;
|
|
local_2b70 = (longlong *)((ulonglong)local_2b70._4_4_ << 0x20);
|
|
plVar9 = plVar15;
|
|
plVar10 = plVar15;
|
|
plVar22 = plVar15;
|
|
while( true ) {
|
|
iVar4 = (int)plVar9;
|
|
local_2c08 = (uint *)CONCAT44(local_2c08._4_4_,iVar4);
|
|
lVar14 = (longlong)iVar4;
|
|
iVar17 = (int)plVar10;
|
|
if (local_2940 <= lVar14) break;
|
|
if (iVar4 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (local_2938 < 0x65) {
|
|
puVar7 = auStack_2928 + lVar14;
|
|
}
|
|
else {
|
|
puVar7 = (undefined8 *)((longlong)local_2948 + lVar14 * 8);
|
|
}
|
|
plVar9 = (longlong *)*puVar7;
|
|
plVar11 = param_1 + 0xc;
|
|
if (param_1 == (longlong *)0x0) {
|
|
plVar11 = plVar15;
|
|
}
|
|
if ((plVar9 == plVar11) && (*(char *)((longlong)param_3 + 0x2d) != '\0')) {
|
|
FUN_14016b440(&local_2c00);
|
|
FUN_14019b750(local_2ba0,&local_2c00);
|
|
lVar14 = param_1[0x2a8];
|
|
plVar11 = (longlong *)local_2b68[0x2a6];
|
|
if (plVar11 == (longlong *)0x0) {
|
|
puVar7 = (undefined8 *)FUN_14016d940(0x38);
|
|
}
|
|
else {
|
|
puVar7 = (undefined8 *)(**(code **)(*plVar11 + 8))(plVar11,0x38);
|
|
}
|
|
local_2b00 = puVar7;
|
|
if (puVar7 != (undefined8 *)0x0) {
|
|
local_2bd8 = (longlong **)puVar7;
|
|
FUN_14016b470(puVar7 + 2,&local_2c00);
|
|
}
|
|
param_1 = local_2b68;
|
|
puVar7[1] = lVar14;
|
|
*puVar7 = 0;
|
|
local_2b68[0x2a9] = local_2b68[0x2a9] + 1;
|
|
if ((undefined8 *)local_2b68[0x2a8] == (undefined8 *)0x0) {
|
|
local_2b68[0x2a7] = (longlong)puVar7;
|
|
}
|
|
else {
|
|
*(undefined8 *)local_2b68[0x2a8] = puVar7;
|
|
}
|
|
local_2b68[0x2a8] = (longlong)puVar7;
|
|
local_2bd8 = &local_2bf8;
|
|
FUN_14016d0e0(&local_2bf8);
|
|
if ((local_2bf0 != (longlong *)0x0) && ((longlong)local_2be8 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
param_2 = local_2ba0;
|
|
if (plVar9 == param_1 + 0x2aa) {
|
|
local_2b98[0] = param_3[8];
|
|
local_2b90 = *(undefined8 *)(param_3 + 6);
|
|
local_2b88 = *(undefined1 *)((longlong)param_3 + 0x2d);
|
|
local_2b84 = param_3[0xc];
|
|
local_2b80 = *(undefined1 *)((longlong)param_3 + 0x41);
|
|
local_2b7f = (undefined1)param_3[0x10];
|
|
local_2bd8 = local_ce8;
|
|
local_5c = 200;
|
|
local_60 = 0;
|
|
local_68 = local_ce8;
|
|
FUN_14019b4e0(local_2ba0 + 0xc80,&local_68);
|
|
local_2c18 = (undefined ***)local_2b98;
|
|
FUN_1401c8090(param_1,1,*param_3,local_ce8);
|
|
}
|
|
else if (plVar9 != (longlong *)0x0) {
|
|
local_2c18 = (undefined ***)((ulonglong)local_2c18 & 0xffffffff00000000);
|
|
lVar14 = __RTDynamicCast(plVar9,0,&Proud::ISendDest_C::RTTI_Type_Descriptor,
|
|
&Proud::CRemotePeer_C::RTTI_Type_Descriptor);
|
|
param_2 = local_2ba0;
|
|
local_2b78 = lVar14;
|
|
if (lVar14 != 0) {
|
|
if ((((*(char *)(lVar14 + 0x608) != '\0') || (param_3[4] <= (int)local_2b70)) ||
|
|
(*(double *)(lVar14 + 0x50) <= 0.0)) ||
|
|
((*(double *)(lVar14 + 0x60) <= 0.0 ||
|
|
((*(double *)(lVar14 + 0x60) + (double)param_1[0x9f]) / *(double *)(lVar14 + 0x50) <
|
|
*(double *)(param_3 + 0xe))))) {
|
|
if (*param_3 == 1) {
|
|
FUN_140200450(*(longlong *)(lVar14 + 0x640) + 8,1);
|
|
uVar2 = FUN_1401fedb0(lVar14 + 0x638);
|
|
local_2af0 = CONCAT44(local_2af0._4_4_,uVar2);
|
|
if (iVar17 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
FUN_140174540(&local_2b60);
|
|
plVar9 = local_2b50;
|
|
if (local_2b48 == 0) {
|
|
plVar9 = plVar15;
|
|
}
|
|
plVar9[(longlong)iVar17 * 2] = lVar14;
|
|
lVar8 = local_2af0;
|
|
LAB_1401da545:
|
|
plVar10 = (longlong *)(ulonglong)local_2b48;
|
|
plVar9[(longlong)iVar17 * 2 + 1] = lVar8;
|
|
plVar22 = local_2b50;
|
|
}
|
|
else if (*(char *)((longlong)param_3 + 0x2e) != '\0') {
|
|
local_2b28 = 0;
|
|
if (iVar17 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
FUN_140174540(&local_2b60);
|
|
plVar9 = local_2b50;
|
|
if (local_2b48 == 0) {
|
|
plVar9 = plVar15;
|
|
}
|
|
plVar9[(longlong)iVar17 * 2] = lVar14;
|
|
lVar8 = CONCAT44(uStack_2b24,local_2b28);
|
|
goto LAB_1401da545;
|
|
}
|
|
if ((char)param_3[0xb] != '\0') {
|
|
*(undefined1 *)(lVar14 + 0x21) = 1;
|
|
}
|
|
}
|
|
else {
|
|
local_2b70 = (longlong *)CONCAT44(local_2b70._4_4_,(int)local_2b70 + 1);
|
|
if (*(char *)((longlong)param_3 + 0x41) == '\0') {
|
|
*(int *)(lVar14 + 0x40) = *(int *)(lVar14 + 0x40) + 1;
|
|
}
|
|
if (*param_3 == 1) {
|
|
FUN_1401fee10(lVar14 + 0x638);
|
|
}
|
|
else {
|
|
local_2b98[0] = param_3[8];
|
|
local_2b90 = *(undefined8 *)(param_3 + 6);
|
|
local_2b88 = *(undefined1 *)((longlong)param_3 + 0x2d);
|
|
local_2b84 = param_3[0xc];
|
|
local_2b80 = *(undefined1 *)((longlong)param_3 + 0x41);
|
|
local_2b7f = (undefined1)param_3[0x10];
|
|
FUN_1401fa510(lVar14 + 0x668,local_2ba0,local_2b98);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
plVar9 = (longlong *)(ulonglong)((int)local_2c08 + 1);
|
|
}
|
|
if (iVar17 < 1) goto LAB_1401dadfb;
|
|
if (*param_3 != 0) {
|
|
local_5c = 200;
|
|
local_60 = 0;
|
|
local_68 = local_ce8;
|
|
FUN_14016b440(local_29f8);
|
|
FUN_14016b0c0(local_29f8,local_29d0,0x80);
|
|
FUN_1401bf350(param_2,local_ce8,local_29f8);
|
|
local_2bf8 = (longlong *)0x0;
|
|
local_2bf0 = (longlong *)0x0;
|
|
local_2be8 = 0;
|
|
local_2be0 = 0;
|
|
local_2c00 = Proud::BypassDestList::vftable;
|
|
FUN_1401c8f90(&local_2b60,&local_2c00);
|
|
local_cec = 200;
|
|
local_cf0 = 0;
|
|
local_cf8 = local_1978;
|
|
FUN_14016b440(local_2bc8);
|
|
FUN_14016abe0(local_2bc8);
|
|
FUN_14004eef0(local_2bc8,0x14);
|
|
FUN_14016cde0(local_2bc8,&local_2c00);
|
|
FUN_14016aaa0(&local_2b30,local_2bc8);
|
|
iVar4 = FUN_14019b440(local_ce8);
|
|
FUN_14016cac0(local_2bc8,(longlong)iVar4);
|
|
local_197c = 200;
|
|
local_1980 = 0;
|
|
local_1988 = &local_2608;
|
|
if (local_2bc0 == (longlong *)0x0) {
|
|
uStack_2bd0 = local_2bb0;
|
|
if (local_2bb8 == (longlong *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
uStack_2bd0 = (int)local_2bc0[3];
|
|
}
|
|
plVar9 = local_2bb8;
|
|
if (local_2bb8 == (longlong *)0x0) {
|
|
if (local_2bc0 == (longlong *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
plVar9 = plVar15;
|
|
if ((int)local_2bc0[3] != 0) {
|
|
plVar9 = (longlong *)local_2bc0[2];
|
|
}
|
|
}
|
|
local_1980 = 1;
|
|
local_2bd8._0_4_ = SUB84(plVar9,0);
|
|
local_2bd8._4_4_ = (undefined4)((ulonglong)plVar9 >> 0x20);
|
|
local_2608 = (undefined4)local_2bd8;
|
|
uStack_2604 = local_2bd8._4_4_;
|
|
uStack_25fc = uStack_2bcc;
|
|
local_2bd8 = (longlong **)plVar9;
|
|
uStack_2600 = uStack_2bd0;
|
|
FUN_14016ded0(local_1978,&local_2608);
|
|
if (local_1988 == (undefined4 *)0x0) {
|
|
FUN_14016d300(local_2ad8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_2ad8,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_197c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
FUN_14016ded0(local_1978,local_ce8);
|
|
local_2b98[0] = param_3[8];
|
|
local_2b90 = *(undefined8 *)(param_3 + 6);
|
|
local_2b88 = *(undefined1 *)((longlong)param_3 + 0x2d);
|
|
local_2b84 = param_3[0xc];
|
|
local_2b7f = (undefined1)param_3[0x10];
|
|
local_2b80 = 1;
|
|
local_2bd8 = (longlong **)&local_2608;
|
|
local_197c = 200;
|
|
local_1980 = 0;
|
|
local_1988 = &local_2608;
|
|
FUN_14019b4e0(&local_cf8,&local_1988);
|
|
local_2c18 = (undefined ***)local_2b98;
|
|
FUN_1401c8090(param_1,0,1,&local_2608);
|
|
FUN_14016aac0(&local_2b30);
|
|
local_2bd8 = &local_2bc0;
|
|
FUN_14016d0e0(&local_2bc0);
|
|
if (local_2bb8 != (longlong *)0x0) {
|
|
if (local_2bac < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_2bb0 = 0;
|
|
}
|
|
FUN_14016ddc0(local_1978);
|
|
local_2c00 = Proud::CFastArray<Proud::BypassDest,0>::vftable;
|
|
if (local_2bf0 != (longlong *)0x0) {
|
|
if (local_2bf8 == (longlong *)0x0) {
|
|
FUN_14016d970();
|
|
}
|
|
else {
|
|
(**(code **)(*local_2bf8 + 0x18))(local_2bf8,local_2bf0);
|
|
}
|
|
}
|
|
local_2bd8 = &local_29f0;
|
|
FUN_14016d0e0(&local_29f0);
|
|
if (local_29e8 != 0) {
|
|
if (local_29dc < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_29e0 = 0;
|
|
}
|
|
FUN_14016ddc0(local_ce8);
|
|
goto LAB_1401dadfb;
|
|
}
|
|
local_2bf8 = (longlong *)0x0;
|
|
local_2bf0 = (longlong *)0x0;
|
|
local_2be8 = 0;
|
|
local_2be0 = 0;
|
|
local_2c00 = Proud::HostIDArray::vftable;
|
|
local_2c08 = (uint *)((ulonglong)local_2c08._4_4_ << 0x20);
|
|
local_2b78 = 0;
|
|
plVar10 = plVar15;
|
|
plVar11 = plVar22;
|
|
plVar20 = plVar15;
|
|
plVar9 = plVar15;
|
|
if (0 < iVar17) {
|
|
do {
|
|
local_2b70 = plVar11;
|
|
if ((local_2b78 < 0) || (iVar17 <= (int)plVar10)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6e0();
|
|
}
|
|
local_2af0 = plVar11[1];
|
|
local_2b38 = (int *)(*plVar11 + 0x56c);
|
|
iVar4 = (int)plVar20;
|
|
if (iVar4 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
FUN_1401738d0(&local_2c00,iVar4 + 1);
|
|
plVar9 = local_2bf0;
|
|
uVar21 = (uint)local_2be8;
|
|
plVar20 = (longlong *)(local_2be8 & 0xffffffff);
|
|
plVar10 = local_2bf0;
|
|
if ((uint)local_2be8 == 0) {
|
|
plVar10 = plVar15;
|
|
}
|
|
FUN_14004f1a0((longlong)plVar10 + (longlong)iVar4 * 4,local_2b38,4);
|
|
uVar3 = (int)local_2c08 + 1;
|
|
local_2c08 = (uint *)CONCAT44(local_2c08._4_4_,uVar3);
|
|
local_2b78 = local_2b78 + 1;
|
|
local_2b70 = local_2b70 + 2;
|
|
plVar10 = (longlong *)(ulonglong)uVar3;
|
|
plVar11 = local_2b70;
|
|
} while ((int)uVar3 < iVar17);
|
|
}
|
|
plVar10 = local_2bf8;
|
|
FUN_14016b440(local_2bc8);
|
|
FUN_14016abe0(local_2bc8);
|
|
FUN_14004eef0(local_2bc8,0x15);
|
|
FUN_14004eef0(local_2bc8,(char)param_3[8]);
|
|
FUN_14016cac0(local_2bc8,*(undefined8 *)(param_3 + 6));
|
|
FUN_14016cac0(local_2bc8,(longlong)(int)uVar21);
|
|
plVar11 = plVar9;
|
|
if (uVar21 == 0) {
|
|
plVar11 = plVar15;
|
|
}
|
|
if ((uVar21 & 0x3fffffff) != 0) {
|
|
local_2bc4 = 0;
|
|
if (local_2bc0 == (longlong *)0x0) {
|
|
if (local_2bb8 == (longlong *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0(0,plVar11);
|
|
}
|
|
LAB_1401da74e:
|
|
FUN_14004efd0(&local_2bb8);
|
|
}
|
|
else {
|
|
if (local_2bb8 != (longlong *)0x0) goto LAB_1401da74e;
|
|
if (local_2bc0 == (longlong *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0(0,plVar11);
|
|
}
|
|
FUN_14004f200();
|
|
}
|
|
FUN_14004f270(local_2bc8);
|
|
}
|
|
FUN_14016aaa0(&local_2b30,local_2bc8);
|
|
lVar14 = local_2ba0;
|
|
iVar4 = FUN_14019b440(local_2ba0);
|
|
FUN_14016cac0(local_2bc8,(longlong)iVar4);
|
|
local_cec = 200;
|
|
local_cf0 = 0;
|
|
local_cf8 = local_1978;
|
|
local_197c = 200;
|
|
local_1980 = 0;
|
|
local_1988 = &local_2608;
|
|
if (local_2bc0 == (longlong *)0x0) {
|
|
uStack_2bd0 = local_2bb0;
|
|
if (local_2bb8 == (longlong *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
uStack_2bd0 = (int)local_2bc0[3];
|
|
}
|
|
plVar11 = local_2bb8;
|
|
if (local_2bb8 == (longlong *)0x0) {
|
|
if (local_2bc0 == (longlong *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
plVar11 = plVar15;
|
|
if ((int)local_2bc0[3] != 0) {
|
|
plVar11 = (longlong *)local_2bc0[2];
|
|
}
|
|
}
|
|
local_1980 = 1;
|
|
local_2bd8._0_4_ = SUB84(plVar11,0);
|
|
local_2bd8._4_4_ = (undefined4)((ulonglong)plVar11 >> 0x20);
|
|
local_2608 = (undefined4)local_2bd8;
|
|
uStack_2604 = local_2bd8._4_4_;
|
|
uStack_25fc = uStack_2bcc;
|
|
local_2bd8 = (longlong **)plVar11;
|
|
uStack_2600 = uStack_2bd0;
|
|
FUN_14016ded0(local_1978,&local_2608);
|
|
if (local_1988 == (undefined4 *)0x0) {
|
|
FUN_14016d300(local_2a90,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_2a90,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_197c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
FUN_14016ded0(local_1978,lVar14);
|
|
local_2b98[0] = param_3[8];
|
|
local_2b90 = *(undefined8 *)(param_3 + 6);
|
|
local_2b88 = *(undefined1 *)((longlong)param_3 + 0x2d);
|
|
local_2b84 = param_3[0xc];
|
|
local_2b7f = (undefined1)param_3[0x10];
|
|
local_2b80 = 1;
|
|
local_2bd8 = (longlong **)&local_2608;
|
|
local_197c = 200;
|
|
local_1980 = 0;
|
|
local_1988 = &local_2608;
|
|
FUN_14019b4e0(&local_cf8,&local_1988);
|
|
plVar11 = local_2b68;
|
|
local_2bd8 = (longlong **)&local_2608;
|
|
FUN_1401c7680(local_2b68);
|
|
if ((undefined8 *)plVar11[0x2ae] != (undefined8 *)0x0) {
|
|
plVar15 = *(longlong **)plVar11[0x2ae];
|
|
}
|
|
FUN_1401f3830(plVar15,0,&local_2608,local_2b98);
|
|
FUN_14016ddc0(&local_2608);
|
|
if (local_cf8 == (undefined1 *)0x0) {
|
|
FUN_14016d300(local_2a48,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_2a48,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_cec < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_cf0 = 0;
|
|
FUN_14016aac0(&local_2b30);
|
|
local_2bd8 = &local_2bc0;
|
|
FUN_14016d0e0(&local_2bc0);
|
|
if (local_2bb8 != (longlong *)0x0) {
|
|
if (local_2bac < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_2bb0 = 0;
|
|
}
|
|
if (plVar9 != (longlong *)0x0) {
|
|
if (plVar10 == (longlong *)0x0) {
|
|
FUN_14016d970(plVar9);
|
|
}
|
|
else {
|
|
(**(code **)(*plVar10 + 0x18))(plVar10,plVar9);
|
|
}
|
|
}
|
|
LAB_1401dadfb:
|
|
if (plVar22 != (longlong *)0x0) {
|
|
if (local_2b58 == (longlong *)0x0) {
|
|
FUN_14016d970(plVar22);
|
|
}
|
|
else {
|
|
(**(code **)(*local_2b58 + 0x18))(local_2b58,plVar22);
|
|
}
|
|
}
|
|
if (100 < local_2938) {
|
|
operator_delete__(local_2948);
|
|
}
|
|
if (local_2b18 != '\0') {
|
|
FUN_14016dbe0(local_2b20);
|
|
}
|
|
return 1;
|
|
}
|
|
FUN_14016d8c0();
|
|
local_2c08 = (uint *)PTR_DAT_1403440a0;
|
|
uVar3 = FUN_14016d740(puVar1);
|
|
if ((local_2c08 != (uint *)0x0) &&
|
|
(plVar15 = (longlong *)0x0, local_2c08 != (uint *)PTR_DAT_1403440a0)) {
|
|
plVar15 = (longlong *)(ulonglong)local_2c08[-2];
|
|
}
|
|
uVar5 = 0;
|
|
uVar6 = uVar3;
|
|
if ((((int)uVar3 <= (int)plVar15) && (uVar6 = uVar5, local_2c08 != (uint *)0x0)) &&
|
|
(local_2c08 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar6 = local_2c08[-2];
|
|
}
|
|
uVar18 = 1;
|
|
if (1 < (int)uVar6) {
|
|
uVar18 = uVar6;
|
|
}
|
|
uVar6 = uVar5;
|
|
if ((local_2c08 != (uint *)0x0) && (local_2c08 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar6 = local_2c08[-2];
|
|
}
|
|
if ((int)uVar6 < (int)uVar18) {
|
|
if (local_2c08 == (uint *)0x0) {
|
|
local_2c08 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
if ((int)uVar18 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar18 == 0) {
|
|
FUN_14004eb70(&local_2c08);
|
|
}
|
|
else {
|
|
uVar6 = uVar5;
|
|
if ((local_2c08 != (uint *)0x0) && (local_2c08 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar6 = local_2c08[-2];
|
|
}
|
|
if (uVar18 != uVar6) {
|
|
puVar12 = (uint *)FUN_14016d940((longlong)(int)uVar18 * 2 + 10);
|
|
if (puVar12 != (uint *)0x0) {
|
|
*puVar12 = 0;
|
|
puVar12[1] = 1;
|
|
}
|
|
*puVar12 = uVar18;
|
|
uVar6 = uVar5;
|
|
if ((local_2c08 != (uint *)0x0) && (local_2c08 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar6 = local_2c08[-2];
|
|
}
|
|
puVar16 = (uint *)PTR_DAT_1403440a0;
|
|
if ((int)uVar18 < (int)uVar6) {
|
|
LAB_1401daf55:
|
|
if (local_2c08 != (uint *)0x0) {
|
|
puVar16 = local_2c08;
|
|
}
|
|
}
|
|
else {
|
|
uVar18 = uVar21;
|
|
if (local_2c08 != (uint *)0x0) {
|
|
if (local_2c08 != (uint *)PTR_DAT_1403440a0) {
|
|
uVar18 = local_2c08[-2];
|
|
}
|
|
goto LAB_1401daf55;
|
|
}
|
|
}
|
|
FUN_14016d770(puVar12 + 2,puVar16,uVar18);
|
|
FUN_14004eb70(&local_2c08);
|
|
local_2c08 = puVar12 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_14004e850(&local_2c08);
|
|
puVar12 = local_2c08;
|
|
if (local_2c08 == (uint *)0x0) {
|
|
puVar12 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
FUN_14016d770(puVar12,puVar1,uVar3);
|
|
puVar12 = local_2c08;
|
|
if (local_2c08 == (uint *)0x0) {
|
|
puVar12 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
uVar3 = FUN_14016d740(puVar12);
|
|
uVar21 = 0;
|
|
if (0 < (int)uVar3) {
|
|
uVar21 = uVar3;
|
|
}
|
|
uVar3 = uVar5;
|
|
if ((local_2c08 != (uint *)0x0) && (local_2c08 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar3 = local_2c08[-2];
|
|
}
|
|
if (((int)uVar3 <= (int)uVar21) && (uVar21 = uVar5, local_2c08 != (uint *)0x0)) {
|
|
if (local_2c08 == (uint *)PTR_DAT_1403440a0) goto LAB_1401db00a;
|
|
uVar21 = local_2c08[-2];
|
|
}
|
|
if (((local_2c08 != (uint *)PTR_DAT_1403440a0) && (local_2c08 != (uint *)0x0)) &&
|
|
(local_2c08 + -2 != (uint *)0x0)) {
|
|
local_2c08[-2] = uVar21;
|
|
*(undefined2 *)((longlong)local_2c08 + (longlong)(int)uVar21 * 2) = 0;
|
|
}
|
|
LAB_1401db00a:
|
|
local_2bf8 = (longlong *)0x0;
|
|
local_2bf0 = (longlong *)0x0;
|
|
local_2be8 = 0;
|
|
local_2be0 = 0;
|
|
local_2c00 = Proud::ByteArray::vftable;
|
|
local_2c18 = &local_2c00;
|
|
uVar13 = FUN_140198f80(&local_2bd8,0x12,0,&local_2c08);
|
|
(**(code **)(*param_1 + 0x80))(param_1,uVar13);
|
|
FUN_14019a9e0(&local_2c00);
|
|
puVar12 = local_2c08;
|
|
if (((local_2c08 != (uint *)0x0) && (local_2c08 != (uint *)PTR_DAT_1403440a0)) &&
|
|
(puVar16 = local_2c08 + -2, puVar16 != (uint *)0x0)) {
|
|
uVar13 = FUN_14016d8c0();
|
|
local_2b30 = uVar13;
|
|
FUN_14016db50(uVar13);
|
|
local_2b28 = CONCAT31(local_2b28._1_3_,1);
|
|
puVar12 = puVar12 + -1;
|
|
*puVar12 = *puVar12 - 1;
|
|
if (*puVar12 == 0) {
|
|
FUN_14016d970(puVar16);
|
|
}
|
|
FUN_14016dbe0(uVar13);
|
|
}
|
|
FUN_14016dbe0(local_2b20);
|
|
return 0;
|
|
}
|
|
|