765 lines
31 KiB
C
765 lines
31 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400ed420 FUN_1400ed420
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
/* WARNING: Type propagation algorithm not settling */
|
|
|
|
void FUN_1400ed420(uint *******param_1,longlong param_2,undefined8 param_3,uint ******param_4)
|
|
|
|
{
|
|
uint ***********pppppppppppuVar1;
|
|
char cVar2;
|
|
uint ***********pppppppppppuVar3;
|
|
char *pcVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
uint uVar8;
|
|
int iVar9;
|
|
undefined8 uVar10;
|
|
int *piVar11;
|
|
undefined8 *puVar12;
|
|
void *_Src;
|
|
undefined8 *puVar13;
|
|
uint ************ppppppppppppuVar14;
|
|
int *piVar15;
|
|
uint *puVar16;
|
|
uint *************pppppppppppppuVar17;
|
|
longlong *plVar18;
|
|
uint *************pppppppppppppuVar19;
|
|
uint ***********pppppppppppuVar20;
|
|
char **ppcVar21;
|
|
uint *************pppppppppppppuVar22;
|
|
uint *************pppppppppppppuVar23;
|
|
uint *************pppppppppppppuVar24;
|
|
uint *************pppppppppppppuVar25;
|
|
undefined8 uVar26;
|
|
LPCWSTR pWVar27;
|
|
uint *************pppppppppppppuVar28;
|
|
uint *************pppppppppppppuVar29;
|
|
longlong lVar30;
|
|
size_t _Size;
|
|
uint uVar31;
|
|
uint uVar32;
|
|
ulonglong uVar33;
|
|
double dVar34;
|
|
undefined1 auStack_218 [32];
|
|
uint ***********local_1f8;
|
|
uint *************local_1f0;
|
|
uint *************local_1e8;
|
|
uint *************local_1e0;
|
|
uint *************local_1d8;
|
|
undefined8 local_1d0;
|
|
undefined **local_1c8;
|
|
undefined4 local_1c0;
|
|
undefined2 local_1bc;
|
|
int local_1b8;
|
|
longlong local_1b0;
|
|
longlong local_1a8;
|
|
longlong *local_1a0;
|
|
int *local_198;
|
|
undefined1 local_190;
|
|
int *local_188;
|
|
undefined1 local_180;
|
|
uint ***********local_178;
|
|
uint *************local_170;
|
|
uint ***********local_168;
|
|
uint *************local_160;
|
|
int *local_158;
|
|
undefined1 local_150;
|
|
int *local_148;
|
|
undefined1 local_140;
|
|
int *local_138;
|
|
undefined1 local_130;
|
|
int *local_128;
|
|
undefined1 local_120;
|
|
undefined8 local_118;
|
|
uint ************local_110;
|
|
uint *************local_108;
|
|
int *local_100;
|
|
undefined1 local_f8;
|
|
char *local_e8;
|
|
char local_e0 [136];
|
|
ulonglong local_58;
|
|
|
|
local_118 = 0xfffffffffffffffe;
|
|
local_58 = DAT_1401ac5a0 ^ (ulonglong)auStack_218;
|
|
plVar18 = (longlong *)(param_2 + 0x10);
|
|
pppppppppppppuVar24 = (uint *************)0x0;
|
|
uVar31 = 0;
|
|
local_1d8 = (uint *************)param_1;
|
|
local_1b0 = param_2;
|
|
local_1a0 = plVar18;
|
|
do {
|
|
local_1c8 = Proud::AddrPort::vftable;
|
|
uVar32 = 0;
|
|
local_1b8 = 0;
|
|
local_1d0 = 0;
|
|
local_1c0 = DAT_1401ac3d0;
|
|
local_1bc = DAT_1401ac3d4;
|
|
pppppppppppppuVar28 = pppppppppppppuVar24;
|
|
if ((undefined8 *)*plVar18 != (undefined8 *)0x0) {
|
|
pppppppppppppuVar28 = *(uint **************)*plVar18;
|
|
}
|
|
puVar12 = &local_1d0;
|
|
uVar26 = 0;
|
|
uVar10 = FUN_140071c80((longlong)pppppppppppppuVar28,0,(undefined4 *)puVar12);
|
|
if ((char)uVar10 == '\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_14006e8a0(plVar18,&local_1a8);
|
|
return;
|
|
}
|
|
FUN_14006cb70(pppppppppppppuVar28,uVar26,puVar12,param_4);
|
|
local_1f8 = (uint ***********)PTR_DAT_1401ac008;
|
|
local_110 = &local_1f8;
|
|
uVar8 = local_1b8 + 2U;
|
|
if ((int)(local_1b8 + 2U) < 1) {
|
|
uVar8 = uVar32;
|
|
}
|
|
uVar5 = 1;
|
|
if (1 < (int)uVar8) {
|
|
uVar5 = uVar8;
|
|
}
|
|
pppppppppppppuVar28 = (uint *************)local_1f8;
|
|
if (0 < (int)uVar5) {
|
|
if ((int)uVar5 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
if (uVar5 == 0) {
|
|
pppppppppppppuVar28 = (uint *************)local_1f8;
|
|
}
|
|
else {
|
|
puVar16 = (uint *)FUN_14006cbf0((longlong)(int)uVar5 + 9);
|
|
if (puVar16 != (uint *)0x0) {
|
|
*puVar16 = 0;
|
|
puVar16[1] = 1;
|
|
}
|
|
*puVar16 = uVar5;
|
|
uVar8 = uVar32;
|
|
if ((local_1f8 != (uint ***********)0x0) &&
|
|
(local_1f8 != (uint ***********)PTR_DAT_1401ac008)) {
|
|
uVar8 = *(uint *)(local_1f8 + -1);
|
|
}
|
|
pppppppppppuVar20 = (uint ***********)PTR_DAT_1401ac008;
|
|
if ((int)uVar5 < (int)uVar8) {
|
|
LAB_1400ed597:
|
|
if (local_1f8 != (uint ***********)0x0) {
|
|
pppppppppppuVar20 = local_1f8;
|
|
}
|
|
}
|
|
else {
|
|
uVar5 = uVar32;
|
|
if (local_1f8 != (uint ***********)0x0) {
|
|
if (local_1f8 != (uint ***********)PTR_DAT_1401ac008) {
|
|
uVar5 = *(uint *)(local_1f8 + -1);
|
|
}
|
|
goto LAB_1400ed597;
|
|
}
|
|
}
|
|
pppppppppppppuVar28 = (uint *************)(puVar16 + 2);
|
|
uVar33 = (ulonglong)uVar5;
|
|
pppppppppppppuVar29 = pppppppppppppuVar28;
|
|
param_4 = (uint ******)pppppppppppuVar20;
|
|
FUN_14006cac0(pppppppppppppuVar28,pppppppppppuVar20,uVar5);
|
|
pppppppppppuVar3 = local_1f8;
|
|
if (((local_1f8 != (uint ***********)0x0) &&
|
|
(local_1f8 != (uint ***********)PTR_DAT_1401ac008)) &&
|
|
(pppppppppppuVar1 = local_1f8 + -1, pppppppppppuVar1 != (uint ***********)0x0)) {
|
|
piVar11 = (int *)FUN_14006cb70(pppppppppppppuVar29,pppppppppppuVar20,uVar33,param_4);
|
|
local_138 = piVar11;
|
|
FUN_14006b350(piVar11);
|
|
local_130 = 1;
|
|
piVar15 = (int *)((longlong)pppppppppppuVar3 + -4);
|
|
*piVar15 = *piVar15 + -1;
|
|
if (*piVar15 == 0) {
|
|
FUN_14006cc60(pppppppppppuVar1);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar11);
|
|
local_130 = 0;
|
|
}
|
|
}
|
|
}
|
|
local_1f8 = (uint ***********)pppppppppppppuVar28;
|
|
pppppppppppuVar20 = (uint ***********)PTR_DAT_1401ac008;
|
|
if (((local_1f8 == (uint ***********)0x0) ||
|
|
(pppppppppppuVar20 = local_1f8, local_1f8 == (uint ***********)PTR_DAT_1401ac008)) ||
|
|
(local_1f8 + -1 == (uint ***********)0x0)) {
|
|
local_1f8 = pppppppppppuVar20;
|
|
puVar12 = (undefined8 *)FUN_14006cbf0(9);
|
|
*puVar12 = 0;
|
|
*(undefined1 *)(puVar12 + 1) = 0;
|
|
if (puVar12 != (undefined8 *)0x0) {
|
|
*(undefined4 *)puVar12 = 0;
|
|
*(undefined4 *)((longlong)puVar12 + 4) = 1;
|
|
}
|
|
*(undefined1 *)(puVar12 + 1) = 0;
|
|
pppppppppppppuVar28 = (uint *************)(puVar12 + 1);
|
|
}
|
|
else {
|
|
pppppppppppppuVar28 = (uint *************)local_1f8;
|
|
if (1 < (int)*(uint *)((longlong)local_1f8 + -4)) {
|
|
uVar8 = *(uint *)(local_1f8 + -1);
|
|
if ((int)uVar8 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
puVar16 = (uint *)FUN_14006cbf0((longlong)(int)uVar8 + 9);
|
|
if (puVar16 != (uint *)0x0) {
|
|
*puVar16 = 0;
|
|
puVar16[1] = 1;
|
|
}
|
|
uVar8 = uVar31;
|
|
if ((local_1f8 != (uint ***********)0x0) &&
|
|
(local_1f8 != (uint ***********)PTR_DAT_1401ac008)) {
|
|
uVar8 = *(uint *)(local_1f8 + -1);
|
|
}
|
|
*puVar16 = uVar8;
|
|
pppppppppppuVar20 = (uint ***********)PTR_DAT_1401ac008;
|
|
pppppppppppppuVar29 = pppppppppppppuVar24;
|
|
if ((local_1f8 != (uint ***********)0x0) &&
|
|
(pppppppppppuVar20 = local_1f8, pppppppppppppuVar29 = (uint *************)0x0,
|
|
local_1f8 != (uint ***********)PTR_DAT_1401ac008)) {
|
|
pppppppppppppuVar29 = (uint *************)(ulonglong)*(uint *)(local_1f8 + -1);
|
|
}
|
|
pppppppppppppuVar28 = (uint *************)(puVar16 + 2);
|
|
pppppppppppppuVar19 = pppppppppppppuVar28;
|
|
FUN_14006cac0(pppppppppppppuVar28,pppppppppppuVar20,(int)pppppppppppppuVar29);
|
|
pppppppppppuVar3 = local_1f8;
|
|
if (((local_1f8 != (uint ***********)0x0) &&
|
|
(local_1f8 != (uint ***********)PTR_DAT_1401ac008)) &&
|
|
(pppppppppppppuVar25 = (uint *************)(local_1f8 + -1),
|
|
pppppppppppppuVar25 != (uint *************)0x0)) {
|
|
piVar15 = (int *)FUN_14006cb70(pppppppppppppuVar19,pppppppppppuVar20,pppppppppppppuVar29,
|
|
param_4);
|
|
local_198 = piVar15;
|
|
FUN_14006b350(piVar15);
|
|
local_190 = 1;
|
|
puVar16 = (uint *)((longlong)pppppppppppuVar3 + -4);
|
|
*puVar16 = *puVar16 - 1;
|
|
if (*puVar16 == 0) {
|
|
FUN_14006cc60(pppppppppppppuVar25);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar15);
|
|
local_190 = 0;
|
|
}
|
|
}
|
|
}
|
|
local_1f8 = (uint ***********)pppppppppppppuVar28;
|
|
pppppppppppuVar20 = local_1f8;
|
|
if (local_1f8 == (uint ***********)0x0) {
|
|
pppppppppppuVar20 = (uint ***********)PTR_DAT_1401ac008;
|
|
}
|
|
pppppppppppppuVar28 = pppppppppppppuVar24;
|
|
if ((undefined8 *)*plVar18 != (undefined8 *)0x0) {
|
|
pppppppppppppuVar28 = *(uint **************)*plVar18;
|
|
}
|
|
_Size = (size_t)local_1b8;
|
|
local_108 = (uint *************)pppppppppppuVar20;
|
|
_Src = (void *)FUN_140072240((longlong)pppppppppppppuVar28);
|
|
memcpy(pppppppppppuVar20,_Src,_Size);
|
|
*(undefined1 *)((longlong)local_1b8 + (longlong)pppppppppppuVar20) = 0;
|
|
pppppppppppuVar20 = local_1f8;
|
|
if (local_1f8 == (uint ***********)0x0) {
|
|
pppppppppppuVar20 = (uint ***********)PTR_DAT_1401ac008;
|
|
}
|
|
uVar5 = FUN_14006ca90((char *)pppppppppppuVar20);
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
uVar8 = uVar31;
|
|
if (0 < (int)uVar5) {
|
|
uVar8 = uVar5;
|
|
}
|
|
pppppppppppppuVar29 = pppppppppppppuVar24;
|
|
if ((local_1f8 != (uint ***********)0x0) &&
|
|
(pppppppppppppuVar29 = (uint *************)0x0,
|
|
local_1f8 != (uint ***********)PTR_DAT_1401ac008)) {
|
|
pppppppppppppuVar29 = (uint *************)(ulonglong)*(uint *)(local_1f8 + -1);
|
|
}
|
|
if (((int)uVar8 < (int)pppppppppppppuVar29) ||
|
|
(uVar8 = uVar31, local_1f8 == (uint ***********)0x0)) {
|
|
LAB_1400ed7ba:
|
|
if (((local_1f8 != (uint ***********)PTR_DAT_1401ac008) &&
|
|
(local_1f8 != (uint ***********)0x0)) &&
|
|
(pppppppppppppuVar29 = (uint *************)(local_1f8 + -1),
|
|
pppppppppppppuVar29 != (uint *************)0x0)) {
|
|
*(uint *)pppppppppppppuVar29 = uVar8;
|
|
*(undefined1 *)((longlong)(int)uVar8 + 8 + (longlong)pppppppppppppuVar29) = 0;
|
|
}
|
|
}
|
|
else if (local_1f8 != (uint ***********)PTR_DAT_1401ac008) {
|
|
uVar8 = *(uint *)(local_1f8 + -1);
|
|
goto LAB_1400ed7ba;
|
|
}
|
|
puVar12 = (undefined8 *)0x2540;
|
|
puVar13 = operator_new(0x2540);
|
|
ppppppppppppuVar14 = (uint ************)pppppppppppppuVar24;
|
|
local_1e8 = (uint *************)puVar13;
|
|
if (puVar13 != (undefined8 *)0x0) {
|
|
ppppppppppppuVar14 =
|
|
(uint ************)FUN_1400eb250(puVar13,pppppppppppppuVar29,pppppppppppppuVar28,param_4)
|
|
;
|
|
puVar12 = puVar13;
|
|
}
|
|
if (ppppppppppppuVar14 == (uint ************)0x0) {
|
|
local_1e8 = (uint *************)0x0;
|
|
}
|
|
else {
|
|
puVar12 = (undefined8 *)0x10;
|
|
local_1e8 = (uint *************)FUN_14006cbf0(0x10);
|
|
local_1e8[1] = (uint ************)0x1;
|
|
*local_1e8 = ppppppppppppuVar14;
|
|
}
|
|
pppppppppppppuVar19 = local_1e8;
|
|
FUN_14006cb70(puVar12,pppppppppppppuVar29,pppppppppppppuVar28,param_4);
|
|
local_1e0 = (uint *************)PTR_DAT_1401ac008;
|
|
if (PTR_DAT_1401ac008 == (undefined *)0x0) {
|
|
local_1e0 = pppppppppppppuVar24;
|
|
}
|
|
if (local_1f8 != (uint ***********)PTR_DAT_1401ac008) {
|
|
piVar15 = (int *)FUN_14006cb70(puVar12,pppppppppppppuVar29,pppppppppppppuVar28,param_4);
|
|
local_148 = piVar15;
|
|
FUN_14006b350(piVar15);
|
|
local_140 = 1;
|
|
FUN_140008440((longlong *)&local_1e0);
|
|
local_1e0 = (uint *************)local_1f8;
|
|
if (((local_1f8 != (uint ***********)PTR_DAT_1401ac008) &&
|
|
(local_1f8 != (uint ***********)0x0)) && (local_1f8 != (uint ***********)0x8)) {
|
|
*(uint *)((longlong)local_1f8 + -4) = *(uint *)((longlong)local_1f8 + -4) + 1;
|
|
}
|
|
FUN_14006b3e0((longlong)piVar15);
|
|
local_140 = 0;
|
|
}
|
|
ppppppppppppuVar14 = (uint ************)pppppppppppppuVar24;
|
|
if (pppppppppppppuVar19 != (uint *************)0x0) {
|
|
ppppppppppppuVar14 = *pppppppppppppuVar19;
|
|
}
|
|
pppppppppppppuVar29 = (uint *************)&local_1e0;
|
|
uVar10 = FUN_1400ead90((longlong)ppppppppppppuVar14,(longlong *)pppppppppppppuVar29,
|
|
pppppppppppppuVar28,(ulonglong)param_4);
|
|
if (((char)uVar10 != '\0') && (param_1[0xe] < (uint ************)0x14)) {
|
|
ppppppppppppuVar14 = (uint ************)pppppppppppppuVar24;
|
|
if (pppppppppppppuVar19 != (uint *************)0x0) {
|
|
ppppppppppppuVar14 = *pppppppppppppuVar19;
|
|
}
|
|
local_e8 = local_e0;
|
|
pWVar27 = (LPCWSTR)((longlong)ppppppppppppuVar14 + 0x52);
|
|
uVar10 = 3;
|
|
ppcVar21 = &local_e8;
|
|
FUN_14006b570((longlong *)ppcVar21,pWVar27,3);
|
|
pcVar4 = local_e8;
|
|
FUN_14006cb70(ppcVar21,pWVar27,uVar10,param_4);
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
local_1f0 = (uint *************)PTR_DAT_1401ac008;
|
|
uVar5 = FUN_14006ca90(pcVar4);
|
|
uVar8 = uVar31;
|
|
if ((pppppppppppppuVar28 != (uint *************)0x0) &&
|
|
(pppppppppppppuVar28 != (uint *************)PTR_DAT_1401ac008)) {
|
|
uVar8 = *(uint *)((longlong)pppppppppppppuVar28 + -8);
|
|
}
|
|
uVar6 = uVar5;
|
|
if ((((int)uVar5 <= (int)uVar8) &&
|
|
(uVar6 = uVar32, pppppppppppppuVar28 != (uint *************)0x0)) &&
|
|
(pppppppppppppuVar28 != (uint *************)PTR_DAT_1401ac008)) {
|
|
uVar6 = *(uint *)((longlong)pppppppppppppuVar28 + -8);
|
|
}
|
|
uVar8 = 1;
|
|
if (1 < (int)uVar6) {
|
|
uVar8 = uVar6;
|
|
}
|
|
uVar7 = 0;
|
|
uVar6 = uVar7;
|
|
if ((pppppppppppppuVar28 != (uint *************)0x0) &&
|
|
(pppppppppppppuVar28 != (uint *************)PTR_DAT_1401ac008)) {
|
|
uVar6 = *(uint *)((longlong)pppppppppppppuVar28 + -8);
|
|
}
|
|
if ((int)uVar6 < (int)uVar8) {
|
|
if (pppppppppppppuVar28 == (uint *************)0x0) {
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
}
|
|
local_1f0 = pppppppppppppuVar28;
|
|
if ((int)uVar8 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
if (uVar8 == 0) {
|
|
FUN_140008440((longlong *)&local_1f0);
|
|
pppppppppppppuVar28 = local_1f0;
|
|
}
|
|
else {
|
|
uVar6 = uVar7;
|
|
if ((pppppppppppppuVar28 != (uint *************)0x0) &&
|
|
(pppppppppppppuVar28 != (uint *************)PTR_DAT_1401ac008)) {
|
|
uVar6 = *(uint *)(pppppppppppppuVar28 + -1);
|
|
}
|
|
if (uVar8 != uVar6) {
|
|
puVar16 = (uint *)FUN_14006cbf0((longlong)(int)uVar8 + 9);
|
|
if (puVar16 != (uint *)0x0) {
|
|
*puVar16 = 0;
|
|
puVar16[1] = 1;
|
|
}
|
|
*puVar16 = uVar8;
|
|
uVar6 = uVar7;
|
|
if ((pppppppppppppuVar28 != (uint *************)0x0) &&
|
|
(pppppppppppppuVar28 != (uint *************)PTR_DAT_1401ac008)) {
|
|
uVar6 = *(uint *)(pppppppppppppuVar28 + -1);
|
|
}
|
|
pppppppppppppuVar29 = (uint *************)PTR_DAT_1401ac008;
|
|
if ((int)uVar8 < (int)uVar6) {
|
|
LAB_1400ed9e2:
|
|
if (pppppppppppppuVar28 != (uint *************)0x0) {
|
|
pppppppppppppuVar29 = pppppppppppppuVar28;
|
|
}
|
|
}
|
|
else {
|
|
uVar8 = uVar32;
|
|
if (pppppppppppppuVar28 != (uint *************)0x0) {
|
|
if (pppppppppppppuVar28 != (uint *************)PTR_DAT_1401ac008) {
|
|
uVar8 = *(uint *)(pppppppppppppuVar28 + -1);
|
|
}
|
|
goto LAB_1400ed9e2;
|
|
}
|
|
}
|
|
pppppppppppppuVar28 = (uint *************)(puVar16 + 2);
|
|
FUN_14006cac0(pppppppppppppuVar28,pppppppppppppuVar29,uVar8);
|
|
FUN_140008440((longlong *)&local_1f0);
|
|
local_1f0 = pppppppppppppuVar28;
|
|
}
|
|
}
|
|
}
|
|
if (((pppppppppppppuVar28 == (uint *************)0x0) ||
|
|
(pppppppppppppuVar28 == (uint *************)PTR_DAT_1401ac008)) ||
|
|
(pppppppppppppuVar29 = pppppppppppppuVar28 + -1,
|
|
pppppppppppppuVar29 == (uint *************)0x0)) {
|
|
puVar12 = (undefined8 *)FUN_14006cbf0(9);
|
|
*puVar12 = 0;
|
|
*(undefined1 *)(puVar12 + 1) = 0;
|
|
if (puVar12 != (undefined8 *)0x0) {
|
|
*(undefined4 *)puVar12 = 0;
|
|
*(undefined4 *)((longlong)puVar12 + 4) = 1;
|
|
}
|
|
pppppppppppppuVar25 = (uint *************)(puVar12 + 1);
|
|
*(undefined1 *)pppppppppppppuVar25 = 0;
|
|
pppppppppppppuVar23 = pppppppppppppuVar25;
|
|
}
|
|
else {
|
|
pppppppppppppuVar25 = pppppppppppppuVar28;
|
|
pppppppppppppuVar23 = local_1f0;
|
|
if (1 < (int)*(uint *)((longlong)pppppppppppppuVar28 + -4)) {
|
|
if ((int)*(uint *)pppppppppppppuVar29 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
puVar16 = (uint *)FUN_14006cbf0((longlong)(int)*(uint *)pppppppppppppuVar29 + 9);
|
|
if (puVar16 != (uint *)0x0) {
|
|
*puVar16 = 0;
|
|
puVar16[1] = 1;
|
|
}
|
|
uVar32 = uVar7;
|
|
if (pppppppppppppuVar28 != (uint *************)PTR_DAT_1401ac008) {
|
|
uVar32 = *(uint *)pppppppppppppuVar29;
|
|
}
|
|
*puVar16 = uVar32;
|
|
pppppppppppppuVar17 = pppppppppppppuVar24;
|
|
if (pppppppppppppuVar28 != (uint *************)PTR_DAT_1401ac008) {
|
|
pppppppppppppuVar17 = (uint *************)(ulonglong)*(uint *)pppppppppppppuVar29;
|
|
}
|
|
pppppppppppppuVar25 = (uint *************)(puVar16 + 2);
|
|
pppppppppppppuVar22 = pppppppppppppuVar25;
|
|
FUN_14006cac0(pppppppppppppuVar25,pppppppppppppuVar28,(int)pppppppppppppuVar17);
|
|
param_1 = (uint *******)local_1d8;
|
|
pppppppppppppuVar23 = pppppppppppppuVar25;
|
|
if ((pppppppppppppuVar28 != (uint *************)PTR_DAT_1401ac008) &&
|
|
(pppppppppppppuVar29 != (uint *************)0x0)) {
|
|
piVar15 = (int *)FUN_14006cb70(pppppppppppppuVar22,PTR_DAT_1401ac008,pppppppppppppuVar17
|
|
,param_4);
|
|
local_158 = piVar15;
|
|
FUN_14006b350(piVar15);
|
|
local_150 = 1;
|
|
puVar16 = (uint *)((longlong)pppppppppppppuVar28 + -4);
|
|
*puVar16 = *puVar16 - 1;
|
|
if (*puVar16 == 0) {
|
|
FUN_14006cc60(pppppppppppppuVar29);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar15);
|
|
local_150 = 0;
|
|
param_1 = (uint *******)local_1d8;
|
|
}
|
|
}
|
|
}
|
|
local_1f0 = pppppppppppppuVar23;
|
|
pppppppppppppuVar28 = pppppppppppppuVar25;
|
|
if (pppppppppppppuVar25 == (uint *************)0x0) {
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
}
|
|
FUN_14006cac0(pppppppppppppuVar28,pcVar4,uVar5);
|
|
pppppppppppppuVar28 = pppppppppppppuVar25;
|
|
if (pppppppppppppuVar25 == (uint *************)0x0) {
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
}
|
|
uVar8 = FUN_14006ca90((char *)pppppppppppppuVar28);
|
|
uVar32 = uVar31;
|
|
if (0 < (int)uVar8) {
|
|
uVar32 = uVar8;
|
|
}
|
|
uVar8 = uVar7;
|
|
if ((pppppppppppppuVar25 != (uint *************)0x0) &&
|
|
(pppppppppppppuVar25 != (uint *************)PTR_DAT_1401ac008)) {
|
|
uVar8 = *(uint *)(pppppppppppppuVar25 + -1);
|
|
}
|
|
if (((int)uVar32 < (int)uVar8) ||
|
|
(uVar32 = uVar7, pppppppppppppuVar25 == (uint *************)0x0)) {
|
|
LAB_1400edb6d:
|
|
if (((pppppppppppppuVar25 != (uint *************)PTR_DAT_1401ac008) &&
|
|
(pppppppppppppuVar25 != (uint *************)0x0)) &&
|
|
(pppppppppppppuVar28 = pppppppppppppuVar25 + -1,
|
|
pppppppppppppuVar28 != (uint *************)0x0)) {
|
|
*(uint *)pppppppppppppuVar28 = uVar32;
|
|
*(undefined1 *)((longlong)(int)uVar32 + 8 + (longlong)pppppppppppppuVar28) = 0;
|
|
}
|
|
}
|
|
else if (pppppppppppppuVar25 != (uint *************)PTR_DAT_1401ac008) {
|
|
uVar32 = *(uint *)(pppppppppppppuVar25 + -1);
|
|
goto LAB_1400edb6d;
|
|
}
|
|
if (local_e8 != local_e0) {
|
|
free(local_e8);
|
|
}
|
|
pppppppppppppuVar23 = (uint *************)(param_1 + 10);
|
|
pppppppppppppuVar28 = pppppppppppppuVar25;
|
|
if (pppppppppppppuVar25 == (uint *************)0x0) {
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
}
|
|
local_170 = pppppppppppppuVar23;
|
|
if (pppppppppppppuVar28 == (uint *************)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x80004005);
|
|
}
|
|
pppppppppppppuVar28 = pppppppppppppuVar25;
|
|
if (pppppppppppppuVar25 == (uint *************)0x0) {
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
}
|
|
cVar2 = *(char *)pppppppppppppuVar28;
|
|
pppppppppppppuVar17 = pppppppppppppuVar24;
|
|
while (cVar2 != '\0') {
|
|
pppppppppppppuVar17 =
|
|
(uint *************)(ulonglong)(uint)((int)pppppppppppppuVar17 * 0x21 + (int)cVar2);
|
|
pppppppppppppuVar28 = (uint *************)((longlong)pppppppppppppuVar28 + 1);
|
|
cVar2 = *(char *)pppppppppppppuVar28;
|
|
}
|
|
uVar32 = *(uint *)(param_1 + 0xf);
|
|
if ((uint ************)param_1[0xb] != (uint ************)0x0) {
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
for (pppppppppppuVar20 =
|
|
(uint ***********)param_1[0xb][(ulonglong)pppppppppppppuVar17 % (ulonglong)uVar32]
|
|
; (PTR_DAT_1401ac008 = (undefined *)pppppppppppppuVar28,
|
|
pppppppppppuVar20 != (uint ***********)0x0 &&
|
|
((uint)((ulonglong)pppppppppppppuVar17 % (ulonglong)uVar32) ==
|
|
*(uint *)(pppppppppppuVar20 + 4) % *(uint *)(param_1 + 0xf)));
|
|
pppppppppppuVar20 = (uint ***********)pppppppppppuVar20[2]) {
|
|
pppppppppppppuVar29 = pppppppppppppuVar25;
|
|
if (pppppppppppppuVar25 == (uint *************)0x0) {
|
|
pppppppppppppuVar29 = pppppppppppppuVar28;
|
|
}
|
|
pppppppppppppuVar22 = (uint *************)*pppppppppppuVar20;
|
|
if ((uint *************)*pppppppppppuVar20 == (uint *************)0x0) {
|
|
pppppppppppppuVar22 = pppppppppppppuVar28;
|
|
}
|
|
iVar9 = FUN_14006caf0((byte *)pppppppppppppuVar22,(longlong)pppppppppppppuVar29);
|
|
if (iVar9 == 0) {
|
|
local_178 = pppppppppppuVar20;
|
|
if (pppppppppppuVar20 != (uint ***********)0x0) goto LAB_1400edda2;
|
|
goto LAB_1400edc6b;
|
|
}
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
}
|
|
}
|
|
local_178 = (uint ***********)0x0;
|
|
LAB_1400edc6b:
|
|
pppppppppppppuVar28 = pppppppppppppuVar25;
|
|
if (pppppppppppppuVar25 == (uint *************)0x0) {
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
}
|
|
local_160 = pppppppppppppuVar23;
|
|
if (pppppppppppppuVar28 == (uint *************)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x80004005);
|
|
}
|
|
pppppppppppppuVar28 = pppppppppppppuVar25;
|
|
if (pppppppppppppuVar25 == (uint *************)0x0) {
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
}
|
|
cVar2 = *(char *)pppppppppppppuVar28;
|
|
pppppppppppppuVar17 = pppppppppppppuVar24;
|
|
while (cVar2 != '\0') {
|
|
pppppppppppppuVar17 =
|
|
(uint *************)(ulonglong)(uint)((int)pppppppppppppuVar17 * 0x21 + (int)cVar2);
|
|
pppppppppppppuVar28 = (uint *************)((longlong)pppppppppppppuVar28 + 1);
|
|
cVar2 = *(char *)pppppppppppppuVar28;
|
|
}
|
|
uVar32 = *(uint *)(param_1 + 0xf);
|
|
pppppppppppppuVar29 = (uint *************)PTR_DAT_1401ac008;
|
|
if ((uint ************)param_1[0xb] != (uint ************)0x0) {
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
for (pppppppppppuVar20 =
|
|
(uint ***********)param_1[0xb][(ulonglong)pppppppppppppuVar17 % (ulonglong)uVar32]
|
|
; (PTR_DAT_1401ac008 = (undefined *)pppppppppppppuVar28,
|
|
pppppppppppuVar20 != (uint ***********)0x0 &&
|
|
(pppppppppppppuVar29 = pppppppppppppuVar28,
|
|
(uint)((ulonglong)pppppppppppppuVar17 % (ulonglong)uVar32) ==
|
|
*(uint *)(pppppppppppuVar20 + 4) % *(uint *)(param_1 + 0xf)));
|
|
pppppppppppuVar20 = (uint ***********)pppppppppppuVar20[2]) {
|
|
pppppppppppppuVar29 = pppppppppppppuVar25;
|
|
if (pppppppppppppuVar25 == (uint *************)0x0) {
|
|
pppppppppppppuVar29 = pppppppppppppuVar28;
|
|
}
|
|
pppppppppppppuVar22 = (uint *************)*pppppppppppuVar20;
|
|
if ((uint *************)*pppppppppppuVar20 == (uint *************)0x0) {
|
|
pppppppppppppuVar22 = pppppppppppppuVar28;
|
|
}
|
|
iVar9 = FUN_14006caf0((byte *)pppppppppppppuVar22,(longlong)pppppppppppppuVar29);
|
|
if (iVar9 == 0) {
|
|
local_168 = pppppppppppuVar20;
|
|
if (pppppppppppuVar20 != (uint ***********)0x0) goto LAB_1400edda2;
|
|
goto LAB_1400edd24;
|
|
}
|
|
pppppppppppppuVar29 = pppppppppppppuVar28;
|
|
pppppppppppppuVar28 = (uint *************)PTR_DAT_1401ac008;
|
|
}
|
|
}
|
|
pppppppppppppuVar28 = pppppppppppppuVar29;
|
|
local_168 = (uint ***********)0x0;
|
|
LAB_1400edd24:
|
|
pppppppppppppuVar29 = (uint *************)&local_1f0;
|
|
plVar18 = FUN_1400ecfb0((char *)pppppppppppppuVar23,(longlong *)pppppppppppppuVar29);
|
|
pppppppppppppuVar22 = pppppppppppppuVar23;
|
|
if (pppppppppppppuVar19 != (uint *************)*plVar18) {
|
|
if (pppppppppppppuVar19 != (uint *************)0x0) {
|
|
pppppppppppppuVar19[1] = (uint ************)((longlong)pppppppppppppuVar19[1] + 1);
|
|
pppppppppppppuVar25 = local_1f0;
|
|
pppppppppppppuVar19 = local_1e8;
|
|
}
|
|
pppppppppppppuVar22 = (uint *************)0x0;
|
|
pppppppppppppuVar23 = pppppppppppppuVar24;
|
|
if (*plVar18 != 0) {
|
|
*(longlong *)(*plVar18 + 8) = *(longlong *)(*plVar18 + 8) + -1;
|
|
pppppppppppppuVar22 = *(uint **************)(*plVar18 + 8);
|
|
pppppppppppppuVar25 = local_1f0;
|
|
pppppppppppppuVar19 = local_1e8;
|
|
if (pppppppppppppuVar22 == (uint *************)0x0) {
|
|
pppppppppppppuVar23 = (uint *************)*plVar18;
|
|
}
|
|
}
|
|
*plVar18 = (longlong)pppppppppppppuVar19;
|
|
if (pppppppppppppuVar23 != (uint *************)0x0) {
|
|
if (*pppppppppppppuVar23 != (uint ************)0x0) {
|
|
pppppppppppppuVar29 = (uint *************)0x1;
|
|
(*(code *)***pppppppppppppuVar23)();
|
|
}
|
|
FUN_14006cc60(pppppppppppppuVar23);
|
|
pppppppppppppuVar22 = pppppppppppppuVar23;
|
|
}
|
|
}
|
|
LAB_1400edda2:
|
|
if (((pppppppppppppuVar25 != (uint *************)0x0) &&
|
|
(pppppppppppppuVar25 != (uint *************)PTR_DAT_1401ac008)) &&
|
|
(pppppppppppppuVar25 + -1 != (uint *************)0x0)) {
|
|
piVar15 = (int *)FUN_14006cb70(pppppppppppppuVar22,pppppppppppppuVar29,pppppppppppppuVar28,
|
|
param_4);
|
|
local_188 = piVar15;
|
|
FUN_14006b350(piVar15);
|
|
local_180 = 1;
|
|
puVar16 = (uint *)((longlong)pppppppppppppuVar25 + -4);
|
|
*puVar16 = *puVar16 - 1;
|
|
if (*puVar16 == 0) {
|
|
FUN_14006cc60(pppppppppppppuVar25 + -1);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar15);
|
|
local_180 = 0;
|
|
}
|
|
local_1f0 = (uint *************)PTR_DAT_1401ac008;
|
|
param_1 = (uint *******)local_1d8;
|
|
plVar18 = local_1a0;
|
|
}
|
|
dVar34 = (double)FUN_1400e0320((longlong)param_1[1]);
|
|
param_2 = local_1b0;
|
|
if (3.0 < dVar34 - *(double *)(local_1b0 + 200)) {
|
|
if ((undefined8 *)*plVar18 != (undefined8 *)0x0) {
|
|
pppppppppppppuVar24 = *(uint **************)*plVar18;
|
|
}
|
|
FUN_140071fc0((longlong *)pppppppppppppuVar24,pppppppppppppuVar29,pppppppppppppuVar28,param_4)
|
|
;
|
|
pppppppppppppuVar25 = local_1e8;
|
|
*(undefined4 *)(param_2 + 0x18) = 3;
|
|
if (pppppppppppppuVar19 != (uint *************)0x0) {
|
|
pppppppppppppuVar19 = pppppppppppppuVar19 + 1;
|
|
*pppppppppppppuVar19 = (uint ************)((longlong)*pppppppppppppuVar19 + -1);
|
|
if (*pppppppppppppuVar19 == (uint ************)0x0) {
|
|
if (*local_1e8 != (uint ************)0x0) {
|
|
pppppppppppppuVar29 = (uint *************)0x1;
|
|
(*(code *)***local_1e8)();
|
|
}
|
|
FUN_14006cc60(pppppppppppppuVar25);
|
|
pppppppppppppuVar24 = pppppppppppppuVar25;
|
|
}
|
|
}
|
|
pppppppppppuVar20 = local_1f8;
|
|
if (((local_1f8 != (uint ***********)0x0) &&
|
|
(local_1f8 != (uint ***********)PTR_DAT_1401ac008)) &&
|
|
(pppppppppppppuVar19 = (uint *************)(local_1f8 + -1),
|
|
pppppppppppppuVar19 != (uint *************)0x0)) {
|
|
piVar15 = (int *)FUN_14006cb70(pppppppppppppuVar24,pppppppppppppuVar29,pppppppppppppuVar28,
|
|
param_4);
|
|
local_100 = piVar15;
|
|
FUN_14006b350(piVar15);
|
|
local_f8 = 1;
|
|
puVar16 = (uint *)((longlong)pppppppppppuVar20 + -4);
|
|
*puVar16 = *puVar16 - 1;
|
|
if (*puVar16 == 0) {
|
|
FUN_14006cc60(pppppppppppppuVar19);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar15);
|
|
}
|
|
return;
|
|
}
|
|
pppppppppppppuVar25 = (uint *************)param_1;
|
|
lVar30 = local_1b0;
|
|
FUN_1400ebee0(param_1,local_1b0,(SIZE_T)pppppppppppppuVar28,param_4);
|
|
pppppppppppppuVar29 = local_1e8;
|
|
if (pppppppppppppuVar19 != (uint *************)0x0) {
|
|
pppppppppppppuVar19 = pppppppppppppuVar19 + 1;
|
|
*pppppppppppppuVar19 = (uint ************)((longlong)*pppppppppppppuVar19 + -1);
|
|
if (*pppppppppppppuVar19 == (uint ************)0x0) {
|
|
if (*local_1e8 != (uint ************)0x0) {
|
|
lVar30 = 1;
|
|
(*(code *)***local_1e8)();
|
|
}
|
|
FUN_14006cc60(pppppppppppppuVar29);
|
|
pppppppppppppuVar25 = pppppppppppppuVar29;
|
|
}
|
|
}
|
|
pppppppppppuVar20 = local_1f8;
|
|
if (((local_1f8 != (uint ***********)0x0) && (local_1f8 != (uint ***********)PTR_DAT_1401ac008))
|
|
&& (pppppppppppppuVar29 = (uint *************)(local_1f8 + -1),
|
|
pppppppppppppuVar29 != (uint *************)0x0)) {
|
|
piVar15 = (int *)FUN_14006cb70(pppppppppppppuVar25,lVar30,pppppppppppppuVar28,param_4);
|
|
local_128 = piVar15;
|
|
FUN_14006b350(piVar15);
|
|
local_120 = 1;
|
|
puVar16 = (uint *)((longlong)pppppppppppuVar20 + -4);
|
|
*puVar16 = *puVar16 - 1;
|
|
if (*puVar16 == 0) {
|
|
FUN_14006cc60(pppppppppppppuVar29);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar15);
|
|
local_120 = 0;
|
|
}
|
|
local_1f8 = (uint ***********)PTR_DAT_1401ac008;
|
|
} while( true );
|
|
}
|
|
|