661 lines
20 KiB
C
661 lines
20 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401f79c0 FUN_1401f79c0
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_1401f79c0(longlong param_1,longlong param_2)
|
|
|
|
{
|
|
ulonglong uVar1;
|
|
undefined1 *puVar2;
|
|
char cVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
int iVar6;
|
|
undefined8 *puVar7;
|
|
void *_Src;
|
|
uint *puVar8;
|
|
undefined8 uVar9;
|
|
uint *puVar10;
|
|
uint *puVar11;
|
|
undefined8 *puVar12;
|
|
longlong *plVar13;
|
|
undefined *puVar14;
|
|
uint uVar15;
|
|
size_t _Size;
|
|
uint uVar16;
|
|
uint uVar17;
|
|
longlong *plVar19;
|
|
uint *puVar20;
|
|
uint uVar21;
|
|
longlong lVar22;
|
|
double dVar23;
|
|
undefined1 auStack_218 [32];
|
|
uint *local_1f8;
|
|
uint *local_1f0;
|
|
longlong *local_1e8;
|
|
uint *local_1e0;
|
|
longlong local_1d8;
|
|
undefined8 local_1d0;
|
|
undefined **local_1c8;
|
|
undefined4 local_1c0;
|
|
undefined2 local_1bc;
|
|
int local_1b8;
|
|
longlong local_1b0;
|
|
undefined8 local_1a8;
|
|
undefined8 *local_1a0;
|
|
undefined8 local_198;
|
|
undefined1 local_190;
|
|
undefined8 local_188;
|
|
undefined1 local_180;
|
|
longlong *local_178;
|
|
longlong local_170;
|
|
longlong *local_168;
|
|
longlong local_160;
|
|
undefined8 local_158;
|
|
undefined1 local_150;
|
|
undefined8 local_148;
|
|
undefined1 local_140;
|
|
undefined8 local_138;
|
|
undefined1 local_130;
|
|
undefined8 local_128;
|
|
undefined1 local_120;
|
|
undefined8 local_118;
|
|
uint **local_110;
|
|
uint *local_108;
|
|
undefined8 local_100;
|
|
undefined1 local_f8;
|
|
undefined1 *local_e8;
|
|
undefined1 local_e0 [136];
|
|
ulonglong local_58;
|
|
uint *puVar18;
|
|
|
|
local_118 = 0xfffffffffffffffe;
|
|
local_58 = DAT_1403463c0 ^ (ulonglong)auStack_218;
|
|
puVar12 = (undefined8 *)(param_2 + 0x10);
|
|
puVar18 = (uint *)0x0;
|
|
uVar16 = 0;
|
|
local_1d8 = param_1;
|
|
local_1b0 = param_2;
|
|
local_1a0 = puVar12;
|
|
do {
|
|
local_1c8 = Proud::AddrPort::vftable;
|
|
uVar17 = 0;
|
|
local_1b8 = 0;
|
|
local_1d0 = 0;
|
|
local_1c0 = DAT_140344450;
|
|
local_1bc = DAT_140344454;
|
|
puVar8 = puVar18;
|
|
if ((undefined8 *)*puVar12 != (undefined8 *)0x0) {
|
|
puVar8 = *(uint **)*puVar12;
|
|
}
|
|
cVar3 = FUN_14019c2f0(puVar8,0,&local_1d0);
|
|
if (cVar3 == '\0') {
|
|
return;
|
|
}
|
|
*(undefined1 *)(param_2 + 0xc0) = 0;
|
|
if ((local_1d0._4_4_ != 0) || (local_1b8 == 0)) {
|
|
*(undefined4 *)(param_2 + 0x18) = 3;
|
|
local_1a8 = 0;
|
|
FUN_1401786c0(puVar12,&local_1a8);
|
|
return;
|
|
}
|
|
FUN_14016d8c0();
|
|
local_1f8 = (uint *)PTR_DAT_140344098;
|
|
local_110 = &local_1f8;
|
|
uVar5 = local_1b8 + 2U;
|
|
if ((int)(local_1b8 + 2U) < 1) {
|
|
uVar5 = uVar17;
|
|
}
|
|
uVar4 = 1;
|
|
if (1 < (int)uVar5) {
|
|
uVar4 = uVar5;
|
|
}
|
|
puVar8 = local_1f8;
|
|
if (0 < (int)uVar4) {
|
|
if ((int)uVar4 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar4 == 0) {
|
|
puVar8 = local_1f8;
|
|
}
|
|
else {
|
|
puVar8 = (uint *)FUN_14016d940((longlong)(int)uVar4 + 9);
|
|
if (puVar8 != (uint *)0x0) {
|
|
*puVar8 = 0;
|
|
puVar8[1] = 1;
|
|
}
|
|
*puVar8 = uVar4;
|
|
uVar5 = uVar17;
|
|
if ((local_1f8 != (uint *)0x0) && (local_1f8 != (uint *)PTR_DAT_140344098)) {
|
|
uVar5 = local_1f8[-2];
|
|
}
|
|
puVar10 = (uint *)PTR_DAT_140344098;
|
|
if ((int)uVar4 < (int)uVar5) {
|
|
LAB_1401f7b37:
|
|
if (local_1f8 != (uint *)0x0) {
|
|
puVar10 = local_1f8;
|
|
}
|
|
}
|
|
else {
|
|
uVar4 = uVar17;
|
|
if (local_1f8 != (uint *)0x0) {
|
|
if (local_1f8 != (uint *)PTR_DAT_140344098) {
|
|
uVar4 = local_1f8[-2];
|
|
}
|
|
goto LAB_1401f7b37;
|
|
}
|
|
}
|
|
puVar8 = puVar8 + 2;
|
|
FUN_14016d810(puVar8,puVar10,uVar4);
|
|
puVar10 = local_1f8;
|
|
if (((local_1f8 != (uint *)0x0) && (local_1f8 != (uint *)PTR_DAT_140344098)) &&
|
|
(puVar11 = local_1f8 + -2, puVar11 != (uint *)0x0)) {
|
|
uVar9 = FUN_14016d8c0();
|
|
local_138 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_130 = 1;
|
|
puVar10 = puVar10 + -1;
|
|
*puVar10 = *puVar10 - 1;
|
|
if (*puVar10 == 0) {
|
|
FUN_14016d970(puVar11);
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
local_130 = 0;
|
|
}
|
|
}
|
|
}
|
|
local_1f8 = puVar8;
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
if (((local_1f8 == (uint *)0x0) || (puVar8 = local_1f8, local_1f8 == (uint *)PTR_DAT_140344098))
|
|
|| (local_1f8 + -2 == (uint *)0x0)) {
|
|
local_1f8 = puVar8;
|
|
puVar7 = (undefined8 *)FUN_14016d940();
|
|
*puVar7 = 0;
|
|
*(undefined1 *)(puVar7 + 1) = 0;
|
|
if (puVar7 != (undefined8 *)0x0) {
|
|
*(undefined4 *)puVar7 = 0;
|
|
*(undefined4 *)((longlong)puVar7 + 4) = 1;
|
|
}
|
|
*(undefined1 *)(puVar7 + 1) = 0;
|
|
puVar8 = (uint *)(puVar7 + 1);
|
|
}
|
|
else if (1 < (int)local_1f8[-1]) {
|
|
uVar5 = local_1f8[-2];
|
|
if ((int)uVar5 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
puVar8 = (uint *)FUN_14016d940((longlong)(int)uVar5 + 9);
|
|
if (puVar8 != (uint *)0x0) {
|
|
*puVar8 = 0;
|
|
puVar8[1] = 1;
|
|
}
|
|
uVar5 = uVar16;
|
|
if ((local_1f8 != (uint *)0x0) && (local_1f8 != (uint *)PTR_DAT_140344098)) {
|
|
uVar5 = local_1f8[-2];
|
|
}
|
|
*puVar8 = uVar5;
|
|
puVar10 = (uint *)PTR_DAT_140344098;
|
|
puVar11 = puVar18;
|
|
if ((local_1f8 != (uint *)0x0) &&
|
|
(puVar10 = local_1f8, puVar11 = (uint *)0x0, local_1f8 != (uint *)PTR_DAT_140344098)) {
|
|
puVar11 = (uint *)(ulonglong)local_1f8[-2];
|
|
}
|
|
puVar8 = puVar8 + 2;
|
|
FUN_14016d810(puVar8,puVar10,puVar11);
|
|
puVar10 = local_1f8;
|
|
if (((local_1f8 != (uint *)0x0) && (local_1f8 != (uint *)PTR_DAT_140344098)) &&
|
|
(puVar11 = local_1f8 + -2, puVar11 != (uint *)0x0)) {
|
|
uVar9 = FUN_14016d8c0();
|
|
local_198 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_190 = 1;
|
|
puVar10 = puVar10 + -1;
|
|
*puVar10 = *puVar10 - 1;
|
|
if (*puVar10 == 0) {
|
|
FUN_14016d970(puVar11);
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
local_190 = 0;
|
|
}
|
|
}
|
|
local_1f8 = puVar8;
|
|
puVar8 = local_1f8;
|
|
if (local_1f8 == (uint *)0x0) {
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
puVar10 = puVar18;
|
|
if ((undefined8 *)*puVar12 != (undefined8 *)0x0) {
|
|
puVar10 = *(uint **)*puVar12;
|
|
}
|
|
_Size = (size_t)local_1b8;
|
|
local_108 = puVar8;
|
|
_Src = (void *)FUN_14019c8b0(puVar10);
|
|
memcpy(puVar8,_Src,_Size);
|
|
*(undefined1 *)((longlong)local_1b8 + (longlong)puVar8) = 0;
|
|
puVar8 = local_1f8;
|
|
if (local_1f8 == (uint *)0x0) {
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
uVar4 = FUN_14016d7e0(puVar8);
|
|
uVar5 = uVar16;
|
|
if (0 < (int)uVar4) {
|
|
uVar5 = uVar4;
|
|
}
|
|
uVar15 = 0;
|
|
uVar4 = uVar15;
|
|
if ((local_1f8 != (uint *)0x0) && (local_1f8 != (uint *)PTR_DAT_140344098)) {
|
|
uVar4 = local_1f8[-2];
|
|
}
|
|
if (((int)uVar5 < (int)uVar4) || (uVar5 = uVar15, local_1f8 == (uint *)0x0)) {
|
|
LAB_1401f7d5a:
|
|
if (((local_1f8 != (uint *)PTR_DAT_140344098) && (local_1f8 != (uint *)0x0)) &&
|
|
(puVar8 = local_1f8 + -2, puVar8 != (uint *)0x0)) {
|
|
*puVar8 = uVar5;
|
|
*(undefined1 *)((longlong)(int)uVar5 + 8 + (longlong)puVar8) = 0;
|
|
}
|
|
}
|
|
else if (local_1f8 != (uint *)PTR_DAT_140344098) {
|
|
uVar5 = local_1f8[-2];
|
|
goto LAB_1401f7d5a;
|
|
}
|
|
local_1e8 = operator_new(0x2540);
|
|
puVar8 = puVar18;
|
|
if (local_1e8 != (void *)0x0) {
|
|
puVar8 = (uint *)FUN_1401f5800(local_1e8);
|
|
}
|
|
if (puVar8 == (uint *)0x0) {
|
|
local_1e8 = (longlong *)0x0;
|
|
}
|
|
else {
|
|
local_1e8 = (longlong *)FUN_14016d940(0x10);
|
|
local_1e8[1] = 1;
|
|
*local_1e8 = (longlong)puVar8;
|
|
}
|
|
plVar19 = local_1e8;
|
|
FUN_14016d8c0();
|
|
local_1e0 = (uint *)PTR_DAT_140344098;
|
|
if (PTR_DAT_140344098 == (undefined *)0x0) {
|
|
local_1e0 = puVar18;
|
|
}
|
|
if (local_1f8 != (uint *)PTR_DAT_140344098) {
|
|
uVar9 = FUN_14016d8c0();
|
|
local_148 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_140 = 1;
|
|
FUN_14004f5a0(&local_1e0);
|
|
local_1e0 = local_1f8;
|
|
if (((local_1f8 != (uint *)PTR_DAT_140344098) && (local_1f8 != (uint *)0x0)) &&
|
|
(local_1f8 != (uint *)0x8)) {
|
|
local_1f8[-1] = local_1f8[-1] + 1;
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
local_140 = 0;
|
|
}
|
|
puVar8 = puVar18;
|
|
if (plVar19 != (longlong *)0x0) {
|
|
puVar8 = (uint *)*plVar19;
|
|
}
|
|
cVar3 = FUN_1401f5340(puVar8,&local_1e0);
|
|
if ((cVar3 != '\0') && (*(ulonglong *)(param_1 + 0x70) < 0x14)) {
|
|
puVar8 = puVar18;
|
|
if (plVar19 != (longlong *)0x0) {
|
|
puVar8 = (uint *)*plVar19;
|
|
}
|
|
local_e8 = local_e0;
|
|
FUN_14016ac90(&local_e8,(undefined1 *)((longlong)puVar8 + 0x52),3);
|
|
puVar2 = local_e8;
|
|
FUN_14016d8c0();
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
local_1f0 = (uint *)PTR_DAT_140344098;
|
|
uVar5 = FUN_14016d7e0(puVar2);
|
|
puVar10 = puVar18;
|
|
if ((puVar8 != (uint *)0x0) && (puVar10 = (uint *)0x0, puVar8 != (uint *)PTR_DAT_140344098)) {
|
|
puVar10 = (uint *)(ulonglong)*(uint *)((longlong)puVar8 + -8);
|
|
}
|
|
uVar4 = uVar5;
|
|
if ((((int)uVar5 <= (int)puVar10) && (uVar4 = uVar15, puVar8 != (uint *)0x0)) &&
|
|
(puVar8 != (uint *)PTR_DAT_140344098)) {
|
|
uVar4 = *(uint *)((longlong)puVar8 + -8);
|
|
}
|
|
uVar21 = 1;
|
|
if (1 < (int)uVar4) {
|
|
uVar21 = uVar4;
|
|
}
|
|
uVar4 = uVar15;
|
|
if ((puVar8 != (uint *)0x0) && (puVar8 != (uint *)PTR_DAT_140344098)) {
|
|
uVar4 = *(uint *)((longlong)puVar8 + -8);
|
|
}
|
|
if ((int)uVar4 < (int)uVar21) {
|
|
if (puVar8 == (uint *)0x0) {
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
local_1f0 = puVar8;
|
|
if ((int)uVar21 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar21 == 0) {
|
|
FUN_14004f5a0(&local_1f0);
|
|
puVar8 = local_1f0;
|
|
}
|
|
else {
|
|
uVar4 = uVar15;
|
|
if ((puVar8 != (uint *)0x0) && (puVar8 != (uint *)PTR_DAT_140344098)) {
|
|
uVar4 = puVar8[-2];
|
|
}
|
|
if (uVar21 != uVar4) {
|
|
puVar10 = (uint *)FUN_14016d940((longlong)(int)uVar21 + 9);
|
|
if (puVar10 != (uint *)0x0) {
|
|
*puVar10 = 0;
|
|
puVar10[1] = 1;
|
|
}
|
|
*puVar10 = uVar21;
|
|
uVar4 = uVar16;
|
|
if ((puVar8 != (uint *)0x0) && (puVar8 != (uint *)PTR_DAT_140344098)) {
|
|
uVar4 = puVar8[-2];
|
|
}
|
|
puVar11 = (uint *)PTR_DAT_140344098;
|
|
if ((int)uVar21 < (int)uVar4) {
|
|
LAB_1401f7f82:
|
|
if (puVar8 != (uint *)0x0) {
|
|
puVar11 = puVar8;
|
|
}
|
|
}
|
|
else {
|
|
uVar21 = uVar17;
|
|
if (puVar8 != (uint *)0x0) {
|
|
if (puVar8 != (uint *)PTR_DAT_140344098) {
|
|
uVar21 = puVar8[-2];
|
|
}
|
|
goto LAB_1401f7f82;
|
|
}
|
|
}
|
|
puVar8 = puVar10 + 2;
|
|
FUN_14016d810(puVar8,puVar11,uVar21);
|
|
FUN_14004f5a0(&local_1f0);
|
|
local_1f0 = puVar8;
|
|
}
|
|
}
|
|
}
|
|
if (((puVar8 == (uint *)0x0) || (puVar8 == (uint *)PTR_DAT_140344098)) ||
|
|
(puVar10 = puVar8 + -2, puVar10 == (uint *)0x0)) {
|
|
puVar12 = (undefined8 *)FUN_14016d940();
|
|
*puVar12 = 0;
|
|
*(undefined1 *)(puVar12 + 1) = 0;
|
|
if (puVar12 != (undefined8 *)0x0) {
|
|
*(undefined4 *)puVar12 = 0;
|
|
*(undefined4 *)((longlong)puVar12 + 4) = 1;
|
|
}
|
|
puVar11 = (uint *)(puVar12 + 1);
|
|
*(undefined1 *)puVar11 = 0;
|
|
puVar20 = puVar11;
|
|
}
|
|
else {
|
|
puVar11 = puVar8;
|
|
puVar20 = local_1f0;
|
|
if (1 < (int)puVar8[-1]) {
|
|
if ((int)*puVar10 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
puVar11 = (uint *)FUN_14016d940((longlong)(int)*puVar10 + 9);
|
|
if (puVar11 != (uint *)0x0) {
|
|
*puVar11 = 0;
|
|
puVar11[1] = 1;
|
|
}
|
|
uVar17 = uVar16;
|
|
if (puVar8 != (uint *)PTR_DAT_140344098) {
|
|
uVar17 = *puVar10;
|
|
}
|
|
*puVar11 = uVar17;
|
|
puVar20 = puVar18;
|
|
if (puVar8 != (uint *)PTR_DAT_140344098) {
|
|
puVar20 = (uint *)(ulonglong)*puVar10;
|
|
}
|
|
puVar11 = puVar11 + 2;
|
|
FUN_14016d810(puVar11,puVar8,puVar20);
|
|
param_1 = local_1d8;
|
|
puVar20 = puVar11;
|
|
if ((puVar8 != (uint *)PTR_DAT_140344098) && (puVar10 != (uint *)0x0)) {
|
|
uVar9 = FUN_14016d8c0();
|
|
local_158 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_150 = 1;
|
|
puVar8 = puVar8 + -1;
|
|
*puVar8 = *puVar8 - 1;
|
|
if (*puVar8 == 0) {
|
|
FUN_14016d970(puVar10);
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
local_150 = 0;
|
|
param_1 = local_1d8;
|
|
}
|
|
}
|
|
}
|
|
local_1f0 = puVar20;
|
|
puVar8 = puVar11;
|
|
if (puVar11 == (uint *)0x0) {
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
FUN_14016d810(puVar8,puVar2,uVar5);
|
|
puVar8 = puVar11;
|
|
if (puVar11 == (uint *)0x0) {
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
uVar5 = FUN_14016d7e0(puVar8);
|
|
uVar17 = uVar16;
|
|
if (0 < (int)uVar5) {
|
|
uVar17 = uVar5;
|
|
}
|
|
uVar5 = uVar15;
|
|
if ((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_140344098)) {
|
|
uVar5 = puVar11[-2];
|
|
}
|
|
if (((int)uVar17 < (int)uVar5) || (uVar17 = uVar15, puVar11 == (uint *)0x0)) {
|
|
LAB_1401f810d:
|
|
if (((puVar11 != (uint *)PTR_DAT_140344098) && (puVar11 != (uint *)0x0)) &&
|
|
(puVar8 = puVar11 + -2, puVar8 != (uint *)0x0)) {
|
|
*puVar8 = uVar17;
|
|
*(undefined1 *)((longlong)(int)uVar17 + 8 + (longlong)puVar8) = 0;
|
|
}
|
|
}
|
|
else if (puVar11 != (uint *)PTR_DAT_140344098) {
|
|
uVar17 = puVar11[-2];
|
|
goto LAB_1401f810d;
|
|
}
|
|
if (local_e8 != local_e0) {
|
|
free(local_e8);
|
|
}
|
|
lVar22 = param_1 + 0x50;
|
|
puVar8 = puVar11;
|
|
if (puVar11 == (uint *)0x0) {
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
local_170 = lVar22;
|
|
if (puVar8 == (uint *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14004dc60(0x80004005);
|
|
}
|
|
puVar8 = puVar11;
|
|
if (puVar11 == (uint *)0x0) {
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
cVar3 = (char)*puVar8;
|
|
puVar10 = puVar18;
|
|
while (cVar3 != '\0') {
|
|
puVar10 = (uint *)(ulonglong)(uint)((int)puVar10 * 0x21 + (int)cVar3);
|
|
puVar8 = (uint *)((longlong)puVar8 + 1);
|
|
cVar3 = *(char *)puVar8;
|
|
}
|
|
uVar1 = (ulonglong)puVar10 % (ulonglong)*(uint *)(param_1 + 0x78);
|
|
if (*(longlong *)(param_1 + 0x58) != 0) {
|
|
for (plVar13 = *(longlong **)(*(longlong *)(param_1 + 0x58) + uVar1 * 8);
|
|
(plVar13 != (longlong *)0x0 &&
|
|
((uint)uVar1 == *(uint *)(plVar13 + 4) % *(uint *)(param_1 + 0x78)));
|
|
plVar13 = (longlong *)plVar13[2]) {
|
|
puVar14 = (undefined *)*plVar13;
|
|
if ((undefined *)*plVar13 == (undefined *)0x0) {
|
|
puVar14 = PTR_DAT_140344098;
|
|
}
|
|
iVar6 = FUN_14016d840(puVar14);
|
|
if (iVar6 == 0) {
|
|
local_178 = plVar13;
|
|
if (plVar13 != (longlong *)0x0) goto LAB_1401f8342;
|
|
goto LAB_1401f820b;
|
|
}
|
|
}
|
|
}
|
|
local_178 = (longlong *)0x0;
|
|
LAB_1401f820b:
|
|
puVar8 = puVar11;
|
|
if (puVar11 == (uint *)0x0) {
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
local_160 = lVar22;
|
|
if (puVar8 == (uint *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14004dc60(0x80004005);
|
|
}
|
|
puVar8 = puVar11;
|
|
if (puVar11 == (uint *)0x0) {
|
|
puVar8 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
cVar3 = (char)*puVar8;
|
|
puVar10 = puVar18;
|
|
while (cVar3 != '\0') {
|
|
puVar10 = (uint *)(ulonglong)(uint)((int)puVar10 * 0x21 + (int)cVar3);
|
|
puVar8 = (uint *)((longlong)puVar8 + 1);
|
|
cVar3 = *(char *)puVar8;
|
|
}
|
|
uVar1 = (ulonglong)puVar10 % (ulonglong)*(uint *)(param_1 + 0x78);
|
|
if (*(longlong *)(param_1 + 0x58) != 0) {
|
|
for (plVar13 = *(longlong **)(*(longlong *)(param_1 + 0x58) + uVar1 * 8);
|
|
(plVar13 != (longlong *)0x0 &&
|
|
((uint)uVar1 == *(uint *)(plVar13 + 4) % *(uint *)(param_1 + 0x78)));
|
|
plVar13 = (longlong *)plVar13[2]) {
|
|
puVar14 = (undefined *)*plVar13;
|
|
if ((undefined *)*plVar13 == (undefined *)0x0) {
|
|
puVar14 = PTR_DAT_140344098;
|
|
}
|
|
iVar6 = FUN_14016d840(puVar14);
|
|
if (iVar6 == 0) {
|
|
local_168 = plVar13;
|
|
if (plVar13 != (longlong *)0x0) goto LAB_1401f8342;
|
|
goto LAB_1401f82c4;
|
|
}
|
|
}
|
|
}
|
|
local_168 = (longlong *)0x0;
|
|
LAB_1401f82c4:
|
|
plVar13 = (longlong *)FUN_1401f7560(lVar22,&local_1f0);
|
|
if (plVar19 != (longlong *)*plVar13) {
|
|
if (plVar19 != (longlong *)0x0) {
|
|
plVar19[1] = plVar19[1] + 1;
|
|
puVar11 = local_1f0;
|
|
plVar19 = local_1e8;
|
|
}
|
|
puVar8 = puVar18;
|
|
if ((*plVar13 != 0) &&
|
|
(*(longlong *)(*plVar13 + 8) = *(longlong *)(*plVar13 + 8) + -1, puVar11 = local_1f0,
|
|
plVar19 = local_1e8, *(longlong *)(*plVar13 + 8) == 0)) {
|
|
puVar8 = (uint *)*plVar13;
|
|
}
|
|
*plVar13 = (longlong)plVar19;
|
|
if (puVar8 != (uint *)0x0) {
|
|
puVar12 = *(undefined8 **)puVar8;
|
|
if (puVar12 != (undefined8 *)0x0) {
|
|
(**(code **)*puVar12)(puVar12,1);
|
|
}
|
|
FUN_14016d970(puVar8);
|
|
}
|
|
}
|
|
LAB_1401f8342:
|
|
if (((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_140344098)) &&
|
|
(puVar11 + -2 != (uint *)0x0)) {
|
|
uVar9 = FUN_14016d8c0();
|
|
local_188 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_180 = 1;
|
|
puVar8 = puVar11 + -1;
|
|
*puVar8 = *puVar8 - 1;
|
|
if (*puVar8 == 0) {
|
|
FUN_14016d970(puVar11 + -2);
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
local_180 = 0;
|
|
}
|
|
local_1f0 = (uint *)PTR_DAT_140344098;
|
|
param_1 = local_1d8;
|
|
puVar12 = local_1a0;
|
|
}
|
|
dVar23 = (double)FUN_1401eac50(*(undefined8 *)(param_1 + 8));
|
|
param_2 = local_1b0;
|
|
if (3.0 < dVar23 - *(double *)(local_1b0 + 200)) {
|
|
if ((undefined8 *)*puVar12 != (undefined8 *)0x0) {
|
|
puVar18 = *(uint **)*puVar12;
|
|
}
|
|
FUN_14019c630(puVar18);
|
|
plVar13 = local_1e8;
|
|
*(undefined4 *)(param_2 + 0x18) = 3;
|
|
if (plVar19 != (longlong *)0x0) {
|
|
plVar19 = plVar19 + 1;
|
|
*plVar19 = *plVar19 + -1;
|
|
if (*plVar19 == 0) {
|
|
puVar12 = (undefined8 *)*local_1e8;
|
|
if (puVar12 != (undefined8 *)0x0) {
|
|
(**(code **)*puVar12)(puVar12,1);
|
|
}
|
|
FUN_14016d970(plVar13);
|
|
}
|
|
}
|
|
puVar18 = local_1f8;
|
|
if (((local_1f8 != (uint *)0x0) && (local_1f8 != (uint *)PTR_DAT_140344098)) &&
|
|
(puVar8 = local_1f8 + -2, puVar8 != (uint *)0x0)) {
|
|
uVar9 = FUN_14016d8c0();
|
|
local_100 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_f8 = 1;
|
|
puVar18 = puVar18 + -1;
|
|
*puVar18 = *puVar18 - 1;
|
|
if (*puVar18 == 0) {
|
|
FUN_14016d970(puVar8);
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
}
|
|
return;
|
|
}
|
|
FUN_1401f6490(param_1);
|
|
plVar13 = local_1e8;
|
|
if (plVar19 != (longlong *)0x0) {
|
|
plVar19 = plVar19 + 1;
|
|
*plVar19 = *plVar19 + -1;
|
|
if (*plVar19 == 0) {
|
|
if ((undefined8 *)*local_1e8 != (undefined8 *)0x0) {
|
|
(*(code *)**(undefined8 **)*local_1e8)();
|
|
}
|
|
FUN_14016d970(plVar13);
|
|
}
|
|
}
|
|
puVar8 = local_1f8;
|
|
if (((local_1f8 != (uint *)0x0) && (local_1f8 != (uint *)PTR_DAT_140344098)) &&
|
|
(puVar10 = local_1f8 + -2, puVar10 != (uint *)0x0)) {
|
|
uVar9 = FUN_14016d8c0();
|
|
local_128 = uVar9;
|
|
FUN_14016db50(uVar9);
|
|
local_120 = 1;
|
|
puVar8 = puVar8 + -1;
|
|
*puVar8 = *puVar8 - 1;
|
|
if (*puVar8 == 0) {
|
|
FUN_14016d970(puVar10);
|
|
}
|
|
FUN_14016dbe0(uVar9);
|
|
local_120 = 0;
|
|
}
|
|
local_1f8 = (uint *)PTR_DAT_140344098;
|
|
} while( true );
|
|
}
|
|
|