server-re/decomp/Agent_Release_x64/full/functions/0x14005cf50.c
2026-10-14 16:45:19 -04:00

1332 lines
46 KiB
C

/* 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<unsigned_char,1>::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<unsigned_char,1>::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<unsigned_char,1>::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<unsigned_char,1>::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 );
}