server-re/decomp/Agent_Release_x64/full/functions/0x1400b1560.c
2026-10-14 16:45:19 -04:00

1026 lines
33 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400b1560 FUN_1400b1560
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */
void FUN_1400b1560(undefined8 *param_1,undefined **param_2,undefined **param_3,longlong param_4)
{
ushort uVar1;
undefined8 *puVar2;
short *psVar3;
uint uVar4;
uint uVar5;
uint uVar6;
int iVar7;
undefined8 uVar8;
undefined *_Dst;
uint *puVar9;
uint *puVar10;
uint *puVar11;
longlong *plVar12;
uint *******pppppppuVar13;
uint *******pppppppuVar14;
int *piVar15;
int *piVar16;
uint *puVar17;
longlong lVar18;
undefined8 *puVar19;
undefined **ppuVar20;
ulonglong uVar21;
undefined8 *puVar22;
short **ppsVar23;
uint *******pppppppuVar24;
longlong lVar25;
undefined *puVar26;
uint *puVar27;
uint ******ppppppuVar28;
ulonglong uVar29;
undefined8 **ppuVar30;
uint uVar31;
size_t _Size;
longlong *******ppppppplVar32;
uint *******pppppppuVar33;
uint *******pppppppuVar34;
uint **ppuVar35;
uint ******ppppppuVar36;
undefined1 auStack_a38 [32];
uint local_a18;
uint *******local_a08;
uint *local_a00;
uint *local_9f8;
uint *local_9f0;
uint local_9e8 [2];
undefined8 *local_9e0;
uint ******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;
uint local_998;
uint local_990 [2];
undefined **local_988;
undefined4 local_980;
undefined2 local_97c;
int local_978;
uint local_970 [2];
undefined **local_968;
undefined4 local_960;
undefined2 local_95c;
undefined4 local_958;
int *local_950;
undefined1 local_948;
int *local_940;
undefined1 local_938;
int *local_930;
undefined1 local_928;
int *local_920;
undefined1 local_918;
int *local_910;
undefined1 local_908;
int *local_900;
undefined1 local_8f8;
int *local_8f0;
undefined1 local_8e8;
undefined8 local_8e0;
int *local_8d8;
undefined1 local_8d0;
int *local_8c8;
undefined1 local_8c0;
int *local_8b8;
undefined1 local_8b0;
int *local_8a8;
undefined1 local_8a0;
undefined1 *local_898;
undefined1 local_890 [136];
undefined1 *local_808;
undefined1 local_800 [136];
short *local_778;
short local_770 [132];
undefined4 local_668 [392];
ulonglong local_48;
local_8e0 = 0xfffffffffffffffe;
local_48 = DAT_1401555a0 ^ (ulonglong)auStack_a38;
iVar7 = *(int *)(param_2 + 0x492);
local_9e0 = param_1;
if (iVar7 == 0) {
puVar22 = (undefined8 *)0x0;
if (*(int *)((longlong)param_2 + 0x2494) == 0) {
local_9d8 = (uint ******)FUN_140030280(0x400);
puVar19 = puVar22;
if (local_9d8 != (uint ******)0x0) {
param_3 = param_2;
puVar19 = FUN_140035990(local_9d8,0,param_2,param_4);
}
if (puVar19 == (undefined8 *)0x0) {
local_9e0 = (undefined8 *)0x0;
}
else {
local_9e0 = (undefined8 *)FUN_140030280(0x10);
local_9e0[1] = 1;
*local_9e0 = puVar19;
}
puVar19 = local_9e0;
ppuVar30 = &local_9e0;
FUN_140031f40((longlong *)(param_2 + 0x490),(longlong *)ppuVar30);
puVar2 = local_9e0;
if (puVar19 != (undefined8 *)0x0) {
plVar12 = puVar19 + 1;
*plVar12 = *plVar12 + -1;
if (*plVar12 == 0) {
plVar12 = (longlong *)*local_9e0;
if (plVar12 != (longlong *)0x0) {
FUN_1400358a0(plVar12,ppuVar30,(longlong *)param_3,param_4);
FUN_1400302f0(plVar12);
}
FUN_1400302f0(puVar2);
}
}
puVar19 = puVar22;
if ((undefined8 *)param_2[0x490] != (undefined8 *)0x0) {
puVar19 = *(undefined8 **)param_2[0x490];
}
FUN_140037510((longlong)puVar19,ppuVar30,param_3,param_4);
puVar19 = puVar22;
if ((undefined8 *)param_2[0x490] != (undefined8 *)0x0) {
puVar19 = *(undefined8 **)param_2[0x490];
}
FUN_140034c70((longlong)puVar19,'\0');
uVar8 = FUN_1400ae8c0(param_1,(longlong)param_2,param_3,param_4);
if ((char)uVar8 == '\0') goto LAB_1400b26aa;
}
FUN_140034cf0(local_668);
puVar19 = puVar22;
if ((undefined8 *)param_2[0x490] != (undefined8 *)0x0) {
puVar19 = *(undefined8 **)param_2[0x490];
}
FUN_140034d10((longlong)local_668,(longlong)puVar19);
puVar19 = puVar22;
if ((undefined8 *)param_2[0x490] != (undefined8 *)0x0) {
puVar19 = *(undefined8 **)param_2[0x490];
}
FUN_140034d70((longlong)local_668,(longlong)puVar19);
FUN_140034dd0((longlong)local_668,0);
if ((undefined8 *)param_2[0x490] != (undefined8 *)0x0) {
puVar22 = *(undefined8 **)param_2[0x490];
}
puVar17 = local_9e8;
uVar8 = FUN_140034e30((longlong)local_668,(longlong)puVar22,puVar17);
if ((char)uVar8 != '\0') {
if (local_9e8[0] == 0) {
if (0 < *(int *)(param_2 + 0x492)) {
return;
}
param_2[0x492] = (undefined *)0x1;
return;
}
uVar8 = FUN_1400ae8c0(param_1,(longlong)param_2,puVar17,param_4);
if ((char)uVar8 != '\0') goto LAB_1400b277c;
goto LAB_1400b26aa;
}
goto LAB_1400b277c;
}
if (iVar7 == 1) {
lVar25 = 0;
iVar7 = 0;
if (*(int *)((longlong)param_2 + 0x2494) == 0) {
lVar18 = lVar25;
if ((longlong *)param_2[0x490] != (longlong *)0x0) {
lVar18 = *(longlong *)param_2[0x490];
}
FUN_140034c70(lVar18,'\x01');
local_808 = local_800;
FUN_14002e8f0((longlong *)&local_808,(LPCWSTR)((longlong)param_2 + 0x52),3);
local_898 = local_890;
FUN_14002e8f0((longlong *)&local_898,(LPCWSTR)(param_2 + 0x8b),3);
local_a18 = (uint)*(ushort *)((longlong)param_2 + 0x245c);
FUN_140031ea0((longlong *)(param_2 + 0x491),
"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);
}
lVar18 = FUN_1400ad0c0(param_1,(longlong)param_2);
if ((char)lVar18 == '\0') goto LAB_1400b26aa;
}
local_988 = Proud::AddrPort::vftable;
local_978 = 0;
local_990[0] = 0;
local_990[1] = 0;
local_980 = DAT_1401553d0;
local_97c = DAT_1401553d4;
if ((longlong *)param_2[0x490] != (longlong *)0x0) {
lVar25 = *(longlong *)param_2[0x490];
}
uVar8 = FUN_1400353c0(lVar25,0,local_990);
if ((char)uVar8 != '\0') {
*(undefined1 *)(param_2 + 0x498) = 0;
if (local_978 == 0) goto LAB_1400b26aa;
*(int *)((longlong)param_2 + 0x2504) = *(int *)((longlong)param_2 + 0x2504) + local_978;
puVar26 = param_2[0x491];
if (puVar26 != (undefined *)0x0) {
if (puVar26 == PTR_DAT_140155008) {
iVar7 = 0;
}
else {
iVar7 = *(int *)(puVar26 + -8);
}
}
if ((iVar7 - *(int *)((longlong)param_2 + 0x2504)) + 1 < 1) {
if (1 < *(int *)(param_2 + 0x492)) {
return;
}
param_2[0x492] = (undefined *)0x2;
return;
}
FUN_1400ad0c0(param_1,(longlong)param_2);
}
goto LAB_1400b277c;
}
if (iVar7 == 2) {
lVar25 = 0;
if (*(int *)((longlong)param_2 + 0x2494) == 0) {
*(undefined1 *)(param_2 + 0x4a0) = 1;
lVar18 = lVar25;
if ((longlong *)param_2[0x490] != (longlong *)0x0) {
lVar18 = *(longlong *)param_2[0x490];
}
uVar6 = FUN_1400362c0(lVar18,0x8000,param_3,param_4);
if (uVar6 == 0) goto LAB_1400b2317;
}
else {
LAB_1400b2317:
local_9a8 = Proud::AddrPort::vftable;
local_998 = 0;
local_9b0 = 0;
local_9a0 = DAT_1401553d0;
local_99c = DAT_1401553d4;
lVar18 = lVar25;
if ((longlong *)param_2[0x490] != (longlong *)0x0) {
lVar18 = *(longlong *)param_2[0x490];
}
uVar8 = FUN_140035150(lVar18,0,(undefined4 *)&local_9b0);
if ((char)uVar8 == '\0') {
LAB_1400b277c:
*(int *)((longlong)param_2 + 0x2494) = *(int *)((longlong)param_2 + 0x2494) + 1;
return;
}
*(undefined1 *)(param_2 + 0x4a0) = 0;
if (local_998 == 0) {
LAB_1400b26aa:
if (2 < *(int *)(param_2 + 0x492)) {
return;
}
param_2[0x492] = (undefined *)0x3;
return;
}
lVar18 = lVar25;
if ((longlong *)param_2[0x490] != (longlong *)0x0) {
lVar18 = *(longlong *)param_2[0x490];
}
lVar18 = FUN_140035710(lVar18);
ppuVar20 = (undefined **)(ulonglong)local_998;
FUN_1400ad140((longlong)(param_2 + 0x4a2),lVar18,ppuVar20,param_4);
*(uint *)(param_2 + 0x4a1) = *(int *)(param_2 + 0x4a1) + local_998;
if ((int)(0x8000U - *(int *)(param_2 + 0x4a1)) < 1) goto LAB_1400b26aa;
*(undefined1 *)(param_2 + 0x4a0) = 1;
if ((longlong *)param_2[0x490] != (longlong *)0x0) {
lVar25 = *(longlong *)param_2[0x490];
}
uVar6 = FUN_1400362c0(lVar25,(ulonglong)(0x8000U - *(int *)(param_2 + 0x4a1)),ppuVar20,param_4
);
if (uVar6 == 0) goto LAB_1400b277c;
}
*(undefined1 *)(param_2 + 0x4a0) = 0;
goto LAB_1400b23ed;
}
if (iVar7 != 3) {
if (iVar7 == 4) {
if (((*(int *)((longlong)param_2 + 0x2494) == 0) &&
((undefined8 *)param_2[0x490] != (undefined8 *)0x0)) &&
(plVar12 = *(longlong **)param_2[0x490], plVar12 != (longlong *)0x0)) {
FUN_140035490(plVar12,param_2,param_3,param_4);
}
local_968 = Proud::AddrPort::vftable;
lVar25 = 0;
local_958 = 0;
local_970[0] = 0;
local_970[1] = 0;
local_960 = DAT_1401553d0;
local_95c = DAT_1401553d4;
lVar18 = lVar25;
if ((longlong *)param_2[0x490] != (longlong *)0x0) {
lVar18 = *(longlong *)param_2[0x490];
}
uVar8 = FUN_140035150(lVar18,0,local_970);
if ((char)uVar8 != '\0') {
*(undefined1 *)(param_2 + 0x4a0) = 0;
}
if ((longlong *)param_2[0x490] != (longlong *)0x0) {
lVar25 = *(longlong *)param_2[0x490];
}
uVar8 = FUN_1400353c0(lVar25,0,local_970);
if ((char)uVar8 != '\0') {
*(undefined1 *)(param_2 + 0x498) = 0;
}
if ((*(char *)(param_2 + 0x4a0) == '\0') && (*(char *)(param_2 + 0x498) == '\0')) {
if (4 < *(int *)(param_2 + 0x492)) {
return;
}
param_2[0x492] = (undefined *)0x5;
return;
}
}
goto LAB_1400b277c;
}
uVar6 = 0;
if (*(int *)(param_2 + 0x4a5) == 0) goto LAB_1400b23ed;
_Dst = FUN_14002edf0((longlong *)(param_2 + 0x4a7),*(int *)(param_2 + 0x4a5) + 1);
memset(_Dst,0,(longlong)(*(int *)(param_2 + 0x4a5) + 1));
puVar26 = (undefined *)0x0;
if (*(int *)(param_2 + 0x4a5) != 0) {
puVar26 = param_2[0x4a4];
}
_Size = (size_t)*(int *)(param_2 + 0x4a5);
memcpy(_Dst,puVar26,_Size);
ppuVar20 = param_2 + 0x4a7;
FUN_14002eab0((longlong *)ppuVar20);
FUN_140030200(ppuVar20,puVar26,_Size,param_4);
ppppppuVar36 = (uint ******)PTR_DAT_140155008;
local_9d8 = (uint ******)PTR_DAT_140155008;
ppuVar20 = param_2 + 0x4a7;
FUN_1400ade70((longlong *)ppuVar20);
FUN_140030200(ppuVar20,puVar26,_Size,param_4);
puVar17 = (uint *)PTR_DAT_140155008;
local_9f0 = (uint *)PTR_DAT_140155008;
uVar4 = FUN_140030120("MODELDESCRIPTION");
iVar7 = 0;
if ((puVar17 != (uint *)0x0) && (iVar7 = 0, puVar17 != (uint *)PTR_DAT_140155008)) {
iVar7 = *(int *)((longlong)puVar17 + -8);
}
uVar5 = uVar4;
if ((((int)uVar4 <= iVar7) && (uVar5 = 0, puVar17 != (uint *)0x0)) &&
(puVar17 != (uint *)PTR_DAT_140155008)) {
uVar5 = *(uint *)((longlong)puVar17 + -8);
}
uVar31 = 1;
if (1 < (int)uVar5) {
uVar31 = uVar5;
}
iVar7 = 0;
if ((puVar17 != (uint *)0x0) && (iVar7 = 0, puVar17 != (uint *)PTR_DAT_140155008)) {
iVar7 = *(int *)((longlong)puVar17 + -8);
}
if (iVar7 < (int)uVar31) {
if (puVar17 == (uint *)0x0) {
puVar17 = (uint *)PTR_DAT_140155008;
}
local_9f0 = puVar17;
if ((int)uVar31 < 0) {
/* WARNING: Subroutine does not return */
FUN_14002f590();
}
if (uVar31 == 0) {
FUN_14001c020((longlong *)&local_9f0);
}
else {
uVar5 = 0;
if ((puVar17 != (uint *)0x0) && (puVar17 != (uint *)PTR_DAT_140155008)) {
uVar5 = puVar17[-2];
}
if (uVar31 != uVar5) {
puVar9 = (uint *)FUN_140030280((longlong)(int)uVar31 + 9);
if (puVar9 != (uint *)0x0) {
*puVar9 = 0;
puVar9[1] = 1;
}
*puVar9 = uVar31;
uVar5 = 0;
if ((puVar17 != (uint *)0x0) && (puVar17 != (uint *)PTR_DAT_140155008)) {
uVar5 = puVar17[-2];
}
puVar10 = (uint *)PTR_DAT_140155008;
if ((int)uVar31 < (int)uVar5) {
LAB_1400b1825:
if (puVar17 != (uint *)0x0) {
puVar10 = puVar17;
}
}
else {
uVar31 = uVar6;
if (puVar17 != (uint *)0x0) {
if (puVar17 != (uint *)PTR_DAT_140155008) {
uVar31 = puVar17[-2];
}
goto LAB_1400b1825;
}
}
FUN_140030150(puVar9 + 2,puVar10,uVar31);
FUN_14001c020((longlong *)&local_9f0);
local_9f0 = puVar9 + 2;
}
}
}
FUN_14002eb30((longlong *)&local_9f0);
puVar17 = local_9f0;
puVar9 = local_9f0;
if (local_9f0 == (uint *)0x0) {
puVar9 = (uint *)PTR_DAT_140155008;
}
uVar29 = (ulonglong)uVar4;
FUN_140030150(puVar9,"MODELDESCRIPTION",uVar4);
puVar9 = puVar17;
if (puVar17 == (uint *)0x0) {
puVar9 = (uint *)PTR_DAT_140155008;
}
uVar5 = FUN_140030120((char *)puVar9);
uVar4 = 0;
if (0 < (int)uVar5) {
uVar4 = uVar5;
}
uVar21 = (ulonglong)uVar4;
uVar5 = 0;
if ((puVar17 != (uint *)0x0) && (uVar5 = 0, puVar17 != (uint *)PTR_DAT_140155008)) {
uVar5 = puVar17[-2];
}
puVar9 = (uint *)PTR_DAT_140155008;
if (((int)uVar4 < (int)uVar5) || (uVar21 = 0, puVar17 == (uint *)0x0)) {
LAB_1400b18bd:
if (((puVar17 != (uint *)PTR_DAT_140155008) && (puVar17 != (uint *)0x0)) &&
(puVar9 = puVar17 + -2, puVar9 != (uint *)0x0)) {
*puVar9 = (uint)uVar21;
*(undefined1 *)((longlong)(int)(uint)uVar21 + 8 + (longlong)puVar9) = 0;
}
}
else if (puVar17 != (uint *)PTR_DAT_140155008) {
uVar21 = (ulonglong)puVar17[-2];
goto LAB_1400b18bd;
}
FUN_140030200(uVar21,puVar9,uVar29,param_4);
puVar9 = (uint *)PTR_DAT_140155008;
local_a00 = (uint *)PTR_DAT_140155008;
uVar4 = FUN_140030120("FRIENDLYNAME");
iVar7 = 0;
if ((puVar9 != (uint *)0x0) && (iVar7 = 0, puVar9 != (uint *)PTR_DAT_140155008)) {
iVar7 = *(int *)((longlong)puVar9 + -8);
}
uVar5 = uVar4;
if ((((int)uVar4 <= iVar7) && (uVar5 = 0, puVar9 != (uint *)0x0)) &&
(puVar9 != (uint *)PTR_DAT_140155008)) {
uVar5 = *(uint *)((longlong)puVar9 + -8);
}
uVar31 = 1;
if (1 < (int)uVar5) {
uVar31 = uVar5;
}
iVar7 = 0;
if ((puVar9 != (uint *)0x0) && (iVar7 = 0, puVar9 != (uint *)PTR_DAT_140155008)) {
iVar7 = *(int *)((longlong)puVar9 + -8);
}
if (iVar7 < (int)uVar31) {
if (puVar9 == (uint *)0x0) {
puVar9 = (uint *)PTR_DAT_140155008;
}
local_a00 = puVar9;
if ((int)uVar31 < 0) {
/* WARNING: Subroutine does not return */
FUN_14002f590();
}
if (uVar31 == 0) {
FUN_14001c020((longlong *)&local_a00);
}
else {
uVar5 = 0;
if ((puVar9 != (uint *)0x0) && (puVar9 != (uint *)PTR_DAT_140155008)) {
uVar5 = puVar9[-2];
}
if (uVar31 != uVar5) {
puVar10 = (uint *)FUN_140030280((longlong)(int)uVar31 + 9);
if (puVar10 != (uint *)0x0) {
*puVar10 = 0;
puVar10[1] = 1;
}
*puVar10 = uVar31;
uVar5 = 0;
if ((puVar9 != (uint *)0x0) && (puVar9 != (uint *)PTR_DAT_140155008)) {
uVar5 = puVar9[-2];
}
puVar11 = (uint *)PTR_DAT_140155008;
if ((int)uVar31 < (int)uVar5) {
LAB_1400b19ca:
if (puVar9 != (uint *)0x0) {
puVar11 = puVar9;
}
}
else {
uVar31 = uVar6;
if (puVar9 != (uint *)0x0) {
if (puVar9 != (uint *)PTR_DAT_140155008) {
uVar31 = puVar9[-2];
}
goto LAB_1400b19ca;
}
}
FUN_140030150(puVar10 + 2,puVar11,uVar31);
FUN_14001c020((longlong *)&local_a00);
local_a00 = puVar10 + 2;
}
}
}
FUN_14002eb30((longlong *)&local_a00);
puVar9 = local_a00;
puVar10 = local_a00;
if (local_a00 == (uint *)0x0) {
puVar10 = (uint *)PTR_DAT_140155008;
}
FUN_140030150(puVar10,"FRIENDLYNAME",uVar4);
puVar10 = puVar9;
if (puVar9 == (uint *)0x0) {
puVar10 = (uint *)PTR_DAT_140155008;
}
uVar5 = FUN_140030120((char *)puVar10);
uVar4 = 0;
if (0 < (int)uVar5) {
uVar4 = uVar5;
}
uVar5 = 0;
if ((puVar9 != (uint *)0x0) && (uVar5 = 0, puVar9 != (uint *)PTR_DAT_140155008)) {
uVar5 = puVar9[-2];
}
if (((int)uVar4 < (int)uVar5) || (uVar4 = 0, puVar9 == (uint *)0x0)) {
LAB_1400b1a62:
if (((puVar9 != (uint *)PTR_DAT_140155008) && (puVar9 != (uint *)0x0)) &&
(puVar10 = puVar9 + -2, puVar10 != (uint *)0x0)) {
*puVar10 = uVar4;
*(undefined1 *)((longlong)(int)uVar4 + 8 + (longlong)puVar10) = 0;
}
}
else if (puVar9 != (uint *)PTR_DAT_140155008) {
uVar4 = puVar9[-2];
goto LAB_1400b1a62;
}
ppuVar35 = &local_9f0;
ppppppplVar32 = (longlong *******)(param_2 + 0x4a7);
ppuVar20 = &local_9d0;
puVar22 = local_9e0;
local_a08 = (uint *******)
FUN_1400aebc0(local_9e0,(longlong *)ppuVar20,ppppppplVar32,(longlong *)ppuVar35);
FUN_140030200(puVar22,ppuVar20,ppppppplVar32,ppuVar35);
puVar10 = (uint *)PTR_DAT_140155008;
local_9f8 = (uint *)PTR_DAT_140155008;
local_9e8[0] = FUN_140030120("##");
iVar7 = 0;
if ((puVar10 != (uint *)0x0) && (iVar7 = 0, puVar10 != (uint *)PTR_DAT_140155008)) {
iVar7 = *(int *)((longlong)puVar10 + -8);
}
uVar4 = local_9e8[0];
if ((((int)local_9e8[0] <= iVar7) && (uVar4 = 0, puVar10 != (uint *)0x0)) &&
(puVar10 != (uint *)PTR_DAT_140155008)) {
uVar4 = *(uint *)((longlong)puVar10 + -8);
}
uVar5 = 1;
if (1 < (int)uVar4) {
uVar5 = uVar4;
}
iVar7 = 0;
if ((puVar10 != (uint *)0x0) && (iVar7 = 0, puVar10 != (uint *)PTR_DAT_140155008)) {
iVar7 = *(int *)((longlong)puVar10 + -8);
}
if (iVar7 < (int)uVar5) {
if (puVar10 == (uint *)0x0) {
puVar10 = (uint *)PTR_DAT_140155008;
}
local_9f8 = puVar10;
if ((int)uVar5 < 0) {
/* WARNING: Subroutine does not return */
FUN_14002f590();
}
if (uVar5 == 0) {
FUN_14001c020((longlong *)&local_9f8);
}
else {
uVar4 = 0;
if ((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140155008)) {
uVar4 = puVar10[-2];
}
if (uVar5 != uVar4) {
puVar11 = (uint *)FUN_140030280((longlong)(int)uVar5 + 9);
if (puVar11 != (uint *)0x0) {
*puVar11 = 0;
puVar11[1] = 1;
}
*puVar11 = uVar5;
uVar4 = 0;
if ((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140155008)) {
uVar4 = puVar10[-2];
}
puVar27 = (uint *)PTR_DAT_140155008;
if ((int)uVar5 < (int)uVar4) {
LAB_1400b1b99:
if (puVar10 != (uint *)0x0) {
puVar27 = puVar10;
}
}
else {
uVar5 = uVar6;
if (puVar10 != (uint *)0x0) {
if (puVar10 != (uint *)PTR_DAT_140155008) {
uVar5 = puVar10[-2];
}
goto LAB_1400b1b99;
}
}
FUN_140030150(puVar11 + 2,puVar27,uVar5);
FUN_14001c020((longlong *)&local_9f8);
local_9f8 = puVar11 + 2;
}
}
}
FUN_14002eb30((longlong *)&local_9f8);
puVar10 = local_9f8;
puVar11 = local_9f8;
if (local_9f8 == (uint *)0x0) {
puVar11 = (uint *)PTR_DAT_140155008;
}
FUN_140030150(puVar11,&DAT_14010c5b0,local_9e8[0]);
puVar11 = puVar10;
if (puVar10 == (uint *)0x0) {
puVar11 = (uint *)PTR_DAT_140155008;
}
uVar5 = FUN_140030120((char *)puVar11);
uVar4 = 0;
if (0 < (int)uVar5) {
uVar4 = uVar5;
}
uVar5 = 0;
if ((puVar10 != (uint *)0x0) && (uVar5 = 0, puVar10 != (uint *)PTR_DAT_140155008)) {
uVar5 = puVar10[-2];
}
if (((int)uVar4 < (int)uVar5) || (uVar4 = 0, puVar10 == (uint *)0x0)) {
LAB_1400b1c33:
if (((puVar10 != (uint *)PTR_DAT_140155008) && (puVar10 != (uint *)0x0)) &&
(puVar11 = puVar10 + -2, puVar11 != (uint *)0x0)) {
*puVar11 = uVar4;
*(undefined1 *)((longlong)(int)uVar4 + 8 + (longlong)puVar11) = 0;
}
}
else if (puVar10 != (uint *)PTR_DAT_140155008) {
uVar4 = puVar10[-2];
goto LAB_1400b1c33;
}
ppuVar35 = &local_a00;
plVar12 = FUN_1400aebc0(local_9e0,(longlong *)&local_9b8,(longlong *******)(param_2 + 0x4a7),
(longlong *)ppuVar35);
pppppppuVar13 =
(uint *******)FUN_140032430((longlong *)&local_9c0,plVar12,(longlong *)&local_9f8,ppuVar35);
pppppppuVar14 =
(uint *******)
FUN_140032430((longlong *)&local_9c8,(longlong *)pppppppuVar13,(longlong *)local_a08,ppuVar35
);
if (ppppppuVar36 == (uint ******)0x0) {
ppppppuVar36 = (uint ******)PTR_DAT_140155008;
}
pppppppuVar33 = local_a08;
local_9d8 = ppppppuVar36;
if (*pppppppuVar14 != ppppppuVar36) {
local_a08 = pppppppuVar14;
piVar15 = (int *)FUN_140030200(PTR_DAT_140155008,pppppppuVar13,pppppppuVar33,ppuVar35);
piVar16 = piVar15;
local_920 = piVar15;
FUN_14002e6e0(piVar15);
local_918 = 1;
if (((ppppppuVar36 != (uint ******)0x0) && (ppppppuVar36 != (uint ******)PTR_DAT_140155008)) &&
(ppppppuVar36 + -1 != (uint ******)0x0)) {
piVar15 = (int *)FUN_140030200(piVar16,pppppppuVar13,pppppppuVar33,ppuVar35);
local_8a8 = piVar15;
FUN_14002e6e0(piVar15);
local_8a0 = 1;
piVar16 = (int *)((longlong)ppppppuVar36 + -4);
*piVar16 = *piVar16 + -1;
if (*piVar16 == 0) {
FUN_1400302f0(ppppppuVar36 + -1);
}
FUN_14002e770((longlong)piVar15);
piVar15 = local_920;
}
ppppppuVar36 = *local_a08;
if (((ppppppuVar36 != (uint ******)PTR_DAT_140155008) && (ppppppuVar36 != (uint ******)0x0)) &&
(ppppppuVar36 != (uint ******)0x8)) {
*(int *)((longlong)ppppppuVar36 + -4) = *(int *)((longlong)ppppppuVar36 + -4) + 1;
}
local_9d8 = ppppppuVar36;
FUN_14002e770((longlong)piVar15);
pppppppuVar14 = local_a08;
}
local_a08 = pppppppuVar14;
if (((local_9c8 != (undefined *)0x0) && (local_9c8 != PTR_DAT_140155008)) &&
(local_9c8 + -8 != (undefined *)0x0)) {
local_930 = (int *)FUN_140030200(PTR_DAT_140155008,pppppppuVar13,pppppppuVar33,ppuVar35);
FUN_14002e6e0(local_930);
local_928 = 1;
piVar16 = (int *)(local_9c8 + -4);
*piVar16 = *piVar16 + -1;
if (*piVar16 == 0) {
FUN_1400302f0(local_9c8 + -8);
}
FUN_14002e770((longlong)local_930);
}
local_9c8 = PTR_DAT_140155008;
if (((local_9c0 != (undefined *)0x0) && (local_9c0 != PTR_DAT_140155008)) &&
(local_9c0 + -8 != (undefined *)0x0)) {
local_950 = (int *)FUN_140030200(PTR_DAT_140155008,pppppppuVar13,pppppppuVar33,ppuVar35);
FUN_14002e6e0(local_950);
local_948 = 1;
piVar16 = (int *)(local_9c0 + -4);
*piVar16 = *piVar16 + -1;
if (*piVar16 == 0) {
FUN_1400302f0(local_9c0 + -8);
}
FUN_14002e770((longlong)local_950);
}
local_9c0 = PTR_DAT_140155008;
if (((local_9b8 != (undefined *)0x0) && (local_9b8 != PTR_DAT_140155008)) &&
(local_9b8 + -8 != (undefined *)0x0)) {
local_940 = (int *)FUN_140030200(PTR_DAT_140155008,pppppppuVar13,pppppppuVar33,ppuVar35);
FUN_14002e6e0(local_940);
local_938 = 1;
piVar16 = (int *)(local_9b8 + -4);
*piVar16 = *piVar16 + -1;
if (*piVar16 == 0) {
FUN_1400302f0(local_9b8 + -8);
}
FUN_14002e770((longlong)local_940);
}
local_9b8 = PTR_DAT_140155008;
if (((puVar10 != (uint *)0x0) && (puVar10 != (uint *)PTR_DAT_140155008)) &&
(puVar10 + -2 != (uint *)0x0)) {
piVar16 = (int *)FUN_140030200(PTR_DAT_140155008,pppppppuVar13,pppppppuVar33,ppuVar35);
local_8b8 = piVar16;
FUN_14002e6e0(piVar16);
local_8b0 = 1;
puVar11 = puVar10 + -1;
*puVar11 = *puVar11 - 1;
if (*puVar11 == 0) {
FUN_1400302f0(puVar10 + -2);
}
FUN_14002e770((longlong)piVar16);
}
if (((local_9d0 != (undefined *)0x0) && (local_9d0 != PTR_DAT_140155008)) &&
(local_9d0 + -8 != (undefined *)0x0)) {
piVar15 = (int *)FUN_140030200(PTR_DAT_140155008,pppppppuVar13,pppppppuVar33,ppuVar35);
local_900 = piVar15;
FUN_14002e6e0(piVar15);
local_8f8 = 1;
piVar16 = (int *)(local_9d0 + -4);
*piVar16 = *piVar16 + -1;
if (*piVar16 == 0) {
FUN_1400302f0(local_9d0 + -8);
}
FUN_14002e770((longlong)piVar15);
}
local_9d0 = PTR_DAT_140155008;
if (((puVar9 != (uint *)0x0) && (puVar9 != (uint *)PTR_DAT_140155008)) &&
(puVar9 + -2 != (uint *)0x0)) {
piVar16 = (int *)FUN_140030200(PTR_DAT_140155008,pppppppuVar13,pppppppuVar33,ppuVar35);
local_8f0 = piVar16;
FUN_14002e6e0(piVar16);
local_8e8 = 1;
puVar10 = puVar9 + -1;
*puVar10 = *puVar10 - 1;
if (*puVar10 == 0) {
FUN_1400302f0(puVar9 + -2);
}
FUN_14002e770((longlong)piVar16);
}
if (((puVar17 != (uint *)0x0) && (puVar17 != (uint *)PTR_DAT_140155008)) &&
(puVar17 + -2 != (uint *)0x0)) {
piVar16 = (int *)FUN_140030200(PTR_DAT_140155008,pppppppuVar13,pppppppuVar33,ppuVar35);
local_8c8 = piVar16;
FUN_14002e6e0(piVar16);
local_8c0 = 1;
puVar9 = puVar17 + -1;
*puVar9 = *puVar9 - 1;
if (*puVar9 == 0) {
FUN_1400302f0(puVar17 + -2);
}
FUN_14002e770((longlong)piVar16);
}
if (((ppppppuVar36 != (uint ******)0x0) && (ppppppuVar36 != (uint ******)PTR_DAT_140155008)) &&
(2 < *(int *)(ppppppuVar36 + -1))) {
local_778 = local_770;
uVar8 = 3;
ppsVar23 = &local_778;
ppppppuVar28 = ppppppuVar36;
FUN_14002a670((longlong *)ppsVar23,(LPCSTR)ppppppuVar36,3);
psVar3 = local_778;
FUN_140030200(ppsVar23,ppppppuVar28,uVar8,ppuVar35);
pppppppuVar13 = (uint *******)PTR_DAT_140155010;
local_a08 = (uint *******)PTR_DAT_140155010;
uVar4 = FUN_140030080(psVar3);
uVar29 = 0;
if ((pppppppuVar13 != (uint *******)0x0) && (pppppppuVar13 != (uint *******)PTR_DAT_140155010))
{
uVar29 = (ulonglong)*(uint *)((longlong)pppppppuVar13 + -8);
}
uVar5 = uVar4;
if ((((int)uVar4 <= (int)uVar29) && (uVar5 = 0, pppppppuVar13 != (uint *******)0x0)) &&
(pppppppuVar13 != (uint *******)PTR_DAT_140155010)) {
uVar5 = *(uint *)((longlong)pppppppuVar13 + -8);
}
uVar31 = 1;
if (1 < (int)uVar5) {
uVar31 = uVar5;
}
iVar7 = 0;
if ((pppppppuVar13 != (uint *******)0x0) &&
(iVar7 = 0, pppppppuVar13 != (uint *******)PTR_DAT_140155010)) {
iVar7 = *(int *)((longlong)pppppppuVar13 + -8);
}
if (iVar7 < (int)uVar31) {
if (pppppppuVar13 == (uint *******)0x0) {
pppppppuVar13 = (uint *******)PTR_DAT_140155010;
}
local_a08 = pppppppuVar13;
if ((int)uVar31 < 0) {
/* WARNING: Subroutine does not return */
FUN_14002f590();
}
if (uVar31 == 0) {
FUN_140003240((longlong *)&local_a08,uVar29,uVar8,ppuVar35);
}
else {
uVar5 = 0;
if ((pppppppuVar13 != (uint *******)0x0) &&
(pppppppuVar13 != (uint *******)PTR_DAT_140155010)) {
uVar5 = *(uint *)(pppppppuVar13 + -1);
}
if (uVar31 != uVar5) {
puVar17 = (uint *)FUN_140030280((longlong)(int)uVar31 * 2 + 10);
if (puVar17 != (uint *)0x0) {
*puVar17 = 0;
puVar17[1] = 1;
}
*puVar17 = uVar31;
uVar5 = 0;
if ((pppppppuVar13 != (uint *******)0x0) &&
(pppppppuVar13 != (uint *******)PTR_DAT_140155010)) {
uVar5 = *(uint *)(pppppppuVar13 + -1);
}
pppppppuVar14 = (uint *******)PTR_DAT_140155010;
if ((int)uVar31 < (int)uVar5) {
LAB_1400b209c:
if (pppppppuVar13 != (uint *******)0x0) {
pppppppuVar14 = pppppppuVar13;
}
}
else {
uVar31 = uVar6;
if (pppppppuVar13 != (uint *******)0x0) {
if (pppppppuVar13 != (uint *******)PTR_DAT_140155010) {
uVar31 = *(uint *)(pppppppuVar13 + -1);
}
goto LAB_1400b209c;
}
}
uVar29 = (ulonglong)uVar31;
FUN_1400300b0(puVar17 + 2,pppppppuVar14,uVar31);
FUN_140003240((longlong *)&local_a08,pppppppuVar14,uVar29,ppuVar35);
local_a08 = (uint *******)(puVar17 + 2);
}
}
}
FUN_140002ea0((longlong *)&local_a08);
pppppppuVar14 = local_a08;
pppppppuVar13 = local_a08;
if (local_a08 == (uint *******)0x0) {
pppppppuVar13 = (uint *******)PTR_DAT_140155010;
}
FUN_1400300b0(pppppppuVar13,psVar3,uVar4);
pppppppuVar13 = pppppppuVar14;
if (pppppppuVar14 == (uint *******)0x0) {
pppppppuVar13 = (uint *******)PTR_DAT_140155010;
}
uVar4 = FUN_140030080((short *)pppppppuVar13);
puVar22 = local_9e0;
uVar6 = 0;
if (0 < (int)uVar4) {
uVar6 = uVar4;
}
uVar4 = 0;
if ((pppppppuVar14 != (uint *******)0x0) &&
(uVar4 = 0, pppppppuVar14 != (uint *******)PTR_DAT_140155010)) {
uVar4 = *(uint *)(pppppppuVar14 + -1);
}
if (((int)uVar6 < (int)uVar4) || (uVar6 = 0, pppppppuVar14 == (uint *******)0x0)) {
LAB_1400b2130:
if (((pppppppuVar14 != (uint *******)PTR_DAT_140155010) &&
(pppppppuVar14 != (uint *******)0x0)) && (pppppppuVar14 + -1 != (uint *******)0x0)) {
*(uint *)(pppppppuVar14 + -1) = uVar6;
*(ushort *)((longlong)pppppppuVar14 + (longlong)(int)uVar6 * 2) = 0;
}
}
else if (pppppppuVar14 != (uint *******)PTR_DAT_140155010) {
uVar6 = *(uint *)(pppppppuVar14 + -1);
goto LAB_1400b2130;
}
pppppppuVar13 = pppppppuVar14;
if (pppppppuVar14 == (uint *******)0x0) {
pppppppuVar13 = (uint *******)PTR_DAT_140155010;
}
if (pppppppuVar13 == (uint *******)0x0) {
/* WARNING: Subroutine does not return */
FUN_14000b450(0x80004005);
}
uVar6 = 0;
pppppppuVar13 = pppppppuVar14;
if (pppppppuVar14 == (uint *******)0x0) {
pppppppuVar13 = (uint *******)PTR_DAT_140155010;
}
uVar1 = *(ushort *)pppppppuVar13;
while (uVar1 != 0) {
uVar6 = uVar6 * 0x21 + (uint)uVar1;
pppppppuVar13 = (uint *******)((longlong)pppppppuVar13 + 2);
uVar1 = *(ushort *)pppppppuVar13;
}
uVar4 = *(uint *)(local_9e0 + 0x1a);
pppppppuVar34 = (uint *******)PTR_DAT_140155010;
if (local_9e0[0x16] != 0) {
plVar12 = *(longlong **)(local_9e0[0x16] + ((ulonglong)uVar6 % (ulonglong)uVar4) * 8);
pppppppuVar33 = (uint *******)PTR_DAT_140155010;
while( true ) {
PTR_DAT_140155010 = (undefined *)pppppppuVar33;
if ((plVar12 == (longlong *)0x0) ||
(pppppppuVar34 = pppppppuVar33,
(uint)((ulonglong)uVar6 % (ulonglong)uVar4) !=
*(uint *)(plVar12 + 4) % *(uint *)(puVar22 + 0x1a))) goto LAB_1400b2214;
pppppppuVar13 = pppppppuVar14;
if (pppppppuVar14 == (uint *******)0x0) {
pppppppuVar13 = pppppppuVar33;
}
pppppppuVar24 = (uint *******)*plVar12;
if ((uint *******)*plVar12 == (uint *******)0x0) {
pppppppuVar24 = pppppppuVar33;
}
iVar7 = FUN_1400300c0((ushort *)pppppppuVar24,(longlong)pppppppuVar13);
pppppppuVar34 = pppppppuVar33;
if (iVar7 == 0) break;
plVar12 = (longlong *)plVar12[2];
pppppppuVar33 = (uint *******)PTR_DAT_140155010;
}
if (plVar12 != (longlong *)0x0) goto LAB_1400b2228;
}
LAB_1400b2214:
pppppppuVar13 = (uint *******)&local_a08;
pppppppuVar24 = (uint *******)(puVar22 + 0x15);
plVar12 = FUN_1400b0650((char *)pppppppuVar24,(longlong *)pppppppuVar13);
*(undefined1 *)plVar12 = 0;
pppppppuVar33 = pppppppuVar34;
LAB_1400b2228:
if (((pppppppuVar14 != (uint *******)0x0) && (pppppppuVar14 != (uint *******)PTR_DAT_140155010))
&& (pppppppuVar14 + -1 != (uint *******)0x0)) {
piVar16 = (int *)FUN_140030200(pppppppuVar24,pppppppuVar13,pppppppuVar33,ppuVar35);
local_8d8 = piVar16;
FUN_14002e6e0(piVar16);
local_8d0 = 1;
puVar17 = (uint *)((longlong)pppppppuVar14 + -4);
*puVar17 = *puVar17 - 1;
if (*puVar17 == 0) {
FUN_1400302f0(pppppppuVar14 + -1);
}
FUN_14002e770((longlong)piVar16);
}
if (local_778 != local_770) {
free(local_778);
}
}
if (((ppppppuVar36 != (uint ******)0x0) && (ppppppuVar36 != (uint ******)PTR_DAT_140155008)) &&
(ppppppuVar36 + -1 != (uint ******)0x0)) {
piVar15 = (int *)FUN_140030200(PTR_DAT_140155008,pppppppuVar13,pppppppuVar33,ppuVar35);
local_910 = piVar15;
FUN_14002e6e0(piVar15);
local_908 = 1;
piVar16 = (int *)((longlong)ppppppuVar36 + -4);
*piVar16 = *piVar16 + -1;
if (*piVar16 == 0) {
FUN_1400302f0(ppppppuVar36 + -1);
}
FUN_14002e770((longlong)piVar15);
}
LAB_1400b23ed:
if (3 < *(int *)(param_2 + 0x492)) {
return;
}
param_2[0x492] = (undefined *)0x4;
return;
}