/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14005cf50 FUN_14005cf50 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Removing unreachable block (ram,0x00014005dbd1) */ /* WARNING: Removing unreachable block (ram,0x00014005dbe4) */ /* WARNING: Removing unreachable block (ram,0x00014005dc02) */ /* WARNING: Removing unreachable block (ram,0x00014005e85d) */ undefined8 FUN_14005cf50(longlong param_1,uint param_2,undefined8 param_3,undefined8 *param_4, undefined4 param_5) { uint *puVar1; undefined *puVar2; int *piVar3; undefined4 uVar4; undefined4 uVar5; void *pvVar6; undefined **ppuVar7; LPVOID pvVar8; bool bVar9; bool bVar10; bool bVar11; bool bVar12; bool bVar13; bool bVar14; bool bVar15; bool bVar16; bool bVar17; bool bVar18; bool bVar19; bool bVar20; bool bVar21; bool bVar22; bool bVar23; bool bVar24; bool bVar25; undefined4 uVar26; undefined2 uVar27; undefined ***pppuVar28; short *psVar29; undefined *puVar30; int iVar31; uint uVar32; uint uVar33; ulonglong uVar34; ulonglong uVar35; undefined8 uVar36; uint *puVar37; longlong *plVar38; undefined8 *puVar39; undefined4 *puVar40; TypeDescriptor *pTVar41; int *piVar42; ulonglong uVar43; TypeDescriptor *pTVar44; undefined ***pppuVar45; short **ppsVar46; longlong lVar47; uint **ppuVar48; ulonglong uVar49; void **ppvVar50; TypeDescriptor *pTVar51; TypeDescriptor *pTVar52; undefined ***pppuVar53; uint uVar54; undefined ***pppuVar55; ulonglong uVar56; SIZE_T SVar57; uint *puVar58; undefined *puVar59; short *psVar60; TypeDescriptor *pTVar61; undefined ***pppuVar62; int *piVar63; undefined1 auStack_708 [32]; uint local_68c; uint *local_688; TypeDescriptor local_680; undefined4 local_670; longlong local_668; undefined ***local_660; undefined ***local_658; undefined ***local_650; undefined8 *local_648; TypeDescriptor *local_640; undefined4 local_638; uint *local_630; undefined4 local_628; TypeDescriptor *local_620; undefined4 local_618; undefined4 local_614; TypeDescriptor *local_610; undefined ***local_608; uint *local_5f8; short *local_5f0; undefined4 local_5e8; undefined ***local_5e0; undefined8 *local_5d8; undefined4 local_5d0; undefined *local_5c8; undefined4 *local_5c0; longlong local_5b8; TypeDescriptor *local_5b0; undefined **local_5a8; undefined8 local_5a0; TypeDescriptor *local_598; undefined8 local_590; undefined4 local_588; undefined4 local_584; undefined **local_580; undefined8 local_578; TypeDescriptor *local_570; undefined8 local_568; undefined4 local_560; undefined4 local_55c; undefined **local_558; undefined8 local_550; TypeDescriptor *local_548; undefined8 local_540; undefined4 local_538; undefined4 local_534; undefined **local_530; undefined8 local_528; TypeDescriptor *local_520; undefined8 local_518; undefined4 local_510; undefined4 local_50c; int *local_508; undefined1 local_500; TypeDescriptor *local_4f8; void **local_4f0; int *local_4e8; undefined8 *local_4e0; undefined **local_4d8; undefined8 local_4d0; undefined8 local_4c8; undefined8 local_4c0; undefined8 local_4b8; undefined **local_4b0; undefined8 local_4a8; undefined8 local_4a0; undefined8 local_498; undefined8 local_490; undefined **local_488; undefined8 local_480; undefined8 local_478; undefined8 local_470; undefined8 local_468; undefined **local_460; undefined8 local_458; undefined8 local_450; undefined8 local_448; undefined8 local_440; undefined **local_438; undefined8 local_430; undefined8 local_428; undefined8 local_420; undefined8 local_418; undefined **local_410; undefined8 local_408; undefined8 local_400; undefined8 local_3f8; undefined8 local_3f0; undefined ***local_3e8; undefined1 local_3e0; int *local_3d8; undefined1 local_3d0; undefined4 local_3b8; undefined **local_3b0; undefined4 local_3a8; undefined2 local_3a4; undefined **local_3a0; undefined4 local_398; undefined2 local_394; undefined1 local_390; undefined4 local_388; undefined **local_380; undefined4 local_378; undefined2 local_374; undefined **local_370; undefined4 local_368; undefined2 local_364; undefined1 local_360; undefined4 local_358; undefined **local_350; undefined4 local_348; undefined2 local_344; undefined **local_340; undefined4 local_338; undefined2 local_334; undefined1 local_330; undefined8 local_320; undefined8 local_318 [2]; undefined8 local_308 [36]; undefined4 local_1e8; undefined4 local_1e4; undefined4 local_1e0; undefined4 local_1dc; undefined4 local_1d8; undefined4 local_1d4; undefined4 local_1d0; undefined4 local_1cc; undefined4 local_1c8; undefined4 local_1c4; undefined4 local_1c0; undefined4 local_1bc; undefined4 local_1b8; undefined4 local_1b4; undefined4 local_1b0; undefined4 local_1ac; uint local_1a8; uint local_1a4; undefined4 local_1a0; int *local_198; uint local_190; undefined4 local_18c; undefined4 local_188; int *local_180; undefined4 local_178 [72]; ulonglong local_58; local_320 = 0xfffffffffffffffe; local_58 = DAT_1401555a0 ^ (ulonglong)auStack_708; local_680.spare._0_4_ = (uint)param_3; pTVar51 = (TypeDescriptor *)0x0; bVar24 = false; bVar22 = false; bVar20 = false; bVar19 = false; bVar17 = false; bVar15 = false; bVar13 = false; ppuVar48 = &local_688; puVar39 = param_4; local_68c = param_2; local_668 = param_1; local_648 = param_4; local_5b8 = param_1; local_4e0 = param_4; FUN_140057180(param_1,(longlong *)ppuVar48,(uint)local_680.spare); if ((local_688 == (uint *)0x0) || (*(longlong *)local_688 == 0)) { if ((local_688 != (uint *)0x0) && (*(longlong *)(local_688 + 2) = *(longlong *)(local_688 + 2) + -1, *(longlong *)(local_688 + 2) == 0)) { pvVar8 = *(LPVOID *)local_688; if (pvVar8 != (LPVOID)0x0) { FUN_1400443d0((longlong)pvVar8,ppuVar48,param_3,puVar39); FUN_1400302f0(pvVar8); } FUN_1400302f0(local_688); } LAB_14005ec1b: uVar43 = FUN_14003b870(param_4); return uVar43 & 0xffffffffffffff00; } local_670 = param_5; uVar33 = *(uint *)(*(longlong *)local_688 + 0x30); uVar56 = (ulonglong)local_68c; uVar43 = uVar56 % (ulonglong)uVar33; lVar47 = *(longlong *)(*(longlong *)local_688 + 0x10); if (lVar47 != 0) { for (puVar37 = *(uint **)(lVar47 + uVar43 * 8); (puVar37 != (uint *)0x0 && ((uint)uVar43 == puVar37[10] % uVar33)); puVar37 = *(uint **)(puVar37 + 6)) { if (*puVar37 == local_68c) { uVar36 = 0x11; uVar43 = (ulonglong)(uint)local_680.spare; FUN_14005bc30(param_1,uVar43,uVar56,0x11); if ((local_688 != (uint *)0x0) && (*(longlong *)(local_688 + 2) = *(longlong *)(local_688 + 2) + -1, *(longlong *)(local_688 + 2) == 0)) { pvVar8 = *(LPVOID *)local_688; if (pvVar8 != (LPVOID)0x0) { FUN_1400443d0((longlong)pvVar8,uVar43,uVar56,uVar36); FUN_1400302f0(pvVar8); } FUN_1400302f0(local_688); } uVar36 = FUN_14003b870(param_4); return CONCAT71((int7)((ulonglong)uVar36 >> 8),1); } } } if ((*(char *)(param_1 + 0x24c) == '\0') || (local_68c != 1)) { uVar49 = (ulonglong)local_68c; puVar37 = local_688; uVar34 = FUN_140041ab0(param_1,local_68c); if ((uVar34 == 0) || ((pppuVar53 = (undefined ***)(uVar34 + 0x40), local_658 = pppuVar53, pppuVar53 == (undefined ***)0x0 || (uVar35 = FUN_140043a10(param_1,uVar34), uVar49 = uVar34, (char)uVar35 != '\0')))) { *(longlong *)(puVar37 + 2) = *(longlong *)(puVar37 + 2) + -1; if (*(longlong *)(local_688 + 2) == 0) { pvVar8 = *(LPVOID *)local_688; if (pvVar8 != (LPVOID)0x0) { FUN_1400443d0((longlong)pvVar8,uVar49,uVar56,uVar43); FUN_1400302f0(pvVar8); } FUN_1400302f0(local_688); } goto LAB_14005ec1b; } } else { pppuVar53 = (undefined ***)(param_1 + 0xb8); local_658 = pppuVar53; } piVar63 = (int *)FUN_14003a420((char *)(param_1 + 0x760)); uVar33 = local_68c; bVar9 = false; pTVar61 = pTVar51; if (local_688 != (uint *)0x0) { pTVar61 = *(TypeDescriptor **)local_688; } ppvVar50 = &pTVar61->spare; uVar32 = *(uint *)&pTVar61[3].pVFTable; uVar43 = (ulonglong)local_68c % (ulonglong)uVar32; pvVar6 = pTVar61[1].pVFTable; uVar54 = (uint)uVar43; local_508 = piVar63; local_4e8 = piVar63; if (pvVar6 != (void *)0x0) { for (puVar37 = *(uint **)((longlong)pvVar6 + uVar43 * 8); (puVar37 != (uint *)0x0 && (uVar54 == puVar37[10] % uVar32)); puVar37 = *(uint **)(puVar37 + 6)) { if (*puVar37 == local_68c) goto LAB_14005d233; } if (pvVar6 != (void *)0x0) { for (puVar37 = *(uint **)((longlong)pvVar6 + uVar43 * 8); (puVar37 != (uint *)0x0 && (uVar54 == puVar37[10] % uVar32)); puVar37 = *(uint **)(puVar37 + 6)) { if (*puVar37 == local_68c) goto LAB_14005d21b; } } } if ((pvVar6 == (void *)0x0) && (uVar36 = FUN_14003f710((longlong)ppvVar50,uVar32,'\x01'), (char)uVar36 == '\0')) { /* WARNING: Subroutine does not return */ FUN_14000b450(0x8007000e); } FUN_140097020((char *)ppvVar50); puVar37 = FUN_140041270((char *)ppvVar50,&local_68c,uVar54,uVar33); FUN_140097020((char *)ppvVar50); LAB_14005d21b: *(int **)(puVar37 + 2) = local_508; *(undefined ****)(puVar37 + 4) = pppuVar53; LAB_14005d233: local_630 = (uint *)0x0; if (local_688 != (uint *)0x0) { *(longlong *)(local_688 + 2) = *(longlong *)(local_688 + 2) + 1; local_630 = local_688; } uVar33 = *(uint *)(pppuVar53 + 6); pTVar61 = (TypeDescriptor *)(ulonglong)uVar33; uVar43 = (ulonglong)(uint)local_680.spare % (ulonglong)pTVar61; ppuVar7 = pppuVar53[2]; uVar32 = (uint)uVar43; if (ppuVar7 != (undefined **)0x0) { for (puVar37 = (uint *)ppuVar7[uVar43]; (puVar37 != (uint *)0x0 && (uVar32 == puVar37[8] % uVar33)); puVar37 = *(uint **)(puVar37 + 4)) { if (*puVar37 == (uint)local_680.spare) goto LAB_14005d3b4; } if (ppuVar7 != (undefined **)0x0) { puVar37 = (uint *)ppuVar7[uVar43]; while ((puVar37 != (uint *)0x0 && (ppvVar50 = (void **)((ulonglong)puVar37[8] % (ulonglong)pTVar61), uVar32 == (uint)ppvVar50))) { if (*puVar37 == (uint)local_680.spare) goto LAB_14005d32e; puVar37 = *(uint **)(puVar37 + 4); } if (ppuVar7 != (undefined **)0x0) goto LAB_14005d2f5; } } uVar36 = FUN_14003f710((longlong)(pppuVar53 + 1),uVar33,'\x01'); if ((char)uVar36 == '\0') { /* WARNING: Subroutine does not return */ FUN_14000b450(0x8007000e); } LAB_14005d2f5: FUN_14003d560((char *)(pppuVar53 + 1)); pTVar61 = (TypeDescriptor *)(ulonglong)(uint)local_680.spare; ppvVar50 = &local_680.spare; puVar37 = FUN_140058870((char *)(pppuVar53 + 1),(undefined4 *)ppvVar50,uVar32, (uint)local_680.spare); FUN_14003d560((char *)(pppuVar53 + 1)); LAB_14005d32e: if (local_630 != *(uint **)(puVar37 + 2)) { if (local_630 != (uint *)0x0) { *(longlong *)(local_630 + 2) = *(longlong *)(local_630 + 2) + 1; } pTVar52 = pTVar51; if ((*(longlong *)(puVar37 + 2) != 0) && (*(longlong *)(*(longlong *)(puVar37 + 2) + 8) = *(longlong *)(*(longlong *)(puVar37 + 2) + 8) + -1, *(longlong *)(*(longlong *)(puVar37 + 2) + 8) == 0)) { pTVar52 = *(TypeDescriptor **)(puVar37 + 2); } *(uint **)(puVar37 + 2) = local_630; if (pTVar52 != (TypeDescriptor *)0x0) { pvVar8 = pTVar52->pVFTable; if (pvVar8 != (LPVOID)0x0) { FUN_1400443d0((longlong)pvVar8,ppvVar50,local_688,pTVar61); FUN_1400302f0(pvVar8); } FUN_1400302f0(pTVar52); } } LAB_14005d3b4: bVar25 = false; bVar23 = false; bVar21 = false; bVar18 = false; bVar16 = false; bVar14 = false; bVar12 = false; pTVar52 = pTVar51; if (local_688 != (uint *)0x0) { pTVar52 = *(TypeDescriptor **)local_688; } local_5b0 = (TypeDescriptor *)&pTVar52->spare; local_4f8 = pTVar51; local_4f0 = (void **)local_5b0; if (pTVar52[2].spare != (void *)0x0) { local_4f8 = pTVar52[1].spare; } do { pTVar52 = pTVar51; if (local_688 != (uint *)0x0) { pTVar52 = *(TypeDescriptor **)local_688; } local_620 = local_4f8; if ((local_4f8 == (TypeDescriptor *)0x0) && (local_5b0 == (TypeDescriptor *)&pTVar52->spare)) { if (local_688 != (uint *)0x0) { pTVar51 = *(TypeDescriptor **)local_688; } puVar37 = local_688; FUN_14004c590(param_1,(uint *)pTVar51,(longlong)local_688,pTVar61); if (!bVar9) { pTVar61 = (TypeDescriptor *)0x0; puVar37 = (uint *)0x1; pTVar51 = (TypeDescriptor *)(ulonglong)(uint)local_680.spare; FUN_14005bc30(param_1,pTVar51,1,0); } puVar58 = local_630; if (local_630 != (uint *)0x0) { puVar1 = local_630 + 2; *(longlong *)puVar1 = *(longlong *)puVar1 + -1; if (*(longlong *)puVar1 == 0) { pvVar8 = *(LPVOID *)local_630; if (pvVar8 != (LPVOID)0x0) { FUN_1400443d0((longlong)pvVar8,pTVar51,puVar37,pTVar61); FUN_1400302f0(pvVar8); } FUN_1400302f0(puVar58); } } if ((local_688 != (uint *)0x0) && (*(longlong *)(local_688 + 2) = *(longlong *)(local_688 + 2) + -1, *(longlong *)(local_688 + 2) == 0)) { pvVar8 = *(LPVOID *)local_688; if (pvVar8 != (LPVOID)0x0) { FUN_1400443d0((longlong)pvVar8,pTVar51,puVar37,pTVar61); FUN_1400302f0(pvVar8); } FUN_1400302f0(local_688); } uVar36 = FUN_14003b870(local_648); return CONCAT71((int7)((ulonglong)uVar36 >> 8),1); } if (local_4f8 == (TypeDescriptor *)0x0) { /* WARNING: Subroutine does not return */ FUN_14000b450(0x80004005); } pppuVar53 = local_4f8[1].pVFTable; pTVar52 = local_5b0; puVar37 = local_688; local_660 = pppuVar53; if (pppuVar53 != (undefined ***)(param_1 + 0xb8)) { local_190 = local_68c; local_18c = (*(code *)**pppuVar53)(pppuVar53); local_188 = local_670; pTVar44 = pTVar51; if (local_688 != (uint *)0x0) { pTVar44 = *(TypeDescriptor **)local_688; } pTVar61 = (TypeDescriptor *)0x1; puVar37 = &local_190; pTVar52 = (TypeDescriptor *)(ulonglong)*(uint *)&pTVar44[0xe].pVFTable; local_180 = piVar63; FUN_14003f130((longlong)&pTVar44[0xc].spare,*(uint *)&pTVar44[0xe].pVFTable,(longlong)puVar37, 1); bVar9 = true; } if ((local_658 != (undefined ***)(param_1 + 0xb8)) && (local_658 != pppuVar53)) { local_1a8 = (*(code *)**pppuVar53)(pppuVar53); local_1a4 = local_68c; local_1a0 = local_670; pTVar44 = pTVar51; if (local_688 != (uint *)0x0) { pTVar44 = *(TypeDescriptor **)local_688; } pTVar61 = (TypeDescriptor *)0x1; puVar37 = &local_1a8; pTVar52 = (TypeDescriptor *)(ulonglong)*(uint *)&pTVar44[0xe].pVFTable; local_198 = piVar63; FUN_14003f130((longlong)&pTVar44[0xc].spare,*(uint *)&pTVar44[0xe].pVFTable,(longlong)puVar37, 1); bVar9 = true; } bVar11 = false; local_680.pVFTable = (TypeDescriptor *)0x0; pppuVar45 = pppuVar53; iVar31 = (*(code *)**pppuVar53)(); pTVar44 = pTVar51; bVar10 = false; if ((iVar31 != 1) && (pppuVar45 = local_658, iVar31 = (*(code *)**local_658)(), pppuVar28 = local_658, iVar31 != 1 )) { pppuVar62 = local_658 + -8; pppuVar55 = (undefined ***)(local_668 + 0x2d8); pTVar61 = (TypeDescriptor *)(ulonglong)*(uint *)(local_658 + 0xd7); puVar37 = (uint *)(ulonglong)*(uint *)(pppuVar53 + 0xd7); pppuVar45 = pppuVar55; local_650 = pppuVar53 + -8; local_608 = pppuVar62; plVar38 = FUN_14004ffa0((longlong)pppuVar55,(longlong *)&local_5e0,*(uint *)(pppuVar53 + 0xd7) ,*(uint *)(local_658 + 0xd7)); pTVar52 = (TypeDescriptor *)0x0; if (*plVar38 != 0) { pTVar52 = (TypeDescriptor *)(*(longlong *)(*plVar38 + 8) + 1); pppuVar45 = (undefined ***)*plVar38; pppuVar45[1] = (undefined **)pTVar52; pTVar44 = (TypeDescriptor *)*plVar38; local_680.pVFTable = pTVar44; bVar12 = bVar13; bVar14 = bVar15; bVar16 = bVar17; bVar18 = bVar19; bVar21 = bVar20; bVar23 = bVar22; bVar25 = bVar24; } if (local_5e0 != (undefined ***)0x0) { local_5e0[1] = (undefined **)((longlong)local_5e0[1] + -1); pppuVar45 = (undefined ***)local_5e0[1]; pTVar44 = local_680.pVFTable; bVar12 = bVar13; bVar14 = bVar15; bVar16 = bVar17; bVar18 = bVar19; bVar21 = bVar20; bVar23 = bVar22; bVar25 = bVar24; if (pppuVar45 == (undefined ***)0x0) { pppuVar45 = local_5e0; FUN_140041080(local_5e0); pTVar44 = local_680.pVFTable; } } if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) { uVar43 = (ulonglong)*(uint *)(pppuVar28 + 0xd7); SVar57 = (SIZE_T)*(uint *)(pppuVar53 + 0xd7); plVar38 = FUN_140054f40((longlong)pppuVar55,(longlong *)&local_5d8, *(uint *)(pppuVar53 + 0xd7),*(uint *)(pppuVar28 + 0xd7),'\x01'); pTVar61 = (TypeDescriptor *)*plVar38; if (pTVar61 != pTVar44) { if (pTVar61 != (TypeDescriptor *)0x0) { *(longlong *)(*plVar38 + 8) = (longlong)pTVar61->spare + 1; pTVar44 = local_680.pVFTable; bVar12 = bVar13; bVar14 = bVar15; bVar16 = bVar17; bVar18 = bVar19; bVar21 = bVar20; bVar23 = bVar22; bVar25 = bVar24; } pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { ppvVar50 = &pTVar44->spare; *ppvVar50 = (void *)((longlong)*ppvVar50 + -1); bVar12 = bVar13; bVar14 = bVar15; bVar16 = bVar17; bVar18 = bVar19; bVar21 = bVar20; bVar23 = bVar22; bVar25 = bVar24; if (*ppvVar50 == (void *)0x0) { pTVar61 = local_680.pVFTable; } } pTVar44 = (TypeDescriptor *)*plVar38; local_680.pVFTable = pTVar44; if (pTVar61 != (TypeDescriptor *)0x0) { FUN_140041080(&pTVar61->pVFTable); } } if ((local_5d8 != (undefined8 *)0x0) && (local_5d8[1] = local_5d8[1] + -1, pTVar44 = local_680.pVFTable, bVar12 = bVar13, bVar14 = bVar15, bVar16 = bVar17, bVar18 = bVar19, bVar21 = bVar20, bVar23 = bVar22, bVar25 = bVar24, local_5d8[1] == 0)) { FUN_140041080(local_5d8); pTVar44 = local_680.pVFTable; } if (((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) || (DAT_1401550e0 < (double)piVar63 - *(double *)((longlong)pTVar44->pVFTable + 400))) { puVar39 = operator_new(0x1b0); if (puVar39 == (undefined8 *)0x0) { LAB_14005d85c: local_610 = (TypeDescriptor *)0x0; } else { SVar57 = CONCAT71((int7)(SVar57 >> 8), *(int *)(pppuVar53 + 0xd7) == *(int *)(pppuVar28 + 0xd7)); puVar39 = FUN_14003fdd0(puVar39,local_668, *(int *)(pppuVar53 + 0xd7) == *(int *)(pppuVar28 + 0xd7)); if (puVar39 == (undefined8 *)0x0) goto LAB_14005d85c; local_610 = (TypeDescriptor *)FUN_140030280(0x10); local_610->spare = (void *)0x1; local_610->pVFTable = puVar39; } pTVar61 = local_610; if (local_610 != pTVar44) { if (local_610 != (TypeDescriptor *)0x0) { local_610->spare = (void *)((longlong)local_610->spare + 1); pTVar44 = local_680.pVFTable; bVar12 = bVar13; bVar14 = bVar15; bVar16 = bVar17; bVar18 = bVar19; bVar21 = bVar20; bVar23 = bVar22; bVar25 = bVar24; } pTVar52 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { ppvVar50 = &pTVar44->spare; *ppvVar50 = (void *)((longlong)*ppvVar50 + -1); bVar12 = bVar13; bVar14 = bVar15; bVar16 = bVar17; bVar18 = bVar19; bVar21 = bVar20; bVar23 = bVar22; bVar25 = bVar24; if (*ppvVar50 == (void *)0x0) { pTVar52 = local_680.pVFTable; } } pTVar44 = pTVar61; local_680.pVFTable = local_610; if (pTVar52 != (TypeDescriptor *)0x0) { FUN_140041080(&pTVar52->pVFTable); } } if (pTVar61 != (TypeDescriptor *)0x0) { ppvVar50 = &pTVar61->spare; *ppvVar50 = (void *)((longlong)*ppvVar50 + -1); pTVar44 = local_680.pVFTable; bVar12 = bVar13; bVar14 = bVar15; bVar16 = bVar17; bVar18 = bVar19; bVar21 = bVar20; bVar23 = bVar22; bVar25 = bVar24; if (*ppvVar50 == (void *)0x0) { FUN_140041080(&local_610->pVFTable); pTVar44 = local_680.pVFTable; } } lVar47 = local_668; uVar27 = DAT_1401553d4; uVar26 = DAT_1401553d0; pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar61 = pTVar44->pVFTable; } if (*(char *)&pTVar61->spare != '\x01') { *(undefined4 *)&pTVar61[1].pVFTable = 0; *(undefined4 *)&pTVar61[2].pVFTable = uVar26; *(undefined2 *)((longlong)&pTVar61[2].pVFTable + 4) = uVar27; *(undefined4 *)&pTVar61[3].pVFTable = uVar26; *(undefined2 *)((longlong)&pTVar61[3].pVFTable + 4) = uVar27; *(undefined1 *)&pTVar61[3].spare = 0; uVar27 = DAT_1401553d4; uVar26 = DAT_1401553d0; local_350 = Proud::AddrPort::vftable; local_340 = Proud::AddrPort::vftable; local_358 = 0; local_330 = 0; local_348 = DAT_1401553d0; local_344 = DAT_1401553d4; local_338 = DAT_1401553d0; local_334 = DAT_1401553d4; *(undefined4 *)&pTVar61[4].pVFTable = 0; *(undefined4 *)&pTVar61[5].pVFTable = uVar26; *(undefined2 *)((longlong)&pTVar61[5].pVFTable + 4) = uVar27; *(undefined4 *)&pTVar61[6].pVFTable = uVar26; *(undefined2 *)((longlong)&pTVar61[6].pVFTable + 4) = uVar27; *(undefined1 *)&pTVar61[6].spare = 0; *(undefined1 *)&pTVar61->spare = 1; } if (*(char *)(local_668 + 0x24d) == '\0') { local_4a8 = 0; local_4a0 = 0; local_498 = 0; local_490 = 0; local_4b0 = Proud::ByteArray::vftable; pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar61 = pTVar44->pVFTable; } FUN_14003bf90((longlong)(pTVar61 + 0x12),(longlong)&local_4b0,SVar57); FUN_14003b870(&local_4b0); local_480 = 0; local_478 = 0; local_470 = 0; local_468 = 0; local_488 = Proud::ByteArray::vftable; pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar61 = pTVar44->pVFTable; } FUN_14003bf90((longlong)&pTVar61[0x14].spare,(longlong)&local_488,SVar57); FUN_14003b870(&local_488); } else { pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar61 = pTVar44->pVFTable; } FUN_1400a0f70((longlong)(pTVar61 + 0x12),*(int *)(local_668 + 0x244),SVar57,uVar43); pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar61 = pTVar44->pVFTable; } FUN_1400a0f70((longlong)&pTVar61[0x14].spare,*(int *)(lVar47 + 0x248),SVar57,uVar43); } pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar61 = pTVar44->pVFTable; } iVar31 = FUN_1400a2960(lVar47 + 0xcd0); *(int *)&pTVar61[0x17].pVFTable = iVar31; pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar61 = pTVar44->pVFTable; } puVar40 = FUN_14003a2a0(lVar47 + 0xcd0,local_178); *(undefined4 *)((longlong)&pTVar61[0x17].pVFTable + 4) = *puVar40; *(undefined4 *)&pTVar61[0x17].spare = puVar40[1]; *(undefined4 *)((longlong)&pTVar61[0x17].spare + 4) = puVar40[2]; *(undefined4 *)&pTVar61[0x18].pVFTable = puVar40[3]; bVar10 = false; pppuVar55 = local_660; } else { bVar10 = true; bVar11 = true; pppuVar55 = pppuVar53; } pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar61 = pTVar44->pVFTable; } *(undefined4 *)((longlong)&pTVar61[0x11].pVFTable + 4) = 1; local_640 = (TypeDescriptor *)0x0; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar44->spare = (void *)((longlong)pTVar44->spare + 1); local_640 = local_680.pVFTable; bVar12 = bVar13; bVar14 = bVar15; bVar16 = bVar17; bVar18 = bVar19; bVar21 = bVar20; bVar23 = bVar22; bVar25 = bVar24; } pTVar44 = local_640; FUN_140056900((char *)(local_668 + 0x2d8),(longlong)(pppuVar53 + -8),(longlong)pppuVar62, (longlong *)&local_640); uVar27 = DAT_1401553d4; uVar26 = DAT_1401553d0; pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar61 = pTVar44->pVFTable; } uVar4 = *(undefined4 *)(pppuVar28 + 0xd7); uVar5 = *(undefined4 *)(pppuVar53 + 0xd7); local_380 = Proud::AddrPort::vftable; local_370 = Proud::AddrPort::vftable; local_388 = 0; local_360 = 0; local_378 = DAT_1401553d0; local_374 = DAT_1401553d4; local_368 = DAT_1401553d0; local_364 = DAT_1401553d4; *(undefined4 *)&pTVar61[2].pVFTable = DAT_1401553d0; *(undefined2 *)((longlong)&pTVar61[2].pVFTable + 4) = uVar27; *(undefined4 *)&pTVar61[3].pVFTable = uVar26; *(undefined2 *)((longlong)&pTVar61[3].pVFTable + 4) = uVar27; *(undefined1 *)&pTVar61[3].spare = 0; *(undefined1 *)&pTVar61[3].spare = 0; *(undefined4 *)&pTVar61[1].pVFTable = uVar5; uVar27 = DAT_1401553d4; uVar26 = DAT_1401553d0; local_3b0 = Proud::AddrPort::vftable; local_3a0 = Proud::AddrPort::vftable; local_3b8 = 0; local_390 = 0; local_3a8 = DAT_1401553d0; local_3a4 = DAT_1401553d4; local_398 = DAT_1401553d0; local_394 = DAT_1401553d4; *(undefined4 *)&pTVar61[5].pVFTable = DAT_1401553d0; *(undefined2 *)((longlong)&pTVar61[5].pVFTable + 4) = uVar27; *(undefined4 *)&pTVar61[6].pVFTable = uVar26; *(undefined2 *)((longlong)&pTVar61[6].pVFTable + 4) = uVar27; *(undefined1 *)&pTVar61[6].spare = 0; *(undefined1 *)&pTVar61[6].spare = 0; *(undefined4 *)&pTVar61[4].pVFTable = uVar4; *(undefined1 *)&pTVar61[0x1a].pVFTable = 1; pTVar61 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar61 = pTVar44->pVFTable; } uVar43 = ((ulonglong)pTVar61 & 0xffffffff) % (ulonglong)*(uint *)(pppuVar53 + 0xd1); if (pppuVar53[0xcd] != (undefined **)0x0) { for (puVar39 = (undefined8 *)pppuVar53[0xcd][uVar43]; (puVar39 != (undefined8 *)0x0 && ((uint)uVar43 == *(uint *)(puVar39 + 4) % *(uint *)(pppuVar53 + 0xd1))); puVar39 = (undefined8 *)puVar39[2]) { pTVar61 = pTVar51; if ((undefined8 *)*puVar39 != (undefined8 *)0x0) { pTVar61 = *(TypeDescriptor **)*puVar39; } pTVar52 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar52 = pTVar44->pVFTable; } if (pTVar61 == pTVar52) goto LAB_14005ddb2; } } plVar38 = FUN_140055170((char *)(pppuVar53 + 0xcc),(longlong *)&local_680); *(undefined1 *)plVar38 = 0; LAB_14005ddb2: pTVar52 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar52 = pTVar44->pVFTable; } pTVar61 = (TypeDescriptor *)(ulonglong)*(uint *)(pppuVar28 + 0xd1); puVar37 = (uint *)(((ulonglong)pTVar52 & 0xffffffff) % (ulonglong)pTVar61); if (pppuVar28[0xcd] != (undefined **)0x0) { for (pppuVar45 = (undefined ***)pppuVar28[0xcd][(longlong)puVar37]; (pppuVar45 != (undefined ***)0x0 && ((uint)puVar37 == *(uint *)(pppuVar45 + 4) % *(uint *)(pppuVar28 + 0xd1))); pppuVar45 = (undefined ***)pppuVar45[2]) { pTVar52 = pTVar51; if (*pppuVar45 != (undefined **)0x0) { pTVar52 = (TypeDescriptor *)**pppuVar45; } pTVar41 = pTVar51; if (pTVar44 != (TypeDescriptor *)0x0) { pTVar41 = pTVar44->pVFTable; } if (pTVar52 == pTVar41) goto LAB_14005de32; } } pTVar52 = &local_680; pppuVar45 = pppuVar28 + 0xcc; plVar38 = FUN_140055170((char *)pppuVar45,(longlong *)pTVar52); *(undefined1 *)plVar38 = 0; LAB_14005de32: param_1 = local_668; pppuVar53 = pppuVar55; if (*(longlong *)(local_668 + 0x17f0) != 0) { FUN_140030200(pppuVar45,pTVar52,puVar37,pTVar61); local_5f8 = (uint *)PTR_DAT_140155010; uVar33 = (*(code *)**local_658)(); uVar32 = (*(code *)**pppuVar55)(pppuVar55); pTVar61 = (TypeDescriptor *)(ulonglong)uVar33; FUN_14001b7a0((longlong *)&local_5f8,L"%d와 %d간의 P2P 쌍 준비",(ulonglong)uVar32, pTVar61); puVar58 = local_5f8; puVar37 = local_5f8; if (local_5f8 == (uint *)0x0) { puVar37 = (uint *)PTR_DAT_140155010; } pTVar52 = (TypeDescriptor *)0x1; pppuVar45 = *(undefined ****)(param_1 + 0x17f0); FUN_14008f2e0((longlong)pppuVar45,1,(short *)puVar37,pTVar61); if (((puVar58 != (uint *)0x0) && (puVar58 != (uint *)PTR_DAT_140155010)) && (puVar58 + -2 != (uint *)0x0)) { pppuVar45 = (undefined ***)FUN_140030200(pppuVar45,pTVar52,puVar37,pTVar61); local_3e8 = pppuVar45; FUN_14002e6e0((int *)pppuVar45); local_3e0 = 1; puVar1 = puVar58 + -1; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_1400302f0(puVar58 + -2); } FUN_14002e770((longlong)pppuVar45); local_3e0 = 0; pppuVar53 = local_660; } local_5f8 = (uint *)PTR_DAT_140155010; bVar10 = bVar11; } } else { piVar3 = (int *)((longlong)pTVar44->pVFTable + 0x114); *piVar3 = *piVar3 + 1; param_1 = local_668; bVar10 = bVar11; } } if (pppuVar53 != (undefined ***)(param_1 + 0xb8)) { if (((bVar10) && (pTVar44 != (TypeDescriptor *)0x0)) && (pTVar44->pVFTable != (void *)0x0)) { pvVar6 = pTVar44->pVFTable; uVar33 = (*(code *)**pppuVar53)(pppuVar53); puVar37 = (uint *)(ulonglong)uVar33; FUN_14003cbb0((longlong)pvVar6,local_318,uVar33); } if (*(char *)(param_1 + 0x24d) == '\0') { if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) { local_1c8 = 0; local_1c4 = 0; local_1c0 = 0; local_1bc = 0; local_650 = (undefined ***)&local_1c8; } else { local_650 = (undefined ***)((longlong)pTVar44->pVFTable + 0x174); } if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) { local_618 = 0; } else { local_618 = *(undefined4 *)((longlong)pTVar44->pVFTable + 0x170); } pTVar61 = pTVar51; if (local_688 != (uint *)0x0) { pTVar61 = *(TypeDescriptor **)local_688; } pppuVar45 = (undefined ***)(param_1 + 0x4a8); ppuVar7 = *pppuVar45; uVar33 = (*(code *)**local_660)(); pTVar52 = (TypeDescriptor *)(ulonglong)uVar33; puVar37 = (uint *)&DAT_14015de10; (*(code *)ppuVar7[8])(); pppuVar53 = local_660; param_1 = local_668; } else { if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) { local_1d8 = 0; local_1d4 = 0; local_1d0 = 0; local_1cc = 0; local_5c0 = &local_1d8; } else { local_5c0 = (undefined4 *)((longlong)pTVar44->pVFTable + 0x174); } if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) { local_638 = 0; } else { local_638 = *(undefined4 *)((longlong)pTVar44->pVFTable + 0x170); } if ((pTVar44 == (TypeDescriptor *)0x0) || (pvVar6 = pTVar44->pVFTable, pvVar6 == (void *)0x0)) { local_408 = 0; local_400 = 0; local_3f8 = 0; local_3f0 = 0; local_410 = Proud::ByteArray::vftable; local_608 = &local_410; bVar18 = true; } else { local_530 = Proud::CFastArray::vftable; puVar58 = puVar37; if (DAT_1401558a0 != 5) { FUN_14003b760(); puVar58 = puVar37; } local_528 = *(undefined8 *)((longlong)pvVar6 + 0x150); local_50c = *(undefined4 *)((longlong)pvVar6 + 0x16c); local_520 = (TypeDescriptor *)0x0; local_518 = 0; local_510 = 0; iVar31 = *(int *)((longlong)pvVar6 + 0x160); puVar37 = (uint *)(longlong)iVar31; if (iVar31 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } FUN_14001bc70((longlong)&local_530,iVar31,(SIZE_T)puVar58); pTVar61 = pTVar51; if (*(int *)((longlong)pvVar6 + 0x160) != 0) { pTVar61 = *(TypeDescriptor **)((longlong)pvVar6 + 0x158); } pTVar52 = local_520; if ((int)local_518 == 0) { pTVar52 = pTVar51; } FUN_14001bd30(&pTVar52->pVFTable,&pTVar61->pVFTable,(size_t)puVar37); local_530 = Proud::ByteArray::vftable; local_608 = &local_530; bVar12 = true; } if ((pTVar44 == (TypeDescriptor *)0x0) || (pvVar6 = pTVar44->pVFTable, pvVar6 == (void *)0x0)) { local_458 = 0; local_450 = 0; local_448 = 0; local_440 = 0; local_460 = Proud::ByteArray::vftable; local_650 = &local_460; bVar14 = true; } else { local_580 = Proud::CFastArray::vftable; if (DAT_1401558a0 != 5) { FUN_14003b760(); } local_578 = *(undefined8 *)((longlong)pvVar6 + 0x128); local_55c = *(undefined4 *)((longlong)pvVar6 + 0x144); local_570 = (TypeDescriptor *)0x0; local_568 = 0; local_560 = 0; iVar31 = *(int *)((longlong)pvVar6 + 0x138); if (iVar31 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } FUN_14001bc70((longlong)&local_580,iVar31,(SIZE_T)puVar37); pTVar61 = pTVar51; if (*(int *)((longlong)pvVar6 + 0x138) != 0) { pTVar61 = *(TypeDescriptor **)((longlong)pvVar6 + 0x130); } pTVar52 = local_570; if ((int)local_568 == 0) { pTVar52 = pTVar51; } FUN_14001bd30(&pTVar52->pVFTable,&pTVar61->pVFTable,(longlong)iVar31); local_580 = Proud::ByteArray::vftable; local_650 = &local_580; bVar16 = true; } pTVar61 = pTVar51; if (local_688 != (uint *)0x0) { pTVar61 = *(TypeDescriptor **)local_688; } pppuVar45 = (undefined ***)(param_1 + 0x4a8); ppuVar7 = *pppuVar45; uVar33 = (*(code *)**local_660)(); pTVar52 = (TypeDescriptor *)(ulonglong)uVar33; puVar37 = (uint *)&DAT_14015ded0; (*(code *)ppuVar7[6])(); if (bVar14) { bVar14 = false; pppuVar45 = &local_460; FUN_14003b870(pppuVar45); } if (bVar16) { bVar16 = false; pppuVar45 = &local_580; FUN_14003b870(pppuVar45); } if (bVar18) { bVar18 = false; pppuVar45 = &local_410; FUN_14003b870(pppuVar45); } pppuVar53 = local_660; param_1 = local_668; bVar13 = bVar12; bVar15 = bVar14; bVar17 = bVar16; bVar19 = bVar18; bVar20 = bVar21; bVar22 = bVar23; bVar24 = bVar25; if (bVar12) { bVar12 = false; pppuVar45 = &local_530; FUN_14003b870(pppuVar45); pppuVar53 = local_660; param_1 = local_668; bVar13 = bVar12; } } } if ((pppuVar53 != local_658) && (puVar37 = (uint *)(ulonglong)local_68c, local_68c != 1)) { if ((bVar11) && ((pTVar44 != (TypeDescriptor *)0x0 && (pTVar44->pVFTable != (void *)0x0)))) { FUN_14003cbb0((longlong)pTVar44->pVFTable,local_308,local_68c); } if (*(char *)(param_1 + 0x24d) == '\0') { if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) { local_1e8 = 0; local_1e4 = 0; local_1e0 = 0; local_1dc = 0; } if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) { local_628 = 0; } else { local_628 = *(undefined4 *)((longlong)pTVar44->pVFTable + 0x170); } local_5e8 = (*(code *)**pppuVar53)(pppuVar53); pTVar61 = pTVar51; if (local_688 != (uint *)0x0) { pTVar61 = *(TypeDescriptor **)local_688; } pppuVar45 = (undefined ***)(param_1 + 0x4a8); puVar37 = (uint *)&DAT_14015de10; pTVar52 = (TypeDescriptor *)(ulonglong)local_68c; (*(code *)(*pppuVar45)[8])(); } else { if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) { local_1b8 = 0; local_1b4 = 0; local_1b0 = 0; local_1ac = 0; } if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) { local_614 = 0; } else { local_614 = *(undefined4 *)((longlong)pTVar44->pVFTable + 0x170); } if ((pTVar44 == (TypeDescriptor *)0x0) || (pvVar6 = pTVar44->pVFTable, pvVar6 == (void *)0x0)) { local_4d0 = 0; local_4c8 = 0; local_4c0 = 0; local_4b8 = 0; local_4d8 = Proud::ByteArray::vftable; bVar22 = true; bVar24 = bVar25; } else { local_558 = Proud::CFastArray::vftable; puVar58 = puVar37; if (DAT_1401558a0 != 5) { FUN_14003b760(); puVar58 = puVar37; } local_550 = *(undefined8 *)((longlong)pvVar6 + 0x150); local_534 = *(undefined4 *)((longlong)pvVar6 + 0x16c); local_548 = (TypeDescriptor *)0x0; local_540 = 0; local_538 = 0; iVar31 = *(int *)((longlong)pvVar6 + 0x160); puVar37 = (uint *)(longlong)iVar31; if (iVar31 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } FUN_14001bc70((longlong)&local_558,iVar31,(SIZE_T)puVar58); pTVar61 = pTVar51; if (*(int *)((longlong)pvVar6 + 0x160) != 0) { pTVar61 = *(TypeDescriptor **)((longlong)pvVar6 + 0x158); } pTVar52 = local_548; if ((int)local_540 == 0) { pTVar52 = pTVar51; } FUN_14001bd30(&pTVar52->pVFTable,&pTVar61->pVFTable,(size_t)puVar37); local_558 = Proud::ByteArray::vftable; bVar22 = bVar23; bVar24 = true; } if ((pTVar44 == (TypeDescriptor *)0x0) || (pvVar6 = pTVar44->pVFTable, pvVar6 == (void *)0x0)) { local_430 = 0; local_428 = 0; local_420 = 0; local_418 = 0; local_438 = Proud::ByteArray::vftable; bVar20 = bVar21; } else { local_5a8 = Proud::CFastArray::vftable; if (DAT_1401558a0 != 5) { FUN_14003b760(); } local_5a0 = *(undefined8 *)((longlong)pvVar6 + 0x128); local_584 = *(undefined4 *)((longlong)pvVar6 + 0x144); local_598 = (TypeDescriptor *)0x0; local_590 = 0; local_588 = 0; iVar31 = *(int *)((longlong)pvVar6 + 0x138); if (iVar31 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } FUN_14001bc70((longlong)&local_5a8,iVar31,(SIZE_T)puVar37); pTVar61 = pTVar51; if (*(int *)((longlong)pvVar6 + 0x138) != 0) { pTVar61 = *(TypeDescriptor **)((longlong)pvVar6 + 0x130); } pTVar52 = local_598; if ((int)local_590 == 0) { pTVar52 = pTVar51; } FUN_14001bd30(&pTVar52->pVFTable,&pTVar61->pVFTable,(longlong)iVar31); local_5a8 = Proud::ByteArray::vftable; bVar20 = true; } local_5d0 = (*(code *)**local_660)(); pTVar61 = pTVar51; if (local_688 != (uint *)0x0) { pTVar61 = *(TypeDescriptor **)local_688; } pppuVar45 = (undefined ***)(local_668 + 0x4a8); puVar37 = (uint *)&DAT_14015ded0; pTVar52 = (TypeDescriptor *)(ulonglong)local_68c; (*(code *)(*pppuVar45)[6])(); if (bVar20) { bVar20 = false; pppuVar45 = &local_5a8; FUN_14003b870(pppuVar45); } if (bVar22) { bVar22 = false; pppuVar45 = &local_4d8; FUN_14003b870(pppuVar45); } param_1 = local_668; bVar13 = bVar12; bVar15 = bVar14; bVar17 = bVar16; bVar19 = bVar18; bVar21 = bVar20; bVar23 = bVar22; bVar25 = bVar24; if (bVar24) { bVar24 = false; pppuVar45 = &local_558; FUN_14003b870(pppuVar45); param_1 = local_668; bVar25 = bVar24; } } } if (((*(longlong *)(param_1 + 0x17f0) != 0) && (pTVar44 != (TypeDescriptor *)0x0)) && (pTVar44->pVFTable != (void *)0x0)) { FUN_140030200(pppuVar45,pTVar52,puVar37,pTVar61); local_5f0 = (short *)PTR_DAT_140155010; plVar38 = FUN_140037900((ulong *)((longlong)pTVar44->pVFTable + 0x174),(longlong *)&local_5c8, puVar37,pTVar61); puVar59 = (undefined *)*plVar38; if ((undefined *)*plVar38 == (undefined *)0x0) { puVar59 = PTR_DAT_140155010; } ppsVar46 = &local_5f0; FUN_14001b7a0((longlong *)ppsVar46,L"서버에서 발급한 magic number=%s\n",puVar59,pTVar61 ); puVar30 = local_5c8; if (((local_5c8 != (undefined *)0x0) && (local_5c8 != PTR_DAT_140155010)) && (puVar2 = local_5c8 + -8, puVar2 != (undefined *)0x0)) { piVar42 = (int *)FUN_140030200(ppsVar46,PTR_DAT_140155010,puVar59,pTVar61); local_3d8 = piVar42; FUN_14002e6e0(piVar42); local_3d0 = 1; piVar3 = (int *)(puVar30 + -4); *piVar3 = *piVar3 + -1; if (*piVar3 == 0) { FUN_1400302f0(puVar2); } FUN_14002e770((longlong)piVar42); local_3d0 = 0; } psVar29 = local_5f0; psVar60 = local_5f0; if (local_5f0 == (short *)0x0) { psVar60 = (short *)PTR_DAT_140155010; } uVar36 = 1; lVar47 = *(longlong *)(param_1 + 0x17f0); local_5c8 = PTR_DAT_140155010; FUN_14008f2e0(lVar47,1,psVar60,pTVar61); if (((psVar29 != (short *)0x0) && (psVar29 != (short *)PTR_DAT_140155010)) && (psVar29 + -4 != (short *)0x0)) { piVar42 = (int *)FUN_140030200(lVar47,uVar36,psVar60,pTVar61); local_508 = piVar42; FUN_14002e6e0(piVar42); local_500 = 1; piVar3 = (int *)(psVar29 + -2); *piVar3 = *piVar3 + -1; if (*piVar3 == 0) { FUN_1400302f0(psVar29 + -4); } FUN_14002e770((longlong)piVar42); local_500 = 0; } local_5f0 = (short *)PTR_DAT_140155010; } if (pTVar44 != (TypeDescriptor *)0x0) { ppvVar50 = &pTVar44->spare; *ppvVar50 = (void *)((longlong)*ppvVar50 + -1); bVar12 = bVar13; bVar14 = bVar15; bVar16 = bVar17; bVar18 = bVar19; bVar21 = bVar20; bVar23 = bVar22; bVar25 = bVar24; if (*ppvVar50 == (void *)0x0) { FUN_140041080(local_680.pVFTable); } } local_4f8 = pTVar51; if (local_620 != (TypeDescriptor *)0x0) { local_4f8 = local_620[1].spare; } } while( true ); }