bininst2.exe decompiled
unknown
plain_text
6 days ago
89 kB
5
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