614 lines
21 KiB
C
614 lines
21 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x14018ef40 FUN_14018ef40
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
undefined8
|
|
FUN_14018ef40(longlong *param_1,undefined8 param_2,ulonglong *param_3,undefined8 param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
longlong lVar1;
|
|
ulonglong uVar2;
|
|
double dVar3;
|
|
longlong *plVar4;
|
|
code *pcVar5;
|
|
undefined1 *puVar6;
|
|
void *pvVar7;
|
|
undefined4 uVar8;
|
|
int iVar9;
|
|
ulonglong uVar10;
|
|
longlong *plVar11;
|
|
undefined8 uVar12;
|
|
longlong lVar13;
|
|
ulonglong *puVar14;
|
|
int *piVar15;
|
|
int *piVar16;
|
|
undefined8 uVar17;
|
|
longlong lVar18;
|
|
uint uVar19;
|
|
undefined1 *puVar20;
|
|
undefined1 *puVar21;
|
|
undefined8 *puVar22;
|
|
int iVar23;
|
|
int iVar24;
|
|
int iVar25;
|
|
int iVar26;
|
|
undefined4 uVar27;
|
|
undefined1 auStack_2aa8 [32];
|
|
int local_2a88 [2];
|
|
undefined8 *local_2a80;
|
|
undefined1 local_2a78 [8];
|
|
ulonglong local_2a70;
|
|
longlong *local_2a68;
|
|
int local_2a60;
|
|
int local_2a5c;
|
|
undefined8 local_2a50;
|
|
undefined8 local_2a48;
|
|
int iStack_2a40;
|
|
undefined4 uStack_2a3c;
|
|
longlong *local_2a38;
|
|
ulonglong *local_2a30;
|
|
longlong local_2a28;
|
|
undefined1 local_2a20;
|
|
int local_2a1c;
|
|
undefined1 local_2a18;
|
|
undefined1 local_2a17;
|
|
int local_2a10;
|
|
undefined8 local_2a08;
|
|
undefined1 local_2a00;
|
|
undefined8 local_29f8;
|
|
undefined1 local_29f0;
|
|
undefined8 local_29e8;
|
|
undefined1 local_29e0;
|
|
undefined8 local_29d8;
|
|
undefined1 local_29d0 [72];
|
|
void *local_2988;
|
|
longlong local_2980;
|
|
ulonglong local_2978;
|
|
longlong local_2970;
|
|
int local_2968 [4];
|
|
undefined1 local_2958 [384];
|
|
void *local_27d8;
|
|
undefined8 local_27d0;
|
|
ulonglong local_27c8;
|
|
undefined8 local_27c0;
|
|
undefined1 *local_2628;
|
|
longlong local_2620;
|
|
ulonglong local_2618;
|
|
undefined8 local_2610;
|
|
undefined1 local_2608 [3200];
|
|
undefined1 local_1988 [3200];
|
|
undefined1 *local_d08;
|
|
undefined4 local_d00;
|
|
int local_cfc;
|
|
undefined4 local_cf8;
|
|
undefined4 uStack_cf4;
|
|
int iStack_cf0;
|
|
undefined4 uStack_cec;
|
|
undefined4 *local_78;
|
|
undefined4 local_70;
|
|
int local_6c;
|
|
ulonglong local_68;
|
|
undefined8 uStack_48;
|
|
|
|
uStack_48 = 0x14018ef57;
|
|
puVar21 = auStack_2aa8;
|
|
local_29d8 = 0xfffffffffffffffe;
|
|
local_68 = DAT_1403463c0 ^ (ulonglong)local_2a88;
|
|
local_2a50 = param_2;
|
|
local_2a48 = param_3;
|
|
local_2a08 = (**(code **)(*param_1 + 0x58))();
|
|
FUN_14016db50(local_2a08);
|
|
local_2a00 = 1;
|
|
if (DAT_14034c86f != '\0') {
|
|
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetServerImpl::Send_BroadcastLayer");
|
|
}
|
|
iVar9 = 0;
|
|
iVar24 = 0;
|
|
if (0 < *(int *)((longlong)param_3 + 4)) {
|
|
iVar24 = *(int *)((longlong)param_3 + 4);
|
|
}
|
|
dVar3 = (double)param_3[1];
|
|
uVar8 = SUB84(dVar3,0);
|
|
uVar27 = (int)((ulonglong)dVar3 >> 0x20);
|
|
if (dVar3 <= 0.0) {
|
|
uVar8 = 0;
|
|
uVar27 = 0;
|
|
}
|
|
local_27d8 = (void *)0x0;
|
|
local_27c0 = 0;
|
|
local_27d0 = 0;
|
|
local_27c8 = 100;
|
|
(**(code **)(*param_1 + 0x50))(param_1,param_5,param_4,&local_27d8);
|
|
local_2628 = (undefined1 *)0x0;
|
|
local_2610 = 0;
|
|
local_2620 = 0;
|
|
local_2618 = 100;
|
|
FUN_140177770(param_1,&local_2628,&local_27d8);
|
|
iVar25 = (int)local_2620;
|
|
lVar13 = (longlong)iVar25 * 8;
|
|
uVar2 = lVar13 + 0x10;
|
|
if (uVar2 < 0x401) {
|
|
uVar10 = lVar13 + 0x1f;
|
|
if (uVar10 <= uVar2) {
|
|
uVar10 = 0xffffffffffffff0;
|
|
}
|
|
lVar13 = -(uVar10 & 0xfffffffffffffff0);
|
|
puVar21 = auStack_2aa8 + lVar13;
|
|
local_2a80 = (undefined8 *)((longlong)local_2a88 + lVar13);
|
|
if (local_2a80 != (undefined8 *)0x0) {
|
|
*(undefined4 *)local_2a80 = 0xcccc;
|
|
puVar21 = auStack_2aa8 + lVar13;
|
|
LAB_14018f0c8:
|
|
local_2a80 = local_2a80 + 2;
|
|
}
|
|
}
|
|
else {
|
|
local_2a80 = malloc(uVar2);
|
|
if (local_2a80 != (undefined8 *)0x0) {
|
|
*(undefined4 *)local_2a80 = 0xdddd;
|
|
puVar21 = auStack_2aa8;
|
|
goto LAB_14018f0c8;
|
|
}
|
|
}
|
|
lVar13 = (longlong)iVar25 * 8;
|
|
uVar2 = lVar13 + 0x10;
|
|
if (uVar2 < 0x401) {
|
|
uVar10 = lVar13 + 0x1f;
|
|
if (uVar10 <= uVar2) {
|
|
uVar10 = 0xffffffffffffff0;
|
|
}
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f0f6;
|
|
lVar13 = -(uVar10 & 0xfffffffffffffff0);
|
|
puVar20 = puVar21 + lVar13;
|
|
plVar11 = (longlong *)(puVar21 + lVar13 + 0x20);
|
|
puVar21 = puVar21 + lVar13;
|
|
local_2a38 = plVar11;
|
|
if (plVar11 == (longlong *)0x0) goto LAB_14018f12f;
|
|
*(undefined4 *)plVar11 = 0xcccc;
|
|
puVar21 = puVar20;
|
|
}
|
|
else {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f115;
|
|
plVar11 = malloc(uVar2);
|
|
local_2a38 = plVar11;
|
|
if (plVar11 == (longlong *)0x0) goto LAB_14018f12f;
|
|
*(undefined4 *)plVar11 = 0xdddd;
|
|
}
|
|
local_2a38 = plVar11 + 2;
|
|
LAB_14018f12f:
|
|
plVar11 = local_2a38;
|
|
local_2a10 = 0;
|
|
iVar23 = 0;
|
|
local_2a88[0] = 0;
|
|
if ((int)*param_3 == 1) {
|
|
puVar22 = local_2a80;
|
|
if (iVar25 < 1) {
|
|
iVar24 = 0;
|
|
iVar9 = 0;
|
|
}
|
|
else {
|
|
do {
|
|
if ((iVar23 < 0) || (local_2620 <= iVar23)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f2d9;
|
|
FUN_14016d6b0();
|
|
}
|
|
puVar6 = local_2628;
|
|
if (local_2618 < 0x65) {
|
|
puVar6 = local_2608;
|
|
}
|
|
plVar11 = *(longlong **)(puVar6 + (longlong)iVar23 * 0x20 + 8);
|
|
if ((plVar11 == param_1 + 0xe) && (*(char *)((longlong)param_3 + 0x2d) != '\0')) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f1ae;
|
|
FUN_14016b440(local_2a78);
|
|
uVar12 = local_2a50;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f1bc;
|
|
FUN_14019b750(uVar12,local_2a78);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f1c5;
|
|
uVar8 = FUN_1401c2140(local_2a78);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f1db;
|
|
uVar12 = FUN_14018baa0(&local_2988,local_2a78,uVar8,1);
|
|
lVar13 = param_1[0x8d];
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f1f7;
|
|
lVar13 = FUN_14018ec30(param_1 + 0x8b,uVar12,lVar13,0);
|
|
if ((longlong *)param_1[0x8d] == (longlong *)0x0) {
|
|
param_1[0x8c] = lVar13;
|
|
}
|
|
else {
|
|
*(longlong *)param_1[0x8d] = lVar13;
|
|
}
|
|
param_1[0x8d] = lVar13;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f225;
|
|
FUN_14018ba10(local_2958);
|
|
local_2a48 = &local_2978;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f23d;
|
|
FUN_14016d0e0(&local_2978);
|
|
if ((local_2970 != 0) && (local_2968[1] < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f2c5;
|
|
FUN_14016d6b0();
|
|
}
|
|
lVar13 = param_1[0x7c];
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f26a;
|
|
FUN_1401c2710(lVar13 + 0x160,param_1 + 0xf);
|
|
local_2a48 = &local_2a70;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f27c;
|
|
FUN_14016d0e0(&local_2a70);
|
|
if (((ulonglong *)local_2a68 != (ulonglong *)0x0) && (local_2a5c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f2cb;
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
else if (plVar11 != (longlong *)0x0) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f299;
|
|
lVar13 = FUN_1401c26a0(plVar11);
|
|
if (lVar13 != 0) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f2aa;
|
|
FUN_1401baa10(plVar11 + 0x18);
|
|
*puVar22 = plVar11;
|
|
iVar9 = iVar9 + 1;
|
|
puVar22 = puVar22 + 1;
|
|
}
|
|
}
|
|
iVar23 = iVar23 + 1;
|
|
iVar24 = local_2a88[0];
|
|
} while (iVar23 < iVar25);
|
|
}
|
|
}
|
|
else {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f2f0;
|
|
FUN_1401863f0(param_1,&local_2628,iVar24,CONCAT44(uVar27,uVar8));
|
|
iVar25 = 0;
|
|
iVar26 = (int)local_2620;
|
|
param_3 = local_2a48;
|
|
iVar24 = iVar23;
|
|
if (0 < iVar26) {
|
|
do {
|
|
lVar13 = (longlong)iVar25;
|
|
if ((iVar25 < 0) || (local_2620 <= lVar13)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f4ec;
|
|
FUN_14016d6b0();
|
|
}
|
|
puVar6 = local_2628;
|
|
if (local_2618 < 0x65) {
|
|
puVar6 = local_2608;
|
|
}
|
|
plVar4 = *(longlong **)(puVar6 + lVar13 * 0x20 + 8);
|
|
if ((plVar4 == param_1 + 0xe) && (*(char *)((longlong)local_2a48 + 0x2d) != '\0')) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f378;
|
|
FUN_14016b440(local_2a78);
|
|
uVar12 = local_2a50;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f386;
|
|
FUN_14019b750(uVar12,local_2a78);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f38f;
|
|
uVar8 = FUN_1401c2140(local_2a78);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f3a5;
|
|
uVar12 = FUN_14018baa0(&local_2988,local_2a78,uVar8,1);
|
|
lVar13 = param_1[0x8d];
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f3c1;
|
|
lVar13 = FUN_14018ec30(param_1 + 0x8b,uVar12,lVar13,0);
|
|
if ((longlong *)param_1[0x8d] == (longlong *)0x0) {
|
|
param_1[0x8c] = lVar13;
|
|
}
|
|
else {
|
|
*(longlong *)param_1[0x8d] = lVar13;
|
|
}
|
|
param_1[0x8d] = lVar13;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f3ef;
|
|
FUN_14018ba10(local_2958);
|
|
local_2a30 = &local_2978;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f407;
|
|
FUN_14016d0e0(&local_2978);
|
|
if ((local_2970 != 0) && (local_2968[1] < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f4d4;
|
|
FUN_14016d6b0();
|
|
}
|
|
lVar13 = param_1[0x7c];
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f438;
|
|
FUN_1401c2710(lVar13 + 0x160,param_1 + 0xf);
|
|
local_2a30 = &local_2a70;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f44a;
|
|
FUN_14016d0e0(&local_2a70);
|
|
if (((ulonglong *)local_2a68 != (ulonglong *)0x0) && (local_2a5c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f4da;
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
else if (plVar4 != (longlong *)0x0) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f46b;
|
|
lVar18 = FUN_1401c26a0(plVar4);
|
|
if (lVar18 != 0) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f47b;
|
|
FUN_140189800(param_1,plVar4);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f487;
|
|
FUN_1401baa10(plVar4 + 0x18);
|
|
if (local_2620 <= lVar13) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f4e0;
|
|
FUN_14016d6b0();
|
|
}
|
|
puVar6 = local_2628;
|
|
if (local_2618 < 0x65) {
|
|
puVar6 = local_2608;
|
|
}
|
|
*plVar11 = (longlong)(puVar6 + lVar13 * 0x20);
|
|
local_2a88[0] = local_2a88[0] + 1;
|
|
plVar11 = plVar11 + 1;
|
|
}
|
|
}
|
|
iVar25 = iVar25 + 1;
|
|
param_3 = local_2a48;
|
|
iVar24 = local_2a88[0];
|
|
iVar9 = local_2a10;
|
|
} while (iVar25 < iVar26);
|
|
}
|
|
}
|
|
uVar12 = local_2a08;
|
|
lVar13 = 0;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f503;
|
|
FUN_14016dbe0(uVar12);
|
|
local_2a00 = 0;
|
|
if ((int)*param_3 == 1) {
|
|
if (0 < iVar9) {
|
|
do {
|
|
lVar18 = local_2a80[lVar13];
|
|
pcVar5 = *(code **)(*(longlong *)(lVar18 + 0x108) + 0x10);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f535;
|
|
puVar14 = (ulonglong *)(*pcVar5)();
|
|
local_2a48 = puVar14;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f544;
|
|
FUN_14016db50(puVar14);
|
|
uVar17 = local_2a50;
|
|
iStack_2a40._0_1_ = 1;
|
|
local_2a30 = (ulonglong *)0x0;
|
|
local_2a28 = CONCAT71(local_2a28._1_7_,1);
|
|
uVar12 = *(undefined8 *)(lVar18 + 0x748);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f568;
|
|
FUN_1401ba860(uVar12,uVar17,&local_2a30);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f570;
|
|
FUN_14016dbe0(puVar14);
|
|
iStack_2a40 = (uint)iStack_2a40._1_3_ << 8;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f580;
|
|
FUN_1401baa20(lVar18 + 0xc0);
|
|
lVar13 = lVar13 + 1;
|
|
} while (lVar13 < iVar9);
|
|
}
|
|
}
|
|
else if (0 < iVar24) {
|
|
do {
|
|
piVar16 = (int *)local_2a38[lVar13];
|
|
plVar11 = *(longlong **)(piVar16 + 2);
|
|
if (*(longlong *)(piVar16 + 4) == 0) {
|
|
if (*(longlong *)(piVar16 + 6) == 0) {
|
|
pcVar5 = *(code **)(plVar11[0x21] + 0x10);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f8c1;
|
|
uVar17 = (*pcVar5)();
|
|
local_29f8 = uVar17;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f8d3;
|
|
FUN_14016db50(uVar17);
|
|
local_29f0 = 1;
|
|
local_2a30 = (ulonglong *)CONCAT44(local_2a30._4_4_,(int)param_3[4]);
|
|
local_2a28 = param_3[3];
|
|
local_2a20 = *(undefined1 *)((longlong)param_3 + 0x2d);
|
|
local_2a1c = (int)param_3[6];
|
|
local_2a18 = *(undefined1 *)((longlong)param_3 + 0x41);
|
|
local_2a17 = (undefined1)param_3[8];
|
|
pcVar5 = *(code **)(*plVar11 + 0x10);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f912;
|
|
uVar8 = (*pcVar5)(plVar11);
|
|
uVar12 = local_2a50;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f928;
|
|
FUN_1401bbe20(plVar11 + 0xe0,uVar8,uVar12,&local_2a30);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f930;
|
|
FUN_14016dbe0(uVar17);
|
|
local_29f0 = 0;
|
|
}
|
|
else {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f5cb;
|
|
FUN_14016b440(local_2a78);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f5d5;
|
|
FUN_14016abe0(local_2a78);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f5e0;
|
|
FUN_14004eef0(local_2a78,0x22);
|
|
uVar2 = param_3[4];
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f5ee;
|
|
FUN_14004eef0(local_2a78,(char)uVar2);
|
|
uVar2 = param_3[3];
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f5fb;
|
|
FUN_14016cac0(local_2a78,uVar2);
|
|
local_2988 = (void *)0x0;
|
|
local_2970 = 0;
|
|
local_2980 = 0;
|
|
local_2978 = 100;
|
|
do {
|
|
lVar18 = local_2980;
|
|
iVar9 = *piVar16;
|
|
if (local_2980 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f9d1;
|
|
FUN_14016d6b0();
|
|
}
|
|
lVar1 = local_2980 + 1;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f63f;
|
|
FUN_140173be0(&local_2988,lVar1,0xffffffffffffffff);
|
|
if (local_2980 <= lVar18) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f9cb;
|
|
FUN_14016d6b0();
|
|
}
|
|
if (local_2978 < 0x65) {
|
|
piVar15 = local_2968 + lVar18;
|
|
}
|
|
else {
|
|
piVar15 = (int *)((longlong)local_2988 + lVar18 * 4);
|
|
}
|
|
*piVar15 = iVar9;
|
|
piVar16 = *(int **)(piVar16 + 6);
|
|
} while (piVar16 != (int *)0x0);
|
|
lVar18 = (longlong)(int)local_2980;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f68f;
|
|
FUN_14016cac0(local_2a78,lVar18);
|
|
if (0 < local_2980) {
|
|
lVar18 = 0;
|
|
puVar14 = (ulonglong *)0x0;
|
|
do {
|
|
if ((lVar18 < 0) || (local_2980 <= lVar18)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f959;
|
|
FUN_14016d6b0();
|
|
}
|
|
if (local_2978 < 0x65) {
|
|
piVar16 = local_2968 + lVar18;
|
|
}
|
|
else {
|
|
piVar16 = (int *)((longlong)local_2988 + lVar18 * 4);
|
|
}
|
|
iVar9 = *piVar16;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f6dd;
|
|
FUN_140153c40(local_2a78,iVar9);
|
|
uVar19 = (int)puVar14 + 1;
|
|
puVar14 = (ulonglong *)(ulonglong)uVar19;
|
|
lVar18 = (longlong)(int)uVar19;
|
|
} while (lVar18 < local_2980);
|
|
}
|
|
uVar12 = local_2a50;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f6fa;
|
|
iVar9 = FUN_14019b440(uVar12);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f706;
|
|
FUN_14016cac0(local_2a78,(longlong)iVar9);
|
|
local_cfc = 200;
|
|
local_d00 = 0;
|
|
local_d08 = local_1988;
|
|
local_6c = 200;
|
|
local_70 = 0;
|
|
local_78 = &local_cf8;
|
|
if (local_2a70 == 0) {
|
|
iVar9 = local_2a60;
|
|
if ((ulonglong *)local_2a68 == (ulonglong *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f9c5;
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
iVar9 = *(int *)(local_2a70 + 0x18);
|
|
}
|
|
puVar14 = (ulonglong *)local_2a68;
|
|
if ((ulonglong *)local_2a68 == (ulonglong *)0x0) {
|
|
if (local_2a70 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f9bf;
|
|
FUN_14016d1e0();
|
|
}
|
|
puVar14 = (ulonglong *)0x0;
|
|
if (*(int *)(local_2a70 + 0x18) != 0) {
|
|
puVar14 = *(ulonglong **)(local_2a70 + 0x10);
|
|
}
|
|
}
|
|
local_70 = 1;
|
|
local_2a48._0_4_ = SUB84(puVar14,0);
|
|
local_2a48._4_4_ = (undefined4)((ulonglong)puVar14 >> 0x20);
|
|
local_cf8 = (undefined4)local_2a48;
|
|
uStack_cf4 = local_2a48._4_4_;
|
|
uStack_cec = uStack_2a3c;
|
|
local_2a48 = puVar14;
|
|
iStack_2a40 = iVar9;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f7a9;
|
|
iStack_cf0 = iVar9;
|
|
FUN_14016ded0(local_1988,&local_cf8);
|
|
if (local_78 == (undefined4 *)0x0) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f9a6;
|
|
FUN_14016d300(local_29d0,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f9b9;
|
|
_CxxThrowException(local_29d0,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_6c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f992;
|
|
FUN_14016d6b0();
|
|
}
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f7d4;
|
|
FUN_14016ded0(local_1988,uVar12);
|
|
pcVar5 = *(code **)(plVar11[0x21] + 0x10);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f7e1;
|
|
uVar12 = (*pcVar5)();
|
|
local_29e8 = uVar12;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f7f3;
|
|
FUN_14016db50(uVar12);
|
|
local_29e0 = 1;
|
|
local_2a30 = (ulonglong *)CONCAT44(local_2a30._4_4_,(int)param_3[4]);
|
|
local_2a28 = param_3[3];
|
|
local_2a20 = *(undefined1 *)((longlong)param_3 + 0x2d);
|
|
local_2a1c = (int)param_3[6];
|
|
local_2a18 = *(undefined1 *)((longlong)param_3 + 0x41);
|
|
local_2a17 = (undefined1)param_3[8];
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f841;
|
|
FUN_1401bbe20(plVar11 + 0xe0,0,local_1988,&local_2a30);
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f849;
|
|
FUN_14016dbe0(uVar12);
|
|
pvVar7 = local_2988;
|
|
local_29e0 = 0;
|
|
if (local_d08 == (undefined1 *)0x0) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f979;
|
|
FUN_14016d300(local_29d0,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f98c;
|
|
_CxxThrowException(local_29d0,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_cfc < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar21 + -8) = &UNK_14018f965;
|
|
FUN_14016d6b0();
|
|
}
|
|
local_d00 = 0;
|
|
if (100 < local_2978) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f887;
|
|
operator_delete__(pvVar7);
|
|
}
|
|
local_2a30 = &local_2a70;
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f899;
|
|
FUN_14016d0e0(&local_2a70);
|
|
if (((ulonglong *)local_2a68 != (ulonglong *)0x0) && (local_2a5c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f95f;
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
}
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f943;
|
|
FUN_1401baa20(plVar11 + 0x18);
|
|
lVar13 = lVar13 + 1;
|
|
} while (lVar13 < iVar24);
|
|
}
|
|
if ((local_2a80 != (undefined8 *)0x0) && (piVar16 = (int *)(local_2a80 + -2), *piVar16 == 0xdddd))
|
|
{
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018f9ed;
|
|
free(piVar16);
|
|
}
|
|
if ((local_2a38 != (longlong *)0x0) && (plVar11 = local_2a38 + -2, (int)*plVar11 == 0xdddd)) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018fa08;
|
|
free(plVar11);
|
|
}
|
|
puVar6 = local_2628;
|
|
if (100 < local_2618) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018fa1f;
|
|
operator_delete__(puVar6);
|
|
}
|
|
pvVar7 = local_27d8;
|
|
if (100 < local_27c8) {
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018fa36;
|
|
operator_delete__(pvVar7);
|
|
}
|
|
*(undefined8 *)(puVar21 + -8) = 0x14018fa48;
|
|
return 1;
|
|
}
|
|
|