/* 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::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; }