648 lines
24 KiB
C
648 lines
24 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x14005a530 FUN_14005a530
|
|
* 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_14005a530(longlong *param_1,ulonglong **param_2,ulonglong *param_3,undefined8 param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
longlong lVar1;
|
|
longlong *_Memory;
|
|
double dVar2;
|
|
undefined1 **ppuVar3;
|
|
code *pcVar4;
|
|
char *pcVar5;
|
|
undefined1 *puVar6;
|
|
ulonglong **ppuVar7;
|
|
void *pvVar8;
|
|
int iVar9;
|
|
ulonglong uVar10;
|
|
longlong *plVar11;
|
|
ulonglong uVar12;
|
|
undefined4 *puVar13;
|
|
undefined8 *puVar14;
|
|
undefined8 *puVar15;
|
|
ulonglong *puVar16;
|
|
uint *puVar17;
|
|
uint *puVar18;
|
|
int *piVar19;
|
|
longlong *extraout_RAX;
|
|
longlong *extraout_RAX_00;
|
|
longlong *extraout_RAX_01;
|
|
longlong lVar20;
|
|
undefined1 **ppuVar21;
|
|
uint uVar22;
|
|
undefined1 *puVar23;
|
|
undefined1 *puVar24;
|
|
longlong lVar25;
|
|
int iVar26;
|
|
int iVar27;
|
|
ulonglong **ppuVar28;
|
|
SIZE_T SVar29;
|
|
ulonglong **ppuVar30;
|
|
uint uVar31;
|
|
int iVar32;
|
|
undefined4 uVar33;
|
|
undefined4 uVar34;
|
|
undefined1 auStack_2aa8 [32];
|
|
int local_2a88 [2];
|
|
undefined8 *local_2a80;
|
|
int local_2a78 [2];
|
|
ulonglong local_2a70;
|
|
ulonglong *local_2a68;
|
|
uint local_2a60;
|
|
int local_2a5c;
|
|
ulonglong **local_2a50;
|
|
ulonglong *local_2a48;
|
|
uint uStack_2a40;
|
|
undefined4 uStack_2a3c;
|
|
longlong *local_2a38;
|
|
ulonglong *local_2a30;
|
|
ulonglong local_2a28;
|
|
undefined1 local_2a20;
|
|
int local_2a1c;
|
|
undefined1 local_2a18;
|
|
undefined1 local_2a17;
|
|
uint local_2a10;
|
|
int *local_2a08;
|
|
undefined1 local_2a00;
|
|
int *local_29f8;
|
|
undefined1 local_29f0;
|
|
int *local_29e8;
|
|
undefined1 local_29e0;
|
|
undefined8 local_29d8;
|
|
exception local_29d0 [72];
|
|
void *local_2988;
|
|
longlong local_2980;
|
|
ulonglong local_2978;
|
|
longlong local_2970;
|
|
uint local_2968 [4];
|
|
undefined1 local_2958 [384];
|
|
ulonglong *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];
|
|
ulonglong *local_1988 [400];
|
|
ulonglong **local_d08;
|
|
undefined4 local_d00;
|
|
int local_cfc;
|
|
ulonglong *local_cf8;
|
|
undefined8 uStack_cf0;
|
|
ulonglong **local_78;
|
|
undefined4 local_70;
|
|
int local_6c;
|
|
ulonglong local_68;
|
|
undefined8 uStack_48;
|
|
|
|
uStack_48 = 0x14005a547;
|
|
puVar24 = auStack_2aa8;
|
|
local_29d8 = 0xfffffffffffffffe;
|
|
local_68 = DAT_1401555a0 ^ (ulonglong)local_2a88;
|
|
local_2a50 = param_2;
|
|
local_2a48 = param_3;
|
|
local_2a08 = (int *)(**(code **)(*param_1 + 0x58))();
|
|
FUN_14002e6e0(local_2a08);
|
|
local_2a00 = 1;
|
|
if (DAT_14015bfcf != '\0') {
|
|
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetServerImpl::Send_BroadcastLayer");
|
|
}
|
|
uVar31 = 0;
|
|
uVar22 = 0;
|
|
if (0 < (int)*(uint *)((longlong)param_3 + 4)) {
|
|
uVar22 = *(uint *)((longlong)param_3 + 4);
|
|
}
|
|
dVar2 = (double)param_3[1];
|
|
uVar33 = SUB84(dVar2,0);
|
|
uVar34 = (int)((ulonglong)dVar2 >> 0x20);
|
|
if (dVar2 <= 0.0) {
|
|
uVar33 = 0;
|
|
uVar34 = 0;
|
|
}
|
|
local_27d8 = (ulonglong *)0x0;
|
|
local_27c0 = 0;
|
|
local_27d0 = 0;
|
|
local_27c8 = 100;
|
|
ppuVar30 = &local_27d8;
|
|
(**(code **)(*param_1 + 0x50))(param_1,param_5,param_4);
|
|
local_2628 = (undefined1 *)0x0;
|
|
local_2610 = 0;
|
|
local_2620 = 0;
|
|
local_2618 = 100;
|
|
ppuVar28 = &local_27d8;
|
|
ppuVar21 = &local_2628;
|
|
FUN_140042e50((longlong)param_1,(longlong *)ppuVar21,(longlong *)ppuVar28);
|
|
iVar9 = (int)local_2620;
|
|
lVar25 = (longlong)iVar9 * 8;
|
|
uVar12 = lVar25 + 0x10;
|
|
if (uVar12 < 0x401) {
|
|
uVar10 = lVar25 + 0x1f;
|
|
if (uVar10 <= uVar12) {
|
|
uVar10 = 0xffffffffffffff0;
|
|
}
|
|
lVar25 = -(uVar10 & 0xfffffffffffffff0);
|
|
puVar24 = auStack_2aa8 + lVar25;
|
|
local_2a80 = (undefined8 *)((longlong)local_2a88 + lVar25);
|
|
if (local_2a80 != (undefined8 *)0x0) {
|
|
*(undefined4 *)local_2a80 = 0xcccc;
|
|
puVar24 = auStack_2aa8 + lVar25;
|
|
LAB_14005a6b8:
|
|
local_2a80 = local_2a80 + 2;
|
|
}
|
|
}
|
|
else {
|
|
local_2a80 = malloc(uVar12);
|
|
if (local_2a80 != (undefined8 *)0x0) {
|
|
*(undefined4 *)local_2a80 = 0xdddd;
|
|
puVar24 = auStack_2aa8;
|
|
goto LAB_14005a6b8;
|
|
}
|
|
}
|
|
lVar25 = (longlong)iVar9 * 8;
|
|
uVar12 = lVar25 + 0x10;
|
|
if (uVar12 < 0x401) {
|
|
uVar10 = lVar25 + 0x1f;
|
|
if (uVar10 <= uVar12) {
|
|
uVar10 = 0xffffffffffffff0;
|
|
}
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a6e6;
|
|
lVar25 = -(uVar10 & 0xfffffffffffffff0);
|
|
puVar23 = puVar24 + lVar25;
|
|
plVar11 = (longlong *)(puVar24 + lVar25 + 0x20);
|
|
puVar24 = puVar24 + lVar25;
|
|
local_2a38 = plVar11;
|
|
if (plVar11 == (longlong *)0x0) goto LAB_14005a71f;
|
|
*(undefined4 *)plVar11 = 0xcccc;
|
|
puVar24 = puVar23;
|
|
}
|
|
else {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a705;
|
|
plVar11 = malloc(uVar12);
|
|
local_2a38 = plVar11;
|
|
if (plVar11 == (longlong *)0x0) goto LAB_14005a71f;
|
|
*(undefined4 *)plVar11 = 0xdddd;
|
|
}
|
|
local_2a38 = plVar11 + 2;
|
|
LAB_14005a71f:
|
|
plVar11 = local_2a38;
|
|
local_2a10 = 0;
|
|
iVar26 = 0;
|
|
local_2a88[0] = 0;
|
|
if ((int)*param_3 == 1) {
|
|
puVar15 = local_2a80;
|
|
if (iVar9 < 1) {
|
|
iVar27 = 0;
|
|
uVar31 = 0;
|
|
}
|
|
else {
|
|
do {
|
|
if ((iVar26 < 0) || (local_2620 <= iVar26)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005a8c9;
|
|
FUN_14002f590();
|
|
}
|
|
puVar6 = local_2628;
|
|
if (local_2618 < 0x65) {
|
|
puVar6 = local_2608;
|
|
}
|
|
plVar11 = *(longlong **)(puVar6 + (longlong)iVar26 * 0x20 + 8);
|
|
if ((plVar11 == param_1 + 0xe) && (*(char *)((longlong)param_3 + 0x2d) != '\0')) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a79e;
|
|
FUN_1400806d0(local_2a78);
|
|
ppuVar7 = local_2a50;
|
|
piVar19 = local_2a78;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a7ac;
|
|
FUN_1400a2150((longlong)ppuVar7,piVar19,(SIZE_T)ppuVar28,ppuVar30);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a7b5;
|
|
uVar12 = FUN_1400a1c10((longlong)local_2a78,piVar19,ppuVar28,ppuVar30);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a7cb;
|
|
puVar13 = FUN_140056fa0((undefined4 *)&local_2988,local_2a78,uVar12 & 0xffffffff,
|
|
CONCAT71((int7)((ulonglong)ppuVar30 >> 8),1));
|
|
ppuVar30 = (ulonglong **)0x0;
|
|
ppuVar28 = (ulonglong **)param_1[0x8d];
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a7e7;
|
|
puVar14 = FUN_14005a220(param_1 + 0x8b,puVar13,(SIZE_T)ppuVar28,0);
|
|
if ((undefined8 *)param_1[0x8d] == (undefined8 *)0x0) {
|
|
param_1[0x8c] = (longlong)puVar14;
|
|
}
|
|
else {
|
|
*(undefined8 *)param_1[0x8d] = puVar14;
|
|
}
|
|
param_1[0x8d] = (longlong)puVar14;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a815;
|
|
FUN_140056f10((longlong)local_2958,puVar13,ppuVar28,ppuVar30);
|
|
local_2a48 = &local_2978;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a82d;
|
|
FUN_140095270((longlong *)&local_2978);
|
|
if ((local_2970 != 0) && ((int)local_2968[1] < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a8b5;
|
|
FUN_14002f590();
|
|
}
|
|
ppuVar21 = (undefined1 **)(param_1 + 0xf);
|
|
lVar25 = param_1[0x7c];
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a85a;
|
|
FUN_1400a25d0(lVar25 + 0x160,(longlong)ppuVar21,ppuVar28,ppuVar30);
|
|
local_2a48 = &local_2a70;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a86c;
|
|
FUN_140095270((longlong *)&local_2a70);
|
|
if ((local_2a68 != (ulonglong *)0x0) && (local_2a5c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005a8bb;
|
|
FUN_14002f590();
|
|
}
|
|
}
|
|
else if (plVar11 != (longlong *)0x0) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a889;
|
|
puVar14 = FUN_1400a2560(plVar11);
|
|
if (puVar14 != (undefined8 *)0x0) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a89a;
|
|
FUN_14009c460((longlong)(plVar11 + 0x18));
|
|
*puVar15 = plVar11;
|
|
uVar31 = uVar31 + 1;
|
|
puVar15 = puVar15 + 1;
|
|
}
|
|
}
|
|
iVar26 = iVar26 + 1;
|
|
iVar27 = local_2a88[0];
|
|
} while (iVar26 < iVar9);
|
|
}
|
|
}
|
|
else {
|
|
ppuVar28 = (ulonglong **)(ulonglong)uVar22;
|
|
ppuVar21 = &local_2628;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a8e0;
|
|
FUN_1400518f0(param_1,(longlong *)ppuVar21,ppuVar28,(double)CONCAT44(uVar34,uVar33));
|
|
iVar9 = 0;
|
|
iVar32 = (int)local_2620;
|
|
param_3 = local_2a48;
|
|
iVar27 = iVar26;
|
|
if (0 < iVar32) {
|
|
do {
|
|
lVar25 = (longlong)iVar9;
|
|
if ((iVar9 < 0) || (local_2620 <= lVar25)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005aadc;
|
|
FUN_14002f590();
|
|
}
|
|
puVar6 = local_2628;
|
|
if (local_2618 < 0x65) {
|
|
puVar6 = local_2608;
|
|
}
|
|
ppuVar3 = *(undefined1 ***)(puVar6 + lVar25 * 0x20 + 8);
|
|
if ((ppuVar3 == (undefined1 **)(param_1 + 0xe)) &&
|
|
(*(char *)((longlong)local_2a48 + 0x2d) != '\0')) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a968;
|
|
FUN_1400806d0(local_2a78);
|
|
ppuVar7 = local_2a50;
|
|
piVar19 = local_2a78;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a976;
|
|
FUN_1400a2150((longlong)ppuVar7,piVar19,(SIZE_T)ppuVar28,ppuVar30);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a97f;
|
|
uVar12 = FUN_1400a1c10((longlong)local_2a78,piVar19,ppuVar28,ppuVar30);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a995;
|
|
puVar13 = FUN_140056fa0((undefined4 *)&local_2988,local_2a78,uVar12 & 0xffffffff,
|
|
CONCAT71((int7)((ulonglong)ppuVar30 >> 8),1));
|
|
ppuVar30 = (ulonglong **)0x0;
|
|
ppuVar28 = (ulonglong **)param_1[0x8d];
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a9b1;
|
|
puVar15 = FUN_14005a220(param_1 + 0x8b,puVar13,(SIZE_T)ppuVar28,0);
|
|
if ((undefined8 *)param_1[0x8d] == (undefined8 *)0x0) {
|
|
param_1[0x8c] = (longlong)puVar15;
|
|
}
|
|
else {
|
|
*(undefined8 *)param_1[0x8d] = puVar15;
|
|
}
|
|
param_1[0x8d] = (longlong)puVar15;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a9df;
|
|
FUN_140056f10((longlong)local_2958,puVar13,ppuVar28,ppuVar30);
|
|
local_2a30 = &local_2978;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005a9f7;
|
|
FUN_140095270((longlong *)&local_2978);
|
|
if ((local_2970 != 0) && ((int)local_2968[1] < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005aac4;
|
|
FUN_14002f590();
|
|
}
|
|
ppuVar21 = (undefined1 **)(param_1 + 0xf);
|
|
lVar25 = param_1[0x7c];
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005aa28;
|
|
FUN_1400a25d0(lVar25 + 0x160,(longlong)ppuVar21,ppuVar28,ppuVar30);
|
|
local_2a30 = &local_2a70;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005aa3a;
|
|
FUN_140095270((longlong *)&local_2a70);
|
|
if ((local_2a68 != (ulonglong *)0x0) && (local_2a5c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005aaca;
|
|
FUN_14002f590();
|
|
}
|
|
}
|
|
else if (ppuVar3 != (undefined1 **)0x0) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005aa5b;
|
|
puVar15 = FUN_1400a2560(ppuVar3);
|
|
if (puVar15 != (undefined8 *)0x0) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005aa6b;
|
|
ppuVar21 = ppuVar3;
|
|
FUN_140054c90(param_1,(longlong *)ppuVar3,(longlong **)ppuVar28,(uint **)ppuVar30);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005aa77;
|
|
FUN_14009c460((longlong)(ppuVar3 + 0x18));
|
|
if (local_2620 <= lVar25) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005aad0;
|
|
FUN_14002f590();
|
|
}
|
|
puVar6 = local_2628;
|
|
if (local_2618 < 0x65) {
|
|
puVar6 = local_2608;
|
|
}
|
|
*plVar11 = (longlong)(puVar6 + lVar25 * 0x20);
|
|
local_2a88[0] = local_2a88[0] + 1;
|
|
plVar11 = plVar11 + 1;
|
|
}
|
|
}
|
|
iVar9 = iVar9 + 1;
|
|
param_3 = local_2a48;
|
|
iVar27 = local_2a88[0];
|
|
uVar31 = local_2a10;
|
|
} while (iVar9 < iVar32);
|
|
}
|
|
}
|
|
piVar19 = local_2a08;
|
|
lVar25 = 0;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005aaf3;
|
|
FUN_14002e770((longlong)piVar19);
|
|
local_2a00 = 0;
|
|
if ((int)*param_3 == 1) {
|
|
if (0 < (int)uVar31) {
|
|
do {
|
|
lVar20 = local_2a80[lVar25];
|
|
pcVar4 = *(code **)(*(longlong *)(lVar20 + 0x108) + 0x10);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ab25;
|
|
puVar16 = (ulonglong *)(*pcVar4)();
|
|
local_2a48 = puVar16;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ab34;
|
|
FUN_14002e6e0((int *)puVar16);
|
|
ppuVar28 = local_2a50;
|
|
uStack_2a40._0_1_ = 1;
|
|
local_2a30 = (ulonglong *)0x0;
|
|
local_2a28 = CONCAT71(local_2a28._1_7_,1);
|
|
pcVar5 = *(char **)(lVar20 + 0x748);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ab58;
|
|
FUN_14009c2b0(pcVar5,(longlong)ppuVar28,(SIZE_T *)&local_2a30,ppuVar30);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ab60;
|
|
FUN_14002e770((longlong)puVar16);
|
|
uStack_2a40 = (uint)uStack_2a40._1_3_ << 8;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ab70;
|
|
FUN_14009c470(lVar20 + 0xc0);
|
|
lVar25 = lVar25 + 1;
|
|
} while (lVar25 < (int)uVar31);
|
|
}
|
|
}
|
|
else if (0 < iVar27) {
|
|
do {
|
|
puVar18 = (uint *)local_2a38[lVar25];
|
|
plVar11 = *(longlong **)(puVar18 + 2);
|
|
if (*(longlong *)(puVar18 + 4) == 0) {
|
|
if (*(longlong *)(puVar18 + 6) == 0) {
|
|
pcVar4 = *(code **)(plVar11[0x21] + 0x10);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005aeb1;
|
|
piVar19 = (int *)(*pcVar4)();
|
|
local_29f8 = piVar19;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005aec3;
|
|
FUN_14002e6e0(piVar19);
|
|
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];
|
|
pcVar4 = *(code **)(*plVar11 + 0x10);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005af02;
|
|
uVar22 = (*pcVar4)(plVar11);
|
|
ppuVar28 = local_2a50;
|
|
ppuVar21 = (undefined1 **)(ulonglong)uVar22;
|
|
ppuVar30 = &local_2a30;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005af18;
|
|
FUN_14009dae0((char *)(plVar11 + 0xe0),uVar22,(longlong)ppuVar28,(uint *)ppuVar30);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005af20;
|
|
FUN_14002e770((longlong)piVar19);
|
|
local_29f0 = 0;
|
|
}
|
|
else {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005abbb;
|
|
FUN_1400806d0(local_2a78);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005abc5;
|
|
FUN_1400801a0((longlong)local_2a78,ppuVar21,(SIZE_T)ppuVar28,ppuVar30);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005abd0;
|
|
FUN_14001ba80((longlong)local_2a78,CONCAT71((int7)((ulonglong)ppuVar21 >> 8),0x22),
|
|
(SIZE_T)ppuVar28,ppuVar30);
|
|
uVar12 = param_3[4];
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005abde;
|
|
FUN_14001ba80((longlong)local_2a78,(ulonglong)(byte)uVar12,(SIZE_T)ppuVar28,ppuVar30);
|
|
uVar12 = param_3[3];
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005abeb;
|
|
FUN_140081aa0((longlong)local_2a78,uVar12,(SIZE_T)ppuVar28,ppuVar30);
|
|
local_2988 = (void *)0x0;
|
|
local_2970 = 0;
|
|
local_2980 = 0;
|
|
local_2978 = 100;
|
|
do {
|
|
lVar20 = local_2980;
|
|
uVar22 = *puVar18;
|
|
if (local_2980 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005afc1;
|
|
FUN_14002f590();
|
|
}
|
|
lVar1 = local_2980 + 1;
|
|
SVar29 = 0xffffffffffffffff;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ac2f;
|
|
FUN_14003f250(&local_2988,lVar1,-1);
|
|
if (local_2980 <= lVar20) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005afbb;
|
|
FUN_14002f590();
|
|
}
|
|
if (local_2978 < 0x65) {
|
|
puVar17 = local_2968 + lVar20;
|
|
}
|
|
else {
|
|
puVar17 = (uint *)((longlong)local_2988 + lVar20 * 4);
|
|
}
|
|
*puVar17 = uVar22;
|
|
puVar18 = *(uint **)(puVar18 + 6);
|
|
} while (puVar18 != (uint *)0x0);
|
|
uVar12 = (ulonglong)(int)local_2980;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ac7f;
|
|
FUN_140081aa0((longlong)local_2a78,uVar12,SVar29,ppuVar30);
|
|
if (0 < local_2980) {
|
|
lVar20 = 0;
|
|
puVar16 = (ulonglong *)0x0;
|
|
do {
|
|
if ((lVar20 < 0) || (local_2980 <= lVar20)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005af49;
|
|
FUN_14002f590();
|
|
}
|
|
if (local_2978 < 0x65) {
|
|
puVar18 = local_2968 + lVar20;
|
|
}
|
|
else {
|
|
puVar18 = (uint *)((longlong)local_2988 + lVar20 * 4);
|
|
}
|
|
uVar12 = (ulonglong)*puVar18;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005accd;
|
|
FUN_140021e80((longlong)local_2a78,uVar12,SVar29,ppuVar30);
|
|
uVar22 = (int)puVar16 + 1;
|
|
puVar16 = (ulonglong *)(ulonglong)uVar22;
|
|
lVar20 = (longlong)(int)uVar22;
|
|
} while (lVar20 < local_2980);
|
|
}
|
|
ppuVar28 = local_2a50;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005acea;
|
|
iVar9 = FUN_1400a1f10((longlong)ppuVar28,uVar12,SVar29,ppuVar30);
|
|
lVar20 = (longlong)iVar9;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005acf6;
|
|
FUN_140081aa0((longlong)local_2a78,lVar20,SVar29,ppuVar30);
|
|
local_cfc = 200;
|
|
local_d00 = 0;
|
|
local_d08 = local_1988;
|
|
local_6c = 200;
|
|
local_70 = 0;
|
|
local_78 = &local_cf8;
|
|
if (local_2a70 == 0) {
|
|
uVar22 = local_2a60;
|
|
if (local_2a68 == (ulonglong *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005afb5;
|
|
FUN_140095370(0,lVar20,SVar29,ppuVar30);
|
|
}
|
|
}
|
|
else {
|
|
uVar22 = *(uint *)(local_2a70 + 0x18);
|
|
}
|
|
puVar16 = local_2a68;
|
|
if (local_2a68 == (ulonglong *)0x0) {
|
|
if (local_2a70 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005afaf;
|
|
FUN_140095370(0,(ulonglong)uVar22,SVar29,ppuVar30);
|
|
}
|
|
puVar16 = (ulonglong *)0x0;
|
|
if (*(int *)(local_2a70 + 0x18) != 0) {
|
|
puVar16 = *(ulonglong **)(local_2a70 + 0x10);
|
|
}
|
|
}
|
|
local_70 = 1;
|
|
uStack_cf0 = CONCAT44(uStack_2a3c,uVar22);
|
|
local_2a48 = puVar16;
|
|
uStack_2a40 = uVar22;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ad99;
|
|
local_cf8 = puVar16;
|
|
FUN_140040a60((longlong)local_1988,(longlong)&local_cf8,SVar29,ppuVar30);
|
|
if (local_78 == (ulonglong **)0x0) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005af96;
|
|
FUN_14002f1e0(local_29d0,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401569a0,
|
|
SVar29,ppuVar30);
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005afa9;
|
|
_CxxThrowException(local_29d0,(ThrowInfo *)&DAT_140151b88);
|
|
}
|
|
if (local_6c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005af82;
|
|
FUN_14002f590();
|
|
}
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005adc4;
|
|
FUN_140040a60((longlong)local_1988,(longlong)ppuVar28,SVar29,ppuVar30);
|
|
pcVar4 = *(code **)(plVar11[0x21] + 0x10);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005add1;
|
|
piVar19 = (int *)(*pcVar4)();
|
|
local_29e8 = piVar19;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ade3;
|
|
FUN_14002e6e0(piVar19);
|
|
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];
|
|
ppuVar30 = &local_2a30;
|
|
ppuVar28 = local_1988;
|
|
ppuVar21 = (undefined1 **)0x0;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ae31;
|
|
FUN_14009dae0((char *)(plVar11 + 0xe0),0,(longlong)ppuVar28,(uint *)ppuVar30);
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ae39;
|
|
FUN_14002e770((longlong)piVar19);
|
|
pvVar8 = local_2988;
|
|
local_29e0 = 0;
|
|
if (local_d08 == (ulonglong **)0x0) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005af69;
|
|
FUN_14002f1e0(local_29d0,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401569a0,
|
|
ppuVar28,ppuVar30);
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005af7c;
|
|
_CxxThrowException(local_29d0,(ThrowInfo *)&DAT_140151b88);
|
|
}
|
|
if (local_cfc < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar24 + -8) = &UNK_14005af55;
|
|
FUN_14002f590();
|
|
}
|
|
local_d00 = 0;
|
|
if (100 < local_2978) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ae77;
|
|
operator_delete__(pvVar8);
|
|
}
|
|
local_2a30 = &local_2a70;
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005ae89;
|
|
FUN_140095270((longlong *)&local_2a70);
|
|
if ((local_2a68 != (ulonglong *)0x0) && (local_2a5c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005af4f;
|
|
FUN_14002f590();
|
|
}
|
|
}
|
|
}
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005af33;
|
|
FUN_14009c470((longlong)(plVar11 + 0x18));
|
|
lVar25 = lVar25 + 1;
|
|
} while (lVar25 < iVar27);
|
|
}
|
|
if ((local_2a80 != (undefined8 *)0x0) && (piVar19 = (int *)(local_2a80 + -2), *piVar19 == 0xdddd))
|
|
{
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005afdd;
|
|
free(piVar19);
|
|
}
|
|
plVar11 = local_2a38;
|
|
if ((local_2a38 != (longlong *)0x0) && (_Memory = local_2a38 + -2, (int)*_Memory == 0xdddd)) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005aff8;
|
|
free(_Memory);
|
|
plVar11 = extraout_RAX;
|
|
}
|
|
puVar6 = local_2628;
|
|
if (100 < local_2618) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005b00f;
|
|
operator_delete__(puVar6);
|
|
plVar11 = extraout_RAX_00;
|
|
}
|
|
puVar16 = local_27d8;
|
|
if (100 < local_27c8) {
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005b026;
|
|
operator_delete__(puVar16);
|
|
plVar11 = extraout_RAX_01;
|
|
}
|
|
*(undefined8 *)(puVar24 + -8) = 0x14005b038;
|
|
return CONCAT71((int7)((ulonglong)plVar11 >> 8),1);
|
|
}
|
|
|