server-re/decomp/DBCServer_Release_x64/full/functions/0x14018a590.c

689 lines
22 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x14018a590 FUN_14018a590
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
undefined8 FUN_14018a590(longlong param_1,longlong *param_2,undefined ***param_3)
{
int *piVar1;
void *pvVar2;
bool bVar3;
bool bVar4;
undefined ***pppuVar5;
int iVar6;
char cVar7;
int iVar8;
uint uVar9;
uint uVar10;
uint uVar11;
undefined4 uVar12;
uint *puVar13;
undefined8 uVar14;
longlong *plVar15;
undefined4 *puVar16;
undefined4 *puVar17;
undefined4 *puVar18;
uint uVar19;
undefined *puVar20;
undefined4 *puVar21;
ulonglong uVar22;
longlong lVar23;
uint *puVar24;
uint uVar25;
longlong lVar26;
double dVar27;
undefined1 auStack_488 [32];
undefined ***local_468;
uint *local_458;
undefined ***local_450;
undefined4 *local_448;
char *local_440;
undefined4 *local_438;
undefined **local_430;
longlong *local_428;
longlong local_420;
ulonglong local_418;
undefined8 local_410;
undefined *local_408;
undefined **local_400;
undefined8 local_3f8;
undefined4 *local_3f0;
undefined8 local_3e8;
undefined8 local_3e0;
undefined **local_3d8;
longlong *local_3d0;
undefined4 *local_3c8;
ulonglong local_3c0;
undefined4 local_3b8;
undefined4 local_3b4;
undefined **local_3b0;
undefined8 local_3a8;
undefined4 *local_3a0;
undefined8 local_398;
undefined8 local_390;
undefined **local_388;
longlong local_380;
undefined4 *local_378;
undefined8 local_370;
undefined4 local_368;
undefined4 local_364;
void *local_360;
char *local_358;
undefined **local_350;
undefined8 local_348;
undefined8 local_340;
undefined8 local_338;
undefined8 local_330;
undefined8 local_328;
undefined1 local_320;
undefined8 local_318;
undefined1 local_310;
undefined8 local_308;
undefined1 local_300;
undefined8 local_2f8;
undefined1 local_2f0;
undefined8 local_2e8;
longlong local_2e0;
undefined1 local_2d8;
exception local_2d0 [24];
exception local_2b8 [24];
undefined1 local_2a0 [72];
undefined1 local_258 [72];
undefined1 local_210 [72];
undefined1 local_1c8 [72];
undefined1 local_180 [24];
undefined1 *local_168;
undefined1 local_160 [136];
undefined1 *local_d8;
undefined1 local_d0 [136];
ulonglong local_48;
local_2e8 = 0xfffffffffffffffe;
local_48 = DAT_1403463c0 ^ (ulonglong)auStack_488;
local_2e0 = param_1 + 0xb8;
local_450 = param_3;
FUN_14016db50(local_2e0);
local_2d8 = 1;
if ((*(longlong **)(param_1 + 0x6a0) != (longlong *)0x0) &&
(**(longlong **)(param_1 + 0x6a0) != 0)) goto LAB_14018b3c1;
iVar8 = *(int *)((longlong)param_2 + 0x54);
if (iVar8 == 0) {
iVar8 = FUN_14016eed0();
*(int *)((longlong)param_2 + 0x54) = iVar8;
}
if (iVar8 < 0) {
FUN_14016d300(local_210,L"Invalid thread count");
/* WARNING: Subroutine does not return */
_CxxThrowException(local_210,(ThrowInfo *)&DAT_1403417f8);
}
bVar4 = false;
bVar3 = false;
puVar17 = (undefined4 *)0x0;
uVar11 = 0;
puVar18 = puVar17;
puVar16 = puVar17;
if (0 < (int)param_2[6]) {
do {
if (((longlong)puVar18 < 0) || ((int)param_2[6] <= (int)puVar16)) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
if (*(int *)(param_2[5] + (longlong)puVar18 * 4) == 0) {
bVar3 = true;
}
else {
bVar4 = true;
}
uVar19 = (int)puVar16 + 1;
puVar16 = (undefined4 *)(ulonglong)uVar19;
puVar18 = (undefined4 *)((longlong)puVar18 + 1);
} while ((int)uVar19 < (int)param_2[6]);
if ((bVar3) && (bVar4)) {
FUN_14016d300(local_258,
L"Cannot assign non-zero UDP port number with zero UDP port number! All non-zero or all zero must be guaranteed!"
);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_258,(ThrowInfo *)&DAT_1403417f8);
}
}
iVar8 = *(int *)((longlong)param_2 + 0x5c);
if (((iVar8 != 0x80) && (iVar8 != 0xc0)) && (iVar8 != 0x100)) {
FUN_14016d300(local_1c8,L"Invalid key length!");
/* WARNING: Subroutine does not return */
_CxxThrowException(local_1c8,(ThrowInfo *)&DAT_1403417f8);
}
local_3d8 = Proud::CFastArray<int,0>::vftable;
if (DAT_140344e08 != 5) {
FUN_14019a8d0();
}
local_3d0 = (longlong *)param_2[4];
local_3b4 = *(undefined4 *)((longlong)param_2 + 0x3c);
local_3c8 = (undefined4 *)0x0;
local_3c0 = 0;
local_3b8 = 0;
iVar8 = (int)param_2[6];
lVar26 = (longlong)iVar8;
if (iVar8 < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
FUN_14015e670(&local_3d8,iVar8);
puVar18 = local_3c8;
iVar6 = (int)local_3c0;
puVar16 = local_3c8;
if ((int)local_3c0 == 0) {
puVar16 = puVar17;
}
puVar21 = puVar17;
if ((int)param_2[6] != 0) {
puVar21 = (undefined4 *)param_2[5];
}
if (0 < iVar8) {
lVar23 = (longlong)puVar21 - (longlong)puVar16;
do {
*puVar16 = *(undefined4 *)(lVar23 + (longlong)puVar16);
puVar16 = puVar16 + 1;
lVar26 = lVar26 + -1;
} while (lVar26 != 0);
}
puVar16 = local_3c8;
if ((int)local_3c0 == 0) {
puVar16 = puVar17;
}
FUN_140185270(puVar16,local_3c0 & 0xffffffff,0);
puVar16 = puVar17;
puVar21 = puVar17;
if (0 < iVar6 + -1) {
do {
if (((longlong)puVar16 < 0) || (iVar6 <= (int)puVar21)) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
if ((longlong)puVar16 + 1 < 0) {
LAB_14018a80c:
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
uVar19 = (int)puVar21 + 1;
puVar21 = (undefined4 *)(ulonglong)uVar19;
if (iVar6 <= (int)uVar19) goto LAB_14018a80c;
if ((puVar18[(longlong)puVar16] == puVar18[(longlong)puVar16 + 1]) &&
(puVar18[(longlong)puVar16] != 0)) {
FUN_14016d300(local_2a0,L"Cannot add duplicated UDP port number!");
/* WARNING: Subroutine does not return */
_CxxThrowException(local_2a0,(ThrowInfo *)&DAT_1403417f8);
}
puVar16 = (undefined4 *)((longlong)puVar16 + 1);
} while ((int)uVar19 < iVar6 + -1);
}
local_430 = Proud::CFastArray<Proud::StringT<char,Proud::AnsiStrTraits>,0>::vftable;
local_428 = (longlong *)0x0;
local_420 = 0;
local_418 = 0;
local_410 = 0;
FUN_140171180(&local_430);
if ((1 < (int)local_418) &&
(((puVar20 = (undefined *)param_2[1], puVar20 == (undefined *)0x0 ||
(puVar20 == PTR_DAT_1403440a0)) || (*(int *)(puVar20 + -8) == 0)))) {
FUN_14016d8c0();
local_458 = (uint *)PTR_DAT_1403440a0;
uVar19 = FUN_14016d740(
L"Server has multiple network devices, however, no device is specified for listening. Is it your intention?"
);
puVar16 = puVar17;
if ((local_458 != (uint *)0x0) &&
(puVar16 = (undefined4 *)0x0, local_458 != (uint *)PTR_DAT_1403440a0)) {
puVar16 = (undefined4 *)(ulonglong)local_458[-2];
}
uVar9 = uVar19;
if ((((int)uVar19 <= (int)puVar16) && (uVar9 = uVar11, local_458 != (uint *)0x0)) &&
(local_458 != (uint *)PTR_DAT_1403440a0)) {
uVar9 = local_458[-2];
}
uVar25 = 1;
if (1 < (int)uVar9) {
uVar25 = uVar9;
}
uVar10 = 0;
uVar9 = uVar10;
if ((local_458 != (uint *)0x0) && (local_458 != (uint *)PTR_DAT_1403440a0)) {
uVar9 = local_458[-2];
}
if ((int)uVar9 < (int)uVar25) {
if (local_458 == (uint *)0x0) {
local_458 = (uint *)PTR_DAT_1403440a0;
}
if ((int)uVar25 < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
if (uVar25 == 0) {
FUN_14004eb70(&local_458);
}
else {
uVar9 = uVar10;
if ((local_458 != (uint *)0x0) && (local_458 != (uint *)PTR_DAT_1403440a0)) {
uVar9 = local_458[-2];
}
if (uVar25 != uVar9) {
puVar13 = (uint *)FUN_14016d940((longlong)(int)uVar25 * 2 + 10);
if (puVar13 != (uint *)0x0) {
*puVar13 = 0;
puVar13[1] = 1;
}
*puVar13 = uVar25;
uVar9 = uVar10;
if ((local_458 != (uint *)0x0) && (local_458 != (uint *)PTR_DAT_1403440a0)) {
uVar9 = local_458[-2];
}
puVar24 = (uint *)PTR_DAT_1403440a0;
if ((int)uVar25 < (int)uVar9) {
LAB_14018a971:
if (local_458 != (uint *)0x0) {
puVar24 = local_458;
}
}
else {
uVar25 = uVar11;
if (local_458 != (uint *)0x0) {
if (local_458 != (uint *)PTR_DAT_1403440a0) {
uVar25 = local_458[-2];
}
goto LAB_14018a971;
}
}
FUN_14016d770(puVar13 + 2,puVar24,uVar25);
FUN_14004eb70(&local_458);
local_458 = puVar13 + 2;
}
}
}
FUN_14004e850(&local_458);
puVar13 = local_458;
if (local_458 == (uint *)0x0) {
puVar13 = (uint *)PTR_DAT_1403440a0;
}
FUN_14016d770(puVar13,
L"Server has multiple network devices, however, no device is specified for listening. Is it your intention?"
,uVar19);
puVar13 = local_458;
if (local_458 == (uint *)0x0) {
puVar13 = (uint *)PTR_DAT_1403440a0;
}
uVar19 = FUN_14016d740(puVar13);
uVar11 = 0;
if (0 < (int)uVar19) {
uVar11 = uVar19;
}
uVar19 = uVar10;
if ((local_458 != (uint *)0x0) && (local_458 != (uint *)PTR_DAT_1403440a0)) {
uVar19 = local_458[-2];
}
if (((int)uVar11 < (int)uVar19) || (uVar11 = uVar10, local_458 == (uint *)0x0)) {
LAB_14018aa14:
if (((local_458 != (uint *)PTR_DAT_1403440a0) && (local_458 != (uint *)0x0)) &&
(local_458 + -2 != (uint *)0x0)) {
local_458[-2] = uVar11;
*(undefined2 *)((longlong)local_458 + (longlong)(int)uVar11 * 2) = 0;
}
}
else if (local_458 != (uint *)PTR_DAT_1403440a0) {
uVar11 = local_458[-2];
goto LAB_14018aa14;
}
local_348 = 0;
local_340 = 0;
local_338 = 0;
local_330 = 0;
local_350 = Proud::ByteArray::vftable;
local_468 = &local_350;
uVar14 = FUN_140198f80(&local_360,1,0,&local_458);
FUN_140186b80(param_1 + -0xa8,uVar14);
FUN_14019a9e0(&local_350);
puVar13 = local_458;
if (((local_458 != (uint *)0x0) && (local_458 != (uint *)PTR_DAT_1403440a0)) &&
(puVar24 = local_458 + -2, puVar24 != (uint *)0x0)) {
uVar14 = FUN_14016d8c0();
local_2f8 = uVar14;
FUN_14016db50(uVar14);
local_2f0 = 1;
puVar13 = puVar13 + -1;
*puVar13 = *puVar13 - 1;
if (*puVar13 == 0) {
FUN_14016d970(puVar24);
}
FUN_14016dbe0(uVar14);
local_2f0 = 0;
}
local_458 = (uint *)PTR_DAT_1403440a0;
FUN_14016d8c0();
local_438 = (undefined4 *)PTR_DAT_1403440a0;
plVar15 = (longlong *)FUN_14016f6b0(&local_408);
puVar20 = (undefined *)*plVar15;
if ((undefined *)*plVar15 == (undefined *)0x0) {
puVar20 = PTR_DAT_1403440a0;
}
FUN_14004c020(&local_438,L"No NIC binding though multiple NIC detected##Process=%s",puVar20);
if (((local_408 != (undefined *)0x0) && (local_408 != PTR_DAT_1403440a0)) &&
(local_408 + -8 != (undefined *)0x0)) {
uVar14 = FUN_14016d8c0();
local_318 = uVar14;
FUN_14016db50(uVar14);
local_310 = 1;
piVar1 = (int *)(local_408 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(local_408 + -8);
}
FUN_14016dbe0(uVar14);
local_310 = 0;
}
local_408 = PTR_DAT_1403440a0;
FUN_14016d8c0();
puVar16 = local_438;
local_448 = (undefined4 *)PTR_DAT_1403440a0;
if (PTR_DAT_1403440a0 == (undefined *)0x0) {
local_448 = puVar17;
}
if (local_438 != (undefined4 *)PTR_DAT_1403440a0) {
uVar14 = FUN_14016d8c0();
local_308 = uVar14;
FUN_14016db50(uVar14);
local_300 = 1;
FUN_14004eb70(&local_448);
local_448 = puVar16;
if (((puVar16 != (undefined4 *)PTR_DAT_1403440a0) && (puVar16 != (undefined4 *)0x0)) &&
(puVar16 != (undefined4 *)0x8)) {
puVar16[-1] = puVar16[-1] + 1;
}
FUN_14016dbe0(uVar14);
local_300 = 0;
}
FUN_1401be230(&local_448);
if (((puVar16 != (undefined4 *)0x0) && (puVar16 != (undefined4 *)PTR_DAT_1403440a0)) &&
(puVar16 + -2 != (undefined4 *)0x0)) {
uVar14 = FUN_14016d8c0();
local_328 = uVar14;
FUN_14016db50(uVar14);
local_320 = 1;
piVar1 = puVar16 + -1;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar16 + -2);
}
FUN_14016dbe0(uVar14);
local_320 = 0;
}
local_438 = (undefined4 *)PTR_DAT_1403440a0;
}
dVar27 = (double)param_2[0x16];
if ((double)param_2[0x16] <= 0.0) {
dVar27 = DAT_140344dd0;
}
*(double *)(param_1 + 0x778) = dVar27;
*(undefined1 *)(param_1 + 0x1a4) = *(undefined1 *)((longlong)param_2 + 0x65);
*(undefined1 *)(param_1 + 0x1a5) = *(undefined1 *)((longlong)param_2 + 100);
*(undefined1 *)(param_1 + 0x1a6) = *(undefined1 *)((longlong)param_2 + 0x67);
*(char *)(param_1 + 0x198) = (char)param_2[0xf];
*(char *)(param_1 + 0x1c0) = (char)param_2[0xd];
iVar8 = *(int *)((longlong)param_2 + 0x5c);
*(int *)(param_1 + 0x19c) = iVar8;
if (((iVar8 != 0x80) && (iVar8 != 0xc0)) && (iVar8 != 0x100)) {
local_358 =
"CStartServerParameter::m_encryptedMessageKeyLength Incorrect key length, only 128,192,256";
std::exception::exception(local_2d0,&local_358);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_2d0,(ThrowInfo *)&DAT_1403416b0);
}
iVar8 = (int)param_2[0xc];
*(int *)(param_1 + 0x1a0) = iVar8;
if ((((iVar8 != 0) && (iVar8 != 0x200)) && (iVar8 != 0x400)) && (iVar8 != 0x800)) {
local_440 =
"CStartServerParameter::m_fastEncryptedMessageKeyLength Incorrect key lengt, MaxSize is 2048, MinSize is 8"
;
std::exception::exception(local_2b8,&local_440);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_2b8,(ThrowInfo *)&DAT_1403416b0);
}
*(int *)(param_1 + 0x1a8) = (int)param_2[0x10];
*(undefined1 *)(param_1 + 0x1ac) = *(undefined1 *)((longlong)param_2 + 0x84);
*(undefined1 *)(param_1 + 0x1ad) = *(undefined1 *)((longlong)param_2 + 0x85);
FUN_1401c15d0(param_1 + 0xba0,param_1 + 0xba8);
local_3a8 = 0;
local_3a0 = (undefined4 *)0x0;
local_398 = 0;
local_390 = 0;
local_3b0 = Proud::ByteArray::vftable;
FUN_1401c14a0(&local_3b0,*(undefined4 *)(param_1 + 0x19c));
puVar16 = local_3a0;
if ((int)local_398 == 0) {
puVar16 = puVar17;
}
FUN_1401af310(param_1 + 0x798,puVar16,*(uint *)(param_1 + 0x19c) >> 3,0x10);
local_3f8 = 0;
local_3f0 = (undefined4 *)0x0;
local_3e8 = 0;
local_3e0 = 0;
local_400 = Proud::ByteArray::vftable;
FUN_1401c14a0(&local_400,*(undefined4 *)(param_1 + 0x1a0));
puVar16 = local_3f0;
if ((int)local_3e8 == 0) {
puVar16 = puVar17;
}
FUN_1401c0b90(param_1 + 0xb68,puVar16,*(uint *)(param_1 + 0x1a0) >> 3);
*(undefined4 *)(param_1 + 0xb98) = 0;
local_440 = operator_new(0xa8);
puVar16 = puVar17;
if (local_440 != (char *)0x0) {
puVar16 = (undefined4 *)(param_1 + -0x40);
if (param_1 == 0xa8) {
puVar16 = puVar17;
}
puVar16 = (undefined4 *)FUN_1401a2fe0(local_440,puVar16,1);
}
*(undefined4 **)(param_1 + 0x6e0) = puVar16;
local_440 = operator_new(0xa8);
puVar16 = puVar17;
if (local_440 != (char *)0x0) {
puVar16 = (undefined4 *)(param_1 + -0x40);
if (param_1 == 0xa8) {
puVar16 = puVar17;
}
puVar16 = (undefined4 *)FUN_1401a2fe0(local_440,puVar16,1);
}
*(undefined4 **)(param_1 + 0x6e8) = puVar16;
FUN_1401a1e20(param_1 + 0x6b8);
uVar14 = FUN_1401a1eb0(param_1 + 0x6b8);
*(undefined8 *)(param_1 + 0x158) = uVar14;
*(undefined8 *)(param_1 + 0x118) = 0;
puVar16 = (undefined4 *)FUN_140199840(local_180);
*(undefined4 *)(param_1 + 0x1c4) = *puVar16;
*(undefined4 *)(param_1 + 0x1c8) = puVar16[1];
*(undefined4 *)(param_1 + 0x1cc) = puVar16[2];
*(undefined4 *)(param_1 + 0x1d0) = puVar16[3];
*(int *)(param_1 + 0x179c) = (int)param_2[8];
*(undefined4 *)(param_1 + 0x340) = *(undefined4 *)((longlong)param_2 + 0x44);
*(int *)(param_1 + 0x344) = (int)param_2[9];
*(undefined4 *)(param_1 + 0x348) = *(undefined4 *)((longlong)param_2 + 0x4c);
*(int *)(param_1 + 0x34c) = (int)param_2[10];
puVar20 = (undefined *)*param_2;
if ((undefined *)*param_2 == (undefined *)0x0) {
puVar20 = PTR_DAT_1403440a0;
}
local_168 = local_160;
FUN_14016ac90(&local_168,puVar20,3);
FUN_14016bfb0(param_1 + 0x168,local_168);
if (local_168 != local_160) {
free(local_168);
}
puVar20 = (undefined *)param_2[1];
if ((undefined *)param_2[1] == (undefined *)0x0) {
puVar20 = PTR_DAT_1403440a0;
}
local_d8 = local_d0;
FUN_14016ac90(&local_d8,puVar20,3);
FUN_14016bfb0(param_1 + 0x170,local_d8);
if (local_d8 != local_d0) {
free(local_d8);
}
*(undefined4 *)(param_1 + 0x1b0) = *(undefined4 *)((longlong)param_2 + 0x6c);
*(longlong *)(param_1 + 0x1b8) = param_2[0xe];
local_388 = Proud::CFastArray<int,0>::vftable;
if (DAT_140344e08 != 5) {
FUN_14019a8d0();
}
local_380 = param_2[4];
local_364 = *(undefined4 *)((longlong)param_2 + 0x3c);
local_378 = (undefined4 *)0x0;
local_370 = 0;
local_368 = 0;
iVar8 = (int)param_2[6];
lVar26 = (longlong)iVar8;
if (iVar8 < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
FUN_14015e670(&local_388,iVar8);
pppuVar5 = local_450;
puVar16 = local_378;
if ((int)local_370 == 0) {
puVar16 = puVar17;
}
puVar21 = puVar17;
if ((int)param_2[6] != 0) {
puVar21 = (undefined4 *)param_2[5];
}
if (0 < iVar8) {
lVar23 = (longlong)puVar21 - (longlong)puVar16;
do {
*puVar16 = *(undefined4 *)(lVar23 + (longlong)puVar16);
puVar16 = puVar16 + 1;
lVar26 = lVar26 + -1;
} while (lVar26 != 0);
}
local_468 = local_450;
cVar7 = FUN_140188240(param_1 + -0xa8,(int)param_2[8],&local_388,param_2 + 0x11);
if ((cVar7 != '\0') &&
(cVar7 = FUN_1401878c0(param_1 + -0xa8,(int)param_2[2],pppuVar5), cVar7 != '\0')) {
puVar16 = puVar17;
if (*(int *)((longlong)param_2 + 0x7c) == 0) {
local_450 = operator_new(0x10);
if (local_450 != (void *)0x0) {
puVar16 = (undefined4 *)FUN_1401bfde0(local_450);
}
}
else {
local_450 = operator_new(0x90);
if (local_450 != (void *)0x0) {
puVar16 = (undefined4 *)FUN_1401c0420(local_450,DAT_140344dd8);
}
}
*(undefined4 **)(param_1 + 0x3d0) = puVar16;
*(undefined4 *)(param_1 + 0x175c) = 0;
FUN_14004c050(param_1 + 0x1760,&DAT_1402a4aa0);
*(undefined8 *)(param_1 + 0x1768) = 0;
*(undefined4 *)(param_1 + 0x1798) = 0;
uVar11 = *(uint *)(param_2 + 0xb);
iVar8 = FUN_14016eed0();
if (iVar8 <= (int)uVar11) {
uVar11 = FUN_14016eed0();
}
puVar16 = puVar17;
if (0 < (int)uVar11) {
puVar16 = (undefined4 *)(ulonglong)uVar11;
}
*(int *)(param_2 + 0xb) = (int)puVar16;
if ((int)puVar16 == 0) {
uVar12 = FUN_14016eed0();
*(undefined4 *)(param_2 + 0xb) = uVar12;
}
local_360 = operator_new(0x280);
if (local_360 != (void *)0x0) {
puVar17 = (undefined4 *)FUN_1401a8bc0(local_360,param_1 + -0xa8);
}
*(undefined4 **)(param_1 + 0x338) = puVar17;
FUN_1401acc80(puVar17,*(undefined4 *)((longlong)param_2 + 0x54),(int)param_2[0xb]);
Sleep(100);
FUN_14019a9e0(&local_400);
FUN_14019a9e0(&local_3b0);
local_430 = Proud::CFastArray<Proud::StringT<char,Proud::AnsiStrTraits>,0>::vftable;
if (0 < (int)local_418) {
uVar22 = local_418 & 0xffffffff;
lVar26 = local_420;
do {
FUN_14004f5a0(lVar26);
lVar26 = lVar26 + 8;
uVar22 = uVar22 - 1;
} while (uVar22 != 0);
}
if (local_420 != 0) {
if (local_428 == (longlong *)0x0) {
FUN_14016d970();
}
else {
(**(code **)(*local_428 + 0x18))(local_428,local_420);
}
}
if (puVar18 != (undefined4 *)0x0) {
if (local_3d0 == (longlong *)0x0) {
FUN_14016d970(puVar18);
}
else {
(**(code **)(*local_3d0 + 0x18))(local_3d0,puVar18);
}
}
FUN_14016dbe0(param_1 + 0xb8);
return 1;
}
FUN_1401a1e70(param_1 + 0x6b8);
pvVar2 = *(void **)(param_1 + 0x6e0);
if (pvVar2 != (void *)0x0) {
FUN_1401a31c0(pvVar2);
operator_delete(pvVar2);
}
*(undefined8 *)(param_1 + 0x6e0) = 0;
pvVar2 = *(void **)(param_1 + 0x6e8);
if (pvVar2 != (void *)0x0) {
FUN_1401a31c0(pvVar2);
operator_delete(pvVar2);
}
*(undefined8 *)(param_1 + 0x6e8) = 0;
*(undefined4 *)(param_1 + 0x1c4) = 0;
*(undefined4 *)(param_1 + 0x1c8) = 0;
*(undefined4 *)(param_1 + 0x1cc) = 0;
*(undefined4 *)(param_1 + 0x1d0) = 0;
FUN_14019a9e0(&local_400);
FUN_14019a9e0(&local_3b0);
local_430 = Proud::CFastArray<Proud::StringT<char,Proud::AnsiStrTraits>,0>::vftable;
if (0 < (int)local_418) {
uVar22 = local_418 & 0xffffffff;
lVar26 = local_420;
do {
FUN_14004f5a0(lVar26);
lVar26 = lVar26 + 8;
uVar22 = uVar22 - 1;
} while (uVar22 != 0);
}
if (local_420 != 0) {
if (local_428 == (longlong *)0x0) {
FUN_14016d970();
}
else {
(**(code **)(*local_428 + 0x18))(local_428,local_420);
}
}
if (puVar18 != (undefined4 *)0x0) {
if (local_3d0 == (longlong *)0x0) {
FUN_14016d970(puVar18);
}
else {
(**(code **)(*local_3d0 + 0x18))(local_3d0,puVar18);
}
}
LAB_14018b3c1:
FUN_14016dbe0(param_1 + 0xb8);
return 0;
}