969 lines
28 KiB
C
969 lines
28 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401f8570 FUN_1401f8570
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_1401f8570(longlong *param_1,longlong param_2)
|
|
|
|
{
|
|
longlong *plVar1;
|
|
int *piVar2;
|
|
ushort uVar3;
|
|
longlong *plVar4;
|
|
char cVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
uint uVar8;
|
|
int iVar9;
|
|
void *_Dst;
|
|
uint *puVar10;
|
|
uint *puVar11;
|
|
undefined8 uVar12;
|
|
uint *puVar13;
|
|
undefined1 *puVar14;
|
|
undefined8 uVar15;
|
|
longlong lVar16;
|
|
undefined *puVar17;
|
|
void *_Src;
|
|
uint *puVar18;
|
|
longlong lVar19;
|
|
uint *puVar20;
|
|
uint uVar21;
|
|
undefined *puVar22;
|
|
undefined1 auStack_a38 [32];
|
|
uint local_a18;
|
|
uint *local_a08;
|
|
uint *local_a00;
|
|
uint *local_9f8;
|
|
uint *local_9f0;
|
|
uint local_9e8 [2];
|
|
longlong *local_9e0;
|
|
undefined *local_9d8;
|
|
undefined *local_9d0;
|
|
undefined *local_9c8;
|
|
undefined *local_9c0;
|
|
undefined *local_9b8;
|
|
undefined8 local_9b0;
|
|
undefined **local_9a8;
|
|
undefined4 local_9a0;
|
|
undefined2 local_99c;
|
|
int local_998;
|
|
undefined8 local_990;
|
|
undefined **local_988;
|
|
undefined4 local_980;
|
|
undefined2 local_97c;
|
|
int local_978;
|
|
undefined8 local_970;
|
|
undefined **local_968;
|
|
undefined4 local_960;
|
|
undefined2 local_95c;
|
|
undefined4 local_958;
|
|
undefined8 local_950;
|
|
undefined1 local_948;
|
|
undefined8 local_940;
|
|
undefined1 local_938;
|
|
undefined8 local_930;
|
|
undefined1 local_928;
|
|
undefined8 local_920;
|
|
undefined1 local_918;
|
|
undefined8 local_910;
|
|
undefined1 local_908;
|
|
undefined8 local_900;
|
|
undefined1 local_8f8;
|
|
undefined8 local_8f0;
|
|
undefined1 local_8e8;
|
|
undefined8 local_8e0;
|
|
undefined8 local_8d8;
|
|
undefined1 local_8d0;
|
|
undefined8 local_8c8;
|
|
undefined1 local_8c0;
|
|
undefined8 local_8b8;
|
|
undefined1 local_8b0;
|
|
undefined8 local_8a8;
|
|
undefined1 local_8a0;
|
|
undefined1 *local_898;
|
|
undefined1 local_890 [136];
|
|
undefined1 *local_808;
|
|
undefined1 local_800 [136];
|
|
undefined1 *local_778;
|
|
undefined1 local_770 [264];
|
|
undefined1 local_668 [1568];
|
|
ulonglong local_48;
|
|
|
|
local_8e0 = 0xfffffffffffffffe;
|
|
local_48 = DAT_1403463c0 ^ (ulonglong)auStack_a38;
|
|
iVar9 = *(int *)(param_2 + 0x2490);
|
|
local_9e0 = param_1;
|
|
if (iVar9 == 0) {
|
|
lVar19 = 0;
|
|
if (*(int *)(param_2 + 0x2494) == 0) {
|
|
local_9d8 = (undefined *)FUN_14016d940(0x400);
|
|
lVar16 = lVar19;
|
|
if (local_9d8 != (undefined *)0x0) {
|
|
lVar16 = FUN_14019cad0(local_9d8,0,param_2);
|
|
}
|
|
if (lVar16 == 0) {
|
|
local_9e0 = (longlong *)0x0;
|
|
}
|
|
else {
|
|
local_9e0 = (longlong *)FUN_14016d940(0x10);
|
|
local_9e0[1] = 1;
|
|
*local_9e0 = lVar16;
|
|
}
|
|
plVar1 = local_9e0;
|
|
FUN_1401786c0(param_2 + 0x2480,&local_9e0);
|
|
plVar4 = local_9e0;
|
|
if (plVar1 != (longlong *)0x0) {
|
|
plVar1 = plVar1 + 1;
|
|
*plVar1 = *plVar1 + -1;
|
|
if (*plVar1 == 0) {
|
|
lVar16 = *local_9e0;
|
|
if (lVar16 != 0) {
|
|
FUN_14019c9e0(lVar16);
|
|
FUN_14016d970(lVar16);
|
|
}
|
|
FUN_14016d970(plVar4);
|
|
}
|
|
}
|
|
lVar16 = lVar19;
|
|
if (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0) {
|
|
lVar16 = **(longlong **)(param_2 + 0x2480);
|
|
}
|
|
FUN_14019e650(lVar16);
|
|
lVar16 = lVar19;
|
|
if (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0) {
|
|
lVar16 = **(longlong **)(param_2 + 0x2480);
|
|
}
|
|
FUN_14019be10(lVar16,0);
|
|
cVar5 = FUN_1401f58d0(param_1,param_2);
|
|
if (cVar5 == '\0') goto LAB_1401f96ba;
|
|
}
|
|
FUN_14019be90(local_668);
|
|
lVar16 = lVar19;
|
|
if (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0) {
|
|
lVar16 = **(longlong **)(param_2 + 0x2480);
|
|
}
|
|
FUN_14019beb0(local_668,lVar16);
|
|
lVar16 = lVar19;
|
|
if (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0) {
|
|
lVar16 = **(longlong **)(param_2 + 0x2480);
|
|
}
|
|
FUN_14019bf10(local_668,lVar16);
|
|
FUN_14019bf70(local_668,0);
|
|
if (*(longlong **)(param_2 + 0x2480) != (longlong *)0x0) {
|
|
lVar19 = **(longlong **)(param_2 + 0x2480);
|
|
}
|
|
cVar5 = FUN_14019bfd0(local_668,lVar19,local_9e8);
|
|
if (cVar5 != '\0') {
|
|
if (local_9e8[0] == 0) {
|
|
if (0 < *(int *)(param_2 + 0x2490)) {
|
|
return;
|
|
}
|
|
*(undefined8 *)(param_2 + 0x2490) = 1;
|
|
return;
|
|
}
|
|
cVar5 = FUN_1401f58d0(param_1,param_2);
|
|
if (cVar5 != '\0') goto LAB_1401f978c;
|
|
goto LAB_1401f96ba;
|
|
}
|
|
goto LAB_1401f978c;
|
|
}
|
|
if (iVar9 == 1) {
|
|
uVar12 = 0;
|
|
iVar9 = 0;
|
|
if (*(int *)(param_2 + 0x2494) == 0) {
|
|
uVar15 = uVar12;
|
|
if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) {
|
|
uVar15 = **(undefined8 **)(param_2 + 0x2480);
|
|
}
|
|
FUN_14019be10(uVar15,1);
|
|
local_808 = local_800;
|
|
FUN_14016ac90(&local_808,param_2 + 0x52,3);
|
|
local_898 = local_890;
|
|
FUN_14016ac90(&local_898,param_2 + 0x458,3);
|
|
local_a18 = (uint)*(ushort *)(param_2 + 0x245c);
|
|
FUN_140170320(param_2 + 0x2488,
|
|
"GET %s HTTP/1.1\r\n\r\nHost: %s:%d\r\n\r\nConnection: Keep-Alive\r\n\r\n",
|
|
local_898,local_808);
|
|
if (local_898 != local_890) {
|
|
free(local_898);
|
|
}
|
|
if (local_808 != local_800) {
|
|
free(local_808);
|
|
}
|
|
cVar5 = FUN_1401f41e0(param_1,param_2);
|
|
if (cVar5 == '\0') goto LAB_1401f96ba;
|
|
}
|
|
local_988 = Proud::AddrPort::vftable;
|
|
local_978 = 0;
|
|
local_990 = 0;
|
|
local_980 = DAT_140344450;
|
|
local_97c = DAT_140344454;
|
|
if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) {
|
|
uVar12 = **(undefined8 **)(param_2 + 0x2480);
|
|
}
|
|
cVar5 = FUN_14019c560(uVar12,0,&local_990);
|
|
if (cVar5 != '\0') {
|
|
*(undefined1 *)(param_2 + 0x24c0) = 0;
|
|
if (local_978 == 0) goto LAB_1401f96ba;
|
|
*(int *)(param_2 + 0x2504) = *(int *)(param_2 + 0x2504) + local_978;
|
|
puVar22 = *(undefined **)(param_2 + 0x2488);
|
|
if (puVar22 != (undefined *)0x0) {
|
|
if (puVar22 == PTR_DAT_140344098) {
|
|
iVar9 = 0;
|
|
}
|
|
else {
|
|
iVar9 = *(int *)(puVar22 + -8);
|
|
}
|
|
}
|
|
if ((iVar9 - *(int *)(param_2 + 0x2504)) + 1 < 1) {
|
|
if (1 < *(int *)(param_2 + 0x2490)) {
|
|
return;
|
|
}
|
|
*(undefined8 *)(param_2 + 0x2490) = 2;
|
|
return;
|
|
}
|
|
FUN_1401f41e0(param_1,param_2);
|
|
}
|
|
goto LAB_1401f978c;
|
|
}
|
|
if (iVar9 == 2) {
|
|
uVar12 = 0;
|
|
if (*(int *)(param_2 + 0x2494) == 0) {
|
|
*(undefined1 *)(param_2 + 0x2500) = 1;
|
|
uVar15 = uVar12;
|
|
if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) {
|
|
uVar15 = **(undefined8 **)(param_2 + 0x2480);
|
|
}
|
|
iVar9 = FUN_14019d400(uVar15,0x8000);
|
|
if (iVar9 == 0) goto LAB_1401f9327;
|
|
}
|
|
else {
|
|
LAB_1401f9327:
|
|
local_9a8 = Proud::AddrPort::vftable;
|
|
local_998 = 0;
|
|
local_9b0 = 0;
|
|
local_9a0 = DAT_140344450;
|
|
local_99c = DAT_140344454;
|
|
uVar15 = uVar12;
|
|
if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) {
|
|
uVar15 = **(undefined8 **)(param_2 + 0x2480);
|
|
}
|
|
cVar5 = FUN_14019c2f0(uVar15,0,&local_9b0);
|
|
if (cVar5 == '\0') {
|
|
LAB_1401f978c:
|
|
*(int *)(param_2 + 0x2494) = *(int *)(param_2 + 0x2494) + 1;
|
|
return;
|
|
}
|
|
*(undefined1 *)(param_2 + 0x2500) = 0;
|
|
if (local_998 == 0) {
|
|
LAB_1401f96ba:
|
|
if (2 < *(int *)(param_2 + 0x2490)) {
|
|
return;
|
|
}
|
|
*(undefined8 *)(param_2 + 0x2490) = 3;
|
|
return;
|
|
}
|
|
uVar15 = uVar12;
|
|
if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) {
|
|
uVar15 = **(undefined8 **)(param_2 + 0x2480);
|
|
}
|
|
uVar15 = FUN_14019c8b0(uVar15);
|
|
FUN_1401f4260(param_2 + 0x2510,uVar15,local_998);
|
|
*(int *)(param_2 + 0x2508) = *(int *)(param_2 + 0x2508) + local_998;
|
|
iVar9 = 0x8000 - *(int *)(param_2 + 0x2508);
|
|
if (iVar9 < 1) goto LAB_1401f96ba;
|
|
*(undefined1 *)(param_2 + 0x2500) = 1;
|
|
if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) {
|
|
uVar12 = **(undefined8 **)(param_2 + 0x2480);
|
|
}
|
|
iVar9 = FUN_14019d400(uVar12,iVar9);
|
|
if (iVar9 == 0) goto LAB_1401f978c;
|
|
}
|
|
*(undefined1 *)(param_2 + 0x2500) = 0;
|
|
goto LAB_1401f93fd;
|
|
}
|
|
if (iVar9 != 3) {
|
|
if (iVar9 == 4) {
|
|
if (((*(int *)(param_2 + 0x2494) == 0) &&
|
|
(*(longlong **)(param_2 + 0x2480) != (longlong *)0x0)) &&
|
|
(**(longlong **)(param_2 + 0x2480) != 0)) {
|
|
FUN_14019c630();
|
|
}
|
|
local_968 = Proud::AddrPort::vftable;
|
|
uVar12 = 0;
|
|
local_958 = 0;
|
|
local_970 = 0;
|
|
local_960 = DAT_140344450;
|
|
local_95c = DAT_140344454;
|
|
uVar15 = uVar12;
|
|
if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) {
|
|
uVar15 = **(undefined8 **)(param_2 + 0x2480);
|
|
}
|
|
cVar5 = FUN_14019c2f0(uVar15,0,&local_970);
|
|
if (cVar5 != '\0') {
|
|
*(undefined1 *)(param_2 + 0x2500) = 0;
|
|
}
|
|
if (*(undefined8 **)(param_2 + 0x2480) != (undefined8 *)0x0) {
|
|
uVar12 = **(undefined8 **)(param_2 + 0x2480);
|
|
}
|
|
cVar5 = FUN_14019c560(uVar12,0,&local_970);
|
|
if (cVar5 != '\0') {
|
|
*(undefined1 *)(param_2 + 0x24c0) = 0;
|
|
}
|
|
if ((*(char *)(param_2 + 0x2500) == '\0') && (*(char *)(param_2 + 0x24c0) == '\0')) {
|
|
if (4 < *(int *)(param_2 + 0x2490)) {
|
|
return;
|
|
}
|
|
*(undefined8 *)(param_2 + 0x2490) = 5;
|
|
return;
|
|
}
|
|
}
|
|
goto LAB_1401f978c;
|
|
}
|
|
uVar8 = 0;
|
|
if (*(int *)(param_2 + 0x2528) == 0) goto LAB_1401f93fd;
|
|
_Dst = (void *)FUN_14013c6f0(param_2 + 0x2538);
|
|
memset(_Dst,0,(longlong)(*(int *)(param_2 + 0x2528) + 1));
|
|
_Src = (void *)0x0;
|
|
if (*(int *)(param_2 + 0x2528) != 0) {
|
|
_Src = *(void **)(param_2 + 0x2520);
|
|
}
|
|
memcpy(_Dst,_Src,(longlong)*(int *)(param_2 + 0x2528));
|
|
FUN_14013c7e0(param_2 + 0x2538);
|
|
FUN_14016d8c0();
|
|
puVar22 = PTR_DAT_140344098;
|
|
local_9d8 = PTR_DAT_140344098;
|
|
FUN_1401f4f10(param_2 + 0x2538);
|
|
FUN_14016d8c0();
|
|
puVar20 = (uint *)PTR_DAT_140344098;
|
|
local_9f0 = (uint *)PTR_DAT_140344098;
|
|
uVar6 = FUN_14016d7e0("MODELDESCRIPTION");
|
|
iVar9 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140344098)) {
|
|
iVar9 = *(int *)((longlong)puVar20 + -8);
|
|
}
|
|
uVar7 = uVar6;
|
|
if ((int)uVar6 <= iVar9) {
|
|
uVar7 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (uVar7 = 0, puVar20 != (uint *)PTR_DAT_140344098)) {
|
|
uVar7 = *(uint *)((longlong)puVar20 + -8);
|
|
}
|
|
}
|
|
uVar21 = 1;
|
|
if (1 < (int)uVar7) {
|
|
uVar21 = uVar7;
|
|
}
|
|
iVar9 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (iVar9 = 0, puVar20 != (uint *)PTR_DAT_140344098)) {
|
|
iVar9 = *(int *)((longlong)puVar20 + -8);
|
|
}
|
|
if (iVar9 < (int)uVar21) {
|
|
if (puVar20 == (uint *)0x0) {
|
|
puVar20 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
local_9f0 = puVar20;
|
|
if ((int)uVar21 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar21 == 0) {
|
|
FUN_14004f5a0(&local_9f0);
|
|
}
|
|
else {
|
|
uVar7 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140344098)) {
|
|
uVar7 = puVar20[-2];
|
|
}
|
|
if (uVar21 != uVar7) {
|
|
puVar13 = (uint *)FUN_14016d940((longlong)(int)uVar21 + 9);
|
|
if (puVar13 != (uint *)0x0) {
|
|
*puVar13 = 0;
|
|
puVar13[1] = 1;
|
|
}
|
|
*puVar13 = uVar21;
|
|
uVar7 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140344098)) {
|
|
uVar7 = puVar20[-2];
|
|
}
|
|
puVar10 = (uint *)PTR_DAT_140344098;
|
|
if ((int)uVar21 < (int)uVar7) {
|
|
LAB_1401f8835:
|
|
if (puVar20 != (uint *)0x0) {
|
|
puVar10 = puVar20;
|
|
}
|
|
}
|
|
else {
|
|
uVar21 = uVar8;
|
|
if (puVar20 != (uint *)0x0) {
|
|
if (puVar20 != (uint *)PTR_DAT_140344098) {
|
|
uVar21 = puVar20[-2];
|
|
}
|
|
goto LAB_1401f8835;
|
|
}
|
|
}
|
|
FUN_14016d810(puVar13 + 2,puVar10,uVar21);
|
|
FUN_14004f5a0(&local_9f0);
|
|
local_9f0 = puVar13 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_14013c600(&local_9f0);
|
|
puVar20 = local_9f0;
|
|
puVar13 = local_9f0;
|
|
if (local_9f0 == (uint *)0x0) {
|
|
puVar13 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
FUN_14016d810(puVar13,"MODELDESCRIPTION",uVar6);
|
|
puVar13 = puVar20;
|
|
if (puVar20 == (uint *)0x0) {
|
|
puVar13 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
uVar7 = FUN_14016d7e0(puVar13);
|
|
uVar6 = 0;
|
|
if (0 < (int)uVar7) {
|
|
uVar6 = uVar7;
|
|
}
|
|
uVar7 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (uVar7 = 0, puVar20 != (uint *)PTR_DAT_140344098)) {
|
|
uVar7 = puVar20[-2];
|
|
}
|
|
if (((int)uVar6 < (int)uVar7) || (uVar6 = 0, puVar20 == (uint *)0x0)) {
|
|
LAB_1401f88cd:
|
|
if (((puVar20 != (uint *)PTR_DAT_140344098) && (puVar20 != (uint *)0x0)) &&
|
|
(puVar13 = puVar20 + -2, puVar13 != (uint *)0x0)) {
|
|
*puVar13 = uVar6;
|
|
*(undefined1 *)((longlong)(int)uVar6 + 8 + (longlong)puVar13) = 0;
|
|
}
|
|
}
|
|
else if (puVar20 != (uint *)PTR_DAT_140344098) {
|
|
uVar6 = puVar20[-2];
|
|
goto LAB_1401f88cd;
|
|
}
|
|
FUN_14016d8c0();
|
|
puVar13 = (uint *)PTR_DAT_140344098;
|
|
local_a00 = (uint *)PTR_DAT_140344098;
|
|
uVar6 = FUN_14016d7e0("FRIENDLYNAME");
|
|
iVar9 = 0;
|
|
if ((puVar13 != (uint *)0x0) && (puVar13 != (uint *)PTR_DAT_140344098)) {
|
|
iVar9 = *(int *)((longlong)puVar13 + -8);
|
|
}
|
|
uVar7 = uVar6;
|
|
if ((int)uVar6 <= iVar9) {
|
|
uVar7 = 0;
|
|
if ((puVar13 != (uint *)0x0) && (uVar7 = 0, puVar13 != (uint *)PTR_DAT_140344098)) {
|
|
uVar7 = *(uint *)((longlong)puVar13 + -8);
|
|
}
|
|
}
|
|
uVar21 = 1;
|
|
if (1 < (int)uVar7) {
|
|
uVar21 = uVar7;
|
|
}
|
|
iVar9 = 0;
|
|
if ((puVar13 != (uint *)0x0) && (iVar9 = 0, puVar13 != (uint *)PTR_DAT_140344098)) {
|
|
iVar9 = *(int *)((longlong)puVar13 + -8);
|
|
}
|
|
if (iVar9 < (int)uVar21) {
|
|
if (puVar13 == (uint *)0x0) {
|
|
puVar13 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
local_a00 = puVar13;
|
|
if ((int)uVar21 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar21 == 0) {
|
|
FUN_14004f5a0(&local_a00);
|
|
}
|
|
else {
|
|
uVar7 = 0;
|
|
if ((puVar13 != (uint *)0x0) && (puVar13 != (uint *)PTR_DAT_140344098)) {
|
|
uVar7 = puVar13[-2];
|
|
}
|
|
if (uVar21 != uVar7) {
|
|
puVar10 = (uint *)FUN_14016d940((longlong)(int)uVar21 + 9);
|
|
if (puVar10 != (uint *)0x0) {
|
|
*puVar10 = 0;
|
|
puVar10[1] = 1;
|
|
}
|
|
*puVar10 = uVar21;
|
|
uVar7 = 0;
|
|
if ((puVar13 != (uint *)0x0) && (puVar13 != (uint *)PTR_DAT_140344098)) {
|
|
uVar7 = puVar13[-2];
|
|
}
|
|
puVar11 = (uint *)PTR_DAT_140344098;
|
|
if ((int)uVar21 < (int)uVar7) {
|
|
LAB_1401f89da:
|
|
if (puVar13 != (uint *)0x0) {
|
|
puVar11 = puVar13;
|
|
}
|
|
}
|
|
else {
|
|
uVar21 = uVar8;
|
|
if (puVar13 != (uint *)0x0) {
|
|
if (puVar13 != (uint *)PTR_DAT_140344098) {
|
|
uVar21 = puVar13[-2];
|
|
}
|
|
goto LAB_1401f89da;
|
|
}
|
|
}
|
|
FUN_14016d810(puVar10 + 2,puVar11,uVar21);
|
|
FUN_14004f5a0(&local_a00);
|
|
local_a00 = puVar10 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_14013c600(&local_a00);
|
|
puVar13 = local_a00;
|
|
puVar10 = local_a00;
|
|
if (local_a00 == (uint *)0x0) {
|
|
puVar10 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
FUN_14016d810(puVar10,"FRIENDLYNAME",uVar6);
|
|
puVar10 = puVar13;
|
|
if (puVar13 == (uint *)0x0) {
|
|
puVar10 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
uVar7 = FUN_14016d7e0(puVar10);
|
|
uVar6 = 0;
|
|
if (0 < (int)uVar7) {
|
|
uVar6 = uVar7;
|
|
}
|
|
uVar7 = 0;
|
|
if ((puVar13 != (uint *)0x0) && (uVar7 = 0, puVar13 != (uint *)PTR_DAT_140344098)) {
|
|
uVar7 = puVar13[-2];
|
|
}
|
|
if (((int)uVar6 < (int)uVar7) || (uVar6 = 0, puVar13 == (uint *)0x0)) {
|
|
LAB_1401f8a72:
|
|
if (((puVar13 != (uint *)PTR_DAT_140344098) && (puVar13 != (uint *)0x0)) &&
|
|
(puVar10 = puVar13 + -2, puVar10 != (uint *)0x0)) {
|
|
*puVar10 = uVar6;
|
|
*(undefined1 *)((longlong)(int)uVar6 + 8 + (longlong)puVar10) = 0;
|
|
}
|
|
}
|
|
else if (puVar13 != (uint *)PTR_DAT_140344098) {
|
|
uVar6 = puVar13[-2];
|
|
goto LAB_1401f8a72;
|
|
}
|
|
local_a08 = (uint *)FUN_1401f5bd0(local_9e0,&local_9d0,param_2 + 0x2538,&local_9f0);
|
|
FUN_14016d8c0();
|
|
puVar10 = (uint *)PTR_DAT_140344098;
|
|
local_9f8 = (uint *)PTR_DAT_140344098;
|
|
local_9e8[0] = FUN_14016d7e0(&DAT_140294450);
|
|
iVar9 = 0;
|
|
if ((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140344098)) {
|
|
iVar9 = *(int *)((longlong)puVar10 + -8);
|
|
}
|
|
uVar6 = local_9e8[0];
|
|
if ((int)local_9e8[0] <= iVar9) {
|
|
uVar6 = 0;
|
|
if ((puVar10 != (uint *)0x0) && (uVar6 = 0, puVar10 != (uint *)PTR_DAT_140344098)) {
|
|
uVar6 = *(uint *)((longlong)puVar10 + -8);
|
|
}
|
|
}
|
|
uVar7 = 1;
|
|
if (1 < (int)uVar6) {
|
|
uVar7 = uVar6;
|
|
}
|
|
iVar9 = 0;
|
|
if ((puVar10 != (uint *)0x0) && (iVar9 = 0, puVar10 != (uint *)PTR_DAT_140344098)) {
|
|
iVar9 = *(int *)((longlong)puVar10 + -8);
|
|
}
|
|
if (iVar9 < (int)uVar7) {
|
|
if (puVar10 == (uint *)0x0) {
|
|
puVar10 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
local_9f8 = puVar10;
|
|
if ((int)uVar7 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar7 == 0) {
|
|
FUN_14004f5a0(&local_9f8);
|
|
}
|
|
else {
|
|
uVar6 = 0;
|
|
if ((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140344098)) {
|
|
uVar6 = puVar10[-2];
|
|
}
|
|
if (uVar7 != uVar6) {
|
|
puVar11 = (uint *)FUN_14016d940((longlong)(int)uVar7 + 9);
|
|
if (puVar11 != (uint *)0x0) {
|
|
*puVar11 = 0;
|
|
puVar11[1] = 1;
|
|
}
|
|
*puVar11 = uVar7;
|
|
uVar6 = 0;
|
|
if ((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140344098)) {
|
|
uVar6 = puVar10[-2];
|
|
}
|
|
puVar18 = (uint *)PTR_DAT_140344098;
|
|
if ((int)uVar7 < (int)uVar6) {
|
|
LAB_1401f8ba9:
|
|
if (puVar10 != (uint *)0x0) {
|
|
puVar18 = puVar10;
|
|
}
|
|
}
|
|
else {
|
|
uVar7 = uVar8;
|
|
if (puVar10 != (uint *)0x0) {
|
|
if (puVar10 != (uint *)PTR_DAT_140344098) {
|
|
uVar7 = puVar10[-2];
|
|
}
|
|
goto LAB_1401f8ba9;
|
|
}
|
|
}
|
|
FUN_14016d810(puVar11 + 2,puVar18,uVar7);
|
|
FUN_14004f5a0(&local_9f8);
|
|
local_9f8 = puVar11 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_14013c600(&local_9f8);
|
|
puVar10 = local_9f8;
|
|
puVar11 = local_9f8;
|
|
if (local_9f8 == (uint *)0x0) {
|
|
puVar11 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
FUN_14016d810(puVar11,&DAT_140294450,local_9e8[0]);
|
|
puVar11 = puVar10;
|
|
if (puVar10 == (uint *)0x0) {
|
|
puVar11 = (uint *)PTR_DAT_140344098;
|
|
}
|
|
uVar7 = FUN_14016d7e0(puVar11);
|
|
uVar6 = 0;
|
|
if (0 < (int)uVar7) {
|
|
uVar6 = uVar7;
|
|
}
|
|
uVar7 = 0;
|
|
if ((puVar10 != (uint *)0x0) && (uVar7 = 0, puVar10 != (uint *)PTR_DAT_140344098)) {
|
|
uVar7 = puVar10[-2];
|
|
}
|
|
if (((int)uVar6 < (int)uVar7) || (uVar6 = 0, puVar10 == (uint *)0x0)) {
|
|
LAB_1401f8c43:
|
|
if (((puVar10 != (uint *)PTR_DAT_140344098) && (puVar10 != (uint *)0x0)) &&
|
|
(puVar11 = puVar10 + -2, puVar11 != (uint *)0x0)) {
|
|
*puVar11 = uVar6;
|
|
*(undefined1 *)((longlong)(int)uVar6 + 8 + (longlong)puVar11) = 0;
|
|
}
|
|
}
|
|
else if (puVar10 != (uint *)PTR_DAT_140344098) {
|
|
uVar6 = puVar10[-2];
|
|
goto LAB_1401f8c43;
|
|
}
|
|
uVar12 = FUN_1401f5bd0(local_9e0,&local_9b8,param_2 + 0x2538,&local_a00);
|
|
uVar12 = FUN_1401bd540(&local_9c0,uVar12,&local_9f8);
|
|
local_a08 = (uint *)FUN_1401bd540(&local_9c8,uVar12,local_a08);
|
|
if (puVar22 == (undefined *)0x0) {
|
|
puVar22 = PTR_DAT_140344098;
|
|
}
|
|
local_9d8 = puVar22;
|
|
if (*(undefined **)local_a08 != puVar22) {
|
|
uVar12 = FUN_14016d8c0();
|
|
local_920 = uVar12;
|
|
FUN_14016db50(uVar12);
|
|
local_918 = 1;
|
|
if (((puVar22 != (undefined *)0x0) && (puVar22 != PTR_DAT_140344098)) &&
|
|
(puVar22 + -8 != (undefined *)0x0)) {
|
|
uVar12 = FUN_14016d8c0();
|
|
local_8a8 = uVar12;
|
|
FUN_14016db50(uVar12);
|
|
local_8a0 = 1;
|
|
piVar2 = (int *)(puVar22 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14016d970(puVar22 + -8);
|
|
}
|
|
FUN_14016dbe0(uVar12);
|
|
uVar12 = local_920;
|
|
}
|
|
puVar22 = *(undefined **)local_a08;
|
|
if (((puVar22 != PTR_DAT_140344098) && (puVar22 != (undefined *)0x0)) &&
|
|
(puVar22 != (undefined *)0x8)) {
|
|
*(int *)(puVar22 + -4) = *(int *)(puVar22 + -4) + 1;
|
|
}
|
|
local_9d8 = puVar22;
|
|
FUN_14016dbe0(uVar12);
|
|
}
|
|
if (((local_9c8 != (undefined *)0x0) && (local_9c8 != PTR_DAT_140344098)) &&
|
|
(local_9c8 + -8 != (undefined *)0x0)) {
|
|
local_930 = FUN_14016d8c0();
|
|
FUN_14016db50(local_930);
|
|
local_928 = 1;
|
|
piVar2 = (int *)(local_9c8 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14016d970(local_9c8 + -8);
|
|
}
|
|
FUN_14016dbe0(local_930);
|
|
}
|
|
local_9c8 = PTR_DAT_140344098;
|
|
if (((local_9c0 != (undefined *)0x0) && (local_9c0 != PTR_DAT_140344098)) &&
|
|
(local_9c0 + -8 != (undefined *)0x0)) {
|
|
local_950 = FUN_14016d8c0();
|
|
FUN_14016db50(local_950);
|
|
local_948 = 1;
|
|
piVar2 = (int *)(local_9c0 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14016d970(local_9c0 + -8);
|
|
}
|
|
FUN_14016dbe0(local_950);
|
|
}
|
|
local_9c0 = PTR_DAT_140344098;
|
|
if (((local_9b8 != (undefined *)0x0) && (local_9b8 != PTR_DAT_140344098)) &&
|
|
(local_9b8 + -8 != (undefined *)0x0)) {
|
|
local_940 = FUN_14016d8c0();
|
|
FUN_14016db50(local_940);
|
|
local_938 = 1;
|
|
piVar2 = (int *)(local_9b8 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14016d970(local_9b8 + -8);
|
|
}
|
|
FUN_14016dbe0(local_940);
|
|
}
|
|
local_9b8 = PTR_DAT_140344098;
|
|
if (((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140344098)) &&
|
|
(puVar10 + -2 != (uint *)0x0)) {
|
|
uVar12 = FUN_14016d8c0();
|
|
local_8b8 = uVar12;
|
|
FUN_14016db50(uVar12);
|
|
local_8b0 = 1;
|
|
puVar11 = puVar10 + -1;
|
|
*puVar11 = *puVar11 - 1;
|
|
if (*puVar11 == 0) {
|
|
FUN_14016d970(puVar10 + -2);
|
|
}
|
|
FUN_14016dbe0(uVar12);
|
|
}
|
|
if (((local_9d0 != (undefined *)0x0) && (local_9d0 != PTR_DAT_140344098)) &&
|
|
(local_9d0 + -8 != (undefined *)0x0)) {
|
|
uVar12 = FUN_14016d8c0();
|
|
local_900 = uVar12;
|
|
FUN_14016db50(uVar12);
|
|
local_8f8 = 1;
|
|
piVar2 = (int *)(local_9d0 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14016d970(local_9d0 + -8);
|
|
}
|
|
FUN_14016dbe0(uVar12);
|
|
}
|
|
local_9d0 = PTR_DAT_140344098;
|
|
if (((puVar13 != (uint *)0x0) && (puVar13 != (uint *)PTR_DAT_140344098)) &&
|
|
(puVar13 + -2 != (uint *)0x0)) {
|
|
uVar12 = FUN_14016d8c0();
|
|
local_8f0 = uVar12;
|
|
FUN_14016db50(uVar12);
|
|
local_8e8 = 1;
|
|
puVar10 = puVar13 + -1;
|
|
*puVar10 = *puVar10 - 1;
|
|
if (*puVar10 == 0) {
|
|
FUN_14016d970(puVar13 + -2);
|
|
}
|
|
FUN_14016dbe0(uVar12);
|
|
}
|
|
if (((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_140344098)) &&
|
|
(puVar20 + -2 != (uint *)0x0)) {
|
|
uVar12 = FUN_14016d8c0();
|
|
local_8c8 = uVar12;
|
|
FUN_14016db50(uVar12);
|
|
local_8c0 = 1;
|
|
puVar13 = puVar20 + -1;
|
|
*puVar13 = *puVar13 - 1;
|
|
if (*puVar13 == 0) {
|
|
FUN_14016d970(puVar20 + -2);
|
|
}
|
|
FUN_14016dbe0(uVar12);
|
|
}
|
|
if (((puVar22 != (undefined *)0x0) && (puVar22 != PTR_DAT_140344098)) &&
|
|
(2 < *(int *)(puVar22 + -8))) {
|
|
local_778 = local_770;
|
|
FUN_14015b060(&local_778,puVar22,3);
|
|
puVar14 = local_778;
|
|
FUN_14016d8c0();
|
|
puVar20 = (uint *)PTR_DAT_1403440a0;
|
|
local_a08 = (uint *)PTR_DAT_1403440a0;
|
|
uVar6 = FUN_14016d740(puVar14);
|
|
iVar9 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) {
|
|
iVar9 = *(int *)((longlong)puVar20 + -8);
|
|
}
|
|
uVar7 = uVar6;
|
|
if ((int)uVar6 <= iVar9) {
|
|
uVar7 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (uVar7 = 0, puVar20 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = *(uint *)((longlong)puVar20 + -8);
|
|
}
|
|
}
|
|
uVar21 = 1;
|
|
if (1 < (int)uVar7) {
|
|
uVar21 = uVar7;
|
|
}
|
|
iVar9 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (iVar9 = 0, puVar20 != (uint *)PTR_DAT_1403440a0)) {
|
|
iVar9 = *(int *)((longlong)puVar20 + -8);
|
|
}
|
|
if (iVar9 < (int)uVar21) {
|
|
if (puVar20 == (uint *)0x0) {
|
|
puVar20 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
local_a08 = puVar20;
|
|
if ((int)uVar21 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar21 == 0) {
|
|
FUN_14004eb70(&local_a08);
|
|
}
|
|
else {
|
|
uVar7 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = puVar20[-2];
|
|
}
|
|
if (uVar21 != uVar7) {
|
|
puVar13 = (uint *)FUN_14016d940((longlong)(int)uVar21 * 2 + 10);
|
|
if (puVar13 != (uint *)0x0) {
|
|
*puVar13 = 0;
|
|
puVar13[1] = 1;
|
|
}
|
|
*puVar13 = uVar21;
|
|
uVar7 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar7 = puVar20[-2];
|
|
}
|
|
puVar10 = (uint *)PTR_DAT_1403440a0;
|
|
if ((int)uVar21 < (int)uVar7) {
|
|
LAB_1401f90ac:
|
|
if (puVar20 != (uint *)0x0) {
|
|
puVar10 = puVar20;
|
|
}
|
|
}
|
|
else {
|
|
uVar21 = uVar8;
|
|
if (puVar20 != (uint *)0x0) {
|
|
if (puVar20 != (uint *)PTR_DAT_1403440a0) {
|
|
uVar21 = puVar20[-2];
|
|
}
|
|
goto LAB_1401f90ac;
|
|
}
|
|
}
|
|
FUN_14016d770(puVar13 + 2,puVar10,uVar21);
|
|
FUN_14004eb70(&local_a08);
|
|
local_a08 = puVar13 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_14004e850(&local_a08);
|
|
puVar20 = local_a08;
|
|
puVar13 = local_a08;
|
|
if (local_a08 == (uint *)0x0) {
|
|
puVar13 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
FUN_14016d770(puVar13,puVar14,uVar6);
|
|
puVar13 = puVar20;
|
|
if (puVar20 == (uint *)0x0) {
|
|
puVar13 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
uVar6 = FUN_14016d740(puVar13);
|
|
plVar1 = local_9e0;
|
|
uVar8 = 0;
|
|
if (0 < (int)uVar6) {
|
|
uVar8 = uVar6;
|
|
}
|
|
uVar6 = 0;
|
|
if ((puVar20 != (uint *)0x0) && (uVar6 = 0, puVar20 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar6 = puVar20[-2];
|
|
}
|
|
if (((int)uVar8 < (int)uVar6) || (uVar8 = 0, puVar20 == (uint *)0x0)) {
|
|
LAB_1401f9140:
|
|
if (((puVar20 != (uint *)PTR_DAT_1403440a0) && (puVar20 != (uint *)0x0)) &&
|
|
(puVar20 + -2 != (uint *)0x0)) {
|
|
puVar20[-2] = uVar8;
|
|
*(ushort *)((longlong)puVar20 + (longlong)(int)uVar8 * 2) = 0;
|
|
}
|
|
}
|
|
else if (puVar20 != (uint *)PTR_DAT_1403440a0) {
|
|
uVar8 = puVar20[-2];
|
|
goto LAB_1401f9140;
|
|
}
|
|
puVar13 = puVar20;
|
|
if (puVar20 == (uint *)0x0) {
|
|
puVar13 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
if (puVar13 == (uint *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14004dc60(0x80004005);
|
|
}
|
|
uVar8 = 0;
|
|
puVar13 = puVar20;
|
|
if (puVar20 == (uint *)0x0) {
|
|
puVar13 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
uVar3 = (ushort)*puVar13;
|
|
while (uVar3 != 0) {
|
|
uVar8 = uVar8 * 0x21 + (uint)uVar3;
|
|
puVar13 = (uint *)((longlong)puVar13 + 2);
|
|
uVar3 = *(ushort *)puVar13;
|
|
}
|
|
uVar6 = *(uint *)(local_9e0 + 0x1a);
|
|
if (local_9e0[0x16] != 0) {
|
|
plVar4 = *(longlong **)(local_9e0[0x16] + ((ulonglong)uVar8 % (ulonglong)uVar6) * 8);
|
|
while( true ) {
|
|
if ((plVar4 == (longlong *)0x0) ||
|
|
((uint)((ulonglong)uVar8 % (ulonglong)uVar6) !=
|
|
*(uint *)(plVar4 + 4) % *(uint *)(plVar1 + 0x1a))) goto LAB_1401f9224;
|
|
puVar17 = (undefined *)*plVar4;
|
|
if ((undefined *)*plVar4 == (undefined *)0x0) {
|
|
puVar17 = PTR_DAT_1403440a0;
|
|
}
|
|
iVar9 = FUN_14016d780(puVar17);
|
|
if (iVar9 == 0) break;
|
|
plVar4 = (longlong *)plVar4[2];
|
|
}
|
|
if (plVar4 != (longlong *)0x0) goto LAB_1401f9238;
|
|
}
|
|
LAB_1401f9224:
|
|
puVar14 = (undefined1 *)FUN_1401f7660(plVar1 + 0x15,&local_a08);
|
|
*puVar14 = 0;
|
|
LAB_1401f9238:
|
|
if (((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) &&
|
|
(puVar20 + -2 != (uint *)0x0)) {
|
|
uVar12 = FUN_14016d8c0();
|
|
local_8d8 = uVar12;
|
|
FUN_14016db50(uVar12);
|
|
local_8d0 = 1;
|
|
puVar13 = puVar20 + -1;
|
|
*puVar13 = *puVar13 - 1;
|
|
if (*puVar13 == 0) {
|
|
FUN_14016d970(puVar20 + -2);
|
|
}
|
|
FUN_14016dbe0(uVar12);
|
|
}
|
|
if (local_778 != local_770) {
|
|
free(local_778);
|
|
}
|
|
}
|
|
if (((puVar22 != (undefined *)0x0) && (puVar22 != PTR_DAT_140344098)) &&
|
|
(puVar22 + -8 != (undefined *)0x0)) {
|
|
uVar12 = FUN_14016d8c0();
|
|
local_910 = uVar12;
|
|
FUN_14016db50(uVar12);
|
|
local_908 = 1;
|
|
piVar2 = (int *)(puVar22 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14016d970(puVar22 + -8);
|
|
}
|
|
FUN_14016dbe0(uVar12);
|
|
}
|
|
LAB_1401f93fd:
|
|
if (3 < *(int *)(param_2 + 0x2490)) {
|
|
return;
|
|
}
|
|
*(undefined8 *)(param_2 + 0x2490) = 4;
|
|
return;
|
|
}
|
|
|