Skip to content

Instantly share code, notes, and snippets.

@anyfactor
Created July 4, 2023 18:27
Show Gist options
  • Save anyfactor/5ad2fd078c4ad6a9e49783cf6aed33c8 to your computer and use it in GitHub Desktop.
Save anyfactor/5ad2fd078c4ad6a9e49783cf6aed33c8 to your computer and use it in GitHub Desktop.
Decompiled hello_word executable
/* This file was generated by the Hex-Rays decompiler version 8.2.0.221215.
Copyright (c) 2007-2021 Hex-Rays <info@hex-rays.com>
Detected compiler: Visual C++
*/
#include <windows.h>
#include <defs.h>
//-------------------------------------------------------------------------
// Function declarations
__int64 __fastcall sub_140001000(__int64 (**a1)(void));
void sub_140001030();
int __cdecl main(int argc, const char **argv, const char **envp);
__int64 __fastcall sub_1400010C0(__int64 (*a1)(void));
__int64 __fastcall sub_1400010D0(_QWORD, _QWORD); // weak
__int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD); // weak
__int64 __fastcall sub_1400010F0(void *Src, size_t Size); // idb
void __noreturn sub_140001100(void); // weak
__int64 __fastcall sub_140001110(unsigned __int64 a1, unsigned __int64 a2, __int64 a3, unsigned __int64 a4, __int64 a5);
unsigned __int64 sub_140001150();
__int64 sub_140001160();
unsigned __int64 sub_140001170();
__int64 __fastcall sub_140001180(unsigned __int64 **a1, __int64 a2);
__int64 __fastcall sub_1400011E0(__int64 a1, __int64 *a2);
__int64 __fastcall sub_140001200(__int64 **a1, _QWORD *a2);
__int64 __fastcall sub_140001210(__int64 a1, __int64 *a2);
bool __fastcall sub_140001230(__int64 *a1, __int64 *a2);
bool __fastcall sub_140001240(__int64 *a1, unsigned int a2);
bool __fastcall sub_140001300(__int64 a1, unsigned int a2);
__int64 __fastcall sub_1400013C0(__int64 a1, unsigned int a2);
bool __fastcall sub_1400014C0(__int64 a1, __int128 *a2);
bool __fastcall sub_140001500(__int64 a1, __int128 *a2);
bool __fastcall sub_140001540(__int64 a1, __int128 *a2);
__int64 __fastcall sub_140001590(_BYTE **a1);
__int64 __fastcall sub_1400015B0(_QWORD **a1);
void sub_140001620();
__int64 __fastcall sub_1400016C0(__int64 **a1);
void __noreturn sub_140001760();
__int64 __fastcall sub_140001780(__int64 a1);
_BYTE *__fastcall sub_140001790(_QWORD *a1);
__int64 __fastcall sub_1400017D0(volatile signed __int64 *a1);
void __fastcall sub_1400017E0(_QWORD *a1);
__int64 __fastcall sub_1400017F0(__int64 a1);
void __fastcall sub_140001810(__int64 a1);
__int64 __fastcall sub_140001840(_QWORD *a1);
_BYTE *__fastcall sub_140001860(volatile signed __int64 **a1);
__int64 __fastcall sub_140001870(_QWORD *a1);
void __noreturn sub_140001930();
void __fastcall sub_1400019F0(__int64 a1, char a2);
_BYTE *__fastcall sub_140001A30(_QWORD *a1);
__int64 __fastcall sub_140001A50(_QWORD *a1);
_BYTE *__fastcall sub_140001A80(__int64 a1);
__int64 __fastcall sub_140001AA0(__int64 a1);
void __fastcall sub_140001AD0(__int64 a1);
_QWORD *__fastcall sub_140001AE0(_QWORD *a1);
__int64 __fastcall sub_140001B00(__int64 a1);
_BYTE *__fastcall sub_140001BC0(_QWORD *a1);
_BYTE *__fastcall sub_140001BF0(__int64 a1);
__int64 __fastcall sub_140001C10(_QWORD *a1);
void __fastcall sub_140001CD0(unsigned __int64 a1, __int64 a2);
__int64 __fastcall sub_140001D30(__int64 a1, __int64 a2);
__int64 __fastcall sub_140001D50(__int64 a1);
_QWORD *__fastcall sub_140001E60(_QWORD *a1);
__int64 __fastcall sub_140001F40(unsigned int a1, _BYTE *a2, unsigned __int64 a3);
__int64 __fastcall sub_1400020C0(__int64 a1);
__int64 __fastcall sub_140002110(unsigned __int64 *a1, const __m128i *a2);
bool __fastcall sub_140002120(__int64 *a1, unsigned int a2);
bool __fastcall sub_1400021E0(__int64 **a1, unsigned int a2);
__int64 __fastcall sub_1400022A0(__int64 **a1, unsigned int a2);
__int64 __fastcall sub_1400022C0(__int64 *a1, unsigned int a2);
bool __fastcall sub_1400022E0(__int64 *a1, __int128 *a2);
bool __fastcall sub_140002330(__int64 *a1, __int128 *a2);
bool __fastcall sub_140002380(__int64 *a1, __int128 *a2);
bool __fastcall sub_1400023D0(__int64 *a1, __int128 *a2);
__int64 __fastcall sub_140002420(__int64 **a1, const void *a2, size_t a3);
bool __fastcall sub_140002480(__int64 *a1, unsigned __int8 *a2, unsigned __int64 a3);
__int64 __fastcall sub_140002490(__int64 a1, const void *a2, size_t a3);
bool __fastcall sub_1400024F0(__int64 **a1, __int64 a2);
__int64 __fastcall sub_140002500(_BYTE *Buf2, size_t Size, char *Buf1, unsigned __int64 a4);
__int64 __fastcall sub_140002D80(__int64 a1);
_BYTE *__fastcall sub_140002DF0(__int64 a1);
__int64 __fastcall sub_140002E50(__int64 a1, __int64 a2, __int64 a3);
__int64 __fastcall sub_140002E60(__int64 a1);
_BYTE *__fastcall sub_140002E70(__int64 *a1, unsigned int a2);
__int64 __fastcall sub_140002F90(__int64 *a1, __int64 a2, __int64 a3, __int64 a4);
__int64 __fastcall sub_140003020(unsigned __int64 *a1, __int64 a2);
__int64 __fastcall sub_1400030E0(__int64 *a1, __int64 a2);
unsigned __int64 __fastcall sub_1400031A0(__int64 a1);
__int64 __fastcall sub_1400032B0(__int64 a1, __int64 *a2);
__int64 __fastcall sub_1400032D0(_QWORD *a1, _QWORD *a2);
void __fastcall sub_140003340(unsigned __int64 *a1, __int64 a2);
void __fastcall sub_1400034D0(__int64 a1, __int64 a2, __int64 a3, __int64 a4, int a5, int a6, int a7, int a8, int a9, int a10, __int64 a11);
void __noreturn sub_140003AF0();
void __noreturn sub_140003BB0();
char __fastcall sub_140003C70(__int64 a1, _QWORD *a2);
void sub_140003CA0();
__int64 __fastcall sub_140003DE0(__int64 a1);
__int64 __fastcall sub_140004050(__int64 a1, __int64 a2, __int64 a3);
__int64 __fastcall sub_140004570(__int64 a1);
__int64 __fastcall sub_140004820(unsigned __int64 *a1, __int64 *a2);
_QWORD *__fastcall sub_140004D10(_QWORD *a1, __int64 *a2, const void *a3, size_t a4);
_QWORD *__fastcall sub_140004D80(_QWORD *a1, __int64 *a2, __int64 a3, __int64 a4);
char sub_140004E80();
__int64 __fastcall sub_140004E90(__int64 *a1, const void *a2, size_t a3);
__int64 sub_140004EF0();
_QWORD *__fastcall sub_140004F00(_QWORD *a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int64 a4);
__int64 __fastcall sub_140005010(__int64 a1);
void __fastcall sub_1400050F0(__int64 **a1);
__int64 __fastcall __far sub_140005310(); // weak
__int64 sub_140005500();
void __fastcall sub_140005710(__int128 *a1);
_QWORD *__fastcall sub_140005870(_QWORD *a1, unsigned __int8 *a2, __int64 a3, __int64 a4);
char **__fastcall sub_1400058D0(unsigned __int8 *a1, unsigned __int8 *a2, unsigned __int64 a3);
char **__fastcall sub_140005AB0(unsigned __int8 *a1, unsigned __int8 *a2, unsigned __int64 a3);
char **__fastcall sub_140005C90(__int64 *a1, __int64 a2, unsigned __int64 a3);
char **__fastcall sub_140005EE0(unsigned __int8 *a1, __int64 a2, unsigned __int64 a3);
void sub_140006220();
void sub_140006350();
__int64 __fastcall sub_140006480(__int64 a1, const void *a2, size_t a3);
bool __fastcall sub_1400064E0(__int64 a1, unsigned __int8 *a2, unsigned __int64 a3);
bool __fastcall sub_1400065D0(__int64 *a1, __int64 a2);
__int128 *__fastcall sub_1400066C0(__int128 *a1, unsigned __int16 *a2, __int64 a3);
__int64 sub_140006930();
_BYTE *__fastcall sub_140006A10(__int64 a1);
bool __fastcall sub_140006FC0(__int64 *a1);
char __fastcall sub_1400070E0(__int64 a1, __int64 a2);
__int64 __fastcall sub_1400072F0(__int64 a1, __int64 a2);
bool __fastcall sub_140007760(unsigned __int8 *a1, unsigned __int64 a2);
_BYTE *__fastcall sub_1400078F0(unsigned __int8 *a1, unsigned __int64 a2, unsigned __int8 *a3, unsigned __int64 a4);
__int64 __fastcall sub_140007D50(_BYTE **a1);
__int64 __fastcall sub_140007FB0(__int64 *a1);
__int64 __fastcall sub_1400080A0(__int64 a1);
void sub_1400080D0();
void __fastcall sub_1400081F0(char *a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7, __int64 a8, int a9);
__int64 __fastcall sub_140008990(__int64 a1, __int64 *a2, __int64 a3);
void __fastcall sub_1400089B0(__int64 a1, __int64 a2);
_BYTE *__fastcall sub_140008AE0(__int64 a1, __int64 *a2);
void __fastcall __noreturn sub_140008DE0(__int64 *a1);
__int64 __fastcall sub_140008DF0(__int64 *a1, __int64 a2, char a3);
volatile signed __int64 *sub_140009090();
__int64 __fastcall sub_140009200(volatile signed __int64 *a1);
void *__fastcall sub_1400094B0(__int64 *a1, unsigned int a2);
char __fastcall sub_1400095B0(__int64 a1, unsigned __int64 a2, __int64 *a3);
void __fastcall sub_140009770(__int64 a1);
char *__fastcall sub_1400098F0(SIZE_T a1, unsigned __int64 a2);
BOOL __fastcall sub_140009980(void *a1, __int64 a2, unsigned __int64 a3);
char *__fastcall sub_1400099A0(void *Src, size_t Size, unsigned __int64 a3, SIZE_T a4);
void sub_140009A70();
void sub_140009BE0();
void __fastcall sub_140009D50(__int64 a1);
void __fastcall sub_14000A220(__int64 a1, __int64 a2, __int64 a3);
void __fastcall __noreturn sub_14000A5B0(__int64 a1);
__int64 __fastcall sub_14000A630(__int128 *a1);
__int64 __fastcall sub_14000A740(__int64 a1);
_QWORD *__fastcall sub_14000A7E0(__int64 *a1);
__int64 __fastcall sub_14000A830(__int64 a1);
void __fastcall sub_14000A840(__int64 *a1);
void __fastcall sub_14000A940(__int64 a1, __int64 a2, __int64 a3, __int64 a4, char a5);
void __fastcall __noreturn sub_14000AD70(__int64 a1, __int64 a2);
char __fastcall sub_14000AE50(__int64 *a1, __int64 a2, __int64 *a3, __int64 a4, int a5, int a6, int a7, int a8);
__int64 sub_14000B610();
char __fastcall sub_14000B830(__int64 a1, __int64 a2);
HMODULE sub_14000B930();
__int64 __fastcall sub_14000B990(__int64 *a1, void *a2, void *Buffer, unsigned __int64 a4, PLARGE_INTEGER a5, __int64 a6);
char **__fastcall sub_14000BB40(__int64 a1, int a2);
__int64 __fastcall sub_14000BF60(__int64 a1, unsigned __int8 *a2, unsigned __int64 a3);
void __fastcall sub_14000C440(_QWORD *a1, DWORD a2, unsigned __int8 *a3, unsigned __int64 a4, unsigned __int8 *a5);
int __fastcall sub_14000C780(_QWORD *a1, void *a2, __int64 a3, unsigned __int64 a4);
_QWORD *__fastcall sub_14000C9D0(_QWORD *a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int64 a4);
_QWORD *__fastcall sub_14000C9F0(__int64 a1, __int64 a2);
__int64 __fastcall sub_14000CA80(__int64 a1, __int64 a2);
_QWORD *sub_14000CB10();
void __fastcall TlsCallback_0(__int64 a1, int a2);
char __fastcall sub_14000CE30(int a1);
void __fastcall sub_14000D3F0(__int64 a1, __int64 a2, __int64 a3);
__int64 __fastcall sub_14000D5D0(__int64 a1, __int64 a2);
__int64 sub_14000D620();
__int64 __fastcall sub_14000D640(__int64 a1, unsigned int a2, __int64 a3, unsigned int a4);
void sub_14000D6A0();
__int64 __fastcall sub_14000D720(__int64 a1, __int64 a2, unsigned int a3, __int64 a4);
void sub_14000D790();
__int64 __fastcall sub_14000D810(__int64 a1, __int64 a2, unsigned int a3, __int64 a4);
void sub_14000D880();
__int64 __fastcall Handler(struct _EXCEPTION_POINTERS *ExceptionInfo);
__int64 __fastcall sub_14000DAB0(__int64 a1);
void __noreturn sub_14000DCE0();
void __noreturn sub_14000DD10();
PRUNTIME_FUNCTION __fastcall sub_14000DD20(__int64 a1, ULONG64 a2);
unsigned __int64 __fastcall sub_14000DD50(__int64 a1, ULONG64 a2);
char __fastcall sub_14000DD80(_QWORD *a1, __int64 *a2);
int __fastcall sub_14000DE70(__int64 a1, __int64 a2, __int64 a3);
__int64 __fastcall sub_14000E3A0(__int64 a1, __int64 a2, __int64 a3);
void sub_14000E7D0();
_QWORD *__fastcall sub_14000E850(_QWORD *a1, __int64 a2);
void __fastcall __noreturn sub_14000E8E0(__int64 a1, __int64 a2);
__int64 __fastcall sub_14000E960(__int64 a1);
void __noreturn sub_14000E9C0();
__int64 __fastcall sub_14000EA10(unsigned __int8 **a1);
__int64 __fastcall sub_14000EED0(unsigned __int8 **a1, __int64 a2);
char __fastcall sub_14000EF30(__int64 a1, __int64 *a2);
char __fastcall sub_14000EF50(__int64 *a1, __int64 *a2);
__int64 __fastcall sub_14000EFA0(__int64 a1, __int64 *a2);
char *__fastcall sub_14000EFC0(unsigned __int64 a1, char *a2, unsigned __int64 a3, __int64 a4);
char __fastcall sub_14000F010(__int64 *a1, _QWORD *a2);
char __fastcall sub_14000F090(__int64 *a1, unsigned int a2);
bool __fastcall sub_14000F170(__int64 *a1, __int128 *a2);
char __fastcall sub_14000F1C0(_QWORD **a1, __int64 a2, unsigned __int64 a3);
void __fastcall sub_14000F1F0(_QWORD *a1, __int64 a2);
unsigned __int64 __fastcall sub_14000F5C0(__int64 a1, _BYTE *a2);
__int64 __fastcall sub_14000F5E0(__int64 *a1, __int64 *a2);
char __fastcall sub_14000F7F0(__int64 a1, __int64 *a2);
__int64 __fastcall sub_1400103E0(char **a1, __int64 *a2);
__int64 __fastcall sub_140010A80(__int64 a1, __int64 a2);
_QWORD *__fastcall sub_140010C40(_QWORD *a1, __int64 a2);
char __fastcall sub_140010D20(__int64 a1, __int64 *a2);
char __fastcall sub_140010DE0(__int64 a1, __int64 *a2);
unsigned __int64 __fastcall sub_140010EC0(_QWORD *a1);
void __fastcall sub_140010F20(__int64 a1, __int64 a2);
__int64 __fastcall sub_140011120(__int64 a1);
char __fastcall sub_140011180(__int64 *a1, __int64 a2);
char __fastcall sub_140011330(__int64 *a1, __int64 a2);
char __fastcall sub_1400114E0(__int64 *a1);
__int64 __fastcall sub_140011680(_QWORD *a1, unsigned int a2);
__int64 __fastcall sub_140011850(__int64 a1, unsigned __int64 a2);
__int64 __fastcall sub_140011940(__int64 a1);
char __fastcall sub_140011C40(__int64 a1);
__int64 __fastcall sub_140011E70(__int64 *a1);
__int64 __fastcall sub_140011F00(__int64 *a1);
__int64 __fastcall sub_140011F90(__int64 *a1, __int64 a2);
__int64 __fastcall sub_140012020(__int64 *a1);
__int64 __fastcall sub_1400122E0(__int64 *a1, __int64 a2);
__int64 __fastcall sub_140012370(__int64 a1, unsigned int a2);
char __fastcall sub_140012AD0(_QWORD *a1);
__int64 __fastcall sub_140012C00(__int64 a1);
char __fastcall sub_140013160(__int64 *a1);
__int64 __fastcall sub_1400136A0(__int64 *a1);
__int64 __fastcall sub_140013900(__int64 *a1);
__int64 __fastcall sub_140013AF0(__int64 a1, __int64 a2);
__int64 __fastcall sub_1400142A0(__int64 a1, char a2);
__int64 __fastcall sub_140014480(__int64 a1);
__int64 *__fastcall sub_140014800(__int64 *a1, __int64 a2, __int64 a3);
__int128 *__fastcall sub_1400154F0(__int128 *a1, __int64 a2, __int64 a3);
__int64 __fastcall sub_140015540(__int64 a1);
char __fastcall sub_140015550(_QWORD *a1, _QWORD *a2);
__int64 __fastcall sub_140015780(__int64 a1, _QWORD *a2);
char __fastcall sub_1400157A0(__int64 a1, _QWORD *a2);
__int64 __fastcall sub_140015820(unsigned __int64 *a1, __int64 a2);
__int64 __fastcall sub_140015880(__int64 **a1, unsigned int a2);
bool __fastcall sub_1400158A0(__int64 *a1, __int128 *a2);
__int64 __fastcall sub_1400158F0(__int64 **a1, const void *a2, size_t a3);
__int64 __fastcall sub_140015950(__int64 *a1, __int64 a2);
__int64 __fastcall sub_140015A10(__int64 *a1, __int64 a2, __int64 a3, __int64 a4);
void __noreturn sub_140015AA0();
void __noreturn sub_140015AF0();
__int64 __fastcall sub_140015B00(__int64 a1, const void *a2, size_t a3);
void *__fastcall sub_140015C70(__int64 *a1);
void __fastcall sub_140015E30(__int64 *a1, _QWORD *a2);
void __fastcall sub_140016030(__int64 a1, __int64 a2, __int64 a3);
_BYTE *__fastcall sub_1400161A0(__int64 *a1, unsigned int a2);
__int64 __fastcall sub_1400162C0(__int64 a1, unsigned __int64 a2);
__int64 __fastcall sub_140016340(__int64 a1, _QWORD *a2);
void __noreturn sub_140016390();
unsigned __int64 __fastcall sub_1400163B0(unsigned __int8 *a1, unsigned __int64 a2, unsigned int a3);
char __fastcall sub_1400165E0(unsigned __int64 *a1, __int64 *a2);
__int64 __fastcall sub_140016680(unsigned __int16 *a1);
__int64 __fastcall sub_140016690(unsigned int *a1);
__int64 __fastcall sub_140016770(__int64 a1, __int64 a2, __int64 a3);
bool __fastcall sub_140016790(__int64 a1, __int64 *a2);
__int64 __fastcall sub_140016820(__int64 a1);
// __int64 __fastcall _except_get_jumpbuf_sp(_QWORD); weak
__int64 __fastcall sub_140016840(__int64 a1);
__int64 __fastcall sub_140016850(__int64 a1);
__int64 __fastcall sub_140016860(__int64 *a1, __int64 *a2);
char __fastcall sub_1400169D0(__int64 *a1, __int64 a2, unsigned __int64 a3);
_BYTE *__fastcall sub_140016B60(_BYTE *a1, __int64 a2, unsigned __int64 a3, __int64 a4, __int64 a5);
char __fastcall sub_140016D20(_BYTE *a1);
__int64 *__fastcall sub_140016D90(__int64 *a1, __int64 a2, __int64 a3);
void __fastcall sub_140016EE0(_BYTE *a1, __int64 a2, __int64 a3);
_BYTE *__fastcall sub_140017010(_BYTE *a1, __int64 a2, __int64 a3);
char __fastcall sub_140017030(__int64 a1);
char __fastcall sub_140017060(__int64 *a1, unsigned int a2);
bool __fastcall sub_140017120(__int64 a1, __int128 *a2);
char __fastcall sub_140017160(__int64 **a1, __int64 a2, unsigned __int64 a3);
char __fastcall sub_140017170(__int64 **a1, unsigned int a2);
bool __fastcall sub_140017230(__int64 *a1, __int128 *a2);
__int64 __fastcall sub_140017280(__int64 a1);
bool __fastcall sub_140017290(__int64 *a1, __int64 *a2);
bool __fastcall sub_1400172A0(__int64 a1, __int64 a2, __int64 *a3);
__int64 __fastcall sub_1400174B0(__int64 a1, char a2, _BYTE *a3, unsigned __int64 a4, __int64 a5, __int64 a6);
char __fastcall sub_140017830(__int64 a1, __int64 a2, unsigned int a3, __int64 a4, __int64 a5);
__int64 __fastcall sub_140017890(__int64 *a1, unsigned __int8 *a2, unsigned __int64 a3);
__int64 __fastcall sub_140017BE0(_QWORD *a1);
bool __fastcall sub_140017C00(__int64 *a1, __int128 *a2);
char __fastcall sub_140017C40(__int64 a1);
char __fastcall sub_140017C50(__int64 a1);
char __fastcall sub_140017C60(__int64 a1);
__int64 __fastcall sub_140017C70(__int64 a1, _QWORD *a2, __int64 a3, __int64 a4);
__int64 __fastcall sub_140017CA0(_QWORD *a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5);
__int64 __fastcall sub_140017D60(_QWORD *a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7);
__int64 __fastcall sub_140017E50(__int64 a1, _QWORD *a2);
__int64 __fastcall sub_140017E90(_QWORD *a1);
char __fastcall sub_140017EB0(char *a1, unsigned __int64 a2, __int64 *a3);
__int64 __fastcall sub_1400183F0(unsigned __int8 *a1, unsigned __int64 a2, __int64 *a3);
char __fastcall sub_140018410(unsigned int *a1, __int64 *a2);
__int64 __fastcall sub_140018820(unsigned int *a1, __int64 *a2);
__int64 __fastcall sub_140018910(unsigned __int64 a1, const __m128i *a2);
__int64 __fastcall sub_140018A00(unsigned __int8 a1, __int64 a2, unsigned __int64 a3);
__int64 __fastcall sub_140018B20(unsigned __int8 a1, __int64 a2, unsigned __int64 a3);
void __fastcall __noreturn sub_140018C60(__int64 a1, __int64 a2, __int64 a3);
void __fastcall __noreturn sub_140018CE0(__int64 a1, __int64 a2, __int64 a3);
void __fastcall __noreturn sub_140018D60(__int64 a1, __int64 a2, __int64 a3);
__int64 __fastcall sub_140018DE0(__int64 a1, __int64 a2, unsigned __int64 a3);
unsigned __int64 __fastcall sub_140018FF0(_BYTE *a1, unsigned __int64 a2);
__int64 __fastcall sub_1400194E0(__int64 a1, __int64 a2, __int64 a3, _BYTE *a4, unsigned __int64 a5);
void __fastcall __noreturn sub_140019A60(char *a1, unsigned __int64 a2, unsigned __int64 a3, unsigned __int64 a4, __int64 a5);
char __fastcall sub_140019F10(int a1, _BYTE *a2, __int64 a3, __int64 a4, unsigned __int64 a5, unsigned __int8 *a6, __int64 a7);
char __fastcall sub_14001A050(unsigned int a1);
char __fastcall sub_14001A180(__int64 a1, _QWORD *a2);
__int64 __fastcall sub_14001A240(_QWORD, _QWORD, _QWORD); // weak
__int64 __fastcall sub_14001A250(__int64 a1, unsigned __int8 *a2, unsigned __int64 a3);
__int64 __fastcall sub_14001A310(unsigned __int8 *a1, __int64 a2);
__int64 __fastcall sub_14001A3B0(unsigned __int8 *a1, __int64 a2);
__int64 __fastcall sub_14001A450(unsigned int *a1, __int64 a2);
__int64 __fastcall sub_14001A4F0(unsigned __int64 *a1, __int64 a2);
__int64 __fastcall sub_14001A590(unsigned __int64 *a1, __int64 a2);
__int64 __fastcall sub_14001A630(unsigned __int8 *a1, __int64 a2);
__int64 __fastcall sub_14001A7D0(unsigned __int64 *a1, __int64 a2);
__int64 __fastcall sub_14001AA00(unsigned __int8 *a1, __int64 a2);
__int64 __fastcall sub_14001AAA0(unsigned int *a1, __int64 a2);
__int64 __fastcall sub_14001ABE0(unsigned int *a1, __int64 a2);
__int64 __fastcall sub_14001AD00(unsigned __int64 *a1, __int64 a2);
__int64 __fastcall sub_14001AE40(unsigned __int8 **a1, __int64 a2);
__int64 __fastcall sub_14001AE50(_BYTE **a1, _QWORD *a2);
__int64 __fastcall sub_14001AF40(_QWORD *a1);
__int64 __fastcall sub_14001AF60(unsigned __int8 **a1, _QWORD *a2);
bool __fastcall sub_14001AF90(__int64 **a1, __int64 *a2);
__int64 __fastcall sub_14001AFA0(__int64 a1, __int64 *a2);
__int64 __fastcall sub_14001AFC0(unsigned __int8 ***a1, __int64 *a2);
char __fastcall sub_14001AFE0(__int64 a1, _QWORD *a2);
bool __fastcall sub_14001B0D0(unsigned int a1);
char __fastcall sub_14001B110(int a1);
// BOOL __stdcall ReleaseMutex(HANDLE hMutex);
// HANDLE __stdcall GetCurrentThread();
// PRUNTIME_FUNCTION __stdcall RtlLookupFunctionEntry(ULONG64 ControlPc, PULONG64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable);
// DWORD __stdcall WaitForSingleObjectEx(HANDLE hHandle, DWORD dwMilliseconds, BOOL bAlertable);
// HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName);
// HANDLE __stdcall CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR lpName);
_QWORD *__fastcall sub_14001B580(_QWORD *a1, char a2);
__int64 sub_14001B7FC();
__int64 __fastcall UserMathErrorFunction(struct _exception *a1);
void sub_14001B8BC();
void *sub_14001B8D0();
void *sub_14001B8D8();
void *sub_14001B908();
void *sub_14001B910();
void sub_14001B918();
void sub_14001BB34();
void __fastcall sub_14001BB70();
void __cdecl j_j_free(void *Block);
// void *__cdecl memcpy(void *, const void *Src, size_t Size);
// void *__cdecl memset(void *, int Val, size_t Size);
// void *__cdecl memmove(void *, const void *Src, size_t Size);
// int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size);
// void __stdcall __noreturn CxxThrowException(void *pExceptionObject, _ThrowInfo *pThrowInfo);
bool __fastcall sub_14001BE80(_QWORD *_RCX, __int64 a2, int _R8D, char a4);
void __fastcall __noreturn sub_14001BFB0(__int64 a1, __int64 a2, __int128 *a3, __int64 a4);
__int64 __fastcall sub_14001C010(unsigned __int64 *a1, __int64 a2, __int64 a3);
__int64 __fastcall sub_14001C0D0(__int64 *a1, __int64 a2, __int64 a3);
void __noreturn sub_14001C190();
__int64 __fastcall sub_14001C1E0(__int64 a1, unsigned __int8 *a2, unsigned __int64 a3);
signed __int64 sub_14001C260();
signed __int64 __fastcall sub_14001C2D0(__int64 a1);
bool sub_14001C340();
__int64 __fastcall sub_14001C360(__int64 a1);
signed __int64 __fastcall sub_14001C3B0(volatile signed __int64 *a1, char a2, __int64 a3, __int64 a4, __int64 a5);
__int64 __fastcall sub_14001CA70(__int64 *a1, __int64 a2, __int64 a3);
void __noreturn sub_14001CB30();
void __fastcall __noreturn sub_14001CB40(__int64 a1, __int64 a2, __int64 a3);
void __fastcall __noreturn sub_14001CBB0(__int64 a1, __int64 a2);
void sub_14001CBF0();
void __fastcall __noreturn sub_14001CC50(__int64 a1, __int64 a2, __int64 a3);
void __fastcall __noreturn sub_14001CCA0(__int64 a1, __int64 a2);
void __fastcall __noreturn sub_14001CD00(__int64 a1, __int64 a2, __int64 a3);
void __noreturn sub_14001CD80();
void __fastcall __noreturn sub_14001CDA0(char a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int128 *a6, __int64 a7);
void __fastcall __noreturn sub_14001CF90(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5);
void __fastcall __noreturn sub_14001D030(__int64 a1, __int64 a2, __int64 a3);
void __fastcall __noreturn sub_14001D040(__int64 a1, __int64 a2, __int64 a3);
void __fastcall __noreturn sub_14001D050(__int64 a1, __int64 a2, __int64 a3);
void __fastcall __noreturn sub_14001D060(__int64 a1);
void __fastcall __noreturn sub_14001D0B0(char *a1, unsigned __int64 a2, unsigned __int64 a3, unsigned __int64 a4, __int64 a5);
//-------------------------------------------------------------------------
// Data declarations
__int64 qword_14000DCB0[6] =
{
5216575750185551243i64,
5188146772209636491i64,
88514020639883i64,
-8842808756379581952i64,
8433552465957975241i64,
-3691825797471737595i64
}; // weak
// extern DWORD (__stdcall *GetLastError)();
// extern PVOID (__stdcall *AddVectoredExceptionHandler)(ULONG First, PVECTORED_EXCEPTION_HANDLER Handler);
// extern BOOL (__stdcall *SetThreadStackGuarantee)(PULONG StackSizeInBytes);
// extern void (__stdcall *AcquireSRWLockExclusive)(PSRWLOCK SRWLock);
// extern HANDLE (__stdcall *GetCurrentProcess)();
// extern FARPROC (__stdcall *GetProcAddress)(HMODULE hModule, LPCSTR lpProcName);
// extern void (__stdcall *SetLastError)(DWORD dwErrCode);
// extern DWORD (__stdcall *GetCurrentDirectoryW)(DWORD nBufferLength, LPWSTR lpBuffer);
// extern DWORD (__stdcall *GetEnvironmentVariableW)(LPCWSTR lpName, LPWSTR lpBuffer, DWORD nSize);
// extern HANDLE (__stdcall *GetStdHandle)(DWORD nStdHandle);
// extern DWORD (__stdcall *GetCurrentProcessId)();
// extern DWORD (__stdcall *WaitForSingleObject)(HANDLE hHandle, DWORD dwMilliseconds);
// extern BOOLEAN (__stdcall *TryAcquireSRWLockExclusive)(PSRWLOCK SRWLock);
// extern BOOL (__stdcall *QueryPerformanceCounter)(LARGE_INTEGER *lpPerformanceCount);
// extern LPVOID (__stdcall *HeapAlloc)(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes);
// extern HANDLE (__stdcall *GetProcessHeap)();
// extern BOOL (__stdcall *HeapFree)(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem);
// extern LPVOID (__stdcall *HeapReAlloc)(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, SIZE_T dwBytes);
// extern HMODULE (__stdcall *GetModuleHandleA)(LPCSTR lpModuleName);
// extern BOOL (__stdcall *GetConsoleMode)(HANDLE hConsoleHandle, LPDWORD lpMode);
// extern HMODULE (__stdcall *GetModuleHandleW)(LPCWSTR lpModuleName);
// extern DWORD (__stdcall *FormatMessageW)(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, va_list *Arguments);
// extern int (__stdcall *MultiByteToWideChar)(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
// extern BOOL (__stdcall *WriteConsoleW)(HANDLE hConsoleOutput, const void *lpBuffer, DWORD nNumberOfCharsToWrite, LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved);
// extern LPVOID (__stdcall *TlsGetValue)(DWORD dwTlsIndex);
// extern BOOL (__stdcall *TlsSetValue)(DWORD dwTlsIndex, LPVOID lpTlsValue);
// extern void (__stdcall *GetSystemTimeAsFileTime)(LPFILETIME lpSystemTimeAsFileTime);
// extern void (__stdcall *ReleaseSRWLockExclusive)(PSRWLOCK SRWLock);
// extern void (__stdcall *AcquireSRWLockShared)(PSRWLOCK SRWLock);
// extern BOOL (__stdcall *CloseHandle)(HANDLE hObject);
// extern void (__stdcall *InitializeSListHead)(PSLIST_HEADER ListHead);
// extern DWORD (__stdcall *GetCurrentThreadId)();
// extern ULONG (__stdcall *RtlNtStatusToDosError)(NTSTATUS Status);
// extern NTSTATUS (__stdcall *NtWriteFile)(HANDLE FileHandle, HANDLE Event, PIO_APC_ROUTINE ApcRoutine, PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, PLARGE_INTEGER ByteOffset, PULONG Key);
char *off_14001E3B0 = "Hello, world!\n"; // weak
unsigned __int8 byte_14001E3C0[8] = { 40u, 41u, 0u, 0u, 0u, 0u, 0u, 0u }; // weak
__int64 (__fastcall *off_14001E3C8)() = &nullsub_2; // weak
__int64 (__fastcall *off_14001E3F8)() = &nullsub_2; // weak
__int64 (__fastcall *off_14001E428)() = &nullsub_2; // weak
__int64 (__fastcall *off_14001E458)() = &nullsub_2; // weak
char *off_14001E4D8 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
char *off_14001E4F0 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
char *off_14001E508 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
char *off_14001E520 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
void *off_14001E588 = &unk_14001E538; // weak
char *off_14001E5E0 = "encode_utf8: need bytes to encode U+, but the buffer has "; // weak
void *off_14001E610 = &unk_14001E538; // weak
__int64 (__fastcall *off_14001E650)() = &nullsub_2; // weak
__int64 (__fastcall *off_14001E670)() = &nullsub_2; // weak
__int64 (__fastcall *off_14001E6C0)() = &nullsub_2; // weak
__int64 (__fastcall *off_14001E6E0)() = &nullsub_2; // weak
void *off_14001E7A0 = (void *)0x14001E753i64; // weak
__int64 (__fastcall *off_14001E858)() = &nullsub_2; // weak
__int64 (__fastcall *off_14001E878)() = &nullsub_2; // weak
char *off_14001E898 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
void *off_14001E8D0 = (void *)0x14001E8B4i64; // weak
char *off_14001E978 = "initialization or cleanup bug"; // weak
char *off_14001E9B0 = "drop of the panic payload panicked"; // weak
_UNKNOWN unk_14001E9C0; // weak
_UNKNOWN unk_14001E9CB; // weak
void *off_14001EA30 = &unk_14001EA11; // weak
void *off_14001EAC8 = &unk_14001EA48; // weak
char *off_14001EB20 = "an irrecoverable error occurred while synchronizing threads"; // weak
char *off_14001EB68 = "failed to generate unique thread ID: bitspace exhausted"; // weak
void *off_14001EB78 = &unk_14001EA48; // weak
char *off_14001EBD8 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
_UNKNOWN unk_14001EC30; // weak
_UNKNOWN unk_14001EC43; // weak
_UNKNOWN unk_14001EC4E; // weak
_UNKNOWN unk_14001EC5B; // weak
_UNKNOWN unk_14001EC71; // weak
_UNKNOWN unk_14001EC7C; // weak
_UNKNOWN unk_14001EC91; // weak
_UNKNOWN unk_14001ECA7; // weak
_UNKNOWN unk_14001ECB7; // weak
_UNKNOWN unk_14001ECC5; // weak
_UNKNOWN unk_14001EE04; // weak
_UNKNOWN unk_14001EEB7; // weak
char *off_14001EF30 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
char *off_14001EFD8 = "failed printing to : "; // weak
void *off_14001F030 = (void *)0x14001F016i64; // weak
char *off_14001F070 = "advancing io slices beyond their length"; // weak
void *off_14001F080 = (void *)0x14001F016i64; // weak
void *off_14001F098 = (void *)0x14001F016i64; // weak
char *off_14001F0D0 = "failed to write whole buffer"; // weak
void *off_14001F1B8 = &unk_14001F1A0; // weak
char *off_14001F1E8 = "library\\std\\src\\path.rs"; // weak
char *off_14001F208 = "library\\std\\src\\path.rs"; // weak
char *off_14001F220 = "library\\std\\src\\path.rs"; // weak
char *off_14001F238 = "library\\std\\src\\path.rs"; // weak
char *off_14001F250 = "library\\std\\src\\path.rs"; // weak
char *off_14001F268 = "library\\std\\src\\path.rs"; // weak
char *off_14001F280 = "library\\std\\src\\path.rs"; // weak
char *off_14001F298 = "library\\std\\src\\path.rs"; // weak
char *off_14001F2B0 = "library\\std\\src\\path.rs"; // weak
char *off_14001F2C8 = "library\\std\\src\\path.rs"; // weak
char *off_14001F2E0 = "library\\std\\src\\path.rs"; // weak
char *off_14001F340 = "library\\std\\src\\sync\\once.rs"; // weak
__int64 (__fastcall *off_14001F358)() = &nullsub_2; // weak
char *off_14001F380 = "library\\std\\src\\sync\\once.rs"; // weak
__int64 (__fastcall *off_14001F398)() = &nullsub_2; // weak
char *off_14001F3C0 = "library\\std\\src\\sync\\once.rs"; // weak
void *off_14001F420 = (void *)0x14001F3FEi64; // weak
char *off_14001F450 = "stack backtrace:\n"; // weak
char *off_14001F580 = "library\\std\\src\\sys_common\\thread_info.rs"; // weak
char *off_14001F5D8 = "assertion failed: thread_info.is_none()"; // weak
char *off_14001F610 = "library\\std\\src\\sys_common\\wtf8.rs"; // weak
unsigned __int8 byte_14001F628[8] = { 239u, 191u, 189u, 0u, 0u, 0u, 0u, 0u }; // weak
char *off_14001F630 = "library\\std\\src\\sys_common\\wtf8.rs"; // weak
char *off_14001F670 = "memory allocation of bytes failed"; // weak
void *off_14001F6A8 = &unk_14001F690; // weak
char *off_14001F6D0 = "memory allocation of bytes failed"; // weak
char *off_14001F710 = "Rust panics must be rethrown"; // weak
char *off_14001F748 = "Rust cannot catch foreign exceptions"; // weak
void *off_14001F830 = &unk_14001F758; // weak
char *off_14001F868 = "thread '' panicked at '', "; // weak
char *off_14001F8F8 = "note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace\n"; // weak
void *off_14001F908 = &unk_14001F758; // weak
void *off_14001F920 = &unk_14001F758; // weak
__int64 (__fastcall *off_14001F9A0)() = &nullsub_2; // weak
__int64 (__fastcall *off_14001FB38)() = &nullsub_2; // weak
char *off_14001FB98 = "library\\std\\src\\..\\..\\backtrace\\src\\symbolize\\mod.rs"; // weak
char *off_14001FBB8 = " "; // weak
_UNKNOWN unk_14001FBC8; // weak
char *off_14001FBD0 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
char *off_14001FBF8 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
_UNKNOWN unk_14001FC18; // weak
void *off_14001FC20 = (void *)0x14001F526i64; // weak
void *off_14001FC40 = &unk_14001FC30; // weak
void *off_14001FC58 = &unk_14001FC50; // weak
void *off_14001FC68 = (void *)0x14001E8C9i64; // weak
char *off_14001FCC0 = "library\\std\\src\\..\\..\\backtrace\\src\\dbghelp.rs"; // weak
char *off_14001FCD8 = "library\\std\\src\\..\\..\\backtrace\\src\\dbghelp.rs"; // weak
char *off_14001FD80 = "I/O error: operation failed to complete synchronously"; // weak
char *off_14001FDB8 = "advancing IoSlice beyond its length"; // weak
char *off_14001FDF0 = "library\\std\\src\\sys\\windows\\io.rs"; // weak
char *off_14001FE90 = "OS Error (FormatMessageW() returned invalid UTF-16)"; // weak
char *off_14001FED8 = "OS Error (FormatMessageW() returned invalid UTF-16)"; // weak
char *off_14001FF30 = "library\\std\\src\\sys\\windows\\path.rs"; // weak
char *off_14001FF48 = "library\\std\\src\\sys\\windows\\path.rs"; // weak
char *off_14001FF60 = "library\\std\\src\\sys\\windows\\path.rs"; // weak
char *off_140020020 = "Unexpected number of bytes for incomplete UTF-8 codepoint."; // weak
void *off_140020030 = &unk_14001FFC0; // weak
char *off_140020098 = "Windows stdio in console mode does not support writing non-UTF-8 byte sequences"; // weak
unsigned __int8 byte_1400200B0[256] =
{
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
4u,
4u,
4u,
4u,
4u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u
}; // weak
void *off_1400201B0 = &unk_14001FFC0; // weak
void *off_1400201C8 = &unk_14001FFC0; // weak
void *off_1400201E0 = &unk_14001FFC0; // weak
void *off_1400201F8 = &unk_14001FFC0; // weak
void *off_140020210 = &unk_14001FFC0; // weak
char *off_140020250 = "Unexpected error in MultiByteToWideChar"; // weak
void *off_140020260 = &unk_14001FFC0; // weak
void *off_140020278 = &unk_14001FFC0; // weak
void *off_140020290 = &unk_14001FFC0; // weak
void *off_1400202A8 = &unk_14001FFC0; // weak
_UNKNOWN unk_140020308; // weak
char *off_140020338 = "Unable to create keyed event handle: error "; // weak
char *off_1400203B8 = "library\\std\\src\\sys\\windows\\mod.rs"; // weak
char *off_1400203D0 = "library\\std\\src\\sys\\windows\\mod.rs"; // weak
char *off_140020520 = "failed to reserve stack space for exception handling"; // weak
char *off_1400205E8 = "failed to install exception handler"; // weak
char *off_140020680 = "Once instance has previously been poisoned"; // weak
void *off_1400206D8 = &unk_140020698; // weak
void *off_140020728 = &unk_1400206F0; // weak
char *off_1400207E8 = "library\\std\\src\\..\\..\\backtrace\\src\\dbghelp.rs"; // weak
char *off_140020888 = "Rust panics cannot be copied"; // weak
void *off_140020898 = (void *)0x14002082Bi64; // weak
unsigned __int8 byte_1400208B0[8] = { 40u, 41u, 0u, 0u, 0u, 0u, 0u, 0u }; // weak
__int64 (__fastcall *off_1400208B8)() = &nullsub_2; // weak
__int64 (__fastcall *off_1400208E8)() = &nullsub_2; // weak
_UNKNOWN unk_140020908; // weak
void *off_140020958 = &unk_140020908; // weak
char *off_1400209C0 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
char *off_1400209D8 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
char *off_1400209F0 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
__int64 (__fastcall *off_140020A08)() = &nullsub_2; // weak
__int64 (__fastcall *off_140020A28)() = &nullsub_2; // weak
__int64 (__fastcall *off_140020A78)() = &nullsub_2; // weak
__int64 (__fastcall *off_140020A98)() = &nullsub_2; // weak
char *off_140020AB8 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
char *off_140020AD0 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs"; // weak
char *off_140020B58 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020B70 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020B88 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020BA0 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020BB8 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020BD0 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020BE8 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
unsigned __int8 byte_140020C00[8] = { 58u, 58u, 0u, 0u, 0u, 0u, 0u, 0u }; // weak
char *off_140020C08 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020C20 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020C40 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020C58 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020C70 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020C88 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020CA0 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020CC8 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020CE0 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020CF8 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020D28 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020D70 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\legacy.rs"; // weak
char *off_140020DF8 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140020E10 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140020E28 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140020E40 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140020E98 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140020EC8 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140020EF0 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
_UNKNOWN unk_140020F08; // weak
char *off_140020F30 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140020F48 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
void *off_140020FD0 = &unk_140020F60; // weak
char *off_140021010 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140021068 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140021080 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140021098 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_1400210B0 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
unsigned __int8 byte_1400210C8[25] =
{
123u,
114u,
101u,
99u,
117u,
114u,
115u,
105u,
111u,
110u,
32u,
108u,
105u,
109u,
105u,
116u,
32u,
114u,
101u,
97u,
99u,
104u,
101u,
100u,
125u
}; // weak
char *off_1400210F8 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
char *off_140021160 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
unsigned __int8 byte_140021178[3] = { 32u, 61u, 32u }; // weak
unsigned __int8 byte_14002117B[3] = { 32u, 123u, 32u }; // weak
_UNKNOWN unk_14002117E; // weak
_UNKNOWN unk_140021180; // weak
_UNKNOWN unk_140021184; // weak
_UNKNOWN unk_140021189; // weak
char *off_140021190 = "C:\\Users\\runneradmin\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\rustc-demangle-0.1.21\\src\\v0.rs"; // weak
_BYTE byte_1400211A8[6] = { 46, 108, 108, 118, 109, 46 }; // weak
void *off_140021218 = &unk_1400211AE; // weak
void *off_140021230 = &unk_1400211AE; // weak
void *off_140021248 = &unk_140020908; // weak
void *off_140021290 = &unk_1400211AE; // weak
_QWORD qword_1400212D0[26] =
{
2i64,
4i64,
4i64,
3i64,
3i64,
3i64,
4i64,
2i64,
5i64,
5i64,
4i64,
3i64,
3i64,
4i64,
4i64,
1i64,
4i64,
4i64,
3i64,
3i64,
2i64,
3i64,
4i64,
3i64,
3i64,
1i64
}; // weak
void *off_1400213A0 = (void *)0x140021059i64; // weak
__int64 (__fastcall *off_140021470)() = &nullsub_2; // weak
__int64 (__fastcall *off_1400214A0)() = &nullsub_2; // weak
__int64 (__fastcall *off_1400214C0)() = &nullsub_2; // weak
__int64 (__fastcall *off_140021510)() = &nullsub_2; // weak
char *off_140021560 = "capacity overflow"; // weak
void *off_140021570 = &unk_140021530; // weak
void *off_1400215D8 = &unk_140021588; // weak
char *off_140021678 = "library\\alloc\\src\\sync.rs"; // weak
_UNKNOWN unk_140021690; // weak
__int64 (__fastcall *off_140021698)() = &nullsub_2; // weak
__int64 (__fastcall *off_1400216B8)() = &nullsub_2; // weak
__int128 xmmword_1400216E0 = 49087i64; // weak
__int128 xmmword_1400216F0 = 0x10000000000000001i64; // weak
__int128 xmmword_140021700 = 0x1010101010101010101010101010101i64; // weak
__int128 xmmword_140021710 = 0xFFFD05E2FFFD141FFFFD315EFFFD48C6i64; // weak
__int128 xmmword_140021720 = 0x80000000800000008000000080000000i64; // weak
__int128 xmmword_140021730 = 0x800005E280000C1F8000000E80000006i64; // weak
char *off_1400217B0 = "from_str_radix_int: must lie in the range `[2, 36]` - found "; // weak
char *off_1400217E0 = "library\\core\\src\\num\\mod.rs"; // weak
_UNKNOWN unk_1400217F8; // weak
void *off_140021800 = &unk_1400217F9; // weak
char *off_140021820 = "from_str_radix_int: must lie in the range `[2, 36]` - found "; // weak
_UNKNOWN unk_140021831; // weak
char *off_140021838 = "from_str_radix_int: must lie in the range `[2, 36]` - found "; // weak
_UNKNOWN unk_140021868; // weak
void *off_140021878 = &unk_140021874; // weak
__int64 (__fastcall *off_140021898)() = &nullsub_2; // weak
char *off_140021928 = "index out of bounds: the len is but the index is "; // weak
void *off_1400219B8 = (void *)0x140021979i64; // weak
void *off_140021A00 = (void *)0x140021979i64; // weak
_UNKNOWN unk_140021A40; // weak
char *off_140021A48 = "from_str_radix_int: must lie in the range `[2, 36]` - found "; // weak
__int64 (__fastcall *off_140021A68)() = &nullsub_2; // weak
__int64 (__fastcall *off_140021AB0)() = &nullsub_2; // weak
void *off_140021AF0 = (void *)0x140021AD1i64; // weak
char a0x000102030405[203] = "0x00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899"; // weak
__int64 (__fastcall *off_140021BD8)() = &nullsub_2; // weak
char *off_140021C28 = "library\\core\\src\\fmt\\mod.rs"; // weak
char *off_140021C40 = "library\\core\\src\\fmt\\mod.rs"; // weak
void *off_140021C78 = &unk_140021C58; // weak
void *off_140021C90 = &unk_140021C58; // weak
void *off_140021CA8 = &unk_140021C58; // weak
char *off_140021CF8 = "range start index out of range for slice of length "; // weak
void *off_140021D28 = &unk_140021D18; // weak
char *off_140021D70 = "slice index starts at but ends at "; // weak
unsigned __int8 byte_140021D90[256] =
{
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
1u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
2u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
3u,
4u,
4u,
4u,
4u,
4u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u,
0u
}; // weak
char *off_140021EC0 = "attempted to index str up to maximum usize"; // weak
char *off_140021EF0 = "library\\core\\src\\str\\pattern.rs"; // weak
char *off_140021F08 = "library\\core\\src\\str\\pattern.rs"; // weak
char *off_140021F20 = "library\\core\\src\\str\\pattern.rs"; // weak
char *off_140021F38 = "library\\core\\src\\str\\pattern.rs"; // weak
char *off_140021F50 = "library\\core\\src\\str\\pattern.rs"; // weak
char *off_140021F68 = "library\\core\\src\\str\\pattern.rs"; // weak
void *off_140021FA8 = (void *)0x140021F85i64; // weak
char *off_140022000 = "begin <= end ( <= ) when slicing `"; // weak
void *off_140022078 = (void *)0x140021F85i64; // weak
char *off_1400220E8 = "library\\core\\src\\str\\mod.rs"; // weak
char *off_140022128 = "library\\core\\src\\unicode\\printable.rs"; // weak
char *off_140022140 = "library\\core\\src\\unicode\\printable.rs"; // weak
_BYTE byte_140022158[80] =
{
0,
1,
3,
5,
5,
6,
6,
2,
7,
6,
8,
7,
9,
17,
10,
28,
11,
25,
12,
26,
13,
16,
14,
12,
15,
4,
16,
3,
18,
18,
19,
9,
22,
1,
23,
4,
24,
1,
25,
3,
26,
7,
27,
1,
28,
2,
31,
22,
32,
3,
43,
3,
45,
11,
46,
1,
48,
3,
49,
2,
50,
1,
-89,
2,
-87,
2,
-86,
4,
-85,
8,
-6,
2,
-5,
5,
-3,
2,
-2,
3,
-1,
9
}; // weak
_UNKNOWN unk_1400221A8; // weak
unsigned __int8 byte_1400222C7[303] =
{
0u,
32u,
95u,
34u,
130u,
223u,
4u,
130u,
68u,
8u,
27u,
4u,
6u,
17u,
129u,
172u,
14u,
128u,
171u,
5u,
31u,
9u,
129u,
27u,
3u,
25u,
8u,
1u,
4u,
47u,
4u,
52u,
4u,
7u,
3u,
1u,
7u,
6u,
7u,
17u,
10u,
80u,
15u,
18u,
7u,
85u,
7u,
3u,
4u,
28u,
10u,
9u,
3u,
8u,
3u,
7u,
3u,
2u,
3u,
3u,
3u,
12u,
4u,
5u,
3u,
11u,
6u,
1u,
14u,
21u,
5u,
78u,
7u,
27u,
7u,
87u,
7u,
2u,
6u,
23u,
12u,
80u,
4u,
67u,
3u,
45u,
3u,
1u,
4u,
17u,
6u,
15u,
12u,
58u,
4u,
29u,
37u,
95u,
32u,
109u,
4u,
106u,
37u,
128u,
200u,
5u,
130u,
176u,
3u,
26u,
6u,
130u,
253u,
3u,
89u,
7u,
22u,
9u,
24u,
9u,
20u,
12u,
20u,
12u,
106u,
6u,
10u,
6u,
26u,
6u,
89u,
7u,
43u,
5u,
70u,
10u,
44u,
4u,
12u,
4u,
1u,
3u,
49u,
11u,
44u,
4u,
26u,
6u,
11u,
3u,
128u,
172u,
6u,
10u,
6u,
47u,
49u,
77u,
3u,
128u,
164u,
8u,
60u,
3u,
15u,
3u,
60u,
7u,
56u,
8u,
43u,
5u,
130u,
255u,
17u,
24u,
8u,
47u,
17u,
45u,
3u,
33u,
15u,
33u,
15u,
128u,
140u,
4u,
130u,
151u,
25u,
11u,
21u,
136u,
148u,
5u,
47u,
5u,
59u,
7u,
2u,
14u,
24u,
9u,
128u,
190u,
34u,
116u,
12u,
128u,
214u,
26u,
12u,
5u,
128u,
255u,
5u,
128u,
223u,
12u,
242u,
157u,
3u,
55u,
9u,
129u,
92u,
20u,
128u,
184u,
8u,
128u,
203u,
5u,
10u,
24u,
59u,
3u,
10u,
6u,
56u,
8u,
70u,
8u,
12u,
6u,
116u,
11u,
30u,
3u,
90u,
4u,
89u,
9u,
128u,
131u,
24u,
28u,
10u,
22u,
9u,
76u,
4u,
128u,
138u,
6u,
171u,
164u,
12u,
23u,
4u,
49u,
161u,
4u,
129u,
218u,
38u,
7u,
12u,
5u,
5u,
128u,
166u,
16u,
129u,
245u,
7u,
1u,
32u,
42u,
6u,
76u,
4u,
128u,
141u,
4u,
128u,
190u,
3u,
27u,
3u,
15u,
13u
}; // weak
_BYTE byte_1400223F6[88] =
{
0,
6,
1,
1,
3,
1,
4,
2,
5,
7,
7,
2,
8,
8,
9,
2,
10,
5,
11,
2,
14,
4,
16,
1,
17,
2,
18,
5,
19,
17,
20,
1,
21,
2,
23,
2,
25,
13,
28,
5,
29,
8,
31,
1,
36,
1,
106,
4,
107,
2,
-81,
3,
-79,
2,
-68,
2,
-49,
2,
-47,
2,
-44,
12,
-43,
9,
-42,
2,
-41,
2,
-38,
1,
-32,
5,
-31,
2,
-25,
4,
-24,
2,
-18,
32,
-16,
4,
-8,
2,
-6,
3,
-5,
1
}; // weak
_UNKNOWN unk_14002244E; // weak
unsigned __int8 byte_140022512[450] =
{
94u,
34u,
123u,
5u,
3u,
4u,
45u,
3u,
102u,
3u,
1u,
47u,
46u,
128u,
130u,
29u,
3u,
49u,
15u,
28u,
4u,
36u,
9u,
30u,
5u,
43u,
5u,
68u,
4u,
14u,
42u,
128u,
170u,
6u,
36u,
4u,
36u,
4u,
40u,
8u,
52u,
11u,
78u,
67u,
129u,
55u,
9u,
22u,
10u,
8u,
24u,
59u,
69u,
57u,
3u,
99u,
8u,
9u,
48u,
22u,
5u,
33u,
3u,
27u,
5u,
1u,
64u,
56u,
4u,
75u,
5u,
47u,
4u,
10u,
7u,
9u,
7u,
64u,
32u,
39u,
4u,
12u,
9u,
54u,
3u,
58u,
5u,
26u,
7u,
4u,
12u,
7u,
80u,
73u,
55u,
51u,
13u,
51u,
7u,
46u,
8u,
10u,
129u,
38u,
82u,
75u,
43u,
8u,
42u,
22u,
26u,
38u,
28u,
20u,
23u,
9u,
78u,
4u,
36u,
9u,
68u,
13u,
25u,
7u,
10u,
6u,
72u,
8u,
39u,
9u,
117u,
11u,
66u,
62u,
42u,
6u,
59u,
5u,
10u,
6u,
81u,
6u,
1u,
5u,
16u,
3u,
5u,
128u,
139u,
98u,
30u,
72u,
8u,
10u,
128u,
166u,
94u,
34u,
69u,
11u,
10u,
6u,
13u,
19u,
58u,
6u,
10u,
54u,
44u,
4u,
23u,
128u,
185u,
60u,
100u,
83u,
12u,
72u,
9u,
10u,
70u,
69u,
27u,
72u,
8u,
83u,
13u,
73u,
7u,
10u,
128u,
246u,
70u,
10u,
29u,
3u,
71u,
73u,
55u,
3u,
14u,
8u,
10u,
6u,
57u,
7u,
10u,
129u,
54u,
25u,
7u,
59u,
3u,
28u,
86u,
1u,
15u,
50u,
13u,
131u,
155u,
102u,
117u,
11u,
128u,
196u,
138u,
76u,
99u,
13u,
132u,
48u,
16u,
22u,
143u,
170u,
130u,
71u,
161u,
185u,
130u,
57u,
7u,
42u,
4u,
92u,
6u,
38u,
10u,
70u,
10u,
40u,
5u,
19u,
130u,
176u,
91u,
101u,
75u,
4u,
57u,
7u,
17u,
64u,
5u,
11u,
2u,
14u,
151u,
248u,
8u,
132u,
214u,
42u,
9u,
162u,
231u,
129u,
51u,
15u,
1u,
29u,
6u,
14u,
4u,
8u,
129u,
140u,
137u,
4u,
107u,
5u,
13u,
3u,
9u,
7u,
16u,
146u,
96u,
71u,
9u,
116u,
60u,
128u,
246u,
10u,
115u,
8u,
112u,
21u,
70u,
122u,
20u,
12u,
20u,
12u,
87u,
9u,
25u,
128u,
135u,
129u,
71u,
3u,
133u,
66u,
15u,
21u,
132u,
80u,
31u,
6u,
6u,
128u,
213u,
43u,
5u,
62u,
33u,
1u,
112u,
45u,
3u,
26u,
4u,
2u,
129u,
64u,
31u,
17u,
58u,
5u,
1u,
129u,
208u,
42u,
130u,
230u,
128u,
247u,
41u,
76u,
4u,
10u,
4u,
2u,
131u,
17u,
68u,
76u,
61u,
128u,
194u,
60u,
6u,
1u,
4u,
85u,
5u,
27u,
52u,
2u,
129u,
14u,
44u,
4u,
100u,
12u,
86u,
10u,
128u,
174u,
56u,
29u,
13u,
44u,
4u,
9u,
7u,
2u,
14u,
6u,
128u,
154u,
131u,
216u,
4u,
17u,
3u,
13u,
3u,
119u,
4u,
95u,
6u,
12u,
4u,
1u,
15u,
12u,
4u,
56u,
8u,
10u,
6u,
40u,
8u,
34u,
78u,
129u,
84u,
12u,
29u,
3u,
9u,
7u,
54u,
8u,
14u,
4u,
9u,
7u,
9u,
7u,
128u,
203u,
37u,
10u,
132u,
6u
}; // weak
__int64 (__fastcall *off_140022700)() = &nullsub_2; // weak
_UNKNOWN unk_140022720; // weak
__int64 (__fastcall *off_140022740)() = &nullsub_2; // weak
__int64 (__fastcall *off_1400227B0)() = &nullsub_2; // weak
char *off_1400227D0 = "library\\core\\src\\unicode\\unicode_data.rs"; // weak
char *off_1400227E8 = "library\\core\\src\\unicode\\unicode_data.rs"; // weak
unsigned int dword_140022800[33] =
{
768u,
2098307u,
6292881u,
10490717u,
522196754u,
526393356u,
731917551u,
740306986u,
752920175u,
761309186u,
778107678u,
908131840u,
912326558u,
920715773u,
924912129u,
937495844u,
962662059u,
966858799u,
1214323760u,
1285627635u,
1348547648u,
1369533168u,
1377922895u,
1386331293u,
1398918912u,
1403113829u,
1411504640u,
1440866304u,
1466032814u,
1495393516u,
1503783120u,
1508769824u,
1518273008u
}; // weak
unsigned __int8 byte_140022884[727] =
{
0u,
112u,
0u,
7u,
0u,
45u,
1u,
1u,
1u,
2u,
1u,
2u,
1u,
1u,
72u,
11u,
48u,
21u,
16u,
1u,
101u,
7u,
2u,
6u,
2u,
2u,
1u,
4u,
35u,
1u,
30u,
27u,
91u,
11u,
58u,
9u,
9u,
1u,
24u,
4u,
1u,
9u,
1u,
3u,
1u,
5u,
43u,
3u,
60u,
8u,
42u,
24u,
1u,
32u,
55u,
1u,
1u,
1u,
4u,
8u,
4u,
1u,
3u,
7u,
10u,
2u,
29u,
1u,
58u,
1u,
1u,
1u,
2u,
4u,
8u,
1u,
9u,
1u,
10u,
2u,
26u,
1u,
2u,
2u,
57u,
1u,
4u,
2u,
4u,
2u,
2u,
3u,
3u,
1u,
30u,
2u,
3u,
1u,
11u,
2u,
57u,
1u,
4u,
5u,
1u,
2u,
4u,
1u,
20u,
2u,
22u,
6u,
1u,
1u,
58u,
1u,
1u,
2u,
1u,
4u,
8u,
1u,
7u,
3u,
10u,
2u,
30u,
1u,
59u,
1u,
1u,
1u,
12u,
1u,
9u,
1u,
40u,
1u,
3u,
1u,
55u,
1u,
1u,
3u,
5u,
3u,
1u,
4u,
7u,
2u,
11u,
2u,
29u,
1u,
58u,
1u,
2u,
1u,
2u,
1u,
3u,
1u,
5u,
2u,
7u,
2u,
11u,
2u,
28u,
2u,
57u,
2u,
1u,
1u,
2u,
4u,
8u,
1u,
9u,
1u,
10u,
2u,
29u,
1u,
72u,
1u,
4u,
1u,
2u,
3u,
1u,
1u,
8u,
1u,
81u,
1u,
2u,
7u,
12u,
8u,
98u,
1u,
2u,
9u,
11u,
7u,
73u,
2u,
27u,
1u,
1u,
1u,
1u,
1u,
55u,
14u,
1u,
5u,
1u,
2u,
5u,
11u,
1u,
36u,
9u,
1u,
102u,
4u,
1u,
6u,
1u,
2u,
2u,
2u,
25u,
2u,
4u,
3u,
16u,
4u,
13u,
1u,
2u,
2u,
6u,
1u,
15u,
1u,
0u,
3u,
0u,
3u,
29u,
2u,
30u,
2u,
30u,
2u,
64u,
2u,
1u,
7u,
8u,
1u,
2u,
11u,
9u,
1u,
45u,
3u,
1u,
1u,
117u,
2u,
34u,
1u,
118u,
3u,
4u,
2u,
9u,
1u,
6u,
3u,
219u,
2u,
2u,
1u,
58u,
1u,
1u,
7u,
1u,
1u,
1u,
1u,
2u,
8u,
6u,
10u,
2u,
1u,
48u,
31u,
49u,
4u,
48u,
7u,
1u,
1u,
5u,
1u,
40u,
9u,
12u,
2u,
32u,
4u,
2u,
2u,
1u,
3u,
56u,
1u,
1u,
2u,
3u,
1u,
1u,
3u,
58u,
8u,
2u,
2u,
152u,
3u,
1u,
13u,
1u,
7u,
4u,
1u,
6u,
1u,
3u,
2u,
198u,
64u,
0u,
1u,
195u,
33u,
0u,
3u,
141u,
1u,
96u,
32u,
0u,
6u,
105u,
2u,
0u,
4u,
1u,
10u,
32u,
2u,
80u,
2u,
0u,
1u,
3u,
1u,
4u,
1u,
25u,
2u,
5u,
1u,
151u,
2u,
26u,
18u,
13u,
1u,
38u,
8u,
25u,
11u,
46u,
3u,
48u,
1u,
2u,
4u,
2u,
2u,
39u,
1u,
67u,
6u,
2u,
2u,
2u,
2u,
12u,
1u,
8u,
1u,
47u,
1u,
51u,
1u,
1u,
3u,
2u,
2u,
5u,
2u,
1u,
1u,
42u,
2u,
8u,
1u,
238u,
1u,
2u,
1u,
4u,
1u,
0u,
1u,
0u,
16u,
16u,
16u,
0u,
2u,
0u,
1u,
226u,
1u,
149u,
5u,
0u,
3u,
1u,
2u,
5u,
4u,
40u,
3u,
4u,
1u,
165u,
2u,
0u,
4u,
0u,
2u,
80u,
3u,
70u,
11u,
49u,
4u,
123u,
1u,
54u,
15u,
41u,
1u,
2u,
2u,
10u,
3u,
49u,
4u,
2u,
2u,
7u,
1u,
61u,
3u,
36u,
5u,
1u,
8u,
62u,
1u,
12u,
2u,
52u,
9u,
10u,
4u,
2u,
1u,
95u,
3u,
2u,
1u,
1u,
2u,
6u,
1u,
2u,
1u,
157u,
1u,
3u,
8u,
21u,
2u,
57u,
2u,
1u,
1u,
1u,
1u,
22u,
1u,
14u,
7u,
3u,
5u,
195u,
8u,
2u,
3u,
1u,
1u,
23u,
1u,
81u,
1u,
2u,
6u,
1u,
1u,
2u,
1u,
1u,
2u,
1u,
2u,
235u,
1u,
2u,
4u,
6u,
2u,
1u,
2u,
27u,
2u,
85u,
8u,
2u,
1u,
1u,
2u,
106u,
1u,
1u,
1u,
2u,
6u,
1u,
1u,
101u,
3u,
2u,
4u,
1u,
5u,
0u,
9u,
1u,
2u,
245u,
1u,
10u,
2u,
1u,
1u,
4u,
1u,
144u,
4u,
2u,
2u,
4u,
1u,
32u,
10u,
40u,
6u,
2u,
4u,
8u,
1u,
9u,
6u,
2u,
3u,
46u,
13u,
1u,
2u,
0u,
7u,
1u,
6u,
1u,
1u,
82u,
22u,
2u,
7u,
1u,
2u,
1u,
2u,
122u,
6u,
3u,
1u,
1u,
2u,
1u,
7u,
1u,
1u,
72u,
2u,
3u,
1u,
1u,
1u,
0u,
2u,
11u,
2u,
52u,
5u,
5u,
1u,
1u,
1u,
0u,
1u,
6u,
15u,
0u,
5u,
59u,
7u,
0u,
1u,
63u,
4u,
81u,
1u,
0u,
2u,
0u,
46u,
2u,
23u,
0u,
1u,
1u,
3u,
4u,
5u,
8u,
8u,
2u,
7u,
30u,
4u,
148u,
3u,
0u,
55u,
4u,
50u,
8u,
1u,
14u,
1u,
22u,
5u,
1u,
15u,
0u,
7u,
1u,
17u,
2u,
7u,
1u,
2u,
1u,
5u,
100u,
1u,
160u,
7u,
0u,
1u,
61u,
4u,
0u,
4u,
0u,
7u,
109u,
7u,
0u,
96u,
128u,
240u,
0u
}; // weak
_QWORD qword_140022C68[5] = { 5i64, 12i64, 11i64, 11i64, 4i64 }; // weak
void *off_140022C90 = &unk_140022724; // weak
void *type_info::`vftable' = &sub_14001B580; // weak
void (*qword_140023368[2])(void) = { NULL, NULL }; // weak
void (*qword_140023378)(void) = NULL; // weak
char byte_140027000 = '\x01'; // weak
__int64 qword_140027030 = -1i64; // weak
__int64 (__fastcall *off_140027038)(_QWORD, _QWORD) = &sub_14000D5D0; // weak
__int64 (__fastcall *off_140027040)(_QWORD, _QWORD, _QWORD, _QWORD) = &sub_14000D640; // weak
__int64 (__fastcall *off_140027048)(_QWORD, _QWORD, _QWORD, _QWORD) = &sub_14000D720; // weak
__int64 (__fastcall *off_140027050)(_QWORD, _QWORD, _QWORD, _QWORD) = &sub_14000D810; // weak
_UNKNOWN unk_140027058; // weak
int dword_14002705C = 0; // weak
_UNKNOWN unk_140027060; // weak
int dword_140027064[5] = { 0, 0, -1, 0, 24 }; // weak
int dword_140027078 = 0; // weak
void **off_140027080 = &type_info::`vftable'; // weak
void *off_1400270A0 = &unk_140022B5B; // weak
__int64 qword_1400270D8 = -47936899621427i64; // weak
uintptr_t _security_cookie = 47936899621426ui64;
char byte_140027120 = '\0'; // weak
char byte_140027130 = '\0'; // weak
RTL_SRWLOCK SRWLock = { NULL }; // idb
__int64 qword_140027140 = 0i64; // weak
__int64 qword_140027148 = 0i64; // weak
int dword_140027170 = 0; // weak
__int64 qword_140027178 = 0i64; // weak
__int64 qword_140027180 = 0i64; // weak
RTL_SRWLOCK stru_140027188 = { NULL }; // idb
__int64 qword_140027198 = 0i64; // weak
RTL_SRWLOCK stru_1400271A0 = { NULL }; // idb
__int64 qword_1400271B0 = 0i64; // weak
__int64 qword_1400271C0 = 0i64; // weak
HANDLE hMutex = NULL; // idb
char byte_1400271D0 = '\0'; // weak
HANDLE hHeap = NULL; // idb
__int64 qword_1400271E8 = 0i64; // weak
__int64 (*qword_1400271F0)(void) = NULL; // weak
__int64 qword_1400271F8 = 0i64; // weak
__int64 qword_140027200; // weak
__int64 (__fastcall *qword_140027208)(_QWORD); // weak
HMODULE hModule; // idb
__int64 qword_140027218; // weak
__int64 qword_140027220; // weak
__int64 qword_140027228; // weak
__int64 qword_140027238; // weak
__int64 qword_140027240; // weak
__int64 qword_140027250; // weak
__int64 qword_140027258; // weak
_ThrowInfo pThrowInfo; // idb
int TlsIndex; // weak
union _SLIST_HEADER stru_1400272C0; // weak
_UNKNOWN unk_1400272D0; // weak
_UNKNOWN unk_1400272D8; // weak
int dword_1400272E0; // weak
_UNKNOWN unk_1400272E8; // weak
_UNKNOWN unk_1400272F0; // weak
//----- (0000000140001000) ----------------------------------------------------
__int64 __fastcall sub_140001000(__int64 (**a1)(void))
{
sub_1400010C0(*a1);
return 0i64;
}
//----- (0000000140001030) ----------------------------------------------------
void sub_140001030()
{
__int128 v0; // [rsp+28h] [rbp-30h] BYREF
char **v1; // [rsp+38h] [rbp-20h]
__int64 v2; // [rsp+40h] [rbp-18h]
const char *v3; // [rsp+48h] [rbp-10h]
__int64 v4; // [rsp+50h] [rbp-8h]
v1 = &off_14001E3B0;
v2 = 1i64;
*(_QWORD *)&v0 = 0i64;
v3 = "Hello, world!\n";
v4 = 0i64;
sub_140005710(&v0);
}
// 14001E3B0: using guessed type char *off_14001E3B0;
//----- (0000000140001080) ----------------------------------------------------
#error "1400010A7: call analysis failed (funcsize=12)"
//----- (00000001400010C0) ----------------------------------------------------
__int64 __fastcall sub_1400010C0(__int64 (*a1)(void))
{
return a1();
}
//----- (0000000140001110) ----------------------------------------------------
__int64 __fastcall sub_140001110(unsigned __int64 a1, unsigned __int64 a2, __int64 a3, unsigned __int64 a4, __int64 a5)
{
if ( a2 < a1 )
sub_14001D050(a1, a2, a5);
if ( a2 > a4 )
sub_14001D040(a2, a4, a5);
return a1 + a3;
}
//----- (0000000140001150) ----------------------------------------------------
unsigned __int64 sub_140001150()
{
return 0xC1A2C89CCD1E7BC1ui64;
}
//----- (0000000140001160) ----------------------------------------------------
__int64 sub_140001160()
{
return 0x69B4CA757552BE31i64;
}
//----- (0000000140001170) ----------------------------------------------------
unsigned __int64 sub_140001170()
{
return 0xC09296C9DDEE01BEui64;
}
//----- (0000000140001180) ----------------------------------------------------
__int64 __fastcall sub_140001180(unsigned __int64 **a1, __int64 a2)
{
unsigned __int64 *v3; // rdi
v3 = *a1;
if ( sub_140017C50(a2) )
return sub_14001A4F0(v3, a2);
if ( sub_140017C60(a2) )
return sub_14001A590(v3, a2);
return sub_14001AD00(v3, a2);
}
//----- (00000001400011E0) ----------------------------------------------------
__int64 __fastcall sub_1400011E0(__int64 a1, __int64 *a2)
{
return sub_140017890(a2, byte_14001E3C0, 2ui64);
}
// 14001E3C0: using guessed type unsigned __int8 byte_14001E3C0[8];
//----- (0000000140001200) ----------------------------------------------------
__int64 __fastcall sub_140001200(__int64 **a1, _QWORD *a2)
{
return sub_140016340(**a1, a2);
}
//----- (0000000140001210) ----------------------------------------------------
__int64 __fastcall sub_140001210(__int64 a1, __int64 *a2)
{
return sub_1400183F0(*(unsigned __int8 **)a1, *(_QWORD *)(a1 + 8), a2);
}
//----- (0000000140001230) ----------------------------------------------------
bool __fastcall sub_140001230(__int64 *a1, __int64 *a2)
{
return sub_140016790(*a1, a2);
}
//----- (0000000140001240) ----------------------------------------------------
bool __fastcall sub_140001240(__int64 *a1, unsigned int a2)
{
int v3; // [rsp+24h] [rbp-4h] BYREF
v3 = 0;
if ( a2 >= 0x80 )
{
if ( a2 >= 0x800 )
{
if ( a2 > 0xFFFF )
{
LOBYTE(v3) = (a2 >> 18) & 7 | 0xF0;
BYTE1(v3) = (a2 >> 12) & 0x3F | 0x80;
BYTE2(v3) = (a2 >> 6) & 0x3F | 0x80;
HIBYTE(v3) = a2 & 0x3F | 0x80;
}
else
{
LOBYTE(v3) = (a2 >> 12) | 0xE0;
BYTE1(v3) = (a2 >> 6) & 0x3F | 0x80;
BYTE2(v3) = a2 & 0x3F | 0x80;
}
}
else
{
LOBYTE(v3) = (a2 >> 6) | 0xC0;
BYTE1(v3) = a2 & 0x3F | 0x80;
}
}
else
{
LOBYTE(v3) = a2;
}
return sub_1400065D0(a1, (__int64)&v3);
}
//----- (0000000140001300) ----------------------------------------------------
bool __fastcall sub_140001300(__int64 a1, unsigned int a2)
{
unsigned __int64 v2; // r8
int v4; // [rsp+24h] [rbp-4h] BYREF
v4 = 0;
if ( a2 >= 0x80 )
{
if ( a2 >= 0x800 )
{
if ( a2 > 0xFFFF )
{
LOBYTE(v4) = (a2 >> 18) & 7 | 0xF0;
BYTE1(v4) = (a2 >> 12) & 0x3F | 0x80;
BYTE2(v4) = (a2 >> 6) & 0x3F | 0x80;
HIBYTE(v4) = a2 & 0x3F | 0x80;
v2 = 4i64;
}
else
{
LOBYTE(v4) = (a2 >> 12) | 0xE0;
BYTE1(v4) = (a2 >> 6) & 0x3F | 0x80;
BYTE2(v4) = a2 & 0x3F | 0x80;
v2 = 3i64;
}
}
else
{
LOBYTE(v4) = (a2 >> 6) | 0xC0;
BYTE1(v4) = a2 & 0x3F | 0x80;
v2 = 2i64;
}
}
else
{
LOBYTE(v4) = a2;
v2 = 1i64;
}
return sub_1400064E0(a1, (unsigned __int8 *)&v4, v2);
}
//----- (00000001400013C0) ----------------------------------------------------
__int64 __fastcall sub_1400013C0(__int64 a1, unsigned int a2)
{
size_t v2; // rsi
_QWORD *v3; // rdi
__int64 v4; // rbx
int Src; // [rsp+2Ch] [rbp-1Ch] BYREF
Src = 0;
if ( a2 >= 0x80 )
{
if ( a2 >= 0x800 )
{
if ( a2 > 0xFFFF )
{
LOBYTE(Src) = (a2 >> 18) & 7 | 0xF0;
BYTE1(Src) = (a2 >> 12) & 0x3F | 0x80;
BYTE2(Src) = (a2 >> 6) & 0x3F | 0x80;
HIBYTE(Src) = a2 & 0x3F | 0x80;
v2 = 4i64;
}
else
{
LOBYTE(Src) = (a2 >> 12) | 0xE0;
BYTE1(Src) = (a2 >> 6) & 0x3F | 0x80;
BYTE2(Src) = a2 & 0x3F | 0x80;
v2 = 3i64;
}
}
else
{
LOBYTE(Src) = (a2 >> 6) | 0xC0;
BYTE1(Src) = a2 & 0x3F | 0x80;
v2 = 2i64;
}
}
else
{
LOBYTE(Src) = a2;
v2 = 1i64;
}
v3 = *(_QWORD **)(a1 + 8);
v4 = v3[2];
if ( *v3 - v4 < v2 )
{
sub_14001C0D0(*(__int64 **)(a1 + 8), v3[2], v2);
v4 = v3[2];
}
memcpy((void *)(v4 + v3[1]), &Src, v2);
v3[2] = v2 + v4;
return 0i64;
}
//----- (00000001400014C0) ----------------------------------------------------
bool __fastcall sub_1400014C0(__int64 a1, __int128 *a2)
{
__int128 v2; // xmm0
__int128 v3; // xmm1
__int64 v5; // [rsp+28h] [rbp-40h] BYREF
__int128 v6[3]; // [rsp+30h] [rbp-38h] BYREF
v5 = a1;
v2 = *a2;
v3 = a2[1];
v6[2] = a2[2];
v6[1] = v3;
v6[0] = v2;
return sub_1400172A0((__int64)&v5, (__int64)&off_14001E3C8, (__int64 *)v6);
}
// 14001E3C8: using guessed type __int64 (__fastcall *off_14001E3C8)();
//----- (0000000140001500) ----------------------------------------------------
bool __fastcall sub_140001500(__int64 a1, __int128 *a2)
{
__int128 v2; // xmm0
__int128 v3; // xmm1
__int64 v5; // [rsp+28h] [rbp-40h] BYREF
__int128 v6[3]; // [rsp+30h] [rbp-38h] BYREF
v5 = a1;
v2 = *a2;
v3 = a2[1];
v6[2] = a2[2];
v6[1] = v3;
v6[0] = v2;
return sub_1400172A0((__int64)&v5, (__int64)&off_14001E3F8, (__int64 *)v6);
}
// 14001E3F8: using guessed type __int64 (__fastcall *off_14001E3F8)();
//----- (0000000140001540) ----------------------------------------------------
bool __fastcall sub_140001540(__int64 a1, __int128 *a2)
{
__int128 v2; // xmm0
__int128 v3; // xmm1
__int64 v5; // [rsp+28h] [rbp-40h] BYREF
__int128 v6[3]; // [rsp+30h] [rbp-38h] BYREF
v5 = a1;
v2 = *a2;
v3 = a2[1];
v6[2] = a2[2];
v6[1] = v3;
v6[0] = v2;
return sub_1400172A0((__int64)&v5, (__int64)&off_14001E458, (__int64 *)v6);
}
// 14001E458: using guessed type __int64 (__fastcall *off_14001E458)();
//----- (0000000140001590) ----------------------------------------------------
__int64 __fastcall sub_140001590(_BYTE **a1)
{
_BYTE *v2; // [rsp+20h] [rbp-8h] BYREF
v2 = *a1;
return sub_140007D50(&v2);
}
//----- (00000001400015B0) ----------------------------------------------------
__int64 __fastcall sub_1400015B0(_QWORD **a1)
{
_QWORD *v1; // rdx
_BYTE *v2; // rcx
__int64 result; // rax
v1 = *a1;
v2 = (_BYTE *)**a1;
result = v1[1];
*v1 = 0i64;
if ( !v2 )
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806f23a12"
"7002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_14001F3C0);
*v2 = 1;
*(_OWORD *)(result + 16) = 0i64;
*(_OWORD *)result = 0i64;
*(_QWORD *)(result + 32) = 1i64;
*(_QWORD *)(result + 40) = 0i64;
*(_DWORD *)(result + 48) = 0;
*(_WORD *)(result + 52) = 0;
*(_DWORD *)(result + 56) = 0;
return result;
}
// 14001F3C0: using guessed type char *off_14001F3C0;
//----- (0000000140001620) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void sub_140001620()
{
JUMPOUT(0x140001662i64);
}
// 140001695: positive sp value 68 has been found
// 14000165E: control flows out of bounds to 140001662
//----- (00000001400016C0) ----------------------------------------------------
__int64 __fastcall sub_1400016C0(__int64 **a1)
{
__int64 v1; // rsi
__int64 result; // rax
v1 = **a1;
**a1 = 0i64;
if ( !v1 )
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806f23a12"
"7002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_14001F3C0);
result = sub_1400010D0(1024i64, 1i64);
if ( !result )
sub_14001CB30();
*(_OWORD *)v1 = 0i64;
*(_QWORD *)(v1 + 16) = 0i64;
*(_QWORD *)(v1 + 24) = 1024i64;
*(_QWORD *)(v1 + 32) = result;
*(_QWORD *)(v1 + 40) = 0i64;
*(_DWORD *)(v1 + 48) = 0;
*(_WORD *)(v1 + 52) = 0;
*(_DWORD *)(v1 + 56) = 0;
return result;
}
// 1400010D0: using guessed type __int64 __fastcall sub_1400010D0(_QWORD, _QWORD);
// 14001F3C0: using guessed type char *off_14001F3C0;
//----- (0000000140001760) ----------------------------------------------------
void __noreturn sub_140001760()
{
sub_140003AF0();
}
//----- (0000000140001780) ----------------------------------------------------
__int64 __fastcall sub_140001780(__int64 a1)
{
__int64 result; // rax
if ( !_InterlockedDecrement64((volatile signed __int64 *)a1) )
return sub_140002D80(a1);
return result;
}
//----- (0000000140001790) ----------------------------------------------------
_BYTE *__fastcall sub_140001790(_QWORD *a1)
{
_BYTE *result; // rax
__int64 v2; // rdx
__int64 v3; // rdx
result = (_BYTE *)a1[2];
if ( result )
{
v2 = a1[1];
if ( v2 )
return (_BYTE *)sub_1400010E0(a1[2], v2, 1i64);
}
else
{
result = (_BYTE *)*a1;
*(_BYTE *)*a1 = 0;
v3 = a1[1];
if ( v3 )
return (_BYTE *)sub_1400010E0(*a1, v3, 1i64);
}
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (00000001400017D0) ----------------------------------------------------
__int64 __fastcall sub_1400017D0(volatile signed __int64 *a1)
{
__int64 result; // rax
if ( !_InterlockedDecrement64(a1) && a1 != (volatile signed __int64 *)-1i64 && !_InterlockedDecrement64(a1 + 1) )
return sub_1400010E0(a1, 48i64, 8i64);
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (00000001400017E0) ----------------------------------------------------
void __fastcall sub_1400017E0(_QWORD *a1)
{
++*a1;
}
//----- (00000001400017F0) ----------------------------------------------------
__int64 __fastcall sub_1400017F0(__int64 a1)
{
__int64 result; // rax
if ( a1 )
{
if ( !_InterlockedDecrement64((volatile signed __int64 *)a1) )
return sub_140002D80(a1);
}
return result;
}
//----- (0000000140001810) ----------------------------------------------------
void __fastcall sub_140001810(__int64 a1)
{
if ( (*(_DWORD *)(a1 + 56))-- == 1 )
{
*(_QWORD *)(a1 + 8) = 0i64;
ReleaseSRWLockExclusive((PSRWLOCK)a1);
}
}
//----- (0000000140001840) ----------------------------------------------------
__int64 __fastcall sub_140001840(_QWORD *a1)
{
__int64 result; // rax
if ( *a1 )
return sub_1400010E0(a1[1], *a1, 1i64);
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140001860) ----------------------------------------------------
_BYTE *__fastcall sub_140001860(volatile signed __int64 **a1)
{
volatile signed __int64 *v1; // rcx
_BYTE *result; // rax
v1 = *a1;
if ( !_InterlockedDecrement64(v1) )
return sub_140002DF0((__int64)v1);
return result;
}
//----- (0000000140001870) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
__int64 __fastcall sub_140001870(_QWORD *a1)
{
__int64 result; // rax
result = *a1 & 3i64;
if ( (_DWORD)result == 1 )
JUMPOUT(0x1400018A4i64);
return result;
}
// 1400018DB: positive sp value 48 has been found
// 1400018A0: control flows out of bounds to 1400018A4
//----- (0000000140001930) ----------------------------------------------------
void __noreturn sub_140001930()
{
__int64 v0; // rax
__int64 v1[8]; // [rsp+28h] [rbp-70h] BYREF
__int64 v2[6]; // [rsp+68h] [rbp-30h] BYREF
v2[2] = (__int64)&off_14001EB20;
v2[3] = 1i64;
v2[0] = 0i64;
v2[4] = (__int64)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v2[5] = 0i64;
v1[0] = (__int64)v2;
v1[1] = (__int64)sub_140017290;
v1[4] = (__int64)&off_14001E8D0;
v1[5] = 2i64;
v1[2] = 0i64;
v1[6] = (__int64)v1;
v1[7] = 1i64;
sub_140006220();
sub_140001B00(v0);
__fastfail(7u);
}
// 1400019D9: variable 'v0' is possibly undefined
// 14001E8D0: using guessed type void *off_14001E8D0;
// 14001EB20: using guessed type char *off_14001EB20;
//----- (00000001400019F0) ----------------------------------------------------
void __fastcall sub_1400019F0(__int64 a1, char a2)
{
if ( !a2 && 2 * qword_1400271C0 && !sub_14001C340() )
*(_BYTE *)(a1 + 8) = 1;
ReleaseSRWLockExclusive((PSRWLOCK)a1);
}
// 1400271C0: using guessed type __int64 qword_1400271C0;
//----- (0000000140001A30) ----------------------------------------------------
_BYTE *__fastcall sub_140001A30(_QWORD *a1)
{
_BYTE *result; // rax
__int64 v2; // rdx
result = (_BYTE *)*a1;
*(_BYTE *)*a1 = 0;
v2 = a1[1];
if ( v2 )
return (_BYTE *)sub_1400010E0(*a1, v2, 1i64);
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140001A50) ----------------------------------------------------
__int64 __fastcall sub_140001A50(_QWORD *a1)
{
__int64 result; // rax
if ( *a1 )
return sub_1400010E0(a1[1], 2i64 * *a1, 2i64);
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140001A80) ----------------------------------------------------
_BYTE *__fastcall sub_140001A80(__int64 a1)
{
_BYTE *result; // rax
if ( a1 )
{
if ( !_InterlockedDecrement64((volatile signed __int64 *)a1) )
return sub_140002DF0(a1);
}
return result;
}
//----- (0000000140001AA0) ----------------------------------------------------
__int64 __fastcall sub_140001AA0(__int64 a1)
{
__int64 result; // rax
if ( *(_BYTE *)(a1 + 24) != 2 )
{
if ( *(_QWORD *)a1 )
return sub_1400010E0(*(_QWORD *)(a1 + 8), *(_QWORD *)a1, 1i64);
}
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140001AD0) ----------------------------------------------------
void __fastcall sub_140001AD0(__int64 a1)
{
++*(_QWORD *)(a1 + 16);
}
//----- (0000000140001AE0) ----------------------------------------------------
_QWORD *__fastcall sub_140001AE0(_QWORD *a1)
{
_QWORD *result; // rax
__int64 v2; // rcx
result = a1;
v2 = a1[1];
if ( v2 )
{
if ( *result )
return (_QWORD *)sub_1400010E0(v2, *result, 1i64);
}
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140001B00) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
__int64 __fastcall sub_140001B00(__int64 a1)
{
__int64 result; // rax
if ( a1 )
{
result = a1 & 3;
if ( (_DWORD)result == 1 )
JUMPOUT(0x140001B39i64);
}
return result;
}
// 140001B70: positive sp value 48 has been found
// 140001B35: control flows out of bounds to 140001B39
//----- (0000000140001BC0) ----------------------------------------------------
_BYTE *__fastcall sub_140001BC0(_QWORD *a1)
{
_BYTE *result; // rax
__int64 v2; // rdx
result = (_BYTE *)*a1;
if ( *a1 )
{
*result = 0;
v2 = a1[1];
if ( v2 )
return (_BYTE *)sub_1400010E0(*a1, v2, 1i64);
}
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140001BF0) ----------------------------------------------------
_BYTE *__fastcall sub_140001BF0(__int64 a1)
{
_BYTE *result; // rax
if ( !_InterlockedDecrement64((volatile signed __int64 *)a1) )
return sub_140002DF0(a1);
return result;
}
//----- (0000000140001C10) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
__int64 __fastcall sub_140001C10(_QWORD *a1)
{
__int64 result; // rax
if ( *a1 )
{
result = *a1 & 3i64;
if ( (_DWORD)result == 1 )
JUMPOUT(0x140001C49i64);
}
return result;
}
// 140001C80: positive sp value 48 has been found
// 140001C45: control flows out of bounds to 140001C49
//----- (0000000140001CD0) ----------------------------------------------------
void __fastcall sub_140001CD0(unsigned __int64 a1, __int64 a2)
{
unsigned __int64 v3; // rdx
size_t v4; // rdi
if ( a1 )
{
v3 = *(_QWORD *)(a2 + 16);
v4 = v3 - a1;
if ( v3 < a1 )
sub_14001D040(a1, v3, (__int64)&off_14001E7A0);
*(_QWORD *)(a2 + 16) = 0i64;
if ( v3 != a1 )
{
memmove(*(void **)(a2 + 8), (const void *)(*(_QWORD *)(a2 + 8) + a1), v4);
*(_QWORD *)(a2 + 16) = v4;
}
}
}
// 14001E7A0: using guessed type void *off_14001E7A0;
//----- (0000000140001D30) ----------------------------------------------------
__int64 __fastcall sub_140001D30(__int64 a1, __int64 a2)
{
__int64 result; // rax
if ( a1 )
return sub_1400010E0(a2, 2 * a1, 2i64);
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140001D50) ----------------------------------------------------
__int64 __fastcall sub_140001D50(__int64 a1)
{
__int64 result; // rax
if ( !*(_BYTE *)(a1 + 29) )
JUMPOUT(0x140001D69i64);
if ( *(_QWORD *)a1 )
return sub_1400010E0(*(_QWORD *)(a1 + 8), *(_QWORD *)a1, 1i64);
return result;
}
// 140001D67: control flows out of bounds to 140001D69
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140001E60) ----------------------------------------------------
_QWORD *__fastcall sub_140001E60(_QWORD *a1)
{
_QWORD *result; // rax
__int64 v2; // rcx
result = a1;
v2 = a1[1];
if ( v2 )
{
if ( *result )
return (_QWORD *)sub_1400010E0(v2, 2i64 * *result, 2i64);
}
else
{
result = (_QWORD *)(*result & 3i64);
if ( (_DWORD)result == 1 )
JUMPOUT(0x140001EB3i64);
}
return result;
}
// 140001EAF: control flows out of bounds to 140001EB3
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140001F40) ----------------------------------------------------
__int64 __fastcall sub_140001F40(unsigned int a1, _BYTE *a2, unsigned __int64 a3)
{
unsigned __int64 v3; // rcx
__int64 result; // rax
unsigned int v5; // [rsp+24h] [rbp-74h] BYREF
__int64 v6; // [rsp+28h] [rbp-70h] BYREF
unsigned __int64 v7; // [rsp+30h] [rbp-68h] BYREF
__int64 v8[6]; // [rsp+38h] [rbp-60h] BYREF
__int64 v9[6]; // [rsp+68h] [rbp-30h] BYREF
v5 = a1;
if ( a1 < 0x80 )
{
*a2 = a1;
v3 = 1i64;
goto LABEL_10;
}
if ( a1 < 0x800 )
{
result = a1 >> 6;
LOBYTE(result) = result | 0xC0;
*a2 = result;
a2[1] = a1 & 0x3F | 0x80;
v3 = 2i64;
goto LABEL_10;
}
if ( a1 < 0x10000 )
{
v6 = 3i64;
if ( a3 > 2 )
{
*a2 = (a1 >> 12) | 0xE0;
result = a1 >> 6;
LOBYTE(result) = result & 0x3F | 0x80;
a2[1] = result;
a2[2] = a1 & 0x3F | 0x80;
v3 = 3i64;
goto LABEL_10;
}
LABEL_12:
v7 = a3;
v8[0] = (__int64)&v6;
v8[1] = (__int64)sub_14001AD00;
v8[2] = (__int64)&v5;
v8[3] = (__int64)sub_14001A450;
v8[4] = (__int64)&v7;
v8[5] = (__int64)sub_14001AD00;
v9[2] = (__int64)&off_14001E5E0;
v9[3] = 3i64;
v9[0] = 0i64;
v9[4] = (__int64)v8;
v9[5] = 3i64;
sub_14001CBB0((__int64)v9, (__int64)&off_14001E610);
}
v6 = 4i64;
if ( a3 < 4 )
goto LABEL_12;
*a2 = (a1 >> 18) & 7 | 0xF0;
a2[1] = (a1 >> 12) & 0x3F | 0x80;
result = a1 >> 6;
LOBYTE(result) = result & 0x3F | 0x80;
a2[2] = result;
a2[3] = a1 & 0x3F | 0x80;
v3 = 4i64;
LABEL_10:
if ( v3 > a3 )
sub_14001D040(v3, a3, (__int64)&off_14001E588);
return result;
}
// 14001E588: using guessed type void *off_14001E588;
// 14001E5E0: using guessed type char *off_14001E5E0;
// 14001E610: using guessed type void *off_14001E610;
//----- (00000001400020C0) ----------------------------------------------------
__int64 __fastcall sub_1400020C0(__int64 a1)
{
__int128 v2; // [rsp+30h] [rbp-18h] BYREF
if ( *(_QWORD *)a1 )
{
v2 = *(_OWORD *)(a1 + 8);
sub_14001CF90(
(__int64)"called `Result::unwrap()` on an `Err` value",
43i64,
(__int64)&v2,
(__int64)&off_14001E6C0,
(__int64)&off_140020210);
}
return *(_QWORD *)(a1 + 8);
}
// 14001E6C0: using guessed type __int64 (__fastcall *off_14001E6C0)();
// 140020210: using guessed type void *off_140020210;
// 1400020C0: using guessed type __int128 var_18;
//----- (0000000140002110) ----------------------------------------------------
__int64 __fastcall sub_140002110(unsigned __int64 *a1, const __m128i *a2)
{
return sub_140018910(*a1, a2);
}
//----- (0000000140002120) ----------------------------------------------------
bool __fastcall sub_140002120(__int64 *a1, unsigned int a2)
{
__int64 v2; // rcx
unsigned __int64 v3; // r8
int v5; // [rsp+24h] [rbp-4h] BYREF
v2 = *a1;
v5 = 0;
if ( a2 >= 0x80 )
{
if ( a2 >= 0x800 )
{
if ( a2 > 0xFFFF )
{
LOBYTE(v5) = (a2 >> 18) & 7 | 0xF0;
BYTE1(v5) = (a2 >> 12) & 0x3F | 0x80;
BYTE2(v5) = (a2 >> 6) & 0x3F | 0x80;
HIBYTE(v5) = a2 & 0x3F | 0x80;
v3 = 4i64;
}
else
{
LOBYTE(v5) = (a2 >> 12) | 0xE0;
BYTE1(v5) = (a2 >> 6) & 0x3F | 0x80;
BYTE2(v5) = a2 & 0x3F | 0x80;
v3 = 3i64;
}
}
else
{
LOBYTE(v5) = (a2 >> 6) | 0xC0;
BYTE1(v5) = a2 & 0x3F | 0x80;
v3 = 2i64;
}
}
else
{
LOBYTE(v5) = a2;
v3 = 1i64;
}
return sub_1400064E0(v2, (unsigned __int8 *)&v5, v3);
}
//----- (00000001400021E0) ----------------------------------------------------
bool __fastcall sub_1400021E0(__int64 **a1, unsigned int a2)
{
__int64 *v2; // rcx
int v4; // [rsp+24h] [rbp-4h] BYREF
v2 = *a1;
v4 = 0;
if ( a2 >= 0x80 )
{
if ( a2 >= 0x800 )
{
if ( a2 > 0xFFFF )
{
LOBYTE(v4) = (a2 >> 18) & 7 | 0xF0;
BYTE1(v4) = (a2 >> 12) & 0x3F | 0x80;
BYTE2(v4) = (a2 >> 6) & 0x3F | 0x80;
HIBYTE(v4) = a2 & 0x3F | 0x80;
}
else
{
LOBYTE(v4) = (a2 >> 12) | 0xE0;
BYTE1(v4) = (a2 >> 6) & 0x3F | 0x80;
BYTE2(v4) = a2 & 0x3F | 0x80;
}
}
else
{
LOBYTE(v4) = (a2 >> 6) | 0xC0;
BYTE1(v4) = a2 & 0x3F | 0x80;
}
}
else
{
LOBYTE(v4) = a2;
}
return sub_1400065D0(v2, (__int64)&v4);
}
//----- (00000001400022A0) ----------------------------------------------------
__int64 __fastcall sub_1400022A0(__int64 **a1, unsigned int a2)
{
sub_140002E70(*a1, a2);
return 0i64;
}
//----- (00000001400022C0) ----------------------------------------------------
__int64 __fastcall sub_1400022C0(__int64 *a1, unsigned int a2)
{
sub_1400013C0(*a1, a2);
return 0i64;
}
//----- (00000001400022E0) ----------------------------------------------------
bool __fastcall sub_1400022E0(__int64 *a1, __int128 *a2)
{
__int64 v2; // rax
__int128 v3; // xmm0
__int128 v4; // xmm1
__int64 v6; // [rsp+28h] [rbp-40h] BYREF
__int128 v7[3]; // [rsp+30h] [rbp-38h] BYREF
v2 = *a1;
v3 = *a2;
v4 = a2[1];
v7[2] = a2[2];
v7[1] = v4;
v7[0] = v3;
v6 = v2;
return sub_1400172A0((__int64)&v6, (__int64)&off_14001E428, (__int64 *)v7);
}
// 14001E428: using guessed type __int64 (__fastcall *off_14001E428)();
//----- (0000000140002330) ----------------------------------------------------
bool __fastcall sub_140002330(__int64 *a1, __int128 *a2)
{
__int64 v2; // rax
__int128 v3; // xmm0
__int128 v4; // xmm1
__int64 v6; // [rsp+28h] [rbp-40h] BYREF
__int128 v7[3]; // [rsp+30h] [rbp-38h] BYREF
v2 = *a1;
v3 = *a2;
v4 = a2[1];
v7[2] = a2[2];
v7[1] = v4;
v7[0] = v3;
v6 = v2;
return sub_1400172A0((__int64)&v6, (__int64)&off_14001E3C8, (__int64 *)v7);
}
// 14001E3C8: using guessed type __int64 (__fastcall *off_14001E3C8)();
//----- (0000000140002380) ----------------------------------------------------
bool __fastcall sub_140002380(__int64 *a1, __int128 *a2)
{
__int64 v2; // rax
__int128 v3; // xmm0
__int128 v4; // xmm1
__int64 v6; // [rsp+28h] [rbp-40h] BYREF
__int128 v7[3]; // [rsp+30h] [rbp-38h] BYREF
v2 = *a1;
v3 = *a2;
v4 = a2[1];
v7[2] = a2[2];
v7[1] = v4;
v7[0] = v3;
v6 = v2;
return sub_1400172A0((__int64)&v6, (__int64)&off_14001E3F8, (__int64 *)v7);
}
// 14001E3F8: using guessed type __int64 (__fastcall *off_14001E3F8)();
//----- (00000001400023D0) ----------------------------------------------------
bool __fastcall sub_1400023D0(__int64 *a1, __int128 *a2)
{
__int64 v2; // rax
__int128 v3; // xmm0
__int128 v4; // xmm1
__int64 v6; // [rsp+28h] [rbp-40h] BYREF
__int128 v7[3]; // [rsp+30h] [rbp-38h] BYREF
v2 = *a1;
v3 = *a2;
v4 = a2[1];
v7[2] = a2[2];
v7[1] = v4;
v7[0] = v3;
v6 = v2;
return sub_1400172A0((__int64)&v6, (__int64)&off_14001E458, (__int64 *)v7);
}
// 14001E458: using guessed type __int64 (__fastcall *off_14001E458)();
//----- (0000000140002420) ----------------------------------------------------
__int64 __fastcall sub_140002420(__int64 **a1, const void *a2, size_t a3)
{
__int64 *v5; // rdi
__int64 v6; // r14
v5 = *a1;
v6 = (*a1)[2];
if ( **a1 - v6 < a3 )
{
sub_14001C0D0(*a1, v6, a3);
v6 = v5[2];
}
memcpy((void *)(v6 + v5[1]), a2, a3);
v5[2] = a3 + v6;
return 0i64;
}
//----- (0000000140002480) ----------------------------------------------------
bool __fastcall sub_140002480(__int64 *a1, unsigned __int8 *a2, unsigned __int64 a3)
{
return sub_1400064E0(*a1, a2, a3);
}
//----- (0000000140002490) ----------------------------------------------------
__int64 __fastcall sub_140002490(__int64 a1, const void *a2, size_t a3)
{
_QWORD *v5; // rdi
__int64 v6; // r14
v5 = *(_QWORD **)(*(_QWORD *)a1 + 8i64);
v6 = v5[2];
if ( *v5 - v6 < a3 )
{
sub_14001C0D0(*(__int64 **)(*(_QWORD *)a1 + 8i64), v5[2], a3);
v6 = v5[2];
}
memcpy((void *)(v6 + v5[1]), a2, a3);
v5[2] = a3 + v6;
return 0i64;
}
//----- (00000001400024F0) ----------------------------------------------------
bool __fastcall sub_1400024F0(__int64 **a1, __int64 a2)
{
return sub_1400065D0(*a1, a2);
}
//----- (0000000140002500) ----------------------------------------------------
__int64 __fastcall sub_140002500(_BYTE *Buf2, size_t Size, char *Buf1, unsigned __int64 a4)
{
__int64 v4; // rdi
unsigned __int8 v9; // al
__m128i v10; // xmm0
__m128i v11; // xmm6
unsigned __int8 v12; // cl
__int64 v13; // r15
unsigned __int64 v14; // rdx
unsigned __int64 v15; // r8
char *v16; // rbx
size_t v17; // rsi
int v18; // eax
unsigned __int64 v19; // rbx
__int64 v20; // r11
unsigned __int64 v21; // r9
unsigned __int64 v22; // rsi
__m128i v23; // xmm0
__m128i v24; // xmm0
__m128i v25; // xmm7
size_t v26; // r13
char *v27; // rbp
__int64 v28; // r12
__m128i v29; // xmm12
__m128i v30; // xmm10
__m128i v31; // xmm8
__m128i v32; // xmm13
__m128i v33; // xmm11
__m128i v34; // xmm9
int v35; // r8d
int v36; // r8d
int v37; // r8d
int v38; // r8d
unsigned __int64 v39; // rax
unsigned __int64 v40; // rax
char v41; // r9
size_t v42; // r14
int v43; // r8d
int v44; // eax
__int64 v45; // rsi
int v46; // r8d
unsigned __int64 v47; // r9
unsigned __int64 v48; // rbp
unsigned __int64 v49; // r15
bool v50; // zf
unsigned __int64 v51; // r9
unsigned __int64 v52; // r8
__int64 v53; // r15
unsigned __int64 v54; // r9
unsigned __int64 v55; // rbx
__int64 v56; // r14
unsigned __int64 v57; // r12
unsigned __int64 v58; // r15
__int64 v59; // r11
__int64 v60; // r9
__int64 v61; // rdi
char *v62; // r10
char v63; // bp
unsigned __int64 v64; // r9
unsigned __int64 v65; // r10
char v66; // r11
bool v67; // bl
int v68; // eax
char v69; // r11
unsigned int v70; // r9d
int v71; // r10d
int v72; // esi
int v73; // r9d
__int64 v75; // rax
unsigned __int64 v76; // r11
unsigned __int64 v77; // r15
__int64 v78; // rcx
size_t v79; // [rsp+30h] [rbp-148h]
char *v80; // [rsp+40h] [rbp-138h] BYREF
unsigned __int64 v81; // [rsp+48h] [rbp-130h]
_BYTE *v82; // [rsp+50h] [rbp-128h]
unsigned __int64 v83; // [rsp+58h] [rbp-120h]
__int64 v84; // [rsp+60h] [rbp-118h]
unsigned __int64 v85; // [rsp+68h] [rbp-110h]
__int64 v86; // [rsp+78h] [rbp-100h]
__int64 v87; // [rsp+80h] [rbp-F8h]
__int64 v88; // [rsp+88h] [rbp-F0h]
unsigned __int64 v89; // [rsp+98h] [rbp-E0h]
__int64 v90; // [rsp+A8h] [rbp-D0h]
if ( Size >= a4 )
{
if ( Size != a4 )
goto LABEL_103;
LOBYTE(v4) = memcmp(Buf2, Buf1, Size) == 0;
return (unsigned int)v4;
}
v9 = *Buf2;
if ( Size == 2 )
{
if ( a4 < 0x11 )
goto LABEL_14;
v10 = _mm_cvtsi32_si128(v9);
v11 = _mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v10, v10), 0), 0);
v12 = Buf2[1];
v13 = 1i64;
goto LABEL_25;
}
v14 = 0i64;
if ( Size >= 4 )
v14 = Size - 4;
v15 = Size - 1;
do
{
if ( v14 >= v15 + 1 )
{
sub_1400194E0((__int64)&v80, (__int64)Buf1, a4, Buf2, Size);
if ( v84 )
{
v19 = v89;
if ( v89 != -1i64 )
{
v20 = v88;
v21 = v83 + v88 - 1;
if ( v21 >= v81 )
goto LABEL_103;
v22 = v83 - 1;
v4 = v87;
while ( 1 )
{
while ( !_bittest64(&v4, (unsigned __int8)v80[v21]) )
{
v20 += v83;
LABEL_51:
v19 = 0i64;
v21 = v22 + v20;
if ( v22 + v20 >= v81 )
goto LABEL_103;
}
v47 = v19;
if ( v85 > v19 )
v47 = v85;
v48 = v47;
while ( v48 < v83 )
{
if ( v20 + v48 >= v81 )
{
v76 = v47 + v20;
if ( v81 > v76 )
v76 = v81;
sub_14001CD00(v76, v81, (__int64)&off_14001E4F0);
}
v49 = v48 + 1;
v50 = v82[v48] == (unsigned __int8)v80[v20 + v48];
++v48;
if ( !v50 )
{
v20 = v49 + v20 - v85;
goto LABEL_51;
}
}
v51 = v85;
do
{
if ( v19 >= v51 )
goto LABEL_89;
if ( --v51 >= v83 )
{
v78 = v51;
goto LABEL_123;
}
if ( v51 + v20 >= v81 )
sub_14001CD00(v51 + v20, v81, (__int64)&off_14001E520);
}
while ( v82[v51] == v80[v51 + v20] );
v20 += v86;
v19 = v83 - v86;
v21 = v22 + v20;
if ( v22 + v20 >= v81 )
goto LABEL_103;
}
}
v53 = v88;
v54 = v83 + v88 - 1;
if ( v54 >= v81 )
goto LABEL_103;
v55 = v83 - 1;
v56 = v87;
v90 = v86;
v57 = v85 - 1;
while ( !_bittest64(&v56, (unsigned __int8)v80[v54]) )
{
v58 = v83 + v53;
LABEL_75:
v59 = v58;
LABEL_76:
v54 = v55 + v59;
LODWORD(v4) = 0;
v53 = v59;
if ( v55 + v59 >= v81 )
return (unsigned int)v4;
}
v60 = 0i64;
v61 = v53;
v62 = &v82[v85];
while ( v85 + v60 < v83 )
{
if ( v85 + v61 >= v81 )
{
v77 = v85 + v53;
if ( v81 > v77 )
v77 = v81;
sub_14001CD00(v77, v81, (__int64)&off_14001E4F0);
}
v63 = *v62++;
v59 = v61 + 1;
++v60;
v50 = v63 == v80[v85 + v61++];
if ( !v50 )
goto LABEL_76;
}
v64 = v57 + v53;
v4 = (__int64)&v82[v85 - 1];
v65 = 1 - v85;
while ( v65 != 1 )
{
if ( v57 >= v83 )
{
v78 = -(__int64)v65;
LABEL_123:
sub_14001CD00(v78, v83, (__int64)&off_14001E508);
}
if ( v64 >= v81 )
sub_14001CD00(v64, v81, (__int64)&off_14001E520);
v66 = *(_BYTE *)v4;
++v65;
--v4;
v50 = v66 == v80[v64--];
if ( !v50 )
{
v58 = v90 + v53;
goto LABEL_75;
}
}
goto LABEL_89;
}
if ( BYTE2(v86) )
goto LABEL_103;
v52 = v85;
if ( v85 )
{
if ( v81 <= v85 )
{
if ( v81 != v85 )
goto LABEL_111;
}
else if ( v80[v85] < -64 )
{
goto LABEL_111;
}
}
if ( v85 == v81 )
{
LOBYTE(v4) = 1;
if ( !(_BYTE)v86 )
LABEL_103:
LODWORD(v4) = 0;
return (unsigned int)v4;
}
v69 = v80[v85];
v70 = (unsigned __int8)v69;
if ( v69 < 0 )
{
v71 = v69 & 0x1F;
v72 = v80[v85 + 1] & 0x3F;
if ( (unsigned __int8)v69 < 0xE0u )
{
v70 = v72 | (v71 << 6);
}
else
{
v73 = (v72 << 6) | v80[v85 + 2] & 0x3F;
if ( (unsigned __int8)v69 < 0xF0u )
v70 = (v71 << 12) | v73;
else
v70 = ((v69 & 7) << 18) | (v73 << 6) | v80[v85 + 3] & 0x3F;
}
}
LOBYTE(v4) = 1;
if ( (_BYTE)v86 )
return (unsigned int)v4;
if ( v70 == 1114112 )
goto LABEL_103;
v75 = 1i64;
if ( v70 >= 0x80 )
{
v75 = 2i64;
if ( v70 >= 0x800 )
v75 = 4i64 - (v70 < 0x10000);
}
v52 = v75 + v85;
if ( !(v75 + v85) )
return (unsigned int)v4;
if ( v81 <= v52 )
{
if ( v81 == v52 )
return (unsigned int)v4;
}
else if ( v80[v52] >= -64 )
{
return (unsigned int)v4;
}
LABEL_111:
sub_14001D0B0(v80, v81, v52, v81, (__int64)&off_14001E898);
}
v13 = v15;
if ( v15 >= Size )
sub_14001CD00(v15, Size, (__int64)&off_14001E4D8);
v12 = Buf2[v15--];
}
while ( v12 == v9 );
if ( Size + 15 > a4 )
{
LABEL_14:
if ( Size > a4 )
goto LABEL_103;
if ( memcmp(Buf1, Buf2, Size) )
{
v16 = Buf1 + 1;
v17 = a4 - 1;
do
{
LOBYTE(v4) = v17 >= Size;
if ( v17 < Size )
break;
v18 = memcmp(v16++, Buf2, Size);
--v17;
}
while ( v18 );
return (unsigned int)v4;
}
LABEL_89:
LOBYTE(v4) = 1;
return (unsigned int)v4;
}
v23 = _mm_cvtsi32_si128(v9);
v11 = _mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v23, v23), 0), 0);
LABEL_25:
v24 = _mm_cvtsi32_si128(v12);
v25 = _mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v24, v24), 0), 0);
v80 = Buf1;
v81 = a4;
v82 = Buf2 + 1;
v79 = Size - 1;
v83 = Size - 1;
if ( Size + 63 < a4 )
{
v26 = Size + 127;
v27 = &Buf1[v13 + 48];
LODWORD(v4) = 0;
v28 = 0i64;
while ( 1 )
{
v29 = _mm_loadu_si128((const __m128i *)&Buf1[v28 + 16]);
v30 = _mm_loadu_si128((const __m128i *)&Buf1[v28 + 32]);
v31 = _mm_loadu_si128((const __m128i *)&Buf1[v28 + 48]);
v32 = _mm_loadu_si128((const __m128i *)&v27[v28 - 32]);
v33 = _mm_loadu_si128((const __m128i *)&v27[v28 - 16]);
v34 = _mm_loadu_si128((const __m128i *)&v27[v28]);
v35 = _mm_movemask_epi8(
_mm_and_si128(
_mm_cmpeq_epi8(_mm_loadu_si128((const __m128i *)&Buf1[v13 + v28]), v25),
_mm_cmpeq_epi8(_mm_loadu_si128((const __m128i *)&Buf1[v28]), v11)));
if ( v35 )
LOBYTE(v4) = sub_14001BE80(&v80, v28, v35, v4 & 1) | v4 & 1;
v36 = _mm_movemask_epi8(_mm_and_si128(_mm_cmpeq_epi8(v32, v25), _mm_cmpeq_epi8(v29, v11)));
if ( (_WORD)v36 )
LOBYTE(v4) = sub_14001BE80(&v80, v28 + 16, v36, v4 & 1) | v4 & 1;
v37 = _mm_movemask_epi8(_mm_and_si128(_mm_cmpeq_epi8(v33, v25), _mm_cmpeq_epi8(v30, v11)));
if ( (_WORD)v37 )
LOBYTE(v4) = sub_14001BE80(&v80, v28 + 32, v37, v4 & 1) | v4 & 1;
v38 = _mm_movemask_epi8(_mm_and_si128(_mm_cmpeq_epi8(v34, v25), _mm_cmpeq_epi8(v31, v11)));
if ( (_WORD)v38 )
{
LOBYTE(v4) = sub_14001BE80(&v80, v28 + 48, v38, v4 & 1) | v4 & 1;
v40 = v28 + v26;
v28 += 64i64;
if ( v40 >= a4 )
goto LABEL_40;
}
else
{
v39 = v28 + v26;
v28 += 64i64;
if ( v39 >= a4 )
goto LABEL_40;
}
if ( (v4 & 1) != 0 )
goto LABEL_40;
}
}
v28 = 0i64;
LODWORD(v4) = 0;
LABEL_40:
v41 = v4 & 1;
if ( Size + v28 + 15 < a4 && !v41 )
{
v42 = Size + 31;
do
{
v43 = _mm_movemask_epi8(
_mm_and_si128(
_mm_cmpeq_epi8(_mm_loadu_si128((const __m128i *)&Buf1[v13 + v28]), v25),
_mm_cmpeq_epi8(_mm_loadu_si128((const __m128i *)&Buf1[v28]), v11)));
if ( v43 )
{
LOBYTE(v44) = sub_14001BE80(&v80, v28, v43, 0);
LODWORD(v4) = v44;
}
v41 = v4 & 1;
if ( v42 + v28 >= a4 )
break;
v28 += 16i64;
}
while ( !v41 );
}
v45 = a4 - v79;
v46 = _mm_movemask_epi8(
_mm_and_si128(
_mm_cmpeq_epi8(_mm_loadu_si128((const __m128i *)&Buf1[v45 - 16 + v13]), v25),
_mm_cmpeq_epi8(_mm_loadu_si128((const __m128i *)&Buf1[v45 - 16]), v11)));
if ( v46 )
{
v67 = v41 != 0;
LOBYTE(v68) = sub_14001BE80(&v80, v45 - 16, v46, v41);
LODWORD(v4) = v68;
LOBYTE(v4) = v67 | v68;
}
LOBYTE(v4) = v4 & 1;
return (unsigned int)v4;
}
// 14000292C: variable 'v44' is possibly undefined
// 140002B7B: variable 'v68' is possibly undefined
// 140002C34: variable 'v4' is possibly undefined
// 14001E4D8: using guessed type char *off_14001E4D8;
// 14001E4F0: using guessed type char *off_14001E4F0;
// 14001E508: using guessed type char *off_14001E508;
// 14001E520: using guessed type char *off_14001E520;
// 14001E898: using guessed type char *off_14001E898;
//----- (0000000140002D80) ----------------------------------------------------
__int64 __fastcall sub_140002D80(__int64 a1)
{
__int64 v2; // rdx
__int64 result; // rax
v2 = *(_QWORD *)(a1 + 32);
if ( v2 )
result = sub_1400010E0(*(_QWORD *)(a1 + 40), v2, 1i64);
if ( a1 != -1 && !_InterlockedDecrement64((volatile signed __int64 *)(a1 + 8)) )
return sub_1400010E0(a1, 56i64, 8i64);
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140002DF0) ----------------------------------------------------
_BYTE *__fastcall sub_140002DF0(__int64 a1)
{
_BYTE *result; // rax
__int64 v3; // rdx
result = *(_BYTE **)(a1 + 16);
if ( result )
{
*result = 0;
v3 = *(_QWORD *)(a1 + 24);
if ( v3 )
result = (_BYTE *)sub_1400010E0(*(_QWORD *)(a1 + 16), v3, 1i64);
}
if ( a1 != -1 && !_InterlockedDecrement64((volatile signed __int64 *)(a1 + 8)) )
return (_BYTE *)sub_1400010E0(a1, 48i64, 8i64);
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140002E50) ----------------------------------------------------
__int64 __fastcall sub_140002E50(__int64 a1, __int64 a2, __int64 a3)
{
__int64 result; // rax
if ( a2 )
return sub_1400010E0(a1, a2, a3);
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140002E60) ----------------------------------------------------
__int64 __fastcall sub_140002E60(__int64 a1)
{
return sub_1400010E0(a1, 24i64, 8i64);
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140002E70) ----------------------------------------------------
_BYTE *__fastcall sub_140002E70(__int64 *a1, unsigned int a2)
{
char v2; // di
__int64 v4; // rdx
_BYTE *result; // rax
size_t v6; // rdi
__int64 v7; // rbx
int Src; // [rsp+2Ch] [rbp-1Ch] BYREF
v2 = a2;
if ( a2 > 0x7F )
{
Src = 0;
if ( a2 >= 0x800 )
{
if ( a2 > 0xFFFF )
{
LOBYTE(Src) = (a2 >> 18) & 7 | 0xF0;
BYTE1(Src) = (a2 >> 12) & 0x3F | 0x80;
BYTE2(Src) = (a2 >> 6) & 0x3F | 0x80;
HIBYTE(Src) = a2 & 0x3F | 0x80;
v6 = 4i64;
}
else
{
LOBYTE(Src) = (a2 >> 12) | 0xE0;
BYTE1(Src) = (a2 >> 6) & 0x3F | 0x80;
BYTE2(Src) = a2 & 0x3F | 0x80;
v6 = 3i64;
}
}
else
{
LOBYTE(Src) = (a2 >> 6) | 0xC0;
BYTE1(Src) = a2 & 0x3F | 0x80;
v6 = 2i64;
}
v7 = a1[2];
if ( *a1 - v7 < v6 )
{
sub_14001C0D0(a1, a1[2], v6);
v7 = a1[2];
}
result = memcpy((void *)(v7 + a1[1]), &Src, v6);
a1[2] = v6 + v7;
}
else
{
v4 = a1[2];
if ( v4 == *a1 )
{
sub_1400030E0(a1, v4);
v4 = a1[2];
}
result = (_BYTE *)a1[1];
result[v4] = v2;
a1[2] = v4 + 1;
}
return result;
}
//----- (0000000140002F90) ----------------------------------------------------
__int64 __fastcall sub_140002F90(__int64 *a1, __int64 a2, __int64 a3, __int64 a4)
{
size_t v7; // rdx
__int64 v8; // rax
__int64 result; // rax
if ( !a3 )
{
a1[1] = a2;
a1[2] = 0i64;
goto LABEL_10;
}
if ( *(_QWORD *)(a4 + 16) && (v7 = *(_QWORD *)(a4 + 8)) != 0 )
{
v8 = sub_1400010F0(*(void **)a4, v7);
if ( !v8 )
{
LABEL_5:
a1[1] = a2;
a1[2] = a3;
LABEL_10:
result = 1i64;
goto LABEL_11;
}
}
else if ( a2 )
{
v8 = sub_1400010D0(a2, a3);
if ( !v8 )
goto LABEL_5;
}
else
{
v8 = a3;
}
a1[1] = v8;
a1[2] = a2;
result = 0i64;
LABEL_11:
*a1 = result;
return result;
}
// 140003015: conditional instruction was optimized away because r8.8!=0
// 1400010D0: using guessed type __int64 __fastcall sub_1400010D0(_QWORD, _QWORD);
//----- (0000000140003020) ----------------------------------------------------
__int64 __fastcall sub_140003020(unsigned __int64 *a1, __int64 a2)
{
unsigned __int64 v2; // rdx
unsigned __int64 v4; // rcx
unsigned __int64 v5; // rdi
__int64 result; // rax
__int64 v7[2]; // [rsp+28h] [rbp-40h] BYREF
__int64 v8; // [rsp+38h] [rbp-30h]
__int64 v9[2]; // [rsp+40h] [rbp-28h] BYREF
__int64 v10; // [rsp+50h] [rbp-18h]
v2 = a2 + 1;
if ( !v2 )
LABEL_12:
sub_140015AA0();
v4 = *a1;
if ( 2 * v4 > v2 )
v2 = 2 * v4;
v5 = 4i64;
if ( v2 >= 5 )
v5 = v2;
if ( v4 )
{
v7[0] = a1[1];
v7[1] = 2 * v4;
v8 = 2i64;
}
else
{
v8 = 0i64;
}
result = sub_140002F90(v9, 2 * v5, 2i64 * (v5 >> 62 == 0), (__int64)v7);
if ( v9[0] )
{
result = 0x8000000000000001ui64;
if ( v10 != 0x8000000000000001ui64 )
{
if ( v10 )
sub_14001CB30();
goto LABEL_12;
}
}
else
{
a1[1] = v9[1];
*a1 = v5;
}
return result;
}
//----- (00000001400030E0) ----------------------------------------------------
__int64 __fastcall sub_1400030E0(__int64 *a1, __int64 a2)
{
unsigned __int64 v2; // rdx
__int64 v4; // rax
unsigned __int64 v5; // rcx
__int64 v6; // rdi
__int64 result; // rax
__int64 v8[2]; // [rsp+28h] [rbp-40h] BYREF
__int64 v9; // [rsp+38h] [rbp-30h]
__int64 v10[2]; // [rsp+40h] [rbp-28h] BYREF
__int64 v11; // [rsp+50h] [rbp-18h]
v2 = a2 + 1;
if ( !v2 )
LABEL_12:
sub_140015AA0();
v4 = *a1;
v5 = 2 * *a1;
if ( v5 > v2 )
v2 = v5;
v6 = 8i64;
if ( v2 >= 9 )
v6 = v2;
if ( v4 )
{
v8[0] = a1[1];
v8[1] = v4;
v9 = 1i64;
}
else
{
v9 = 0i64;
}
result = sub_140002F90(v10, v6, v6 >= 0, (__int64)v8);
if ( v10[0] )
{
result = 0x8000000000000001ui64;
if ( v11 != 0x8000000000000001ui64 )
{
if ( v11 )
sub_14001CB30();
goto LABEL_12;
}
}
else
{
a1[1] = v10[1];
*a1 = v6;
}
return result;
}
//----- (00000001400031A0) ----------------------------------------------------
unsigned __int64 __fastcall sub_1400031A0(__int64 a1)
{
unsigned __int64 v1; // rcx
__int64 v2; // rax
unsigned __int64 v3; // rsi
unsigned __int64 result; // rax
__int64 v5[2]; // [rsp+20h] [rbp-38h] BYREF
__int64 v6; // [rsp+30h] [rbp-28h]
__int64 v7[2]; // [rsp+38h] [rbp-20h] BYREF
__int64 v8; // [rsp+48h] [rbp-10h]
v1 = a1 + 1;
if ( !v1 )
LABEL_14:
sub_140015AA0();
v2 = *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 40i64);
if ( 2 * v2 > v1 )
v1 = 2 * v2;
v3 = 4i64;
if ( v1 >= 5 )
v3 = v1;
if ( v2 )
{
v5[0] = *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 48i64);
v5[1] = 16 * v2;
v6 = 8i64;
}
else
{
v6 = 0i64;
}
sub_140002F90(v7, 16 * v3, 8i64 * (v3 >> 59 == 0), (__int64)v5);
if ( !v7[0] )
{
result = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
*(_QWORD *)(result + 48) = v7[1];
*(_QWORD *)(result + 40) = v3;
return result;
}
result = 0x8000000000000001ui64;
if ( v8 != 0x8000000000000001ui64 )
{
if ( v8 )
sub_14001CB30();
goto LABEL_14;
}
return result;
}
// 140027270: using guessed type int TlsIndex;
//----- (00000001400032B0) ----------------------------------------------------
__int64 __fastcall sub_1400032B0(__int64 a1, __int64 *a2)
{
return sub_1400183F0(*(unsigned __int8 **)(a1 + 8), *(_QWORD *)(a1 + 16), a2);
}
//----- (00000001400032D0) ----------------------------------------------------
__int64 __fastcall sub_1400032D0(_QWORD *a1, _QWORD *a2)
{
_QWORD *v3; // [rsp+30h] [rbp-8h] BYREF
if ( *a1 )
{
v3 = a1;
return sub_140017CA0(a2, (__int64)"ErrOk", 3i64, (__int64)&v3, (__int64)&off_14001E858);
}
else
{
v3 = a1;
return sub_140017CA0(a2, (__int64)"Ok", 2i64, (__int64)&v3, (__int64)&off_14001E878);
}
}
// 14001E858: using guessed type __int64 (__fastcall *off_14001E858)();
// 14001E878: using guessed type __int64 (__fastcall *off_14001E878)();
//----- (0000000140003340) ----------------------------------------------------
void __fastcall sub_140003340(unsigned __int64 *a1, __int64 a2)
{
unsigned int v4; // r15d
char *v5; // rcx
char v6; // dl
int v7; // eax
int v8; // r8d
int v9; // r15d
__int16 v10; // bp
__int64 v11; // rbx
__int64 v12; // r8
bool v13; // cf
unsigned __int64 v14; // r8
unsigned int v15; // eax
__int16 v16; // r15
for ( LOWORD(v4) = *(_WORD *)(a2 + 16); ; LOWORD(v4) = v10 )
{
if ( (_WORD)v4 )
{
*(_WORD *)(a2 + 16) = 0;
goto LABEL_12;
}
v5 = *(char **)(a2 + 8);
if ( v5 == *(char **)a2 )
break;
*(_QWORD *)(a2 + 8) = v5 + 1;
v6 = *v5;
LOWORD(v4) = (unsigned __int8)*v5;
if ( *v5 < 0 )
{
v7 = v4 & 0x1F;
*(_QWORD *)(a2 + 8) = v5 + 2;
v8 = v5[1] & 0x3F;
if ( (unsigned __int8)v4 <= 0xDFu )
{
LOWORD(v4) = v8 | ((_WORD)v7 << 6);
}
else
{
*(_QWORD *)(a2 + 8) = v5 + 3;
v9 = (v8 << 6) | v5[2] & 0x3F;
if ( (unsigned __int8)v6 < 0xF0u )
{
v4 = (v7 << 12) | v9;
if ( v4 > 0xFFFF )
{
LABEL_17:
v15 = ((v4 + 16711680) >> 10) | 0xD800;
v16 = v4 & 0x3FF | 0xDC00;
*(_WORD *)(a2 + 16) = v16;
v10 = v16;
LOWORD(v4) = v15;
v11 = a1[2];
if ( v11 != *a1 )
goto LABEL_2;
goto LABEL_13;
}
}
else
{
*(_QWORD *)(a2 + 8) = v5 + 4;
v4 = ((v7 & 7) << 18) | (v9 << 6) | v5[3] & 0x3F;
if ( v4 > 0xFFFF )
goto LABEL_17;
}
}
}
LABEL_12:
v10 = 0;
v11 = a1[2];
if ( v11 != *a1 )
goto LABEL_2;
LABEL_13:
v12 = *(_QWORD *)a2 - *(_QWORD *)(a2 + 8);
v13 = __CFADD__(v12, 3i64);
v14 = v12 + 3;
if ( v13 )
v14 = -1i64;
sub_14001C010(a1, v11, (v14 >> 2) - (v10 == 0) + 2);
LABEL_2:
*(_WORD *)(a1[1] + 2 * v11) = v4;
a1[2] = v11 + 1;
}
}
//----- (00000001400034D0) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void __fastcall sub_1400034D0(
__int64 a1,
__int64 a2,
__int64 a3,
__int64 a4,
int a5,
int a6,
int a7,
int a8,
int a9,
int a10,
__int64 a11)
{
ULONG StackSizeInBytes[2]; // [rsp+448h] [rbp+30h] BYREF
char **v12; // [rsp+458h] [rbp+40h]
__int64 v13; // [rsp+460h] [rbp+48h]
const char *v14; // [rsp+468h] [rbp+50h]
__int64 v15; // [rsp+470h] [rbp+58h]
__int64 v16; // [rsp+488h] [rbp+70h]
__int64 v17; // [rsp+490h] [rbp+78h]
__int64 v18; // [rsp+4A0h] [rbp+88h]
v18 = -2i64;
v17 = a2;
v16 = a1;
if ( AddVectoredExceptionHandler(0, (PVECTORED_EXCEPTION_HANDLER)Handler) )
{
StackSizeInBytes[0] = 20480;
if ( SetThreadStackGuarantee(StackSizeInBytes) || GetLastError() == 120 )
JUMPOUT(0x140003534i64);
v12 = &off_140020520;
v13 = 1i64;
*(_QWORD *)StackSizeInBytes = 0i64;
v14 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v15 = 0i64;
JUMPOUT(0x1400036FDi64);
}
v12 = &off_1400205E8;
v13 = 1i64;
*(_QWORD *)StackSizeInBytes = 0i64;
v14 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v15 = 0i64;
JUMPOUT(0x140003615i64);
}
// 1400035E6: positive sp value 148 has been found
// 14000352E: control flows out of bounds to 140003534
// 14000360D: control flows out of bounds to 140003615
// 1400036F5: control flows out of bounds to 1400036FD
// 140020520: using guessed type char *off_140020520;
// 1400205E8: using guessed type char *off_1400205E8;
//----- (0000000140003AF0) ----------------------------------------------------
void __noreturn sub_140003AF0()
{
__int64 v0; // rax
__int64 v1[8]; // [rsp+28h] [rbp-70h] BYREF
__int64 v2[6]; // [rsp+68h] [rbp-30h] BYREF
v2[2] = (__int64)&off_14001E978;
v2[3] = 1i64;
v2[0] = 0i64;
v2[4] = (__int64)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v2[5] = 0i64;
v1[0] = (__int64)v2;
v1[1] = (__int64)sub_140017290;
v1[4] = (__int64)&off_14001E8D0;
v1[5] = 2i64;
v1[2] = 0i64;
v1[6] = (__int64)v1;
v1[7] = 1i64;
sub_140006220();
sub_140001B00(v0);
__fastfail(7u);
}
// 140003B99: variable 'v0' is possibly undefined
// 14001E8D0: using guessed type void *off_14001E8D0;
// 14001E978: using guessed type char *off_14001E978;
//----- (0000000140003BB0) ----------------------------------------------------
void __noreturn sub_140003BB0()
{
__int64 v0; // rax
__int64 v1[8]; // [rsp+28h] [rbp-70h] BYREF
__int64 v2[6]; // [rsp+68h] [rbp-30h] BYREF
v2[2] = (__int64)&off_14001E9B0;
v2[3] = 1i64;
v2[0] = 0i64;
v2[4] = (__int64)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v2[5] = 0i64;
v1[0] = (__int64)v2;
v1[1] = (__int64)sub_140017290;
v1[4] = (__int64)&off_14001E8D0;
v1[5] = 2i64;
v1[2] = 0i64;
v1[6] = (__int64)v1;
v1[7] = 1i64;
sub_140006220();
sub_140001B00(v0);
__fastfail(7u);
}
// 140003C59: variable 'v0' is possibly undefined
// 14001E8D0: using guessed type void *off_14001E8D0;
// 14001E9B0: using guessed type char *off_14001E9B0;
//----- (0000000140003C70) ----------------------------------------------------
char __fastcall sub_140003C70(__int64 a1, _QWORD *a2)
{
char v3[24]; // [rsp+20h] [rbp-18h] BYREF
sub_140017C70((__int64)v3, a2, (__int64)&unk_14001E9C0, 11i64);
return sub_140016D20(v3);
}
//----- (0000000140003CA0) ----------------------------------------------------
void sub_140003CA0()
{
JUMPOUT(0x140003CC9i64);
}
// 140003CC5: control flows out of bounds to 140003CC9
//----- (0000000140003DE0) ----------------------------------------------------
__int64 __fastcall sub_140003DE0(__int64 a1)
{
__int64 v1; // r8
WCHAR *p_Buffer; // r12
unsigned __int64 v3; // rsi
unsigned __int64 i; // r15
DWORD CurrentDirectoryW; // r14d
unsigned __int64 v6; // r15
__int128 v7; // xmm0
__int64 v8; // rsi
__int64 v10; // rax
WCHAR Buffer; // [rsp+28h] [rbp-58h] BYREF
__int128 v12[2]; // [rsp+428h] [rbp+3A8h] BYREF
__int64 v13; // [rsp+448h] [rbp+3C8h]
__int64 v14; // [rsp+450h] [rbp+3D0h]
__int64 v15; // [rsp+458h] [rbp+3D8h]
__int64 v16; // [rsp+460h] [rbp+3E0h]
__int64 v17; // [rsp+468h] [rbp+3E8h]
__int64 v18; // [rsp+470h] [rbp+3F0h]
v18 = -2i64;
v16 = a1;
v13 = 0i64;
v14 = 2i64;
v15 = 0i64;
v1 = 512i64;
v17 = 2i64;
LABEL_4:
while ( 2 )
{
p_Buffer = &Buffer;
v3 = 512i64;
for ( i = v1; ; i = 0i64 )
{
SetLastError(0);
CurrentDirectoryW = GetCurrentDirectoryW(i, p_Buffer);
if ( !CurrentDirectoryW && GetLastError() )
{
LODWORD(v10) = GetLastError();
v8 = v16;
*(_QWORD *)v16 = (v10 << 32) | 2;
*(_BYTE *)(v8 + 24) = 2;
return v8;
}
v1 = CurrentDirectoryW;
if ( i != CurrentDirectoryW )
break;
if ( GetLastError() != 122 )
sub_14001CC50(
(__int64)"internal error: entered unreachable code/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
40i64,
(__int64)&off_1400203B8);
v6 = 2 * i;
if ( v6 >= 0xFFFFFFFF )
v6 = 0xFFFFFFFFi64;
v1 = v6;
if ( v6 < 0x201 )
goto LABEL_4;
LABEL_5:
if ( v1 )
JUMPOUT(0x140003E8Bi64);
v15 = 0i64;
p_Buffer = (WCHAR *)v17;
v3 = 0i64;
}
if ( i < CurrentDirectoryW )
{
if ( CurrentDirectoryW < 0x201ui64 )
continue;
goto LABEL_5;
}
break;
}
if ( v3 < CurrentDirectoryW )
sub_14001D040(CurrentDirectoryW, v3, (__int64)&off_1400203D0);
sub_1400066C0(v12, p_Buffer, CurrentDirectoryW);
v7 = v12[0];
v8 = v16;
*(_OWORD *)(v16 + 16) = v12[1];
*(_OWORD *)v8 = v7;
return v8;
}
// 140003E89: control flows out of bounds to 140003E8B
// 140003FAE: variable 'v10' is possibly undefined
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
// 1400203B8: using guessed type char *off_1400203B8;
// 1400203D0: using guessed type char *off_1400203D0;
//----- (0000000140004050) ----------------------------------------------------
__int64 __fastcall sub_140004050(__int64 a1, __int64 a2, __int64 a3)
{
const WCHAR *v4; // rdi
unsigned __int64 v5; // r8
unsigned __int64 v6; // r14
unsigned __int64 v7; // r13
WCHAR *v8; // r12
unsigned __int64 v9; // rsi
unsigned __int64 i; // rbx
const WCHAR *v11; // r15
DWORD EnvironmentVariableW; // edi
bool v13; // cf
unsigned __int64 v14; // rbx
unsigned __int64 v16; // r14
__int64 v17; // [rsp+0h] [rbp-80h] BYREF
WCHAR Buffer[4]; // [rsp+20h] [rbp-60h] BYREF
LPCWSTR lpName; // [rsp+28h] [rbp-58h]
__int64 v20; // [rsp+30h] [rbp-50h]
__int64 v21; // [rsp+438h] [rbp+3B8h]
LPCWSTR v22; // [rsp+440h] [rbp+3C0h]
__int64 v23; // [rsp+448h] [rbp+3C8h]
__int64 v24; // [rsp+470h] [rbp+3F0h]
__int64 v25; // [rsp+478h] [rbp+3F8h]
__int64 v26; // [rsp+480h] [rbp+400h]
unsigned __int64 v27; // [rsp+488h] [rbp+408h]
__int64 v28; // [rsp+490h] [rbp+410h]
__int64 v29; // [rsp+4A0h] [rbp+420h]
unsigned __int64 v30; // [rsp+4A8h] [rbp+428h]
__int64 v31; // [rsp+4B0h] [rbp+430h]
v31 = -2i64;
sub_14000D3F0((__int64)(&v17 + 4), a2, a3);
v4 = lpName;
if ( lpName )
{
v28 = a1;
v24 = *(_QWORD *)Buffer;
v21 = *(_QWORD *)Buffer;
v22 = lpName;
v23 = v20;
v25 = 0i64;
v26 = 2i64;
v27 = 0i64;
v5 = 512i64;
v29 = 2i64;
v30 = 0i64;
v6 = 0i64;
v7 = 0i64;
LABEL_5:
v8 = Buffer;
v9 = 512i64;
for ( i = v5; ; i = v7 )
{
SetLastError(0);
v11 = v4;
EnvironmentVariableW = GetEnvironmentVariableW(v4, v8, i);
if ( !EnvironmentVariableW )
{
if ( GetLastError() )
break;
}
v5 = EnvironmentVariableW;
v13 = i < EnvironmentVariableW;
if ( i == EnvironmentVariableW )
{
if ( GetLastError() != 122 )
JUMPOUT(0x1400043E0i64);
v4 = v11;
v14 = 2 * i;
if ( v14 >= 0xFFFFFFFF )
v14 = 0xFFFFFFFFi64;
v5 = v14;
if ( v14 < 0x201 )
goto LABEL_5;
}
else
{
v4 = v11;
if ( !v13 )
{
if ( v9 >= v5 )
JUMPOUT(0x14000427Ci64);
sub_14001D040(v5, v9, (__int64)&off_1400203D0);
}
if ( v5 < 0x201 )
goto LABEL_5;
}
v13 = v6 - v7 < v5 - v7;
v6 = v30;
if ( v13 )
JUMPOUT(0x140004142i64);
v7 = 0xFFFFFFFFi64;
if ( v30 < 0xFFFFFFFF )
v7 = v30;
v27 = v7;
v8 = (WCHAR *)v29;
v9 = v7;
}
v16 = ((unsigned __int64)GetLastError() << 32) | 2;
if ( v30 )
sub_1400010E0(v29, 2 * v30, 2i64);
a1 = v28;
*(_BYTE *)(v28 + 24) = 2;
if ( (v16 & 3) == 1 )
{
v30 = v16 - 1;
JUMPOUT(0x140004312i64);
}
if ( v24 )
sub_1400010E0(v11, 2 * v24, 2i64);
}
else
{
if ( (Buffer[0] & 3) == 1 )
{
v30 = *(_QWORD *)Buffer - 1i64;
v29 = *(_QWORD *)Buffer;
JUMPOUT(0x14000422Ei64);
}
*(_BYTE *)(a1 + 24) = 2;
}
return a1;
}
// 140004140: control flows out of bounds to 140004142
// 14000422A: control flows out of bounds to 14000422E
// 140004276: control flows out of bounds to 14000427C
// 14000430E: control flows out of bounds to 140004312
// 1400041D9: control flows out of bounds to 1400043E0
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
// 1400203D0: using guessed type char *off_1400203D0;
//----- (0000000140004570) ----------------------------------------------------
__int64 __fastcall sub_140004570(__int64 a1)
{
if ( *(_QWORD *)(a1 + 16) )
{
*(_BYTE *)(a1 + 29) = 1;
JUMPOUT(0x1400045D7i64);
}
return 0i64;
}
// 1400045D4: control flows out of bounds to 1400045D7
//----- (0000000140004820) ----------------------------------------------------
__int64 __fastcall sub_140004820(unsigned __int64 *a1, __int64 *a2)
{
unsigned __int64 v3; // rdx
__int64 result; // rax
__int64 *v5; // rax
__int64 v6; // rcx
__int128 v7; // [rsp+20h] [rbp-60h] BYREF
char **v8; // [rsp+30h] [rbp-50h]
__int64 v9; // [rsp+38h] [rbp-48h]
__int64 **v10; // [rsp+40h] [rbp-40h]
__int64 v11; // [rsp+48h] [rbp-38h]
__int64 *v12; // [rsp+50h] [rbp-30h] BYREF
__int64 (__fastcall *v13)(__int64, __int64 *); // [rsp+58h] [rbp-28h]
int *v14; // [rsp+60h] [rbp-20h]
__int64 (__fastcall *v15)(unsigned int *, __int64); // [rsp+68h] [rbp-18h]
__int64 v16[3]; // [rsp+70h] [rbp-10h] BYREF
int v17; // [rsp+8Ch] [rbp+Ch] BYREF
__int64 v18; // [rsp+90h] [rbp+10h]
v18 = -2i64;
v3 = *a1;
switch ( *a1 & 3 )
{
case 0ui64:
result = sub_1400183F0(*(unsigned __int8 **)v3, *(_QWORD *)(v3 + 8), a2);
break;
case 1ui64:
result = (*(__int64 (__fastcall **)(_QWORD, __int64 *))(*(_QWORD *)(v3 + 7) + 32i64))(*(_QWORD *)(v3 - 1), a2);
break;
case 2ui64:
v17 = HIDWORD(*a1);
sub_14000BB40((__int64)v16, SHIDWORD(v3));
v12 = v16;
v13 = sub_1400032B0;
v14 = &v17;
v15 = sub_14001AAA0;
v8 = &off_14001EF30;
v9 = 3i64;
*(_QWORD *)&v7 = 0i64;
v10 = &v12;
v11 = 2i64;
JUMPOUT(0x1400048EDi64);
case 3ui64:
switch ( HIDWORD(v3) )
{
case 0u:
JUMPOUT(0x140004930i64);
case 1u:
JUMPOUT(0x140004941i64);
case 2u:
JUMPOUT(0x140004952i64);
case 3u:
JUMPOUT(0x140004963i64);
case 4u:
JUMPOUT(0x140004974i64);
case 5u:
v5 = (__int64 *)&unk_14001EEB7;
goto LABEL_19;
case 6u:
JUMPOUT(0x140004991i64);
case 7u:
JUMPOUT(0x1400049A2i64);
case 8u:
JUMPOUT(0x1400049B3i64);
case 9u:
JUMPOUT(0x1400049C4i64);
case 0xAu:
JUMPOUT(0x1400049D5i64);
case 0xBu:
JUMPOUT(0x1400049E6i64);
case 0xCu:
JUMPOUT(0x1400049F7i64);
case 0xDu:
JUMPOUT(0x140004A08i64);
case 0xEu:
JUMPOUT(0x140004A19i64);
case 0xFu:
JUMPOUT(0x140004A2Ai64);
case 0x10u:
v5 = (__int64 *)&unk_14001EE04;
goto LABEL_19;
case 0x11u:
JUMPOUT(0x140004A47i64);
case 0x12u:
JUMPOUT(0x140004A58i64);
case 0x13u:
JUMPOUT(0x140004A69i64);
case 0x14u:
JUMPOUT(0x140004A7Ai64);
case 0x15u:
JUMPOUT(0x140004A8Bi64);
case 0x16u:
JUMPOUT(0x140004A9Ci64);
case 0x17u:
JUMPOUT(0x140004AADi64);
case 0x18u:
JUMPOUT(0x140004ABEi64);
case 0x19u:
JUMPOUT(0x140004ACFi64);
case 0x1Au:
JUMPOUT(0x140004AE0i64);
case 0x1Bu:
JUMPOUT(0x140004AF1i64);
case 0x1Cu:
JUMPOUT(0x140004B02i64);
case 0x1Du:
JUMPOUT(0x140004B13i64);
case 0x1Eu:
JUMPOUT(0x140004B24i64);
case 0x1Fu:
v5 = (__int64 *)&unk_14001ECC5;
v6 = 27i64;
goto LABEL_20;
case 0x20u:
v5 = (__int64 *)&unk_14001ECB7;
v6 = 14i64;
goto LABEL_20;
case 0x21u:
v5 = (__int64 *)&unk_14001ECA7;
v6 = 16i64;
goto LABEL_20;
case 0x22u:
v5 = (__int64 *)&unk_14001EC91;
v6 = 22i64;
goto LABEL_20;
case 0x23u:
v5 = (__int64 *)&unk_14001EC7C;
v6 = 21i64;
goto LABEL_20;
case 0x24u:
v5 = (__int64 *)&unk_14001EC71;
v6 = 11i64;
goto LABEL_20;
case 0x25u:
v5 = (__int64 *)&unk_14001EC5B;
v6 = 22i64;
goto LABEL_20;
case 0x26u:
v5 = (__int64 *)&unk_14001EC4E;
v6 = 13i64;
goto LABEL_20;
case 0x27u:
v5 = (__int64 *)&unk_14001EC43;
v6 = 11i64;
goto LABEL_20;
case 0x28u:
v5 = (__int64 *)&unk_14001EC30;
LABEL_19:
v6 = 19i64;
LABEL_20:
v12 = v5;
v13 = (__int64 (__fastcall *)(__int64, __int64 *))v6;
v16[0] = (__int64)&v12;
v16[1] = (__int64)sub_140001210;
v8 = &off_14001EBD8;
v9 = 1i64;
*(_QWORD *)&v7 = 0i64;
v10 = (__int64 **)v16;
v11 = 1i64;
LOBYTE(result) = sub_140017C00(a2, &v7);
result = (unsigned int)result;
break;
}
break;
}
return result;
}
// 1400048E5: control flows out of bounds to 1400048ED
// 14000492E: control flows out of bounds to 140004930
// 14000492E: control flows out of bounds to 140004941
// 14000492E: control flows out of bounds to 140004952
// 14000492E: control flows out of bounds to 140004963
// 14000492E: control flows out of bounds to 140004974
// 14000492E: control flows out of bounds to 140004991
// 14000492E: control flows out of bounds to 1400049A2
// 14000492E: control flows out of bounds to 1400049B3
// 14000492E: control flows out of bounds to 1400049C4
// 14000492E: control flows out of bounds to 1400049D5
// 14000492E: control flows out of bounds to 1400049E6
// 14000492E: control flows out of bounds to 1400049F7
// 14000492E: control flows out of bounds to 140004A08
// 14000492E: control flows out of bounds to 140004A19
// 14000492E: control flows out of bounds to 140004A2A
// 14000492E: control flows out of bounds to 140004A47
// 14000492E: control flows out of bounds to 140004A58
// 14000492E: control flows out of bounds to 140004A69
// 14000492E: control flows out of bounds to 140004A7A
// 14000492E: control flows out of bounds to 140004A8B
// 14000492E: control flows out of bounds to 140004A9C
// 14000492E: control flows out of bounds to 140004AAD
// 14000492E: control flows out of bounds to 140004ABE
// 14000492E: control flows out of bounds to 140004ACF
// 14000492E: control flows out of bounds to 140004AE0
// 14000492E: control flows out of bounds to 140004AF1
// 14000492E: control flows out of bounds to 140004B02
// 14000492E: control flows out of bounds to 140004B13
// 14000492E: control flows out of bounds to 140004B24
// 140004C13: variable 'result' is possibly undefined
// 14001EBD8: using guessed type char *off_14001EBD8;
// 14001EF30: using guessed type char *off_14001EF30;
//----- (0000000140004D10) ----------------------------------------------------
_QWORD *__fastcall sub_140004D10(_QWORD *a1, __int64 *a2, const void *a3, size_t a4)
{
__int64 v8; // r15
v8 = a2[2];
if ( *a2 - v8 < a4 )
{
sub_14001C0D0(a2, a2[2], a4);
v8 = a2[2];
}
memcpy((void *)(v8 + a2[1]), a3, a4);
a2[2] = a4 + v8;
a1[1] = a4;
*a1 = 0i64;
return a1;
}
//----- (0000000140004D80) ----------------------------------------------------
_QWORD *__fastcall sub_140004D80(_QWORD *a1, __int64 *a2, __int64 a3, __int64 a4)
{
__int64 v7; // rbp
__int64 v8; // rax
unsigned __int64 v9; // rdi
__int64 v10; // rdx
__int64 v11; // r15
__int64 v12; // rsi
const void *v13; // r13
size_t v14; // r12
_QWORD *v16; // [rsp+20h] [rbp-48h]
if ( a4 )
{
v7 = 16 * a4;
v8 = 0i64;
v9 = 0i64;
do
{
v9 += *(unsigned int *)(a3 + v8);
v8 += 16i64;
}
while ( v7 != v8 );
v10 = a2[2];
if ( *a2 - v10 < v9 )
sub_14001C0D0(a2, v10, v9);
v16 = a1;
v11 = a2[2];
v12 = 0i64;
do
{
v13 = *(const void **)(a3 + v12 + 8);
v14 = *(unsigned int *)(a3 + v12);
if ( *a2 - v11 < v14 )
{
sub_14001C0D0(a2, v11, *(unsigned int *)(a3 + v12));
v11 = a2[2];
}
memcpy((void *)(v11 + a2[1]), v13, v14);
v11 += v14;
a2[2] = v11;
v12 += 16i64;
}
while ( v7 != v12 );
a1 = v16;
}
else
{
v9 = 0i64;
}
a1[1] = v9;
*a1 = 0i64;
return a1;
}
// 140004DD5: conditional instruction was optimized away because r9.8!=0
// 140004E70: conditional instruction was optimized away because r15.8!=0
//----- (0000000140004E80) ----------------------------------------------------
char sub_140004E80()
{
return 1;
}
//----- (0000000140004E90) ----------------------------------------------------
__int64 __fastcall sub_140004E90(__int64 *a1, const void *a2, size_t a3)
{
__int64 v6; // r14
v6 = a1[2];
if ( *a1 - v6 < a3 )
{
sub_14001C0D0(a1, a1[2], a3);
v6 = a1[2];
}
memcpy((void *)(v6 + a1[1]), a2, a3);
a1[2] = a3 + v6;
return 0i64;
}
//----- (0000000140004EF0) ----------------------------------------------------
__int64 sub_140004EF0()
{
return 0i64;
}
//----- (0000000140004F00) ----------------------------------------------------
_QWORD *__fastcall sub_140004F00(_QWORD *a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int64 a4)
{
__int64 v6; // rdx
__int64 v8; // [rsp+0h] [rbp-50h] BYREF
__int128 v9; // [rsp+28h] [rbp-28h]
__int64 v10; // [rsp+38h] [rbp-18h]
__int64 v11; // [rsp+40h] [rbp-10h]
__int64 v12; // [rsp+48h] [rbp-8h]
v12 = -2i64;
sub_14000C440(&v8 + 5, 0xFFFFFFF5, a3, a4, a2);
if ( (_QWORD)v9 && (v6 = *((_QWORD *)&v9 + 1), (*((_QWORD *)&v9 + 1) & 0xFFFFFFFF00000003ui64) == 0x600000002i64) )
{
a1[1] = a4;
*a1 = 0i64;
if ( (v6 & 3) == 1 )
{
v10 = v6 - 1;
v11 = v6;
JUMPOUT(0x140004F81i64);
}
}
else
{
*(_OWORD *)a1 = v9;
}
return a1;
}
// 140004F7D: control flows out of bounds to 140004F81
//----- (0000000140005010) ----------------------------------------------------
__int64 __fastcall sub_140005010(__int64 a1)
{
__int64 v1; // rdx
if ( !a1 )
return 0i64;
v1 = a1;
if ( (a1 & 0xFFFFFFFF00000003ui64) == 0x600000002i64 )
{
if ( (a1 & 3) == 1 )
JUMPOUT(0x140005061i64);
return 0i64;
}
return v1;
}
// 14000505D: control flows out of bounds to 140005061
//----- (00000001400050F0) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void __fastcall sub_1400050F0(__int64 **a1)
{
__int64 v1; // rdi
v1 = **a1;
if ( *(_QWORD *)(v1 + 8) == *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 32i64 )
{
if ( *(_DWORD *)(v1 + 56) == -1 )
sub_14001CB40(
(__int64)"lock count overflow in reentrant mutexlibrary\\std\\src\\sync\\remutex.rs",
38i64,
(__int64)&off_14001F420);
++*(_DWORD *)(v1 + 56);
}
else
{
AcquireSRWLockExclusive((PSRWLOCK)v1);
*(_QWORD *)(v1 + 8) = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 32i64;
*(_DWORD *)(v1 + 56) = 1;
}
JUMPOUT(0x14000519Fi64);
}
// 14000524C: positive sp value 98 has been found
// 140005197: control flows out of bounds to 14000519F
// 14001F420: using guessed type void *off_14001F420;
// 140027270: using guessed type int TlsIndex;
//----- (0000000140005310) ----------------------------------------------------
#error "140005310: function frame is wrong (funcsize=0)"
//----- (0000000140005500) ----------------------------------------------------
__int64 sub_140005500()
{
__int64 v0; // rax
RTL_SRWLOCK **v1; // rsi
RTL_SRWLOCK *v2; // rbx
if ( byte_140027130 )
{
v0 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
if ( *(_QWORD *)(v0 + 8) )
{
v1 = (RTL_SRWLOCK **)(v0 + 16);
}
else
{
v1 = (RTL_SRWLOCK **)sub_140007FB0(0i64);
if ( !v1 )
return 0i64;
}
v2 = *v1;
*v1 = 0i64;
if ( v2 )
{
AcquireSRWLockExclusive(v2 + 2);
if ( 2 * qword_1400271C0 )
sub_14001C340();
JUMPOUT(0x1400055AFi64);
}
}
return 0i64;
}
// 1400055AB: control flows out of bounds to 1400055AF
// 140027130: using guessed type char byte_140027130;
// 1400271C0: using guessed type __int64 qword_1400271C0;
// 140027270: using guessed type int TlsIndex;
//----- (0000000140005710) ----------------------------------------------------
void __fastcall sub_140005710(__int128 *a1)
{
__int128 v1; // xmm0
__int128 v2; // xmm1
__int64 v3; // rax
__int128 v4; // [rsp+20h] [rbp-60h]
__int128 v5; // [rsp+30h] [rbp-50h]
__int128 v6; // [rsp+40h] [rbp-40h]
__int64 *v7[4]; // [rsp+58h] [rbp-28h] BYREF
__int64 v8[2]; // [rsp+78h] [rbp-8h] BYREF
RTL_SRWLOCK *v9; // [rsp+88h] [rbp+8h] BYREF
__int128 v10; // [rsp+90h] [rbp+10h]
__int128 v11; // [rsp+A0h] [rbp+20h]
__int128 v12; // [rsp+B0h] [rbp+30h]
__int64 v13[3]; // [rsp+C8h] [rbp+48h] BYREF
v13[1] = -2i64;
v6 = a1[2];
v5 = a1[1];
v4 = *a1;
v8[0] = (__int64)"stdoutlibrary\\std\\src\\io\\mod.rs";
v8[1] = 6i64;
v1 = *a1;
v2 = a1[1];
v12 = a1[2];
v11 = v2;
v10 = v1;
if ( !(unsigned __int8)sub_140005500() )
{
if ( qword_140027178 != 3 )
sub_14001C260();
v9 = &SRWLock;
v12 = v6;
v11 = v5;
v10 = v4;
v7[0] = (__int64 *)&v9;
sub_1400050F0(v7);
if ( v3 )
{
v13[0] = v3;
v7[0] = v8;
v7[1] = (__int64 *)sub_140001210;
v7[2] = v13;
v7[3] = (__int64 *)sub_140004820;
*(_QWORD *)&v11 = &off_14001EFD8;
*((_QWORD *)&v11 + 1) = 2i64;
*(_QWORD *)&v10 = 0i64;
*(_QWORD *)&v12 = v7;
*((_QWORD *)&v12 + 1) = 2i64;
JUMPOUT(0x140005826i64);
}
}
}
// 14000581E: control flows out of bounds to 140005826
// 1400057C2: variable 'v3' is possibly undefined
// 14001EFD8: using guessed type char *off_14001EFD8;
// 140027178: using guessed type __int64 qword_140027178;
//----- (0000000140005870) ----------------------------------------------------
_QWORD *__fastcall sub_140005870(_QWORD *a1, unsigned __int8 *a2, __int64 a3, __int64 a4)
{
__int64 v6; // r10
__int64 v7; // rcx
unsigned __int8 *v8; // r8
unsigned __int64 v9; // r9
v6 = 16 * a4;
v7 = 0i64;
v8 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
while ( v6 != v7 )
{
v9 = *(unsigned int *)(a3 + v7);
v7 += 16i64;
if ( v9 )
{
v8 = *(unsigned __int8 **)(a3 + v7 - 8);
goto LABEL_6;
}
}
v9 = 0i64;
LABEL_6:
sub_14000C440(a1, 0xFFFFFFF4, v8, v9, a2);
return a1;
}
//----- (00000001400058D0) ----------------------------------------------------
char **__fastcall sub_1400058D0(unsigned __int8 *a1, unsigned __int8 *a2, unsigned __int64 a3)
{
unsigned __int64 v3; // rsi
unsigned __int64 v6; // r13
char **result; // rax
__int64 v8; // [rsp+30h] [rbp-20h] BYREF
unsigned __int64 v9; // [rsp+38h] [rbp-18h]
unsigned __int64 v10; // [rsp+40h] [rbp-10h]
__int64 v11; // [rsp+50h] [rbp+0h]
v11 = -2i64;
if ( a3 )
{
v3 = a3;
do
{
sub_14000C440(&v8, 0xFFFFFFF4, a2, v3, a1);
if ( v8 )
{
v6 = v9;
switch ( v9 & 3 )
{
case 0ui64:
if ( *(_BYTE *)(v9 + 16) != 35 )
return (char **)v6;
goto LABEL_16;
case 1ui64:
if ( *(_BYTE *)(v9 + 15) != 35 )
return (char **)v6;
goto LABEL_16;
case 2ui64:
if ( sub_14000CE30(SHIDWORD(v9)) != 35 )
return (char **)v6;
goto LABEL_16;
case 3ui64:
if ( HIDWORD(v9) != 35 )
return (char **)v6;
LABEL_16:
if ( (v6 & 3) == 1 )
{
v10 = v6 - 1;
JUMPOUT(0x1400059E9i64);
}
return result;
}
}
else
{
if ( !v9 )
return &off_14001F0D0;
if ( v3 < v9 )
sub_14001D030(v9, v3, (__int64)&off_14001F098);
a2 += v9;
v3 -= v9;
}
}
while ( v3 );
}
return 0i64;
}
// 1400059E5: control flows out of bounds to 1400059E9
// 14001F098: using guessed type void *off_14001F098;
// 14001F0D0: using guessed type char *off_14001F0D0;
//----- (0000000140005AB0) ----------------------------------------------------
char **__fastcall sub_140005AB0(unsigned __int8 *a1, unsigned __int8 *a2, unsigned __int64 a3)
{
unsigned __int64 v3; // rsi
unsigned __int64 v6; // r13
char **result; // rax
__int64 v8; // [rsp+30h] [rbp-20h] BYREF
unsigned __int64 v9; // [rsp+38h] [rbp-18h]
unsigned __int64 v10; // [rsp+40h] [rbp-10h]
__int64 v11; // [rsp+50h] [rbp+0h]
v11 = -2i64;
if ( a3 )
{
v3 = a3;
do
{
sub_14000C440(&v8, 0xFFFFFFF5, a2, v3, a1);
if ( v8 )
{
v6 = v9;
switch ( v9 & 3 )
{
case 0ui64:
if ( *(_BYTE *)(v9 + 16) != 35 )
return (char **)v6;
goto LABEL_16;
case 1ui64:
if ( *(_BYTE *)(v9 + 15) != 35 )
return (char **)v6;
goto LABEL_16;
case 2ui64:
if ( sub_14000CE30(SHIDWORD(v9)) != 35 )
return (char **)v6;
goto LABEL_16;
case 3ui64:
if ( HIDWORD(v9) != 35 )
return (char **)v6;
LABEL_16:
if ( (v6 & 3) == 1 )
{
v10 = v6 - 1;
JUMPOUT(0x140005BC9i64);
}
return result;
}
}
else
{
if ( !v9 )
return &off_14001F0D0;
if ( v3 < v9 )
sub_14001D030(v9, v3, (__int64)&off_14001F098);
a2 += v9;
v3 -= v9;
}
}
while ( v3 );
}
return 0i64;
}
// 140005BC5: control flows out of bounds to 140005BC9
// 14001F098: using guessed type void *off_14001F098;
// 14001F0D0: using guessed type char *off_14001F0D0;
//----- (0000000140005C90) ----------------------------------------------------
char **__fastcall sub_140005C90(__int64 *a1, __int64 a2, unsigned __int64 a3)
{
unsigned __int64 v3; // rsi
__int64 v5; // rax
__int64 v6; // r8
unsigned __int64 v7; // rcx
unsigned __int64 v8; // rsi
_DWORD *v9; // rdx
_DWORD *v10; // rbp
__int64 v11; // rsi
unsigned __int64 v12; // rax
unsigned __int64 v13; // r14
__int64 v14; // r15
unsigned __int64 v15; // rbx
const void *v16; // r13
size_t v17; // r12
unsigned __int64 v18; // rdx
unsigned __int64 v19; // r8
unsigned __int64 v20; // rax
unsigned __int64 v21; // r14
unsigned __int64 v22; // rax
void **v24; // rdx
unsigned __int64 v25; // [rsp+20h] [rbp-78h]
__int64 v26; // [rsp+28h] [rbp-70h] BYREF
char **v27; // [rsp+38h] [rbp-60h]
__int64 v28; // [rsp+40h] [rbp-58h]
const char *v29; // [rsp+48h] [rbp-50h]
__int64 v30; // [rsp+50h] [rbp-48h]
if ( !a3 )
return 0i64;
v3 = a3;
v5 = 16 * a3;
v6 = 0i64;
v7 = 0i64;
do
{
if ( *(_DWORD *)(a2 + v6) )
break;
++v7;
v6 += 16i64;
}
while ( v5 != v6 );
if ( v7 > v3 )
LABEL_30:
sub_14001D030(v7, v3, (__int64)&off_14001F030);
v8 = v3 - v7;
if ( !v8 )
return 0i64;
v9 = (_DWORD *)(16 * v7 + a2);
while ( 1 )
{
v10 = v9;
v25 = v8;
v11 = 16 * v8;
v12 = 0i64;
v13 = 0i64;
do
{
v13 += (unsigned int)v9[v12 / 4];
v12 += 16i64;
}
while ( v11 != v12 );
v14 = a1[2];
if ( *a1 - v14 < v13 )
{
sub_14001C0D0(a1, a1[2], v13);
v14 = a1[2];
}
v15 = 0i64;
do
{
v16 = *(const void **)&v10[v15 / 4 + 2];
v17 = (unsigned int)v10[v15 / 4];
if ( *a1 - v14 < v17 )
{
sub_14001C0D0(a1, v14, (unsigned int)v10[v15 / 4]);
v14 = a1[2];
}
memcpy((void *)(v14 + a1[1]), v16, v17);
v14 += v17;
a1[2] = v14;
v15 += 16i64;
}
while ( v11 != v15 );
if ( !v13 )
return &off_14001F0D0;
v18 = 0i64;
v7 = 0i64;
v19 = 0i64;
while ( 1 )
{
v20 = v19 + (unsigned int)v10[v18 / 4];
if ( v20 > v13 )
break;
++v7;
v18 += 16i64;
v19 = v20;
if ( v11 == v18 )
goto LABEL_24;
}
v20 = v19;
LABEL_24:
v3 = v25;
if ( v25 < v7 )
goto LABEL_30;
v9 = &v10[4 * v7];
v8 = v25 - v7;
if ( v25 == v7 )
{
if ( v13 == v20 )
return 0i64;
v27 = &off_14001F070;
v28 = 1i64;
v26 = 0i64;
v29 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v30 = 0i64;
v24 = &off_14001F080;
LABEL_33:
sub_14001CBB0((__int64)&v26, (__int64)v24);
}
v21 = v13 - v20;
v22 = (unsigned int)*v9;
if ( v21 > v22 )
{
v27 = &off_14001FDB8;
v28 = 1i64;
v26 = 0i64;
v29 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v30 = 0i64;
v24 = (void **)&off_14001FDF0;
goto LABEL_33;
}
*v9 = v22 - v21;
*(_QWORD *)&v10[4 * v7 + 2] += v21;
if ( !v8 )
return 0i64;
}
}
// 140005CFC: conditional instruction was optimized away because rsi.8==0
// 14001F030: using guessed type void *off_14001F030;
// 14001F070: using guessed type char *off_14001F070;
// 14001F080: using guessed type void *off_14001F080;
// 14001F0D0: using guessed type char *off_14001F0D0;
// 14001FDB8: using guessed type char *off_14001FDB8;
// 14001FDF0: using guessed type char *off_14001FDF0;
//----- (0000000140005EE0) ----------------------------------------------------
char **__fastcall sub_140005EE0(unsigned __int8 *a1, __int64 a2, unsigned __int64 a3)
{
unsigned __int64 v3; // rsi
__int64 v6; // rdx
unsigned __int64 v7; // rcx
_DWORD *v8; // rbx
_DWORD *v9; // rdx
__int64 v10; // r15
unsigned __int64 v11; // rax
unsigned __int64 v12; // r9
unsigned __int8 *v13; // r8
unsigned __int64 v14; // r15
unsigned __int64 v15; // rdx
unsigned __int64 v16; // r9
unsigned __int64 v17; // r8
__int64 v18; // r9
unsigned __int64 v19; // rax
unsigned __int64 v20; // rcx
void **v22; // rdx
__int64 v23; // [rsp+30h] [rbp-50h] BYREF
char **v24; // [rsp+40h] [rbp-40h]
__int64 v25; // [rsp+48h] [rbp-38h]
const char *v26; // [rsp+50h] [rbp-30h]
__int64 v27; // [rsp+58h] [rbp-28h]
__int64 v28; // [rsp+60h] [rbp-20h] BYREF
unsigned __int64 v29; // [rsp+68h] [rbp-18h]
unsigned __int64 v30; // [rsp+70h] [rbp-10h]
unsigned __int64 v31; // [rsp+78h] [rbp-8h]
__int64 v32; // [rsp+80h] [rbp+0h]
v32 = -2i64;
if ( !a3 )
return 0i64;
v3 = a3;
v6 = 0i64;
v7 = 0i64;
do
{
if ( *(_DWORD *)(a2 + v6) )
break;
++v7;
v6 += 16i64;
}
while ( 16 * a3 != v6 );
if ( v7 > a3 )
LABEL_43:
sub_14001D030(v7, v3, (__int64)&off_14001F030);
v3 = a3 - v7;
if ( a3 == v7 )
return 0i64;
v8 = (_DWORD *)(16 * v7 + a2);
while ( 1 )
{
v10 = 16 * v3;
v11 = 0i64;
while ( v10 != v11 )
{
v12 = (unsigned int)v8[v11 / 4];
v11 += 16i64;
if ( v12 )
{
v13 = *(unsigned __int8 **)&v8[v11 / 4 - 2];
goto LABEL_15;
}
}
v12 = 0i64;
v13 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
LABEL_15:
sub_14000C440(&v28, 0xFFFFFFF4, v13, v12, a1);
if ( v28 )
{
v14 = v29;
switch ( v29 & 3 )
{
case 0ui64:
if ( *(_BYTE *)(v29 + 16) != 35 )
return (char **)v14;
goto LABEL_37;
case 1ui64:
if ( *(_BYTE *)(v29 + 15) != 35 )
return (char **)v14;
goto LABEL_37;
case 2ui64:
if ( sub_14000CE30(SHIDWORD(v29)) != 35 )
return (char **)v14;
goto LABEL_37;
case 3ui64:
if ( HIDWORD(v29) == 35 )
goto LABEL_37;
return (char **)v14;
}
}
if ( !v29 )
return &off_14001F0D0;
v15 = 0i64;
v7 = 0i64;
v16 = 0i64;
while ( 1 )
{
v17 = v16 + (unsigned int)v8[v15 / 4];
if ( v17 > v29 )
break;
++v7;
v15 += 16i64;
v16 = v17;
if ( v10 == v15 )
goto LABEL_25;
}
v17 = v16;
LABEL_25:
if ( v3 < v7 )
goto LABEL_43;
v18 = 4 * v7;
v9 = &v8[4 * v7];
v3 -= v7;
if ( v3 )
{
v19 = v29 - v17;
v20 = (unsigned int)*v9;
if ( v29 - v17 > v20 )
{
v24 = &off_14001FDB8;
v25 = 1i64;
v23 = 0i64;
v26 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v27 = 0i64;
v22 = (void **)&off_14001FDF0;
LABEL_45:
sub_14001CBB0((__int64)&v23, (__int64)v22);
}
*v9 = v20 - v19;
*(_QWORD *)&v8[v18 + 2] += v19;
v8 = v9;
if ( v28 )
{
LABEL_37:
if ( (v29 & 3) == 1 )
{
v30 = v29 - 1;
v31 = v29;
JUMPOUT(0x1400060DCi64);
}
v9 = v8;
}
}
else if ( v29 != v17 )
{
v24 = &off_14001F070;
v25 = 1i64;
v23 = 0i64;
v26 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v27 = 0i64;
v22 = &off_14001F080;
goto LABEL_45;
}
v8 = v9;
if ( !v3 )
return 0i64;
}
}
// 1400060D8: control flows out of bounds to 1400060DC
// 14001F030: using guessed type void *off_14001F030;
// 14001F070: using guessed type char *off_14001F070;
// 14001F080: using guessed type void *off_14001F080;
// 14001F0D0: using guessed type char *off_14001F0D0;
// 14001FDB8: using guessed type char *off_14001FDB8;
// 14001FDF0: using guessed type char *off_14001FDF0;
//----- (0000000140006220) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void sub_140006220()
{
JUMPOUT(0x140006256i64);
}
// 1400062E5: positive sp value 88 has been found
// 140006252: control flows out of bounds to 140006256
//----- (0000000140006350) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void sub_140006350()
{
JUMPOUT(0x140006386i64);
}
// 140006415: positive sp value 88 has been found
// 140006382: control flows out of bounds to 140006386
//----- (0000000140006480) ----------------------------------------------------
__int64 __fastcall sub_140006480(__int64 a1, const void *a2, size_t a3)
{
_QWORD *v5; // rdi
__int64 v6; // r14
v5 = *(_QWORD **)(a1 + 8);
v6 = v5[2];
if ( *v5 - v6 < a3 )
{
sub_14001C0D0(*(__int64 **)(a1 + 8), v5[2], a3);
v6 = v5[2];
}
memcpy((void *)(v6 + v5[1]), a2, a3);
v5[2] = a3 + v6;
return 0i64;
}
//----- (00000001400064E0) ----------------------------------------------------
bool __fastcall sub_1400064E0(__int64 a1, unsigned __int8 *a2, unsigned __int64 a3)
{
char **v4; // rax
v4 = sub_1400058D0(*(unsigned __int8 **)(a1 + 8), a2, a3);
if ( v4 )
{
if ( *(_QWORD *)a1 && (*(_QWORD *)a1 & 3) == 1 )
JUMPOUT(0x140006532i64);
*(_QWORD *)a1 = v4;
}
return v4 != 0i64;
}
// 14000652E: control flows out of bounds to 140006532
//----- (00000001400065D0) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
bool __fastcall sub_1400065D0(__int64 *a1, __int64 a2)
{
__int64 v3; // rax
v3 = ((__int64 (__fastcall *)(__int64, __int64))sub_140005310)(a1[1], a2);
if ( v3 )
{
if ( *a1 && (*a1 & 3) == 1 )
JUMPOUT(0x140006622i64);
*a1 = v3;
}
return v3 != 0;
}
// 14000666F: positive sp value 8 has been found
// 14000661E: control flows out of bounds to 140006622
// 140005310: using guessed type __int64 __fastcall __far sub_140005310();
//----- (00000001400066C0) ----------------------------------------------------
__int128 *__fastcall sub_1400066C0(__int128 *a1, unsigned __int16 *a2, __int64 a3)
{
unsigned __int16 v3; // si
__int64 v6; // rax
unsigned __int16 *v7; // rbx
unsigned __int16 i; // ax
unsigned __int16 v9; // cx
__int16 v10; // r15
unsigned int v11; // eax
size_t v12; // r12
__int128 v13; // xmm0
__int128 *result; // rax
__int128 v16; // [rsp+28h] [rbp-28h] BYREF
__int128 v17; // [rsp+38h] [rbp-18h]
unsigned __int16 v18; // [rsp+4Ah] [rbp-6h] BYREF
int Src; // [rsp+4Ch] [rbp-4h] BYREF
__int64 v20; // [rsp+50h] [rbp+0h]
v20 = -2i64;
if ( a3 )
{
if ( a3 < 0 )
sub_140015AA0();
v6 = sub_1400010D0(a3, a3 >= 0);
if ( !v6 )
sub_14001CB30();
}
else
{
v6 = 1i64;
}
*(_QWORD *)&v16 = a3;
*((_QWORD *)&v16 + 1) = v6;
*(_QWORD *)&v17 = 0i64;
BYTE8(v17) = 1;
v7 = &a2[a3];
while ( a2 != v7 )
{
for ( i = *a2++; ; i = v3 )
{
if ( (i & 0xF800) != 55296 )
LABEL_7:
JUMPOUT(0x14000675Bi64);
if ( i > 0xDBFFu )
{
v10 = 0;
}
else if ( a2 == v7 )
{
v10 = 0;
a2 = v7;
}
else
{
v9 = *a2++;
if ( (unsigned __int16)(v9 + 0x2000) >= 0xFC00u )
goto LABEL_7;
v10 = 1;
v3 = v9;
}
v18 = i;
v11 = sub_140016680(&v18);
BYTE8(v17) = 0;
Src = 0;
if ( (unsigned __int16)v11 >= 0x80u )
{
if ( (unsigned __int16)v11 >= 0x800u )
{
LOBYTE(Src) = ((unsigned __int16)v11 >> 12) | 0xE0;
BYTE1(Src) = ((unsigned __int16)v11 >> 6) & 0x3F | 0x80;
BYTE2(Src) = v11 & 0x3F | 0x80;
v12 = 3i64;
}
else
{
LOBYTE(Src) = (v11 >> 6) | 0xC0;
BYTE1(Src) = v11 & 0x3F | 0x80;
v12 = 2i64;
}
}
else
{
LOBYTE(Src) = v11;
v12 = 1i64;
}
if ( (_QWORD)v16 - (_QWORD)v17 < v12 )
{
sub_14001C0D0((__int64 *)&v16, v17, v12);
JUMPOUT(0x14000688Bi64);
}
memcpy((void *)(v17 + *((_QWORD *)&v16 + 1)), &Src, v12);
*(_QWORD *)&v17 = v12 + v17;
if ( !v10 )
break;
}
}
v13 = v16;
result = a1;
a1[1] = v17;
*a1 = v13;
return result;
}
// 140006758: control flows out of bounds to 14000675B
// 140006886: control flows out of bounds to 14000688B
// 140006769: variable 'v3' is possibly undefined
// 1400010D0: using guessed type __int64 __fastcall sub_1400010D0(_QWORD, _QWORD);
//----- (0000000140006930) ----------------------------------------------------
__int64 sub_140006930()
{
unsigned int v0; // esi
__int64 v1; // rax
__int64 v3; // [rsp+20h] [rbp-28h] BYREF
_DWORD *v4; // [rsp+28h] [rbp-20h]
__int64 v5; // [rsp+30h] [rbp-18h]
char v6; // [rsp+38h] [rbp-10h]
v0 = 0;
switch ( qword_140027180 )
{
case 0i64:
sub_140004050((__int64)&v3, (__int64)"RUST_BACKTRACEfailed to write the buffered data", 14i64);
if ( v6 == 2 )
{
v1 = 3i64;
LOBYTE(v0) = 2;
}
else
{
if ( v5 == 4 )
{
LOBYTE(v0) = *v4 == 1819047270;
}
else if ( v5 == 1 )
{
LOBYTE(v0) = 2 * (*(_BYTE *)v4 == 48);
}
else
{
v0 = 0;
}
if ( v3 )
sub_1400010E0(v4, v3, 1i64);
v1 = (unsigned __int8)(v0 + 1);
}
qword_140027180 = v1;
break;
case 1i64:
return v0;
case 2i64:
LOBYTE(v0) = 1;
break;
case 3i64:
LOBYTE(v0) = 2;
break;
default:
sub_14001CC50(
(__int64)"internal error: entered unreachable code/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
40i64,
(__int64)&off_14001F1B8);
}
return v0;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
// 14001F1B8: using guessed type void *off_14001F1B8;
// 140027180: using guessed type __int64 qword_140027180;
//----- (0000000140006A10) ----------------------------------------------------
_BYTE *__fastcall sub_140006A10(__int64 a1)
{
_BYTE *v1; // rsi
unsigned __int64 v2; // rdi
__int64 v3; // rax
__int128 v4; // xmm0
unsigned __int8 v5; // bp
__int64 v6; // rdx
char v7; // r8
__int64 v8; // rcx
unsigned __int64 v9; // rcx
int v10; // r9d
__int64 v11; // r9
unsigned __int64 v12; // rcx
char v13; // r13
__int64 v14; // r15
__int64 v15; // r14
unsigned __int64 v16; // rbx
bool v17; // zf
unsigned __int8 v18; // cl
__int64 v19; // r9
bool v20; // zf
_BYTE *v22; // [rsp+30h] [rbp-C8h] BYREF
unsigned __int64 v23; // [rsp+38h] [rbp-C0h]
char v24; // [rsp+40h] [rbp-B8h]
__int128 v25; // [rsp+41h] [rbp-B7h] BYREF
char v26[23]; // [rsp+51h] [rbp-A7h] BYREF
char v27; // [rsp+68h] [rbp-90h]
char v28; // [rsp+69h] [rbp-8Fh]
unsigned __int8 v29; // [rsp+6Ah] [rbp-8Eh]
__int128 v30; // [rsp+70h] [rbp-88h] BYREF
_BYTE v31[23]; // [rsp+80h] [rbp-78h]
v1 = *(_BYTE **)a1;
v2 = *(_QWORD *)(a1 + 8);
LODWORD(v3) = *(unsigned __int8 *)(a1 + 16);
if ( (_DWORD)v3 != 6 )
{
*(_QWORD *)&v31[15] = *(_QWORD *)(a1 + 48);
v4 = *(_OWORD *)(a1 + 17);
*(_OWORD *)v31 = *(_OWORD *)(a1 + 33);
v30 = v4;
}
v5 = *(_BYTE *)(a1 + 58);
LOBYTE(v6) = *(_BYTE *)(a1 + 56);
v7 = *(_BYTE *)(a1 + 57);
v22 = v1;
v23 = v2;
v24 = v3;
v25 = v30;
*(_OWORD *)v26 = *(_OWORD *)v31;
*(_QWORD *)&v26[15] = *(_QWORD *)&v31[15];
v29 = v5;
v27 = v6;
v28 = v7;
if ( (_BYTE)v6 != 2 )
goto LABEL_25;
if ( v2 )
{
while ( 1 )
{
v8 = 0i64;
while ( v1[v8] != 92 )
{
if ( v2 == ++v8 )
goto LABEL_24;
}
if ( v8 )
break;
++v1;
if ( !--v2 )
goto LABEL_23;
}
LABEL_24:
while ( 1 )
{
v22 = v1;
v23 = v2;
LABEL_25:
if ( v7 != 2 )
break;
LABEL_26:
v13 = (_BYTE)v6 == 0 ? -1 : (_BYTE)v6 != 1;
v14 = 16i64;
if ( (_BYTE)v3 != 6 )
v14 = (__int64)&v25 + 15;
v15 = 32i64;
if ( (_BYTE)v3 != 6 )
v15 = (__int64)&v26[15];
if ( (_BYTE)v6 )
{
if ( v13 != -1 && v13 )
{
if ( v2 )
{
do
{
sub_1400070E0((__int64)&v30, (__int64)&v22);
if ( v31[8] != 10 )
break;
v16 = v2 - v30;
v17 = v2 == (_QWORD)v30;
if ( v2 < (unsigned __int64)v30 )
goto LABEL_73;
v23 = v2 - v30;
v2 -= v30;
}
while ( !v17 );
}
}
else if ( v2 > v5 + (unsigned __int64)sub_140006FC0((__int64 *)&v22) )
{
do
{
sub_1400070E0((__int64)&v30, (__int64)&v22);
if ( v31[8] != 10 )
break;
v16 = v2 - v30;
if ( v2 < (unsigned __int64)v30 )
goto LABEL_73;
v23 = v2 - v30;
v2 -= v30;
}
while ( v16 > v5 + (unsigned __int64)sub_140006FC0((__int64 *)&v22) );
}
return v1;
}
if ( (_BYTE)v3 == 6 )
{
if ( v13 != -1 && v13 )
{
if ( v2 )
{
while ( 1 )
{
sub_1400070E0((__int64)&v30, (__int64)&v22);
if ( v31[8] != 10 )
return v1;
v20 = v2 == (_QWORD)v30;
if ( v2 < (unsigned __int64)v30 )
break;
v23 = v2 - v30;
v2 -= v30;
if ( v20 )
return v1;
}
v16 = v2 - v30;
LABEL_73:
sub_14001D040(v16, v2, (__int64)&off_14001F268);
}
}
else if ( v2 > v5 + (unsigned __int64)sub_140006FC0((__int64 *)&v22) )
{
do
{
sub_1400070E0((__int64)&v30, (__int64)&v22);
if ( v31[8] != 10 )
break;
v16 = v2 - v30;
if ( v2 < (unsigned __int64)v30 )
goto LABEL_73;
v23 = v2 - v30;
v2 -= v30;
}
while ( v16 > v5 + (unsigned __int64)sub_140006FC0((__int64 *)&v22) );
}
return v1;
}
while ( v13 != -1 )
{
if ( !v13 )
break;
v18 = 0;
v3 = 0i64;
LABEL_57:
v6 = *(_QWORD *)v14 + 4i64;
LABEL_61:
if ( v2 > v6 + v3 + (unsigned __int64)v18 )
{
sub_1400070E0((__int64)&v30, (__int64)&v22);
if ( v31[8] == 10 )
continue;
}
return v1;
v16 = v2 - v30;
if ( v2 < (unsigned __int64)v30 )
goto LABEL_73;
v23 = v2 - v30;
v2 -= v30;
}
v3 = sub_140006FC0((__int64 *)&v22);
v18 = v5;
v6 = 6i64;
switch ( (char)v3 )
{
case 0:
goto LABEL_57;
case 1:
v19 = *(_QWORD *)v15 + 1i64;
if ( !*(_QWORD *)v15 )
v19 = 0i64;
v6 = v19 + *(_QWORD *)v14 + 8;
goto LABEL_61;
case 2:
goto LABEL_61;
default:
goto LABEL_12;
}
do
{
LABEL_12:
v9 = 0i64;
while ( 1 )
{
v10 = (unsigned __int8)v1[v9];
if ( v10 == 47 || v10 == 92 )
break;
if ( v2 == ++v9 )
{
v11 = 0i64;
v9 = v2;
if ( !v2 )
goto LABEL_21;
goto LABEL_19;
}
}
v11 = 1i64;
if ( !v9 )
goto LABEL_21;
LABEL_19:
if ( v9 != 1 || *v1 != 46 )
goto LABEL_24;
LABEL_21:
v12 = v11 + v9;
if ( v2 < v12 )
sub_14001D030(v12, v2, (__int64)&off_14001F250);
v1 += v12;
v2 -= v12;
}
while ( v2 );
LABEL_23:
v2 = 0i64;
}
}
else
{
v2 = 0i64;
if ( v7 == 2 )
goto LABEL_26;
}
return v1;
}
// 140006AE7: conditional instruction was optimized away because rdi.8!=0
// 140006B02: conditional instruction was optimized away because rdi.8!=0
// 140006BF3: conditional instruction was optimized away because r13.1==0
// 140006C9A: conditional instruction was optimized away because r13.1==0
// 140006B9A: variable 'v7' is possibly undefined
// 14001F250: using guessed type char *off_14001F250;
// 14001F268: using guessed type char *off_14001F268;
//----- (0000000140006FC0) ----------------------------------------------------
bool __fastcall sub_140006FC0(__int64 *a1)
{
bool result; // al
unsigned __int8 v2; // r9
__int64 v3; // rax
unsigned __int64 v4; // rdx
unsigned __int64 v5; // rcx
__int64 *v6; // r8
__int64 v7; // rcx
__int64 v8; // r8
__int64 v9; // r9
__int64 v10; // rcx
__int64 v11; // r8
__int64 v12; // r9
_BYTE *v13; // rdx
_BYTE *v14; // r8
char v15; // cl
result = 0;
if ( !*((_BYTE *)a1 + 58) )
{
v2 = *((_BYTE *)a1 + 16);
if ( v2 >= 5u )
{
v3 = *a1;
v4 = a1[1];
if ( *((_BYTE *)a1 + 56) )
{
v5 = 0i64;
}
else
{
v6 = a1 + 2;
v5 = 0i64;
if ( v2 != 6 )
{
v5 = 6i64;
switch ( *(_BYTE *)v6 )
{
case 0:
case 3:
v5 = v6[2] + 4;
break;
case 1:
v7 = v6[2];
v8 = v6[4];
v9 = v8 + 1;
if ( !v8 )
v9 = 0i64;
v5 = v9 + v7 + 8;
break;
case 2:
break;
case 4:
v10 = v6[2];
v11 = v6[4];
v12 = v11 + 1;
if ( !v11 )
v12 = 0i64;
v5 = v12 + v10 + 2;
break;
case 5:
v5 = 2i64;
break;
}
if ( v4 < v5 )
sub_14001D030(v5, v4, (__int64)&off_14001F208);
}
}
if ( v5 == v4 )
{
return 0;
}
else
{
v13 = (_BYTE *)(v3 + v4);
v14 = (_BYTE *)(v3 + v5 + 1);
v15 = *(_BYTE *)(v3 + v5);
result = v14 == v13 && v15 == 46;
if ( v14 != v13 && v15 == 46 )
return *v14 == 47 || *v14 == 92;
}
}
}
return result;
}
// 14001F208: using guessed type char *off_14001F208;
//----- (00000001400070E0) ----------------------------------------------------
char __fastcall sub_1400070E0(__int64 a1, __int64 a2)
{
char v3; // bp
unsigned __int8 v4; // bl
char v6; // al
_BOOL8 v7; // rax
__int64 v8; // rcx
__int64 v9; // rax
unsigned __int64 v10; // rcx
unsigned __int64 v11; // rdx
__int64 v12; // r11
_BYTE *v13; // r8
unsigned __int8 v14; // r9
__int64 v15; // r10
__int64 v16; // rax
_BYTE *v17; // rdi
int v18; // ebx
unsigned __int64 v19; // rdx
char result; // al
__int64 v21; // rdx
__int64 v22; // r8
__int64 v23; // rdx
__int64 v24; // r8
v3 = *(_BYTE *)(a2 + 56);
v4 = 0;
v6 = v3 == 0 ? -1 : v3 != 1;
if ( v6 == -1 || !v6 )
{
v4 = *(_BYTE *)(a2 + 58);
v7 = sub_140006FC0((__int64 *)a2);
if ( !v3 )
goto LABEL_4;
LABEL_8:
v8 = 0i64;
goto LABEL_9;
}
v7 = 0i64;
if ( v3 )
goto LABEL_8;
LABEL_4:
v8 = 0i64;
if ( *(_BYTE *)(a2 + 16) != 6 )
{
v8 = 6i64;
switch ( *(_BYTE *)(a2 + 16) )
{
case 0:
case 3:
v8 = *(_QWORD *)(a2 + 32) + 4i64;
break;
case 1:
v21 = *(_QWORD *)(a2 + 48);
v22 = v21 + 1;
if ( !v21 )
v22 = 0i64;
v8 = v22 + *(_QWORD *)(a2 + 32) + 8;
break;
case 2:
break;
case 4:
v23 = *(_QWORD *)(a2 + 48);
v24 = v23 + 1;
if ( !v23 )
v24 = 0i64;
v8 = v24 + *(_QWORD *)(a2 + 32) + 2;
break;
case 5:
v8 = 2i64;
break;
}
}
LABEL_9:
v9 = v8 + v7;
v10 = v9 + v4;
v11 = *(_QWORD *)(a2 + 8);
if ( v11 < v10 )
sub_14001D030(v10, v11, (__int64)&off_14001F220);
v12 = *(_QWORD *)a2;
v13 = (_BYTE *)(*(_QWORD *)a2 + v10);
if ( v11 == v10 )
{
v14 = *(_BYTE *)(a2 + 16);
v15 = 0i64;
}
else
{
v14 = *(_BYTE *)(a2 + 16);
v16 = v4 + v9 - v11 + 1;
v17 = (_BYTE *)(v11 + v12 - 1);
v15 = 0i64;
if ( v14 >= 3u )
{
while ( 1 )
{
v18 = (unsigned __int8)*v17;
if ( v18 == 47 || v18 == 92 )
break;
++v16;
--v17;
if ( v16 == 1 )
goto LABEL_22;
}
}
else
{
while ( *v17 != 92 )
{
++v16;
--v17;
if ( v16 == 1 )
goto LABEL_22;
}
}
v10 = v10 - v16 + 1;
if ( v11 < v10 )
sub_14001D030(v10, v11, (__int64)&off_14001F238);
v15 = 1i64;
v13 = (_BYTE *)(v10 + v12);
}
LABEL_22:
v19 = v11 - v10;
if ( v19 )
{
result = 9;
if ( v19 == 2 )
{
if ( *v13 == 46 )
result = (v13[1] == 46) ^ 9;
}
else if ( v19 == 1 && *v13 == 46 )
{
result = 3 * (v14 >= 3u) + 7;
}
}
else
{
result = 10;
}
*(_QWORD *)a1 = v19 + v15;
*(_QWORD *)(a1 + 8) = v13;
*(_QWORD *)(a1 + 16) = v19;
*(_BYTE *)(a1 + 24) = result;
return result;
}
// 14000711A: conditional instruction was optimized away because al.1==0
// 14001F220: using guessed type char *off_14001F220;
// 14001F238: using guessed type char *off_14001F238;
//----- (00000001400072F0) ----------------------------------------------------
__int64 __fastcall sub_1400072F0(__int64 a1, __int64 a2)
{
unsigned __int8 v3; // r12
unsigned __int8 v5; // r15
_BYTE *v6; // rbx
unsigned int v7; // ebp
unsigned __int8 *v8; // r14
int v9; // r10d
int v10; // esi
unsigned __int8 *v11; // rbp
int v12; // r14d
int v13; // esi
_BYTE *v14; // rcx
__int64 v15; // r8
__int64 v16; // rax
unsigned __int64 v17; // rdx
__int64 v18; // rax
int v19; // ecx
__int64 v20; // rcx
char v21; // r8
unsigned __int64 v22; // rcx
unsigned __int64 v23; // r9
__int64 v24; // rcx
__int64 v25; // rdx
__int64 v26; // rcx
__int64 v27; // rdx
__int64 v28; // rax
unsigned __int64 v30; // rdx
unsigned __int64 v31; // rcx
__int64 v32; // rax
__int64 v33; // rcx
__int64 v34; // r9
__int64 v35; // rcx
__int64 v36; // r9
unsigned __int64 v37; // rax
__int64 v38; // r8
__int64 v39; // r9
__int64 v40; // r8
__int64 v41; // r9
__int128 v42; // xmm0
__int64 v43; // [rsp+20h] [rbp-48h]
v3 = *(_BYTE *)(a2 + 56);
if ( v3 == 3 || (v5 = *(_BYTE *)(a2 + 57), v5 == 3) || v3 > v5 )
{
LABEL_52:
*(_BYTE *)(a1 + 16) = 10;
return a1;
}
v6 = *(_BYTE **)a2;
v7 = *(unsigned __int8 *)(a2 + 16);
v8 = 0i64;
v9 = 3 * (v7 >= 3) + 7;
v10 = *(unsigned __int8 *)(a2 + 58);
if ( v7 != 6 )
v8 = (unsigned __int8 *)(a2 + 16);
while ( v3 )
{
if ( v3 == 1 )
{
*(_BYTE *)(a2 + 56) = 2;
if ( (_BYTE)v10 )
{
v28 = *(_QWORD *)(a2 + 8);
if ( !v28 )
sub_14001D030(1i64, 0i64, (__int64)&off_14001F298);
*(_QWORD *)a2 = v6 + 1;
*(_QWORD *)(a2 + 8) = v28 - 1;
*(_BYTE *)(a1 + 16) = 6;
return a1;
}
v3 = 2;
if ( v7 < 3 || v7 == 5 )
goto LABEL_46;
if ( v7 != 6 )
{
*(_BYTE *)(a1 + 16) = 6;
return a1;
}
v11 = v8;
v12 = v10;
v43 = a1;
v13 = v9;
if ( sub_140006FC0((__int64 *)a2) )
{
v32 = *(_QWORD *)(a2 + 8);
if ( !v32 )
sub_14001D030(1i64, 0i64, (__int64)&off_14001F2B0);
*(_QWORD *)a2 = v6 + 1;
*(_QWORD *)(a2 + 8) = v32 - 1;
a1 = v43;
*(_BYTE *)(v43 + 16) = 7;
return a1;
}
v14 = v6;
v9 = v13;
a1 = v43;
v10 = v12;
v8 = v11;
v7 = 6;
}
else
{
v17 = *(_QWORD *)(a2 + 8);
if ( !v17 )
{
*(_BYTE *)(a2 + 56) = 3;
goto LABEL_52;
}
v18 = 0i64;
if ( (unsigned __int8)v7 >= 3u )
{
while ( 1 )
{
v19 = (unsigned __int8)v6[v18];
if ( v19 == 47 || v19 == 92 )
break;
if ( v17 == ++v18 )
{
LABEL_25:
v20 = 0i64;
v18 = *(_QWORD *)(a2 + 8);
goto LABEL_28;
}
}
}
else
{
while ( v6[v18] != 92 )
{
if ( v17 == ++v18 )
goto LABEL_25;
}
}
v20 = 1i64;
if ( v18 )
{
LABEL_28:
v21 = 9;
if ( v18 == 2 )
{
if ( *v6 == 46 )
v21 = (v6[1] == 46) ^ 9;
}
else if ( v18 == 1 )
{
v21 = v9;
if ( *v6 != 46 )
v21 = 9;
}
}
else
{
v21 = 10;
}
v22 = v18 + v20;
v23 = v17 - v22;
if ( v17 < v22 )
sub_14001D030(v22, v17, (__int64)&off_14001F280);
v14 = &v6[v22];
*(_QWORD *)a2 = v14;
*(_QWORD *)(a2 + 8) = v23;
if ( v21 != 10 )
{
*(_QWORD *)a1 = v6;
*(_QWORD *)(a1 + 8) = v18;
*(_BYTE *)(a1 + 16) = v21;
return a1;
}
}
LABEL_47:
v6 = v14;
if ( v3 > v5 )
goto LABEL_52;
}
if ( (_BYTE)v7 == 6 )
{
LABEL_45:
*(_BYTE *)(a2 + 56) = 1;
v3 = 1;
LABEL_46:
v14 = v6;
goto LABEL_47;
}
v15 = *v8;
switch ( *v8 )
{
case 0u:
case 3u:
v16 = *((_QWORD *)v8 + 2) + 4i64;
goto LABEL_44;
case 1u:
v24 = *((_QWORD *)v8 + 4);
v25 = v24 + 1;
if ( !v24 )
v25 = 0i64;
v16 = v25 + *((_QWORD *)v8 + 2) + 8;
goto LABEL_44;
case 2u:
case 5u:
goto LABEL_54;
case 4u:
v26 = *((_QWORD *)v8 + 4);
v27 = v26 + 1;
if ( !v26 )
v27 = 0i64;
v16 = v27 + *((_QWORD *)v8 + 2) + 2;
LABEL_44:
if ( !v16 )
goto LABEL_45;
LABEL_54:
*(_BYTE *)(a2 + 56) = 1;
v30 = *(_QWORD *)(a2 + 8);
v31 = 6i64;
switch ( v15 )
{
case 0i64:
case 3i64:
v31 = *((_QWORD *)v8 + 2) + 4i64;
break;
case 1i64:
v33 = *((_QWORD *)v8 + 4);
v34 = v33 + 1;
if ( !v33 )
v34 = 0i64;
v31 = *((_QWORD *)v8 + 2) + v34 + 8;
break;
case 2i64:
break;
case 4i64:
v35 = *((_QWORD *)v8 + 4);
v36 = v35 + 1;
if ( !v35 )
v36 = 0i64;
v31 = *((_QWORD *)v8 + 2) + v36 + 2;
break;
case 5i64:
v31 = 2i64;
break;
}
if ( v31 > v30 )
sub_14001D040(v31, v30, (__int64)&off_14001F2C8);
v37 = 6i64;
switch ( v15 )
{
case 0i64:
case 3i64:
v37 = *((_QWORD *)v8 + 2) + 4i64;
break;
case 1i64:
v38 = *((_QWORD *)v8 + 4);
v39 = v38 + 1;
if ( !v38 )
v39 = 0i64;
v37 = v39 + *((_QWORD *)v8 + 2) + 8;
break;
case 2i64:
break;
case 4i64:
v40 = *((_QWORD *)v8 + 4);
v41 = v40 + 1;
if ( !v40 )
v41 = 0i64;
v37 = v41 + *((_QWORD *)v8 + 2) + 2;
break;
case 5i64:
v37 = 2i64;
break;
}
if ( v30 < v37 )
sub_14001D030(v37, v30, (__int64)&off_14001F2E0);
*(_QWORD *)a2 = &v6[v37];
*(_QWORD *)(a2 + 8) = v30 - v37;
*(_QWORD *)(a1 + 48) = *(_QWORD *)(a2 + 48);
v42 = *(_OWORD *)(a2 + 17);
*(_OWORD *)(a1 + 33) = *(_OWORD *)(a2 + 33);
*(_OWORD *)(a1 + 17) = v42;
*(_QWORD *)a1 = v6;
*(_QWORD *)(a1 + 8) = v31;
*(_BYTE *)(a1 + 16) = v7;
break;
}
return a1;
}
// 14000746E: conditional instruction was optimized away because rdx.8!=0
// 14000752D: conditional instruction was optimized away because r12.1 is in (1..2|>=4u)
// 14001F280: using guessed type char *off_14001F280;
// 14001F298: using guessed type char *off_14001F298;
// 14001F2B0: using guessed type char *off_14001F2B0;
// 14001F2C8: using guessed type char *off_14001F2C8;
// 14001F2E0: using guessed type char *off_14001F2E0;
//----- (0000000140007760) ----------------------------------------------------
bool __fastcall sub_140007760(unsigned __int8 *a1, unsigned __int64 a2)
{
unsigned __int64 v4; // rcx
unsigned __int64 v5; // r9
unsigned __int8 *v6; // r10
__int64 v7; // rcx
__int64 v8; // rcx
bool result; // al
__int64 v10; // rcx
__int64 v11; // rcx
char v12[16]; // [rsp+20h] [rbp-38h] BYREF
__int64 v13; // [rsp+30h] [rbp-28h]
__int64 v14; // [rsp+40h] [rbp-18h]
sub_14000BF60((__int64)v12, a1, a2);
v4 = 6i64;
v5 = a2;
v6 = a1;
switch ( a2 )
{
case 0ui64:
case 3ui64:
v4 = v13 + 4;
goto LABEL_10;
case 1ui64:
v7 = v14 + 1;
if ( !v14 )
v7 = 0i64;
v4 = v13 + v7 + 8;
goto LABEL_10;
case 2ui64:
goto LABEL_10;
case 4ui64:
v8 = v14 + 1;
if ( !v14 )
v8 = 0i64;
v4 = v13 + v8 + 2;
goto LABEL_10;
case 5ui64:
v4 = 2i64;
LABEL_10:
if ( v4 > a2 )
LABEL_28:
sub_14001D030(v4, a2, (__int64)&off_14001F1E8);
v5 = a2 - v4;
v6 = &a1[v4];
break;
case 6ui64:
break;
}
if ( v5 )
{
LOBYTE(v4) = *v6 == 92 || *v6 == 47;
if ( v12[0] < 5u )
goto LABEL_18;
}
else
{
LOBYTE(v4) = 0;
if ( v12[0] < 5u )
goto LABEL_18;
}
while ( 2 )
{
if ( !(_BYTE)v4 )
return 0;
LABEL_18:
sub_14000BF60((__int64)v12, a1, a2);
v4 = 6i64;
switch ( v12[0] )
{
case 0:
case 3:
v4 = v13 + 4;
goto LABEL_26;
case 1:
v10 = v14 + 1;
if ( !v14 )
v10 = 0i64;
v4 = v13 + v10 + 8;
goto LABEL_26;
case 2:
goto LABEL_26;
case 4:
v11 = v14 + 1;
if ( !v14 )
v11 = 0i64;
v4 = v13 + v11 + 2;
LABEL_26:
if ( v4 > a2 )
goto LABEL_28;
result = v12[0] != 6;
break;
default:
continue;
}
return result;
}
}
// 14001F1E8: using guessed type char *off_14001F1E8;
//----- (00000001400078F0) ----------------------------------------------------
_BYTE *__fastcall sub_1400078F0(unsigned __int8 *a1, unsigned __int64 a2, unsigned __int8 *a3, unsigned __int64 a4)
{
unsigned __int64 v6; // rsi
char v8; // bp
unsigned __int64 v9; // rcx
__int64 v10; // r15
unsigned __int8 *v11; // r9
__int64 v12; // rcx
__int64 v13; // rcx
char v14; // r13
unsigned __int64 v15; // rcx
unsigned __int64 v16; // r8
unsigned __int8 *v17; // r9
__int64 v18; // rcx
__int64 v19; // rdx
bool v20; // al
__int64 v21; // r8
char v22; // r15
char v23; // r12
__int64 v24; // rsi
__int64 v25; // rbx
int v27; // [rsp+28h] [rbp-190h]
char v28; // [rsp+2Ch] [rbp-18Ch]
_BYTE v29[56]; // [rsp+30h] [rbp-188h] BYREF
char v30[3]; // [rsp+68h] [rbp-150h] BYREF
int v31; // [rsp+6Bh] [rbp-14Dh]
char v32; // [rsp+6Fh] [rbp-149h]
char v33; // [rsp+78h] [rbp-140h]
__int128 v34; // [rsp+A0h] [rbp-118h]
_BYTE v35[23]; // [rsp+B0h] [rbp-108h]
__int64 v36; // [rsp+D0h] [rbp-E8h] BYREF
__int64 v37; // [rsp+D8h] [rbp-E0h]
char v38; // [rsp+E0h] [rbp-D8h]
__int128 v39; // [rsp+E1h] [rbp-D7h]
char v40[23]; // [rsp+F1h] [rbp-C7h]
char v41; // [rsp+108h] [rbp-B0h]
char v42; // [rsp+109h] [rbp-AFh]
char v43; // [rsp+10Ah] [rbp-AEh]
int v44; // [rsp+10Bh] [rbp-ADh]
char v45; // [rsp+10Fh] [rbp-A9h]
__int128 v46; // [rsp+110h] [rbp-A8h]
_BYTE v47[23]; // [rsp+120h] [rbp-98h]
__int64 v48[2]; // [rsp+138h] [rbp-80h] BYREF
__int128 v49; // [rsp+148h] [rbp-70h]
__int128 v50; // [rsp+158h] [rbp-60h]
__int64 v51; // [rsp+168h] [rbp-50h]
__int16 v52; // [rsp+170h] [rbp-48h]
bool v53; // [rsp+172h] [rbp-46h]
v6 = a2;
sub_14000BF60((__int64)v29, a1, a2);
v8 = v29[0];
v9 = 6i64;
v10 = v6;
v11 = a1;
switch ( v29[0] )
{
case 0:
case 3:
v9 = *(_QWORD *)&v29[16] + 4i64;
goto LABEL_10;
case 1:
v12 = *(_QWORD *)&v29[32] + 1i64;
if ( !*(_QWORD *)&v29[32] )
v12 = 0i64;
v9 = *(_QWORD *)&v29[16] + v12 + 8;
goto LABEL_10;
case 2:
goto LABEL_10;
case 4:
v13 = *(_QWORD *)&v29[32] + 1i64;
if ( !*(_QWORD *)&v29[32] )
v13 = 0i64;
v9 = *(_QWORD *)&v29[16] + v13 + 2;
goto LABEL_10;
case 5:
v9 = 2i64;
LABEL_10:
if ( v9 > v6 )
sub_14001D030(v9, v6, (__int64)&off_14001F1E8);
v6 -= v9;
v11 = &a1[v9];
break;
case 6:
break;
}
if ( v6 )
v14 = *v11 == 92 || *v11 == 47;
else
v14 = 0;
*(_QWORD *)&v35[15] = *(_QWORD *)&v29[32];
*(_OWORD *)v35 = *(_OWORD *)&v29[17];
v34 = *(_OWORD *)&v29[1];
sub_14000BF60((__int64)v29, a3, a4);
v15 = 6i64;
v16 = a4;
v17 = a3;
switch ( a4 )
{
case 0ui64:
case 3ui64:
JUMPOUT(0x140007A18i64);
case 1ui64:
JUMPOUT(0x140007A2Ci64);
case 2ui64:
goto LABEL_21;
case 4ui64:
v18 = *(_QWORD *)&v29[32] + 1i64;
if ( !*(_QWORD *)&v29[32] )
v18 = 0i64;
v15 = *(_QWORD *)&v29[16] + v18 + 2;
goto LABEL_21;
case 5ui64:
v15 = 2i64;
LABEL_21:
if ( v15 > a4 )
sub_14001D030(v15, a4, (__int64)&off_14001F1E8);
v16 = a4 - v15;
v17 = &a3[v15];
break;
case 6ui64:
break;
}
v19 = (__int64)a1;
if ( v16 )
v20 = *v17 == 92 || *v17 == 47;
else
v20 = 0;
v21 = v10;
v48[0] = (__int64)a3;
v48[1] = a4;
v49 = *(_OWORD *)v29;
v50 = *(_OWORD *)&v29[16];
v51 = *(_QWORD *)&v29[32];
v53 = v20;
v52 = 512;
v22 = 2;
v23 = 0;
if ( v8 != 6 )
{
LABEL_27:
*(_QWORD *)&v29[31] = *(_QWORD *)&v35[15];
*(_OWORD *)&v29[16] = *(_OWORD *)v35;
*(_OWORD *)v29 = v34;
}
while ( 1 )
{
v24 = v19;
v36 = v19;
v25 = v21;
v37 = v21;
v38 = v8;
*(_QWORD *)&v40[15] = *(_QWORD *)&v29[31];
*(_OWORD *)v40 = *(_OWORD *)&v29[16];
v39 = *(_OWORD *)v29;
v43 = v14;
v41 = v23;
v42 = v22;
sub_1400072F0((__int64)v29, (__int64)&v36);
sub_1400072F0((__int64)v30, (__int64)v48);
if ( v29[16] == 10 )
break;
if ( v33 == 10 )
goto LABEL_34;
if ( !sub_14000B830((__int64)v29, (__int64)v30) )
return 0i64;
v19 = v36;
v21 = v37;
v8 = v38;
v34 = v39;
*(_OWORD *)v35 = *(_OWORD *)v40;
*(_QWORD *)&v35[15] = *(_QWORD *)&v40[15];
v23 = v41;
v22 = v42;
v14 = v43;
v28 = v45;
v27 = v44;
if ( v38 != 6 )
goto LABEL_27;
}
if ( v33 != 10 )
return 0i64;
LABEL_34:
*(_QWORD *)&v47[15] = *(_QWORD *)&v35[15];
*(_OWORD *)v47 = *(_OWORD *)v35;
v46 = v34;
if ( v14 == 2 )
return 0i64;
*(_QWORD *)v29 = v24;
*(_QWORD *)&v29[8] = v25;
v29[16] = v8;
*(_OWORD *)&v29[17] = v46;
*(_OWORD *)&v29[33] = *(_OWORD *)v47;
*(_QWORD *)&v29[48] = *(_QWORD *)&v47[15];
v30[0] = v23;
v30[1] = v22;
v30[2] = v14;
v31 = v27;
v32 = v28;
return sub_140006A10((__int64)v29);
}
// 140007A28: control flows out of bounds to 140007A2C
// 140007A15: control flows out of bounds to 140007A18
// 140007CC2: variable 'v27' is possibly undefined
// 140007CCB: variable 'v28' is possibly undefined
// 14001F1E8: using guessed type char *off_14001F1E8;
//----- (0000000140007D50) ----------------------------------------------------
__int64 __fastcall sub_140007D50(_BYTE **a1)
{
bool v1; // zf
int v2; // eax
__int64 result; // rax
char v4; // [rsp+57h] [rbp-9h] BYREF
__int64 v5; // [rsp+58h] [rbp-8h]
v5 = -2i64;
v1 = **a1 == 0;
**a1 = 0;
if ( v1 )
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806f23a12"
"7002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_14001F340);
v4 = 0;
if ( qword_140027178 == 3 || (sub_14001C2D0((__int64)&v4), !v4) )
{
if ( qword_140027140 == *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 32i64 )
{
v2 = dword_140027170 + 1;
if ( dword_140027170 == -1 )
sub_14001CB40(
(__int64)"lock count overflow in reentrant mutexlibrary\\std\\src\\sync\\remutex.rs",
38i64,
(__int64)&off_14001F420);
}
else
{
if ( !TryAcquireSRWLockExclusive(&SRWLock) )
goto LABEL_12;
qword_140027140 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 32i64;
v2 = 1;
}
dword_140027170 = v2;
if ( !qword_140027148 )
{
qword_140027148 = -1i64;
JUMPOUT(0x140007E59i64);
}
JUMPOUT(0x140007EF1i64);
}
LABEL_12:
result = qword_1400271E8;
if ( qword_1400271E8 == 3 )
return qword_1400271F0();
return result;
}
// 140007E4E: control flows out of bounds to 140007E59
// 140007E48: control flows out of bounds to 140007EF1
// 140007D8A: conditional instruction was optimized away because %var_9.1==0
// 14001F340: using guessed type char *off_14001F340;
// 14001F420: using guessed type void *off_14001F420;
// 140027140: using guessed type __int64 qword_140027140;
// 140027148: using guessed type __int64 qword_140027148;
// 140027170: using guessed type int dword_140027170;
// 140027178: using guessed type __int64 qword_140027178;
// 1400271E8: using guessed type __int64 qword_1400271E8;
// 1400271F0: using guessed type __int64 (*qword_1400271F0)(void);
// 140027270: using guessed type int TlsIndex;
//----- (0000000140007FB0) ----------------------------------------------------
__int64 __fastcall sub_140007FB0(__int64 *a1)
{
_QWORD *ThreadLocalStoragePointer; // rcx
__int64 result; // rax
__int64 v4; // rdi
__int64 v5; // rdx
__int64 v6; // r8
volatile signed __int64 *v7; // rcx
bool v8; // zf
ThreadLocalStoragePointer = NtCurrentTeb()->ThreadLocalStoragePointer;
if ( *(_BYTE *)(ThreadLocalStoragePointer[TlsIndex] + 24i64) )
{
if ( *(_BYTE *)(ThreadLocalStoragePointer[TlsIndex] + 24i64) != 1 )
return 0i64;
}
else
{
v4 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
sub_14000CA80(v4 + 8, (__int64)sub_1400080A0);
*(_BYTE *)(v4 + 24) = 1;
}
if ( a1 )
{
v5 = *a1;
*a1 = 0i64;
if ( v5 )
v5 = a1[1];
}
else
{
v5 = 0i64;
}
v6 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
v7 = *(volatile signed __int64 **)(v6 + 16);
result = v6 + 16;
v8 = *(_QWORD *)(v6 + 8) == 0i64;
*(_QWORD *)(v6 + 8) = 1i64;
*(_QWORD *)(v6 + 16) = v5;
if ( !v8 && v7 )
{
if ( !_InterlockedDecrement64(v7) )
sub_140002D80((__int64)v7);
return *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 16i64;
}
return result;
}
// 140027270: using guessed type int TlsIndex;
//----- (00000001400080A0) ----------------------------------------------------
__int64 __fastcall sub_1400080A0(__int64 a1)
{
__int64 result; // rax
volatile signed __int64 *v2; // rcx
bool v3; // zf
result = a1;
v2 = *(volatile signed __int64 **)(a1 + 8);
v3 = *(_QWORD *)result == 0i64;
*(_QWORD *)result = 0i64;
*(_BYTE *)(result + 16) = 2;
if ( !v3 && v2 && !_InterlockedDecrement64(v2) )
return sub_140002D80((__int64)v2);
return result;
}
//----- (00000001400080D0) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void sub_1400080D0()
{
AcquireSRWLockExclusive(&stru_140027188);
if ( 2 * qword_1400271C0 )
sub_14001C340();
JUMPOUT(0x140008162i64);
}
// 14000819C: positive sp value 98 has been found
// 14000815A: control flows out of bounds to 140008162
// 1400271C0: using guessed type __int64 qword_1400271C0;
//----- (00000001400081F0) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void __fastcall sub_1400081F0(
char *a1,
__int64 a2,
__int64 a3,
__int64 a4,
__int64 a5,
__int64 a6,
__int64 a7,
__int64 a8,
int a9)
{
char v9; // si
__int64 v10; // [rsp-768h] [rbp-7E8h] BYREF
__int128 v11; // [rsp+50h] [rbp-30h]
char **v12; // [rsp+60h] [rbp-20h]
__int64 v13; // [rsp+68h] [rbp-18h]
const char *v14; // [rsp+70h] [rbp-10h]
__int64 v15; // [rsp+78h] [rbp-8h]
__int128 v16; // [rsp+550h] [rbp+4D0h]
char **v17; // [rsp+560h] [rbp+4E0h]
__int128 v18; // [rsp+6C0h] [rbp+640h]
char **v19; // [rsp+6D0h] [rbp+650h]
char v20; // [rsp+6D8h] [rbp+658h]
char v21[7]; // [rsp+6D9h] [rbp+659h]
char v22; // [rsp+6E0h] [rbp+660h]
_DWORD v23[2]; // [rsp+6F8h] [rbp+678h]
__int64 v24; // [rsp+708h] [rbp+688h]
__int64 v25; // [rsp+710h] [rbp+690h]
char v26; // [rsp+71Fh] [rbp+69Fh]
__int64 v27; // [rsp+720h] [rbp+6A0h]
v27 = -2i64;
v9 = *a1;
v26 = *a1;
sub_140003DE0((__int64)(&v10 + 10));
if ( (_BYTE)v13 == 2 )
{
if ( (v11 & 3) == 1 )
{
v24 = v11 - 1;
v25 = v11;
JUMPOUT(0x140008261i64);
}
}
else
{
v17 = v12;
v16 = v11;
v23[0] = *(_DWORD *)((char *)&v13 + 1);
*(_DWORD *)((char *)v23 + 3) = HIDWORD(v13);
}
v22 = v9;
v18 = v16;
v19 = v17;
v20 = v13;
*(_DWORD *)v21 = v23[0];
*(_DWORD *)&v21[3] = *(_DWORD *)((char *)v23 + 3);
v12 = &off_14001F450;
v13 = 1i64;
*(_QWORD *)&v11 = 0i64;
v14 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v15 = 0i64;
JUMPOUT(0x14000833Di64);
}
// 1400086A8: positive sp value 768 has been found
// 14000825D: control flows out of bounds to 140008261
// 140008335: control flows out of bounds to 14000833D
// 14001F450: using guessed type char *off_14001F450;
// 1400081F0: using guessed type _DWORD var_68[2];
//----- (0000000140008990) ----------------------------------------------------
__int64 __fastcall sub_140008990(__int64 a1, __int64 *a2, __int64 a3)
{
return sub_140008DF0(a2, a3, *(_BYTE *)(a1 + 32));
}
//----- (00000001400089B0) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void __fastcall sub_1400089B0(__int64 a1, __int64 a2)
{
_BYTE *v2; // rax
_BYTE *v3; // r15
__int64 v4; // rbx
__int64 v5; // r14
__int64 v6[12]; // [rsp+58h] [rbp-28h] BYREF
char v7; // [rsp+BEh] [rbp+3Eh] BYREF
char v8; // [rsp+BFh] [rbp+3Fh] BYREF
__int64 v9; // [rsp+C0h] [rbp+40h]
v9 = -2i64;
v2 = *(_BYTE **)a1;
if ( !**(_BYTE **)a1 && **(_QWORD **)(a1 + 8) > 0x64ui64 )
goto LABEL_9;
v8 = 0;
v7 = 0;
v3 = *(_BYTE **)(a1 + 16);
v4 = *(_QWORD *)(a1 + 24);
v5 = *(_QWORD *)(a1 + 32);
v6[0] = (__int64)&v8;
v6[1] = (__int64)v2;
v6[2] = (__int64)v3;
v6[3] = (__int64)&v7;
v6[4] = v4;
v6[5] = v5;
v6[6] = a2;
sub_14000DE70(a2, (__int64)v6, (__int64)&off_14001FB38);
if ( v7 )
LABEL_9:
JUMPOUT(0x140008AA0i64);
if ( !v8 && *v3 )
{
v6[10] = 0i64;
v6[11] = v5;
v6[0] = 3i64;
JUMPOUT(0x140008A68i64);
}
JUMPOUT(0x140008A93i64);
}
// 140008AAF: positive sp value 28 has been found
// 140008A60: control flows out of bounds to 140008A68
// 140008A3A: control flows out of bounds to 140008AA0
// 140008A40: control flows out of bounds to 140008A93
// 14001FB38: using guessed type __int64 (__fastcall *off_14001FB38)();
//----- (0000000140008AE0) ----------------------------------------------------
_BYTE *__fastcall sub_140008AE0(__int64 a1, __int64 *a2)
{
_BYTE *result; // rax
__int64 v4; // rbx
unsigned __int64 v5; // r14
__int64 v6; // r15
__int64 v7; // rax
unsigned __int64 v8; // rdx
char *v9; // rbx
unsigned __int64 v10; // r14
_BYTE *v11; // r15
__int128 v12; // [rsp+50h] [rbp-30h] BYREF
__int128 v13; // [rsp+60h] [rbp-20h]
__int128 v14; // [rsp+70h] [rbp-10h]
__int64 v15; // [rsp+80h] [rbp+0h]
__int64 v16; // [rsp+88h] [rbp+8h] BYREF
__int128 v17; // [rsp+90h] [rbp+10h]
__int128 v18; // [rsp+A0h] [rbp+20h]
__int128 v19; // [rsp+B0h] [rbp+30h]
__int64 v20; // [rsp+C0h] [rbp+40h]
__int64 v21; // [rsp+C8h] [rbp+48h]
unsigned __int64 v22; // [rsp+D0h] [rbp+50h]
__int64 v23; // [rsp+D8h] [rbp+58h]
v23 = -2i64;
**(_BYTE **)a1 = 1;
if ( **(_BYTE **)(a1 + 8) )
goto LABEL_2;
v4 = *a2;
v5 = a2[1];
sub_140018DE0((__int64)&v16, *a2, v5);
v6 = 2i64;
if ( !v16 )
{
if ( (_QWORD)v17 )
{
sub_1400154F0((__int128 *)&v16, v17, *((__int64 *)&v17 + 1));
if ( v16 != 2 )
{
v15 = v20;
v14 = v19;
v13 = v18;
v12 = v17;
v6 = v16;
}
}
}
v20 = v15;
v19 = v14;
v18 = v13;
v17 = v12;
v16 = v6;
v21 = v4;
v22 = v5;
if ( v6 != 2 )
{
v7 = sub_140015540((__int64)&v16);
if ( v7 )
{
v9 = (char *)v7;
v10 = v8;
v11 = *(_BYTE **)(a1 + 16);
if ( !*v11 )
goto LABEL_19;
goto LABEL_17;
}
v4 = v21;
v5 = v22;
}
sub_140018DE0((__int64)&v12, v4, v5);
if ( (_QWORD)v12 )
goto LABEL_2;
v9 = (char *)*((_QWORD *)&v12 + 1);
if ( !*((_QWORD *)&v12 + 1) )
goto LABEL_2;
v10 = v13;
v11 = *(_BYTE **)(a1 + 16);
if ( *v11 )
{
LABEL_17:
if ( (unsigned __int8)sub_140002500(
"__rust_begin_short_backtrace__rust_end_short_backtrace<unknown>",
0x1Cui64,
v9,
v10) )
{
result = *(_BYTE **)(a1 + 24);
*result = 1;
return result;
}
}
LABEL_19:
result = (_BYTE *)sub_140002500("__rust_end_short_backtrace<unknown>", 0x1Aui64, v9, v10);
if ( (_BYTE)result )
{
*v11 = 1;
return result;
}
LABEL_2:
result = *(_BYTE **)(a1 + 16);
if ( *result )
JUMPOUT(0x140008B46i64);
return result;
}
// 140008B42: control flows out of bounds to 140008B46
// 140008C4E: variable 'v8' is possibly undefined
//----- (0000000140008DE0) ----------------------------------------------------
void __fastcall __noreturn sub_140008DE0(__int64 *a1)
{
sub_14000A840(a1);
BUG();
}
//----- (0000000140008DF0) ----------------------------------------------------
__int64 __fastcall sub_140008DF0(__int64 *a1, __int64 a2, char a3)
{
char v5; // r13
__int64 v6; // rdi
unsigned __int64 v7; // rbx
char *v8; // rax
__int64 v9; // rcx
unsigned int v10; // eax
unsigned int v11; // ebx
__int64 v13[3]; // [rsp+50h] [rbp-30h] BYREF
__int128 v14; // [rsp+80h] [rbp+0h] BYREF
unsigned __int64 v15; // [rsp+90h] [rbp+10h]
char v16; // [rsp+98h] [rbp+18h]
__int64 v17; // [rsp+A0h] [rbp+20h]
v17 = -2i64;
if ( *(_QWORD *)a2 )
{
sub_1400066C0(&v14, *(unsigned __int16 **)(a2 + 8), *(_QWORD *)(a2 + 16));
v5 = v16;
if ( a3 )
goto LABEL_3;
LABEL_9:
JUMPOUT(0x140008EACi64);
}
sub_140018DE0((__int64)v13, *(_QWORD *)(a2 + 8), *(_QWORD *)(a2 + 16));
v8 = "<unknown>";
if ( !v13[0] )
v8 = (char *)v13[1];
v9 = 9i64;
if ( !v13[0] )
v9 = v13[2];
*(_QWORD *)&v14 = v8;
*((_QWORD *)&v14 + 1) = v9;
v16 = 2;
v5 = 2;
if ( !a3 )
goto LABEL_9;
LABEL_3:
v6 = *((_QWORD *)&v14 + 1);
v7 = v15;
if ( v5 == 2 )
v7 = *((_QWORD *)&v14 + 1);
LOBYTE(v10) = sub_1400095B0(*((_QWORD *)&v14 + (v5 != 2)), v7, a1);
v11 = v10;
if ( v5 != 2 && (_QWORD)v14 )
sub_1400010E0(v6, v14, 1i64);
return v11;
}
// 140008EA8: control flows out of bounds to 140008EAC
// 140008FA5: variable 'v10' is possibly undefined
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140009090) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
volatile signed __int64 *sub_140009090()
{
int v0; // eax
__int64 v1; // rsi
__int64 v2; // rax
volatile signed __int64 *result; // rax
__int64 v4; // rcx
char v5[8]; // [rsp+28h] [rbp-8h] BYREF
__int64 v6; // [rsp+30h] [rbp+0h]
v6 = -2i64;
v0 = *(unsigned __int8 *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 80i64);
if ( v0 != 1 )
{
if ( v0 )
return 0i64;
v1 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
sub_14000CA80(v1 + 64, (__int64)qword_14000DCB0);
*(_BYTE *)(v1 + 80) = 1;
}
if ( *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 64i64) )
sub_14001CF90(
(__int64)"already borrowedlibrary\\std\\src\\io\\stdio.rs",
16i64,
(__int64)v5,
(__int64)&off_14001E650,
(__int64)&off_14001F580);
v2 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
*(_QWORD *)(v2 + 64) = -1i64;
result = *(volatile signed __int64 **)(v2 + 72);
if ( !result )
JUMPOUT(0x14000913Ei64);
if ( _InterlockedIncrement64(result) <= 0 )
BUG();
v4 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
++*(_QWORD *)(v4 + 64);
return result;
}
// 140009140: positive sp value 48 has been found
// 14000913C: control flows out of bounds to 14000913E
// 14000DCB0: using guessed type __int64 qword_14000DCB0[6];
// 14001E650: using guessed type __int64 (__fastcall *off_14001E650)();
// 14001F580: using guessed type char *off_14001F580;
// 140027270: using guessed type int TlsIndex;
// 140009090: using guessed type char var_18[8];
//----- (0000000140009200) ----------------------------------------------------
__int64 __fastcall sub_140009200(volatile signed __int64 *a1)
{
int v1; // eax
__int64 v2; // rax
__int64 result; // rax
__int64 v4[9]; // [rsp+58h] [rbp-28h] BYREF
int v5; // [rsp+A0h] [rbp+20h]
char v6; // [rsp+A4h] [rbp+24h]
volatile signed __int64 *v7; // [rsp+A8h] [rbp+28h]
char v8; // [rsp+B7h] [rbp+37h]
__int64 v9; // [rsp+B8h] [rbp+38h]
v9 = -2i64;
v1 = *(unsigned __int8 *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 80i64);
if ( v1 != 1 )
{
v7 = a1;
if ( !v1 )
{
v8 = 1;
JUMPOUT(0x140009261i64);
}
if ( !_InterlockedDecrement64(v7) )
sub_140002DF0((__int64)v7);
sub_14001CF90((__int64)&unk_14001E9CB, 70i64, (__int64)v4, (__int64)&off_14001E670, (__int64)&off_14001EA30);
}
v4[8] = (__int64)a1;
if ( *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 64i64) )
JUMPOUT(0x140009302i64);
v2 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
*(_QWORD *)(v2 + 64) = -1i64;
if ( *(_QWORD *)(v2 + 72) )
{
v7 = a1;
v6 = 0;
v5 = 0;
v4[2] = (__int64)&off_14001F5D8;
v4[3] = 1i64;
v4[0] = 0i64;
v4[4] = (__int64)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v4[5] = 0i64;
v4[6] = (__int64)v4;
v4[7] = (__int64)sub_140017290;
JUMPOUT(0x1400093ABi64);
}
result = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
*(_QWORD *)(result + 72) = a1;
*(_QWORD *)(result + 64) = 0i64;
return result;
}
// 14000925A: control flows out of bounds to 140009261
// 1400093A3: control flows out of bounds to 1400093AB
// 1400092AA: control flows out of bounds to 140009302
// 14001E670: using guessed type __int64 (__fastcall *off_14001E670)();
// 14001EA30: using guessed type void *off_14001EA30;
// 14001F5D8: using guessed type char *off_14001F5D8;
// 140027270: using guessed type int TlsIndex;
//----- (00000001400094B0) ----------------------------------------------------
void *__fastcall sub_1400094B0(__int64 *a1, unsigned int a2)
{
size_t v3; // rdi
__int64 v4; // rbx
void *result; // rax
int Src; // [rsp+2Ch] [rbp-1Ch] BYREF
Src = 0;
if ( a2 >= 0x80 )
{
if ( a2 >= 0x800 )
{
if ( a2 > 0xFFFF )
{
LOBYTE(Src) = (a2 >> 18) & 7 | 0xF0;
BYTE1(Src) = (a2 >> 12) & 0x3F | 0x80;
BYTE2(Src) = (a2 >> 6) & 0x3F | 0x80;
HIBYTE(Src) = a2 & 0x3F | 0x80;
v3 = 4i64;
}
else
{
LOBYTE(Src) = (a2 >> 12) | 0xE0;
BYTE1(Src) = (a2 >> 6) & 0x3F | 0x80;
BYTE2(Src) = a2 & 0x3F | 0x80;
v3 = 3i64;
}
}
else
{
LOBYTE(Src) = (a2 >> 6) | 0xC0;
BYTE1(Src) = a2 & 0x3F | 0x80;
v3 = 2i64;
}
}
else
{
LOBYTE(Src) = a2;
v3 = 1i64;
}
v4 = a1[2];
if ( *a1 - v4 < v3 )
{
sub_14001C0D0(a1, a1[2], v3);
v4 = a1[2];
}
result = memcpy((void *)(v4 + a1[1]), &Src, v3);
a1[2] = v3 + v4;
return result;
}
//----- (00000001400095B0) ----------------------------------------------------
char __fastcall sub_1400095B0(__int64 a1, unsigned __int64 a2, __int64 *a3)
{
char *v6; // r12
unsigned __int64 v7; // rcx
unsigned __int64 v8; // r14
char *v9; // r8
char *v10; // r8
char *v11; // rax
__int64 v12; // r9
char v13; // r10
char *v14; // r8
unsigned __int64 v15; // r14
unsigned __int64 v16; // rsi
unsigned __int8 *v17; // rbx
v6 = (char *)(a1 + a2);
v7 = 0i64;
while ( v7 != a2 )
{
v8 = v7;
v9 = (char *)(a1 + v7);
while ( 1 )
{
v11 = v9 + 1;
v13 = *v9;
v12 = 1i64;
if ( *v9 < 0 )
break;
LABEL_7:
v8 += v12;
v9 = v11;
if ( v11 == v6 )
goto LABEL_26;
}
if ( (unsigned __int8)v13 < 0xE0u )
{
v10 = v9 + 2;
if ( v11 != v6 )
v11 = v10;
v12 = 2i64;
goto LABEL_7;
}
if ( v13 != -19 )
{
v14 = v9 + 2;
if ( v11 == v6 )
v14 = v11;
v11 = &v14[v14 != v6];
v12 = 3i64;
if ( (unsigned __int8)v13 >= 0xF0u )
{
v11 += v11 != v6;
v12 = 4i64;
}
goto LABEL_7;
}
if ( v11 == v6 || v9 + 2 == v6 )
goto LABEL_26;
if ( (unsigned __int8)v9[1] <= 0x9Fu )
{
v12 = 3i64;
v11 = v9 + 3;
goto LABEL_7;
}
if ( v8 < v7 )
sub_14001D050(v7, v8, (__int64)&off_14001F610);
if ( v8 > a2 )
sub_14001D040(v8, a2, (__int64)&off_14001F610);
if ( (unsigned __int8)sub_140017BE0(a3) || (unsigned __int8)sub_140017BE0(a3) )
return 1;
v15 = v8 + 3;
v7 = v15;
if ( v15 > a2 )
sub_14001D030(v15, a2, (__int64)&off_14001F630);
}
v7 = a2;
LABEL_26:
v16 = a2 - v7;
v17 = (unsigned __int8 *)(v7 + a1);
if ( v7 )
return sub_140017BE0(a3);
else
return sub_1400183F0(v17, v16, a3);
}
// 14001F610: using guessed type char *off_14001F610;
// 14001F630: using guessed type char *off_14001F630;
//----- (0000000140009770) ----------------------------------------------------
void __fastcall sub_140009770(__int64 a1)
{
__int64 v1; // rax
__int64 v2; // [rsp+20h] [rbp-60h] BYREF
char **v3; // [rsp+30h] [rbp-50h]
__int64 v4; // [rsp+38h] [rbp-48h]
__int64 **v5; // [rsp+40h] [rbp-40h]
__int64 v6; // [rsp+48h] [rbp-38h]
__int64 *v7; // [rsp+50h] [rbp-30h] BYREF
__int64 (__fastcall *v8)(unsigned __int64 *, __int64); // [rsp+58h] [rbp-28h]
__int64 v9; // [rsp+60h] [rbp-20h]
__int64 v10; // [rsp+68h] [rbp-18h]
__int64 v11; // [rsp+70h] [rbp-10h] BYREF
int v12; // [rsp+78h] [rbp-8h]
char v13; // [rsp+7Ch] [rbp-4h]
__int64 v14; // [rsp+80h] [rbp+0h]
v14 = -2i64;
if ( byte_140027120 )
{
v11 = a1;
v7 = &v11;
v8 = sub_14001AD00;
v3 = &off_14001F670;
v4 = 2i64;
v2 = 0i64;
v5 = &v7;
v6 = 1i64;
sub_14001CBB0((__int64)&v2, (__int64)&off_14001F6A8);
}
v13 = 0;
v12 = 0;
v11 = a1;
v7 = &v11;
v8 = sub_14001AD00;
v3 = &off_14001F6D0;
v4 = 2i64;
v2 = 0i64;
v5 = &v7;
v6 = 1i64;
sub_140006220();
if ( v1 && (v1 & 3) == 1 )
{
v9 = v1 - 1;
v10 = v1;
JUMPOUT(0x140009815i64);
}
}
// 140009811: control flows out of bounds to 140009815
// 1400097F3: variable 'v1' is possibly undefined
// 14001F670: using guessed type char *off_14001F670;
// 14001F6A8: using guessed type void *off_14001F6A8;
// 14001F6D0: using guessed type char *off_14001F6D0;
// 140027120: using guessed type char byte_140027120;
//----- (00000001400098F0) ----------------------------------------------------
char *__fastcall sub_1400098F0(SIZE_T a1, unsigned __int64 a2)
{
HANDLE v4; // rcx
HANDLE ProcessHeap; // rax
char *v7; // rbx
unsigned __int64 v8; // rax
unsigned __int64 v9; // rsi
v4 = hHeap;
if ( hHeap )
{
if ( a2 < 0x11 )
return (char *)HeapAlloc(v4, 0, a1);
goto LABEL_6;
}
ProcessHeap = GetProcessHeap();
if ( ProcessHeap )
{
v4 = ProcessHeap;
hHeap = ProcessHeap;
if ( a2 < 0x11 )
return (char *)HeapAlloc(v4, 0, a1);
LABEL_6:
v7 = 0i64;
v8 = (unsigned __int64)HeapAlloc(v4, 0, a2 + a1);
if ( v8 )
{
v9 = a2 - (v8 & (a2 - 1));
v7 = (char *)(v9 + v8);
*(_QWORD *)(v8 + v9 - 8) = v8;
}
return v7;
}
return 0i64;
}
//----- (0000000140009980) ----------------------------------------------------
BOOL __fastcall sub_140009980(void *a1, __int64 a2, unsigned __int64 a3)
{
void *v3; // rax
v3 = a1;
if ( a3 >= 0x11 )
v3 = (void *)*((_QWORD *)a1 - 1);
return HeapFree(hHeap, 0, v3);
}
//----- (00000001400099A0) ----------------------------------------------------
char *__fastcall sub_1400099A0(void *Src, size_t Size, unsigned __int64 a3, SIZE_T a4)
{
size_t v4; // rsi
HANDLE v9; // rcx
HANDLE ProcessHeap; // rax
char *v11; // r15
unsigned __int64 v12; // rax
unsigned __int64 v13; // r14
v4 = a4;
if ( a3 < 0x11 )
return (char *)HeapReAlloc(hHeap, 0, Src, a4);
v9 = hHeap;
if ( hHeap )
goto LABEL_6;
ProcessHeap = GetProcessHeap();
if ( ProcessHeap )
{
v9 = ProcessHeap;
hHeap = ProcessHeap;
LABEL_6:
v11 = 0i64;
v12 = (unsigned __int64)HeapAlloc(v9, 0, v4 + a3);
if ( v12 )
{
v13 = a3 - (v12 & (a3 - 1));
v11 = (char *)(v13 + v12);
*(_QWORD *)(v12 + v13 - 8) = v12;
if ( Size < v4 )
v4 = Size;
memcpy((void *)(v13 + v12), Src, v4);
HeapFree(hHeap, 0, *((LPVOID *)Src - 1));
}
return v11;
}
return 0i64;
}
//----- (0000000140009A70) ----------------------------------------------------
void sub_140009A70()
{
_QWORD v0[17]; // [rsp+28h] [rbp-80h] BYREF
__int64 v1[2]; // [rsp+B0h] [rbp+8h] BYREF
int v2; // [rsp+D0h] [rbp+28h]
char v3; // [rsp+D4h] [rbp+2Ch]
__int64 v4; // [rsp+D8h] [rbp+30h]
v4 = -2i64;
v3 = 0;
v2 = 0;
v0[7] = &off_14001F710;
v0[8] = 1i64;
v0[5] = 0i64;
v0[9] = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v0[10] = 0i64;
v1[0] = (__int64)&v0[5];
v1[1] = (__int64)sub_140017290;
v0[13] = &off_14001E8D0;
v0[14] = 2i64;
v0[11] = 0i64;
v0[15] = v1;
v0[16] = 1i64;
JUMPOUT(0x140009B00i64);
}
// 140009AF8: control flows out of bounds to 140009B00
// 14001E8D0: using guessed type void *off_14001E8D0;
// 14001F710: using guessed type char *off_14001F710;
//----- (0000000140009BE0) ----------------------------------------------------
void sub_140009BE0()
{
_QWORD v0[17]; // [rsp+28h] [rbp-80h] BYREF
__int64 v1[2]; // [rsp+B0h] [rbp+8h] BYREF
int v2; // [rsp+D0h] [rbp+28h]
char v3; // [rsp+D4h] [rbp+2Ch]
__int64 v4; // [rsp+D8h] [rbp+30h]
v4 = -2i64;
v3 = 0;
v2 = 0;
v0[7] = &off_14001F748;
v0[8] = 1i64;
v0[5] = 0i64;
v0[9] = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v0[10] = 0i64;
v1[0] = (__int64)&v0[5];
v1[1] = (__int64)sub_140017290;
v0[13] = &off_14001E8D0;
v0[14] = 2i64;
v0[11] = 0i64;
v0[15] = v1;
v0[16] = 1i64;
JUMPOUT(0x140009C70i64);
}
// 140009C68: control flows out of bounds to 140009C70
// 14001E8D0: using guessed type void *off_14001E8D0;
// 14001F748: using guessed type char *off_14001F748;
//----- (0000000140009D50) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void __fastcall sub_140009D50(__int64 a1)
{
__int64 v2; // rdi
__int64 v3; // rdx
__int64 v4; // rax
__int64 v5; // rsi
__int64 v6; // rdx
__int64 v7; // rax
RTL_SRWLOCK **v8; // rax
RTL_SRWLOCK *v9; // rsi
if ( *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 88i64) <= 1ui64 )
sub_140006930();
if ( sub_140016840(a1) )
{
v2 = sub_140016820(a1);
v4 = (*(__int64 (__fastcall **)(__int64))(v3 + 24))(v2);
if ( !v2 || v4 != 0xC1A2C89CCD1E7BC1ui64 )
{
v5 = sub_140016820(a1);
(*(void (__fastcall **)(__int64))(v6 + 24))(v5);
}
sub_140009090();
if ( byte_140027130 )
{
byte_140027130 = 1;
v7 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
if ( !*(_QWORD *)(v7 + 8) )
JUMPOUT(0x140009EB1i64);
v8 = (RTL_SRWLOCK **)(v7 + 16);
v9 = *v8;
*v8 = 0i64;
if ( v9 )
{
AcquireSRWLockExclusive(v9 + 2);
if ( 2 * qword_1400271C0 )
sub_14001C340();
JUMPOUT(0x140009F0Ci64);
}
}
JUMPOUT(0x140009F8Ci64);
}
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806f23a1270"
"02de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_14001F830);
}
// 140009FC3: positive sp value D8 has been found
// 140009F08: control flows out of bounds to 140009F0C
// 140009F88: control flows out of bounds to 140009F8C
// 140009EA6: control flows out of bounds to 140009EB1
// 140009DB8: variable 'v3' is possibly undefined
// 140009DE6: variable 'v6' is possibly undefined
// 14001F830: using guessed type void *off_14001F830;
// 140027130: using guessed type char byte_140027130;
// 1400271C0: using guessed type __int64 qword_1400271C0;
// 140027270: using guessed type int TlsIndex;
//----- (000000014000A220) ----------------------------------------------------
void __fastcall sub_14000A220(__int64 a1, __int64 a2, __int64 a3)
{
__int64 v5; // rax
char **v6; // rcx
const char *v7; // rdx
__int64 (__fastcall *v8)(__int64, __int64 *); // r14
__int64 v9; // rax
__int64 v10; // rax
__int64 v11; // rax
char v12; // al
__int64 v13; // rax
__int64 v14; // rax
_QWORD v15[10]; // [rsp+0h] [rbp-80h] BYREF
__int64 v16[2]; // [rsp+50h] [rbp-30h] BYREF
char **v17; // [rsp+60h] [rbp-20h]
__int64 v18; // [rsp+68h] [rbp-18h]
const char *v19; // [rsp+70h] [rbp-10h]
bool (__fastcall *v20)(__int64 *, __int64 *); // [rsp+78h] [rbp-8h]
__int64 v21; // [rsp+80h] [rbp+0h]
__int64 v22; // [rsp+88h] [rbp+8h]
__int64 v23; // [rsp+90h] [rbp+10h]
v23 = -2i64;
v5 = *(_QWORD *)a1;
v6 = *(char ***)(a1 + 8);
v7 = *(const char **)(a1 + 16);
v16[0] = v5;
v16[1] = (__int64)sub_140001210;
v17 = v6;
v18 = (__int64)sub_140001210;
v19 = v7;
v20 = sub_140001230;
v15[6] = &off_14001F868;
v15[7] = 4i64;
v15[4] = 0i64;
v15[8] = &v15[10];
v15[9] = 3i64;
v8 = *(__int64 (__fastcall **)(__int64, __int64 *))(a3 + 72);
v9 = v8(a2, &v15[4]);
if ( v9 && (v9 & 3) == 1 )
{
v22 = v9 - 1;
v21 = v9;
JUMPOUT(0x14000A2D7i64);
}
v10 = **(unsigned __int8 **)(a1 + 24);
if ( v10 != 3 )
{
if ( (_DWORD)v10 == 2 )
{
v12 = byte_140027000;
byte_140027000 = 0;
if ( v12 )
{
v17 = &off_14001F8F8;
v18 = 1i64;
v16[0] = 0i64;
v19 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v20 = 0i64;
v13 = v8(a2, v16);
if ( v13 )
{
if ( (v13 & 3) == 1 )
{
v22 = v13 - 1;
v21 = v13;
JUMPOUT(0x14000A3E3i64);
}
}
}
}
else if ( (_DWORD)v10 == 1 )
{
sub_1400080D0();
if ( v11 && (v11 & 3) == 1 )
{
v22 = v11 - 1;
v21 = v11;
JUMPOUT(0x14000A367i64);
}
}
else
{
sub_1400080D0();
if ( v14 && (v14 & 3) == 1 )
{
v22 = v14 - 1;
v21 = v14;
JUMPOUT(0x14000A414i64);
}
}
}
}
// 14000A2D3: control flows out of bounds to 14000A2D7
// 14000A363: control flows out of bounds to 14000A367
// 14000A3DF: control flows out of bounds to 14000A3E3
// 14000A410: control flows out of bounds to 14000A414
// 14000A33D: variable 'v11' is possibly undefined
// 14000A3F2: variable 'v14' is possibly undefined
// 14001F868: using guessed type char *off_14001F868;
// 14001F8F8: using guessed type char *off_14001F8F8;
// 140027000: using guessed type char byte_140027000;
//----- (000000014000A5B0) ----------------------------------------------------
void __fastcall __noreturn sub_14000A5B0(__int64 a1)
{
__int64 v2; // rax
__int64 v3; // rdi
__int64 jumpbuf_sp; // rax
__int64 v5[5]; // [rsp+20h] [rbp-28h] BYREF
v2 = sub_140016840(a1);
if ( !v2 )
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806f23a12"
"7002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_14001F920);
v3 = v2;
jumpbuf_sp = _except_get_jumpbuf_sp(a1);
if ( !jumpbuf_sp )
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806f23a12"
"7002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_14001F908);
v5[0] = jumpbuf_sp;
v5[1] = a1;
v5[2] = v3;
sub_140008DE0(v5);
}
// 140016830: using guessed type __int64 __fastcall _except_get_jumpbuf_sp(_QWORD);
// 14001F908: using guessed type void *off_14001F908;
// 14001F920: using guessed type void *off_14001F920;
//----- (000000014000A630) ----------------------------------------------------
__int64 __fastcall sub_14000A630(__int128 *a1)
{
__int64 result; // rax
__int128 v2; // [rsp+30h] [rbp-20h]
__int64 v3; // [rsp+40h] [rbp-10h]
if ( !*((_QWORD *)a1 + 1) )
JUMPOUT(0x14000A671i64);
v3 = *((_QWORD *)a1 + 2);
v2 = *a1;
*(_QWORD *)a1 = 0i64;
*((_QWORD *)a1 + 1) = 1i64;
*((_QWORD *)a1 + 2) = 0i64;
result = sub_1400010D0(24i64, 8i64);
if ( !result )
JUMPOUT(0x14000A6E7i64);
*(_QWORD *)(result + 16) = v3;
*(_OWORD *)result = v2;
return result;
}
// 14000A66D: control flows out of bounds to 14000A671
// 14000A6C8: control flows out of bounds to 14000A6E7
// 1400010D0: using guessed type __int64 __fastcall sub_1400010D0(_QWORD, _QWORD);
//----- (000000014000A740) ----------------------------------------------------
__int64 __fastcall sub_14000A740(__int64 a1)
{
if ( !*(_QWORD *)(a1 + 8) )
JUMPOUT(0x14000A781i64);
return a1;
}
// 14000A77D: control flows out of bounds to 14000A781
//----- (000000014000A7E0) ----------------------------------------------------
_QWORD *__fastcall sub_14000A7E0(__int64 *a1)
{
__int64 v1; // rsi
__int64 v2; // rdi
_QWORD *result; // rax
v1 = *a1;
v2 = a1[1];
result = (_QWORD *)sub_1400010D0(16i64, 8i64);
if ( !result )
sub_14001CB30();
*result = v1;
result[1] = v2;
return result;
}
// 1400010D0: using guessed type __int64 __fastcall sub_1400010D0(_QWORD, _QWORD);
//----- (000000014000A830) ----------------------------------------------------
__int64 __fastcall sub_14000A830(__int64 a1)
{
return a1;
}
//----- (000000014000A840) ----------------------------------------------------
void __fastcall sub_14000A840(__int64 *a1)
{
__int64 v2; // rax
__int64 v3; // rdx
__int64 v4; // rcx
const char *v5; // rax
__int64 v6; // rcx
__int64 v7; // rcx
__int64 v8; // rdi
__int64 jumpbuf_sp; // rbx
__int64 v10; // rsi
char v11; // al
const char *v12; // [rsp+30h] [rbp-20h] BYREF
__int64 v13; // [rsp+38h] [rbp-18h]
__int64 v14; // [rsp+48h] [rbp-8h]
__int64 v15; // [rsp+50h] [rbp+0h]
v15 = -2i64;
v2 = *a1;
v3 = *(_QWORD *)(*a1 + 24);
v4 = *(_QWORD *)(*a1 + 40);
if ( v3 == 1 )
{
if ( !v4 )
{
v7 = *(_QWORD *)(v2 + 16);
v5 = *(const char **)v7;
v6 = *(_QWORD *)(v7 + 8);
LABEL_7:
v12 = v5;
v13 = v6;
v8 = a1[1];
jumpbuf_sp = _except_get_jumpbuf_sp(v8);
v10 = a1[2];
v11 = sub_140016850(v8);
sub_14000A940((__int64)&v12, (__int64)&off_14001F9A0, jumpbuf_sp, v10, v11);
BUG();
}
}
else if ( !v3 && !v4 )
{
v5 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v6 = 0i64;
goto LABEL_7;
}
v14 = v2;
v13 = 0i64;
JUMPOUT(0x14000A8DDi64);
}
// 14000A8D9: control flows out of bounds to 14000A8DD
// 140016830: using guessed type __int64 __fastcall _except_get_jumpbuf_sp(_QWORD);
// 14001F9A0: using guessed type __int64 (__fastcall *off_14001F9A0)();
//----- (000000014000A940) ----------------------------------------------------
void __fastcall sub_14000A940(__int64 a1, __int64 a2, __int64 a3, __int64 a4, char a5)
{
__int64 v5; // rax
unsigned __int64 v6; // r15
__int64 v7; // rax
if ( _InterlockedExchangeAdd64(&qword_1400271C0, 1ui64) >= 0 )
{
v5 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
v6 = *(_QWORD *)(v5 + 88) + 1i64;
*(_QWORD *)(v5 + 88) = v6;
if ( v6 <= 2 )
{
AcquireSRWLockShared(&stru_1400271A0);
if ( !qword_1400271B0 )
JUMPOUT(0x14000A9FCi64);
JUMPOUT(0x14000AB86i64);
}
sub_140006220();
if ( v7 && (v7 & 3) == 1 )
JUMPOUT(0x14000AAA1i64);
__fastfail(7u);
}
JUMPOUT(0x14000AA1Bi64);
}
// 14000A9F8: control flows out of bounds to 14000A9FC
// 14000AA9D: control flows out of bounds to 14000AAA1
// 14000AB82: control flows out of bounds to 14000AB86
// 14000A977: control flows out of bounds to 14000AA1B
// 14000AA77: variable 'v7' is possibly undefined
// 1400271B0: using guessed type __int64 qword_1400271B0;
// 1400271C0: using guessed type __int64 qword_1400271C0;
// 140027270: using guessed type int TlsIndex;
//----- (000000014000AD70) ----------------------------------------------------
void __fastcall __noreturn sub_14000AD70(__int64 a1, __int64 a2)
{
sub_14000E8E0(a1, a2);
}
//----- (000000014000AE50) ----------------------------------------------------
char __fastcall sub_14000AE50(__int64 *a1, __int64 a2, __int64 *a3, __int64 a4, int a5, int a6, int a7, int a8)
{
__int64 v11; // r12
__int64 *v12; // r13
__int64 *v14; // rcx
__int64 *v15; // r15
char **v16; // rax
__int64 v17; // rdx
char **v18; // rax
__int64 v19; // rdx
__int64 v20; // rax
_QWORD *v21; // rbx
__int128 v22; // xmm1
__int128 v23; // xmm2
__int128 v24; // xmm3
__int64 *v25; // rcx
__int64 *v26; // rcx
__int64 v27; // r14
__int64 *v28; // rbx
char **v29; // rax
__int64 v30; // rdx
__int64 *v31; // rcx
__int64 v32; // rcx
__int64 v33; // rax
__int64 *v34; // rcx
__int64 *v35; // rcx
__int64 *v36; // rcx
__int128 v37; // xmm1
__int128 v38; // xmm2
__int128 v39; // xmm3
__int64 *v40; // rcx
__int64 v41; // [rsp+20h] [rbp-118h] BYREF
__m256i v42; // [rsp+28h] [rbp-110h] BYREF
__int128 v43; // [rsp+48h] [rbp-F0h]
__int128 v44; // [rsp+58h] [rbp-E0h]
__int64 v45; // [rsp+68h] [rbp-D0h]
__int128 v46; // [rsp+70h] [rbp-C8h] BYREF
char **v47; // [rsp+80h] [rbp-B8h]
__int64 v48; // [rsp+88h] [rbp-B0h]
__int64 v49; // [rsp+90h] [rbp-A8h]
__int64 v50; // [rsp+98h] [rbp-A0h]
__int64 v51; // [rsp+A0h] [rbp-98h]
__int128 v52; // [rsp+A8h] [rbp-90h] BYREF
char **v53; // [rsp+B8h] [rbp-80h]
__int64 v54; // [rsp+C0h] [rbp-78h]
__int64 *v55; // [rsp+C8h] [rbp-70h]
__int64 v56; // [rsp+D0h] [rbp-68h]
__int64 v57[2]; // [rsp+D8h] [rbp-60h] BYREF
__int64 *v58; // [rsp+E8h] [rbp-50h]
__int64 v59; // [rsp+F0h] [rbp-48h] BYREF
v11 = *a1;
v12 = (__int64 *)a1[1];
v59 = a2;
if ( !a2 && !*((_BYTE *)v12 + 32) )
{
LABEL_3:
*a1 = v11 + 1;
return 0;
}
v14 = (__int64 *)v12[3];
if ( v11 )
{
v42.m256i_i64[1] = (__int64)&off_14001FBB8;
v42.m256i_i64[2] = 1i64;
v41 = 0i64;
v42.m256i_i64[3] = (__int64)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
*(_QWORD *)&v43 = 0i64;
if ( sub_140017C00(v14, (__int128 *)&v41) )
return 1;
if ( *((_BYTE *)v12 + 32) == 1 )
{
v15 = (__int64 *)v12[3];
v16 = (char **)sub_140017280((__int64)&unk_14001FBC8);
*(_QWORD *)&v52 = &off_14001EBD8;
*((_QWORD *)&v52 + 1) = sub_140001210;
v53 = v16;
v54 = v17;
v41 = 2i64;
v42.m256i_i64[1] = 1i64;
v42.m256i_i64[2] = 1i64;
v42.m256i_i64[3] = 0x2000000000i64;
LOBYTE(v43) = 3;
*((_QWORD *)&v43 + 1) = 0i64;
v47 = &off_14001EBD8;
v48 = 1i64;
*(_QWORD *)&v46 = &v41;
*((_QWORD *)&v46 + 1) = 1i64;
v49 = (__int64)&v52;
v50 = 2i64;
if ( sub_140017C00(v15, &v46) )
return 1;
}
}
else
{
*(_QWORD *)&v52 = v12 + 2;
*((_QWORD *)&v52 + 1) = sub_14001AD00;
v41 = 2i64;
v42.m256i_i64[1] = 0i64;
v42.m256i_i64[2] = 4i64;
v42.m256i_i64[3] = 0x2000000000i64;
LOBYTE(v43) = 3;
*((_QWORD *)&v43 + 1) = 0i64;
v47 = &off_14001FBD0;
v48 = 2i64;
*(_QWORD *)&v46 = &v41;
*((_QWORD *)&v46 + 1) = 1i64;
v49 = (__int64)&v52;
v50 = 1i64;
if ( sub_140017C00(v14, &v46) )
return 1;
if ( *((_BYTE *)v12 + 32) == 1 )
{
v58 = (__int64 *)v12[3];
v18 = (char **)sub_140017280((__int64)&unk_14001FC18);
*(_QWORD *)&v52 = &v59;
*((_QWORD *)&v52 + 1) = sub_140002110;
v53 = v18;
v54 = v19;
v41 = 2i64;
v42.m256i_i64[1] = 1i64;
v42.m256i_i64[2] = 1i64;
v42.m256i_i64[3] = 0x2000000000i64;
LOBYTE(v43) = 3;
*((_QWORD *)&v43 + 1) = 0i64;
v47 = &off_14001FBF8;
v48 = 2i64;
*(_QWORD *)&v46 = &v41;
*((_QWORD *)&v46 + 1) = 1i64;
v49 = (__int64)&v52;
v50 = 2i64;
if ( sub_140017C00(v58, &v46) )
return 1;
}
}
v20 = *a3;
if ( *a3 == 3 )
goto LABEL_17;
v21 = a3 + 1;
if ( *((_BYTE *)v12 + 32) == 1i64 )
{
v41 = v20;
v37 = *((_OWORD *)v21 + 1);
v38 = *((_OWORD *)v21 + 2);
v39 = *((_OWORD *)v21 + 3);
*(_OWORD *)v42.m256i_i8 = *(_OWORD *)v21;
*(_OWORD *)&v42.m256i_u64[2] = v37;
v43 = v38;
v44 = v39;
v45 = v21[8];
v40 = (__int64 *)v12[3];
*(_QWORD *)&v52 = &v41;
*((_QWORD *)&v52 + 1) = sub_14000DD80;
v47 = &off_14001EBD8;
v48 = 1i64;
*(_QWORD *)&v46 = 0i64;
v49 = (__int64)&v52;
v50 = 1i64;
if ( sub_140017C00(v40, &v46) )
return 1;
goto LABEL_18;
}
if ( *((_BYTE *)v12 + 32) )
{
LABEL_17:
v26 = (__int64 *)v12[3];
v42.m256i_i64[1] = (__int64)&off_14001FC20;
v42.m256i_i64[2] = 1i64;
v41 = 0i64;
v42.m256i_i64[3] = (__int64)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
*(_QWORD *)&v43 = 0i64;
if ( sub_140017C00(v26, (__int128 *)&v41) )
return 1;
goto LABEL_18;
}
v41 = v20;
v22 = *((_OWORD *)v21 + 1);
v23 = *((_OWORD *)v21 + 2);
v24 = *((_OWORD *)v21 + 3);
*(_OWORD *)v42.m256i_i8 = *(_OWORD *)v21;
*(_OWORD *)&v42.m256i_u64[2] = v22;
v43 = v23;
v44 = v24;
v45 = v21[8];
v25 = (__int64 *)v12[3];
v57[0] = (__int64)&v41;
v57[1] = (__int64)sub_14000DD80;
*(_QWORD *)&v46 = 2i64;
v47 = (char **)2;
v49 = 0x2000000004i64;
LOBYTE(v50) = 3;
v51 = 0i64;
v53 = &off_14001EBD8;
v54 = 1i64;
*(_QWORD *)&v52 = &v46;
*((_QWORD *)&v52 + 1) = 1i64;
v55 = v57;
v56 = 1i64;
if ( sub_140017C00(v25, &v52) )
return 1;
LABEL_18:
if ( !(unsigned __int8)sub_140017BE0((_QWORD *)v12[3]) )
{
if ( a5 != 1 )
goto LABEL_3;
v27 = *(_QWORD *)a4;
if ( *(_QWORD *)a4 == 2i64 )
goto LABEL_3;
LODWORD(v57[0]) = a6;
if ( *((_BYTE *)v12 + 32) != 1 )
goto LABEL_34;
v28 = (__int64 *)v12[3];
v29 = (char **)sub_140017280((__int64)&unk_14001FC18);
*(_QWORD *)&v52 = &off_14001EBD8;
*((_QWORD *)&v52 + 1) = sub_140001210;
v53 = v29;
v54 = v30;
v41 = 2i64;
v42.m256i_i64[1] = 1i64;
v42.m256i_i64[2] = 1i64;
v42.m256i_i64[3] = 0x2000000000i64;
LOBYTE(v43) = 3;
*((_QWORD *)&v43 + 1) = 0i64;
v47 = &off_14001EBD8;
v48 = 1i64;
*(_QWORD *)&v46 = &v41;
*((_QWORD *)&v46 + 1) = 1i64;
v49 = (__int64)&v52;
v50 = 2i64;
if ( !sub_140017C00(v28, &v46) )
{
LABEL_34:
v31 = (__int64 *)v12[3];
v42.m256i_i64[1] = (__int64)&off_14001FC40;
v42.m256i_i64[2] = 1i64;
v41 = 0i64;
v42.m256i_i64[3] = (__int64)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
*(_QWORD *)&v43 = 0i64;
if ( !sub_140017C00(v31, (__int128 *)&v41) )
{
v32 = *v12;
v33 = v12[1];
v41 = v12[3];
v42.m256i_i64[0] = v27;
*(_OWORD *)&v42.m256i_u64[1] = *(_OWORD *)(a4 + 8);
if ( !(*(unsigned __int8 (__fastcall **)(__int64, __int64, __m256i *))(v33 + 32))(v32, v41, &v42) )
{
v34 = (__int64 *)v12[3];
*(_QWORD *)&v46 = v57;
*((_QWORD *)&v46 + 1) = sub_14001ABE0;
v42.m256i_i64[1] = (__int64)&off_14001FC58;
v42.m256i_i64[2] = 1i64;
v41 = 0i64;
v42.m256i_i64[3] = (__int64)&v46;
*(_QWORD *)&v43 = 1i64;
if ( !sub_140017C00(v34, (__int128 *)&v41) )
{
if ( a7 != 1 )
goto LABEL_35;
LODWORD(v52) = a8;
v35 = (__int64 *)v12[3];
*(_QWORD *)&v46 = &v52;
*((_QWORD *)&v46 + 1) = sub_14001ABE0;
v42.m256i_i64[1] = (__int64)&off_14001FC58;
v42.m256i_i64[2] = 1i64;
v41 = 0i64;
v42.m256i_i64[3] = (__int64)&v46;
*(_QWORD *)&v43 = 1i64;
if ( !sub_140017C00(v35, (__int128 *)&v41) )
{
LABEL_35:
v36 = (__int64 *)v12[3];
v42.m256i_i64[1] = (__int64)&off_14001FC68;
v42.m256i_i64[2] = 1i64;
v41 = 0i64;
v42.m256i_i64[3] = (__int64)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
*(_QWORD *)&v43 = 0i64;
if ( !sub_140017C00(v36, (__int128 *)&v41) )
goto LABEL_3;
}
}
}
}
}
}
return 1;
}
// 14000AF2A: variable 'v17' is possibly undefined
// 14000B0BB: variable 'v19' is possibly undefined
// 14000B334: variable 'v30' is possibly undefined
// 14001EBD8: using guessed type char *off_14001EBD8;
// 14001FBB8: using guessed type char *off_14001FBB8;
// 14001FBD0: using guessed type char *off_14001FBD0;
// 14001FBF8: using guessed type char *off_14001FBF8;
// 14001FC20: using guessed type void *off_14001FC20;
// 14001FC40: using guessed type void *off_14001FC40;
// 14001FC58: using guessed type void *off_14001FC58;
// 14001FC68: using guessed type void *off_14001FC68;
//----- (000000014000B610) ----------------------------------------------------
__int64 sub_14000B610()
{
HANDLE v0; // rbx
HMODULE LibraryA; // rax
__int64 v2; // rdi
HANDLE MutexA; // rax
signed __int64 v4; // rax
void *v5; // rsi
__int64 (*v6)(void); // rcx
DWORD (__stdcall *SymGetOptions)(); // rax
int v8; // esi
DWORD (__stdcall *v9)(DWORD); // rdx
DWORD (__stdcall *SymSetOptions)(DWORD); // rax
BOOL (__stdcall *v11)(HANDLE, PCWSTR, BOOL); // rsi
BOOL (__stdcall *SymInitializeW)(HANDLE, PCWSTR, BOOL); // rax
HANDLE CurrentProcess; // rax
v0 = hMutex;
if ( !hMutex )
{
MutexA = CreateMutexA(0i64, 0, "Local\\RustBacktraceMutex");
if ( !MutexA )
return 1i64;
v0 = MutexA;
v4 = _InterlockedCompareExchange64((volatile signed __int64 *)&hMutex, (signed __int64)MutexA, 0i64);
if ( v4 )
{
v5 = (void *)v4;
CloseHandle(v0);
v0 = v5;
}
}
WaitForSingleObjectEx(v0, 0xFFFFFFFF, 0);
LibraryA = hModule;
if ( hModule || (LibraryA = LoadLibraryA("dbghelp.dll"), (hModule = LibraryA) != 0i64) )
{
if ( byte_1400271D0 )
{
return 0i64;
}
else
{
v6 = (__int64 (*)(void))qword_140027218;
if ( !qword_140027218 )
{
SymGetOptions = (DWORD (__stdcall *)())GetProcAddress(LibraryA, "SymGetOptions");
if ( !SymGetOptions )
JUMPOUT(0x14000B797i64);
v6 = (__int64 (*)(void))SymGetOptions;
qword_140027218 = (__int64)SymGetOptions;
}
v8 = v6();
v9 = (DWORD (__stdcall *)(DWORD))qword_140027220;
if ( !qword_140027220 )
{
SymSetOptions = (DWORD (__stdcall *)(DWORD))GetProcAddress(hModule, "SymSetOptions");
if ( !SymSetOptions )
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806"
"f23a127002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_14001FCD8);
v9 = SymSetOptions;
qword_140027220 = (__int64)SymSetOptions;
}
((void (__fastcall *)(_QWORD))v9)(v8 | 4u);
v11 = (BOOL (__stdcall *)(HANDLE, PCWSTR, BOOL))qword_140027228;
if ( !qword_140027228 )
{
SymInitializeW = (BOOL (__stdcall *)(HANDLE, PCWSTR, BOOL))GetProcAddress(hModule, "SymInitializeW");
if ( !SymInitializeW )
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806"
"f23a127002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_14001FCC0);
v11 = SymInitializeW;
qword_140027228 = (__int64)SymInitializeW;
}
CurrentProcess = GetCurrentProcess();
v2 = 0i64;
((void (__fastcall *)(HANDLE, _QWORD, __int64))v11)(CurrentProcess, 0i64, 1i64);
byte_1400271D0 = 1;
}
}
else
{
ReleaseMutex(v0);
return 1i64;
}
return v2;
}
// 14000B6D5: control flows out of bounds to 14000B797
// 14001FCC0: using guessed type char *off_14001FCC0;
// 14001FCD8: using guessed type char *off_14001FCD8;
// 1400271D0: using guessed type char byte_1400271D0;
// 140027218: using guessed type __int64 qword_140027218;
// 140027220: using guessed type __int64 qword_140027220;
// 140027228: using guessed type __int64 qword_140027228;
//----- (000000014000B830) ----------------------------------------------------
char __fastcall sub_14000B830(__int64 a1, __int64 a2)
{
__int64 v4; // rcx
__int64 v5; // rdx
__int64 v6; // r8
char result; // al
char v8; // dl
__int64 v9; // r10
__int64 v10; // r11
size_t v11; // r8
const void *v12; // rdx
const void *v13; // rcx
size_t v15; // r8
v4 = *(unsigned __int8 *)(a1 + 16);
v5 = (unsigned __int8)(v4 - 6);
v6 = v5 + 1;
result = 0;
if ( (unsigned __int8)v5 >= 4u )
v6 = 0i64;
v8 = *(_BYTE *)(a2 + 16);
v9 = (unsigned __int8)(v8 - 6);
v10 = v9 + 1;
if ( (unsigned __int8)v9 >= 4u )
v10 = 0i64;
if ( v6 == v10 )
{
if ( (_DWORD)v6 == 4 )
{
v11 = *(_QWORD *)(a1 + 8);
if ( v11 == *(_QWORD *)(a2 + 8) )
{
v12 = *(const void **)a2;
v13 = *(const void **)a1;
return memcmp(v13, v12, v11) == 0;
}
}
else
{
result = 1;
if ( v6 || (unsigned __int8)(v8 - 6) <= 3u )
return result;
if ( (_BYTE)v4 == v8 )
{
switch ( v4 )
{
case 0i64:
case 3i64:
v11 = *(_QWORD *)(a1 + 32);
if ( v11 != *(_QWORD *)(a2 + 32) )
return 0;
v12 = *(const void **)(a2 + 24);
v13 = *(const void **)(a1 + 24);
break;
case 1i64:
case 4i64:
v15 = *(_QWORD *)(a1 + 32);
if ( v15 != *(_QWORD *)(a2 + 32) )
return 0;
if ( memcmp(*(const void **)(a1 + 24), *(const void **)(a2 + 24), v15) )
return 0;
v11 = *(_QWORD *)(a1 + 48);
if ( v11 != *(_QWORD *)(a2 + 48) )
return 0;
v12 = *(const void **)(a2 + 40);
v13 = *(const void **)(a1 + 40);
break;
case 2i64:
case 5i64:
return *(_BYTE *)(a1 + 17) == *(_BYTE *)(a2 + 17);
}
return memcmp(v13, v12, v11) == 0;
}
}
return 0;
}
return result;
}
//----- (000000014000B930) ----------------------------------------------------
HMODULE sub_14000B930()
{
HMODULE result; // rax
HMODULE v1; // rsi
HMODULE v2; // rdi
result = GetModuleHandleA("api-ms-win-core-synch-l1-2-0");
if ( result )
{
v1 = result;
result = (HMODULE)GetProcAddress(result, "WaitOnAddress");
if ( result )
{
v2 = result;
result = (HMODULE)GetProcAddress(v1, "WakeByAddressSingle");
if ( result )
{
qword_140027200 = (__int64)v2;
qword_140027208 = (__int64 (__fastcall *)(_QWORD))result;
}
}
}
return result;
}
// 140027200: using guessed type __int64 qword_140027200;
// 140027208: using guessed type __int64 (__fastcall *qword_140027208)(_QWORD);
//----- (000000014000B990) ----------------------------------------------------
__int64 __fastcall sub_14000B990(
__int64 *a1,
void *a2,
void *Buffer,
unsigned __int64 a4,
PLARGE_INTEGER a5,
__int64 a6)
{
ULONG Length; // edx
union _LARGE_INTEGER *ByteOffset; // r9
int Status; // eax
__int64 result; // rax
__int64 v12; // rax
__int64 v13; // rax
struct _IO_STATUS_BLOCK IoStatusBlock; // [rsp+58h] [rbp-90h] BYREF
__int64 v15[2]; // [rsp+68h] [rbp-80h] BYREF
PLARGE_INTEGER v16; // [rsp+78h] [rbp-70h] BYREF
__int64 v17[13]; // [rsp+80h] [rbp-68h] BYREF
IoStatusBlock.Pointer = (PVOID)259;
IoStatusBlock.Information = 0i64;
Length = -1;
if ( a4 < 0xFFFFFFFF )
Length = a4;
v16 = a5;
ByteOffset = (union _LARGE_INTEGER *)v17;
v17[0] = a6;
if ( !a5 )
ByteOffset = 0i64;
Status = NtWriteFile(a2, 0i64, 0i64, 0i64, &IoStatusBlock, Buffer, Length, ByteOffset, 0i64);
if ( Status == 259 )
{
WaitForSingleObject(a2, 0xFFFFFFFF);
Status = IoStatusBlock.Status;
if ( IoStatusBlock.Status == 259 )
{
v17[1] = (__int64)&off_14001FD80;
v17[2] = 1i64;
v16 = 0i64;
v17[3] = (__int64)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v17[4] = 0i64;
v15[0] = (__int64)&v16;
v15[1] = (__int64)sub_140017290;
v17[7] = (__int64)&off_14001E8D0;
v17[8] = 2i64;
v17[5] = 0i64;
v17[9] = (__int64)v15;
v17[10] = 1i64;
sub_140006220();
sub_140001B00(v13);
__fastfail(7u);
}
}
if ( Status < 0 )
{
LODWORD(v12) = RtlNtStatusToDosError(Status);
a1[1] = (v12 << 32) | 2;
result = 1i64;
}
else
{
a1[1] = IoStatusBlock.Information;
result = 0i64;
}
*a1 = result;
return result;
}
// 14000BA54: variable 'v12' is possibly undefined
// 14000BB29: variable 'v13' is possibly undefined
// 14001E8D0: using guessed type void *off_14001E8D0;
// 14001FD80: using guessed type char *off_14001FD80;
//----- (000000014000BB40) ----------------------------------------------------
char **__fastcall sub_14000BB40(__int64 a1, int a2)
{
DWORD v2; // edi
HMODULE v4; // r14
DWORD v5; // r15d
HMODULE ModuleHandleW; // rax
DWORD v7; // eax
char **v8; // rax
char *v9; // r9
char **result; // rax
__int128 v11; // xmm0
char *v12; // rdx
unsigned int v13; // r10d
char v14; // r11
char v15; // di
int v16; // edi
int v17; // r11d
unsigned int v18; // r11d
unsigned __int64 v19; // rdx
_BYTE v20[32]; // [rsp+0h] [rbp-80h] BYREF
WCHAR Buffer[2048]; // [rsp+38h] [rbp-48h] BYREF
__int128 v22; // [rsp+1038h] [rbp+FB8h] BYREF
__int64 *v23; // [rsp+1048h] [rbp+FC8h]
__int64 (__fastcall *v24)(unsigned int *, __int64); // [rsp+1050h] [rbp+FD0h]
__int128 v25; // [rsp+1058h] [rbp+FD8h] BYREF
char **v26; // [rsp+1068h] [rbp+FE8h]
__int64 v27[2]; // [rsp+1070h] [rbp+FF0h] BYREF
__int128 v28; // [rsp+1080h] [rbp+1000h] BYREF
char **v29; // [rsp+1090h] [rbp+1010h]
__int64 v30; // [rsp+1098h] [rbp+1018h]
__int64 *v31; // [rsp+10A0h] [rbp+1020h]
__int64 v32; // [rsp+10A8h] [rbp+1028h]
DWORD v33; // [rsp+10BCh] [rbp+103Ch] BYREF
__int64 v34; // [rsp+10C0h] [rbp+1040h]
v34 = -2i64;
v2 = a2;
v33 = a2;
v4 = 0i64;
memset(&v20[56], 0, 0x1000ui64);
v5 = 4608;
if ( (v2 & 0x10000000) != 0 )
{
ModuleHandleW = GetModuleHandleW(L"NTDLL.DLL");
if ( ModuleHandleW )
{
v4 = ModuleHandleW;
v2 ^= 0x10000000u;
v33 = v2;
v5 = 6656;
}
else
{
v4 = 0i64;
}
}
v7 = FormatMessageW(v5, v4, v2, 0x800u, (LPWSTR)&v20[56], 0x800u, 0i64);
if ( !v7 )
{
LODWORD(v27[0]) = GetLastError();
*(_QWORD *)&v22 = &v33;
*((_QWORD *)&v22 + 1) = sub_14001AAA0;
v23 = v27;
v24 = sub_14001AAA0;
v29 = &off_14001FED8;
v30 = 3i64;
*(_QWORD *)&v28 = 0i64;
v31 = (__int64 *)&v22;
v32 = 2i64;
sub_140015E30((__int64 *)&v25, &v28);
result = v26;
*(_QWORD *)(a1 + 16) = v26;
v11 = v25;
goto LABEL_44;
}
if ( v7 >= 0x801 )
JUMPOUT(0x14000BEFEi64);
sub_140016030((__int64)&v25, (__int64)Buffer, v7);
if ( !*((_QWORD *)&v25 + 1) )
{
v27[0] = (__int64)&v33;
v27[1] = (__int64)sub_14001AAA0;
v29 = &off_14001FE90;
v30 = 2i64;
*(_QWORD *)&v28 = 0i64;
v31 = v27;
v32 = 1i64;
sub_140015E30((__int64 *)&v22, &v28);
result = (char **)v23;
*(_QWORD *)(a1 + 16) = v23;
v11 = v22;
goto LABEL_44;
}
v28 = v25;
v8 = v26;
v29 = v26;
if ( !v26 )
goto LABEL_41;
v9 = (char *)v26 + *((_QWORD *)&v28 + 1);
while ( 1 )
{
v12 = v9;
LOBYTE(v13) = *(v9 - 1);
if ( (v13 & 0x80u) != 0 )
{
v14 = *(v9 - 2);
if ( v14 >= -64 )
{
v9 -= 2;
v17 = v14 & 0x1F;
}
else
{
v15 = *(v9 - 3);
if ( v15 >= -64 )
{
v9 -= 3;
v16 = v15 & 0xF;
}
else
{
v9 -= 4;
v16 = ((*(v12 - 4) & 7) << 6) | v15 & 0x3F;
}
v17 = (v16 << 6) | v14 & 0x3F;
}
v13 = (v17 << 6) | v13 & 0x3F;
if ( v13 == 1114112 )
goto LABEL_41;
}
else
{
--v9;
v13 = (unsigned __int8)v13;
}
if ( v13 - 9 >= 5 && v13 != 32 )
break;
LABEL_13:
if ( v9 == *((char **)&v28 + 1) )
goto LABEL_41;
}
if ( v13 < 0x80 )
goto LABEL_36;
v18 = v13 >> 8;
if ( v13 >> 8 <= 0x1F )
{
if ( v18 )
{
if ( v18 != 22 || v13 != 5760 )
goto LABEL_36;
}
else if ( (*((_BYTE *)off_1400270A0 + (unsigned __int8)v13) & 1) == 0 )
{
goto LABEL_36;
}
goto LABEL_13;
}
if ( v18 == 32 )
{
if ( (*((_BYTE *)off_1400270A0 + (unsigned __int8)v13) & 2) == 0 )
goto LABEL_36;
goto LABEL_13;
}
if ( v18 == 48 && v13 == 12288 )
goto LABEL_13;
LABEL_36:
v19 = (unsigned __int64)&v12[-*((_QWORD *)&v28 + 1)];
if ( (unsigned __int64)v26 < v19 )
goto LABEL_43;
if ( !v19 )
{
LABEL_41:
v8 = 0i64;
goto LABEL_42;
}
if ( (unsigned __int64)v26 <= v19 )
{
if ( v26 != (char **)v19 )
goto LABEL_46;
}
else
{
v8 = (char **)v19;
if ( *(char *)(*((_QWORD *)&v28 + 1) + v19) < -64 )
LABEL_46:
JUMPOUT(0x14000BEE4i64);
}
LABEL_42:
v29 = v8;
LABEL_43:
result = v29;
*(_QWORD *)(a1 + 16) = v29;
v11 = v28;
LABEL_44:
*(_OWORD *)a1 = v11;
return result;
}
// 14000BEE2: control flows out of bounds to 14000BEE4
// 14000BBFB: control flows out of bounds to 14000BEFE
// 14001FE90: using guessed type char *off_14001FE90;
// 14001FED8: using guessed type char *off_14001FED8;
// 1400270A0: using guessed type void *off_1400270A0;
// 14000BB40: using guessed type WCHAR Buffer[2048];
//----- (000000014000BF60) ----------------------------------------------------
__int64 __fastcall sub_14000BF60(__int64 a1, unsigned __int8 *a2, unsigned __int64 a3)
{
unsigned __int8 v3; // si
unsigned __int8 v4; // di
__int64 v5; // r10
unsigned __int8 v6; // bp
unsigned __int8 v7; // r11
unsigned __int8 v8; // r9
unsigned __int8 v9; // r14
unsigned __int8 v10; // bl
__int64 v11; // r10
unsigned __int64 v12; // rax
int v13; // esi
unsigned __int64 v14; // r10
unsigned __int8 v15; // al
unsigned __int64 v16; // r8
__int64 v17; // r9
int v18; // r11d
unsigned __int64 v19; // r11
__int64 v20; // rsi
unsigned __int64 v21; // r10
int v22; // edi
__int64 v23; // rdi
_BYTE *v25; // rdx
unsigned __int64 v26; // rax
unsigned __int64 v27; // r8
int v28; // r9d
const char *v29; // r9
unsigned __int64 v30; // r11
unsigned __int64 v31; // rsi
__int64 v32; // rbx
char *v33; // rax
unsigned __int64 v34; // r9
int v35; // r10d
char v36; // dl
unsigned __int64 v37; // r8
unsigned __int64 v38; // rdx
unsigned __int64 v39; // rdi
unsigned __int64 v40; // r11
unsigned __int64 v41; // r8
if ( a3 )
{
v3 = *a2;
v4 = 92;
if ( *a2 == 47 )
v3 = 92;
if ( a3 == 1 )
{
v5 = 0i64;
v6 = 0;
v7 = 0;
v8 = 0;
v9 = 0;
v10 = 0;
v4 = 0;
}
else
{
if ( a2[1] != 47 )
v4 = a2[1];
if ( a3 == 2 )
{
v5 = 0i64;
v6 = 0;
v7 = 0;
v8 = 0;
v9 = 0;
v10 = 0;
}
else
{
v10 = a2[2];
v9 = 92;
if ( v10 == 47 )
v10 = 92;
if ( a3 == 3 )
{
v5 = 0i64;
v6 = 0;
v7 = 0;
v8 = 0;
v9 = 0;
}
else
{
if ( a2[3] != 47 )
v9 = a2[3];
if ( a3 == 4 )
{
v5 = 0i64;
v6 = 0;
v7 = 0;
v8 = 0;
}
else
{
v8 = a2[4];
v7 = 92;
if ( v8 == 47 )
v8 = 92;
if ( a3 == 5 )
{
v5 = 0i64;
v6 = 0;
v7 = 0;
}
else
{
if ( a2[5] != 47 )
v7 = a2[5];
if ( a3 == 6 )
{
v5 = 0i64;
v6 = 0;
}
else
{
v6 = a2[6];
v11 = 92i64;
if ( v6 == 47 )
v6 = 92;
if ( a3 == 7 )
{
v5 = 0i64;
}
else
{
if ( a2[7] != 47 )
v11 = a2[7];
v5 = v11 << 56;
}
}
}
}
}
}
}
}
else
{
v5 = 0i64;
v6 = 0;
v7 = 0;
v8 = 0;
v9 = 0;
v10 = 0;
v4 = 0;
v3 = 0;
}
v12 = 8i64;
if ( a3 < 8 )
v12 = a3;
if ( v12 >= 2 && ((v4 << 8) | v3) == 23644 )
{
if ( (v12 & 0xE) == 2 )
goto LABEL_51;
v13 = (unsigned __int16)((v9 << 8) | v10);
if ( v13 != 23598 )
{
if ( v13 == 23615 )
{
if ( a3 <= 3 )
sub_14001D040(4i64, a3, (__int64)&off_14001FF48);
if ( *a2 == 47 || a2[1] == 47 || a2[2] == 47 || a2[3] == 47 )
{
v14 = a3 - 2;
LABEL_53:
v16 = a3 - 2;
v17 = 0i64;
while ( 1 )
{
v18 = a2[v17 + 2];
if ( v18 == 47 || v18 == 92 )
break;
if ( v16 == ++v17 )
goto LABEL_68;
}
v19 = v14 - 1 - v17;
if ( v14 - 1 != v17 )
{
v20 = v17 - v14;
v21 = 0i64;
while ( 1 )
{
v22 = a2[v21 + 3 + v17];
if ( v22 == 47 || v22 == 92 )
break;
v23 = v20 + v21++;
if ( v23 == -2 )
{
v21 = v19;
break;
}
}
if ( v17 && v21 )
{
*(_BYTE *)a1 = 4;
*(_QWORD *)(a1 + 8) = a2 + 2;
*(_QWORD *)(a1 + 16) = v17;
*(_QWORD *)(a1 + 24) = &a2[v17 + 3];
LABEL_67:
*(_QWORD *)(a1 + 32) = v21;
return a1;
}
}
LABEL_68:
*(_BYTE *)a1 = 6;
return a1;
}
if ( v12 <= 3 )
sub_14001D030(4i64, v12, (__int64)&off_14001FF30);
if ( (v12 & 0xC) != 4
&& (v5 | ((unsigned __int64)v6 << 48) | ((unsigned __int64)v7 << 40) | ((unsigned __int64)v8 << 32)) == 0x5C434E5500000000i64 )
{
if ( a3 <= 7 )
sub_14001D030(8i64, a3, (__int64)&off_14001FF60);
v29 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v30 = a3 - 8;
if ( a3 == 8 )
{
v30 = 0i64;
v21 = 0i64;
}
else
{
v21 = 0i64;
v31 = 0i64;
while ( a2[v31 + 8] != 92 )
{
v32 = v31 - a3 + 1;
++v31;
if ( v32 == -8 )
goto LABEL_109;
}
v29 = (const char *)&a2[v31 + 9];
v39 = a3 - 9 - v31;
if ( a3 - 9 == v31 )
{
v21 = 0i64;
}
else
{
v40 = v31 - a3;
v21 = 0i64;
while ( a2[v21 + 9 + v31] != 92 )
{
v41 = v40 + v21++;
if ( v41 == -10i64 )
{
v30 = v31;
v21 = v39;
goto LABEL_109;
}
}
}
v30 = v31;
}
LABEL_109:
*(_BYTE *)a1 = 1;
*(_QWORD *)(a1 + 8) = a2 + 8;
*(_QWORD *)(a1 + 16) = v30;
*(_QWORD *)(a1 + 24) = v29;
goto LABEL_67;
}
v33 = (char *)(a2 + 4);
v34 = a3 - 4;
if ( a3 - 4 >= 3 )
{
v35 = a2[6];
if ( v35 != 47 && v35 != 92 )
goto LABEL_95;
}
else
{
if ( a3 == 4 )
{
LABEL_101:
*(_BYTE *)a1 = 0;
*(_QWORD *)(a1 + 8) = v33;
*(_QWORD *)(a1 + 16) = v34;
return a1;
}
if ( a3 != 6 )
{
LABEL_95:
v37 = a3 - 4;
v38 = 0i64;
while ( v33[v38] != 92 )
{
if ( v37 == ++v38 )
goto LABEL_101;
}
v34 = v38;
goto LABEL_101;
}
}
if ( a2[5] == 58 )
{
v36 = *v33;
if ( (unsigned __int8)((*v33 & 0xDF) - 65) <= 0x19u )
{
*(_BYTE *)a1 = 2;
*(_BYTE *)(a1 + 1) = v36 ^ (32 * ((unsigned __int8)(v36 - 97) < 0x1Au));
return a1;
}
}
goto LABEL_95;
}
LABEL_51:
if ( a3 <= 1 )
sub_14001D030(2i64, a3, (__int64)&off_14001FF60);
v14 = a3 - 2;
if ( a3 == 2 )
goto LABEL_68;
goto LABEL_53;
}
if ( a3 <= 3 )
sub_14001D030(4i64, a3, (__int64)&off_14001FF60);
v25 = a2 + 4;
v26 = 0i64;
v27 = a3 - 4;
if ( v27 )
{
while ( 1 )
{
v28 = (unsigned __int8)v25[v26];
if ( v28 == 47 || v28 == 92 )
break;
if ( v27 == ++v26 )
{
v26 = v27;
break;
}
}
}
*(_BYTE *)a1 = 3;
*(_QWORD *)(a1 + 8) = v25;
*(_QWORD *)(a1 + 16) = v26;
}
else
{
if ( a3 < 2 )
goto LABEL_68;
if ( a2[1] != 58 )
goto LABEL_68;
v15 = *a2;
if ( (unsigned __int8)((*a2 & 0xDF) - 65) > 0x19u )
goto LABEL_68;
*(_BYTE *)a1 = 5;
*(_BYTE *)(a1 + 1) = v15 ^ (32 * ((unsigned __int8)(v15 - 97) < 0x1Au));
}
return a1;
}
// 14001FF30: using guessed type char *off_14001FF30;
// 14001FF48: using guessed type char *off_14001FF48;
// 14001FF60: using guessed type char *off_14001FF60;
//----- (000000014000C440) ----------------------------------------------------
void __fastcall sub_14000C440(_QWORD *a1, DWORD a2, unsigned __int8 *a3, unsigned __int64 a4, unsigned __int8 *a5)
{
HANDLE StdHandle; // rax
void *v9; // r15
__int64 v10; // rax
__int64 v11; // rax
__int64 v12; // rax
unsigned __int8 v13; // al
unsigned __int64 v14; // rdi
unsigned __int64 v15; // r8
__int64 v16; // rax
unsigned __int64 v17; // rdx
__int64 v18; // r8
unsigned __int64 v19; // rdx
unsigned __int64 v20; // r9
__int64 v21; // rax
unsigned __int64 v22; // rcx
char **v23; // rax
void **v24; // r9
__int64 *v25; // rcx
__int64 v26; // [rsp+38h] [rbp-48h] BYREF
unsigned __int64 v27; // [rsp+40h] [rbp-40h] BYREF
__int64 v28; // [rsp+50h] [rbp-30h] BYREF
unsigned __int64 v29; // [rsp+58h] [rbp-28h]
unsigned __int64 v30; // [rsp+60h] [rbp-20h]
__int128 Mode; // [rsp+68h] [rbp-18h] BYREF
char **v32; // [rsp+78h] [rbp-8h]
__int64 v33; // [rsp+80h] [rbp+0h]
const char *v34; // [rsp+88h] [rbp+8h]
__int64 v35; // [rsp+90h] [rbp+10h]
__int64 v36[7]; // [rsp+98h] [rbp+18h] BYREF
v36[1] = -2i64;
if ( !a4 )
{
*(_OWORD *)a1 = 0i64;
return;
}
StdHandle = GetStdHandle(a2);
if ( !StdHandle )
{
v11 = 0x600000002i64;
goto LABEL_22;
}
v9 = StdHandle;
if ( StdHandle == (HANDLE)-1i64 )
{
LODWORD(v10) = GetLastError();
v11 = (v10 << 32) | 2;
LABEL_22:
a1[1] = v11;
*a1 = 1i64;
return;
}
LODWORD(Mode) = 0;
if ( !GetConsoleMode(StdHandle, (LPDWORD)&Mode) )
JUMPOUT(0x14000C531i64);
v12 = a5[4];
if ( !a5[4] )
{
v15 = 4096i64;
if ( a4 < 0x1000 )
v15 = a4;
sub_140018DE0((__int64)&v28, (__int64)a3, v15);
if ( v28 )
{
if ( !v29 )
{
v21 = *a3;
v22 = byte_1400200B0[v21];
if ( v22 >= 2 && v22 > a4 )
{
*a5 = v21;
a5[4] = 1;
LABEL_31:
a1[1] = 1i64;
*a1 = 0i64;
return;
}
v23 = &off_140020098;
goto LABEL_33;
}
v16 = sub_140001110(0i64, v29, (__int64)a3, a4, (__int64)&off_1400201F8);
sub_140018DE0((__int64)&Mode, v16, v17);
v18 = sub_1400020C0((__int64)&Mode);
v20 = v19;
}
else
{
v18 = v29;
v20 = v30;
}
sub_14000C780(a1, v9, v18, v20);
return;
}
if ( (unsigned __int8)v12 >= 4u )
{
v32 = &off_140020020;
v33 = 1i64;
*(_QWORD *)&Mode = 0i64;
v34 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v35 = 0i64;
sub_14001CBB0((__int64)&Mode, (__int64)&off_140020030);
}
if ( (*a3 & 0xC0) != 0x80 )
{
a5[4] = 0;
LABEL_21:
v11 = (__int64)&off_140020098;
goto LABEL_22;
}
a5[v12] = *a3;
v13 = a5[4] + 1;
a5[4] = v13;
v14 = byte_1400200B0[*a5];
v27 = v14;
if ( v13 < (unsigned __int8)v14 )
{
a1[1] = 1i64;
*a1 = 0i64;
return;
}
if ( v13 >= 5u )
sub_14001D040(v13, 4i64, (__int64)&off_1400201B0);
sub_140018DE0((__int64)&v28, (__int64)a5, v13);
a5[4] = 0;
if ( v28 )
goto LABEL_21;
v36[0] = v30;
if ( v30 != v14 )
{
v32 = 0i64;
v24 = &off_1400201C8;
v25 = (__int64 *)&v27;
goto LABEL_38;
}
sub_14000C780(&Mode, v9, v29, v14);
v23 = (char **)*((_QWORD *)&Mode + 1);
if ( !(_QWORD)Mode )
{
v26 = *((_QWORD *)&Mode + 1);
v36[0] = v14;
if ( *((_QWORD *)&Mode + 1) == v14 )
goto LABEL_31;
v32 = 0i64;
v24 = &off_1400201E0;
v25 = &v26;
LABEL_38:
sub_14001BFB0((__int64)v25, (__int64)v36, &Mode, (__int64)v24);
}
LABEL_33:
a1[1] = v23;
*a1 = 1i64;
}
// 14000C4C6: control flows out of bounds to 14000C531
// 14000C489: variable 'v10' is possibly undefined
// 14000C5B7: variable 'v17' is possibly undefined
// 14000C5C7: variable 'v19' is possibly undefined
// 140020020: using guessed type char *off_140020020;
// 140020030: using guessed type void *off_140020030;
// 140020098: using guessed type char *off_140020098;
// 1400200B0: using guessed type unsigned __int8 byte_1400200B0[256];
// 1400201B0: using guessed type void *off_1400201B0;
// 1400201C8: using guessed type void *off_1400201C8;
// 1400201E0: using guessed type void *off_1400201E0;
// 1400201F8: using guessed type void *off_1400201F8;
//----- (000000014000C780) ----------------------------------------------------
int __fastcall sub_14000C780(_QWORD *a1, void *a2, __int64 a3, unsigned __int64 a4)
{
__int64 v4; // rdi
int v7; // eax
unsigned __int64 v8; // r15
__int64 v9; // rax
unsigned __int64 v10; // rbx
WCHAR *v11; // rdx
__int64 v12; // rbx
unsigned __int16 v13; // cx
__int64 v14; // rdx
__int64 v15; // rax
DWORD NumberOfCharsWritten[2]; // [rsp+30h] [rbp-2058h] BYREF
char **v18; // [rsp+40h] [rbp-2048h]
__int64 v19; // [rsp+48h] [rbp-2040h]
const char *v20; // [rsp+50h] [rbp-2038h]
__int64 v21; // [rsp+58h] [rbp-2030h]
WCHAR WideCharStr[4116]; // [rsp+60h] [rbp-2028h] BYREF
v4 = a4;
if ( a4 >= 0x1001 )
{
v4 = 4096i64;
if ( *(char *)(a3 + 4096) <= -65 )
{
v4 = 4095i64;
if ( *(char *)(a3 + 4095) <= -65 )
v4 = (*(_BYTE *)(a3 + 4094) >= 0xC0) + 4093i64;
}
}
v7 = MultiByteToWideChar(0xFDE9u, 8u, (LPCCH)a3, v4, WideCharStr, 4096);
if ( !v7 )
{
v18 = &off_140020250;
v19 = 1i64;
*(_QWORD *)NumberOfCharsWritten = 0i64;
v20 = "/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v21 = 0i64;
sub_14001CBB0((__int64)NumberOfCharsWritten, (__int64)&off_140020260);
}
v8 = v7;
if ( (unsigned int)v7 >= 0x1001 )
sub_14001D040(v7, 4096i64, (__int64)&off_140020278);
NumberOfCharsWritten[0] = 0;
LODWORD(v9) = WriteConsoleW(a2, WideCharStr, v7, NumberOfCharsWritten, 0i64);
if ( (_DWORD)v9 )
{
v10 = NumberOfCharsWritten[0];
if ( NumberOfCharsWritten[0] != v8 )
{
if ( NumberOfCharsWritten[0] >= v8 )
sub_14001CD00(NumberOfCharsWritten[0], v8, (__int64)&off_140020290);
LODWORD(v9) = (unsigned __int16)(WideCharStr[NumberOfCharsWritten[0]] + 8978);
if ( (unsigned int)v9 < 0x312 )
{
v11 = &WideCharStr[NumberOfCharsWritten[0]];
v10 = NumberOfCharsWritten[0] + 1i64;
NumberOfCharsWritten[0] = 0;
LODWORD(v9) = WriteConsoleW(a2, v11, 1u, NumberOfCharsWritten, 0i64);
if ( !(_DWORD)v9 )
LODWORD(v9) = GetLastError();
}
if ( v10 > v8 )
sub_14001D040(v10, v8, (__int64)&off_1400202A8);
if ( v10 )
{
v12 = 2 * v10;
v9 = 0i64;
v4 = 0i64;
do
{
v13 = *(WCHAR *)((char *)WideCharStr + v9);
v14 = 1i64;
if ( v13 > 0x7Fu )
{
v14 = 2i64;
if ( v13 >= 0x800u )
v14 = 2i64 * ((unsigned __int16)(v13 + 8978) >= 0x312u) + 1;
}
v4 += v14;
v9 += 2i64;
}
while ( v12 != v9 );
}
else
{
v4 = 0i64;
}
}
a1[1] = v4;
*a1 = 0i64;
}
else
{
LODWORD(v15) = GetLastError();
v9 = (v15 << 32) | 2;
a1[1] = v9;
*a1 = 1i64;
}
return v9;
}
// 14000C910: variable 'v15' is possibly undefined
// 140020250: using guessed type char *off_140020250;
// 140020260: using guessed type void *off_140020260;
// 140020278: using guessed type void *off_140020278;
// 140020290: using guessed type void *off_140020290;
// 1400202A8: using guessed type void *off_1400202A8;
// 14000C780: using guessed type WCHAR WideCharStr[4116];
//----- (000000014000C9D0) ----------------------------------------------------
_QWORD *__fastcall sub_14000C9D0(_QWORD *a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int64 a4)
{
sub_14000C440(a1, 0xFFFFFFF4, a3, a4, a2);
return a1;
}
//----- (000000014000C9F0) ----------------------------------------------------
_QWORD *__fastcall sub_14000C9F0(__int64 a1, __int64 a2)
{
_QWORD *result; // rax
__int64 v3; // rsi
__int64 v4; // rdi
HANDLE CurrentThread; // rax
__int64 v6[3]; // [rsp+28h] [rbp-40h] BYREF
__int64 v7; // [rsp+40h] [rbp-28h] BYREF
__int64 v8; // [rsp+48h] [rbp-20h]
result = (_QWORD *)sub_140016770((__int64)v6, a1, a2);
if ( !v6[0] )
{
sub_14000D3F0((__int64)&v7, v6[1], v6[2]);
v3 = v8;
if ( v8 )
{
v4 = v7;
CurrentThread = GetCurrentThread();
result = (_QWORD *)off_140027038(CurrentThread, v3);
if ( v4 )
return (_QWORD *)sub_1400010E0(v3, 2 * v4, 2i64);
}
else
{
return sub_140001E60(&v7);
}
}
return result;
}
// 140027038: invalid function type has been ignored
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
// 140027038: using guessed type __int64 (__fastcall *off_140027038)(_QWORD, _QWORD);
//----- (000000014000CA80) ----------------------------------------------------
__int64 __fastcall sub_14000CA80(__int64 a1, __int64 a2)
{
__int64 v4; // rax
__int64 v5; // rcx
__int64 result; // rax
__int64 v7; // rdx
__int64 v8; // rcx
v4 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
v5 = *(_QWORD *)(v4 + 56);
if ( v5 == *(_QWORD *)(v4 + 40) )
{
sub_1400031A0(v5);
v5 = *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 56i64);
}
result = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
v7 = *(_QWORD *)(result + 48);
v8 = 16 * v5;
*(_QWORD *)(v7 + v8) = a1;
*(_QWORD *)(v7 + v8 + 8) = a2;
++*(_QWORD *)(result + 56);
return result;
}
// 140027270: using guessed type int TlsIndex;
//----- (000000014000CB10) ----------------------------------------------------
_QWORD *sub_14000CB10()
{
__int64 i; // rax
__int64 v1; // rax
__int64 v2; // rsi
__int64 v3; // rdx
_QWORD *result; // rax
for ( i = *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 56i64);
i;
i = *(_QWORD *)(v2 + 56) )
{
v1 = i - 1;
v2 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
*(_QWORD *)(v2 + 56) = v1;
(*(void (__fastcall **)(_QWORD))(*(_QWORD *)(v2 + 48) + 16 * v1 + 8))(*(_QWORD *)(*(_QWORD *)(v2 + 48) + 16 * v1));
}
v3 = *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 40i64);
if ( v3 )
sub_1400010E0(
*(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 48i64),
16 * v3,
8i64);
result = (_QWORD *)*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
result[5] = 0i64;
result[6] = 8i64;
result[7] = 0i64;
return result;
}
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
// 140027270: using guessed type int TlsIndex;
//----- (000000014000CC00) ----------------------------------------------------
void __fastcall TlsCallback_0(__int64 a1, int a2)
{
__int64 v2; // r15
char v3; // r12
void (__fastcall *v4)(LPVOID); // r13
DWORD v5; // esi
LPVOID Value; // rax
LPVOID v7; // rdi
__int64 v8; // r15
char v9; // r12
void (__fastcall *v10)(LPVOID); // r13
DWORD v11; // esi
LPVOID v12; // rax
LPVOID v13; // rdi
__int64 v14; // r15
char v15; // r12
void (__fastcall *v16)(LPVOID); // r13
DWORD v17; // esi
LPVOID v18; // rax
LPVOID v19; // rdi
__int64 v20; // r15
char v21; // r12
void (__fastcall *v22)(LPVOID); // r13
DWORD v23; // esi
LPVOID v24; // rax
LPVOID v25; // rdi
__int64 i; // r15
void (__fastcall *v27)(LPVOID); // r12
DWORD v28; // esi
LPVOID v29; // rax
LPVOID v30; // rdi
if ( a2 != 3 && a2 )
JUMPOUT(0x14000CDA0i64);
v2 = qword_1400271F8;
if ( qword_1400271F8 )
{
v3 = 0;
do
{
v4 = *(void (__fastcall **)(LPVOID))v2;
if ( !*(_QWORD *)v2 )
LABEL_45:
JUMPOUT(0x14000CDF3i64);
v5 = *(_DWORD *)(v2 + 24) - 1;
Value = TlsGetValue(v5);
if ( Value )
{
v7 = Value;
TlsSetValue(v5, 0i64);
v4(v7);
v3 = 1;
}
v2 = *(_QWORD *)(v2 + 8);
}
while ( v2 );
if ( (v3 & 1) != 0 )
{
v8 = qword_1400271F8;
if ( qword_1400271F8 )
{
v9 = 0;
do
{
v10 = *(void (__fastcall **)(LPVOID))v8;
if ( !*(_QWORD *)v8 )
goto LABEL_45;
v11 = *(_DWORD *)(v8 + 24) - 1;
v12 = TlsGetValue(v11);
if ( v12 )
{
v13 = v12;
TlsSetValue(v11, 0i64);
v10(v13);
v9 = 1;
}
v8 = *(_QWORD *)(v8 + 8);
}
while ( v8 );
if ( (v9 & 1) != 0 )
{
v14 = qword_1400271F8;
if ( qword_1400271F8 )
{
v15 = 0;
do
{
v16 = *(void (__fastcall **)(LPVOID))v14;
if ( !*(_QWORD *)v14 )
goto LABEL_45;
v17 = *(_DWORD *)(v14 + 24) - 1;
v18 = TlsGetValue(v17);
if ( v18 )
{
v19 = v18;
TlsSetValue(v17, 0i64);
v16(v19);
v15 = 1;
}
v14 = *(_QWORD *)(v14 + 8);
}
while ( v14 );
if ( (v15 & 1) != 0 )
{
v20 = qword_1400271F8;
if ( qword_1400271F8 )
{
v21 = 0;
do
{
v22 = *(void (__fastcall **)(LPVOID))v20;
if ( !*(_QWORD *)v20 )
goto LABEL_45;
v23 = *(_DWORD *)(v20 + 24) - 1;
v24 = TlsGetValue(v23);
if ( v24 )
{
v25 = v24;
TlsSetValue(v23, 0i64);
v22(v25);
v21 = 1;
}
v20 = *(_QWORD *)(v20 + 8);
}
while ( v20 );
if ( (v21 & 1) != 0 )
{
for ( i = qword_1400271F8; i; i = *(_QWORD *)(i + 8) )
{
v27 = *(void (__fastcall **)(LPVOID))i;
if ( !*(_QWORD *)i )
goto LABEL_45;
v28 = *(_DWORD *)(i + 24) - 1;
v29 = TlsGetValue(v28);
if ( v29 )
{
v30 = v29;
TlsSetValue(v28, 0i64);
v27(v30);
}
}
}
}
}
}
}
}
}
}
JUMPOUT(0x14000CD9Bi64);
}
// 14000CD99: control flows out of bounds to 14000CD9B
// 14000CC24: control flows out of bounds to 14000CDA0
// 14000CC63: control flows out of bounds to 14000CDF3
// 1400271F8: using guessed type __int64 qword_1400271F8;
//----- (000000014000CE30) ----------------------------------------------------
char __fastcall sub_14000CE30(int a1)
{
char result; // al
result = 1;
if ( a1 <= 1130 )
{
if ( a1 <= 205 )
{
switch ( a1 )
{
case 2:
case 3:
result = 0;
break;
case 5:
return result;
case 8:
case 14:
result = 38;
break;
case 17:
result = 31;
break;
case 19:
result = 17;
break;
case 39:
case 112:
result = 24;
break;
case 80:
case 183:
result = 12;
break;
case 87:
goto LABEL_7;
case 109:
return 11;
case 120:
result = 36;
break;
case 121:
return 22;
case 123:
return 33;
case 132:
result = 25;
break;
case 145:
result = 16;
break;
case 170:
result = 28;
break;
default:
return 40;
}
return result;
}
if ( a1 <= 335 )
{
if ( a1 <= 231 )
{
if ( a1 == 206 )
return 33;
if ( a1 == 223 )
return 27;
return 40;
}
if ( a1 == 232 )
return 11;
if ( a1 != 258 )
{
if ( a1 == 267 )
return 14;
return 40;
}
return 22;
}
if ( a1 <= 994 )
{
if ( a1 == 336 )
return 15;
if ( a1 != 594 )
return 40;
return 22;
}
if ( a1 == 995 || a1 == 1053 || a1 == 1121 )
return 22;
return 40;
}
if ( a1 <= 10012 )
{
if ( a1 <= 5909 )
{
if ( a1 <= 1231 )
{
switch ( a1 )
{
case 1131:
return 30;
case 1142:
return 32;
case 1231:
return 5;
}
return 40;
}
if ( a1 == 1232 )
return 4;
if ( a1 == 1295 )
return 26;
if ( a1 != 1460 )
return 40;
return 22;
}
if ( a1 > 8013 )
{
if ( a1 == 8014 || a1 == 8226 || a1 == 9705 )
return 22;
}
else if ( a1 == 5910 || a1 == 7012 || a1 == 7040 )
{
return 22;
}
return 40;
}
switch ( a1 )
{
case 10013:
return result;
case 10014:
case 10015:
case 10016:
case 10017:
case 10018:
case 10019:
case 10020:
case 10021:
case 10023:
case 10024:
case 10025:
case 10026:
case 10027:
case 10028:
case 10029:
case 10030:
case 10031:
case 10032:
case 10033:
case 10034:
case 10036:
case 10037:
case 10038:
case 10039:
case 10040:
case 10041:
case 10042:
case 10043:
case 10044:
case 10045:
case 10046:
case 10047:
case 10052:
case 10055:
case 10056:
case 10058:
case 10059:
case 10062:
case 10063:
case 10064:
return 40;
case 10022:
LABEL_7:
result = 20;
break;
case 10035:
result = 13;
break;
case 10048:
result = 8;
break;
case 10049:
result = 9;
break;
case 10050:
result = 10;
break;
case 10051:
return 5;
case 10053:
result = 6;
break;
case 10054:
result = 3;
break;
case 10057:
result = 7;
break;
case 10060:
return 22;
case 10061:
result = 2;
break;
case 10065:
return 4;
default:
if ( (unsigned int)(a1 - 15402) >= 2 && a1 != 13805 )
return 40;
return 22;
}
return result;
}
//----- (000000014000D3F0) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void __fastcall sub_14000D3F0(__int64 a1, __int64 a2, __int64 a3)
{
unsigned __int64 v3; // r12
__int64 v4; // r14
__int64 v5; // r14
v3 = a3 + 1;
if ( a3 != -1 )
{
v4 = 0i64;
if ( v3 >> 62 )
sub_140015AA0();
LOBYTE(v4) = 1;
v5 = 2 * v4;
if ( 2 * v3 )
{
if ( sub_1400010D0(2 * v3, v5) )
goto LABEL_5;
LABEL_7:
sub_14001CB30();
}
if ( !v5 )
goto LABEL_7;
}
LABEL_5:
JUMPOUT(0x14000D47Ci64);
}
// 14000D579: positive sp value 98 has been found
// 14000D476: control flows out of bounds to 14000D47C
// 1400010D0: using guessed type __int64 __fastcall sub_1400010D0(_QWORD, _QWORD);
//----- (000000014000D5D0) ----------------------------------------------------
__int64 __fastcall sub_14000D5D0(__int64 a1, __int64 a2)
{
HMODULE ModuleHandleA; // rax
HRESULT (__stdcall *SetThreadDescription)(HANDLE, PCWSTR); // rax
ModuleHandleA = GetModuleHandleA("kernel32");
if ( !ModuleHandleA
|| (SetThreadDescription = (HRESULT (__stdcall *)(HANDLE, PCWSTR))GetProcAddress(
ModuleHandleA,
"SetThreadDescription")) == 0i64 )
{
SetThreadDescription = (HRESULT (__stdcall *)(HANDLE, PCWSTR))sub_14000D620;
}
off_140027038 = (__int64 (__fastcall *)(_QWORD, _QWORD))SetThreadDescription;
return ((__int64 (__fastcall *)(__int64, __int64))SetThreadDescription)(a1, a2);
}
// 140027038: using guessed type __int64 (__fastcall *off_140027038)(_QWORD, _QWORD);
//----- (000000014000D620) ----------------------------------------------------
__int64 sub_14000D620()
{
SetLastError(0x78u);
return 2147500033i64;
}
//----- (000000014000D640) ----------------------------------------------------
__int64 __fastcall sub_14000D640(__int64 a1, unsigned int a2, __int64 a3, unsigned int a4)
{
HMODULE ModuleHandleA; // rax
NTSTATUS (__stdcall *NtCreateKeyedEvent)(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, ULONG); // rax
ModuleHandleA = GetModuleHandleA("ntdll");
if ( !ModuleHandleA
|| (NtCreateKeyedEvent = (NTSTATUS (__stdcall *)(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, ULONG))GetProcAddress(ModuleHandleA, "NtCreateKeyedEvent")) == 0i64 )
{
NtCreateKeyedEvent = (NTSTATUS (__stdcall *)(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, ULONG))sub_14000D6A0;
}
off_140027040 = (__int64 (__fastcall *)(_QWORD, _QWORD, _QWORD, _QWORD))NtCreateKeyedEvent;
return ((__int64 (__fastcall *)(__int64, _QWORD, __int64, _QWORD))NtCreateKeyedEvent)(a1, a2, a3, a4);
}
// 140027040: using guessed type __int64 (__fastcall *off_140027040)(_QWORD, _QWORD, _QWORD, _QWORD);
//----- (000000014000D6A0) ----------------------------------------------------
void sub_14000D6A0()
{
JUMPOUT(0x14000D6E0i64);
}
// 14000D6D8: control flows out of bounds to 14000D6E0
//----- (000000014000D720) ----------------------------------------------------
__int64 __fastcall sub_14000D720(__int64 a1, __int64 a2, unsigned int a3, __int64 a4)
{
HMODULE ModuleHandleA; // rax
NTSTATUS (__stdcall *NtReleaseKeyedEvent)(HANDLE, PVOID, BOOLEAN, PLARGE_INTEGER); // rax
ModuleHandleA = GetModuleHandleA("ntdll");
if ( !ModuleHandleA
|| (NtReleaseKeyedEvent = (NTSTATUS (__stdcall *)(HANDLE, PVOID, BOOLEAN, PLARGE_INTEGER))GetProcAddress(
ModuleHandleA,
"NtReleaseKeyedEvent")) == 0i64 )
{
NtReleaseKeyedEvent = (NTSTATUS (__stdcall *)(HANDLE, PVOID, BOOLEAN, PLARGE_INTEGER))sub_14000D790;
}
off_140027048 = (__int64 (__fastcall *)(_QWORD, _QWORD, _QWORD, _QWORD))NtReleaseKeyedEvent;
return ((__int64 (__fastcall *)(__int64, __int64, _QWORD, __int64))NtReleaseKeyedEvent)(a1, a2, a3, a4);
}
// 140027048: using guessed type __int64 (__fastcall *off_140027048)(_QWORD, _QWORD, _QWORD, _QWORD);
//----- (000000014000D790) ----------------------------------------------------
void sub_14000D790()
{
JUMPOUT(0x14000D7D0i64);
}
// 14000D7C8: control flows out of bounds to 14000D7D0
//----- (000000014000D810) ----------------------------------------------------
__int64 __fastcall sub_14000D810(__int64 a1, __int64 a2, unsigned int a3, __int64 a4)
{
HMODULE ModuleHandleA; // rax
NTSTATUS (__stdcall *NtWaitForKeyedEvent)(HANDLE, PVOID, BOOLEAN, PLARGE_INTEGER); // rax
ModuleHandleA = GetModuleHandleA("ntdll");
if ( !ModuleHandleA
|| (NtWaitForKeyedEvent = (NTSTATUS (__stdcall *)(HANDLE, PVOID, BOOLEAN, PLARGE_INTEGER))GetProcAddress(
ModuleHandleA,
"NtWaitForKeyedEvent")) == 0i64 )
{
NtWaitForKeyedEvent = (NTSTATUS (__stdcall *)(HANDLE, PVOID, BOOLEAN, PLARGE_INTEGER))sub_14000D880;
}
off_140027050 = (__int64 (__fastcall *)(_QWORD, _QWORD, _QWORD, _QWORD))NtWaitForKeyedEvent;
return ((__int64 (__fastcall *)(__int64, __int64, _QWORD, __int64))NtWaitForKeyedEvent)(a1, a2, a3, a4);
}
// 140027050: using guessed type __int64 (__fastcall *off_140027050)(_QWORD, _QWORD, _QWORD, _QWORD);
//----- (000000014000D880) ----------------------------------------------------
void sub_14000D880()
{
JUMPOUT(0x14000D8C0i64);
}
// 14000D8B8: control flows out of bounds to 14000D8C0
//----- (000000014000D900) ----------------------------------------------------
__int64 __fastcall Handler(struct _EXCEPTION_POINTERS *ExceptionInfo)
{
if ( ExceptionInfo->ExceptionRecord->ExceptionCode == -1073741571 )
JUMPOUT(0x14000D934i64);
return 0i64;
}
// 14000D92D: control flows out of bounds to 14000D934
//----- (000000014000DAB0) ----------------------------------------------------
__int64 __fastcall sub_14000DAB0(__int64 a1)
{
__int64 v1; // rax
__int64 result; // rax
__int64 v3; // r15
__int64 v4; // rdi
char v5; // al
__int64 v6; // rdi
volatile signed __int64 *v7; // rcx
HANDLE v8; // rcx
int v9; // eax
signed __int64 v10; // rax
void *v11; // rbx
HANDLE hObject; // [rsp+68h] [rbp-18h] BYREF
volatile signed __int64 *v13; // [rsp+70h] [rbp-10h]
int v14; // [rsp+7Ch] [rbp-4h]
__int64 v15; // [rsp+80h] [rbp+0h]
v15 = -2i64;
v1 = _InterlockedExchange64(*(volatile __int64 **)(a1 + 8), *(_QWORD *)a1);
if ( (v1 & 3) != 2 )
JUMPOUT(0x14000DC58i64);
result = v1 - 2;
if ( result )
{
do
{
v3 = *(_QWORD *)(result + 8);
v4 = *(_QWORD *)result;
*(_QWORD *)result = 0i64;
if ( !v4 )
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806f2"
"3a127002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_1400206D8);
v13 = (volatile signed __int64 *)v4;
*(_BYTE *)(result + 16) = 1;
v5 = *(_BYTE *)(v4 + 40);
*(_BYTE *)(v4 + 40) = 1;
if ( v5 == -1 )
{
v6 = v4 + 40;
if ( !qword_140027208 )
{
v8 = (HANDLE)qword_140027030;
if ( qword_140027030 == -1 )
{
hObject = (HANDLE)-1i64;
v9 = off_140027040(&hObject, 3221225472i64, 0i64, 0i64);
if ( v9 )
{
v14 = v9;
JUMPOUT(0x14000DC46i64);
}
v8 = hObject;
v10 = _InterlockedCompareExchange64(&qword_140027030, (signed __int64)hObject, -1i64);
if ( v10 != -1 )
{
v11 = (void *)v10;
CloseHandle(hObject);
v8 = v11;
}
}
off_140027048(v8, v6, 0i64, 0i64);
v7 = v13;
if ( _InterlockedDecrement64(v13) )
goto LABEL_4;
LABEL_10:
sub_140002DF0((__int64)v7);
goto LABEL_4;
}
qword_140027208(v6);
}
v7 = v13;
if ( !_InterlockedDecrement64(v13) )
goto LABEL_10;
LABEL_4:
result = v3;
}
while ( v3 );
}
return result;
}
// 14000DC3E: control flows out of bounds to 14000DC46
// 14000DAE6: control flows out of bounds to 14000DC58
// 140027208: invalid function type has been ignored
// 140027040: invalid function type has been ignored
// 140027048: invalid function type has been ignored
// 1400206D8: using guessed type void *off_1400206D8;
// 140027030: using guessed type __int64 qword_140027030;
// 140027040: using guessed type __int64 (__fastcall *off_140027040)(_QWORD, _QWORD, _QWORD, _QWORD);
// 140027048: using guessed type __int64 (__fastcall *off_140027048)(_QWORD, _QWORD, _QWORD, _QWORD);
// 140027208: using guessed type __int64 (__fastcall *qword_140027208)(_QWORD);
//----- (000000014000DCE0) ----------------------------------------------------
void __noreturn sub_14000DCE0()
{
void (*v0)(void); // r8
v0 = (void (*)(void))sub_140009770;
if ( qword_140027198 )
v0 = (void (*)(void))qword_140027198;
v0();
__fastfail(7u);
}
// 140027198: using guessed type __int64 qword_140027198;
//----- (000000014000DD10) ----------------------------------------------------
void __noreturn sub_14000DD10()
{
sub_14000DCE0();
}
//----- (000000014000DD20) ----------------------------------------------------
PRUNTIME_FUNCTION __fastcall sub_14000DD20(__int64 a1, ULONG64 a2)
{
unsigned __int64 ImageBase; // [rsp+20h] [rbp-8h] BYREF
ImageBase = 0i64;
return RtlLookupFunctionEntry(a2, &ImageBase, 0i64);
}
//----- (000000014000DD50) ----------------------------------------------------
unsigned __int64 __fastcall sub_14000DD50(__int64 a1, ULONG64 a2)
{
unsigned __int64 ImageBase; // [rsp+20h] [rbp-8h] BYREF
ImageBase = 0i64;
RtlLookupFunctionEntry(a2, &ImageBase, 0i64);
return ImageBase;
}
//----- (000000014000DD80) ----------------------------------------------------
char __fastcall sub_14000DD80(_QWORD *a1, __int64 *a2)
{
unsigned __int64 v3; // rdi
__int64 v4; // rbx
unsigned __int8 *v5; // r12
char v6; // bp
__int64 v7; // r13
unsigned __int64 v8; // r12
__int64 v10; // [rsp+20h] [rbp-58h] BYREF
unsigned __int8 *v11; // [rsp+28h] [rbp-50h]
unsigned __int64 v12; // [rsp+30h] [rbp-48h]
if ( *(_DWORD *)a1 != 2 )
return sub_140015550(a1, a2);
v3 = a1[9];
if ( !v3 )
return 0;
v4 = a1[8];
while ( 1 )
{
sub_140018DE0((__int64)&v10, v4, v3);
if ( !v10 )
break;
v5 = v11;
v6 = v12;
v7 = BYTE1(v12);
if ( (unsigned __int8)sub_1400183F0(byte_14001F628, 3ui64, a2) )
return 1;
if ( (v6 & 1) != 0 )
{
v8 = (unsigned __int64)&v5[v7];
if ( v3 < v8 )
sub_14001D030(v8, v3, (__int64)&off_14001FB98);
v4 += v8;
v3 -= v8;
if ( v3 )
continue;
}
return 0;
}
return (unsigned __int8)sub_1400183F0(v11, v12, a2) != 0;
}
// 14001F628: using guessed type unsigned __int8 byte_14001F628[8];
// 14001FB98: using guessed type char *off_14001FB98;
//----- (000000014000DE70) ----------------------------------------------------
int __fastcall sub_14000DE70(__int64 a1, __int64 a2, __int64 a3)
{
__int64 v6; // rax
void *v7; // rdx
__int64 v8; // rdi
bool v9; // zf
__int64 v10; // rsi
unsigned int v11; // ebx
BOOL (__stdcall *v12)(HANDLE, DWORD64, ULONG, PDWORD64, PSYMBOL_INFOW); // r15
BOOL (__stdcall *SymFromInlineContextW)(HANDLE, DWORD64, ULONG, PDWORD64, PSYMBOL_INFOW); // rax
HANDLE CurrentProcess; // rax
__int64 v15; // rdx
bool v16; // cf
__int64 v17; // rsi
unsigned __int64 v18; // rcx
_QWORD *v19; // rbx
BOOL (__stdcall *v20)(HANDLE, DWORD64, ULONG, DWORD64, PDWORD, PIMAGEHLP_LINEW64); // r12
BOOL (__stdcall *SymGetLineFromInlineContextW)(HANDLE, DWORD64, ULONG, DWORD64, PDWORD, PIMAGEHLP_LINEW64); // rax
HANDLE v22; // rax
__int64 v23; // rsi
int v24; // eax
__int64 v25; // rdx
int v26; // r8d
_QWORD v28[511]; // [rsp+38h] [rbp-48h] BYREF
__int128 v29[16]; // [rsp+1030h] [rbp+FB0h] BYREF
__int128 v30; // [rsp+1130h] [rbp+10B0h] BYREF
__int128 v31; // [rsp+1140h] [rbp+10C0h]
__int64 v32; // [rsp+1150h] [rbp+10D0h]
__int64 v33[3]; // [rsp+1160h] [rbp+10E0h] BYREF
int v34; // [rsp+1178h] [rbp+10F8h]
int v35; // [rsp+117Ch] [rbp+10FCh]
__int64 v36; // [rsp+1180h] [rbp+1100h]
__int64 v37; // [rsp+1188h] [rbp+1108h]
__int64 v38; // [rsp+1190h] [rbp+1110h]
__int64 v39; // [rsp+1198h] [rbp+1118h]
HANDLE hMutex; // [rsp+11A0h] [rbp+1120h]
__int64 v41; // [rsp+11A8h] [rbp+1128h]
__int64 v42; // [rsp+11B0h] [rbp+1130h]
unsigned int v43; // [rsp+11B8h] [rbp+1138h]
__int16 v44; // [rsp+11BEh] [rbp+113Eh]
__int64 v45; // [rsp+11C0h] [rbp+1140h]
v45 = -2i64;
v6 = sub_14000B610();
if ( !v6 )
{
v8 = (__int64)v7;
v9 = *(_QWORD *)(a1 + 8) == 0i64;
hMutex = v7;
if ( !v9 )
JUMPOUT(0x14000DEC8i64);
v10 = *(_QWORD *)(a1 + 16);
v11 = *(_DWORD *)(a1 + 284);
memset((char *)v28 + 4, 0, 0xFF4ui64);
LODWORD(v28[10]) = 2000;
LODWORD(v28[0]) = 88;
v12 = (BOOL (__stdcall *)(HANDLE, DWORD64, ULONG, PDWORD64, PSYMBOL_INFOW))qword_140027250;
if ( !qword_140027250 )
{
SymFromInlineContextW = (BOOL (__stdcall *)(HANDLE, DWORD64, ULONG, PDWORD64, PSYMBOL_INFOW))GetProcAddress(
hModule,
"SymFromInlineContextW");
if ( !SymFromInlineContextW )
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806f2"
"3a127002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_1400207E8);
v12 = SymFromInlineContextW;
qword_140027250 = (__int64)SymFromInlineContextW;
}
v42 = a2;
v41 = a3;
CurrentProcess = GetCurrentProcess();
v15 = 0i64;
v16 = v10 == 0;
v17 = v10 - 1;
if ( !v16 )
v15 = v17;
*(_QWORD *)&v29[0] = 0i64;
v39 = v15;
if ( ((unsigned int (__fastcall *)(HANDLE, __int64, _QWORD, __int128 *, _QWORD *))v12)(
CurrentProcess,
v15,
v11,
v29,
v28) == 1 )
{
v43 = v11;
v18 = LODWORD(v28[10]) - 1i64;
if ( HIDWORD(v28[9]) < v18 )
v18 = HIDWORD(v28[9]);
memset(v29, 0, sizeof(v29));
v19 = (_QWORD *)((char *)&v28[10] + 2 * v18 + 4);
if ( (_QWORD *)((char *)&v28[10] + 4) != v19 )
{
if ( (WORD2(v28[10]) & 0xF800) == 55296
&& WORD2(v28[10]) <= 0xDBFFu
&& (_QWORD *)((char *)&v28[10] + 6) != v19
&& (unsigned __int16)(HIWORD(v28[10]) + 0x2000) < 0xFC00u )
{
v44 = HIWORD(v28[10]);
}
JUMPOUT(0x14000E157i64);
}
v30 = 0i64;
v31 = 0i64;
v32 = 0i64;
LODWORD(v30) = 40;
v20 = (BOOL (__stdcall *)(HANDLE, DWORD64, ULONG, DWORD64, PDWORD, PIMAGEHLP_LINEW64))qword_140027258;
if ( !qword_140027258 )
{
SymGetLineFromInlineContextW = (BOOL (__stdcall *)(HANDLE, DWORD64, ULONG, DWORD64, PDWORD, PIMAGEHLP_LINEW64))GetProcAddress(hModule, "SymGetLineFromInlineContextW");
if ( !SymGetLineFromInlineContextW )
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806"
"f23a127002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_1400207E8);
v20 = SymGetLineFromInlineContextW;
qword_140027258 = (__int64)SymGetLineFromInlineContextW;
}
v22 = GetCurrentProcess();
LODWORD(v33[0]) = 0;
v23 = 0i64;
v24 = ((__int64 (__fastcall *)(HANDLE, __int64, _QWORD, _QWORD, __int64 *, __int128 *))v20)(
v22,
v39,
v43,
0i64,
v33,
&v30);
if ( v24 == 1 )
{
v24 = v31;
v25 = -1i64;
v8 = *((_QWORD *)&v31 + 1);
do
v9 = *(_WORD *)(*((_QWORD *)&v31 + 1) + 2 * v25++ + 2) == 0;
while ( !v9 );
v26 = 1;
v23 = 1i64;
}
else
{
v26 = 0;
}
v33[0] = (__int64)v29;
v33[1] = 0i64;
v33[2] = v28[7];
v34 = v26;
v35 = v24;
v36 = v23;
v37 = v8;
v38 = v25;
JUMPOUT(0x14000E2DCi64);
}
LODWORD(v6) = ReleaseMutex(hMutex);
}
return v6;
}
// 14000DEC4: control flows out of bounds to 14000DEC8
// 14000E155: control flows out of bounds to 14000E157
// 14000E2D5: control flows out of bounds to 14000E2DC
// 14000E155: conditional instruction was optimized away because rdi.8 is in (1..4)
// 14000DEB3: variable 'v7' is possibly undefined
// 14000E2D5: variable 'v25' is possibly undefined
// 1400207E8: using guessed type char *off_1400207E8;
// 140027250: using guessed type __int64 qword_140027250;
// 140027258: using guessed type __int64 qword_140027258;
//----- (000000014000E3A0) ----------------------------------------------------
__int64 __fastcall sub_14000E3A0(__int64 a1, __int64 a2, __int64 a3)
{
unsigned __int16 v3; // bp
BOOL (__stdcall *v7)(HANDLE, DWORD64, PDWORD64, PSYMBOL_INFOW); // r14
BOOL (__stdcall *SymFromAddrW)(HANDLE, DWORD64, PDWORD64, PSYMBOL_INFOW); // rax
HANDLE CurrentProcess; // rax
__int128 *v10; // r15
__int64 result; // rax
unsigned __int64 v12; // rcx
char *v13; // r12
char *v14; // r13
unsigned __int64 v15; // r8
unsigned __int64 v16; // r14
unsigned __int16 v17; // ax
unsigned __int64 v18; // rcx
__int16 v19; // si
unsigned __int64 v20; // rdi
unsigned __int16 v21; // dx
unsigned __int64 v22; // rbx
BOOL (__stdcall *v23)(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64); // r15
BOOL (__stdcall *SymGetLineFromAddrW64)(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64); // rax
HANDLE v25; // rax
int v26; // eax
__int64 v27; // rdx
__int64 v28; // rcx
int v30; // r9d
__int64 v31; // r8
__int64 v32; // [rsp+20h] [rbp-11B8h]
__int64 v33; // [rsp+28h] [rbp-11B0h]
__int64 v34; // [rsp+30h] [rbp-11A8h]
__int64 v35[3]; // [rsp+38h] [rbp-11A0h] BYREF
int v36; // [rsp+50h] [rbp-1188h]
int v37; // [rsp+54h] [rbp-1184h]
__int64 v38; // [rsp+58h] [rbp-1180h]
__int64 v39; // [rsp+60h] [rbp-1178h]
__int64 v40; // [rsp+68h] [rbp-1170h]
__int128 v41; // [rsp+70h] [rbp-1168h] BYREF
__int128 v42; // [rsp+80h] [rbp-1158h]
__int64 v43; // [rsp+90h] [rbp-1148h]
__int128 v44[16]; // [rsp+A0h] [rbp-1138h] BYREF
_QWORD v45[519]; // [rsp+1A0h] [rbp-1038h] BYREF
memset((char *)v45 + 4, 0, 0xFF4ui64);
LODWORD(v45[10]) = 2000;
LODWORD(v45[0]) = 88;
v7 = (BOOL (__stdcall *)(HANDLE, DWORD64, PDWORD64, PSYMBOL_INFOW))qword_140027238;
if ( !qword_140027238 )
{
SymFromAddrW = (BOOL (__stdcall *)(HANDLE, DWORD64, PDWORD64, PSYMBOL_INFOW))GetProcAddress(hModule, "SymFromAddrW");
if ( !SymFromAddrW )
goto LABEL_41;
v7 = SymFromAddrW;
qword_140027238 = (__int64)SymFromAddrW;
}
CurrentProcess = GetCurrentProcess();
*(_QWORD *)&v44[0] = 0i64;
v10 = v44;
result = ((__int64 (__fastcall *)(HANDLE, __int64, __int128 *, _QWORD *))v7)(CurrentProcess, a1, v44, v45);
if ( (_DWORD)result != 1 )
return result;
v32 = a1;
v33 = a2;
v34 = a3;
v12 = LODWORD(v45[10]) - 1i64;
if ( HIDWORD(v45[9]) < v12 )
v12 = HIDWORD(v45[9]);
v13 = (char *)&v45[10] + 4;
memset(v44, 0, sizeof(v44));
v14 = (char *)&v45[10] + 2 * v12 + 4;
v15 = 256i64;
v16 = 0i64;
LABEL_9:
if ( v13 != v14 )
{
v17 = *(_WORD *)v13;
v13 += 2;
while ( 1 )
{
if ( (v17 & 0xF800) == 55296 )
{
LODWORD(v18) = 65533;
if ( v17 > 0xDBFFu )
{
v19 = 0;
v20 = 3i64;
goto LABEL_24;
}
if ( v13 == v14 )
{
v19 = 0;
v13 = v14;
v20 = 3i64;
goto LABEL_24;
}
v21 = *(_WORD *)v13;
v13 += 2;
v19 = 1;
if ( (unsigned __int16)(v21 + 0x2000) < 0xFC00u )
{
v3 = v21;
v20 = 3i64;
goto LABEL_24;
}
v18 = ((((unsigned __int64)(v17 & 0x3FF) << 26) | ((unsigned __int64)(v21 & 0x3FF) << 16)) + 0x100000000i64) >> 16;
if ( (unsigned int)v18 < 0x80 )
{
LABEL_15:
v20 = 1i64;
LABEL_23:
v19 = 0;
goto LABEL_24;
}
}
else
{
LODWORD(v18) = v17;
if ( v17 < 0x80u )
goto LABEL_15;
}
if ( (unsigned int)v18 <= 0x7FF )
{
v20 = 2i64;
goto LABEL_23;
}
v20 = 4i64;
v19 = 0;
if ( (unsigned int)v18 <= 0xFFFF )
v20 = 3i64;
LABEL_24:
v22 = v15 - v20;
if ( v15 <= v20 )
break;
sub_140001F40(v18, v10, v15);
v10 = (__int128 *)((char *)v10 + v20);
v16 += v20;
v15 = v22;
if ( !v19 )
goto LABEL_9;
v17 = v3;
}
}
if ( v16 >= 0x101 )
sub_14001D040(v16, 256i64, (__int64)&off_140020728);
v41 = 0i64;
v42 = 0i64;
v43 = 0i64;
LODWORD(v41) = 40;
v23 = (BOOL (__stdcall *)(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64))qword_140027240;
if ( !qword_140027240 )
{
SymGetLineFromAddrW64 = (BOOL (__stdcall *)(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64))GetProcAddress(
hModule,
"SymGetLineFromAddrW64");
if ( SymGetLineFromAddrW64 )
{
v23 = SymGetLineFromAddrW64;
qword_140027240 = (__int64)SymGetLineFromAddrW64;
goto LABEL_33;
}
LABEL_41:
sub_14001CC50(
(__int64)"called `Option::unwrap()` on a `None` valueinternal error: entered unreachable code/rustc/90c541806f23a12"
"7002de5b4038be731ba1458ca\\library\\alloc\\src\\vec\\mod.rs",
43i64,
(__int64)&off_1400207E8);
}
LABEL_33:
v25 = GetCurrentProcess();
LODWORD(v35[0]) = 0;
v26 = ((__int64 (__fastcall *)(HANDLE, __int64, __int64 *, __int128 *))v23)(v25, v32, v35, &v41);
if ( v26 == 1 )
{
v26 = v42;
v27 = -1i64;
v28 = *((_QWORD *)&v42 + 1);
while ( *(_WORD *)(*((_QWORD *)&v42 + 1) + 2 * v27++ + 2) != 0 )
;
v30 = 1;
v31 = 1i64;
}
else
{
v31 = 0i64;
v30 = 0;
}
v35[0] = (__int64)v44;
v35[1] = v16;
v35[2] = v45[7];
v36 = v30;
v37 = v26;
v38 = v31;
v39 = v28;
v40 = v27;
return (*(__int64 (__fastcall **)(__int64, __int64 *))(v34 + 32))(v33, v35);
}
// 14000E530: variable 'v3' is possibly undefined
// 14000E76D: variable 'v28' is possibly undefined
// 14000E772: variable 'v27' is possibly undefined
// 140020728: using guessed type void *off_140020728;
// 1400207E8: using guessed type char *off_1400207E8;
// 140027238: using guessed type __int64 qword_140027238;
// 140027240: using guessed type __int64 qword_140027240;
//----- (000000014000E7D0) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void sub_14000E7D0()
{
JUMPOUT(0x14000E7F0i64);
}
// 14000E80F: positive sp value 38 has been found
// 14000E7EC: control flows out of bounds to 14000E7F0
//----- (000000014000E850) ----------------------------------------------------
_QWORD *__fastcall sub_14000E850(_QWORD *a1, __int64 a2)
{
__int64 v2; // rax
__int64 v3; // r8
if ( !a2 || *(void ****)a2 != &off_140027080 )
{
sub_140009BE0();
BUG();
}
v2 = *(_QWORD *)(a2 + 8);
v3 = *(_QWORD *)(a2 + 16);
*(_QWORD *)(a2 + 8) = 0i64;
if ( !v2 )
JUMPOUT(0x14000E89Fi64);
*a1 = v2;
a1[1] = v3;
return a1;
}
// 14000E886: control flows out of bounds to 14000E89F
// 140027080: using guessed type void **off_140027080;
//----- (000000014000E8E0) ----------------------------------------------------
void __fastcall __noreturn sub_14000E8E0(__int64 a1, __int64 a2)
{
__int64 v2; // rax
__int64 v3; // rdx
__int64 pExceptionObject[3]; // [rsp+20h] [rbp-18h] BYREF
v2 = (*(__int64 (**)(void))(a2 + 24))();
pExceptionObject[0] = (__int64)&off_140027080;
pExceptionObject[1] = v2;
pExceptionObject[2] = v3;
_InterlockedExchange(&pThrowInfo.pmfnUnwind, (unsigned int)sub_14000E960 - 0x40000000);
_InterlockedExchange(&pThrowInfo.pCatchableTypeArray, (unsigned int)&unk_140027058 - 0x40000000);
_InterlockedExchange(&dword_14002705C, (unsigned int)&unk_140027060 - 0x40000000);
_InterlockedExchange(dword_140027064, (unsigned int)&off_140027080 - 0x40000000);
_InterlockedExchange(&dword_140027078, (unsigned int)sub_14000E9C0 - 0x40000000);
CxxThrowException(pExceptionObject, &pThrowInfo);
}
// 14000E8F8: variable 'v3' is possibly undefined
// 14002705C: using guessed type int dword_14002705C;
// 140027064: using guessed type int dword_140027064[5];
// 140027078: using guessed type int dword_140027078;
// 140027080: using guessed type void **off_140027080;
//----- (000000014000E960) ----------------------------------------------------
__int64 __fastcall sub_14000E960(__int64 a1)
{
__int64 result; // rax
result = *(_QWORD *)(a1 + 8);
if ( result )
JUMPOUT(0x14000E98Di64);
return result;
}
// 14000E989: control flows out of bounds to 14000E98D
//----- (000000014000E9C0) ----------------------------------------------------
void __noreturn sub_14000E9C0()
{
__int64 v0[6]; // [rsp+28h] [rbp-30h] BYREF
v0[2] = (__int64)&off_140020888;
v0[3] = 1i64;
v0[0] = 0i64;
v0[4] = (__int64)"called `Option::unwrap()` on a `None` valuelibrary\\panic_unwind\\src\\seh.rs";
v0[5] = 0i64;
sub_14001CBB0((__int64)v0, (__int64)&off_140020898);
}
// 140020888: using guessed type char *off_140020888;
// 140020898: using guessed type void *off_140020898;
//----- (000000014000EA10) ----------------------------------------------------
__int64 __fastcall sub_14000EA10(unsigned __int8 **a1)
{
unsigned __int8 *v1; // rdx
unsigned __int8 *v2; // rax
bool v3; // cf
unsigned __int64 v4; // rdx
__int64 result; // rax
unsigned __int8 *v6; // r8
unsigned __int8 *v7; // r10
int v8; // r9d
int v9; // r8d
unsigned int v10; // eax
int v11; // r9d
unsigned int v12; // r9d
unsigned int v13; // r9d
int v14; // r8d
unsigned int v15; // r8d
char v16; // r9
unsigned __int64 v17; // r8
char v18; // al
char *v19; // rcx
char v20; // r9
char *v21; // r8
unsigned __int8 *v22; // r11
int v23; // ebx
int v24; // edi
int v25; // ebx
int v26; // ebx
unsigned int v27; // ebx
int v28; // edi
unsigned int v29; // edi
unsigned __int8 *v30; // r9
int v31; // edi
int v32; // esi
int v33; // edi
int v34; // edi
unsigned int v35; // edi
int v36; // esi
unsigned int v37; // esi
int v38; // edx
int v39; // ecx
unsigned int v40; // eax
int v41; // edx
unsigned int v42; // edx
unsigned int v43; // edx
int v44; // ecx
unsigned int v45; // ecx
int v46; // eax
int v47; // r11d
int v48; // r10d
char v49; // r9
bool v50; // r8
char v51; // [rsp+24h] [rbp-A4h] BYREF
__int16 v52; // [rsp+25h] [rbp-A3h]
char v53; // [rsp+27h] [rbp-A1h]
char *v54; // [rsp+28h] [rbp-A0h] BYREF
unsigned __int64 v55; // [rsp+30h] [rbp-98h]
unsigned __int64 v56; // [rsp+38h] [rbp-90h] BYREF
__int64 *v57; // [rsp+40h] [rbp-88h] BYREF
char *v58; // [rsp+48h] [rbp-80h]
__int64 *v59; // [rsp+50h] [rbp-78h]
char (__fastcall *v60)(__int64, __int64 *); // [rsp+58h] [rbp-70h]
unsigned __int64 *v61; // [rsp+60h] [rbp-68h]
__int64 (__fastcall *v62)(unsigned __int64 *, __int64); // [rsp+68h] [rbp-60h]
__int64 v63[2]; // [rsp+70h] [rbp-58h] BYREF
__int64 v64[9]; // [rsp+80h] [rbp-48h] BYREF
v1 = a1[1];
v2 = a1[4];
v3 = v1 < v2;
v4 = v1 - v2;
if ( v3 )
return 1114113i64;
v6 = *a1;
v7 = &v2[(_QWORD)*a1];
*a1 = v7;
a1[1] = (unsigned __int8 *)v4;
if ( v2 != (unsigned __int8 *)2 )
sub_14001CC50((__int64)&unk_140020F08, 40i64, (__int64)&off_140020F30);
v8 = *v6;
v9 = v6[1];
LOBYTE(v10) = v8 - 48;
if ( (unsigned int)(v8 - 48) >= 0xA )
{
v11 = (v8 | 0x20) - 97;
v3 = __CFADD__(v11, 10);
v12 = v11 + 10;
v10 = -1;
if ( !v3 )
v10 = v12;
if ( v10 >= 0x10 )
goto LABEL_71;
}
LOBYTE(v13) = v9 - 48;
if ( (unsigned int)(v9 - 48) >= 0xA )
{
v14 = (v9 | 0x20) - 97;
v3 = __CFADD__(v14, 10);
v15 = v14 + 10;
v13 = -1;
if ( !v3 )
v13 = v15;
if ( v13 >= 0x10 )
goto LABEL_71;
}
v16 = (16 * v10) | v13;
if ( v16 < 0 )
{
result = 1114112i64;
if ( (unsigned __int8)v16 < 0xC0u )
return result;
if ( (unsigned __int8)v16 >= 0xE0u )
{
if ( (unsigned __int8)v16 < 0xF0u )
{
v17 = 3i64;
v18 = 1;
LABEL_26:
v51 = v16;
v52 = 0;
v53 = 0;
v54 = &v51;
v55 = v17;
if ( v4 < 2 )
return 1114112i64;
v22 = v7 + 2;
*a1 = v7 + 2;
a1[1] = (unsigned __int8 *)(v4 - 2);
v23 = *v7;
v24 = v7[1];
LOBYTE(v7) = v23 - 48;
if ( (unsigned int)(v23 - 48) < 0xA )
goto LABEL_34;
v25 = (v23 | 0x20) - 97;
v3 = __CFADD__(v25, 10);
v26 = v25 + 10;
LODWORD(v7) = -1;
if ( !v3 )
LODWORD(v7) = v26;
if ( (unsigned int)v7 <= 0xF )
{
LABEL_34:
LOBYTE(v27) = v24 - 48;
if ( (unsigned int)(v24 - 48) < 0xA )
goto LABEL_35;
v28 = (v24 | 0x20) - 97;
v3 = __CFADD__(v28, 10);
v29 = v28 + 10;
v27 = -1;
if ( !v3 )
v27 = v29;
if ( v27 <= 0xF )
{
LABEL_35:
LOBYTE(v52) = (16 * (_BYTE)v7) | v27;
if ( (unsigned __int8)v16 < 0xE0u )
goto LABEL_14;
if ( v4 - 2 < 2 )
return 1114112i64;
v30 = v22 + 2;
*a1 = v22 + 2;
a1[1] = (unsigned __int8 *)(v4 - 4);
v31 = *v22;
v32 = v22[1];
LOBYTE(v22) = v31 - 48;
if ( (unsigned int)(v31 - 48) < 0xA )
goto LABEL_44;
v33 = (v31 | 0x20) - 97;
v3 = __CFADD__(v33, 10);
v34 = v33 + 10;
LODWORD(v22) = -1;
if ( !v3 )
LODWORD(v22) = v34;
if ( (unsigned int)v22 <= 0xF )
{
LABEL_44:
LOBYTE(v35) = v32 - 48;
if ( (unsigned int)(v32 - 48) < 0xA )
goto LABEL_45;
v36 = (v32 | 0x20) - 97;
v3 = __CFADD__(v36, 10);
v37 = v36 + 10;
v35 = -1;
if ( !v3 )
v35 = v37;
if ( v35 <= 0xF )
{
LABEL_45:
HIBYTE(v52) = (16 * (_BYTE)v22) | v35;
if ( v18 )
goto LABEL_14;
if ( v4 - 4 < 2 )
return 1114112i64;
*a1 = v30 + 2;
a1[1] = (unsigned __int8 *)(v4 - 6);
v38 = *v30;
v39 = v30[1];
LOBYTE(v40) = v38 - 48;
if ( (unsigned int)(v38 - 48) < 0xA )
goto LABEL_54;
v41 = (v38 | 0x20) - 97;
v3 = __CFADD__(v41, 10);
v42 = v41 + 10;
v40 = -1;
if ( !v3 )
v40 = v42;
if ( v40 <= 0xF )
{
LABEL_54:
LOBYTE(v43) = v39 - 48;
if ( (unsigned int)(v39 - 48) < 0xA )
goto LABEL_55;
v44 = (v39 | 0x20) - 97;
v3 = __CFADD__(v44, 10);
v45 = v44 + 10;
v43 = -1;
if ( !v3 )
v43 = v45;
if ( v43 <= 0xF )
{
LABEL_55:
v53 = (16 * v40) | v43;
goto LABEL_14;
}
}
}
}
}
}
LABEL_71:
sub_14001CC50((__int64)"called `Option::unwrap()` on a `None` value", 43i64, (__int64)&off_140020F48);
}
if ( (unsigned __int8)v16 >= 0xF8u )
return result;
v17 = 4i64;
}
else
{
v17 = 2i64;
}
v18 = 0;
goto LABEL_26;
}
v51 = v16;
v52 = 0;
v53 = 0;
v54 = &v51;
v55 = 1i64;
v17 = 1i64;
LABEL_14:
sub_140018DE0((__int64)&v57, (__int64)&v51, v17);
if ( v57 )
return 1114112i64;
v63[0] = (__int64)v58;
v63[1] = (__int64)v59;
v19 = (char *)v59 + (_QWORD)v58;
if ( v59 )
{
v20 = *v58;
if ( *v58 < 0 )
{
v46 = v20 & 0x1F;
v47 = v58[1] & 0x3F;
if ( (unsigned __int8)v20 <= 0xDFu )
{
v21 = v58 + 2;
result = v47 | (unsigned int)(v46 << 6);
}
else
{
v48 = (v47 << 6) | v58[2] & 0x3F;
if ( (unsigned __int8)v20 < 0xF0u )
{
v21 = v58 + 3;
result = v48 | (unsigned int)(v46 << 12);
}
else
{
v21 = v58 + 4;
result = (v48 << 6) | v58[3] & 0x3F | ((unsigned __int8)(v20 & 7) << 18);
}
}
}
else
{
v21 = v58 + 1;
result = (unsigned __int8)*v58;
}
}
else
{
result = 1114112i64;
v21 = v58;
}
if ( v21 == v19 )
{
v50 = 1;
if ( (_DWORD)result == 1114112 )
goto LABEL_73;
}
else
{
v49 = *v21;
if ( *v21 >= 0
|| (unsigned __int8)v49 < 0xF0u
|| (v50 = (((v49 & 7) << 18) | ((v21[1] & 0x3F) << 12) | ((v21[2] & 0x3F) << 6) | v21[3] & 0x3F) == 1114112,
(_DWORD)result == 1114112) )
{
LABEL_73:
v56 = sub_14000F5C0((__int64)v19, v58);
v57 = (__int64 *)&v54;
v58 = (char *)sub_14000F010;
v59 = v63;
v60 = sub_14000EF30;
v61 = &v56;
v62 = sub_14001AD00;
v64[2] = (__int64)&off_140020FD0;
v64[3] = 4i64;
v64[0] = 0i64;
v64[4] = (__int64)&v57;
v64[5] = 3i64;
sub_14001CBB0((__int64)v64, (__int64)&off_140021010);
}
}
if ( !v50 )
goto LABEL_73;
return result;
}
// 140020F30: using guessed type char *off_140020F30;
// 140020F48: using guessed type char *off_140020F48;
// 140020FD0: using guessed type void *off_140020FD0;
// 140021010: using guessed type char *off_140021010;
//----- (000000014000EED0) ----------------------------------------------------
__int64 __fastcall sub_14000EED0(unsigned __int8 **a1, __int64 a2)
{
unsigned __int8 *v3; // rdi
v3 = *a1;
if ( sub_140017C50(a2) )
return sub_14001A310(v3, a2);
if ( sub_140017C60(a2) )
return sub_14001A3B0(v3, a2);
return sub_14001AA00(v3, a2);
}
//----- (000000014000EF30) ----------------------------------------------------
char __fastcall sub_14000EF30(__int64 a1, __int64 *a2)
{
return sub_140017EB0(*(char **)a1, *(_QWORD *)(a1 + 8), a2);
}
//----- (000000014000EF50) ----------------------------------------------------
char __fastcall sub_14000EF50(__int64 *a1, __int64 *a2)
{
__int64 v2; // rcx
__int128 v4; // [rsp+28h] [rbp-30h] BYREF
__int64 v5; // [rsp+38h] [rbp-20h]
int v6; // [rsp+40h] [rbp-18h]
__int64 *v7; // [rsp+48h] [rbp-10h]
int v8; // [rsp+50h] [rbp-8h]
v2 = *a1;
if ( *(_QWORD *)v2 )
return sub_14000F7F0(v2, a2);
v4 = *(_OWORD *)(v2 + 8);
v5 = 0i64;
v6 = 0;
v7 = a2;
v8 = 0;
LOBYTE(a2) = 1;
return sub_140012370((__int64)&v4, (unsigned int)a2);
}
//----- (000000014000EFA0) ----------------------------------------------------
__int64 __fastcall sub_14000EFA0(__int64 a1, __int64 *a2)
{
return sub_140017890(a2, byte_1400208B0, 2ui64);
}
// 1400208B0: using guessed type unsigned __int8 byte_1400208B0[8];
//----- (000000014000EFC0) ----------------------------------------------------
char *__fastcall sub_14000EFC0(unsigned __int64 a1, char *a2, unsigned __int64 a3, __int64 a4)
{
if ( a1 )
{
if ( a3 <= a1 )
{
if ( a3 != a1 )
LABEL_4:
sub_14001D0B0(a2, a3, a1, a3, a4);
}
else if ( a2[a1] <= -65 )
{
goto LABEL_4;
}
}
return &a2[a1];
}
//----- (000000014000F010) ----------------------------------------------------
char __fastcall sub_14000F010(__int64 *a1, _QWORD *a2)
{
__int64 v2; // r14
__int64 v3; // r15
__int64 v5; // [rsp+28h] [rbp-40h] BYREF
char v6[56]; // [rsp+30h] [rbp-38h] BYREF
v2 = *a1;
v3 = a1[1];
sub_140017E50((__int64)v6, a2);
for ( ; v3; --v3 )
{
v5 = v2++;
sub_140017010(v6, (__int64)&v5, (__int64)&off_1400208E8);
}
return sub_140017030((__int64)v6);
}
// 1400208E8: using guessed type __int64 (__fastcall *off_1400208E8)();
//----- (000000014000F090) ----------------------------------------------------
char __fastcall sub_14000F090(__int64 *a1, unsigned int a2)
{
__int64 v2; // rcx
unsigned __int64 v3; // r8
bool v4; // al
bool v5; // cf
__int64 v6; // rdx
char result; // al
v2 = *a1;
if ( a2 >= 0x80 )
{
if ( a2 >= 0x800 )
{
if ( a2 >= 0x10000 )
v3 = 4i64;
else
v3 = 3i64;
}
else
{
v3 = 2i64;
}
}
else
{
v3 = 1i64;
}
v4 = *(_QWORD *)v2 != 0i64;
v5 = *(_QWORD *)(v2 + 8) < v3;
*(_QWORD *)(v2 + 8) -= v3;
v6 = v4 | (unsigned __int8)v5;
*(_QWORD *)v2 = v6;
result = 1;
if ( !(_BYTE)v6 )
return sub_140017BE0(*(_QWORD **)(v2 + 16));
return result;
}
//----- (000000014000F170) ----------------------------------------------------
bool __fastcall sub_14000F170(__int64 *a1, __int128 *a2)
{
__int64 v2; // rax
__int128 v3; // xmm0
__int128 v4; // xmm1
__int64 v6; // [rsp+28h] [rbp-40h] BYREF
__int128 v7[3]; // [rsp+30h] [rbp-38h] BYREF
v2 = *a1;
v3 = *a2;
v4 = a2[1];
v7[2] = a2[2];
v7[1] = v4;
v7[0] = v3;
v6 = v2;
return sub_1400172A0((__int64)&v6, (__int64)&off_1400208B8, (__int64 *)v7);
}
// 1400208B8: using guessed type __int64 (__fastcall *off_1400208B8)();
//----- (000000014000F1C0) ----------------------------------------------------
char __fastcall sub_14000F1C0(_QWORD **a1, __int64 a2, unsigned __int64 a3)
{
_QWORD *v3; // rax
bool v4; // cl
bool v5; // cf
__int64 v6; // rcx
v3 = *a1;
v4 = **a1 != 0i64;
v5 = v3[1] < a3;
v3[1] -= a3;
v6 = v4 | (unsigned __int8)v5;
*v3 = v6;
if ( (_BYTE)v6 )
return 1;
else
return sub_140017BE0((_QWORD *)v3[2]);
}
//----- (000000014000F1F0) ----------------------------------------------------
void __fastcall sub_14000F1F0(_QWORD *a1, __int64 a2)
{
unsigned __int64 v2; // rax
unsigned __int64 v3; // r8
char *v4; // rsi
unsigned __int64 v5; // r11
unsigned __int64 v6; // r9
unsigned __int64 v7; // r10
unsigned __int64 v8; // r13
__int64 v9; // r14
__int64 v10; // rcx
unsigned __int64 v11; // r12
__int64 v12; // r10
unsigned __int64 v13; // r15
char v14; // r10
char *v15; // rax
unsigned __int64 v16; // r9
unsigned __int64 v17; // r9
unsigned __int64 v18; // r9
unsigned __int64 v19; // rbx
unsigned __int64 v20; // r10
bool v21; // zf
unsigned __int64 v22; // rbx
unsigned __int64 v23; // r9
__int64 v24; // r10
char v25; // bl
unsigned int v26; // r9d
int v27; // r11d
int v28; // esi
int v29; // r9d
unsigned __int64 v30; // r9
__int64 v31; // rax
unsigned __int64 v32; // r9
char **v33; // r8
__int64 v34; // rcx
unsigned __int64 v35; // [rsp+28h] [rbp-70h]
_QWORD *v36; // [rsp+30h] [rbp-68h]
unsigned __int64 v37; // [rsp+38h] [rbp-60h]
unsigned __int64 v38; // [rsp+40h] [rbp-58h]
unsigned __int64 v39; // [rsp+50h] [rbp-48h]
if ( *(_QWORD *)(a2 + 32) )
{
v2 = *(_QWORD *)(a2 + 8);
v3 = *(_QWORD *)(a2 + 72);
if ( v3 != v2 )
{
v36 = a1;
v4 = *(char **)a2;
v5 = *(_QWORD *)(a2 + 24);
v6 = v3 + v5 - 1;
v7 = *(_QWORD *)(a2 + 8);
if ( v6 < v2 )
{
v8 = *(_QWORD *)(a2 + 88);
v9 = *(_QWORD *)(a2 + 16);
v35 = v3 + v5;
v10 = *(_QWORD *)(a2 + 64);
v11 = *(_QWORD *)(a2 + 40);
v12 = *(_QWORD *)(a2 + 56);
v37 = v5 - v12;
v38 = v3 + v12;
v39 = v5 - 1;
v13 = v8;
v7 = *(_QWORD *)(a2 + 72);
while ( v3 == v7 )
{
if ( _bittest64(&v10, (unsigned __int8)v4[v6]) )
{
v18 = v13;
if ( v11 > v13 )
v18 = v11;
if ( v8 == -1i64 )
v18 = v11;
v19 = v18;
do
{
if ( v19 >= v5 )
{
v22 = v13;
if ( v8 == -1i64 )
v22 = 0i64;
v23 = v11;
do
{
if ( v22 >= v23 )
{
*(_QWORD *)(a2 + 72) = v35;
if ( v8 != -1i64 )
*(_QWORD *)(a2 + 88) = 0i64;
*v36 = 0i64;
v36[1] = v3;
v36[2] = v35;
return;
}
if ( --v23 >= v5 )
sub_14001CD00(v23, v5, (__int64)&off_1400209D8);
v24 = v23 + v3;
if ( v23 + v3 >= v2 )
{
v33 = &off_1400209F0;
v34 = v24;
goto LABEL_77;
}
}
while ( *(_BYTE *)(v9 + v23) == v4[v24] );
v7 = v38;
*(_QWORD *)(a2 + 72) = v38;
v17 = v37;
if ( v8 != -1i64 )
goto LABEL_12;
goto LABEL_13;
}
if ( v3 + v19 >= v2 )
{
v32 = v3 + v18;
if ( v2 > v32 )
v32 = v2;
v33 = &off_1400209C0;
v34 = v32;
LABEL_77:
sub_14001CD00(v34, v2, (__int64)v33);
}
v20 = v19 + 1;
v21 = *(_BYTE *)(v9 + v19) == (unsigned __int8)v4[v3 + v19];
++v19;
}
while ( v21 );
v7 = v3 - v11 + v20;
*(_QWORD *)(a2 + 72) = v7;
if ( v8 != -1i64 )
{
v17 = 0i64;
goto LABEL_12;
}
}
else
{
v7 = v3 + v5;
*(_QWORD *)(a2 + 72) = v35;
if ( v8 != -1i64 )
{
v17 = 0i64;
v7 = v3 + v5;
LABEL_12:
*(_QWORD *)(a2 + 88) = v17;
v13 = v17;
}
}
LABEL_13:
v6 = v7 + v39;
if ( v7 + v39 >= v2 )
{
v7 = v2;
break;
}
}
}
if ( v7 )
{
v30 = v7;
a1 = v36;
do
{
if ( v30 >= v2 )
{
if ( v30 == v2 )
goto LABEL_58;
}
else if ( v4[v30] >= -64 )
{
v2 = v30;
goto LABEL_58;
}
++v30;
}
while ( v30 );
v2 = 0i64;
}
else
{
v2 = 0i64;
a1 = v36;
}
LABEL_58:
if ( v2 > v7 )
v7 = v2;
*(_QWORD *)(a2 + 72) = v7;
goto LABEL_61;
}
LABEL_6:
*a1 = 2i64;
return;
}
if ( *(_BYTE *)(a2 + 58) )
goto LABEL_6;
v14 = *(_BYTE *)(a2 + 56);
*(_BYTE *)(a2 + 56) = v14 ^ 1;
v3 = *(_QWORD *)(a2 + 40);
v15 = *(char **)a2;
v16 = *(_QWORD *)(a2 + 8);
if ( v3 )
{
if ( v16 <= v3 )
{
if ( v16 != v3 )
LABEL_10:
sub_14001D0B0(v15, v16, v3, v16, (__int64)&off_140020AB8);
}
else if ( v15[v3] <= -65 )
{
goto LABEL_10;
}
}
if ( v3 == v16 )
{
if ( !v14 )
{
LABEL_67:
*(_BYTE *)(a2 + 58) = 1;
goto LABEL_6;
}
}
else
{
v25 = v15[v3];
v26 = (unsigned __int8)v25;
if ( v25 < 0 )
{
v27 = v25 & 0x1F;
v28 = v15[v3 + 1] & 0x3F;
if ( (unsigned __int8)v25 <= 0xDFu )
{
v26 = v28 | (v27 << 6);
}
else
{
v29 = (v28 << 6) | v15[v3 + 2] & 0x3F;
if ( (unsigned __int8)v25 < 0xF0u )
v26 = (v27 << 12) | v29;
else
v26 = ((v25 & 7) << 18) | (v29 << 6) | v15[v3 + 3] & 0x3F;
}
}
if ( !v14 )
{
if ( v26 != 1114112 )
{
v31 = 1i64;
if ( v26 >= 0x80 )
{
v31 = 2i64;
if ( v26 > 0x7FF )
v31 = 4i64 - (v26 < 0x10000);
}
v2 = v3 + v31;
*(_QWORD *)(a2 + 40) = v2;
LABEL_61:
a1[1] = v3;
a1[2] = v2;
*a1 = 1i64;
return;
}
goto LABEL_67;
}
}
a1[1] = v3;
a1[2] = v3;
*a1 = 0i64;
}
// 1400209C0: using guessed type char *off_1400209C0;
// 1400209D8: using guessed type char *off_1400209D8;
// 1400209F0: using guessed type char *off_1400209F0;
// 140020AB8: using guessed type char *off_140020AB8;
//----- (000000014000F5C0) ----------------------------------------------------
unsigned __int64 __fastcall sub_14000F5C0(__int64 a1, _BYTE *a2)
{
unsigned __int64 v3; // rdx
_BYTE *v4; // rcx
unsigned __int64 result; // rax
_BYTE *v6; // r8
unsigned __int64 v7; // r9
__m128i v8; // xmm0
__int64 v9; // rax
__m128i si128; // xmm2
__m128i v11; // xmm3
__m128i v12; // xmm1
__m128i v13; // xmm4
__m128i v14; // xmm5
__m128i v15; // xmm1
_BYTE *v16; // rcx
v3 = a1 - (_QWORD)a2;
v4 = a2;
if ( v3 >= 0x20 )
return sub_140018FF0(a2, v3);
if ( !v3 )
return 0i64;
if ( v3 < 4 )
{
result = 0i64;
v6 = v4;
LABEL_10:
v16 = &v4[v3];
do
result += *v6++ >= 0xC0;
while ( v6 != v16 );
return result;
}
v7 = v3 & 0x1C;
v6 = &a2[v3 & 0xFFFFFFFFFFFFFFFCui64];
v8 = 0i64;
v9 = 0i64;
si128 = _mm_load_si128((const __m128i *)&xmmword_1400216E0);
v11 = _mm_load_si128((const __m128i *)&xmmword_1400216F0);
v12 = 0i64;
do
{
v13 = _mm_cmpgt_epi8(_mm_cvtsi32_si128(*(unsigned __int16 *)&v4[v9]), si128);
v8 = _mm_add_epi64(
v8,
_mm_and_si128(_mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v13, v13), 212), 212), v11));
v14 = _mm_cmpgt_epi8(_mm_cvtsi32_si128(*(unsigned __int16 *)&v4[v9 + 2]), si128);
v12 = _mm_add_epi64(
v12,
_mm_and_si128(_mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v14, v14), 212), 212), v11));
v9 += 4i64;
}
while ( v7 != v9 );
v15 = _mm_add_epi64(v12, v8);
result = _mm_add_epi64(_mm_shuffle_epi32(v15, 238), v15).m128i_u64[0];
if ( v7 != v3 )
goto LABEL_10;
return result;
}
// 14001942B: mask 0xFFFFFFFFFFFFFFFC is shortened because rdx.8 <= 0x1F
// 1400216E0: using guessed type __int128 xmmword_1400216E0;
// 1400216F0: using guessed type __int128 xmmword_1400216F0;
//----- (000000014000F5E0) ----------------------------------------------------
__int64 __fastcall sub_14000F5E0(__int64 *a1, __int64 *a2)
{
unsigned __int64 v2; // r12
unsigned __int64 v3; // r15
__int64 result; // rax
unsigned __int64 v5; // r8
unsigned __int64 v7; // rbp
__int64 v8; // rsi
__int64 v9; // rdx
_QWORD *v10; // r14
size_t v11; // rbx
unsigned __int8 v12; // cl
__int64 v13; // r9
__int64 v14; // rax
__int64 v15; // rdx
unsigned __int8 v16; // cl
__int64 v17; // r9
__int64 v18; // rax
__int64 v19; // rdx
__int64 v20; // r13
__int64 *v21; // [rsp+20h] [rbp-48h]
v2 = a2[3];
v3 = a2[2];
result = 0i64;
v5 = v2 - v3;
if ( v2 >= v3 )
{
v7 = a2[1];
if ( v2 <= v7 )
{
v21 = a1;
v8 = *a2;
v9 = *a2 + v3;
v10 = a2 + 5;
v11 = a2[4];
if ( v11 <= 4 )
{
while ( 1 )
{
v16 = *((_BYTE *)v10 + v11 - 1);
if ( v5 >= 0x10 )
{
v18 = sub_140018A00(v16, v9, v5);
v17 = v19;
if ( v18 != 1 )
{
LABEL_26:
a2[2] = v2;
result = 0i64;
a1 = v21;
goto LABEL_28;
}
}
else
{
v17 = 0i64;
if ( !v5 )
goto LABEL_26;
while ( *(_BYTE *)(v9 + v17) != v16 )
{
if ( v5 == ++v17 )
goto LABEL_26;
}
}
v3 += v17 + 1;
a2[2] = v3;
v20 = v3 - v11;
if ( v3 >= v11 && v3 <= v7 && !memcmp((const void *)(v8 + v20), a2 + 5, v11) )
{
a1 = v21;
v21[1] = v20;
v21[2] = v3;
result = 1i64;
goto LABEL_28;
}
v9 = v8 + v3;
v5 = v2 - v3;
if ( v2 < v3 )
goto LABEL_27;
}
}
do
{
v12 = *((_BYTE *)v10 + v11 - 1);
if ( v5 >= 0x10 )
{
v14 = sub_140018A00(v12, v9, v5);
v13 = v15;
if ( v14 != 1 )
goto LABEL_26;
}
else
{
v13 = 0i64;
if ( !v5 )
goto LABEL_26;
while ( *(_BYTE *)(v9 + v13) != v12 )
{
if ( v5 == ++v13 )
goto LABEL_26;
}
}
v3 += v13 + 1;
a2[2] = v3;
if ( v3 >= v11 && v3 <= v7 )
sub_14001D040(v11, 4i64, (__int64)&off_140020AD0);
v9 = v8 + v3;
v5 = v2 - v3;
}
while ( v2 >= v3 );
LABEL_27:
a1 = v21;
result = 0i64;
}
}
LABEL_28:
*a1 = result;
return result;
}
// 14000F695: variable 'v15' is possibly undefined
// 14000F755: variable 'v19' is possibly undefined
// 140020AD0: using guessed type char *off_140020AD0;
//----- (000000014000F7F0) ----------------------------------------------------
char __fastcall sub_14000F7F0(__int64 a1, __int64 *a2)
{
char *v2; // rbx
unsigned __int64 v3; // rsi
__int64 v4; // rdi
char *v5; // r15
char v6; // al
unsigned __int64 v7; // rbp
unsigned __int64 v8; // r14
int v9; // ecx
int v10; // r8d
int v11; // edx
int v12; // eax
char *v13; // r12
unsigned __int64 v14; // r13
__int64 v15; // rsi
char *v16; // rbx
char v17; // al
int v18; // edx
char *v19; // rax
int v20; // r8d
int v21; // r10d
int v22; // r9d
int v23; // edx
bool v24; // cf
unsigned int v25; // edx
char *v26; // r15
unsigned __int64 v27; // rbp
int v28; // eax
char v29; // dl
char *v30; // r15
unsigned __int64 v31; // rbp
char *v32; // r8
char *v33; // rcx
unsigned __int64 v34; // r14
int v35; // edx
char *v36; // r9
int v37; // r8d
int v38; // edi
int v39; // r10d
char *v40; // r14
unsigned __int64 v41; // rdx
unsigned __int64 v42; // r9
unsigned __int64 v43; // r8
unsigned __int64 v44; // rax
int v45; // eax
int v46; // ecx
int v47; // r8d
int v48; // eax
char *v49; // rcx
unsigned __int8 *v50; // r14
unsigned __int64 v51; // rdx
unsigned __int8 *v52; // rax
int v53; // r8d
unsigned __int8 v54; // r11
int v55; // r9d
int v56; // edi
int v57; // r10d
char v58; // di
unsigned __int64 v59; // rax
unsigned __int64 v60; // rax
char *v62; // r15
char **v63; // rax
char **v64; // rax
__int64 v66; // [rsp+38h] [rbp-A0h]
unsigned int v67; // [rsp+44h] [rbp-94h] BYREF
__int64 v68; // [rsp+48h] [rbp-90h]
char *v69; // [rsp+50h] [rbp-88h] BYREF
unsigned __int64 v70; // [rsp+58h] [rbp-80h]
__int64 v71; // [rsp+60h] [rbp-78h]
unsigned __int64 v72; // [rsp+68h] [rbp-70h]
__int64 v73; // [rsp+70h] [rbp-68h]
__int64 v74; // [rsp+78h] [rbp-60h]
__int64 v75; // [rsp+80h] [rbp-58h] BYREF
unsigned __int64 v76; // [rsp+88h] [rbp-50h]
v2 = *(char **)a1;
v3 = *(_QWORD *)(a1 + 8);
v68 = *(_QWORD *)(a1 + 16);
v66 = 0i64;
LABEL_3:
v4 = v66;
if ( v66 == v68 )
return 0;
if ( !v3 )
goto LABEL_171;
v5 = v2;
++v66;
v6 = *v2;
v7 = 0i64;
v8 = v3;
if ( *v2 >= 0 )
goto LABEL_9;
while ( 1 )
{
v9 = v6 & 0x1F;
v10 = v2[v7 + 1] & 0x3F;
if ( (unsigned __int8)v6 <= 0xDFu )
{
v12 = v10 | (v9 << 6);
goto LABEL_18;
}
v11 = (v10 << 6) | v2[v7 + 2] & 0x3F;
if ( (unsigned __int8)v6 < 0xF0u )
break;
v12 = ((v6 & 7) << 18) | (v11 << 6) | v2[v7 + 3] & 0x3F;
if ( v12 == 1114112 )
goto LABEL_171;
LABEL_18:
if ( (unsigned int)(v12 - 48) >= 0xA )
goto LABEL_19;
while ( 1 )
{
LABEL_10:
if ( v8 <= 1 )
{
if ( v3 - 1 != v7 )
LABEL_172:
sub_14001D0B0(&v2[v7], v8, 1ui64, v8, (__int64)&off_140020BB8);
LABEL_171:
sub_14001CC50((__int64)"called `Option::unwrap()` on a `None` value", 43i64, (__int64)&off_140020D70);
}
v6 = v2[v7 + 1];
if ( v6 <= -65 )
goto LABEL_172;
--v8;
++v7;
if ( v6 < 0 )
break;
LABEL_9:
if ( (unsigned int)(unsigned __int8)v6 - 48 >= 0xA )
goto LABEL_19;
}
}
if ( ((v9 << 12) | (unsigned int)v11) - 48 < 0xA )
goto LABEL_10;
LABEL_19:
if ( v7 && (v3 < v8 || v2[v7] <= -65) )
sub_14001D0B0(v2, v3, 0i64, v7, (__int64)&off_140020D28);
sub_14001A250((__int64)&v69, (unsigned __int8 *)v2, v7);
if ( (_BYTE)v69 )
{
LOBYTE(v75) = BYTE1(v69);
sub_14001CF90(
(__int64)"called `Result::unwrap()` on an `Err` value",
43i64,
(__int64)&v75,
(__int64)&off_140020A78,
(__int64)&off_140020BD0);
}
v13 = &v2[v7];
v14 = v70;
v15 = v3 - v70;
v2 += v7;
if ( v70 )
{
if ( v8 <= v70 )
{
if ( v15 != v7 )
LABEL_179:
sub_14001D0B0(&v5[v7], v8, v70, v8, (__int64)&off_140020BE8);
v16 = &v5[v70];
}
else
{
v16 = &v5[v70];
if ( v5[v70 + v7] <= -65 )
goto LABEL_179;
}
v2 = &v16[v7];
}
v17 = sub_140017C40((__int64)a2);
if ( v14 && v17 && v66 == v68 && *v13 == 104 )
{
if ( v14 < 2 )
return 0;
LOBYTE(v18) = v5[v7 + 1];
if ( (char)v18 <= -65 )
{
v62 = &v5[v7];
v63 = &off_140020BA0;
goto LABEL_186;
}
v19 = &v5[v7 + 1];
if ( (v18 & 0x80u) == 0 )
goto LABEL_46;
LABEL_37:
v20 = v18 & 0x1F;
v21 = v19[1] & 0x3F;
if ( (unsigned __int8)v18 <= 0xDFu )
{
v19 += 2;
v18 = v21 | (v20 << 6);
if ( (unsigned int)(v18 - 48) >= 0xA )
goto LABEL_47;
}
else
{
v22 = (v21 << 6) | v19[2] & 0x3F;
if ( (unsigned __int8)v18 < 0xF0u )
{
v19 += 3;
v18 = (v20 << 12) | v22;
if ( (unsigned int)(v18 - 48) >= 0xA )
goto LABEL_47;
}
else
{
v18 = ((v18 & 7) << 18) | (v22 << 6) | v19[3] & 0x3F;
if ( v18 == 1114112 )
return 0;
v19 += 4;
if ( (unsigned int)(v18 - 48) >= 0xA )
goto LABEL_47;
}
}
do
{
do
{
if ( &v5[v14 + v7] == v19 )
return 0;
LOBYTE(v18) = *v19;
if ( *v19 < 0 )
goto LABEL_37;
LABEL_46:
++v19;
v18 = (unsigned __int8)v18;
}
while ( (unsigned int)(unsigned __int8)v18 - 48 < 0xA );
LABEL_47:
v23 = (v18 | 0x20) - 97;
v24 = __CFADD__(v23, 10);
v25 = v23 + 10;
if ( v24 )
v25 = -1;
}
while ( v25 <= 0xF );
}
if ( v4 && (unsigned __int8)sub_140017BE0(a2) )
return 1;
if ( v14 >= 2 && *(_WORD *)v13 == 9311 )
{
if ( v5[v7 + 1] <= -65 )
{
v62 = &v5[v7];
v63 = &off_140020C08;
LABEL_186:
sub_14001D0B0(v62, v14, 1ui64, v14, (__int64)v63);
}
v13 = &v5[v7 + 1];
--v14;
}
v3 = v15 - v7;
LABEL_60:
while ( 2 )
{
while ( 1 )
{
v26 = v13;
v27 = v14;
if ( !v14 )
break;
v28 = (unsigned __int8)*v13;
if ( v28 == 36 )
{
if ( v14 >= 2 && v13[1] <= -65 )
{
v64 = &off_140020C70;
LABEL_183:
sub_14001D0B0(v26, v27, 1ui64, v27, (__int64)v64);
}
v40 = v13 + 1;
v69 = v13 + 1;
v70 = v14 - 1;
v71 = 0i64;
v72 = v14 - 1;
v73 = 1i64;
v74 = 0x2400000024i64;
sub_14000F5E0(&v75, (__int64 *)&v69);
if ( !v75 )
goto LABEL_2;
v41 = v76;
if ( v76 == -1i64 )
sub_14001D060((__int64)&off_140020C88);
v42 = v76 + 1;
if ( v14 >= 2 && *v40 < -64 )
LABEL_175:
sub_14001D0B0(v13, v14, 1ui64, v42, (__int64)&off_140020C88);
if ( v42 < v14 )
{
if ( v13[v42] < -64 )
goto LABEL_175;
v43 = v76 + 2;
goto LABEL_108;
}
if ( v42 != v14 )
goto LABEL_175;
v43 = v76 + 2;
if ( v76 == -2i64 )
{
v41 = -2i64;
goto LABEL_143;
}
LABEL_108:
if ( v14 <= v43 )
{
v44 = v14;
if ( v14 != v43 )
LABEL_178:
sub_14001D0B0(v13, v14, v43, v14, (__int64)&off_140020CA0);
}
else
{
if ( v13[v43] <= -65 )
goto LABEL_178;
v44 = v43;
}
v13 += v44;
v14 -= v44;
switch ( v76 )
{
case 1ui64:
v45 = (unsigned __int8)*v40;
if ( v45 == 67 )
goto LABEL_123;
if ( v45 != 117 )
goto LABEL_2;
v41 = 1i64;
break;
case 2ui64:
if ( *(_WORD *)v40 != 20563
&& *(_WORD *)v40 != 20546
&& *(_WORD *)v40 != 18002
&& *(_WORD *)v40 != 21580
&& *(_WORD *)v40 != 21575
&& *(_WORD *)v40 != 20556
&& *(_WORD *)v40 != 20562 )
{
v41 = 2i64;
goto LABEL_143;
}
LABEL_123:
if ( (unsigned __int8)sub_140017BE0(a2) )
return 1;
continue;
case 0ui64:
goto LABEL_2;
default:
LABEL_143:
if ( v26[1] != 117 )
goto LABEL_2;
if ( v41 < 2 || v26[2] <= -65 )
sub_14001D0B0(v26 + 1, v41, 1ui64, v41, (__int64)&off_140020CC8);
break;
}
v49 = v26 + 2;
v50 = (unsigned __int8 *)&v40[v41];
v51 = v41 - 1;
v52 = (unsigned __int8 *)(v26 + 2);
while ( 1 )
{
if ( v52 == v50 )
{
LABEL_160:
v58 = 0;
v59 = sub_14001A240(v49, v51, 16i64);
if ( (v59 & 1) == 0 )
goto LABEL_163;
LABEL_2:
if ( (unsigned __int8)sub_140017BE0(a2) )
return 1;
goto LABEL_3;
}
v54 = *v52;
v53 = *v52;
if ( (*v52 & 0x80u) != 0 )
{
v55 = v53 & 0x1F;
v56 = v52[1] & 0x3F;
if ( (unsigned __int8)v53 <= 0xDFu )
{
v52 += 2;
v53 = v56 | (v55 << 6);
if ( (unsigned int)(v53 - 48) < 0xA )
continue;
}
else
{
v57 = (v56 << 6) | v52[2] & 0x3F;
if ( v54 < 0xF0u )
{
v52 += 3;
v53 = (v55 << 12) | v57;
if ( (unsigned int)(v53 - 48) < 0xA )
continue;
}
else
{
v53 = ((v53 & 7) << 18) | (v57 << 6) | v52[3] & 0x3F;
if ( v53 == 1114112 )
goto LABEL_160;
v52 += 4;
if ( (unsigned int)(v53 - 48) < 0xA )
continue;
}
}
}
else
{
++v52;
if ( (unsigned int)v54 - 48 < 0xA )
continue;
}
if ( (unsigned int)(v53 - 97) >= 6 )
{
v58 = 1;
v59 = sub_14001A240(v49, v51, 16i64);
if ( (v59 & 1) != 0 )
goto LABEL_2;
LABEL_163:
v60 = HIDWORD(v59);
if ( ((unsigned int)v60 ^ 0xD800) - 1114112 < 0xFFEF0800 )
LODWORD(v60) = 1114112;
if ( ((_DWORD)v60 == 1114112) | (unsigned __int8)v58 )
goto LABEL_2;
v67 = v60;
if ( sub_14001B0D0(v60) )
goto LABEL_2;
if ( (unsigned __int8)sub_140018820(&v67, a2) )
return 1;
goto LABEL_60;
}
}
}
if ( v28 != 46 )
break;
++v13;
if ( v14 < 2 )
{
v14 = 0i64;
if ( (unsigned __int8)sub_140017BE0(a2) )
return 1;
continue;
}
if ( *v13 <= -65 )
{
v64 = &off_140020C20;
goto LABEL_183;
}
v29 = v26[1];
if ( v29 < 0 )
{
v46 = v29 & 0x1F;
v47 = v26[2] & 0x3F;
if ( (unsigned __int8)v29 <= 0xDFu )
{
if ( (v47 | (v46 << 6)) == 46 )
goto LABEL_67;
}
else
{
v48 = (v47 << 6) | v26[3] & 0x3F;
if ( (unsigned __int8)v29 < 0xF0u )
{
if ( ((v46 << 12) | v48) == 46 )
{
LABEL_67:
if ( !(unsigned __int8)sub_140017BE0(a2) )
{
if ( v14 >= 3 && v26[2] <= -65 )
sub_14001D0B0(v26, v14, 2ui64, v14, (__int64)&off_140020C58);
v30 = v26 + 2;
v31 = v14 - 2;
goto LABEL_127;
}
return 1;
}
}
else if ( (((v29 & 7) << 18) | (v48 << 6) | v26[4] & 0x3F) == 46 )
{
goto LABEL_67;
}
}
}
else if ( v29 == 46 )
{
goto LABEL_67;
}
if ( (unsigned __int8)sub_140017BE0(a2) )
return 1;
v13 = v26 + 1;
--v14;
if ( v27 >= 2 && *v13 <= -65 )
{
v64 = &off_140020C40;
goto LABEL_183;
}
}
v32 = 0i64;
v33 = v13;
while ( 2 )
{
if ( v33 == &v13[v14] )
goto LABEL_2;
v34 = (unsigned __int64)v32;
v35 = (unsigned __int8)*v33;
if ( *v33 >= 0 )
{
v36 = v33 + 1;
LABEL_82:
v32 = &v36[v34 - (_QWORD)v33];
v33 = v36;
if ( v35 == 36 )
break;
goto LABEL_83;
}
v37 = v35 & 0x1F;
v38 = v33[1] & 0x3F;
if ( (unsigned __int8)v35 <= 0xDFu )
{
v36 = v33 + 2;
v35 = v38 | (v37 << 6);
goto LABEL_82;
}
v36 = v33 + 3;
v39 = (v38 << 6) | v33[2] & 0x3F;
if ( (unsigned __int8)*v33 < 0xF0u )
{
v35 = (v37 << 12) | v39;
goto LABEL_82;
}
v35 = ((v35 & 7) << 18) | (v39 << 6) | *v36 & 0x3F;
if ( v35 == 1114112 )
goto LABEL_2;
v33 += 4;
v32 = (char *)(v34 + 4);
if ( v35 != 36 )
{
LABEL_83:
if ( v35 == 46 )
break;
continue;
}
break;
}
if ( v34 )
{
if ( v14 <= v34 )
{
if ( v14 != v34 )
goto LABEL_176;
}
else if ( v13[v34] <= -65 )
{
LABEL_176:
sub_14001D0B0(v13, v14, 0i64, v34, (__int64)&off_140020CF8);
}
if ( (unsigned __int8)sub_140017BE0(a2) )
return 1;
if ( v14 <= v34 )
{
if ( v14 != v34 )
goto LABEL_180;
}
else if ( v13[v34] <= -65 )
{
LABEL_180:
sub_14001D0B0(v13, v14, v34, v14, (__int64)&off_140020CE0);
}
LABEL_126:
v30 = &v13[v34];
v31 = v14 - v34;
LABEL_127:
v14 = v31;
v13 = v30;
continue;
}
break;
}
if ( !(unsigned __int8)sub_140017BE0(a2) )
goto LABEL_126;
return 1;
}
// 14000FDFB: conditional instruction was optimized away because r14.8!=0
// 14001A240: using guessed type __int64 __fastcall sub_14001A240(_QWORD, _QWORD, _QWORD);
// 140020A78: using guessed type __int64 (__fastcall *off_140020A78)();
// 140020BA0: using guessed type char *off_140020BA0;
// 140020BB8: using guessed type char *off_140020BB8;
// 140020BD0: using guessed type char *off_140020BD0;
// 140020BE8: using guessed type char *off_140020BE8;
// 140020C08: using guessed type char *off_140020C08;
// 140020C20: using guessed type char *off_140020C20;
// 140020C40: using guessed type char *off_140020C40;
// 140020C58: using guessed type char *off_140020C58;
// 140020C70: using guessed type char *off_140020C70;
// 140020C88: using guessed type char *off_140020C88;
// 140020CA0: using guessed type char *off_140020CA0;
// 140020CC8: using guessed type char *off_140020CC8;
// 140020CE0: using guessed type char *off_140020CE0;
// 140020CF8: using guessed type char *off_140020CF8;
// 140020D28: using guessed type char *off_140020D28;
// 140020D70: using guessed type char *off_140020D70;
//----- (00000001400103E0) ----------------------------------------------------
__int64 __fastcall sub_1400103E0(char **a1, __int64 *a2)
{
unsigned __int64 v2; // rbp
char v5; // bl
char *v6; // rcx
char *v7; // rax
unsigned __int8 *v8; // rax
unsigned __int64 v9; // r14
int v10; // edx
int v11; // r8d
int v12; // r11d
int v13; // r9d
char *v15; // r15
int *v16; // r12
char v17; // r10
unsigned __int64 v18; // rax
unsigned __int64 v19; // r9
unsigned __int64 v20; // rax
unsigned __int8 v21; // cl
unsigned __int64 v22; // r11
unsigned __int64 v23; // r9
unsigned __int64 v24; // r8
unsigned __int64 v25; // rcx
unsigned __int64 v26; // rax
unsigned __int64 v27; // r9
unsigned __int64 v28; // rcx
unsigned __int64 v29; // rbx
unsigned __int64 v30; // rdi
char v31; // al
unsigned __int8 v32; // dl
unsigned __int64 v33; // rax
bool v34; // of
unsigned __int64 v35; // rsi
bool v36; // cf
unsigned __int64 v37; // rbx
unsigned __int64 v38; // rdi
unsigned __int64 v39; // rdx
__int64 v40; // rdi
unsigned __int64 v41; // r13
unsigned __int64 v42; // r11
__int64 v43; // rdi
unsigned __int64 v44; // r13
bool v45; // cc
__int64 *v46; // rsi
unsigned int *v47; // rbx
__int64 v48; // r14
__int64 v49; // [rsp+28h] [rbp-2B0h]
__int64 v50; // [rsp+30h] [rbp-2A8h]
unsigned __int64 v51; // [rsp+38h] [rbp-2A0h]
unsigned int v52; // [rsp+44h] [rbp-294h] BYREF
__int64 v53; // [rsp+48h] [rbp-290h]
__int64 v54; // [rsp+50h] [rbp-288h]
char *v55; // [rsp+58h] [rbp-280h]
__int64 *v56; // [rsp+60h] [rbp-278h]
unsigned __int64 v57; // [rsp+68h] [rbp-270h]
char *v58; // [rsp+70h] [rbp-268h]
char *v59; // [rsp+78h] [rbp-260h]
unsigned __int64 v60; // [rsp+80h] [rbp-258h]
char *v61; // [rsp+88h] [rbp-250h]
char *v62; // [rsp+90h] [rbp-248h]
int v63[144]; // [rsp+98h] [rbp-240h] BYREF
memset(v63, 0, 0x200ui64);
v58 = a1[3];
if ( !v58 )
return sub_140017BE0(a2);
v56 = a2;
v55 = a1[2];
v5 = *v55;
v6 = *a1;
v7 = a1[1];
v61 = *a1;
v62 = v7;
if ( v7 )
{
v8 = (unsigned __int8 *)&v7[(_QWORD)v6];
v9 = 0i64;
do
{
v10 = (unsigned __int8)*v6;
if ( *v6 < 0 )
{
v11 = v10 & 0x1F;
v12 = v6[1] & 0x3F;
if ( (unsigned __int8)v10 <= 0xDFu )
{
v6 += 2;
v10 = v12 | (v11 << 6);
if ( v9 == 128 )
goto LABEL_81;
}
else
{
v13 = (v12 << 6) | v6[2] & 0x3F;
if ( (unsigned __int8)*v6 < 0xF0u )
{
v6 += 3;
v10 = (v11 << 12) | v13;
if ( v9 == 128 )
goto LABEL_81;
}
else
{
v10 = ((v10 & 7) << 18) | (v13 << 6) | v6[3] & 0x3F;
if ( v10 == 1114112 )
break;
v6 += 4;
if ( v9 == 128 )
goto LABEL_81;
}
}
}
else
{
++v6;
if ( v9 == 128 )
goto LABEL_81;
}
v63[v9++] = v10;
}
while ( v6 != (char *)v8 );
}
else
{
v9 = 0i64;
}
v15 = v55;
v59 = &v58[(_QWORD)v55];
v60 = v9 - 1;
v50 = 4 * v9 + 4;
v16 = &v63[v9];
v53 = -(__int64)v9;
v17 = v9 ^ 3;
v18 = v9 + 1;
v51 = 700i64;
v2 = 72i64;
v49 = 128i64;
v54 = 0i64;
v19 = 0i64;
while ( 1 )
{
v57 = v18;
v20 = 0i64;
if ( v2 <= 0x24 )
v20 = 36 - v2;
if ( v20 < 2 )
v20 = 1i64;
if ( v20 >= 0x1A )
v20 = 26i64;
v21 = v5 - 97;
if ( (unsigned __int8)(v5 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v5 - 48) > 9u )
goto LABEL_81;
v21 = v5 - 22;
}
++v15;
v22 = v21;
if ( v20 <= v21 )
break;
LABEL_30:
v36 = __CFADD__(v22, v19);
v23 = v22 + v19;
if ( v36 )
goto LABEL_81;
v24 = v23;
v25 = v9 + 1;
if ( ((v9 + 1) | v23) >> 32 )
{
v26 = v23 / v25;
v27 = v23 % v25;
}
else
{
v26 = (unsigned int)v23 / (unsigned int)v25;
v27 = (unsigned int)v23 % (unsigned int)v25;
}
v35 = v49;
v36 = __CFADD__(v26, v49);
if ( !__CFADD__(v26, v49) )
v35 = v26 + v49;
v49 = v35;
if ( v36 || HIDWORD(v35) || ((unsigned int)v35 ^ 0xD800) - 2048 > 0x10F7FF || (_DWORD)v35 == 1114112 || v9 > 0x7F )
goto LABEL_81;
if ( v9 <= v27 )
{
if ( v27 >= 0x80 )
goto LABEL_92;
}
else
{
v37 = v60 + v54 - v27;
v38 = v9;
if ( (((_BYTE)v9 - (_BYTE)v27) & 3) != 0 )
{
if ( (v57 | v24) >> 32 )
v39 = v24 / v57;
else
LODWORD(v39) = (unsigned int)v24 / (unsigned int)v57;
v40 = 0i64;
do
{
v16[v40] = v16[v40 - 1];
--v40;
}
while ( v40 + (((_BYTE)v9 - ((_BYTE)v24 + (_BYTE)v39 * v17)) & 3) );
v38 = v40 - v53;
}
if ( v37 >= 3 )
{
do
{
*(_OWORD *)((char *)&v61 + 4 * v38 + 4) = *(_OWORD *)((char *)&v61 + 4 * v38);
v38 -= 4i64;
}
while ( v38 > v27 );
}
if ( v27 >= 0x80 )
LABEL_92:
sub_14001CD00(v27, 128i64, (__int64)&off_140020EC8);
}
v63[v27] = v35;
if ( v15 == v59 )
{
v46 = v56;
v47 = (unsigned int *)v63;
v48 = v50;
do
{
v52 = *v47;
LODWORD(v2) = sub_140018820(&v52, v46);
if ( (_BYTE)v2 )
break;
++v47;
v48 -= 4i64;
}
while ( v48 );
return (unsigned int)v2;
}
v5 = *v15;
if ( HIDWORD(v22) )
v41 = v22 / v51;
else
v41 = (unsigned int)v22 / (unsigned int)v51;
if ( (v25 | v41) >> 32 )
{
v42 = v41 + v41 / v25;
v43 = 0i64;
if ( v42 < 0x1C8 )
goto LABEL_80;
}
else
{
v42 = v41 + (unsigned int)v41 / (unsigned int)v25;
v43 = 0i64;
if ( v42 < 0x1C8 )
goto LABEL_80;
}
v44 = v42;
do
{
v42 = v44 / 0x23;
v43 += 36i64;
v45 = v44 <= 0x3E57;
v44 /= 0x23ui64;
}
while ( !v45 );
LABEL_80:
v19 = v27 + 1;
v2 = v43 + (unsigned __int16)((unsigned __int16)(36 * v42) / (unsigned __int16)(v42 + 38));
++v54;
v50 += 4i64;
++v16;
--v53;
v17 += 3;
v18 = v57 + 1;
v51 = 2i64;
++v9;
}
v28 = 36 - v20;
v29 = 72i64;
do
{
v30 = 0i64;
if ( v29 >= v2 )
v30 = v29 - v2;
if ( v30 < 2 )
v30 = 1i64;
if ( v30 >= 0x1A )
v30 = 26i64;
if ( v15 == v59 )
break;
v31 = *v15;
v32 = *v15 - 97;
if ( v32 >= 0x1Au )
{
if ( (unsigned __int8)(v31 - 48) >= 0xAu )
break;
v32 = v31 - 22;
}
v33 = v28 * v32;
if ( !is_mul_ok(v28, v32) )
break;
v36 = __CFADD__(v33, v22);
v22 += v33;
if ( v36 )
break;
++v15;
if ( v30 > v32 )
goto LABEL_30;
v29 += 36i64;
v34 = ((36 - v30) * (unsigned __int128)v28) >> 64 != 0;
v28 *= 36 - v30;
}
while ( !v34 );
LABEL_81:
a2 = v56;
LOBYTE(v2) = 1;
if ( !(unsigned __int8)sub_140017BE0(v56)
&& (!v62 || !(unsigned __int8)sub_140017BE0(v56) && !(unsigned __int8)sub_140017BE0(v56))
&& !(unsigned __int8)sub_140017BE0(v56) )
{
return sub_140017BE0(a2);
}
return (unsigned int)v2;
}
// 140010A0B: conditional instruction was optimized away because r14.8<80u
// 1400109DC: variable 'v2' is possibly undefined
// 140020EC8: using guessed type char *off_140020EC8;
// 1400103E0: using guessed type int var_240[144];
//----- (0000000140010A80) ----------------------------------------------------
__int64 __fastcall sub_140010A80(__int64 a1, __int64 a2)
{
__int64 v4; // rcx
__int64 result; // rax
unsigned __int8 *v6; // rsi
char *v7; // rcx
__int64 v8; // rdx
int v9; // r9d
unsigned int v10; // r10d
int v11; // r10d
int v12; // edi
int v13; // r11d
int v14; // r9d
bool v15; // cf
unsigned int v16; // r9d
__int64 v17; // [rsp+28h] [rbp-A0h] BYREF
__int64 v18; // [rsp+30h] [rbp-98h]
char v19[136]; // [rsp+40h] [rbp-88h] BYREF
sub_1400194E0((__int64)v19, a1, a2, "0", 1ui64);
while ( 1 )
{
sub_14000F1F0(&v17, (__int64)v19);
if ( v17 == 1 )
break;
if ( (_DWORD)v17 == 2 )
{
v4 = a2;
goto LABEL_5;
}
}
v4 = v18;
if ( (unsigned __int64)(a2 - v18) <= 0x10 )
{
LABEL_5:
result = 1i64;
if ( v4 == a2 )
return result;
v6 = (unsigned __int8 *)(a1 + a2);
v7 = (char *)(a1 + v4);
v8 = 0i64;
while ( 1 )
{
v9 = (unsigned __int8)*v7;
if ( *v7 < 0 )
{
v11 = v9 & 0x1F;
v12 = v7[1] & 0x3F;
if ( (unsigned __int8)v9 <= 0xDFu )
{
v7 += 2;
v9 = v12 | (v11 << 6);
v10 = v9 - 48;
if ( (unsigned int)(v9 - 48) >= 0xA )
goto LABEL_23;
}
else
{
v13 = (v12 << 6) | v7[2] & 0x3F;
if ( (unsigned __int8)*v7 < 0xF0u )
{
v7 += 3;
v9 = (v11 << 12) | v13;
v10 = v9 - 48;
if ( (unsigned int)(v9 - 48) >= 0xA )
goto LABEL_23;
}
else
{
v9 = ((v9 & 7) << 18) | (v13 << 6) | v7[3] & 0x3F;
if ( v9 == 1114112 )
return result;
v7 += 4;
v10 = v9 - 48;
if ( (unsigned int)(v9 - 48) >= 0xA )
{
LABEL_23:
v14 = (v9 | 0x20) - 97;
v15 = __CFADD__(v14, 10);
v16 = v14 + 10;
if ( v15 )
v16 = -1;
v10 = v16;
if ( v16 >= 0x10 )
sub_14001CC50((__int64)"called `Option::unwrap()` on a `None` value", 43i64, (__int64)&off_140020EF0);
}
}
}
}
else
{
++v7;
v10 = v9 - 48;
if ( (unsigned int)(v9 - 48) >= 0xA )
goto LABEL_23;
}
v8 = (16 * v8) | v10;
if ( v7 == (char *)v6 )
return result;
}
}
return 0i64;
}
// 140020EF0: using guessed type char *off_140020EF0;
//----- (0000000140010C40) ----------------------------------------------------
_QWORD *__fastcall sub_140010C40(_QWORD *a1, __int64 a2)
{
_QWORD *result; // rax
char *v3; // rcx
unsigned __int64 v5; // r8
unsigned __int64 v6; // rdx
__int64 v7; // r10
__int64 v8; // r11
char *v9; // rsi
char v10; // di
unsigned __int64 v11; // r9
result = a1;
v3 = *(char **)a2;
if ( !*(_QWORD *)a2 )
goto LABEL_12;
v5 = *(_QWORD *)(a2 + 16);
v6 = *(_QWORD *)(a2 + 8);
v7 = 1i64;
v8 = 0i64;
v9 = v3;
do
{
if ( v5 + v8 >= v6 )
goto LABEL_12;
v10 = v9[v5];
*(_QWORD *)(a2 + 16) = v5 + v8 + 1;
--v7;
++v8;
++v9;
}
while ( (unsigned __int8)(v10 - 48) < 0xAu || (unsigned __int8)(v10 - 97) < 6u );
if ( v10 == 95 )
{
v11 = v5 - v7;
if ( v5 - v7 < v5 )
goto LABEL_17;
if ( v5 )
{
if ( v5 >= v6 )
{
if ( v5 != v6 )
goto LABEL_17;
}
else if ( v3[v5] < -64 )
{
LABEL_17:
sub_14001D0B0(v3, v6, v5, v11, (__int64)&off_140021068);
}
}
if ( v5 != v7 )
{
if ( v11 >= v6 )
{
if ( v5 - v6 + v8 != 1 )
goto LABEL_17;
}
else if ( v9[v5 - 1] <= -65 )
{
goto LABEL_17;
}
}
*result = &v3[v5];
result[1] = -v7;
}
else
{
LABEL_12:
*((_BYTE *)result + 8) = 0;
*result = 0i64;
}
return result;
}
// 140021068: using guessed type char *off_140021068;
//----- (0000000140010D20) ----------------------------------------------------
char __fastcall sub_140010D20(__int64 a1, __int64 *a2)
{
__int64 v3; // r10
unsigned __int64 v4; // r11
unsigned __int64 v5; // r9
char result; // al
unsigned __int64 v7; // rax
char v8; // dl
unsigned __int8 v9; // di
unsigned __int8 v10; // dl
__int64 v11; // rax
unsigned __int64 v12; // kr00_8
bool v13; // cf
unsigned __int64 v14; // rax
v3 = *a2;
v4 = a2[1];
v5 = a2[2];
if ( v5 >= v4 || !v3 )
{
if ( !v3 )
{
LABEL_19:
*(_BYTE *)(a1 + 1) = 0;
result = 1;
goto LABEL_20;
}
LABEL_6:
v7 = 0i64;
while ( v5 < v4 )
{
if ( *(_BYTE *)(v3 + v5) == 95 )
{
a2[2] = v5 + 1;
v14 = v7 + 1;
if ( !v14 )
goto LABEL_19;
*(_QWORD *)(a1 + 8) = v14;
result = 0;
goto LABEL_20;
}
v8 = *(_BYTE *)(v3 + v5);
v9 = v8 - 48;
if ( (unsigned __int8)(v8 - 48) >= 0xAu )
{
if ( (unsigned __int8)(v8 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v8 - 65) >= 0x1Au )
goto LABEL_19;
v10 = v8 - 29;
}
else
{
v10 = v8 - 87;
}
v9 = v10;
}
a2[2] = ++v5;
v12 = v7;
v11 = 62 * v7;
if ( is_mul_ok(0x3Eui64, v12) )
{
v13 = __CFADD__(v9, v11);
v7 = v9 + v11;
if ( !v13 )
continue;
}
goto LABEL_19;
}
goto LABEL_19;
}
if ( *(_BYTE *)(v3 + v5) != 95 )
goto LABEL_6;
a2[2] = v5 + 1;
*(_QWORD *)(a1 + 8) = 0i64;
result = 0;
LABEL_20:
*(_BYTE *)a1 = result;
return result;
}
//----- (0000000140010DE0) ----------------------------------------------------
char __fastcall sub_140010DE0(__int64 a1, __int64 *a2)
{
unsigned __int64 v2; // r9
unsigned __int64 v3; // rax
__int64 v5; // r10
unsigned __int64 v6; // r11
unsigned __int64 v7; // rax
char result; // al
unsigned __int64 v9; // rax
char v10; // dl
unsigned __int8 v11; // di
unsigned __int8 v12; // dl
__int64 v13; // rax
unsigned __int64 v14; // kr00_8
bool v15; // cf
unsigned __int64 v16; // rax
v2 = a2[1];
v3 = a2[2];
if ( v3 < v2 && (v5 = *a2) != 0 && *(_BYTE *)(v5 + v3) == 115 )
{
v6 = v3 + 1;
a2[2] = v3 + 1;
if ( v3 + 1 >= v2 || *(_BYTE *)(v5 + v6) != 95 )
{
v9 = 0i64;
while ( v6 < v2 )
{
v10 = *(_BYTE *)(v5 + v6);
if ( v10 == 95 )
{
a2[2] = v6 + 1;
v7 = v9 + 1;
if ( !v7 )
goto LABEL_23;
goto LABEL_22;
}
v11 = v10 - 48;
if ( (unsigned __int8)(v10 - 48) >= 0xAu )
{
if ( (unsigned __int8)(v10 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v10 - 65) >= 0x1Au )
goto LABEL_23;
v12 = v10 - 29;
}
else
{
v12 = v10 - 87;
}
v11 = v12;
}
a2[2] = ++v6;
v14 = v9;
v13 = 62 * v9;
if ( is_mul_ok(0x3Eui64, v14) )
{
v15 = __CFADD__(v11, v13);
v9 = v11 + v13;
if ( !v15 )
continue;
}
goto LABEL_23;
}
goto LABEL_23;
}
a2[2] = v3 + 2;
v7 = 0i64;
LABEL_22:
v16 = v7 + 1;
if ( !v16 )
{
LABEL_23:
*(_BYTE *)(a1 + 1) = 0;
result = 1;
goto LABEL_24;
}
*(_QWORD *)(a1 + 8) = v16;
}
else
{
*(_QWORD *)(a1 + 8) = 0i64;
}
result = 0;
LABEL_24:
*(_BYTE *)a1 = result;
return result;
}
//----- (0000000140010EC0) ----------------------------------------------------
unsigned __int64 __fastcall sub_140010EC0(_QWORD *a1)
{
unsigned __int64 v1; // r8
__int64 v2; // rax
__int64 v3; // rdx
bool v5; // cf
__int64 v6; // rax
v1 = a1[2];
v2 = 0i64;
v3 = 1i64;
if ( v1 >= a1[1] || !*a1 )
return v3 | (v2 << 32);
v2 = *(unsigned __int8 *)(*a1 + v1);
a1[2] = v1 + 1;
if ( (unsigned __int8)(v2 - 65) < 0x1Au )
{
v3 = 0i64;
return v3 | (v2 << 32);
}
v5 = (unsigned __int8)(v2 - 123) < 0xE6u;
v6 = 1114112i64;
if ( v5 )
v6 = 0i64;
return v5 | (unsigned __int64)(v6 << 32);
}
//----- (0000000140010F20) ----------------------------------------------------
void __fastcall sub_140010F20(__int64 a1, __int64 a2)
{
char *v3; // rcx
unsigned __int64 v4; // r11
unsigned __int64 v5; // r8
char v6; // bl
unsigned __int64 v7; // rax
unsigned __int64 v8; // r8
unsigned __int8 v9; // di
__int64 v10; // rax
unsigned __int64 v11; // kr00_8
bool v12; // cf
unsigned __int64 v13; // r9
char *v14; // rdi
unsigned __int64 v15; // r10
char *v16; // r9
unsigned __int64 v17; // rbx
char *v18; // rdx
__int64 v19; // r8
char *v20; // r14
char *v22; // rax
unsigned __int64 v23; // rdx
v3 = *(char **)a2;
v4 = *(_QWORD *)(a2 + 8);
v5 = *(_QWORD *)(a2 + 16);
v6 = 0;
if ( v5 >= v4 || !v3 )
{
LABEL_5:
if ( v5 >= v4 )
goto LABEL_23;
goto LABEL_8;
}
if ( v3[v5] == 117 )
{
*(_QWORD *)(a2 + 16) = ++v5;
v6 = 1;
goto LABEL_5;
}
v6 = 0;
if ( v5 >= v4 )
{
LABEL_23:
*(_BYTE *)(a1 + 8) = 0;
*(_QWORD *)a1 = 0i64;
return;
}
LABEL_8:
if ( !v3 )
goto LABEL_23;
LOBYTE(v7) = v3[v5] - 48;
if ( (unsigned __int8)v7 > 9u )
goto LABEL_23;
v8 = v5 + 1;
*(_QWORD *)(a2 + 16) = v8;
if ( (_BYTE)v7 )
{
v7 = (unsigned __int8)v7;
while ( v8 < v4 )
{
v9 = v3[v8] - 48;
if ( v9 > 9u )
break;
*(_QWORD *)(a2 + 16) = ++v8;
v11 = v7;
v10 = 10 * v7;
if ( is_mul_ok(0xAui64, v11) )
{
v12 = __CFADD__(v9, v10);
v7 = v9 + v10;
if ( !v12 )
continue;
}
goto LABEL_23;
}
}
else
{
v7 = 0i64;
}
if ( v8 < v4 && v3[v8] == 95 )
*(_QWORD *)(a2 + 16) = ++v8;
v13 = v7 + v8;
if ( __CFADD__(v7, v8) )
goto LABEL_23;
*(_QWORD *)(a2 + 16) = v13;
if ( v13 > v4 )
goto LABEL_23;
if ( v8 >= v4 )
{
if ( v8 != v4 )
goto LABEL_31;
}
else if ( v3[v8] < -64 )
{
LABEL_31:
sub_14001D0B0(v3, v4, v8, v13, (__int64)&off_140021080);
}
if ( v13 )
{
if ( v13 >= v4 )
{
if ( v13 != v4 )
goto LABEL_31;
}
else if ( v3[v13] <= -65 )
{
goto LABEL_31;
}
}
v14 = &v3[v8];
v15 = v7;
if ( v6 )
{
v16 = &v3[v13];
v17 = 0i64;
v18 = (char *)&unk_140020908;
v19 = 0i64;
do
{
if ( v19 == v7 )
goto LABEL_44;
v20 = v16 - 1;
++v19;
}
while ( *--v16 != 95 );
v17 = v7 - v19;
if ( v19 != v7 )
{
if ( v17 >= v7 )
{
if ( v19 )
goto LABEL_46;
}
else if ( *v20 <= -65 )
{
LABEL_46:
sub_14001D0B0(v14, v7, 0i64, v17, (__int64)&off_1400210B0);
}
}
v22 = sub_14000EFC0(1 - (v19 - v7), v14, v7, (__int64)&off_140021098);
v15 = v23;
v18 = v14;
v14 = v22;
LABEL_44:
if ( !v15 )
goto LABEL_23;
*(_QWORD *)a1 = v18;
*(_QWORD *)(a1 + 8) = v17;
*(_QWORD *)(a1 + 16) = v14;
*(_QWORD *)(a1 + 24) = v15;
}
else
{
*(_QWORD *)a1 = v14;
*(_QWORD *)(a1 + 8) = v7;
*(_QWORD *)(a1 + 16) = &unk_140020908;
*(_QWORD *)(a1 + 24) = 0i64;
}
}
// 140010FC5: conditional instruction was optimized away because rcx.8!=0
// 1400110BE: conditional instruction was optimized away because rcx.8!=0
// 1400110DA: variable 'v23' is possibly undefined
// 140021080: using guessed type char *off_140021080;
// 140021098: using guessed type char *off_140021098;
// 1400210B0: using guessed type char *off_1400210B0;
//----- (0000000140011120) ----------------------------------------------------
__int64 __fastcall sub_140011120(__int64 a1)
{
__int64 v2; // rdi
__int64 result; // rax
char v4[24]; // [rsp+30h] [rbp-18h] BYREF
v2 = *(_QWORD *)(a1 + 32);
*(_QWORD *)(a1 + 32) = 0i64;
result = sub_140012370(a1, 0);
if ( (_BYTE)result )
sub_14001CF90(
(__int64)"`fmt::Error`s should be impossible without a `fmt::Formatter`",
61i64,
(__int64)v4,
(__int64)&off_140020A08,
(__int64)&off_1400210F8);
*(_QWORD *)(a1 + 32) = v2;
return result;
}
// 140020A08: using guessed type __int64 (__fastcall *off_140020A08)();
// 1400210F8: using guessed type char *off_1400210F8;
// 140011120: using guessed type char var_18[24];
//----- (0000000140011180) ----------------------------------------------------
char __fastcall sub_140011180(__int64 *a1, __int64 a2)
{
__int64 v3; // r10
char v4; // r8
unsigned __int64 v5; // r11
unsigned __int64 v6; // rcx
unsigned __int64 v7; // rax
unsigned __int64 v8; // rax
unsigned __int64 v9; // rdi
char v10; // r9
char v11; // dl
unsigned __int8 v12; // bp
unsigned __int8 v13; // dl
__int64 v14; // rax
unsigned __int64 v15; // kr00_8
bool v16; // cf
__int64 *v17; // r8
char result; // al
unsigned int v19; // ecx
char v20; // di
__int64 *v21; // r8
unsigned __int8 *v22; // rcx
char v23; // cl
__int128 v24; // [rsp+20h] [rbp-48h]
__int128 v25; // [rsp+30h] [rbp-38h]
v3 = *a1;
if ( !*a1 )
{
v17 = (__int64 *)a1[4];
if ( v17 )
return sub_1400183F0("?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ", 1ui64, v17);
return 0;
}
v4 = a2;
v5 = a1[1];
v6 = a1[2];
if ( v6 < v5 && *(_BYTE *)(v3 + v6) == 95 )
{
a1[2] = v6 + 1;
v7 = 0i64;
LABEL_20:
if ( v7 < v6 - 1 )
{
v19 = *((_DWORD *)a1 + 6) + 1;
if ( v19 < 0x1F5 )
{
if ( a1[4] )
{
v25 = *((_OWORD *)a1 + 1);
v24 = *(_OWORD *)a1;
a1[2] = v7;
*((_DWORD *)a1 + 6) = v19;
result = sub_140012370((__int64)a1, v4 != 0);
*(_OWORD *)a1 = v24;
*((_OWORD *)a1 + 1) = v25;
return result;
}
return 0;
}
v20 = 1;
v10 = 0;
v21 = (__int64 *)a1[4];
if ( !v21 )
goto LABEL_29;
goto LABEL_26;
}
v10 = 1;
}
else
{
v8 = 0i64;
v9 = a1[2];
while ( 1 )
{
v10 = 1;
if ( v9 >= v5 )
break;
v11 = *(_BYTE *)(v3 + v9);
if ( v11 == 95 )
{
a1[2] = v9 + 1;
v7 = v8 + 1;
if ( !v7 )
break;
goto LABEL_20;
}
v12 = v11 - 48;
if ( (unsigned __int8)(v11 - 48) >= 0xAu )
{
if ( (unsigned __int8)(v11 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v11 - 65) >= 0x1Au )
break;
v13 = v11 - 29;
}
else
{
v13 = v11 - 87;
}
v12 = v13;
}
a1[2] = ++v9;
v15 = v8;
v14 = 62 * v8;
if ( is_mul_ok(0x3Eui64, v15) )
{
v16 = __CFADD__(v12, v14);
v8 = v12 + v14;
if ( !v16 )
continue;
}
break;
}
}
v20 = 0;
v21 = (__int64 *)a1[4];
if ( !v21 )
{
LABEL_29:
*a1 = 0i64;
*((_BYTE *)a1 + 8) = v20;
return 0;
}
LABEL_26:
v22 = byte_1400210C8;
if ( v10 )
v22 = "{invalid syntax}";
v23 = sub_1400183F0(v22, (9i64 * ((unsigned __int8)v10 ^ 1u)) | 0x10, v21);
result = 1;
if ( !v23 )
goto LABEL_29;
return result;
}
// 1400210C8: using guessed type unsigned __int8 byte_1400210C8[25];
//----- (0000000140011330) ----------------------------------------------------
char __fastcall sub_140011330(__int64 *a1, __int64 a2)
{
__int64 v3; // r10
char v4; // r8
unsigned __int64 v5; // r11
unsigned __int64 v6; // rcx
unsigned __int64 v7; // rax
unsigned __int64 v8; // rax
unsigned __int64 v9; // rdi
char v10; // r9
unsigned __int8 v11; // bp
unsigned __int8 v12; // dl
__int64 v13; // rax
unsigned __int64 v14; // kr00_8
bool v15; // cf
__int64 *v16; // r8
char result; // al
unsigned int v18; // ecx
char v19; // di
__int64 *v20; // r8
unsigned __int8 *v21; // rcx
char v22; // cl
__int128 v23; // [rsp+20h] [rbp-48h]
__int128 v24; // [rsp+30h] [rbp-38h]
v3 = *a1;
if ( !*a1 )
{
v16 = (__int64 *)a1[4];
if ( v16 )
return sub_1400183F0("?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ", 1ui64, v16);
return 0;
}
v4 = a2;
v5 = a1[1];
v6 = a1[2];
if ( v6 < v5 && *(_BYTE *)(v3 + v6) == 95 )
{
a1[2] = v6 + 1;
v7 = 0i64;
LABEL_20:
if ( v7 < v6 - 1 )
{
v18 = *((_DWORD *)a1 + 6) + 1;
if ( v18 < 0x1F5 )
{
if ( a1[4] )
{
v24 = *((_OWORD *)a1 + 1);
v23 = *(_OWORD *)a1;
a1[2] = v7;
*((_DWORD *)a1 + 6) = v18;
LOBYTE(a2) = v4 != 0;
result = sub_140013AF0((__int64)a1, a2);
*(_OWORD *)a1 = v23;
*((_OWORD *)a1 + 1) = v24;
return result;
}
return 0;
}
v19 = 1;
v10 = 0;
v20 = (__int64 *)a1[4];
if ( !v20 )
goto LABEL_29;
goto LABEL_26;
}
v10 = 1;
}
else
{
v8 = 0i64;
v9 = a1[2];
while ( 1 )
{
v10 = 1;
if ( v9 >= v5 )
break;
a2 = *(unsigned __int8 *)(v3 + v9);
if ( (_BYTE)a2 == 95 )
{
a1[2] = v9 + 1;
v7 = v8 + 1;
if ( !v7 )
break;
goto LABEL_20;
}
v11 = a2 - 48;
if ( (unsigned __int8)(a2 - 48) >= 0xAu )
{
if ( (unsigned __int8)(a2 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(a2 - 65) >= 0x1Au )
break;
v12 = a2 - 29;
}
else
{
v12 = a2 - 87;
}
v11 = v12;
}
a1[2] = ++v9;
v14 = v8;
v13 = 62 * v8;
if ( is_mul_ok(0x3Eui64, v14) )
{
v15 = __CFADD__(v11, v13);
v8 = v11 + v13;
if ( !v15 )
continue;
}
break;
}
}
v19 = 0;
v20 = (__int64 *)a1[4];
if ( !v20 )
{
LABEL_29:
*a1 = 0i64;
*((_BYTE *)a1 + 8) = v19;
return 0;
}
LABEL_26:
v21 = byte_1400210C8;
if ( v10 )
v21 = "{invalid syntax}";
v22 = sub_1400183F0(v21, (9i64 * ((unsigned __int8)v10 ^ 1u)) | 0x10, v20);
result = 1;
if ( !v22 )
goto LABEL_29;
return result;
}
// 1400210C8: using guessed type unsigned __int8 byte_1400210C8[25];
//----- (00000001400114E0) ----------------------------------------------------
char __fastcall sub_1400114E0(__int64 *a1)
{
__int64 v2; // r8
unsigned __int64 v3; // r10
unsigned __int64 v4; // rcx
unsigned __int64 v5; // rax
unsigned __int64 v6; // rax
unsigned __int64 v7; // r11
char v8; // r9
char v9; // dl
unsigned __int8 v10; // bl
unsigned __int8 v11; // dl
__int64 v12; // rax
unsigned __int64 v13; // kr00_8
bool v14; // cf
__int64 *v15; // r8
char result; // al
unsigned int v17; // ecx
char v18; // di
__int64 *v19; // r8
unsigned __int8 *v20; // rcx
char v21; // cl
__int128 v22; // [rsp+20h] [rbp-38h]
__int128 v23; // [rsp+30h] [rbp-28h]
v2 = *a1;
if ( !*a1 )
{
v15 = (__int64 *)a1[4];
if ( v15 )
return sub_1400183F0("?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ", 1ui64, v15);
return 0;
}
v3 = a1[1];
v4 = a1[2];
if ( v4 < v3 && *(_BYTE *)(v2 + v4) == 95 )
{
a1[2] = v4 + 1;
v5 = 0i64;
LABEL_20:
if ( v5 < v4 - 1 )
{
v17 = *((_DWORD *)a1 + 6) + 1;
if ( v17 < 0x1F5 )
{
if ( a1[4] )
{
v23 = *((_OWORD *)a1 + 1);
v22 = *(_OWORD *)a1;
a1[2] = v5;
*((_DWORD *)a1 + 6) = v17;
result = sub_140012C00((__int64)a1);
*(_OWORD *)a1 = v22;
*((_OWORD *)a1 + 1) = v23;
return result;
}
return 0;
}
v18 = 1;
v8 = 0;
v19 = (__int64 *)a1[4];
if ( !v19 )
goto LABEL_29;
goto LABEL_26;
}
v8 = 1;
}
else
{
v6 = 0i64;
v7 = a1[2];
while ( 1 )
{
v8 = 1;
if ( v7 >= v3 )
break;
v9 = *(_BYTE *)(v2 + v7);
if ( v9 == 95 )
{
a1[2] = v7 + 1;
v5 = v6 + 1;
if ( !v5 )
break;
goto LABEL_20;
}
v10 = v9 - 48;
if ( (unsigned __int8)(v9 - 48) >= 0xAu )
{
if ( (unsigned __int8)(v9 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v9 - 65) >= 0x1Au )
break;
v11 = v9 - 29;
}
else
{
v11 = v9 - 87;
}
v10 = v11;
}
a1[2] = ++v7;
v13 = v6;
v12 = 62 * v6;
if ( is_mul_ok(0x3Eui64, v13) )
{
v14 = __CFADD__(v10, v12);
v6 = v10 + v12;
if ( !v14 )
continue;
}
break;
}
}
v18 = 0;
v19 = (__int64 *)a1[4];
if ( !v19 )
{
LABEL_29:
*a1 = 0i64;
*((_BYTE *)a1 + 8) = v18;
return 0;
}
LABEL_26:
v20 = byte_1400210C8;
if ( v8 )
v20 = "{invalid syntax}";
v21 = sub_1400183F0(v20, (9i64 * ((unsigned __int8)v8 ^ 1u)) | 0x10, v19);
result = 1;
if ( !v21 )
goto LABEL_29;
return result;
}
// 1400210C8: using guessed type unsigned __int8 byte_1400210C8[25];
//----- (0000000140011680) ----------------------------------------------------
__int64 __fastcall sub_140011680(_QWORD *a1, unsigned int a2)
{
unsigned int v2; // esi
unsigned int v5; // ecx
unsigned int v6; // eax
char v7; // al
unsigned int v8; // eax
unsigned int v10[14]; // [rsp+20h] [rbp-38h] BYREF
if ( a1 )
{
LOBYTE(v2) = 1;
if ( !(unsigned __int8)sub_140017E90(a1) )
{
while ( 1 )
{
v5 = 1114114;
v6 = 48;
switch ( a2 )
{
case 0u:
goto LABEL_18;
case 1u:
case 2u:
case 3u:
case 4u:
case 5u:
case 6u:
case 7u:
case 8u:
case 0xBu:
case 0xCu:
case 0xEu:
case 0xFu:
case 0x10u:
case 0x11u:
case 0x12u:
case 0x13u:
case 0x14u:
case 0x15u:
case 0x16u:
case 0x17u:
case 0x18u:
case 0x19u:
case 0x1Au:
case 0x1Bu:
case 0x1Cu:
case 0x1Du:
case 0x1Eu:
case 0x1Fu:
case 0x20u:
case 0x21u:
case 0x23u:
case 0x24u:
case 0x25u:
case 0x26u:
goto LABEL_10;
case 9u:
v6 = 116;
goto LABEL_18;
case 0xAu:
v6 = 110;
goto LABEL_18;
case 0xDu:
v6 = 114;
goto LABEL_18;
case 0x22u:
a2 = 1114112;
if ( !(unsigned __int8)sub_140017E90(a1) )
continue;
return v2;
case 0x27u:
goto LABEL_12;
default:
if ( a2 == 92 )
goto LABEL_12;
if ( a2 == 1114112 )
return (unsigned int)sub_140017E90(a1);
LABEL_10:
if ( sub_14001B110(a2) || (v7 = sub_14001A050(a2), v5 = 1114113, !v7) )
{
_BitScanReverse(&v8, a2 | 1);
v6 = ((v8 ^ 0x1C) >> 2) ^ 7;
v5 = a2;
}
else
{
LABEL_12:
v6 = a2;
}
LABEL_18:
v10[0] = v6;
v10[1] = 0;
v10[2] = v5;
v10[3] = 5;
while ( (unsigned int)sub_140016690(v10) != 1114112 )
{
if ( (unsigned __int8)sub_140017E90(a1) )
return v2;
}
a2 = 1114112;
break;
}
}
}
}
else
{
return 0;
}
return v2;
}
// 140011791: variable 'v2' is possibly undefined
//----- (0000000140011850) ----------------------------------------------------
__int64 __fastcall sub_140011850(__int64 a1, unsigned __int64 a2)
{
unsigned int v2; // edi
__int64 *v3; // rsi
unsigned __int64 v6; // r15
bool v7; // cf
unsigned __int64 v8; // r15
unsigned int v11; // [rsp+24h] [rbp-34h] BYREF
unsigned __int64 v12[6]; // [rsp+28h] [rbp-30h] BYREF
v3 = *(__int64 **)(a1 + 32);
if ( !v3 )
return 0;
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
1ui64,
v3) )
return v2;
if ( a2 )
{
v6 = *(unsigned int *)(a1 + 40);
v7 = v6 < a2;
v8 = v6 - a2;
if ( !v7 )
{
if ( v8 >= 0x1A )
{
if ( (unsigned __int8)sub_1400183F0("_!f64f32usizeu128u64u32u16u8isizei128i64i32i16i8strcharbool", 1ui64, v3) )
return v2;
v12[0] = v8;
return (unsigned int)sub_14001AD00(v12, (__int64)v3);
}
else
{
v11 = v8 + 97;
return (unsigned int)sub_140018820(&v11, v3);
}
}
if ( !(unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v3) )
{
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = 0;
return 0;
}
return v2;
}
return sub_1400183F0("_!f64f32usizeu128u64u32u16u8isizei128i64i32i16i8strcharbool", 1ui64, v3);
}
// 1400118B8: variable 'v2' is possibly undefined
// 140011850: using guessed type unsigned __int64 var_30[6];
//----- (0000000140011940) ----------------------------------------------------
__int64 __fastcall sub_140011940(__int64 a1)
{
char *v1; // rbx
__int64 v3; // rcx
unsigned __int64 v4; // r8
unsigned __int64 v5; // rax
unsigned __int64 v6; // r9
unsigned __int64 v7; // rdi
unsigned __int64 v8; // rdi
__int64 *v9; // r8
__int64 v10; // r15
__int64 *v11; // r8
__int64 *v12; // r8
unsigned __int64 v14; // rax
bool v15; // cf
__int64 *v16; // r8
unsigned __int64 v17; // rdi
char v18; // al
unsigned __int8 v19; // r11
unsigned __int8 v20; // al
__int64 v21; // rax
__int64 *v22; // r8
__int64 *v23; // r8
__int64 v24; // rax
__int64 v25; // r14
unsigned __int64 v26; // rcx
__int64 *v27; // r8
v3 = *(_QWORD *)a1;
if ( v3 )
{
v4 = *(_QWORD *)(a1 + 8);
v5 = *(_QWORD *)(a1 + 16);
if ( v5 < v4 && *(_BYTE *)(v3 + v5) == 71 )
{
v6 = v5 + 1;
*(_QWORD *)(a1 + 16) = v5 + 1;
if ( v5 + 1 >= v4 || *(_BYTE *)(v3 + v6) != 95 )
{
v17 = 0i64;
while ( v6 < v4 )
{
v18 = *(_BYTE *)(v3 + v6);
if ( v18 == 95 )
{
*(_QWORD *)(a1 + 16) = v6 + 1;
v7 = v17 + 1;
if ( !v7 )
goto LABEL_46;
goto LABEL_45;
}
v19 = v18 - 48;
if ( (unsigned __int8)(v18 - 48) >= 0xAu )
{
if ( (unsigned __int8)(v18 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v18 - 65) >= 0x1Au )
goto LABEL_46;
v20 = v18 - 29;
}
else
{
v20 = v18 - 87;
}
v19 = v20;
}
*(_QWORD *)(a1 + 16) = ++v6;
v21 = 62 * v17;
if ( is_mul_ok(0x3Eui64, v17) )
{
v17 = v19 + v21;
if ( !__CFADD__(v19, v21) )
continue;
}
goto LABEL_46;
}
goto LABEL_46;
}
*(_QWORD *)(a1 + 16) = v5 + 2;
v7 = 0i64;
LABEL_45:
v8 = v7 + 1;
if ( !v8 )
{
LABEL_46:
v22 = *(__int64 **)(a1 + 32);
if ( !v22 || (LOBYTE(v1) = 1, !(unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v22)) )
{
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = 0;
LODWORD(v1) = 0;
}
return (unsigned int)v1;
}
}
else
{
v8 = 0i64;
}
v9 = *(__int64 **)(a1 + 32);
if ( v9 )
{
if ( !v8 )
goto LABEL_51;
LOBYTE(v1) = 1;
if ( !(unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
4ui64,
v9) )
{
++*(_DWORD *)(a1 + 40);
v10 = 1i64;
if ( !(unsigned __int8)sub_140011850(a1, 1ui64) )
{
while ( v8 != v10 )
{
if ( !v10
|| (v11 = *(__int64 **)(a1 + 32)) == 0i64
|| !(unsigned __int8)sub_1400183F0(
(unsigned __int8 *)", > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v11) )
{
++*(_DWORD *)(a1 + 40);
++v10;
if ( !(unsigned __int8)sub_140011850(a1, 1ui64) )
continue;
}
return (unsigned int)v1;
}
v23 = *(__int64 **)(a1 + 32);
if ( !v23
|| !(unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"> as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v23) )
{
LABEL_51:
v24 = *(_QWORD *)a1;
if ( *(_QWORD *)a1 )
{
v25 = 0i64;
v1 = " + ; mut const unsafe extern \"\" fn( -> ";
while ( 1 )
{
v26 = *(_QWORD *)(a1 + 16);
if ( v26 < *(_QWORD *)(a1 + 8) && *(_BYTE *)(v24 + v26) == 69 )
break;
v15 = v25-- == 0;
if ( !v15
&& (v27 = *(__int64 **)(a1 + 32)) != 0i64
&& (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)" + ; mut const unsafe extern \"\" fn( -> ",
3ui64,
v27)
|| (unsigned __int8)sub_140013900((__int64 *)a1) )
{
LOBYTE(v1) = 1;
goto LABEL_64;
}
v24 = *(_QWORD *)a1;
if ( !*(_QWORD *)a1 )
goto LABEL_63;
}
*(_QWORD *)(a1 + 16) = v26 + 1;
}
LABEL_63:
LODWORD(v1) = 0;
LABEL_64:
*(_DWORD *)(a1 + 40) -= v8;
}
}
}
}
else
{
v1 = 0i64;
while ( 1 )
{
v14 = *(_QWORD *)(a1 + 16);
if ( v14 < *(_QWORD *)(a1 + 8) && *(_BYTE *)(v3 + v14) == 69 )
break;
v15 = v1-- == 0i64;
if ( !v15
&& (v16 = *(__int64 **)(a1 + 32)) != 0i64
&& (unsigned __int8)sub_1400183F0((unsigned __int8 *)" + ; mut const unsafe extern \"\" fn( -> ", 3ui64, v16)
|| (unsigned __int8)sub_140013900((__int64 *)a1) )
{
LOBYTE(v1) = 1;
return (unsigned int)v1;
}
v3 = *(_QWORD *)a1;
if ( !*(_QWORD *)a1 )
goto LABEL_29;
}
*(_QWORD *)(a1 + 16) = v14 + 1;
LODWORD(v1) = 0;
}
return (unsigned int)v1;
}
v12 = *(__int64 **)(a1 + 32);
if ( v12 )
return sub_1400183F0("?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ", 1ui64, v12);
LABEL_29:
LODWORD(v1) = 0;
return (unsigned int)v1;
}
// 140011C26: variable 'v1' is possibly undefined
//----- (0000000140011C40) ----------------------------------------------------
char __fastcall sub_140011C40(__int64 a1)
{
__int64 v2; // rcx
unsigned __int64 v3; // r8
unsigned __int64 v4; // rax
unsigned __int64 v5; // r9
unsigned __int64 v6; // rdi
unsigned __int64 v7; // rdi
__int64 *v8; // r8
char v9; // bl
__int64 v10; // r15
__int64 *v11; // r8
__int64 *v12; // r8
char result; // al
unsigned __int64 v14; // rdi
char v15; // al
unsigned __int8 v16; // r11
unsigned __int8 v17; // al
__int64 v18; // rax
__int64 *v19; // r8
__int64 *v20; // r8
v2 = *(_QWORD *)a1;
if ( !v2 )
{
v12 = *(__int64 **)(a1 + 32);
if ( v12 )
return sub_1400183F0("?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ", 1ui64, v12);
return 0;
}
v3 = *(_QWORD *)(a1 + 8);
v4 = *(_QWORD *)(a1 + 16);
if ( v4 < v3 && *(_BYTE *)(v2 + v4) == 71 )
{
v5 = v4 + 1;
*(_QWORD *)(a1 + 16) = v4 + 1;
if ( v4 + 1 >= v3 || *(_BYTE *)(v2 + v5) != 95 )
{
v14 = 0i64;
while ( v5 < v3 )
{
v15 = *(_BYTE *)(v2 + v5);
if ( v15 == 95 )
{
*(_QWORD *)(a1 + 16) = v5 + 1;
v6 = v14 + 1;
if ( !v6 )
goto LABEL_36;
goto LABEL_35;
}
v16 = v15 - 48;
if ( (unsigned __int8)(v15 - 48) >= 0xAu )
{
if ( (unsigned __int8)(v15 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v15 - 65) >= 0x1Au )
goto LABEL_36;
v17 = v15 - 29;
}
else
{
v17 = v15 - 87;
}
v16 = v17;
}
*(_QWORD *)(a1 + 16) = ++v5;
v18 = 62 * v14;
if ( is_mul_ok(0x3Eui64, v14) )
{
v14 = v16 + v18;
if ( !__CFADD__(v16, v18) )
continue;
}
goto LABEL_36;
}
goto LABEL_36;
}
*(_QWORD *)(a1 + 16) = v4 + 2;
v6 = 0i64;
LABEL_35:
v7 = v6 + 1;
if ( !v7 )
{
LABEL_36:
v19 = *(__int64 **)(a1 + 32);
if ( v19 )
{
v9 = 1;
if ( (unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v19) )
return v9;
}
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = 0;
return 0;
}
}
else
{
v7 = 0i64;
}
v8 = *(__int64 **)(a1 + 32);
if ( !v8 )
return sub_140013160((__int64 *)a1);
if ( v7 )
{
v9 = 1;
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
4ui64,
v8) )
return v9;
++*(_DWORD *)(a1 + 40);
v10 = 1i64;
if ( (unsigned __int8)sub_140011850(a1, 1ui64) )
return v9;
while ( v7 != v10 )
{
if ( !v10
|| (v11 = *(__int64 **)(a1 + 32)) == 0i64
|| !(unsigned __int8)sub_1400183F0(
(unsigned __int8 *)", > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v11) )
{
++*(_DWORD *)(a1 + 40);
++v10;
if ( !(unsigned __int8)sub_140011850(a1, 1ui64) )
continue;
}
return v9;
}
v20 = *(__int64 **)(a1 + 32);
if ( v20 )
{
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"> as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v20) )
return v9;
}
}
result = sub_140013160((__int64 *)a1);
*(_DWORD *)(a1 + 40) -= v7;
return result;
}
//----- (0000000140011E70) ----------------------------------------------------
__int64 __fastcall sub_140011E70(__int64 *a1)
{
__int64 v1; // rax
__int64 v3; // rdi
__int64 i; // rsi
unsigned __int64 v5; // rcx
__int64 *v6; // r8
v1 = *a1;
if ( !*a1 )
return 0i64;
v3 = 0i64;
for ( i = 0i64; ; ++i )
{
v5 = a1[2];
if ( v5 < a1[1] && *(_BYTE *)(v1 + v5) == 69 )
break;
if ( i )
{
v6 = (__int64 *)a1[4];
if ( v6 )
{
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)", > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v6) )
return 1i64;
}
}
if ( (unsigned __int8)sub_140012C00((__int64)a1) )
return 1i64;
v1 = *a1;
if ( !*a1 )
return v3;
}
a1[2] = v5 + 1;
return 0i64;
}
//----- (0000000140011F00) ----------------------------------------------------
__int64 __fastcall sub_140011F00(__int64 *a1)
{
__int64 v1; // rax
__int64 v3; // rsi
__int64 v4; // r14
unsigned __int64 v5; // rcx
__int64 *v7; // r8
v1 = *a1;
if ( !*a1 )
return 0i64;
v3 = 0i64;
v4 = 0i64;
while ( 1 )
{
v5 = a1[2];
if ( v5 < a1[1] && *(_BYTE *)(v1 + v5) == 69 )
break;
if ( v4-- != 0 )
{
v7 = (__int64 *)a1[4];
if ( v7 )
{
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)", > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v7) )
return 1i64;
}
}
if ( sub_140012AD0(a1) )
return 1i64;
v1 = *a1;
if ( !*a1 )
return v3;
}
a1[2] = v5 + 1;
return 0i64;
}
//----- (0000000140011F90) ----------------------------------------------------
__int64 __fastcall sub_140011F90(__int64 *a1, __int64 a2)
{
__int64 v2; // rax
__int64 v4; // rsi
__int64 v5; // r14
unsigned __int64 v6; // rcx
__int64 *v8; // r8
v2 = *a1;
if ( !*a1 )
return 0i64;
v4 = 0i64;
v5 = 0i64;
while ( 1 )
{
v6 = a1[2];
if ( v6 < a1[1] && *(_BYTE *)(v2 + v6) == 69 )
break;
if ( v5-- != 0 )
{
v8 = (__int64 *)a1[4];
if ( v8 )
{
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)", > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v8) )
return 1i64;
}
}
LOBYTE(a2) = 1;
if ( (unsigned __int8)sub_140013AF0((__int64)a1, a2) )
return 1i64;
v2 = *a1;
if ( !*a1 )
return v4;
}
a1[2] = v6 + 1;
return 0i64;
}
// 140011FE5: variable 'a2' is possibly undefined
//----- (0000000140012020) ----------------------------------------------------
__int64 __fastcall sub_140012020(__int64 *a1)
{
__int64 v2; // rcx
__int64 i; // r12
unsigned __int64 v4; // rax
__int64 *v5; // r8
unsigned __int64 v6; // r8
unsigned __int64 v7; // rax
unsigned __int64 v8; // r9
unsigned __int64 v9; // rax
char v10; // dl
unsigned __int8 v11; // r10
unsigned __int8 v12; // dl
__int64 v13; // rax
unsigned __int64 v14; // kr00_8
bool v15; // cf
__int64 *v16; // r8
__int64 v17; // r13
unsigned __int64 v18; // rax
__int64 v19; // rdx
__int64 *v20; // r13
char v21; // r13
__int64 *v22; // r8
unsigned __int8 *v23; // rcx
__int64 *v24; // r8
__int128 v26[2]; // [rsp+20h] [rbp-88h] BYREF
__int128 v27[6]; // [rsp+40h] [rbp-68h] BYREF
v2 = *a1;
if ( v2 )
{
for ( i = 0i64; ; ++i )
{
v4 = a1[2];
if ( v4 < a1[1] && *(_BYTE *)(v2 + v4) == 69 )
break;
if ( !i )
goto LABEL_11;
v5 = (__int64 *)a1[4];
if ( !v5 )
goto LABEL_11;
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)", > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v5) )
return 1i64;
v2 = *a1;
if ( !*a1 )
{
v16 = (__int64 *)a1[4];
if ( !v16 )
return 0i64;
v17 = 1i64;
if ( (unsigned __int8)sub_1400183F0(
"?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
1ui64,
v16) )
return v17;
}
else
{
LABEL_11:
v6 = a1[1];
v7 = a1[2];
if ( v7 < v6 && *(_BYTE *)(v2 + v7) == 115 )
{
v8 = v7 + 1;
a1[2] = v7 + 1;
if ( v7 + 1 >= v6 || *(_BYTE *)(v2 + v8) != 95 )
{
v9 = 0i64;
while ( v8 < v6 )
{
v10 = *(_BYTE *)(v2 + v8);
if ( v10 == 95 )
{
a1[2] = v8 + 1;
v18 = v9 + 1;
if ( v18 && v18 != -1i64 )
goto LABEL_33;
break;
}
v11 = v10 - 48;
if ( (unsigned __int8)(v10 - 48) >= 0xAu )
{
if ( (unsigned __int8)(v10 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v10 - 65) >= 0x1Au )
break;
v12 = v10 - 29;
}
else
{
v12 = v10 - 87;
}
v11 = v12;
}
a1[2] = ++v8;
v14 = v9;
v13 = 62 * v9;
if ( is_mul_ok(0x3Eui64, v14) )
{
v15 = __CFADD__(v11, v13);
v9 = v11 + v13;
if ( !v15 )
continue;
}
break;
}
v24 = (__int64 *)a1[4];
if ( !v24 || !(unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v24) )
{
*a1 = 0i64;
*((_BYTE *)a1 + 8) = 0;
return 0i64;
}
return 1i64;
}
a1[2] = v7 + 2;
}
LABEL_33:
sub_140010F20((__int64)v26, (__int64)a1);
if ( *(_QWORD *)&v26[0] )
{
v27[1] = v26[1];
v27[0] = v26[0];
v20 = (__int64 *)a1[4];
if ( v20
&& ((unsigned __int8)sub_1400103E0((char **)v27, (__int64 *)a1[4])
|| (unsigned __int8)sub_1400183F0(": 0x", 2ui64, v20)) )
{
return 1i64;
}
LOBYTE(v19) = 1;
if ( (unsigned __int8)sub_140013AF0((__int64)a1, v19) )
return 1i64;
}
else
{
v21 = BYTE8(v26[0]);
v22 = (__int64 *)a1[4];
if ( v22 )
{
v23 = byte_1400210C8;
if ( !BYTE8(v26[0]) )
v23 = "{invalid syntax}";
if ( (unsigned __int8)sub_1400183F0(v23, (9i64 * BYTE8(v26[0])) | 0x10, v22) )
return 1i64;
}
*a1 = 0i64;
*((_BYTE *)a1 + 8) = v21;
}
}
v2 = *a1;
if ( !*a1 )
return 0i64;
}
a1[2] = v4 + 1;
}
return 0i64;
}
// 140012075: variable 'v19' is possibly undefined
// 1400210C8: using guessed type unsigned __int8 byte_1400210C8[25];
//----- (00000001400122E0) ----------------------------------------------------
__int64 __fastcall sub_1400122E0(__int64 *a1, __int64 a2)
{
__int64 v2; // rax
__int64 v4; // rdi
__int64 i; // rsi
unsigned __int64 v6; // rcx
__int64 *v7; // r8
v2 = *a1;
if ( !*a1 )
return 0i64;
v4 = 0i64;
for ( i = 0i64; ; ++i )
{
v6 = a1[2];
if ( v6 < a1[1] && *(_BYTE *)(v2 + v6) == 69 )
break;
if ( i )
{
v7 = (__int64 *)a1[4];
if ( v7 )
{
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)", > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v7) )
return 1i64;
}
}
LOBYTE(a2) = 1;
if ( (unsigned __int8)sub_140013AF0((__int64)a1, a2) )
return 1i64;
v2 = *a1;
if ( !*a1 )
return v4;
}
a1[2] = v6 + 1;
return 0i64;
}
// 140012334: variable 'a2' is possibly undefined
//----- (0000000140012370) ----------------------------------------------------
__int64 __fastcall sub_140012370(__int64 a1, unsigned int a2)
{
unsigned int v2; // edi
__int64 v4; // rcx
unsigned int v5; // eax
char v6; // bl
unsigned __int64 v7; // r8
unsigned __int64 v8; // rax
int v10; // ebx
unsigned __int64 v11; // rdx
unsigned __int64 v12; // r9
__int64 *v13; // r8
char v14; // al
unsigned __int8 v15; // bl
__int64 *v16; // r8
unsigned __int8 *v17; // rcx
__int64 *v18; // r8
__int64 *v19; // r8
unsigned __int64 v20; // rax
unsigned __int64 v21; // rbx
__int64 v22; // r14
unsigned __int64 v23; // rbx
__int64 *v24; // r8
__int64 *v25; // rdx
unsigned __int8 v26; // bl
__int64 *v27; // r8
unsigned __int8 *v28; // rcx
unsigned __int64 v29; // rax
char v30; // dl
unsigned __int8 v31; // r11
unsigned __int8 v32; // dl
__int64 v33; // rax
unsigned __int64 v34; // kr00_8
bool v35; // cf
__int64 *v36; // rdx
__int64 v37; // rcx
__int64 *v38; // r8
__int64 *v39; // r8
__int64 *v40; // r8
unsigned __int64 v42; // rax
__int64 *v43; // r8
__int64 *v44; // r8
__int64 *v45; // r8
char *v46; // rcx
__int64 *v47; // r8
__int64 *v48; // r8
__int64 *v49; // r8
char *v50; // rcx
unsigned __int64 v51; // rdx
char v52; // al
__int64 *v53; // rdx
__int64 *v54; // r8
__int64 *v55; // rdx
__int64 *v56; // r8
__int64 v57; // rdx
__int128 v58; // [rsp+20h] [rbp-98h] BYREF
__int128 v59; // [rsp+30h] [rbp-88h]
__int128 v60; // [rsp+40h] [rbp-78h] BYREF
__int128 v61; // [rsp+50h] [rbp-68h]
unsigned __int64 v62; // [rsp+68h] [rbp-50h] BYREF
__int128 v63[4]; // [rsp+70h] [rbp-48h] BYREF
v4 = *(_QWORD *)a1;
if ( !v4 )
{
LABEL_74:
v40 = *(__int64 **)(a1 + 32);
if ( v40 )
return sub_1400183F0("?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ", 1ui64, v40);
return 0;
}
v5 = *(_DWORD *)(a1 + 24) + 1;
v6 = (v5 < 0x1F5) + 1;
*(_DWORD *)(a1 + 24) = v5;
if ( v5 >= 0x1F5 )
{
v13 = *(__int64 **)(a1 + 32);
if ( v13 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0(byte_1400210C8, 0x19ui64, v13) )
return v2;
}
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = v6;
return 0;
}
v7 = *(_QWORD *)(a1 + 8);
v8 = *(_QWORD *)(a1 + 16);
if ( v8 >= v7 )
{
LABEL_92:
v47 = *(__int64 **)(a1 + 32);
if ( v47 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v47) )
return v2;
}
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = 0;
return 0;
}
v10 = *(unsigned __int8 *)(v4 + v8);
v11 = v8 + 1;
*(_QWORD *)(a1 + 16) = v8 + 1;
switch ( v10 )
{
case 'B':
v14 = sub_140011180((__int64 *)a1, a2);
LOBYTE(v2) = 1;
goto LABEL_89;
case 'C':
sub_140010DE0((__int64)&v58, (__int64 *)a1);
if ( (_BYTE)v58 )
goto LABEL_15;
v62 = *((_QWORD *)&v58 + 1);
if ( *(_QWORD *)a1 )
{
sub_140010F20((__int64)&v58, a1);
if ( !(_QWORD)v58 )
goto LABEL_69;
v63[1] = v59;
v63[0] = v58;
v36 = *(__int64 **)(a1 + 32);
if ( v36 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400103E0((char **)v63, v36) )
return v2;
v37 = *(_QWORD *)(a1 + 32);
if ( v37 )
{
if ( !sub_140017C40(v37)
&& ((unsigned __int8)sub_140017BE0(*(_QWORD **)(a1 + 32))
|| (unsigned __int8)sub_14001A4F0(&v62, *(_QWORD *)(a1 + 32))
|| (unsigned __int8)sub_140017BE0(*(_QWORD **)(a1 + 32))) )
{
LOBYTE(v2) = 1;
return v2;
}
}
}
goto LABEL_90;
}
v38 = *(__int64 **)(a1 + 32);
if ( !v38 )
return 0;
return (unsigned int)sub_1400183F0(
"?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
1ui64,
v38);
case 'I':
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_140012370(a1, a2) )
return v2;
if ( (_BYTE)a2 )
{
v18 = *(__int64 **)(a1 + 32);
if ( v18 )
{
if ( (unsigned __int8)sub_1400183F0(byte_140020C00, 2ui64, v18) )
return v2;
}
}
v19 = *(__int64 **)(a1 + 32);
if ( v19 )
{
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"<>()C,", 1ui64, v19) )
return v2;
}
if ( sub_140011F00((__int64 *)a1) )
return v2;
goto LABEL_86;
case 'M':
case 'X':
if ( v11 >= v7 || *(_BYTE *)(v4 + v11) != 115 )
goto LABEL_78;
v12 = v8 + 2;
*(_QWORD *)(a1 + 16) = v8 + 2;
if ( v8 + 2 < v7 && *(_BYTE *)(v4 + v12) == 95 )
{
*(_QWORD *)(a1 + 16) = v8 + 3;
}
else
{
v29 = 0i64;
while ( 1 )
{
if ( v12 >= v7 )
goto LABEL_92;
v30 = *(_BYTE *)(v4 + v12);
if ( v30 == 95 )
break;
v31 = v30 - 48;
if ( (unsigned __int8)(v30 - 48) >= 0xAu )
{
if ( (unsigned __int8)(v30 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v30 - 65) >= 0x1Au )
goto LABEL_92;
v32 = v30 - 29;
}
else
{
v32 = v30 - 87;
}
v31 = v32;
}
*(_QWORD *)(a1 + 16) = ++v12;
v34 = v29;
v33 = 62 * v29;
if ( is_mul_ok(0x3Eui64, v34) )
{
v35 = __CFADD__(v31, v33);
v29 = v31 + v33;
if ( !v35 )
continue;
}
goto LABEL_92;
}
*(_QWORD *)(a1 + 16) = v12 + 1;
v42 = v29 + 1;
if ( !v42 || v42 == -1i64 )
goto LABEL_92;
}
LABEL_78:
sub_140011120(a1);
LABEL_79:
v43 = *(__int64 **)(a1 + 32);
if ( v43 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"<>()C,", 1ui64, v43) )
return v2;
}
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_140012C00(a1) )
return v2;
if ( (_BYTE)v10 != 77 )
{
v44 = *(__int64 **)(a1 + 32);
if ( v44 )
{
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)" as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
4ui64,
v44) )
return v2;
}
if ( (unsigned __int8)sub_140012370(a1, 0i64) )
return v2;
}
LABEL_86:
v45 = *(__int64 **)(a1 + 32);
if ( !v45 )
goto LABEL_90;
v46 = ">()C,";
goto LABEL_88;
case 'N':
v20 = sub_140010EC0((_QWORD *)a1);
v21 = v20;
if ( (v20 & 1) != 0 )
{
v26 = BYTE1(v20) & 1;
v27 = *(__int64 **)(a1 + 32);
if ( v27 )
{
v28 = byte_1400210C8;
if ( !v26 )
v28 = "{invalid syntax}";
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0(v28, (9i64 * v26) | 0x10, v27) )
return v2;
}
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = v26;
return 0;
}
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_140012370(a1, a2) )
return v2;
if ( *(_QWORD *)a1 )
goto LABEL_31;
v39 = *(__int64 **)(a1 + 32);
if ( !v39 )
return 0;
if ( (unsigned __int8)sub_1400183F0(byte_140020C00, 2ui64, v39) )
return v2;
if ( !*(_QWORD *)a1 )
goto LABEL_74;
LABEL_31:
sub_140010DE0((__int64)&v58, (__int64 *)a1);
if ( (_BYTE)v58 )
{
LABEL_15:
v15 = BYTE1(v58);
v16 = *(__int64 **)(a1 + 32);
if ( !v16 )
goto LABEL_19;
goto LABEL_16;
}
if ( !*(_QWORD *)a1 )
goto LABEL_74;
v22 = *((_QWORD *)&v58 + 1);
sub_140010F20((__int64)&v58, a1);
if ( !(_QWORD)v58 )
{
LABEL_69:
v15 = BYTE8(v58);
v16 = *(__int64 **)(a1 + 32);
if ( !v16 )
goto LABEL_19;
LABEL_16:
v17 = byte_1400210C8;
if ( !v15 )
v17 = "{invalid syntax}";
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0(v17, (9i64 * v15) | 0x10, v16) )
return v2;
LABEL_19:
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = v15;
return 0;
}
v23 = HIDWORD(v21);
v61 = v59;
v60 = v58;
if ( (_DWORD)v23 != 1114112 )
{
v48 = *(__int64 **)(a1 + 32);
if ( v48
&& (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
3ui64,
v48) )
{
return v2;
}
if ( (_DWORD)v23 == 67 )
{
v49 = *(__int64 **)(a1 + 32);
if ( v49 )
{
v50 = "closure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ";
v51 = 7i64;
goto LABEL_105;
}
}
else if ( (_DWORD)v23 == 83 )
{
v49 = *(__int64 **)(a1 + 32);
if ( v49 )
{
v50 = "shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ";
v51 = 4i64;
LABEL_105:
v52 = sub_1400183F0((unsigned __int8 *)v50, v51, v49);
goto LABEL_108;
}
}
else
{
v53 = *(__int64 **)(a1 + 32);
LODWORD(v58) = v23;
if ( v53 )
{
v52 = sub_140018820((unsigned int *)&v58, v53);
LABEL_108:
if ( v52 )
return v2;
}
}
if ( *((_QWORD *)&v61 + 1) | *((_QWORD *)&v60 + 1) )
{
v54 = *(__int64 **)(a1 + 32);
if ( !v54 )
goto LABEL_90;
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)":#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
1ui64,
v54) )
return v2;
v55 = *(__int64 **)(a1 + 32);
if ( !v55 )
goto LABEL_90;
if ( (unsigned __int8)sub_1400103E0((char **)&v60, v55) )
return v2;
}
v56 = *(__int64 **)(a1 + 32);
if ( !v56 )
goto LABEL_90;
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
1ui64,
v56) )
return v2;
v57 = *(_QWORD *)(a1 + 32);
*(_QWORD *)&v58 = v22;
if ( !v57 )
goto LABEL_90;
if ( (unsigned __int8)sub_14001AD00((unsigned __int64 *)&v58, v57) )
return v2;
v45 = *(__int64 **)(a1 + 32);
if ( !v45 )
{
LABEL_90:
if ( *(_QWORD *)a1 )
--*(_DWORD *)(a1 + 24);
return 0;
}
v46 = "}0";
LABEL_88:
v14 = sub_1400183F0((unsigned __int8 *)v46, 1ui64, v45);
goto LABEL_89;
}
if ( !(*((_QWORD *)&v61 + 1) | *((_QWORD *)&v60 + 1)) )
goto LABEL_90;
v24 = *(__int64 **)(a1 + 32);
if ( !v24 )
goto LABEL_90;
if ( (unsigned __int8)sub_1400183F0(byte_140020C00, 2ui64, v24) )
return v2;
v25 = *(__int64 **)(a1 + 32);
if ( !v25 )
goto LABEL_90;
v14 = sub_1400103E0((char **)&v60, v25);
LABEL_89:
if ( !v14 )
goto LABEL_90;
return v2;
case 'Y':
goto LABEL_79;
default:
goto LABEL_92;
}
}
// 140012929: variable 'v2' is possibly undefined
// 140020C00: using guessed type unsigned __int8 byte_140020C00[8];
// 1400210C8: using guessed type unsigned __int8 byte_1400210C8[25];
//----- (0000000140012AD0) ----------------------------------------------------
char __fastcall sub_140012AD0(_QWORD *a1)
{
__int64 v2; // rcx
unsigned __int64 v3; // r8
unsigned __int64 v4; // rax
unsigned __int64 v5; // r9
unsigned __int64 v6; // rax
char result; // al
unsigned __int64 v8; // rax
char v9; // dl
unsigned __int8 v10; // r11
unsigned __int8 v11; // dl
__int64 v12; // rax
unsigned __int64 v13; // kr00_8
bool v14; // cf
__int64 *v15; // r8
char v16; // cl
v2 = *a1;
if ( !v2 )
return sub_140012C00((__int64)a1);
v3 = a1[1];
v4 = a1[2];
if ( v4 >= v3 )
return sub_140012C00((__int64)a1);
if ( *(_BYTE *)(v2 + v4) != 76 )
{
if ( *(_BYTE *)(v2 + v4) == 75 )
{
a1[2] = v4 + 1;
return sub_140013AF0((__int64)a1, 0i64);
}
return sub_140012C00((__int64)a1);
}
v5 = v4 + 1;
a1[2] = v4 + 1;
if ( v4 + 1 < v3 && *(_BYTE *)(v2 + v5) == 95 )
{
a1[2] = v4 + 2;
v6 = 0i64;
return sub_140011850((__int64)a1, v6);
}
else
{
v8 = 0i64;
while ( v5 < v3 )
{
v9 = *(_BYTE *)(v2 + v5);
if ( v9 == 95 )
{
a1[2] = v5 + 1;
v6 = v8 + 1;
if ( v6 )
return sub_140011850((__int64)a1, v6);
break;
}
v10 = v9 - 48;
if ( (unsigned __int8)(v9 - 48) >= 0xAu )
{
if ( (unsigned __int8)(v9 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v9 - 65) >= 0x1Au )
break;
v11 = v9 - 29;
}
else
{
v11 = v9 - 87;
}
v10 = v11;
}
a1[2] = ++v5;
v13 = v8;
v12 = 62 * v8;
if ( is_mul_ok(0x3Eui64, v13) )
{
v14 = __CFADD__(v10, v12);
v8 = v10 + v12;
if ( !v14 )
continue;
}
break;
}
v15 = (__int64 *)a1[4];
if ( !v15 || (v16 = sub_1400183F0("{invalid syntax}", 0x10ui64, v15), result = 1, !v16) )
{
*a1 = 0i64;
*((_BYTE *)a1 + 8) = 0;
return 0;
}
}
return result;
}
//----- (0000000140012C00) ----------------------------------------------------
__int64 __fastcall sub_140012C00(__int64 a1)
{
unsigned int v1; // edi
__int64 v3; // r15
unsigned __int64 v4; // r12
unsigned __int64 v5; // rbx
char v6; // r14
unsigned __int64 v7; // r13
unsigned __int8 v8; // al
int v9; // edx
unsigned int v10; // eax
__int64 *v11; // r8
__int64 v12; // rdx
__int64 *v13; // r8
__int64 *v14; // r8
char v15; // al
__int64 *v16; // r8
unsigned __int8 *v17; // rcx
unsigned __int64 v18; // rdx
__int64 *v20; // r8
__int64 *v21; // r8
__int64 *v22; // rbx
char *v23; // rcx
unsigned __int64 v24; // rdx
__int64 *v25; // r8
unsigned __int8 v26; // bl
__int64 *v27; // r8
unsigned __int8 *v28; // rcx
__int64 *v29; // r8
unsigned __int64 v30; // rax
unsigned __int64 v31; // rbx
__int64 *v32; // r8
__int64 *v33; // r8
__int64 v34; // rdx
__int64 *v35; // r8
__int64 *v36; // r8
char v37; // al
__int64 *v38; // r8
__int64 *v39; // r8
__int64 *v40; // r8
char v41; // [rsp+20h] [rbp-48h] BYREF
unsigned __int8 v42; // [rsp+21h] [rbp-47h]
unsigned __int64 v43; // [rsp+28h] [rbp-40h]
v3 = *(_QWORD *)a1;
if ( !*(_QWORD *)a1 )
{
v16 = *(__int64 **)(a1 + 32);
if ( !v16 )
return 0;
v17 = "?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ";
v18 = 1i64;
return sub_1400183F0(v17, v18, v16);
}
v4 = *(_QWORD *)(a1 + 8);
v5 = *(_QWORD *)(a1 + 16);
if ( v5 >= v4 )
{
v20 = *(__int64 **)(a1 + 32);
if ( v20 )
{
LOBYTE(v1) = 1;
if ( (unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v20) )
return v1;
}
LABEL_21:
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = 0;
return 0;
}
v6 = *(_BYTE *)(v3 + v5);
v7 = v5 + 1;
*(_QWORD *)(a1 + 16) = v5 + 1;
v8 = v6 - 97;
if ( (unsigned __int8)(v6 - 97) < 0x1Au )
{
v9 = 62716863;
if ( _bittest(&v9, v8) )
{
v16 = *(__int64 **)(a1 + 32);
if ( !v16 )
return 0;
v17 = (unsigned __int8 *)*(&off_1400213A0 + (char)v8);
v18 = qword_1400212D0[(char)v8];
return sub_1400183F0(v17, v18, v16);
}
}
v10 = *(_DWORD *)(a1 + 24) + 1;
*(_DWORD *)(a1 + 24) = v10;
if ( v10 <= 0x1F4 )
{
switch ( v6 )
{
case 'A':
case 'S':
v11 = *(__int64 **)(a1 + 32);
if ( !v11
|| (LOBYTE(v1) = 1,
!(unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"[]dyn + ; mut const unsafe extern \"\" fn( -> ",
1ui64,
v11)) )
{
LOBYTE(v1) = 1;
if ( !(unsigned __int8)sub_140012C00(a1) )
{
if ( v6 != 65
|| ((v13 = *(__int64 **)(a1 + 32)) == 0i64
|| !(unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"; mut const unsafe extern \"\" fn( -> ",
2ui64,
v13))
&& (LOBYTE(v1) = 1, LOBYTE(v12) = 1, !(unsigned __int8)sub_140013AF0(a1, v12)) )
{
v14 = *(__int64 **)(a1 + 32);
if ( !v14 )
goto LABEL_79;
v15 = sub_1400183F0((unsigned __int8 *)"]dyn + ; mut const unsafe extern \"\" fn( -> ", 1ui64, v14);
goto LABEL_77;
}
}
}
return v1;
case 'B':
v15 = sub_1400114E0((__int64 *)a1);
goto LABEL_77;
case 'D':
v29 = *(__int64 **)(a1 + 32);
if ( v29 )
{
LOBYTE(v1) = 1;
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"dyn + ; mut const unsafe extern \"\" fn( -> ",
4ui64,
v29) )
return v1;
}
LOBYTE(v1) = 1;
if ( (unsigned __int8)sub_140011940(a1) )
return v1;
if ( *(_QWORD *)a1
&& (v30 = *(_QWORD *)(a1 + 16), v30 < *(_QWORD *)(a1 + 8))
&& *(_BYTE *)(*(_QWORD *)a1 + v30) == 76 )
{
*(_QWORD *)(a1 + 16) = v30 + 1;
sub_140010D20((__int64)&v41, (__int64 *)a1);
if ( v41 )
{
LABEL_36:
v26 = v42;
v27 = *(__int64 **)(a1 + 32);
if ( !v27 )
goto LABEL_40;
v28 = byte_1400210C8;
if ( !v42 )
v28 = "{invalid syntax}";
LOBYTE(v1) = 1;
if ( !(unsigned __int8)sub_1400183F0(v28, (9i64 * v42) | 0x10, v27) )
{
LABEL_40:
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = v26;
return 0;
}
}
else
{
v31 = v43;
if ( !v43 )
goto LABEL_79;
v32 = *(__int64 **)(a1 + 32);
if ( !v32
|| !(unsigned __int8)sub_1400183F0(
(unsigned __int8 *)" + ; mut const unsafe extern \"\" fn( -> ",
3ui64,
v32) )
{
v15 = sub_140011850(a1, v31);
LABEL_78:
if ( !v15 )
{
LABEL_79:
if ( *(_QWORD *)a1 )
--*(_DWORD *)(a1 + 24);
return 0;
}
}
}
}
else
{
v38 = *(__int64 **)(a1 + 32);
if ( !v38 || !(unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v38) )
goto LABEL_21;
}
break;
case 'F':
v15 = sub_140011C40(a1);
goto LABEL_77;
case 'O':
case 'P':
v22 = *(__int64 **)(a1 + 32);
if ( !v22 )
goto LABEL_76;
LOBYTE(v1) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"*&<>()C,", 1ui64, *(__int64 **)(a1 + 32)) )
return v1;
if ( v6 == 80 )
{
v23 = "const unsafe extern \"\" fn( -> ";
v24 = 6i64;
}
else
{
v23 = "mut const unsafe extern \"\" fn( -> ";
v24 = 4i64;
}
v37 = sub_1400183F0((unsigned __int8 *)v23, v24, v22);
goto LABEL_75;
case 'Q':
case 'R':
v25 = *(__int64 **)(a1 + 32);
if ( v25 )
{
LOBYTE(v1) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"&<>()C,", 1ui64, v25) )
return v1;
}
if ( v7 >= v4 || *(_BYTE *)(v3 + v7) != 76 )
goto LABEL_72;
*(_QWORD *)(a1 + 16) = v5 + 2;
sub_140010D20((__int64)&v41, (__int64 *)a1);
if ( v41 )
goto LABEL_36;
if ( v43 )
{
LOBYTE(v1) = 1;
if ( (unsigned __int8)sub_140011850(a1, v43) )
return v1;
v39 = *(__int64 **)(a1 + 32);
if ( v39 )
{
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)" unsafe extern \"\" fn( -> ", 1ui64, v39) )
return v1;
}
}
LABEL_72:
if ( v6 != 82 )
{
v40 = *(__int64 **)(a1 + 32);
if ( v40 )
{
v37 = sub_1400183F0((unsigned __int8 *)"mut const unsafe extern \"\" fn( -> ", 4ui64, v40);
LOBYTE(v1) = 1;
LABEL_75:
if ( v37 )
return v1;
}
}
LABEL_76:
v15 = sub_140012C00(a1);
LABEL_77:
LOBYTE(v1) = 1;
goto LABEL_78;
case 'T':
v33 = *(__int64 **)(a1 + 32);
if ( v33 )
{
LOBYTE(v1) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"()C,", 1ui64, v33) )
return v1;
}
LOBYTE(v1) = 1;
if ( sub_140011E70((__int64 *)a1) )
return v1;
if ( v34 != 1 )
goto LABEL_61;
v35 = *(__int64 **)(a1 + 32);
if ( !v35 )
goto LABEL_79;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)",", 1ui64, v35) )
return v1;
LABEL_61:
v36 = *(__int64 **)(a1 + 32);
if ( !v36 )
goto LABEL_79;
v15 = sub_1400183F0((unsigned __int8 *)")C,", 1ui64, v36);
goto LABEL_78;
default:
*(_QWORD *)(a1 + 16) = v5;
v15 = sub_140012370(a1, 0);
goto LABEL_77;
}
return v1;
}
v21 = *(__int64 **)(a1 + 32);
if ( !v21 || (LOBYTE(v1) = 1, !(unsigned __int8)sub_1400183F0(byte_1400210C8, 0x19ui64, v21)) )
{
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = 1;
return 0;
}
return v1;
}
// 140012CF0: variable 'v12' is possibly undefined
// 140012FF4: variable 'v34' is possibly undefined
// 1400130F8: variable 'v1' is possibly undefined
// 1400210C8: using guessed type unsigned __int8 byte_1400210C8[25];
// 1400212D0: using guessed type _QWORD qword_1400212D0[26];
// 1400213A0: using guessed type void *off_1400213A0;
//----- (0000000140013160) ----------------------------------------------------
char __fastcall sub_140013160(__int64 *a1)
{
__int64 v1; // r14
__int64 v3; // rcx
unsigned __int64 v4; // rdx
unsigned __int64 v5; // rax
char v6; // di
char *v7; // rbx
__int64 *v8; // r8
char v9; // cl
char result; // al
__int64 *v11; // rdi
char v12; // cl
__int64 v13; // rax
unsigned __int8 *v14; // rbx
unsigned __int64 v15; // rdx
__int64 *v16; // r8
char v17; // cl
char v18; // bl
__int64 *v19; // r8
unsigned __int8 *v20; // rcx
char v21; // cl
__int64 *v22; // r8
char v23; // cl
__int64 v24; // rax
__int64 v25; // rbx
unsigned __int64 v26; // rcx
__int64 *v28; // r8
__int64 *v29; // r8
char v30; // cl
unsigned __int64 v31; // rcx
__int64 *v32; // r8
char v33; // cl
__int64 *v34; // r12
__int64 v35; // r13
unsigned __int8 *v36; // r13
unsigned __int64 v37; // rbp
__int128 v38; // [rsp+20h] [rbp-E8h] BYREF
__int128 v39; // [rsp+30h] [rbp-D8h]
__int128 v40; // [rsp+40h] [rbp-C8h]
__int128 v41; // [rsp+50h] [rbp-B8h]
__int64 v42; // [rsp+60h] [rbp-A8h]
__int128 v43; // [rsp+68h] [rbp-A0h] BYREF
__int128 v44; // [rsp+78h] [rbp-90h]
__int128 v45; // [rsp+88h] [rbp-80h]
__int128 v46; // [rsp+98h] [rbp-70h]
__int64 v47; // [rsp+A8h] [rbp-60h]
__int64 v48[11]; // [rsp+B0h] [rbp-58h] BYREF
v3 = *a1;
if ( !v3 )
goto LABEL_44;
v4 = a1[1];
v5 = a1[2];
if ( v5 < v4 && *(_BYTE *)(v3 + v5) == 85 )
{
a1[2] = ++v5;
v6 = 1;
if ( v5 >= v4 )
goto LABEL_11;
}
else
{
v6 = 0;
if ( v5 >= v4 )
{
LABEL_11:
if ( !v6 )
goto LABEL_44;
v7 = 0i64;
LABEL_13:
v8 = (__int64 *)a1[4];
if ( v8 )
{
v9 = sub_1400183F0((unsigned __int8 *)"unsafe extern \"\" fn( -> ", 7ui64, v8);
result = 1;
if ( v9 )
return result;
}
if ( !v7 )
{
LABEL_44:
v22 = (__int64 *)a1[4];
if ( v22 )
{
v23 = sub_1400183F0((unsigned __int8 *)"fn( -> ", 3ui64, v22);
result = 1;
if ( v23 )
return result;
}
v24 = *a1;
if ( *a1 )
{
v25 = 0i64;
while ( 1 )
{
v26 = a1[2];
if ( v26 < a1[1] && *(_BYTE *)(v24 + v26) == 69 )
break;
if ( v25-- != 0 )
{
v28 = (__int64 *)a1[4];
if ( v28 )
{
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)", > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v28) )
return 1;
}
}
if ( (unsigned __int8)sub_140012C00((__int64)a1) )
return 1;
v24 = *a1;
if ( !*a1 )
goto LABEL_55;
}
a1[2] = v26 + 1;
v29 = (__int64 *)a1[4];
if ( !v29 )
{
LABEL_60:
if ( !v24 )
{
LABEL_64:
v32 = (__int64 *)a1[4];
if ( !v32 )
return sub_140012C00((__int64)a1);
v33 = sub_1400183F0((unsigned __int8 *)" -> ", 4ui64, v32);
result = 1;
if ( !v33 )
return sub_140012C00((__int64)a1);
return result;
}
LABEL_61:
v31 = a1[2];
if ( v31 < a1[1] && *(_BYTE *)(v24 + v31) == 117 )
{
a1[2] = v31 + 1;
return 0;
}
goto LABEL_64;
}
}
else
{
LABEL_55:
v24 = 0i64;
v29 = (__int64 *)a1[4];
if ( !v29 )
goto LABEL_60;
}
v30 = sub_1400183F0((unsigned __int8 *)")C,", 1ui64, v29);
result = 1;
if ( v30 )
return result;
v24 = *a1;
if ( !*a1 )
goto LABEL_64;
goto LABEL_61;
}
LABEL_16:
v11 = (__int64 *)a1[4];
if ( v11 )
{
v12 = sub_1400183F0((unsigned __int8 *)"extern \"\" fn( -> ", 8ui64, (__int64 *)a1[4]);
result = 1;
if ( v12 )
return result;
}
*(_QWORD *)&v43 = v7;
*((_QWORD *)&v43 + 1) = v1;
*(_QWORD *)&v44 = 0i64;
*((_QWORD *)&v44 + 1) = v1;
*(_QWORD *)&v45 = 1i64;
*((_QWORD *)&v45 + 1) = 0x5F0000005Fi64;
*(_QWORD *)&v46 = 0i64;
*((_QWORD *)&v46 + 1) = v1;
LOWORD(v47) = 1;
sub_14000F5E0((__int64 *)&v38, (__int64 *)&v43);
if ( (_QWORD)v38 )
{
v13 = v46;
*(_QWORD *)&v46 = v39;
if ( v7 )
{
v14 = (unsigned __int8 *)&v7[v13];
v15 = *((_QWORD *)&v38 + 1) - v13;
if ( !v11 )
goto LABEL_40;
goto LABEL_39;
}
}
else if ( !BYTE1(v47) )
{
BYTE1(v47) = 1;
if ( (_BYTE)v47 || *((_QWORD *)&v46 + 1) != (_QWORD)v46 )
{
v15 = *((_QWORD *)&v46 + 1) - v46;
v14 = (unsigned __int8 *)(v43 + v46);
if ( !v11 )
{
LABEL_40:
v42 = v47;
v41 = v46;
v40 = v45;
v39 = v44;
v38 = v43;
if ( BYTE1(v47) )
{
LABEL_41:
if ( v11 && (unsigned __int8)sub_1400183F0((unsigned __int8 *)"\" fn( -> ", 2ui64, v11) )
return 1;
goto LABEL_44;
}
v34 = v11;
while ( 1 )
{
v35 = v38;
sub_14000F5E0(v48, (__int64 *)&v38);
if ( v48[0] )
{
v36 = (unsigned __int8 *)(v41 + v35);
v37 = v48[1] - v41;
*(_QWORD *)&v41 = v48[2];
if ( !v34 )
goto LABEL_69;
}
else
{
if ( BYTE1(v42) )
goto LABEL_41;
BYTE1(v42) = 1;
if ( !(_BYTE)v42 && *((_QWORD *)&v41 + 1) == (_QWORD)v41 )
goto LABEL_41;
v37 = *((_QWORD *)&v41 + 1) - v41;
v36 = (unsigned __int8 *)(v38 + v41);
if ( !v34 )
{
LABEL_69:
v34 = 0i64;
goto LABEL_70;
}
}
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"-}0", 1ui64, v34) )
return 1;
if ( !v11 )
goto LABEL_69;
v34 = v11;
if ( (unsigned __int8)sub_1400183F0(v36, v37, v11) )
return 1;
LABEL_70:
if ( BYTE1(v42) )
goto LABEL_41;
}
}
LABEL_39:
if ( (unsigned __int8)sub_1400183F0(v14, v15, v11) )
return 1;
goto LABEL_40;
}
}
sub_14001CC50((__int64)"called `Option::unwrap()` on a `None` value", 43i64, (__int64)&off_140021160);
}
}
if ( *(_BYTE *)(v3 + v5) != 75 )
goto LABEL_11;
a1[2] = v5 + 1;
if ( v5 + 1 < v4 && *(_BYTE *)(v3 + v5 + 1) == 67 )
{
a1[2] = v5 + 2;
v1 = 1i64;
v7 = "C,";
goto LABEL_28;
}
sub_140010F20((__int64)&v38, (__int64)a1);
v7 = (char *)v38;
if ( (_QWORD)v38 )
{
v1 = *((_QWORD *)&v38 + 1);
if ( *((_QWORD *)&v38 + 1) && !*((_QWORD *)&v39 + 1) )
{
LABEL_28:
if ( !v6 )
goto LABEL_16;
goto LABEL_13;
}
v16 = (__int64 *)a1[4];
if ( !v16 || (v17 = sub_1400183F0("{invalid syntax}", 0x10ui64, v16), result = 1, !v17) )
{
*a1 = 0i64;
*((_BYTE *)a1 + 8) = 0;
return 0;
}
}
else
{
v18 = BYTE8(v38);
v19 = (__int64 *)a1[4];
if ( !v19 )
goto LABEL_34;
v20 = byte_1400210C8;
if ( !BYTE8(v38) )
v20 = "{invalid syntax}";
v21 = sub_1400183F0(v20, (9i64 * BYTE8(v38)) | 0x10, v19);
result = 1;
if ( !v21 )
{
LABEL_34:
*a1 = 0i64;
*((_BYTE *)a1 + 8) = v18;
return 0;
}
}
return result;
}
// 140013251: variable 'v1' is possibly undefined
// 1400210C8: using guessed type unsigned __int8 byte_1400210C8[25];
// 140021160: using guessed type char *off_140021160;
//----- (00000001400136A0) ----------------------------------------------------
__int64 __fastcall sub_1400136A0(__int64 *a1)
{
unsigned int v1; // edi
__int64 v3; // r8
unsigned __int64 v4; // r10
unsigned __int64 v5; // rcx
unsigned __int64 v6; // r11
unsigned __int64 v7; // rax
__int64 *v8; // r8
__int64 v9; // rax
__int64 v10; // r14
unsigned __int64 v11; // rcx
bool v12; // cf
__int64 *v13; // r8
__int64 result; // rax
unsigned __int64 v15; // rax
char v16; // r9
char v17; // dl
unsigned __int8 v18; // bl
unsigned __int8 v19; // dl
__int64 v20; // rax
unsigned __int64 v21; // kr00_8
unsigned int v22; // ecx
__int64 *v23; // r8
unsigned __int8 *v24; // rcx
__int128 v25; // [rsp+20h] [rbp-48h]
__int128 v26; // [rsp+30h] [rbp-38h]
v3 = *a1;
if ( !*a1 )
goto LABEL_21;
v4 = a1[1];
v5 = a1[2];
if ( v5 >= v4 )
goto LABEL_21;
if ( *(_BYTE *)(v3 + v5) != 66 )
{
if ( *(_BYTE *)(v3 + v5) == 73 )
{
a1[2] = v5 + 1;
if ( !(unsigned __int8)sub_140012370((__int64)a1, 0) )
{
v8 = (__int64 *)a1[4];
if ( !v8 || !(unsigned __int8)sub_1400183F0((unsigned __int8 *)"<>()C,", 1ui64, v8) )
{
v9 = *a1;
LOBYTE(v1) = 1;
if ( *a1 )
{
v10 = 0i64;
while ( 1 )
{
v11 = a1[2];
if ( v11 < a1[1] && *(_BYTE *)(v9 + v11) == 69 )
break;
v12 = v10-- == 0;
if ( !v12 )
{
v13 = (__int64 *)a1[4];
if ( v13 )
{
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)", > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v13) )
goto LABEL_45;
}
}
if ( sub_140012AD0(a1) )
goto LABEL_45;
v9 = *a1;
if ( !*a1 )
return v1;
}
a1[2] = v11 + 1;
}
return v1;
}
}
LABEL_45:
LOBYTE(v1) = 2;
return v1;
}
LABEL_21:
v1 = sub_140012370((__int64)a1, 0);
LOBYTE(v1) = 2 * v1;
return v1;
}
v6 = v5 + 1;
a1[2] = v5 + 1;
if ( v5 + 1 >= v4 || *(_BYTE *)(v3 + v6) != 95 )
{
v15 = 0i64;
v1 = 62;
while ( 1 )
{
v16 = 1;
if ( v6 >= v4 )
break;
v17 = *(_BYTE *)(v3 + v6);
if ( v17 == 95 )
{
a1[2] = v6 + 1;
v7 = v15 + 1;
if ( !v7 )
break;
goto LABEL_36;
}
v18 = v17 - 48;
if ( (unsigned __int8)(v17 - 48) >= 0xAu )
{
if ( (unsigned __int8)(v17 - 97) >= 0x1Au )
{
if ( (unsigned __int8)(v17 - 65) >= 0x1Au )
break;
v19 = v17 - 29;
}
else
{
v19 = v17 - 87;
}
v18 = v19;
}
a1[2] = ++v6;
v21 = v15;
v20 = 62 * v15;
if ( is_mul_ok(0x3Eui64, v21) )
{
v12 = __CFADD__(v18, v20);
v15 = v18 + v20;
if ( !v12 )
continue;
}
break;
}
LABEL_41:
v1 = 0;
v23 = (__int64 *)a1[4];
if ( !v23 )
{
LABEL_47:
*a1 = 0i64;
*((_BYTE *)a1 + 8) = v1;
return 0;
}
goto LABEL_42;
}
a1[2] = v5 + 2;
v7 = 0i64;
LABEL_36:
if ( v7 >= v5 )
{
v16 = 1;
goto LABEL_41;
}
v22 = *((_DWORD *)a1 + 6) + 1;
if ( v22 > 0x1F4 )
{
LOBYTE(v1) = 1;
v16 = 0;
v23 = (__int64 *)a1[4];
if ( !v23 )
goto LABEL_47;
LABEL_42:
v24 = byte_1400210C8;
if ( v16 )
v24 = "{invalid syntax}";
if ( !(unsigned __int8)sub_1400183F0(v24, (9i64 * ((unsigned __int8)v16 ^ 1u)) | 0x10, v23) )
goto LABEL_47;
goto LABEL_45;
}
if ( !a1[4] )
return 0;
v26 = *((_OWORD *)a1 + 1);
v25 = *(_OWORD *)a1;
a1[2] = v7;
*((_DWORD *)a1 + 6) = v22;
result = sub_1400136A0(a1);
*(_OWORD *)a1 = v25;
*((_OWORD *)a1 + 1) = v26;
return result;
}
// 1400137B7: variable 'v1' is possibly undefined
// 1400210C8: using guessed type unsigned __int8 byte_1400210C8[25];
//----- (0000000140013900) ----------------------------------------------------
__int64 __fastcall sub_140013900(__int64 *a1)
{
unsigned int v1; // esi
char v3; // al
char v4; // bp
unsigned __int64 v5; // rax
__int64 *v6; // r8
__int64 *v7; // rdx
__int64 *v8; // r8
__int64 *v9; // r8
__int64 *v10; // r8
char v11; // bl
__int64 *v12; // r8
unsigned __int8 *v13; // rcx
__int128 v15[2]; // [rsp+20h] [rbp-88h] BYREF
__int128 v16[6]; // [rsp+40h] [rbp-68h] BYREF
v3 = sub_1400136A0(a1);
LOBYTE(v1) = 1;
if ( v3 == 2 )
return v1;
v4 = v3;
while ( 1 )
{
if ( !*a1 || (v5 = a1[2], v5 >= a1[1]) || *(_BYTE *)(*a1 + v5) != 112 )
{
if ( (v4 & 1) == 0 )
return 0;
v10 = (__int64 *)a1[4];
if ( !v10 || !(unsigned __int8)sub_1400183F0((unsigned __int8 *)">()C,", 1ui64, v10) )
return 0;
return v1;
}
a1[2] = v5 + 1;
v6 = (__int64 *)a1[4];
if ( (v4 & 1) != 0 )
{
if ( v6
&& (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)", > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
2ui64,
v6) )
{
return v1;
}
LABEL_13:
if ( !*a1 )
goto LABEL_21;
goto LABEL_14;
}
if ( v6 )
{
v4 = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"<>()C,", 1ui64, v6) )
{
LOBYTE(v1) = 1;
return v1;
}
goto LABEL_13;
}
v4 = 1;
if ( !*a1 )
{
LABEL_21:
v9 = (__int64 *)a1[4];
if ( v9 )
return (unsigned int)sub_1400183F0(
"?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ",
1ui64,
v9);
return 0;
}
LABEL_14:
sub_140010F20((__int64)v15, (__int64)a1);
if ( !*(_QWORD *)&v15[0] )
break;
v16[1] = v15[1];
v16[0] = v15[0];
v7 = (__int64 *)a1[4];
if ( v7 )
{
if ( (unsigned __int8)sub_1400103E0((char **)v16, v7) )
return v1;
v8 = (__int64 *)a1[4];
if ( v8 )
{
if ( (unsigned __int8)sub_1400183F0(byte_140021178, 3ui64, v8) )
return v1;
}
}
if ( (unsigned __int8)sub_140012C00((__int64)a1) )
return v1;
}
v11 = BYTE8(v15[0]);
v12 = (__int64 *)a1[4];
if ( !v12 )
goto LABEL_31;
v13 = byte_1400210C8;
if ( !BYTE8(v15[0]) )
v13 = "{invalid syntax}";
LOBYTE(v1) = 1;
if ( !(unsigned __int8)sub_1400183F0(v13, (9i64 * BYTE8(v15[0])) | 0x10, v12) )
{
LABEL_31:
*a1 = 0i64;
*((_BYTE *)a1 + 8) = v11;
return 0;
}
return v1;
}
// 140013AD8: variable 'v1' is possibly undefined
// 1400210C8: using guessed type unsigned __int8 byte_1400210C8[25];
// 140021178: using guessed type unsigned __int8 byte_140021178[3];
//----- (0000000140013AF0) ----------------------------------------------------
__int64 __fastcall sub_140013AF0(__int64 a1, __int64 a2)
{
unsigned int v2; // edi
__int64 v4; // rcx
unsigned __int64 v5; // r9
unsigned __int64 v6; // rax
char v7; // bl
unsigned __int64 v8; // r8
unsigned int v9; // r10d
__int64 *v10; // r8
char v11; // al
__int64 *v12; // r8
__int64 *v13; // r8
char v14; // bp
__int64 *v15; // r8
__int64 *v16; // r8
__int64 v17; // rdx
__int64 *v18; // r8
char *v19; // rcx
unsigned __int64 v20; // rdx
unsigned __int64 v21; // rdx
__int64 *v22; // r8
__int64 *v23; // r8
char v24; // bl
__int64 *v25; // r8
unsigned __int8 *v26; // rcx
__int64 *v27; // r8
__int64 *v28; // r8
char v29; // al
__int64 *v30; // r8
char *v31; // rcx
__int64 v32; // rdx
__int64 *v33; // r8
unsigned __int64 v34; // rdx
__int64 v35; // rdx
unsigned __int64 v36; // rcx
int v37; // eax
__int64 *v38; // r8
__int64 *v39; // r8
__int64 *v41; // r8
__int64 *v42; // r8
__int64 v43; // [rsp+28h] [rbp-30h] BYREF
__int64 v44; // [rsp+30h] [rbp-28h]
v4 = *(_QWORD *)a1;
if ( !v4 )
{
LABEL_108:
v39 = *(__int64 **)(a1 + 32);
if ( v39 )
return sub_1400183F0("?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ", 1ui64, v39);
return 0;
}
v5 = *(_QWORD *)(a1 + 8);
v6 = *(_QWORD *)(a1 + 16);
if ( v6 < v5 )
{
v7 = *(_BYTE *)(v4 + v6);
v8 = v6 + 1;
*(_QWORD *)(a1 + 16) = v6 + 1;
v9 = *(_DWORD *)(a1 + 24) + 1;
*(_DWORD *)(a1 + 24) = v9;
if ( v9 > 0x1F4 )
{
v12 = *(__int64 **)(a1 + 32);
if ( v12 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0(byte_1400210C8, 0x19ui64, v12) )
return v2;
}
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = 1;
return 0;
}
switch ( v7 )
{
case 'A':
v15 = *(__int64 **)(a1 + 32);
if ( (_BYTE)a2 )
{
v14 = 0;
}
else
{
if ( !v15 )
{
v14 = 1;
goto LABEL_86;
}
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)&unk_140021189, 1ui64, v15) )
return v2;
v15 = *(__int64 **)(a1 + 32);
v14 = 1;
}
if ( v15 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)"[]dyn + ; mut const unsafe extern \"\" fn( -> ",
1ui64,
v15) )
return v2;
}
LABEL_86:
LOBYTE(v2) = 1;
if ( sub_140011F90((__int64 *)a1, a2) )
return v2;
v30 = *(__int64 **)(a1 + 32);
if ( v30 )
{
v31 = "]dyn + ; mut const unsafe extern \"\" fn( -> ";
goto LABEL_96;
}
goto LABEL_115;
case 'B':
v11 = sub_140011330((__int64 *)a1, a2);
goto LABEL_10;
case 'Q':
case 'R':
if ( v7 == 82 && v8 < v5 && *(_BYTE *)(v4 + v8) == 101 )
{
*(_QWORD *)(a1 + 16) = v6 + 2;
v11 = sub_140014480(a1);
goto LABEL_10;
}
v13 = *(__int64 **)(a1 + 32);
if ( (_BYTE)a2 )
{
v14 = 0;
}
else
{
if ( !v13 )
{
v14 = 1;
goto LABEL_81;
}
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)&unk_140021189, 1ui64, v13) )
return v2;
v13 = *(__int64 **)(a1 + 32);
v14 = 1;
}
if ( v13 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"&<>()C,", 1ui64, v13) )
return v2;
}
LABEL_81:
if ( v7 == 82
|| (v28 = *(__int64 **)(a1 + 32)) == 0i64
|| (LOBYTE(v2) = 1,
!(unsigned __int8)sub_1400183F0((unsigned __int8 *)"mut const unsafe extern \"\" fn( -> ", 4ui64, v28)) )
{
LOBYTE(v2) = 1;
LOBYTE(a2) = 1;
v29 = sub_140013AF0(a1, a2);
goto LABEL_114;
}
return v2;
case 'T':
v16 = *(__int64 **)(a1 + 32);
if ( (_BYTE)a2 )
{
v14 = 0;
}
else
{
if ( !v16 )
{
v14 = 1;
goto LABEL_90;
}
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)&unk_140021189, 1ui64, v16) )
return v2;
v16 = *(__int64 **)(a1 + 32);
v14 = 1;
}
if ( v16 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"()C,", 1ui64, v16) )
return v2;
}
LABEL_90:
LOBYTE(v2) = 1;
if ( sub_1400122E0((__int64 *)a1, a2) )
return v2;
if ( v32 != 1 )
goto LABEL_94;
v33 = *(__int64 **)(a1 + 32);
if ( !v33 )
goto LABEL_115;
if ( !(unsigned __int8)sub_1400183F0((unsigned __int8 *)",", 1ui64, v33) )
goto LABEL_94;
return v2;
case 'V':
if ( (_BYTE)a2 )
{
v14 = 0;
}
else
{
v27 = *(__int64 **)(a1 + 32);
if ( v27 )
{
LOBYTE(v2) = 1;
v14 = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)&unk_140021189, 1ui64, v27) )
return v2;
}
else
{
v14 = 1;
}
}
LOBYTE(v2) = 1;
LOBYTE(a2) = 1;
if ( (unsigned __int8)sub_140012370(a1, a2) )
return v2;
if ( !*(_QWORD *)a1 )
goto LABEL_108;
v36 = *(_QWORD *)(a1 + 16);
if ( v36 >= *(_QWORD *)(a1 + 8) )
goto LABEL_105;
v37 = *(unsigned __int8 *)(*(_QWORD *)a1 + v36);
*(_QWORD *)(a1 + 16) = v36 + 1;
switch ( v37 )
{
case 'S':
v41 = *(__int64 **)(a1 + 32);
if ( v41 && (unsigned __int8)sub_1400183F0(byte_14002117B, 3ui64, v41) || sub_140012020((__int64 *)a1) )
return v2;
v30 = *(__int64 **)(a1 + 32);
if ( !v30 )
goto LABEL_115;
v31 = (char *)&unk_14002117E;
v34 = 2i64;
break;
case 'T':
v42 = *(__int64 **)(a1 + 32);
if ( v42 && (unsigned __int8)sub_1400183F0((unsigned __int8 *)"()C,", 1ui64, v42)
|| sub_140011F90((__int64 *)a1, v35) )
{
return v2;
}
LABEL_94:
v30 = *(__int64 **)(a1 + 32);
if ( !v30 )
goto LABEL_115;
v31 = ")C,";
LABEL_96:
v34 = 1i64;
break;
case 'U':
LABEL_115:
if ( v14 )
{
v18 = *(__int64 **)(a1 + 32);
if ( v18 )
{
v19 = "}0";
LABEL_118:
v20 = 1i64;
LABEL_119:
v11 = sub_1400183F0((unsigned __int8 *)v19, v20, v18);
LABEL_10:
LOBYTE(v2) = 1;
if ( v11 )
return v2;
}
}
LABEL_11:
if ( *(_QWORD *)a1 )
--*(_DWORD *)(a1 + 24);
return 0;
default:
LABEL_105:
v38 = *(__int64 **)(a1 + 32);
if ( v38 && (unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v38) )
return v2;
goto LABEL_43;
}
v29 = sub_1400183F0((unsigned __int8 *)v31, v34, v30);
goto LABEL_114;
case 'a':
case 'i':
case 'l':
case 'n':
case 's':
case 'x':
if ( v8 < v5 && *(_BYTE *)(v4 + v8) == 110 )
{
*(_QWORD *)(a1 + 16) = v6 + 2;
v10 = *(__int64 **)(a1 + 32);
if ( v10 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"-}0", 1ui64, v10) )
return v2;
}
}
goto LABEL_9;
case 'b':
sub_140010C40(&v43, a1);
if ( !v43 )
goto LABEL_54;
if ( sub_140010A80(v43, v44) != 1 )
break;
if ( v17 )
{
if ( v17 != 1 )
break;
v18 = *(__int64 **)(a1 + 32);
if ( v18 )
{
v19 = (char *)&unk_140021180;
v20 = 4i64;
goto LABEL_119;
}
goto LABEL_11;
}
v18 = *(__int64 **)(a1 + 32);
if ( !v18 )
goto LABEL_11;
v19 = (char *)&unk_140021184;
v20 = 5i64;
goto LABEL_119;
case 'c':
sub_140010C40(&v43, a1);
if ( v43 )
{
if ( sub_140010A80(v43, v44)
&& !HIDWORD(v21)
&& ((unsigned int)v21 ^ 0xD800) - 1114112 >= 0xFFEF0800
&& (_DWORD)v21 != 1114112 )
{
v11 = sub_140011680(*(_QWORD **)(a1 + 32), v21);
goto LABEL_10;
}
break;
}
LABEL_54:
v24 = v44;
v25 = *(__int64 **)(a1 + 32);
if ( !v25 )
goto LABEL_58;
v26 = byte_1400210C8;
if ( !(_BYTE)v44 )
v26 = "{invalid syntax}";
LOBYTE(v2) = 1;
if ( !(unsigned __int8)sub_1400183F0(v26, (9i64 * (unsigned __int8)v44) | 0x10, v25) )
{
LABEL_58:
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = v24;
return 0;
}
return v2;
case 'e':
v23 = *(__int64 **)(a1 + 32);
if ( (_BYTE)a2 )
{
v14 = 0;
}
else
{
if ( !v23 )
{
v14 = 1;
goto LABEL_113;
}
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)&unk_140021189, 1ui64, v23) )
return v2;
v23 = *(__int64 **)(a1 + 32);
v14 = 1;
}
if ( v23 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"*&<>()C,", 1ui64, v23) )
return v2;
}
LABEL_113:
v29 = sub_140014480(a1);
LOBYTE(v2) = 1;
LABEL_114:
if ( !v29 )
goto LABEL_115;
return v2;
case 'h':
case 'j':
case 'm':
case 'o':
case 't':
case 'y':
LABEL_9:
v11 = sub_1400142A0(a1, v7);
goto LABEL_10;
case 'p':
v18 = *(__int64 **)(a1 + 32);
if ( !v18 )
goto LABEL_11;
v19 = "_!f64f32usizeu128u64u32u16u8isizei128i64i32i16i8strcharbool";
goto LABEL_118;
default:
break;
}
}
v22 = *(__int64 **)(a1 + 32);
if ( v22 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v22) )
return v2;
}
LABEL_43:
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = 0;
return 0;
}
// 140013C9E: variable 'v17' is possibly undefined
// 140013CF5: variable 'v21' is possibly undefined
// 140013F8F: variable 'a2' is possibly undefined
// 140013FE1: variable 'v32' is possibly undefined
// 1400140C4: variable 'v2' is possibly undefined
// 14001419E: variable 'v35' is possibly undefined
// 1400210C8: using guessed type unsigned __int8 byte_1400210C8[25];
// 14002117B: using guessed type unsigned __int8 byte_14002117B[3];
//----- (00000001400142A0) ----------------------------------------------------
__int64 __fastcall sub_1400142A0(__int64 a1, char a2)
{
unsigned int v2; // ebp
char *v4; // rcx
unsigned __int64 v6; // rdx
unsigned __int64 v7; // r8
unsigned __int8 *v8; // rdi
unsigned __int64 v9; // r9
unsigned __int64 v10; // r14
unsigned __int8 v11; // r10
__int64 *v12; // r8
__int64 *v13; // r8
unsigned __int64 v15; // rdx
__int64 *v16; // rsi
unsigned __int8 v17; // bl
int v18; // ecx
unsigned __int64 v19[6]; // [rsp+28h] [rbp-30h] BYREF
v4 = *(char **)a1;
if ( v4 )
{
v6 = *(_QWORD *)(a1 + 8);
v7 = *(_QWORD *)(a1 + 16);
v8 = (unsigned __int8 *)&v4[v7];
v9 = 0i64;
do
{
v10 = v9;
if ( v7 + v9 >= v6 )
goto LABEL_12;
v11 = v8[v9];
*(_QWORD *)(a1 + 16) = v7 + 1 + v9++;
}
while ( (unsigned __int8)(v11 - 48) < 0xAu || (unsigned __int8)(v11 - 97) < 6u );
if ( v11 != 95 )
{
LABEL_12:
v12 = *(__int64 **)(a1 + 32);
if ( v12 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v12) )
return v2;
}
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = 0;
return 0;
}
if ( v7 + v10 < v7 )
goto LABEL_11;
if ( v7 )
{
if ( v7 >= v6 )
{
if ( v7 != v6 )
LABEL_11:
sub_14001D0B0(v4, v6, v7, v7 + v10, (__int64)&off_140021068);
}
else if ( v4[v7] <= -65 )
{
goto LABEL_11;
}
}
if ( sub_140010A80((__int64)&v4[v7], v10) )
{
v16 = *(__int64 **)(a1 + 32);
v19[0] = v15;
if ( v16 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_14001AD00(v19, (__int64)v16) )
return v2;
goto LABEL_25;
}
}
else
{
v16 = *(__int64 **)(a1 + 32);
if ( v16 )
{
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0((unsigned __int8 *)"0x", 2ui64, v16)
|| (unsigned __int8)sub_1400183F0(v8, v10, v16) )
{
return v2;
}
LABEL_25:
if ( !sub_140017C40((__int64)v16) )
{
v17 = a2 - 97;
if ( v17 >= 0x1Au || (v18 = 62716863, !_bittest(&v18, v17)) )
sub_14001CC50((__int64)"called `Option::unwrap()` on a `None` value", 43i64, (__int64)&off_140021190);
LOBYTE(v2) = 1;
if ( (unsigned __int8)sub_1400183F0(
(unsigned __int8 *)*(&off_1400213A0 + (char)v17),
qword_1400212D0[(char)v17],
v16) )
return v2;
}
}
}
}
else
{
v13 = *(__int64 **)(a1 + 32);
if ( v13 )
return sub_1400183F0("?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ", 1ui64, v13);
}
return 0;
}
// 1400143A8: variable 'v15' is possibly undefined
// 140014451: variable 'v2' is possibly undefined
// 140021068: using guessed type char *off_140021068;
// 140021190: using guessed type char *off_140021190;
// 1400212D0: using guessed type _QWORD qword_1400212D0[26];
// 1400213A0: using guessed type void *off_1400213A0;
// 1400142A0: using guessed type unsigned __int64 var_30[6];
//----- (0000000140014480) ----------------------------------------------------
__int64 __fastcall sub_140014480(__int64 a1)
{
unsigned __int8 **v1; // rsi
char *v3; // rcx
unsigned __int64 v4; // rdx
unsigned __int64 v5; // r8
unsigned __int8 *v6; // rbx
__int64 v7; // r9
__int64 v8; // r14
unsigned __int8 v9; // r10
__int64 *v10; // r8
unsigned __int64 v12; // r14
unsigned int v13; // eax
_QWORD *v14; // rdi
unsigned int v15; // eax
__int64 *v16; // r8
unsigned int i; // ebp
unsigned int v18; // ecx
unsigned int v19; // eax
char v20; // al
unsigned int v21; // eax
unsigned int v22[4]; // [rsp+30h] [rbp-68h] BYREF
unsigned __int8 *v23; // [rsp+40h] [rbp-58h] BYREF
unsigned __int64 v24; // [rsp+48h] [rbp-50h]
unsigned __int8 *v25; // [rsp+50h] [rbp-48h]
__int64 v26; // [rsp+58h] [rbp-40h]
__int64 v27; // [rsp+60h] [rbp-38h]
v3 = *(char **)a1;
if ( v3 )
{
v4 = *(_QWORD *)(a1 + 8);
v5 = *(_QWORD *)(a1 + 16);
v6 = (unsigned __int8 *)&v3[v5];
v7 = 0i64;
do
{
v8 = v7;
if ( v5 + v7 >= v4 )
goto LABEL_23;
v9 = v6[v7];
*(_QWORD *)(a1 + 16) = v5 + 1 + v7++;
}
while ( (unsigned __int8)(v9 - 48) < 0xAu || (unsigned __int8)(v9 - 97) < 6u );
if ( v9 != 95 )
goto LABEL_23;
if ( v5 + v8 < v5 )
goto LABEL_11;
if ( v5 )
{
if ( v5 >= v4 )
{
if ( v5 != v4 )
LABEL_11:
sub_14001D0B0(v3, v4, v5, v5 + v8, (__int64)&off_140021068);
}
else if ( v3[v5] <= -65 )
{
goto LABEL_11;
}
}
if ( (v8 & 1) != 0 )
goto LABEL_23;
v12 = v8 & 0xFFFFFFFFFFFFFFFEui64;
v23 = (unsigned __int8 *)&v3[v5];
v24 = v12;
v25 = &v6[v12];
v26 = 0i64;
v27 = 2i64;
v1 = &v23;
do
v13 = sub_14000EA10(&v23);
while ( v13 < 0x110000 );
if ( v13 == 1114113 )
{
v14 = *(_QWORD **)(a1 + 32);
if ( v14 )
{
LOBYTE(v1) = 1;
if ( !(unsigned __int8)sub_140017E90(v14) )
{
v23 = v6;
v24 = v12;
v25 = &v6[v12];
v26 = 0i64;
v27 = 2i64;
v15 = sub_14000EA10(&v23);
if ( v15 != 1114113 )
{
for ( i = v15; i != 1114113; i = sub_14000EA10(&v23) )
{
if ( i == 1114112 )
sub_14001CF90(
(__int64)"called `Result::unwrap()` on an `Err` value",
43i64,
(__int64)v22,
(__int64)&off_140020A98,
(__int64)&off_140020958);
v18 = 1114114;
v19 = 48;
switch ( i )
{
case 0u:
goto LABEL_42;
case 1u:
case 2u:
case 3u:
case 4u:
case 5u:
case 6u:
case 7u:
case 8u:
case 0xBu:
case 0xCu:
case 0xEu:
case 0xFu:
case 0x10u:
case 0x11u:
case 0x12u:
case 0x13u:
case 0x14u:
case 0x15u:
case 0x16u:
case 0x17u:
case 0x18u:
case 0x19u:
case 0x1Au:
case 0x1Bu:
case 0x1Cu:
case 0x1Du:
case 0x1Eu:
case 0x1Fu:
case 0x20u:
case 0x21u:
case 0x23u:
case 0x24u:
case 0x25u:
case 0x26u:
goto LABEL_33;
case 9u:
v19 = 116;
goto LABEL_42;
case 0xAu:
v19 = 110;
goto LABEL_42;
case 0xDu:
v19 = 114;
goto LABEL_42;
case 0x22u:
goto LABEL_35;
case 0x27u:
if ( !(unsigned __int8)sub_140017E90(v14) )
continue;
return (unsigned int)v1;
default:
if ( i == 92 )
goto LABEL_35;
LABEL_33:
if ( sub_14001B110(i) || (v20 = sub_14001A050(i), v18 = 1114113, !v20) )
{
_BitScanReverse(&v21, i | 1);
v19 = ((v21 ^ 0x1C) >> 2) ^ 7;
v18 = i;
}
else
{
LABEL_35:
v19 = i;
}
LABEL_42:
v22[0] = v19;
v22[1] = 0;
v22[2] = v18;
v22[3] = 5;
break;
}
while ( (unsigned int)sub_140016690(v22) != 1114112 )
{
if ( (unsigned __int8)sub_140017E90(v14) )
return (unsigned int)v1;
}
}
}
LODWORD(v1) = sub_140017E90(v14);
}
return (unsigned int)v1;
}
}
else
{
LABEL_23:
v16 = *(__int64 **)(a1 + 32);
if ( v16 )
{
LOBYTE(v1) = 1;
if ( (unsigned __int8)sub_1400183F0("{invalid syntax}", 0x10ui64, v16) )
return (unsigned int)v1;
}
*(_QWORD *)a1 = 0i64;
*(_BYTE *)(a1 + 8) = 0;
}
}
else
{
v10 = *(__int64 **)(a1 + 32);
if ( v10 )
return sub_1400183F0("?'for<, > as ::{shimclosure:#[]dyn + ; mut const unsafe extern \"\" fn( -> ", 1ui64, v10);
}
LODWORD(v1) = 0;
return (unsigned int)v1;
}
// 140014638: variable 'v1' is possibly undefined
// 140020958: using guessed type void *off_140020958;
// 140020A98: using guessed type __int64 (__fastcall *off_140020A98)();
// 140021068: using guessed type char *off_140021068;
//----- (0000000140014800) ----------------------------------------------------
__int64 *__fastcall sub_140014800(__int64 *a1, __int64 a2, __int64 a3)
{
char *v3; // r13
unsigned __int64 v5; // r14
unsigned __int64 v6; // rbp
unsigned __int64 v7; // rcx
unsigned __int64 v8; // r15
__int64 v9; // r12
unsigned __int64 v10; // rcx
unsigned __int64 v11; // r10
unsigned __int64 v12; // rbx
bool v13; // zf
unsigned __int64 v14; // rcx
unsigned __int64 v15; // r10
unsigned __int64 v16; // r10
unsigned __int64 v17; // r15
__int64 v18; // r12
unsigned __int64 v19; // rbp
unsigned __int64 v20; // rbx
__int64 v21; // r10
unsigned __int64 v22; // r9
char *v23; // rsi
char v24; // di
char *v25; // r9
unsigned __int64 v26; // rsi
bool v27; // cf
char v28; // bl
unsigned __int64 v29; // rsi
unsigned __int64 v30; // r8
char **v31; // rax
__int64 v32; // r14
unsigned __int64 v33; // rdx
char *v34; // r8
unsigned int v35; // ecx
int v36; // edx
int v37; // r11d
int v38; // r10d
unsigned __int8 *v39; // r12
char *v40; // r8
__int64 v41; // r14
unsigned __int8 *v42; // r9
__int64 v43; // rax
bool v44; // sf
int v45; // r10d
int v46; // eax
int v47; // edx
int v48; // r10d
char v49; // al
__int64 v50; // r15
unsigned __int64 v51; // r15
__int64 v52; // rax
__int64 v53; // rcx
unsigned __int64 v54; // r9
__int64 *result; // rax
char *v56; // rcx
char v57; // al
unsigned __int64 v58; // r8
unsigned __int64 v59; // r9
unsigned __int64 v60; // rdi
unsigned int v61; // r10d
unsigned __int64 v62; // rax
__int64 v63; // rax
unsigned __int64 v64; // kr00_8
int v65; // edx
int v66; // r10d
int v67; // esi
int v68; // r11d
int v69; // r10d
int v70; // esi
int v71; // r11d
char *v72; // rcx
unsigned __int64 v73; // rax
__int64 v74; // r10
unsigned __int8 *v75; // r11
int v76; // ebp
int v77; // ebx
char *v78; // rdi
int v79; // r13d
unsigned __int64 v80; // rbx
unsigned __int64 v81; // rcx
unsigned __int64 v82; // rbp
char *v83; // [rsp+28h] [rbp-F0h]
char *v85; // [rsp+48h] [rbp-D0h] BYREF
unsigned __int64 v86; // [rsp+50h] [rbp-C8h]
unsigned __int64 v87; // [rsp+58h] [rbp-C0h]
unsigned __int64 v88; // [rsp+60h] [rbp-B8h] BYREF
__int64 v89; // [rsp+68h] [rbp-B0h]
unsigned __int64 v90; // [rsp+70h] [rbp-A8h]
__int64 v91; // [rsp+80h] [rbp-98h]
__int64 v92; // [rsp+88h] [rbp-90h]
unsigned __int64 v93; // [rsp+90h] [rbp-88h]
unsigned __int64 v94; // [rsp+A0h] [rbp-78h]
__int64 v95; // [rsp+B0h] [rbp-68h]
__int64 *v96; // [rsp+B8h] [rbp-60h]
__int64 v97[11]; // [rsp+C0h] [rbp-58h] BYREF
v3 = (char *)a2;
sub_1400194E0((__int64)&v85, a2, a3, byte_1400211A8, 6ui64);
v96 = a1;
if ( v89 )
{
v83 = v3;
v5 = v94;
if ( v94 == -1i64 )
{
v6 = v93;
v16 = v88 + v93 - 1;
if ( v16 < v86 )
{
v17 = v88 - 1;
v18 = v92;
v95 = v91;
v14 = v90 - 1;
while ( 1 )
{
if ( _bittest64(&v18, (unsigned __int8)v85[v16]) )
{
v21 = 0i64;
v22 = v6;
v23 = (char *)(v90 + v87);
while ( v90 + v21 < v88 )
{
if ( v90 + v22 >= v86 )
{
v82 = v90 + v6;
if ( v86 > v82 )
v82 = v86;
sub_14001CD00(v82, v86, (__int64)&off_1400209C0);
}
v24 = *v23++;
v20 = v22 + 1;
++v21;
v13 = v24 == v85[v90 + v22++];
if ( !v13 )
goto LABEL_29;
}
if ( v90 - 1 >= v88 )
{
v29 = a3;
if ( v90 )
LABEL_212:
sub_14001CD00(v14, v88, (__int64)&off_1400209D8);
goto LABEL_43;
}
v15 = v14 + v6;
v25 = (char *)(v87 + v90 - 1);
v26 = v90;
do
{
v27 = v26-- == 0;
if ( v27 )
goto LABEL_42;
if ( v15 >= v86 )
LABEL_205:
sub_14001CD00(v15, v86, (__int64)&off_1400209F0);
v28 = *v25--;
v13 = v28 == v85[v15--];
}
while ( v13 );
v19 = v95 + v6;
}
else
{
v19 = v88 + v6;
}
v20 = v19;
LABEL_29:
v16 = v20 + v17;
v6 = v20;
if ( v20 + v17 >= v86 )
goto LABEL_48;
}
}
}
else
{
v6 = v93;
v7 = v88 + v93 - 1;
if ( v7 < v86 )
{
v8 = v88 - 1;
v9 = v92;
do
{
while ( _bittest64(&v9, (unsigned __int8)v85[v7]) )
{
v10 = v5;
if ( v90 > v5 )
v10 = v90;
v11 = v10;
while ( v11 < v88 )
{
if ( v11 + v6 >= v86 )
{
v81 = v6 + v10;
if ( v86 > v81 )
v81 = v86;
sub_14001CD00(v81, v86, (__int64)&off_1400209C0);
}
v12 = v11 + 1;
v13 = *(_BYTE *)(v87 + v11) == (unsigned __int8)v85[v6 + v11];
++v11;
if ( !v13 )
{
v6 = v12 + v6 - v90;
goto LABEL_6;
}
}
v14 = v90;
do
{
if ( v5 >= v14 )
goto LABEL_42;
if ( --v14 >= v88 )
goto LABEL_212;
v15 = v14 + v6;
if ( v14 + v6 >= v86 )
goto LABEL_205;
}
while ( *(_BYTE *)(v87 + v14) == v85[v15] );
v6 += v91;
v5 = v88 - v91;
v7 = v8 + v6;
if ( v8 + v6 >= v86 )
goto LABEL_48;
}
v6 += v88;
LABEL_6:
v5 = 0i64;
v7 = v8 + v6;
}
while ( v8 + v6 < v86 );
}
}
goto LABEL_48;
}
do
sub_14000F1F0(v97, (__int64)&v85);
while ( v97[0] == 1 );
if ( v97[0] )
{
v83 = v3;
LABEL_48:
v3 = v83;
v29 = a3;
goto LABEL_49;
}
v6 = v97[1];
LABEL_42:
v29 = a3;
LABEL_43:
v30 = v6 + 6;
if ( v6 != -6i64 )
{
if ( v30 >= v29 )
{
if ( v30 != v29 )
goto LABEL_46;
}
else if ( v3[v30] <= -65 )
{
LABEL_46:
v31 = (char **)&off_140021218;
goto LABEL_63;
}
}
if ( v30 != v29 )
{
v34 = &v3[v30];
do
{
v35 = (unsigned __int8)*v34;
if ( *v34 < 0 )
{
v36 = v35 & 0x1F;
v37 = v34[1] & 0x3F;
if ( (unsigned __int8)v35 <= 0xDFu )
{
v34 += 2;
v35 = v37 | (v36 << 6);
if ( v35 - 65 < 6 )
continue;
}
else
{
v38 = (v37 << 6) | v34[2] & 0x3F;
if ( (unsigned __int8)*v34 < 0xF0u )
{
v34 += 3;
v35 = (v36 << 12) | v38;
if ( v35 - 65 < 6 )
continue;
}
else
{
v35 = ((v35 & 7) << 18) | (v38 << 6) | v34[3] & 0x3F;
if ( v35 == 1114112 )
break;
v34 += 4;
if ( v35 - 65 < 6 )
continue;
}
}
}
else
{
++v34;
if ( v35 - 65 < 6 )
continue;
}
if ( v35 < 0x30 || v35 >= 0x3A && v35 != 64 )
goto LABEL_49;
}
while ( v34 != &v3[v29] );
}
if ( !v6 )
{
v39 = (unsigned __int8 *)&unk_140020908;
v29 = 0i64;
LABEL_118:
v51 = 0i64;
LABEL_119:
v41 = 0i64;
v40 = 0i64;
LABEL_128:
v53 = 0i64;
LABEL_129:
v54 = 0i64;
goto LABEL_130;
}
if ( v6 < v29 )
{
if ( v3[v6] > -65 )
{
v29 = v6;
goto LABEL_49;
}
LABEL_89:
sub_14001D0B0(v3, v29, 0i64, v6, (__int64)&off_140021230);
}
if ( v6 != v29 )
goto LABEL_89;
LABEL_49:
if ( v29 < 3 )
{
if ( v29 != 2 )
{
LABEL_117:
v39 = (unsigned __int8 *)&unk_140020908;
goto LABEL_118;
}
if ( *(_WORD *)v3 != 20058 )
{
LABEL_114:
v29 = 2i64;
if ( *v3 == 82 )
goto LABEL_115;
goto LABEL_117;
}
v32 = -2i64;
v29 = 2i64;
goto LABEL_92;
}
if ( !(*(_WORD *)v3 ^ 0x5A5F | (unsigned __int8)v3[2] ^ 0x4E) )
{
v32 = -3i64;
v30 = 3i64;
if ( v29 < 4 )
{
v29 = 3i64;
goto LABEL_94;
}
if ( v3[3] <= -65 )
{
v31 = &off_140020B58;
LABEL_63:
sub_14001D0B0(v3, v29, v30, v29, (__int64)v31);
}
LABEL_94:
v40 = &v3[v30];
v41 = v29 + v32;
v42 = (unsigned __int8 *)&v40[v41];
v43 = 0i64;
while ( v41 != v43 )
{
v44 = v40[v43++] < 0;
if ( v44 )
goto LABEL_109;
}
if ( v41 )
{
v45 = (unsigned __int8)*v40;
if ( *v40 < 0 )
{
v46 = v45 & 0x1F;
v47 = v40[1] & 0x3F;
if ( (unsigned __int8)v45 <= 0xDFu )
{
v39 = (unsigned __int8 *)(v40 + 2);
v45 = v47 | (v46 << 6);
}
else
{
v48 = (v47 << 6) | v40[2] & 0x3F;
if ( (unsigned __int8)*v40 < 0xF0u )
{
v39 = (unsigned __int8 *)(v40 + 3);
v45 = (v46 << 12) | v48;
}
else
{
v39 = (unsigned __int8 *)(v40 + 4);
v45 = ((v46 & 7) << 18) | (v48 << 6) | v40[3] & 0x3F;
}
}
}
else
{
v39 = (unsigned __int8 *)(v40 + 1);
}
if ( v45 == 69 )
{
v51 = 0i64;
LABEL_147:
v54 = v42 - v39;
goto LABEL_181;
}
if ( v45 != 1114112 )
{
v51 = 0i64;
v60 = v29;
while ( 1 )
{
v61 = v45 - 48;
if ( v61 > 9 )
break;
v62 = 0i64;
do
{
v64 = v62;
v63 = 10 * v62;
if ( !is_mul_ok(0xAui64, v64) )
goto LABEL_109;
v27 = __CFADD__(v61, v63);
v62 = v61 + v63;
if ( v27 || v39 == v42 )
goto LABEL_109;
v65 = *v39;
if ( (*v39 & 0x80u) == 0 )
{
++v39;
}
else
{
v66 = v65 & 0x1F;
v67 = v39[1] & 0x3F;
if ( (unsigned __int8)v65 <= 0xDFu )
{
v39 += 2;
v65 = v67 | (v66 << 6);
v29 = v60;
}
else
{
v68 = (v67 << 6) | v39[2] & 0x3F;
if ( *v39 < 0xF0u )
{
v39 += 3;
v65 = (v66 << 12) | v68;
v29 = v60;
}
else
{
v65 = ((v65 & 7) << 18) | (v68 << 6) | v39[3] & 0x3F;
v29 = v60;
if ( v65 == 1114112 )
goto LABEL_109;
v39 += 4;
}
}
}
v61 = v65 - 48;
}
while ( (unsigned int)(v65 - 48) < 0xA );
if ( v62 )
{
while ( v39 != v42 )
{
v65 = *v39;
if ( (*v39 & 0x80u) == 0 )
{
++v39;
}
else
{
v69 = v65 & 0x1F;
v70 = v39[1] & 0x3F;
if ( (unsigned __int8)v65 <= 0xDFu )
{
v39 += 2;
v65 = v70 | (v69 << 6);
v29 = v60;
}
else
{
v71 = (v70 << 6) | v39[2] & 0x3F;
if ( *v39 < 0xF0u )
{
v39 += 3;
v65 = (v69 << 12) | v71;
v29 = v60;
}
else
{
v65 = ((v65 & 7) << 18) | (v71 << 6) | v39[3] & 0x3F;
v29 = v60;
if ( v65 == 1114112 )
goto LABEL_109;
v39 += 4;
}
}
}
if ( !--v62 )
goto LABEL_164;
}
break;
}
LABEL_164:
++v51;
v45 = v65;
if ( v65 == 69 )
goto LABEL_147;
}
}
}
LABEL_109:
if ( v29 >= 3 )
goto LABEL_110;
goto LABEL_114;
}
if ( *(_WORD *)v3 == 20058 )
{
if ( v3[2] <= -65 )
sub_14001D0B0(v3, v29, 2ui64, v29, (__int64)&off_140020B70);
v32 = -2i64;
LABEL_92:
v30 = 2i64;
goto LABEL_94;
}
v33 = 3i64;
if ( v29 < 4 )
goto LABEL_111;
if ( *(_DWORD *)v3 == 1314545503 )
{
v32 = -4i64;
v30 = 4i64;
if ( v29 < 5 )
{
v29 = 4i64;
goto LABEL_94;
}
if ( v3[4] <= -65 )
{
v31 = &off_140020B88;
goto LABEL_63;
}
goto LABEL_94;
}
LABEL_110:
v33 = v29;
LABEL_111:
if ( *(_WORD *)v3 == 21087 )
{
v49 = v3[2];
if ( v49 <= -65 )
sub_14001D0B0(v3, v33, 2ui64, v33, (__int64)&off_140020DF8);
v41 = (__int64)(v3 + 2);
v50 = -2i64;
goto LABEL_122;
}
if ( *v3 == 82 )
{
v29 = v33;
LABEL_115:
v49 = v3[1];
if ( v49 <= -65 )
sub_14001D0B0(v3, v29, 1ui64, v29, (__int64)&off_140020E10);
v41 = (__int64)(v3 + 1);
v50 = -1i64;
goto LABEL_123;
}
v39 = (unsigned __int8 *)&unk_140020908;
if ( v33 <= 3 )
{
v29 = 3i64;
goto LABEL_118;
}
v51 = 0i64;
if ( *(_WORD *)v3 ^ 0x5F5F | (unsigned __int8)v3[2] ^ 0x52 )
{
v29 = v33;
goto LABEL_119;
}
v49 = v3[3];
if ( v49 <= -65 )
sub_14001D0B0(v3, v33, 3ui64, v33, (__int64)&off_140020E28);
v41 = (__int64)(v3 + 3);
v50 = -3i64;
LABEL_122:
v29 = v33;
LABEL_123:
v39 = (unsigned __int8 *)&unk_140020908;
v40 = 0i64;
if ( (unsigned __int8)(v49 - 65) > 0x19u )
{
LABEL_127:
v51 = 0i64;
v41 = 0i64;
goto LABEL_128;
}
v51 = v29 + v50;
v40 = 0i64;
v52 = 0i64;
while ( v51 != v52 )
{
v44 = *(char *)(v41 + v52++) < 0;
if ( v44 )
goto LABEL_127;
}
v85 = (char *)v41;
v86 = v51;
v87 = 0i64;
LODWORD(v88) = 0;
v89 = 0i64;
LODWORD(v90) = 0;
if ( (unsigned __int8)sub_140012370((__int64)&v85, 0) )
goto LABEL_216;
v56 = v85;
v57 = v86;
if ( !v85 )
{
LABEL_176:
v51 = v57 & 1;
goto LABEL_119;
}
v58 = v87;
v59 = (unsigned __int8)v86 | ((((unsigned __int64)((HIBYTE(v86) << 16) | (unsigned int)*(unsigned __int16 *)((char *)&v86 + 5)) << 32) | *(unsigned int *)((char *)&v86 + 1)) << 8);
if ( v87 >= v59 || (unsigned __int8)(v85[v87] - 65) >= 0x1Au )
goto LABEL_141;
v86 = (unsigned __int8)v86 | ((((unsigned __int64)((HIBYTE(v86) << 16) | (unsigned int)*(unsigned __int16 *)((char *)&v86 + 5)) << 32) | *(unsigned int *)((char *)&v86 + 1)) << 8);
_mm_storel_ps((double *)&v88, (__m128)v88);
v89 = 0i64;
LODWORD(v90) = 0;
if ( (unsigned __int8)sub_140012370((__int64)&v85, 0) )
LABEL_216:
sub_14001CF90(
(__int64)"`fmt::Error`s should be impossible without a `fmt::Formatter`",
61i64,
(__int64)v97,
(__int64)&off_140020A08,
(__int64)&off_140020E98);
v56 = v85;
v57 = v86;
if ( !v85 )
goto LABEL_176;
v58 = v87;
v59 = (unsigned __int8)v86 | ((((unsigned __int64)((HIBYTE(v86) << 16) | (unsigned int)*(unsigned __int16 *)((char *)&v86 + 5)) << 32) | *(unsigned int *)((char *)&v86 + 1)) << 8);
LABEL_141:
if ( v58 )
{
if ( v59 <= v58 )
{
if ( v59 != v58 )
LABEL_144:
sub_14001D0B0(v56, v59, v58, v59, (__int64)&off_140020E40);
}
else if ( v56[v58] <= -65 )
{
goto LABEL_144;
}
}
v72 = &v56[v58];
v54 = v59 - v58;
v40 = 0i64;
v39 = (unsigned __int8 *)v72;
LABEL_181:
v53 = 1i64;
if ( !v54 )
goto LABEL_129;
if ( *v39 == 46 )
{
v73 = v29;
LOBYTE(v29) = 46;
v74 = 0xF0000003Fi64;
v75 = v39;
LABEL_194:
++v75;
LODWORD(v29) = (unsigned __int8)v29;
if ( (unsigned int)(unsigned __int8)v29 - 33 < 0x19 )
goto LABEL_199;
LABEL_195:
if ( (v29 & 0xFFFFFFDF) - 65 < 0x1A
|| (v80 = (unsigned int)(v29 - 91), (unsigned int)v80 <= 0x23) && _bittest64(&v74, v80)
|| (unsigned int)(v29 - 58) < 7 )
{
while ( 1 )
{
while ( 1 )
{
while ( 1 )
{
LABEL_199:
if ( v75 == &v39[v54] )
{
v29 = v73;
goto LABEL_130;
}
LOBYTE(v29) = *v75;
if ( (*v75 & 0x80u) == 0 )
goto LABEL_194;
v76 = v29 & 0x1F;
v77 = v75[1] & 0x3F;
if ( (unsigned __int8)v29 > 0xDFu )
break;
v75 += 2;
LODWORD(v29) = v77 | (v76 << 6);
if ( (unsigned int)(v29 - 33) >= 0x19 )
goto LABEL_195;
}
v78 = v3;
v79 = (v77 << 6) | v75[2] & 0x3F;
if ( (unsigned __int8)v29 >= 0xF0u )
break;
v75 += 3;
LODWORD(v29) = (v76 << 12) | v79;
v3 = v78;
if ( (unsigned int)(v29 - 33) >= 0x19 )
goto LABEL_195;
}
LODWORD(v29) = ((v29 & 7) << 18) | (v79 << 6) | v75[3] & 0x3F;
if ( (_DWORD)v29 == 1114112 )
break;
v75 += 4;
v3 = v78;
if ( (unsigned int)(v29 - 33) >= 0x19 )
goto LABEL_195;
}
v3 = v78;
v29 = v73;
}
else
{
v53 = 0i64;
v54 = 0i64;
v39 = (unsigned __int8 *)&unk_140020908;
v29 = v73;
}
}
else
{
v53 = 0i64;
v54 = 0i64;
v39 = (unsigned __int8 *)&unk_140020908;
}
LABEL_130:
result = v96;
*v96 = v53;
result[1] = (__int64)v40;
result[2] = v41;
result[3] = v51;
result[4] = (__int64)v3;
result[5] = v29;
result[6] = (__int64)v39;
result[7] = v54;
return result;
}
// 140014E4B: conditional instruction was optimized away because rsi.8==2
// 1400209C0: using guessed type char *off_1400209C0;
// 1400209D8: using guessed type char *off_1400209D8;
// 1400209F0: using guessed type char *off_1400209F0;
// 140020A08: using guessed type __int64 (__fastcall *off_140020A08)();
// 140020B58: using guessed type char *off_140020B58;
// 140020B70: using guessed type char *off_140020B70;
// 140020B88: using guessed type char *off_140020B88;
// 140020DF8: using guessed type char *off_140020DF8;
// 140020E10: using guessed type char *off_140020E10;
// 140020E28: using guessed type char *off_140020E28;
// 140020E40: using guessed type char *off_140020E40;
// 140020E98: using guessed type char *off_140020E98;
// 1400211A8: using guessed type _BYTE byte_1400211A8[6];
// 140021218: using guessed type void *off_140021218;
// 140021230: using guessed type void *off_140021230;
//----- (00000001400154F0) ----------------------------------------------------
__int128 *__fastcall sub_1400154F0(__int128 *a1, __int64 a2, __int64 a3)
{
__int128 v4; // xmm0
__int128 v5; // xmm1
__int128 v6; // xmm2
__int128 v8[4]; // [rsp+20h] [rbp-48h] BYREF
sub_140014800((__int64 *)v8, a2, a3);
if ( *(_QWORD *)&v8[0] )
{
v4 = v8[0];
v5 = v8[1];
v6 = v8[2];
a1[3] = v8[3];
a1[2] = v6;
a1[1] = v5;
*a1 = v4;
}
else
{
*(_QWORD *)a1 = 2i64;
}
return a1;
}
//----- (0000000140015540) ----------------------------------------------------
__int64 __fastcall sub_140015540(__int64 a1)
{
return *(_QWORD *)(a1 + 32);
}
//----- (0000000140015550) ----------------------------------------------------
char __fastcall sub_140015550(_QWORD *a1, _QWORD *a2)
{
bool v3; // al
__int64 v4; // rcx
char v5; // cl
char result; // al
_QWORD *v7; // [rsp+28h] [rbp-B0h] BYREF
__int64 v8[2]; // [rsp+30h] [rbp-A8h] BYREF
__int64 v9[3]; // [rsp+40h] [rbp-98h] BYREF
__int64 *v10; // [rsp+58h] [rbp-80h] BYREF
__int64 v11[2]; // [rsp+60h] [rbp-78h] BYREF
__int64 v12; // [rsp+70h] [rbp-68h]
__int64 v13; // [rsp+78h] [rbp-60h]
__int64 v14; // [rsp+80h] [rbp-58h]
__int64 v15; // [rsp+88h] [rbp-50h]
__int64 v16; // [rsp+90h] [rbp-48h]
__int64 *v17; // [rsp+98h] [rbp-40h] BYREF
__int64 v18; // [rsp+A0h] [rbp-38h]
void **v19; // [rsp+A8h] [rbp-30h]
__int64 v20; // [rsp+B0h] [rbp-28h]
__int64 *v21; // [rsp+B8h] [rbp-20h]
__int64 v22; // [rsp+C0h] [rbp-18h]
if ( *a1 )
{
v7 = a1 + 1;
v9[0] = 0i64;
v9[1] = 1000000i64;
v9[2] = (__int64)a2;
if ( sub_140017C40((__int64)a2) )
{
v8[0] = (__int64)&v7;
v8[1] = (__int64)sub_14000EF50;
v11[0] = 2i64;
v12 = 2i64;
v14 = 0x2000000004i64;
LOBYTE(v15) = 3;
v16 = 0i64;
v10 = v9;
v17 = v11;
v18 = 1i64;
v19 = &off_140021248;
v20 = 1i64;
v21 = v8;
v22 = 1i64;
v3 = sub_1400172A0((__int64)&v10, (__int64)&off_1400208B8, (__int64 *)&v17);
v4 = v9[0];
if ( !v3 )
goto LABEL_11;
}
else
{
v17 = (__int64 *)&v7;
v18 = (__int64)sub_14000EF50;
v8[0] = (__int64)v9;
v11[0] = 0i64;
v12 = (__int64)&off_140021248;
v13 = 1i64;
v14 = (__int64)&v17;
v15 = 1i64;
v3 = sub_1400172A0((__int64)v8, (__int64)&off_1400208B8, v11);
v4 = v9[0];
if ( !v3 )
{
LABEL_11:
if ( v3 )
return 1;
if ( v4 )
sub_14001CF90(
(__int64)"`fmt::Error` from `SizeLimitedFmtAdapter` was discarded",
55i64,
(__int64)v11,
(__int64)&off_140020A28,
(__int64)&off_140021290);
return sub_140017BE0(a2);
}
}
if ( v4 )
{
if ( (unsigned __int8)sub_140017BE0(a2) )
return 1;
return sub_140017BE0(a2);
}
goto LABEL_11;
}
v5 = sub_140017BE0(a2);
result = 1;
if ( !v5 )
return sub_140017BE0(a2);
return result;
}
// 1400208B8: using guessed type __int64 (__fastcall *off_1400208B8)();
// 140020A28: using guessed type __int64 (__fastcall *off_140020A28)();
// 140021248: using guessed type void *off_140021248;
// 140021290: using guessed type void *off_140021290;
//----- (0000000140015780) ----------------------------------------------------
__int64 __fastcall sub_140015780(__int64 a1, _QWORD *a2)
{
return sub_140017BE0(a2);
}
//----- (00000001400157A0) ----------------------------------------------------
char __fastcall sub_1400157A0(__int64 a1, _QWORD *a2)
{
__int64 v2; // r14
__int64 v3; // r15
__int64 v5; // [rsp+28h] [rbp-40h] BYREF
char v6[56]; // [rsp+30h] [rbp-38h] BYREF
v2 = *(_QWORD *)(*(_QWORD *)a1 + 8i64);
v3 = *(_QWORD *)(*(_QWORD *)a1 + 16i64);
sub_140017E50((__int64)v6, a2);
for ( ; v3; --v3 )
{
v5 = v2++;
sub_140017010(v6, (__int64)&v5, (__int64)&off_1400214A0);
}
return sub_140017030((__int64)v6);
}
// 1400214A0: using guessed type __int64 (__fastcall *off_1400214A0)();
//----- (0000000140015820) ----------------------------------------------------
__int64 __fastcall sub_140015820(unsigned __int64 *a1, __int64 a2)
{
if ( sub_140017C50(a2) )
return sub_14001A4F0(a1, a2);
if ( sub_140017C60(a2) )
return sub_14001A590(a1, a2);
return sub_14001AD00(a1, a2);
}
//----- (0000000140015880) ----------------------------------------------------
__int64 __fastcall sub_140015880(__int64 **a1, unsigned int a2)
{
sub_1400161A0(*a1, a2);
return 0i64;
}
//----- (00000001400158A0) ----------------------------------------------------
bool __fastcall sub_1400158A0(__int64 *a1, __int128 *a2)
{
__int64 v2; // rax
__int128 v3; // xmm0
__int128 v4; // xmm1
__int64 v6; // [rsp+28h] [rbp-40h] BYREF
__int128 v7[3]; // [rsp+30h] [rbp-38h] BYREF
v2 = *a1;
v3 = *a2;
v4 = a2[1];
v7[2] = a2[2];
v7[1] = v4;
v7[0] = v3;
v6 = v2;
return sub_1400172A0((__int64)&v6, (__int64)&off_140021470, (__int64 *)v7);
}
// 140021470: using guessed type __int64 (__fastcall *off_140021470)();
//----- (00000001400158F0) ----------------------------------------------------
__int64 __fastcall sub_1400158F0(__int64 **a1, const void *a2, size_t a3)
{
__int64 *v5; // rdi
__int64 v6; // r14
v5 = *a1;
v6 = (*a1)[2];
if ( **a1 - v6 < a3 )
{
sub_14001CA70(*a1, v6, a3);
v6 = v5[2];
}
memcpy((void *)(v6 + v5[1]), a2, a3);
v5[2] = a3 + v6;
return 0i64;
}
//----- (0000000140015950) ----------------------------------------------------
__int64 __fastcall sub_140015950(__int64 *a1, __int64 a2)
{
unsigned __int64 v2; // rdx
__int64 v4; // rax
unsigned __int64 v5; // rcx
__int64 v6; // rdi
__int64 result; // rax
__int64 v8[2]; // [rsp+28h] [rbp-40h] BYREF
__int64 v9; // [rsp+38h] [rbp-30h]
__int64 v10[2]; // [rsp+40h] [rbp-28h] BYREF
__int64 v11; // [rsp+50h] [rbp-18h]
v2 = a2 + 1;
if ( !v2 )
LABEL_12:
sub_140015AA0();
v4 = *a1;
v5 = 2 * *a1;
if ( v5 > v2 )
v2 = v5;
v6 = 8i64;
if ( v2 >= 9 )
v6 = v2;
if ( v4 )
{
v8[0] = a1[1];
v8[1] = v4;
v9 = 1i64;
}
else
{
v9 = 0i64;
}
result = sub_140015A10(v10, v6, v6 >= 0, (__int64)v8);
if ( v10[0] )
{
result = 0x8000000000000001ui64;
if ( v11 != 0x8000000000000001ui64 )
{
if ( v11 )
sub_14001CB30();
goto LABEL_12;
}
}
else
{
a1[1] = v10[1];
*a1 = v6;
}
return result;
}
//----- (0000000140015A10) ----------------------------------------------------
__int64 __fastcall sub_140015A10(__int64 *a1, __int64 a2, __int64 a3, __int64 a4)
{
size_t v6; // rdx
__int64 v7; // rax
__int64 result; // rax
if ( !a3 )
{
a1[1] = a2;
a1[2] = 0i64;
goto LABEL_10;
}
if ( *(_QWORD *)(a4 + 16) )
{
v6 = *(_QWORD *)(a4 + 8);
if ( v6 )
{
v7 = sub_1400010F0(*(void **)a4, v6);
if ( !v7 )
goto LABEL_8;
goto LABEL_12;
}
}
if ( !a2 )
{
v7 = 1i64;
goto LABEL_12;
}
v7 = sub_1400010D0(a2, 1i64);
if ( v7 )
{
LABEL_12:
a1[1] = v7;
a1[2] = a2;
result = 0i64;
goto LABEL_13;
}
LABEL_8:
a1[1] = a2;
a1[2] = 1i64;
LABEL_10:
result = 1i64;
LABEL_13:
*a1 = result;
return result;
}
// 1400010D0: using guessed type __int64 __fastcall sub_1400010D0(_QWORD, _QWORD);
//----- (0000000140015AA0) ----------------------------------------------------
void __noreturn sub_140015AA0()
{
__int64 v0[6]; // [rsp+28h] [rbp-30h] BYREF
v0[2] = (__int64)&off_140021560;
v0[3] = 1i64;
v0[0] = 0i64;
v0[4] = (__int64)&off_1400214C0;
v0[5] = 0i64;
sub_14001CBB0((__int64)v0, (__int64)&off_140021570);
}
// 1400214C0: using guessed type __int64 (__fastcall *off_1400214C0)();
// 140021560: using guessed type char *off_140021560;
// 140021570: using guessed type void *off_140021570;
//----- (0000000140015AF0) ----------------------------------------------------
void __noreturn sub_140015AF0()
{
sub_140001100();
}
// 140001100: using guessed type void __noreturn sub_140001100(void);
//----- (0000000140015B00) ----------------------------------------------------
__int64 __fastcall sub_140015B00(__int64 a1, const void *a2, size_t a3)
{
size_t v3; // r14
void *v7; // rax
__int64 v8; // rdx
__int128 v10; // [rsp+20h] [rbp-40h] BYREF
size_t v11; // [rsp+30h] [rbp-30h]
__int128 v12; // [rsp+38h] [rbp-28h]
size_t v13; // [rsp+48h] [rbp-18h]
char v14; // [rsp+57h] [rbp-9h]
__int64 v15; // [rsp+58h] [rbp-8h]
v15 = -2i64;
v3 = a3 + 1;
if ( a3 == -1i64 )
sub_14001CC50((__int64)"called `Option::unwrap()` on a `None` value", 43i64, (__int64)&off_1400215D8);
if ( (__int64)(a3 + 1) < 0 )
sub_140015AA0();
v7 = (void *)sub_1400010D0(a3 + 1, 1i64);
if ( !v7 )
sub_14001CB30();
*(_QWORD *)&v12 = v3;
*((_QWORD *)&v12 + 1) = v7;
memcpy(v7, a2, a3);
v13 = a3;
if ( a3 >= 0x10 )
{
v14 = 1;
JUMPOUT(0x140015B9Ci64);
}
if ( !a3 )
{
LABEL_14:
v11 = v13;
v10 = v12;
v14 = 0;
sub_140015C70((__int64 *)&v10);
JUMPOUT(0x140015BF0i64);
}
v8 = 0i64;
while ( *((_BYTE *)a2 + v8) )
{
if ( a3 == ++v8 )
goto LABEL_14;
}
*(_QWORD *)(a1 + 24) = v13;
*(_OWORD *)(a1 + 8) = v12;
*(_QWORD *)a1 = v8;
return a1;
}
// 140015B98: control flows out of bounds to 140015B9C
// 140015BEB: control flows out of bounds to 140015BF0
// 1400010D0: using guessed type __int64 __fastcall sub_1400010D0(_QWORD, _QWORD);
// 1400215D8: using guessed type void *off_1400215D8;
//----- (0000000140015C70) ----------------------------------------------------
void *__fastcall sub_140015C70(__int64 *a1)
{
__int64 *v1; // rbx
char *v2; // rdi
char *v3; // rsi
void *v4; // rsi
__int64 v5; // rdi
__int64 v7[2]; // [rsp+28h] [rbp-48h] BYREF
__int64 v8; // [rsp+38h] [rbp-38h]
void *Src[2]; // [rsp+40h] [rbp-30h] BYREF
__int64 v10; // [rsp+50h] [rbp-20h]
__int64 *v11; // [rsp+60h] [rbp-10h]
char v12; // [rsp+6Fh] [rbp-1h]
__int64 v13; // [rsp+70h] [rbp+0h]
v13 = -2i64;
v1 = a1;
v2 = (char *)*a1;
v3 = (char *)a1[2];
if ( (char *)*a1 != v3 )
{
LABEL_12:
if ( v3 != v2 )
goto LABEL_14;
goto LABEL_13;
}
v2 = v3 + 1;
if ( v3 == (char *)-1i64 )
goto LABEL_9;
if ( v3 )
{
Src[0] = (void *)a1[1];
Src[1] = v3;
v10 = 1i64;
}
else
{
v10 = 0i64;
}
sub_140015A10(v7, (__int64)(v3 + 1), (__int64)v2 >= 0, (__int64)Src);
if ( !v7[0] )
{
v1[1] = v7[1];
*v1 = (__int64)v2;
goto LABEL_12;
}
if ( v8 != 0x8000000000000001ui64 )
{
if ( v8 )
{
v12 = 1;
JUMPOUT(0x140015DBFi64);
}
LABEL_9:
v12 = 1;
JUMPOUT(0x140015D08i64);
}
LABEL_13:
v12 = 1;
v11 = v1;
sub_140015950(v1, (__int64)v3);
v1 = v11;
v3 = (char *)v11[2];
LABEL_14:
v3[v1[1]] = 0;
v1[2] = (__int64)(v3 + 1);
*(_OWORD *)Src = *(_OWORD *)v1;
v4 = (void *)v1[2];
v10 = (__int64)v4;
if ( Src[0] <= v4 )
return Src[1];
if ( v4 )
{
v5 = sub_1400010F0(Src[1], (size_t)Src[0]);
if ( !v5 )
JUMPOUT(0x140015D83i64);
}
else
{
v5 = 1i64;
sub_1400010E0(Src[1], Src[0], 1i64);
}
return (void *)v5;
}
// 140015D04: control flows out of bounds to 140015D08
// 140015D81: control flows out of bounds to 140015D83
// 140015DBB: control flows out of bounds to 140015DBF
// 1400010E0: using guessed type __int64 __fastcall sub_1400010E0(_QWORD, _QWORD, _QWORD);
//----- (0000000140015E30) ----------------------------------------------------
// positive sp value has been detected, the output may be wrong!
void __fastcall sub_140015E30(__int64 *a1, _QWORD *a2)
{
__int64 v4; // r8
__int64 v5; // rax
__int64 v6; // rcx
__int64 v7; // rdx
unsigned __int64 v8; // r9
__int64 v9; // rdi
__int64 v10; // r8
unsigned __int64 v11; // r9
__int64 v12; // r10
unsigned __int64 v13; // r9
const __m128i *v14; // r10
__m128i v15; // xmm0
__m128i v16; // xmm1
__m128i v17; // xmm1
__int64 v18; // rdx
bool v19; // dl
__int64 v20; // rcx
v4 = a2[3];
v5 = 1i64;
if ( v4 )
{
v6 = a2[2];
v7 = 16 * v4;
v8 = (v4 - 1) & 0xFFFFFFFFFFFFFFFi64;
if ( v8 >= 4 )
{
v11 = v8 + 1;
v12 = 4i64;
if ( (v11 & 3) != 0 )
v12 = v11 & 3;
v13 = v11 - v12;
v10 = v6 + 16 * v13;
v14 = (const __m128i *)(v6 + 40);
v15 = 0i64;
v16 = 0i64;
do
{
v15 = _mm_add_epi64(v15, _mm_unpacklo_epi64(_mm_loadu_si128(v14 - 2), _mm_loadu_si128(v14 - 1)));
v16 = _mm_add_epi64(v16, _mm_unpacklo_epi64(_mm_loadu_si128(v14), _mm_loadu_si128(v14 + 1)));
v14 += 4;
v13 -= 4i64;
}
while ( v13 );
v17 = _mm_add_epi64(v16, v15);
v9 = _mm_add_epi64(_mm_shuffle_epi32(v17, 238), v17).m128i_u64[0];
}
else
{
v9 = 0i64;
v10 = a2[2];
}
v18 = v6 + v7;
do
{
v9 += *(_QWORD *)(v10 + 8);
v10 += 16i64;
}
while ( v10 != v18 );
if ( a2[5] )
{
v19 = *(_QWORD *)(v6 + 8) == 0i64;
v20 = 0i64;
if ( v9 < 0 || v19 && (unsigned __int64)v9 < 0x10 )
goto LABEL_20;
v9 *= 2i64;
}
if ( v9 )
{
if ( v9 < 0 )
JUMPOUT(0x140015FE8i64);
v5 = sub_1400010D0(v9, 1i64);
if ( !v5 )
sub_14001CB30();
v20 = v9;
LABEL_20:
*a1 = v20;
a1[1] = v5;
a1[2] = 0i64;
JUMPOUT(0x140015F99i64);
}
}
v20 = 0i64;
goto LABEL_20;
}
// 140015FBD: positive sp value 98 has been found
// 140015F95: control flows out of bounds to 140015F99
// 140015F48: control flows out of bounds to 140015FE8
// 1400010D0: using guessed type __int64 __fastcall sub_1400010D0(_QWORD, _QWORD);
//----- (0000000140016030) ----------------------------------------------------
void __fastcall sub_140016030(__int64 a1, __int64 a2, __int64 a3)
{
if ( a3 )
{
if ( a3 < 0 )
sub_140015AA0();
if ( !sub_1400010D0(a3, 1i64) )
sub_14001CB30();
}
JUMPOUT(0x1400160C3i64);
}
// 1400160A5: control flows out of bounds to 1400160C3
// 1400010D0: using guessed type __int64 __fastcall sub_1400010D0(_QWORD, _QWORD);
//----- (00000001400161A0) ----------------------------------------------------
_BYTE *__fastcall sub_1400161A0(__int64 *a1, unsigned int a2)
{
char v2; // di
__int64 v4; // rdx
_BYTE *result; // rax
size_t v6; // rdi
__int64 v7; // rbx
int Src; // [rsp+2Ch] [rbp-1Ch] BYREF
v2 = a2;
if ( a2 > 0x7F )
{
Src = 0;
if ( a2 >= 0x800 )
{
if ( a2 >= 0x10000 )
{
LOBYTE(Src) = (a2 >> 18) & 7 | 0xF0;
BYTE1(Src) = (a2 >> 12) & 0x3F | 0x80;
BYTE2(Src) = (a2 >> 6) & 0x3F | 0x80;
HIBYTE(Src) = a2 & 0x3F | 0x80;
v6 = 4i64;
}
else
{
LOBYTE(Src) = (a2 >> 12) | 0xE0;
BYTE1(Src) = (a2 >> 6) & 0x3F | 0x80;
BYTE2(Src) = a2 & 0x3F | 0x80;
v6 = 3i64;
}
}
else
{
LOBYTE(Src) = (a2 >> 6) | 0xC0;
BYTE1(Src) = a2 & 0x3F | 0x80;
v6 = 2i64;
}
v7 = a1[2];
if ( *a1 - v7 < v6 )
{
sub_14001CA70(a1, a1[2], v6);
v7 = a1[2];
}
result = memcpy((void *)(v7 + a1[1]), &Src, v6);
a1[2] = v6 + v7;
}
else
{
v4 = a1[2];
if ( v4 == *a1 )
{
sub_140015950(a1, v4);
v4 = a1[2];
}
result = (_BYTE *)a1[1];
result[v4] = v2;
a1[2] = v4 + 1;
}
return result;
}
//----- (00000001400162C0) ----------------------------------------------------
__int64 __fastcall sub_1400162C0(__int64 a1, unsigned __int64 a2)
{
bool v3; // cf
__int64 v4; // rdx
__int64 v5; // rax
__int64 v6; // rax
unsigned __int64 v7; // rax
char v9[8]; // [rsp+30h] [rbp-8h] BYREF
v3 = a2 < 9;
v4 = 8i64;
if ( !v3 )
v4 = a2;
v5 = ((a2 + 15) & -(__int64)a2) - 16;
v3 = __CFADD__(v5, 16i64);
v6 = v5 + 16;
if ( v3 || (v3 = __CFADD__(a1, v6), v7 = a1 + v6, v3) || 0x8000000000000000ui64 - v4 < v7 )
sub_14001CF90(
(__int64)"called `Result::unwrap()` on an `Err` value",
43i64,
(__int64)v9,
(__int64)&off_140021510,
(__int64)&off_140021678);
return (v4 + v7 - 1) & -v4;
}
// 140021510: using guessed type __int64 (__fastcall *off_140021510)();
// 140021678: using guessed type char *off_140021678;
// 1400162C0: using guessed type char var_8[8];
//----- (0000000140016340) ----------------------------------------------------
__int64 __fastcall sub_140016340(__int64 a1, _QWORD *a2)
{
__int64 v3; // [rsp+40h] [rbp-8h] BYREF
v3 = a1 + 8;
return sub_140017D60(
a2,
(__int64)&unk_140021690,
8i64,
a1,
(__int64)&off_140021698,
(__int64)&v3,
(__int64)&off_1400216B8);
}
// 140021698: using guessed type __int64 (__fastcall *off_140021698)();
// 1400216B8: using guessed type __int64 (__fastcall *off_1400216B8)();
//----- (0000000140016390) ----------------------------------------------------
void __noreturn sub_140016390()
{
while ( 1 )
;
}
//----- (00000001400163B0) ----------------------------------------------------
unsigned __int64 __fastcall sub_1400163B0(unsigned __int8 *a1, unsigned __int64 a2, unsigned int a3)
{
unsigned __int64 v3; // r9
__int64 v4; // r10
int v5; // eax
__int64 v6; // rax
unsigned __int64 v7; // rdx
__int64 v8; // r11
__int64 v9; // rax
int v10; // esi
unsigned int v11; // edi
int v12; // esi
bool v13; // cf
unsigned int v14; // esi
__int64 v15; // rsi
int v16; // edi
int v17; // kr00_4
unsigned int v18; // ebp
int v19; // edi
unsigned int v20; // edi
__int64 v21; // rdx
unsigned int v22; // r11d
__int64 v23; // r11
int v24; // kr08_4
unsigned int v25; // esi
unsigned int v27; // [rsp+24h] [rbp-64h] BYREF
__int64 v28[2]; // [rsp+28h] [rbp-60h] BYREF
__int64 v29[10]; // [rsp+38h] [rbp-50h] BYREF
v27 = a3;
if ( a3 - 2 > 0x22 )
{
v28[0] = (__int64)&v27;
v28[1] = (__int64)sub_14001ABE0;
v29[2] = (__int64)&off_1400217B0;
v29[3] = 1i64;
v29[0] = 0i64;
v29[4] = (__int64)v28;
v29[5] = 1i64;
sub_14001CBB0((__int64)v29, (__int64)&off_1400217E0);
}
v3 = a2;
v4 = 1i64;
if ( !a2 )
{
v6 = 0i64;
v7 = 0i64;
return v7 | v4 | v6;
}
v5 = *a1;
if ( v5 == 45 )
{
if ( a2 == 1 )
goto LABEL_18;
}
else if ( v5 == 43 )
{
v3 = a2 - 1;
if ( a2 == 1 )
{
v6 = 0i64;
v7 = 256i64;
return v7 | v4 | v6;
}
++a1;
}
if ( a3 <= 0x10 && v3 < 9 )
{
if ( a3 <= 0xA )
{
v21 = 0i64;
LODWORD(v9) = 0;
while ( 1 )
{
v22 = a1[v21] - 48;
if ( v22 >= a3 )
break;
v9 = v22 + a3 * (_DWORD)v9;
if ( v3 == ++v21 )
goto LABEL_33;
}
}
else
{
v8 = 0i64;
LODWORD(v9) = 0;
while ( 1 )
{
v10 = a1[v8];
v11 = v10 - 48;
if ( (unsigned int)(v10 - 48) >= 0xA )
{
v12 = (v10 | 0x20) - 97;
v13 = __CFADD__(v12, 10);
v14 = v12 + 10;
if ( v13 )
v14 = -1;
v11 = v14;
if ( v14 >= a3 )
break;
}
v9 = v11 + a3 * (_DWORD)v9;
if ( v3 == ++v8 )
goto LABEL_33;
}
}
LABEL_18:
v7 = 256i64;
LABEL_19:
v6 = 0i64;
return v7 | v4 | v6;
}
if ( a3 <= 0xA )
{
v23 = 0i64;
v9 = 0i64;
while ( v3 != v23 )
{
v24 = a3 * v9;
v25 = a1[v23] - 48;
if ( v25 >= a3 || !is_mul_ok(a3, v9) )
{
v7 = ((unsigned __int64)(v25 < a3) << 8) + 256;
goto LABEL_19;
}
++v23;
v9 = v25 + v24;
if ( __CFADD__(v25, v24) )
{
v7 = 512i64;
goto LABEL_19;
}
}
}
else
{
v15 = 0i64;
v9 = 0i64;
while ( v3 != v15 )
{
v16 = a1[v15];
v17 = a3 * v9;
v18 = v16 - 48;
if ( (unsigned int)(v16 - 48) >= 0xA )
{
v19 = (v16 | 0x20) - 97;
v13 = __CFADD__(v19, 10);
v20 = v19 + 10;
if ( v13 )
v20 = -1;
v18 = v20;
if ( v20 >= a3 )
goto LABEL_18;
}
v7 = 512i64;
if ( is_mul_ok(a3, v9) )
{
++v15;
v9 = v18 + v17;
if ( !__CFADD__(v18, v17) )
continue;
}
goto LABEL_19;
}
}
LABEL_33:
v6 = v9 << 32;
v7 = 0i64;
v4 = 0i64;
return v7 | v4 | v6;
}
// 1400217B0: using guessed type char *off_1400217B0;
// 1400217E0: using guessed type char *off_1400217E0;
//----- (00000001400165E0) ----------------------------------------------------
char __fastcall sub_1400165E0(unsigned __int64 *a1, __int64 *a2)
{
__int64 v4; // rcx
__int64 v5; // rdx
__int64 v7[8]; // [rsp+28h] [rbp-40h] BYREF
if ( (unsigned __int8)sub_14001A7D0(a1, (__int64)a2) )
return 1;
v4 = *a2;
v5 = a2[1];
v7[0] = 0i64;
v7[2] = (__int64)&off_140021800;
v7[3] = 1i64;
v7[4] = (__int64)"from_str_radix_int: must lie in the range `[2, 36]` - found ";
v7[5] = 0i64;
if ( sub_1400172A0(v4, v5, v7) )
return 1;
else
return sub_14001A7D0(a1 + 1, (__int64)a2);
}
// 140021800: using guessed type void *off_140021800;
//----- (0000000140016680) ----------------------------------------------------
__int64 __fastcall sub_140016680(unsigned __int16 *a1)
{
return *a1;
}
//----- (0000000140016690) ----------------------------------------------------
__int64 __fastcall sub_140016690(unsigned int *a1)
{
unsigned int v2; // eax
__int64 v3; // rcx
__int64 result; // rax
v2 = a1[2] - 1114112;
v3 = 3i64;
if ( v2 < 3 )
v3 = v2;
result = 1114112i64;
switch ( v3 )
{
case 0i64:
return result;
case 1i64:
result = *a1;
a1[2] = 1114112;
break;
case 2i64:
a1[2] = 1114113;
result = 92i64;
break;
case 3i64:
switch ( *((_BYTE *)a1 + 12) )
{
case 0:
return result;
case 1:
*((_BYTE *)a1 + 12) = 0;
result = 125i64;
break;
case 2:
JUMPOUT(0x140016710i64);
case 3:
*((_BYTE *)a1 + 12) = 2;
result = 123i64;
break;
case 4:
*((_BYTE *)a1 + 12) = 3;
result = 117i64;
break;
case 5:
*((_BYTE *)a1 + 12) = 4;
result = 92i64;
break;
}
break;
}
return result;
}
// 14001670D: control flows out of bounds to 140016710
//----- (0000000140016770) ----------------------------------------------------
__int64 __fastcall sub_140016770(__int64 a1, __int64 a2, __int64 a3)
{
sub_140018DE0(a1, a2, a3 - 1);
return a1;
}
//----- (0000000140016790) ----------------------------------------------------
bool __fastcall sub_140016790(__int64 a1, __int64 *a2)
{
__int64 v2; // rcx
__int64 v3; // rdx
__int64 v5[6]; // [rsp+28h] [rbp-60h] BYREF
__int64 v6[6]; // [rsp+58h] [rbp-30h] BYREF
v5[0] = a1;
v5[1] = (__int64)sub_14001AFA0;
v5[2] = a1 + 16;
v5[3] = (__int64)sub_14001ABE0;
v5[4] = a1 + 20;
v5[5] = (__int64)sub_14001ABE0;
v2 = *a2;
v3 = a2[1];
v6[0] = 0i64;
v6[2] = (__int64)&off_140021838;
v6[3] = 3i64;
v6[4] = (__int64)v5;
v6[5] = 3i64;
return sub_1400172A0(v2, v3, v6);
}
// 140021838: using guessed type char *off_140021838;
//----- (0000000140016820) ----------------------------------------------------
__int64 __fastcall sub_140016820(__int64 a1)
{
return *(_QWORD *)a1;
}
//----- (0000000140016840) ----------------------------------------------------
__int64 __fastcall sub_140016840(__int64 a1)
{
return *(_QWORD *)(a1 + 24);
}
//----- (0000000140016850) ----------------------------------------------------
__int64 __fastcall sub_140016850(__int64 a1)
{
return *(unsigned __int8 *)(a1 + 32);
}
//----- (0000000140016860) ----------------------------------------------------
__int64 __fastcall sub_140016860(__int64 *a1, __int64 *a2)
{
unsigned int v2; // ebp
__int64 v4; // rsi
__int64 v5; // rdi
__int64 (__fastcall *v6)(__int64, __int64 *); // rax
__int64 v7; // r14
unsigned int v8; // eax
__int64 v10; // [rsp+28h] [rbp-90h] BYREF
__int64 v11[2]; // [rsp+30h] [rbp-88h] BYREF
void **v12; // [rsp+40h] [rbp-78h]
__int64 v13; // [rsp+48h] [rbp-70h]
__int64 **v14; // [rsp+50h] [rbp-68h]
__int64 v15; // [rsp+58h] [rbp-60h]
__int64 *v16; // [rsp+60h] [rbp-58h] BYREF
__int64 (__fastcall *v17)(__int64, __int64 *); // [rsp+68h] [rbp-50h]
__int64 *v18; // [rsp+70h] [rbp-48h]
__int64 (__fastcall *v19)(unsigned int *, __int64); // [rsp+78h] [rbp-40h]
__int64 v20; // [rsp+80h] [rbp-38h]
__int64 (__fastcall *v21)(unsigned int *, __int64); // [rsp+88h] [rbp-30h]
v4 = *a2;
v5 = a2[1];
LOBYTE(v2) = 1;
if ( !(*(unsigned __int8 (__fastcall **)(__int64, void *, __int64))(v5 + 24))(*a2, &unk_140021868, 12i64) )
{
if ( a1[2] )
{
v10 = a1[2];
v16 = &v10;
v6 = (__int64 (__fastcall *)(__int64, __int64 *))sub_14001AF90;
}
else
{
v7 = *a1;
if ( (*(__int64 (__fastcall **)(__int64))(a1[1] + 24))(*a1) != 0xC1A2C89CCD1E7BC1ui64 )
{
LABEL_7:
v16 = (__int64 *)a1[3];
v17 = sub_14001AFA0;
v18 = v16 + 2;
v19 = sub_14001ABE0;
v20 = (__int64)v16 + 20;
v21 = sub_14001ABE0;
v11[0] = 0i64;
v12 = (void **)&off_140021838;
v13 = 3i64;
v14 = &v16;
v15 = 3i64;
LOBYTE(v8) = sub_1400172A0(v4, v5, v11);
return v8;
}
v10 = v7;
v16 = &v10;
v6 = (__int64 (__fastcall *)(__int64, __int64 *))sub_14001AFC0;
}
v17 = v6;
v11[0] = 0i64;
v12 = &off_140021878;
v13 = 2i64;
v14 = &v16;
v15 = 1i64;
if ( !sub_1400172A0(v4, v5, v11) )
goto LABEL_7;
}
return v2;
}
// 1400169B5: variable 'v8' is possibly undefined
// 1400169B7: variable 'v2' is possibly undefined
// 140021838: using guessed type char *off_140021838;
// 140021878: using guessed type void *off_140021878;
//----- (00000001400169D0) ----------------------------------------------------
char __fastcall sub_1400169D0(__int64 *a1, __int64 a2, unsigned __int64 a3)
{
bool *v5; // r15
unsigned __int64 v6; // r14
unsigned __int64 v7; // r13
char v8; // r12
bool v9; // al
unsigned __int64 v10; // rbp
unsigned __int64 v11; // r8
__int64 v12; // rdx
unsigned __int64 v13; // r13
unsigned __int64 v14; // rbx
__int64 v16; // [rsp+28h] [rbp-50h]
__int64 v17; // [rsp+30h] [rbp-48h]
v5 = (bool *)a1[2];
v17 = *a1;
v16 = a1[1];
v6 = 0i64;
v7 = 0i64;
v8 = 0;
do
{
if ( v8 )
return 0;
if ( v7 > a3 )
{
v10 = v7;
goto LABEL_18;
}
while ( 1 )
{
v11 = a3 - v7;
if ( a3 - v7 >= 0x10 )
break;
v12 = 0i64;
if ( !v11 )
goto LABEL_17;
while ( *(_BYTE *)(a2 + v7 + v12) != 10 )
{
if ( v11 == ++v12 )
goto LABEL_17;
}
LABEL_14:
v10 = v12 + v7 + 1;
v13 = v12 + v7;
if ( v13 < a3 && *(_BYTE *)(a2 + v13) == 10 )
{
v8 = 0;
v7 = v10;
v14 = v10;
goto LABEL_19;
}
v7 = v10;
if ( v10 > a3 )
goto LABEL_18;
}
if ( sub_140018A00(0xAu, a2 + v7, v11) == 1 )
goto LABEL_14;
LABEL_17:
v10 = a3;
LABEL_18:
v7 = v10;
v8 = 1;
v10 = v6;
v14 = a3;
if ( v6 == a3 )
return 0;
LABEL_19:
if ( *v5
&& (*(unsigned __int8 (__fastcall **)(__int64, const char *, __int64))(v16 + 24))(
v17,
" {\n,\n, { } }(\n(,\n",
4i64) )
{
break;
}
v9 = v14 != v6 && *(_BYTE *)(v14 + a2 - 1) == 10;
*v5 = v9;
v6 = v10;
}
while ( !(*(unsigned __int8 (__fastcall **)(__int64))(v16 + 24))(v17) );
return 1;
}
// 140016AC0: variable 'v12' is possibly undefined
//----- (0000000140016B60) ----------------------------------------------------
_BYTE *__fastcall sub_140016B60(_BYTE *a1, __int64 a2, unsigned __int64 a3, __int64 a4, __int64 a5)
{
char v6; // bl
_QWORD *v11; // r14
int v12; // eax
char v13; // cl
__int64 v14; // r8
char *v15; // rdx
char v16; // al
int v17; // ecx
char v18; // dl
char v19; // [rsp+2Fh] [rbp-99h] BYREF
__int128 v20; // [rsp+30h] [rbp-98h] BYREF
char *v21; // [rsp+40h] [rbp-88h]
__int128 *v22; // [rsp+50h] [rbp-78h] BYREF
__int64 (__fastcall **v23)(); // [rsp+58h] [rbp-70h]
__int128 v24; // [rsp+60h] [rbp-68h]
__int128 v25; // [rsp+70h] [rbp-58h]
int v26; // [rsp+80h] [rbp-48h]
int v27; // [rsp+84h] [rbp-44h]
char v28; // [rsp+88h] [rbp-40h]
v6 = 1;
if ( a1[8] )
goto LABEL_2;
v11 = *(_QWORD **)a1;
v12 = *(_DWORD *)(*(_QWORD *)a1 + 48i64);
v13 = a1[9];
if ( (v12 & 4) != 0 )
{
if ( !v13 )
{
if ( (*(unsigned __int8 (__fastcall **)(_QWORD, char *, __int64))(v11[1] + 24i64))(
*v11,
" {\n,\n, { } }(\n(,\n",
3i64) )
{
goto LABEL_2;
}
v12 = *((_DWORD *)v11 + 12);
}
v19 = 1;
v20 = *(_OWORD *)v11;
v21 = &v19;
v17 = *((_DWORD *)v11 + 13);
v18 = *((_BYTE *)v11 + 56);
v26 = v12;
v27 = v17;
v28 = v18;
v24 = *((_OWORD *)v11 + 1);
v25 = *((_OWORD *)v11 + 2);
v22 = &v20;
v23 = &off_140021A68;
if ( !sub_1400169D0((__int64 *)&v20, a2, a3)
&& !sub_1400169D0((__int64 *)&v20, (__int64)&unk_140021A40, 2ui64)
&& !(*(unsigned __int8 (__fastcall **)(__int64, __int128 **))(a5 + 24))(a4, &v22) )
{
v16 = ((__int64 (__fastcall *)(__int128 *, char *, __int64))v23[3])(v22, ",\n, { } }(\n(,\n", 2i64);
goto LABEL_17;
}
}
else
{
v14 = 0i64;
v15 = ", { } }(\n(,\n";
if ( !v13 )
v15 = " { } }(\n(,\n";
LOBYTE(v14) = v13 == 0;
if ( !(*(unsigned __int8 (__fastcall **)(_QWORD, char *, __int64))(v11[1] + 24i64))(*v11, v15, v14 | 2)
&& !(*(unsigned __int8 (__fastcall **)(_QWORD, __int64, unsigned __int64))(v11[1] + 24i64))(*v11, a2, a3)
&& !(*(unsigned __int8 (__fastcall **)(_QWORD, void *, __int64))(v11[1] + 24i64))(*v11, &unk_140021A40, 2i64) )
{
v16 = (*(__int64 (__fastcall **)(__int64, _QWORD *))(a5 + 24))(a4, v11);
LABEL_17:
v6 = v16;
}
}
LABEL_2:
a1[8] = v6;
a1[9] = 1;
return a1;
}
// 140021A68: using guessed type __int64 (__fastcall *off_140021A68)();
//----- (0000000140016D20) ----------------------------------------------------
char __fastcall sub_140016D20(_BYTE *a1)
{
bool v2; // zf
char v3; // cl
char result; // al
char *v5; // rdx
__int64 v6; // r8
v2 = a1[9] == 0;
v3 = a1[8];
if ( v2 )
return v3 != 0;
result = 1;
if ( !v3 )
{
if ( (*(_BYTE *)(*(_QWORD *)a1 + 48i64) & 4) != 0 )
{
v5 = "} }(\n(,\n";
v6 = 1i64;
}
else
{
v5 = " }(\n(,\n";
v6 = 2i64;
}
result = (*(__int64 (__fastcall **)(_QWORD, char *, __int64))(*(_QWORD *)(*(_QWORD *)a1 + 8i64) + 24i64))(
**(_QWORD **)a1,
v5,
v6);
}
a1[8] = result;
return result;
}
//----- (0000000140016D90) ----------------------------------------------------
__int64 *__fastcall sub_140016D90(__int64 *a1, __int64 a2, __int64 a3)
{
__int64 v4; // r15
char v5; // al
_QWORD *v9; // r14
int v10; // eax
char *v11; // rdx
char v12; // cl
int v13; // ecx
char v14; // dl
char v15; // [rsp+2Fh] [rbp-89h] BYREF
__int128 *v16; // [rsp+30h] [rbp-88h] BYREF
__int64 (__fastcall **v17)(); // [rsp+38h] [rbp-80h]
__int128 v18; // [rsp+40h] [rbp-78h]
__int128 v19; // [rsp+50h] [rbp-68h]
int v20; // [rsp+60h] [rbp-58h]
int v21; // [rsp+64h] [rbp-54h]
char v22; // [rsp+68h] [rbp-50h]
__int128 v23; // [rsp+70h] [rbp-48h] BYREF
char *v24; // [rsp+80h] [rbp-38h]
if ( *((_BYTE *)a1 + 16) )
{
v4 = *a1;
LABEL_3:
v5 = 1;
goto LABEL_4;
}
v4 = *a1;
v9 = (_QWORD *)a1[1];
v10 = *((_DWORD *)v9 + 12);
if ( (v10 & 4) != 0 )
{
if ( !v4 )
{
if ( (*(unsigned __int8 (__fastcall **)(_QWORD, char *, __int64))(v9[1] + 24i64))(*v9, "(\n(,\n", 2i64) )
{
v5 = 1;
v4 = 0i64;
goto LABEL_4;
}
v10 = *((_DWORD *)v9 + 12);
}
v15 = 1;
v23 = *(_OWORD *)v9;
v24 = &v15;
v13 = *((_DWORD *)v9 + 13);
v14 = *((_BYTE *)v9 + 56);
v20 = v10;
v21 = v13;
v22 = v14;
v18 = *((_OWORD *)v9 + 1);
v19 = *((_OWORD *)v9 + 2);
v16 = &v23;
v17 = &off_140021A68;
if ( !(*(unsigned __int8 (__fastcall **)(__int64, __int128 **))(a3 + 24))(a2, &v16) )
{
v5 = ((__int64 (__fastcall *)(__int128 *, char *, __int64))v17[3])(v16, ",\n, { } }(\n(,\n", 2i64);
goto LABEL_4;
}
goto LABEL_3;
}
v11 = ", { } }(\n(,\n";
if ( !v4 )
v11 = "(,\n";
v12 = (*(__int64 (__fastcall **)(_QWORD, char *, __int64))(v9[1] + 24i64))(*v9, v11, 2i64 - (v4 == 0));
v5 = 1;
if ( !v12 )
v5 = (*(__int64 (__fastcall **)(__int64, _QWORD *))(a3 + 24))(a2, v9);
LABEL_4:
*((_BYTE *)a1 + 16) = v5;
*a1 = v4 + 1;
return a1;
}
// 140021A68: using guessed type __int64 (__fastcall *off_140021A68)();
//----- (0000000140016EE0) ----------------------------------------------------
void __fastcall sub_140016EE0(_BYTE *a1, __int64 a2, __int64 a3)
{
char v4; // bl
_QWORD *v7; // r15
int v8; // eax
char v9; // cl
int v10; // ecx
char v11; // dl
char v12; // [rsp+2Fh] [rbp-89h] BYREF
__int128 *v13; // [rsp+30h] [rbp-88h] BYREF
__int64 (__fastcall **v14)(); // [rsp+38h] [rbp-80h]
__int128 v15; // [rsp+40h] [rbp-78h]
__int128 v16; // [rsp+50h] [rbp-68h]
int v17; // [rsp+60h] [rbp-58h]
int v18; // [rsp+64h] [rbp-54h]
char v19; // [rsp+68h] [rbp-50h]
__int128 v20; // [rsp+70h] [rbp-48h] BYREF
char *v21; // [rsp+80h] [rbp-38h]
v4 = 1;
if ( !a1[8] )
{
v7 = *(_QWORD **)a1;
v8 = *(_DWORD *)(*(_QWORD *)a1 + 48i64);
v9 = a1[9];
if ( (v8 & 4) != 0 )
{
if ( !v9 )
{
if ( (*(unsigned __int8 (__fastcall **)(_QWORD, char *, __int64))(v7[1] + 24i64))(*v7, "\n", 1i64) )
goto LABEL_2;
v8 = *((_DWORD *)v7 + 12);
}
v12 = 1;
v20 = *(_OWORD *)v7;
v21 = &v12;
v10 = *((_DWORD *)v7 + 13);
v11 = *((_BYTE *)v7 + 56);
v17 = v8;
v18 = v10;
v19 = v11;
v15 = *((_OWORD *)v7 + 1);
v16 = *((_OWORD *)v7 + 2);
v13 = &v20;
v14 = &off_140021A68;
if ( !(*(unsigned __int8 (__fastcall **)(__int64, __int128 **))(a3 + 24))(a2, &v13) )
v4 = ((__int64 (__fastcall *)(__int128 *, char *, __int64))v14[3])(v13, ",\n, { } }(\n(,\n", 2i64);
}
else if ( !v9
|| !(*(unsigned __int8 (__fastcall **)(_QWORD, char *, __int64))(v7[1] + 24i64))(
*v7,
", { } }(\n(,\n",
2i64) )
{
v4 = (*(__int64 (__fastcall **)(__int64, _QWORD *))(a3 + 24))(a2, v7);
}
}
LABEL_2:
a1[8] = v4;
a1[9] = 1;
}
// 140021A68: using guessed type __int64 (__fastcall *off_140021A68)();
//----- (0000000140017010) ----------------------------------------------------
_BYTE *__fastcall sub_140017010(_BYTE *a1, __int64 a2, __int64 a3)
{
sub_140016EE0(a1, a2, a3);
return a1;
}
//----- (0000000140017030) ----------------------------------------------------
char __fastcall sub_140017030(__int64 a1)
{
if ( *(_BYTE *)(a1 + 8) )
return 1;
else
return (*(__int64 (__fastcall **)(_QWORD, const char *, __int64))(*(_QWORD *)(*(_QWORD *)a1 + 8i64) + 24i64))(
**(_QWORD **)a1,
"]library\\core\\src\\fmt\\num.rs",
1i64);
}
//----- (0000000140017060) ----------------------------------------------------
char __fastcall sub_140017060(__int64 *a1, unsigned int a2)
{
unsigned __int64 v2; // r8
int v4; // [rsp+24h] [rbp-4h] BYREF
v4 = 0;
if ( a2 >= 0x80 )
{
if ( a2 >= 0x800 )
{
if ( a2 >= 0x10000 )
{
LOBYTE(v4) = (a2 >> 18) & 7 | 0xF0;
BYTE1(v4) = (a2 >> 12) & 0x3F | 0x80;
BYTE2(v4) = (a2 >> 6) & 0x3F | 0x80;
HIBYTE(v4) = a2 & 0x3F | 0x80;
v2 = 4i64;
}
else
{
LOBYTE(v4) = (a2 >> 12) | 0xE0;
BYTE1(v4) = (a2 >> 6) & 0x3F | 0x80;
BYTE2(v4) = a2 & 0x3F | 0x80;
v2 = 3i64;
}
}
else
{
LOBYTE(v4) = (a2 >> 6) | 0xC0;
BYTE1(v4) = a2 & 0x3F | 0x80;
v2 = 2i64;
}
}
else
{
LOBYTE(v4) = a2;
v2 = 1i64;
}
return sub_1400169D0(a1, (__int64)&v4, v2);
}
//----- (0000000140017120) ----------------------------------------------------
bool __fastcall sub_140017120(__int64 a1, __int128 *a2)
{
__int128 v2; // xmm0
__int128 v3; // xmm1
__int64 v5; // [rsp+28h] [rbp-40h] BYREF
__int128 v6[3]; // [rsp+30h] [rbp-38h] BYREF
v5 = a1;
v2 = *a2;
v3 = a2[1];
v6[2] = a2[2];
v6[1] = v3;
v6[0] = v2;
return sub_1400172A0((__int64)&v5, (__int64)&off_140021BD8, (__int64 *)v6);
}
// 140021BD8: using guessed type __int64 (__fastcall *off_140021BD8)();
//----- (0000000140017160) ----------------------------------------------------
char __fastcall sub_140017160(__int64 **a1, __int64 a2, unsigned __int64 a3)
{
return sub_1400169D0(*a1, a2, a3);
}
//----- (0000000140017170) ----------------------------------------------------
char __fastcall sub_140017170(__int64 **a1, unsigned int a2)
{
__int64 *v2; // rcx
unsigned __int64 v3; // r8
int v5; // [rsp+24h] [rbp-4h] BYREF
v2 = *a1;
v5 = 0;
if ( a2 >= 0x80 )
{
if ( a2 >= 0x800 )
{
if ( a2 >= 0x10000 )
{
LOBYTE(v5) = (a2 >> 18) & 7 | 0xF0;
BYTE1(v5) = (a2 >> 12) & 0x3F | 0x80;
BYTE2(v5) = (a2 >> 6) & 0x3F | 0x80;
HIBYTE(v5) = a2 & 0x3F | 0x80;
v3 = 4i64;
}
else
{
LOBYTE(v5) = (a2 >> 12) | 0xE0;
BYTE1(v5) = (a2 >> 6) & 0x3F | 0x80;
BYTE2(v5) = a2 & 0x3F | 0x80;
v3 = 3i64;
}
}
else
{
LOBYTE(v5) = (a2 >> 6) | 0xC0;
BYTE1(v5) = a2 & 0x3F | 0x80;
v3 = 2i64;
}
}
else
{
LOBYTE(v5) = a2;
v3 = 1i64;
}
return sub_1400169D0(v2, (__int64)&v5, v3);
}
//----- (0000000140017230) ----------------------------------------------------
bool __fastcall sub_140017230(__int64 *a1, __int128 *a2)
{
__int64 v2; // rax
__int128 v3; // xmm0
__int128 v4; // xmm1
__int64 v6; // [rsp+28h] [rbp-40h] BYREF
__int128 v7[3]; // [rsp+30h] [rbp-38h] BYREF
v2 = *a1;
v3 = *a2;
v4 = a2[1];
v7[2] = a2[2];
v7[1] = v4;
v7[0] = v3;
v6 = v2;
return sub_1400172A0((__int64)&v6, (__int64)&off_140021BD8, (__int64 *)v7);
}
// 140021BD8: using guessed type __int64 (__fastcall *off_140021BD8)();
//----- (0000000140017280) ----------------------------------------------------
__int64 __fastcall sub_140017280(__int64 a1)
{
return a1;
}
//----- (0000000140017290) ----------------------------------------------------
bool __fastcall sub_140017290(__int64 *a1, __int64 *a2)
{
return sub_1400172A0(*a2, a2[1], a1);
}
//----- (00000001400172A0) ----------------------------------------------------
bool __fastcall sub_1400172A0(__int64 a1, __int64 a2, __int64 *a3)
{
__int64 v4; // r14
__int64 v5; // rax
_QWORD *v6; // r15
__int64 v7; // r12
__int64 v8; // r13
unsigned __int64 v9; // rbx
__int64 v10; // rax
__int64 v11; // rdx
__int64 v12; // rcx
__int64 v13; // rdx
__int64 v14; // rdx
__int64 v15; // rcx
__int64 v16; // rdx
__int64 v17; // r14
__int64 v18; // r15
__int64 v19; // r12
__int64 v20; // r14
__int64 v21; // r13
__int64 v23; // [rsp+28h] [rbp-80h] BYREF
__int64 v24; // [rsp+30h] [rbp-78h]
__int64 v25; // [rsp+38h] [rbp-70h]
__int64 v26; // [rsp+40h] [rbp-68h]
__int64 v27; // [rsp+48h] [rbp-60h]
__int64 v28; // [rsp+50h] [rbp-58h]
__int64 v29; // [rsp+58h] [rbp-50h]
char v30; // [rsp+60h] [rbp-48h]
v29 = 0x2000000000i64;
v30 = 3;
v25 = 0i64;
v27 = 0i64;
v23 = a1;
v24 = a2;
v4 = *a3;
if ( *a3 )
{
v5 = a3[1];
if ( v5 )
{
v6 = (_QWORD *)(a3[2] + 8);
v7 = 56 * v5;
v8 = 0i64;
v9 = 0i64;
while ( 1 )
{
if ( *v6 && (*(unsigned __int8 (__fastcall **)(__int64, _QWORD))(v24 + 24))(v23, *(v6 - 1)) )
return 1;
v10 = a3[4];
v30 = *(_BYTE *)(v4 + v8 + 40);
v29 = *(_QWORD *)(v4 + v8 + 32);
v11 = *(_QWORD *)(v4 + v8 + 16);
v12 = *(_QWORD *)(v4 + v8 + 24);
if ( v11 )
{
if ( (_DWORD)v11 != 1 || (v12 *= 16i64, *(void (__noreturn **)())(v10 + v12 + 8) != sub_140016390) )
{
v13 = 0i64;
goto LABEL_12;
}
v12 = **(_QWORD **)(v10 + v12);
}
v13 = 1i64;
LABEL_12:
v25 = v13;
v26 = v12;
v14 = *(_QWORD *)(v4 + v8);
v15 = *(_QWORD *)(v4 + v8 + 8);
if ( !v14 )
goto LABEL_17;
if ( (_DWORD)v14 == 1 )
{
v15 *= 16i64;
if ( *(void (__noreturn **)())(v10 + v15 + 8) == sub_140016390 )
{
v15 = **(_QWORD **)(v10 + v15);
LABEL_17:
v16 = 1i64;
goto LABEL_18;
}
}
v16 = 0i64;
LABEL_18:
v27 = v16;
v28 = v15;
if ( (*(unsigned __int8 (__fastcall **)(_QWORD, __int64 *))(v10 + 16i64 * *(_QWORD *)(v4 + v8 + 48) + 8))(
*(_QWORD *)(v10 + 16i64 * *(_QWORD *)(v4 + v8 + 48)),
&v23) )
{
return 1;
}
v6 += 2;
v8 += 56i64;
++v9;
if ( v7 == v8 )
goto LABEL_29;
}
}
v9 = 0i64;
LABEL_29:
if ( v9 >= a3[3] )
return 0;
return (*(unsigned __int8 (__fastcall **)(__int64, _QWORD, _QWORD))(v24 + 24))(
v23,
*(_QWORD *)(a3[2] + 16 * v9),
*(_QWORD *)(a3[2] + 16 * v9 + 8)) != 0;
}
v17 = a3[5];
if ( v17 )
{
v18 = a3[4];
v19 = a3[2];
v20 = 16 * v17;
v21 = 0i64;
v9 = 0i64;
while ( (!*(_QWORD *)(v19 + v21 + 8)
|| !(*(unsigned __int8 (__fastcall **)(__int64, _QWORD))(v24 + 24))(v23, *(_QWORD *)(v19 + v21)))
&& !(*(unsigned __int8 (__fastcall **)(_QWORD, __int64 *))(v18 + v21 + 8))(*(_QWORD *)(v18 + v21), &v23) )
{
v21 += 16i64;
++v9;
if ( v20 == v21 )
goto LABEL_29;
}
return 1;
}
v9 = 0i64;
if ( a3[3] )
return (*(unsigned __int8 (__fastcall **)(__int64, _QWORD, _QWORD))(v24 + 24))(
v23,
*(_QWORD *)(a3[2] + 16 * v9),
*(_QWORD *)(a3[2] + 16 * v9 + 8)) != 0;
return 0;
}
//----- (00000001400174B0) ----------------------------------------------------
__int64 __fastcall sub_1400174B0(__int64 a1, char a2, _BYTE *a3, unsigned __int64 a4, __int64 a5, __int64 a6)
{
__int64 v7; // rbx
int v9; // edi
unsigned int v10; // ebp
unsigned __int64 v11; // r12
__int64 v12; // rsi
unsigned __int64 v13; // rax
_BYTE *v14; // rcx
unsigned __int64 v15; // rsi
bool v16; // cc
unsigned __int64 v17; // rsi
char v18; // al
__int64 v19; // rdi
__int64 v20; // r14
__int64 v22; // r13
__int64 v23; // rdi
unsigned __int64 v24; // rsi
unsigned __int64 v25; // rdx
__m128i v26; // xmm0
__int64 v27; // rax
__m128i si128; // xmm1
__m128i v29; // xmm2
__m128i v30; // xmm3
__int64 v31; // rdi
__int64 v32; // r14
__int64 v33; // r13
__int64 v34; // rdi
unsigned int v35; // r14d
unsigned __int64 v36; // rsi
unsigned __int64 v37; // rsi
unsigned __int64 v38; // r15
__int64 v39; // rbx
unsigned __int64 v40; // rsi
char v41; // [rsp+2Fh] [rbp-59h]
__int64 v42; // [rsp+30h] [rbp-58h]
int v43; // [rsp+3Ch] [rbp-4Ch]
v7 = (__int64)a3;
if ( !a2 )
{
v11 = a6 + 1;
v9 = *(_DWORD *)(a1 + 48);
v10 = 45;
v12 = a5;
if ( (v9 & 4) != 0 )
goto LABEL_5;
LABEL_10:
v7 = 0i64;
if ( !*(_QWORD *)(a1 + 16) )
goto LABEL_31;
LABEL_11:
v42 = v12;
v15 = *(_QWORD *)(a1 + 24);
v16 = v15 <= v11;
v17 = v15 - v11;
if ( v16 )
{
v19 = *(_QWORD *)a1;
v20 = *(_QWORD *)(a1 + 8);
LOBYTE(v11) = 1;
if ( !sub_140017830(v19, v20, v10, v7, a4) )
return (*(__int64 (__fastcall **)(__int64, __int64, __int64))(v20 + 24))(v19, v42, a6);
}
else if ( (v9 & 8) != 0 )
{
v43 = *(_DWORD *)(a1 + 52);
*(_DWORD *)(a1 + 52) = 48;
v41 = *(_BYTE *)(a1 + 56);
*(_BYTE *)(a1 + 56) = 1;
v22 = *(_QWORD *)a1;
v23 = *(_QWORD *)(a1 + 8);
LOBYTE(v11) = 1;
if ( !sub_140017830(*(_QWORD *)a1, v23, v10, v7, a4) )
{
v24 = v17 + 1;
while ( --v24 )
{
if ( (*(unsigned __int8 (__fastcall **)(__int64, __int64))(v23 + 32))(v22, 48i64) )
return (unsigned int)v11;
}
if ( !(*(unsigned __int8 (__fastcall **)(__int64, __int64, __int64))(v23 + 24))(v22, v42, a6) )
{
*(_DWORD *)(a1 + 52) = v43;
*(_BYTE *)(a1 + 56) = v41;
LODWORD(v11) = 0;
}
}
}
else
{
v18 = 1;
if ( (unsigned __int8)*(_DWORD *)(a1 + 56) != 3 )
v18 = *(_DWORD *)(a1 + 56);
if ( v18 )
{
if ( v18 == 1 )
{
v11 = 0i64;
}
else
{
v11 = (v17 + 1) >> 1;
v17 >>= 1;
}
}
else
{
v11 = v17;
v17 = 0i64;
}
v33 = *(_QWORD *)a1;
v34 = *(_QWORD *)(a1 + 8);
v35 = *(_DWORD *)(a1 + 52);
v36 = v17 + 1;
while ( --v36 )
{
if ( (*(unsigned __int8 (__fastcall **)(__int64, _QWORD))(v34 + 32))(v33, v35) )
{
LOBYTE(v11) = 1;
return (unsigned int)v11;
}
}
v37 = v11;
LOBYTE(v11) = 1;
if ( v35 != 1114112
&& !sub_140017830(v33, v34, v10, v7, a4)
&& !(*(unsigned __int8 (__fastcall **)(__int64, __int64, __int64))(v34 + 24))(v33, v42, a6) )
{
v38 = v37;
v39 = -(__int64)v37;
v40 = -1i64;
while ( v39 + v40 != -1i64 )
{
++v40;
if ( (*(unsigned __int8 (__fastcall **)(__int64, _QWORD))(v34 + 32))(v33, v35) )
goto LABEL_49;
}
v40 = v38;
LABEL_49:
LOBYTE(v11) = v40 < v38;
}
}
return (unsigned int)v11;
}
v9 = *(_DWORD *)(a1 + 48);
v10 = 43;
if ( (v9 & 1) == 0 )
v10 = 1114112;
v11 = a6 + (*(_DWORD *)(a1 + 48) & 1);
v12 = a5;
if ( (v9 & 4) == 0 )
goto LABEL_10;
LABEL_5:
if ( a4 >= 0x20 )
{
v13 = sub_140018FF0(a3, a4);
goto LABEL_30;
}
v13 = a4;
if ( !a4 )
goto LABEL_30;
if ( a4 == 1 )
{
v13 = 0i64;
v14 = a3;
do
LABEL_29:
v13 += *v14++ >= 0xC0;
while ( v14 != &a3[a4] );
goto LABEL_30;
}
v25 = a4 & 0xFFFFFFFFFFFFFFFEui64;
v14 = &a3[a4 & 0xFFFFFFFFFFFFFFFEui64];
v26 = 0i64;
v27 = 0i64;
si128 = _mm_load_si128((const __m128i *)&xmmword_1400216E0);
v29 = _mm_load_si128((const __m128i *)&xmmword_1400216F0);
do
{
v30 = _mm_cmpgt_epi8(_mm_cvtsi32_si128(*(unsigned __int16 *)&a3[v27]), si128);
v26 = _mm_add_epi64(
v26,
_mm_and_si128(_mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v30, v30), 212), 212), v29));
v27 += 2i64;
}
while ( v25 != v27 );
v13 = _mm_add_epi64(_mm_shuffle_epi32(v26, 238), v26).m128i_u64[0];
if ( v25 != a4 )
goto LABEL_29;
LABEL_30:
v11 += v13;
if ( *(_QWORD *)(a1 + 16) )
goto LABEL_11;
LABEL_31:
v31 = *(_QWORD *)a1;
v32 = *(_QWORD *)(a1 + 8);
LOBYTE(v11) = 1;
if ( !sub_140017830(v31, v32, v10, v7, a4) )
return (*(__int64 (__fastcall **)(__int64, __int64, __int64))(v32 + 24))(v31, v12, a6);
return (unsigned int)v11;
}
// 1400216E0: using guessed type __int128 xmmword_1400216E0;
// 1400216F0: using guessed type __int128 xmmword_1400216F0;
//----- (0000000140017830) ----------------------------------------------------
char __fastcall sub_140017830(__int64 a1, __int64 a2, unsigned int a3, __int64 a4, __int64 a5)
{
char v8; // cl
char result; // al
if ( a3 == 1114112 || (v8 = (*(__int64 (__fastcall **)(__int64, _QWORD))(a2 + 32))(a1, a3), result = 1, !v8) )
{
if ( a4 )
return (*(__int64 (__fastcall **)(__int64, __int64, __int64))(a2 + 24))(a1, a4, a5);
else
return 0;
}
return result;
}
//----- (0000000140017890) ----------------------------------------------------
__int64 __fastcall sub_140017890(__int64 *a1, unsigned __int8 *a2, unsigned __int64 a3)
{
unsigned int v3; // ebp
unsigned __int64 v4; // rsi
unsigned __int8 *v5; // rdi
__int64 v7; // rax
__int64 v8; // rcx
unsigned __int8 *v9; // r8
__int64 v10; // r9
unsigned __int64 v11; // rcx
unsigned __int8 *v12; // r14
int v13; // r10d
int v14; // r11d
int v15; // r15d
int v16; // ebp
unsigned __int8 *v17; // rdx
unsigned __int64 v18; // r15
unsigned __int64 v19; // rax
unsigned __int8 *v20; // rcx
unsigned __int64 v21; // rdx
__m128i v22; // xmm0
__int64 v23; // rax
__m128i si128; // xmm1
__m128i v25; // xmm2
__m128i v26; // xmm3
bool v27; // cc
unsigned __int64 v28; // r15
char v29; // al
unsigned __int64 v30; // r12
__int64 v32; // r14
__int64 v33; // r13
unsigned int v34; // ebx
unsigned __int64 v35; // r15
unsigned __int64 v36; // rsi
v4 = a3;
v5 = a2;
v7 = a1[2];
v8 = a1[4];
if ( !(v8 | v7) )
return (*(__int64 (__fastcall **)(_QWORD, unsigned __int8 *, unsigned __int64))(a1[1] + 24))(*a1, v5, v4);
if ( v8 )
{
v9 = &a2[a3];
v10 = a1[5] + 1;
v11 = 0i64;
while ( --v10 )
{
if ( a2 == v9 )
goto LABEL_26;
v13 = *a2;
if ( (*a2 & 0x80u) == 0 )
{
v12 = a2 + 1;
}
else
{
v14 = v13 & 0x1F;
v15 = a2[1] & 0x3F;
if ( (unsigned __int8)v13 <= 0xDFu )
{
v12 = a2 + 2;
v13 = v15 | (v14 << 6);
}
else
{
v16 = (v15 << 6) | a2[2] & 0x3F;
if ( *a2 < 0xF0u )
{
v12 = a2 + 3;
v3 = (v14 << 12) | v16;
v13 = v3;
}
else
{
v3 = v16 << 6;
v13 = ((v13 & 7) << 18) | v3 | a2[3] & 0x3F;
if ( v13 == 1114112 )
goto LABEL_26;
v12 = a2 + 4;
}
}
}
v11 = (unsigned __int64)&v12[v11 - (_QWORD)a2];
a2 = v12;
if ( v13 == 1114112 )
goto LABEL_26;
}
if ( a2 != v9
&& (*a2 < 0xF0u || (((*a2 & 7) << 18) | ((a2[1] & 0x3F) << 12) | ((a2[2] & 0x3F) << 6) | a2[3] & 0x3F) != 1114112) )
{
if ( v11 )
{
if ( v11 >= v4 )
{
if ( v11 != v4 )
goto LABEL_21;
}
else if ( (char)v5[v11] < -64 )
{
LABEL_21:
v17 = 0i64;
goto LABEL_24;
}
}
v17 = v5;
LABEL_24:
if ( v17 )
{
v4 = v11;
v5 = v17;
}
}
}
LABEL_26:
if ( !v7 )
return (*(__int64 (__fastcall **)(_QWORD, unsigned __int8 *, unsigned __int64))(a1[1] + 24))(*a1, v5, v4);
v18 = a1[3];
if ( v4 >= 0x20 )
{
v19 = sub_140018FF0(v5, v4);
goto LABEL_36;
}
v19 = v4;
if ( !v4 )
goto LABEL_36;
if ( v4 == 1 )
{
v19 = 0i64;
v20 = v5;
do
LABEL_35:
v19 += (char)*v20++ >= -64;
while ( v20 != &v5[v4] );
goto LABEL_36;
}
v21 = v4 & 0xFFFFFFFFFFFFFFFEui64;
v20 = &v5[v4 & 0xFFFFFFFFFFFFFFFEui64];
v22 = 0i64;
v23 = 0i64;
si128 = _mm_load_si128((const __m128i *)&xmmword_1400216E0);
v25 = _mm_load_si128((const __m128i *)&xmmword_1400216F0);
do
{
v26 = _mm_cmpgt_epi8(_mm_cvtsi32_si128(*(unsigned __int16 *)&v5[v23]), si128);
v22 = _mm_add_epi64(
v22,
_mm_and_si128(_mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v26, v26), 212), 212), v25));
v23 += 2i64;
}
while ( v21 != v23 );
v19 = _mm_add_epi64(_mm_shuffle_epi32(v22, 238), v22).m128i_u64[0];
if ( v4 != v21 )
goto LABEL_35;
LABEL_36:
v27 = v18 <= v19;
v28 = v18 - v19;
if ( v27 )
return (*(__int64 (__fastcall **)(_QWORD, unsigned __int8 *, unsigned __int64))(a1[1] + 24))(*a1, v5, v4);
v29 = 0;
if ( (unsigned __int8)*((_DWORD *)a1 + 14) != 3 )
v29 = *((_DWORD *)a1 + 14);
if ( v29 )
{
if ( v29 == 1 )
{
v30 = 0i64;
}
else
{
v30 = (v28 + 1) >> 1;
v28 >>= 1;
}
}
else
{
v30 = v28;
v28 = 0i64;
}
v32 = *a1;
v33 = a1[1];
v34 = *((_DWORD *)a1 + 13);
v35 = v28 + 1;
while ( --v35 )
{
if ( (*(unsigned __int8 (__fastcall **)(__int64, _QWORD))(v33 + 32))(v32, v34) )
{
LOBYTE(v3) = 1;
return v3;
}
}
LOBYTE(v3) = 1;
if ( v34 != 1114112
&& !(*(unsigned __int8 (__fastcall **)(__int64, unsigned __int8 *, unsigned __int64))(v33 + 24))(v32, v5, v4) )
{
v36 = -1i64;
while ( v36 - v30 != -1i64 )
{
++v36;
if ( (*(unsigned __int8 (__fastcall **)(__int64, _QWORD))(v33 + 32))(v32, v34) )
goto LABEL_56;
}
v36 = v30;
LABEL_56:
LOBYTE(v3) = v36 < v30;
}
return v3;
}
// 140017BC6: variable 'v3' is possibly undefined
// 1400216E0: using guessed type __int128 xmmword_1400216E0;
// 1400216F0: using guessed type __int128 xmmword_1400216F0;
//----- (0000000140017BE0) ----------------------------------------------------
__int64 __fastcall sub_140017BE0(_QWORD *a1)
{
return (*(__int64 (__fastcall **)(_QWORD))(a1[1] + 24i64))(*a1);
}
//----- (0000000140017C00) ----------------------------------------------------
bool __fastcall sub_140017C00(__int64 *a1, __int128 *a2)
{
__int64 v2; // rax
__int64 v3; // r9
__int128 v4; // xmm0
__int128 v5; // xmm1
__int128 v7[3]; // [rsp+20h] [rbp-38h] BYREF
v2 = *a1;
v3 = a1[1];
v4 = *a2;
v5 = a2[1];
v7[2] = a2[2];
v7[1] = v5;
v7[0] = v4;
return sub_1400172A0(v2, v3, (__int64 *)v7);
}
//----- (0000000140017C40) ----------------------------------------------------
char __fastcall sub_140017C40(__int64 a1)
{
return (unsigned __int8)(*(_BYTE *)(a1 + 48) & 4) >> 2;
}
//----- (0000000140017C50) ----------------------------------------------------
char __fastcall sub_140017C50(__int64 a1)
{
return (unsigned __int8)(*(_BYTE *)(a1 + 48) & 0x10) >> 4;
}
//----- (0000000140017C60) ----------------------------------------------------
char __fastcall sub_140017C60(__int64 a1)
{
return (unsigned __int8)(*(_BYTE *)(a1 + 48) & 0x20) >> 5;
}
//----- (0000000140017C70) ----------------------------------------------------
__int64 __fastcall sub_140017C70(__int64 a1, _QWORD *a2, __int64 a3, __int64 a4)
{
char v6; // al
v6 = (*(__int64 (__fastcall **)(_QWORD, __int64, __int64))(a2[1] + 24i64))(*a2, a3, a4);
*(_QWORD *)a1 = a2;
*(_BYTE *)(a1 + 8) = v6;
*(_BYTE *)(a1 + 9) = 0;
return a1;
}
//----- (0000000140017CA0) ----------------------------------------------------
__int64 __fastcall sub_140017CA0(_QWORD *a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5)
{
unsigned __int8 v8; // al
unsigned int v9; // ebx
_QWORD *v10; // rsi
__int64 v12; // [rsp+20h] [rbp-38h] BYREF
_QWORD *v13; // [rsp+28h] [rbp-30h]
unsigned __int8 v14; // [rsp+30h] [rbp-28h]
bool v15; // [rsp+31h] [rbp-27h]
v8 = (*(__int64 (__fastcall **)(_QWORD))(a1[1] + 24i64))(*a1);
v13 = a1;
v14 = v8;
v12 = 0i64;
v15 = a3 == 0;
sub_140016D90(&v12, a4, a5);
v9 = v14;
if ( v12 )
{
LOBYTE(v9) = 1;
if ( !v14 )
{
v10 = v13;
if ( v12 != 1
|| !v15
|| (v13[6] & 4) != 0
|| !(*(unsigned __int8 (__fastcall **)(_QWORD, char *, __int64))(v13[1] + 24i64))(*v13, ",\n", 1i64) )
{
return (*(unsigned int (__fastcall **)(_QWORD, void *, __int64))(v10[1] + 24i64))(*v10, &unk_1400217F8, 1i64);
}
}
}
return v9;
}
//----- (0000000140017D60) ----------------------------------------------------
__int64 __fastcall sub_140017D60(_QWORD *a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, __int64 a7)
{
unsigned __int8 v10; // al
unsigned int v11; // ebx
_QWORD *v12; // rsi
__int64 v14; // [rsp+20h] [rbp-48h] BYREF
_QWORD *v15; // [rsp+28h] [rbp-40h]
unsigned __int8 v16; // [rsp+30h] [rbp-38h]
bool v17; // [rsp+31h] [rbp-37h]
v10 = (*(__int64 (__fastcall **)(_QWORD))(a1[1] + 24i64))(*a1);
v15 = a1;
v16 = v10;
v14 = 0i64;
v17 = a3 == 0;
sub_140016D90(&v14, a4, a5);
sub_140016D90(&v14, a6, a7);
v11 = v16;
if ( v14 )
{
LOBYTE(v11) = 1;
if ( !v16 )
{
v12 = v15;
if ( v14 != 1
|| !v17
|| (v15[6] & 4) != 0
|| !(*(unsigned __int8 (__fastcall **)(_QWORD, char *, __int64))(v15[1] + 24i64))(*v15, ",\n", 1i64) )
{
return (*(unsigned int (__fastcall **)(_QWORD, void *, __int64))(v12[1] + 24i64))(*v12, &unk_1400217F8, 1i64);
}
}
}
return v11;
}
//----- (0000000140017E50) ----------------------------------------------------
__int64 __fastcall sub_140017E50(__int64 a1, _QWORD *a2)
{
char v4; // al
v4 = (*(__int64 (__fastcall **)(_QWORD, void *, __int64))(a2[1] + 24i64))(*a2, &unk_140021831, 1i64);
*(_QWORD *)a1 = a2;
*(_BYTE *)(a1 + 8) = v4;
*(_BYTE *)(a1 + 9) = 0;
return a1;
}
//----- (0000000140017E90) ----------------------------------------------------
__int64 __fastcall sub_140017E90(_QWORD *a1)
{
return (*(__int64 (__fastcall **)(_QWORD))(a1[1] + 32i64))(*a1);
}
//----- (0000000140017EB0) ----------------------------------------------------
char __fastcall sub_140017EB0(char *a1, unsigned __int64 a2, __int64 *a3)
{
__int64 v3; // rbx
char *v4; // r9
unsigned __int64 v6; // rdi
unsigned __int64 v7; // r15
unsigned __int64 v8; // r14
char *v9; // r10
unsigned int v10; // ebp
unsigned int v11; // esi
unsigned int v12; // r13d
int v13; // eax
int v14; // edx
int v15; // ecx
unsigned int v16; // r13d
char v17; // al
unsigned int v18; // r13d
int v19; // eax
__int64 v20; // r15
unsigned __int8 v21; // r13
int v22; // edi
__int64 v23; // rdx
__int64 v24; // rax
__int64 v25; // rax
__int64 v26; // r8
char v27; // r15
__int64 v28; // r15
char *v30; // [rsp+38h] [rbp-70h]
char *v31; // [rsp+38h] [rbp-70h]
char *v32; // [rsp+40h] [rbp-68h]
char *v33; // [rsp+40h] [rbp-68h]
__int64 v34; // [rsp+48h] [rbp-60h]
unsigned __int8 (__fastcall *v36)(__int64, __int64); // [rsp+58h] [rbp-50h]
v3 = *a3;
v34 = a3[1];
v36 = *(unsigned __int8 (__fastcall **)(__int64, __int64))(v34 + 32);
if ( v36(*a3, 34i64) )
return 1;
v6 = a2;
if ( !a2 )
goto LABEL_64;
v7 = 0i64;
v4 = a1;
v8 = 0i64;
while ( 1 )
{
v10 = (unsigned __int8)*v4;
if ( (v10 & 0x80u) == 0 )
{
v9 = v4 + 1;
v11 = 1114114;
LABEL_9:
v12 = 48;
switch ( v10 )
{
case 0u:
goto LABEL_27;
case 1u:
case 2u:
case 3u:
case 4u:
case 5u:
case 6u:
case 7u:
case 8u:
case 0xBu:
case 0xCu:
case 0xEu:
case 0xFu:
case 0x10u:
case 0x11u:
case 0x12u:
case 0x13u:
case 0x14u:
case 0x15u:
case 0x16u:
case 0x17u:
case 0x18u:
case 0x19u:
case 0x1Au:
case 0x1Bu:
case 0x1Cu:
case 0x1Du:
case 0x1Eu:
case 0x1Fu:
case 0x20u:
case 0x21u:
goto LABEL_19;
case 9u:
v12 = 116;
break;
case 0xAu:
v12 = 110;
break;
case 0xDu:
v12 = 114;
break;
case 0x22u:
goto LABEL_18;
default:
goto LABEL_17;
}
goto LABEL_27;
}
v13 = v10 & 0x1F;
v14 = v4[1] & 0x3F;
if ( (unsigned __int8)v10 <= 0xDFu )
{
v9 = v4 + 2;
v10 = v14 | (v13 << 6);
v11 = 1114114;
if ( v10 <= 0x22 )
goto LABEL_9;
}
else
{
v9 = v4 + 3;
v15 = (v14 << 6) | v4[2] & 0x3F;
if ( (unsigned __int8)v10 >= 0xF0u )
{
v10 = ((v10 & 7) << 18) | (v15 << 6) | *v9 & 0x3F;
if ( v10 != 1114112 )
{
v9 = v4 + 4;
v11 = 1114114;
if ( v10 <= 0x22 )
goto LABEL_9;
goto LABEL_17;
}
LABEL_60:
if ( v7 )
{
if ( v7 >= v6 )
{
if ( v7 != v6 )
goto LABEL_68;
}
else if ( a1[v7] <= -65 )
{
LABEL_68:
sub_14001D0B0(a1, v6, v7, v6, (__int64)&off_140021C40);
}
LABEL_65:
if ( (*(unsigned __int8 (__fastcall **)(__int64, char *, unsigned __int64, char *))(v34 + 24))(
v3,
&a1[v7],
v6 - v7,
v4) )
{
return 1;
}
return v36(v3, 34i64);
}
LABEL_64:
v7 = 0i64;
goto LABEL_65;
}
v10 = (v13 << 12) | v15;
v11 = 1114114;
if ( v10 <= 0x22 )
goto LABEL_9;
}
LABEL_17:
if ( v10 == 92 )
{
LABEL_18:
v12 = v10;
}
else
{
LABEL_19:
v30 = v9;
v32 = v4;
if ( sub_14001B110(v10) )
{
_BitScanReverse(&v16, v10 | 1);
v12 = ((v16 ^ 0x1C) >> 2) ^ 7;
v11 = v10;
v4 = v32;
v9 = v30;
}
else
{
v17 = sub_14001A050(v10);
v11 = 1114113;
v12 = v10;
v4 = v32;
v9 = v30;
if ( !v17 )
{
_BitScanReverse(&v18, v10 | 1);
v12 = ((v18 ^ 0x1C) >> 2) ^ 7;
v11 = v10;
}
}
}
LABEL_27:
v19 = v11 - 1114112;
if ( v11 - 1114112 >= 3 )
v19 = 3;
if ( v19 != 1 )
break;
LABEL_6:
v8 = (unsigned __int64)&v9[v8 - (_QWORD)v4];
v4 = v9;
if ( v9 == &a1[a2] )
goto LABEL_60;
}
if ( v8 < v7 )
goto LABEL_69;
if ( v7 )
{
if ( v7 >= v6 )
{
if ( v7 != v6 )
goto LABEL_69;
}
else if ( a1[v7] < -64 )
{
goto LABEL_69;
}
}
if ( v8 )
{
if ( v8 >= v6 )
{
if ( v8 != v6 )
goto LABEL_69;
}
else if ( a1[v8] <= -65 )
{
LABEL_69:
sub_14001D0B0(a1, v6, v7, v8, (__int64)&off_140021C28);
}
}
v31 = v9;
v33 = v4;
if ( !(*(unsigned __int8 (__fastcall **)(__int64, char *, unsigned __int64))(v34 + 24))(v3, &a1[v7], v8 - v7) )
{
v20 = v12;
v21 = 5;
while ( 2 )
{
v24 = v11 - 1114112;
if ( (unsigned int)v24 >= 3 )
v24 = 3i64;
v22 = 1114113;
v23 = 92i64;
switch ( v24 )
{
case 0i64:
goto LABEL_57;
case 1i64:
v22 = 1114112;
v23 = (unsigned int)v20;
if ( (_DWORD)v20 != 1114112 )
goto LABEL_44;
LABEL_57:
v28 = 1i64;
if ( v10 >= 0x80 )
{
v28 = 2i64;
if ( v10 > 0x7FF )
v28 = 4i64 - (v10 < 0x10000);
}
v7 = v8 + v28;
v6 = a2;
v4 = v33;
v9 = v31;
goto LABEL_6;
case 2i64:
LABEL_44:
v11 = v22;
if ( !v36(v3, v23) )
continue;
return 1;
case 3i64:
v23 = 125i64;
v25 = v21;
v21 = 0;
v22 = v11;
switch ( v25 )
{
case 0i64:
goto LABEL_57;
case 1i64:
goto LABEL_44;
case 2i64:
v21 = 2 - (v20 == 0);
v26 = 0i64;
if ( v20 )
v26 = v20 - 1;
v27 = 4 * v20;
v23 = (v11 >> v27) & 0xF | 0x30;
if ( ((v11 >> v27) & 0xF) >= 0xA )
v23 = ((v11 >> v27) & 0xF) + 87;
v22 = v11;
v20 = v26;
goto LABEL_44;
case 3i64:
v21 = 2;
v23 = 123i64;
v22 = v11;
goto LABEL_44;
case 4i64:
v21 = 3;
v23 = 117i64;
v22 = v11;
goto LABEL_44;
case 5i64:
JUMPOUT(0x14001824Fi64);
}
}
}
}
return 1;
}
// 14001824A: control flows out of bounds to 14001824F
// 1400182CA: variable 'v4' is possibly undefined
// 140021C28: using guessed type char *off_140021C28;
// 140021C40: using guessed type char *off_140021C40;
//----- (00000001400183F0) ----------------------------------------------------
__int64 __fastcall sub_1400183F0(unsigned __int8 *a1, unsigned __int64 a2, __int64 *a3)
{
return sub_140017890(a3, a1, a2);
}
//----- (0000000140018410) ----------------------------------------------------
char __fastcall sub_140018410(unsigned int *a1, __int64 *a2)
{
__int64 v3; // rsi
unsigned __int8 (__fastcall *v4)(__int64, __int64); // r15
char result; // al
unsigned int v6; // ebx
unsigned int v7; // r8d
unsigned int v8; // eax
__int64 v9; // rdi
unsigned __int8 v10; // bp
int v11; // r14d
__int64 v12; // rdx
unsigned int v13; // eax
__int64 v14; // rcx
char v15; // al
unsigned int v16; // eax
__int64 v17; // rcx
__int64 v18; // rcx
__int64 v19; // rax
__int64 v20; // rax
char v21; // di
v3 = *a2;
v4 = *(unsigned __int8 (__fastcall **)(__int64, __int64))(a2[1] + 32);
if ( v4(*a2, 39i64) )
return 1;
v6 = *a1;
v7 = 1114114;
v8 = 48;
switch ( *a1 )
{
case 0u:
goto LABEL_17;
case 1u:
case 2u:
case 3u:
case 4u:
case 5u:
case 6u:
case 7u:
case 8u:
case 0xBu:
case 0xCu:
case 0xEu:
case 0xFu:
case 0x10u:
case 0x11u:
case 0x12u:
case 0x13u:
case 0x14u:
case 0x15u:
case 0x16u:
case 0x17u:
case 0x18u:
case 0x19u:
case 0x1Au:
case 0x1Bu:
case 0x1Cu:
case 0x1Du:
case 0x1Eu:
case 0x1Fu:
case 0x20u:
case 0x21u:
case 0x22u:
case 0x23u:
case 0x24u:
case 0x25u:
case 0x26u:
goto LABEL_7;
case 9u:
v9 = 116i64;
v10 = 5;
v11 = 1114113;
v12 = 92i64;
goto LABEL_20;
case 0xAu:
v9 = 110i64;
v10 = 5;
v11 = 1114113;
v12 = 92i64;
goto LABEL_20;
case 0xDu:
v9 = 114i64;
v10 = 5;
v11 = 1114113;
v12 = 92i64;
goto LABEL_20;
case 0x27u:
v9 = v6;
v10 = 5;
v11 = 1114113;
v12 = 92i64;
goto LABEL_20;
default:
if ( v6 == 92 )
{
v9 = 92i64;
v10 = 5;
v11 = 1114113;
v12 = 92i64;
LABEL_20:
while ( 2 )
{
if ( !v4(v3, v12) )
{
v18 = 3i64;
if ( (unsigned int)(v11 - 1114112) < 3 )
v18 = (unsigned int)(v11 - 1114112);
v12 = 92i64;
v7 = v11;
v11 = 1114113;
switch ( v18 )
{
case 0i64:
goto LABEL_25;
case 1i64:
goto LABEL_24;
case 2i64:
continue;
case 3i64:
goto LABEL_26;
}
}
return 1;
}
}
LABEL_7:
if ( !sub_14001B110(v6) )
{
v15 = sub_14001A050(v6);
v7 = 1114113;
if ( v15 )
{
v8 = v6;
}
else
{
_BitScanReverse(&v16, v6 | 1);
v8 = ((v16 ^ 0x1C) >> 2) ^ 7;
v7 = v6;
}
LABEL_17:
v9 = v8;
v10 = 5;
v17 = 3i64;
if ( v7 - 1114112 < 3 )
v17 = v7 - 1114112;
v11 = 1114113;
v12 = 92i64;
switch ( v17 )
{
case 0i64:
goto LABEL_25;
case 1i64:
goto LABEL_24;
case 2i64:
goto LABEL_20;
case 3i64:
goto LABEL_26;
}
}
_BitScanReverse(&v13, v6 | 1);
v9 = ((v13 ^ 0x1C) >> 2) ^ 7;
v10 = 5;
v14 = 3i64;
if ( v6 - 1114112 < 3 )
v14 = v6 - 1114112;
v11 = 1114113;
v12 = 92i64;
v7 = v6;
switch ( v14 )
{
case 0i64:
goto LABEL_25;
case 1i64:
LABEL_24:
v11 = 1114112;
v12 = (unsigned int)v9;
if ( (_DWORD)v9 != 1114112 )
goto LABEL_20;
LABEL_25:
result = v4(v3, 39i64);
break;
case 2i64:
goto LABEL_20;
case 3i64:
LABEL_26:
v12 = 125i64;
v19 = v10;
v10 = 0;
v11 = v7;
switch ( v19 )
{
case 0i64:
goto LABEL_25;
case 1i64:
goto LABEL_20;
case 2i64:
v10 = 2 - (v9 == 0);
v20 = 0i64;
if ( v9 )
v20 = v9 - 1;
v21 = 4 * v9;
v12 = (v7 >> v21) & 0xF | 0x30;
if ( ((v7 >> v21) & 0xF) >= 0xA )
v12 = ((v7 >> v21) & 0xF) + 87;
v11 = v7;
v9 = v20;
goto LABEL_20;
case 3i64:
v10 = 2;
v12 = 123i64;
v11 = v7;
goto LABEL_20;
case 4i64:
v10 = 3;
v12 = 117i64;
v11 = v7;
goto LABEL_20;
case 5i64:
v10 = 4;
v12 = 92i64;
v11 = v7;
goto LABEL_20;
}
}
break;
}
return result;
}
//----- (0000000140018820) ----------------------------------------------------
__int64 __fastcall sub_140018820(unsigned int *a1, __int64 *a2)
{
unsigned int v2; // eax
unsigned __int64 v4; // r8
int v5; // [rsp+24h] [rbp-4h] BYREF
v2 = *a1;
if ( !(a2[4] | a2[2]) )
return (*(__int64 (__fastcall **)(__int64, _QWORD))(a2[1] + 32))(*a2, v2);
v5 = 0;
if ( v2 >= 0x80 )
{
if ( v2 >= 0x800 )
{
if ( v2 >= 0x10000 )
{
LOBYTE(v5) = (v2 >> 18) | 0xF0;
BYTE1(v5) = (v2 >> 12) & 0x3F | 0x80;
BYTE2(v5) = (v2 >> 6) & 0x3F | 0x80;
HIBYTE(v5) = v2 & 0x3F | 0x80;
v4 = 4i64;
}
else
{
LOBYTE(v5) = (v2 >> 12) | 0xE0;
BYTE1(v5) = (v2 >> 6) & 0x3F | 0x80;
BYTE2(v5) = v2 & 0x3F | 0x80;
v4 = 3i64;
}
}
else
{
LOBYTE(v5) = (v2 >> 6) | 0xC0;
BYTE1(v5) = v2 & 0x3F | 0x80;
v4 = 2i64;
}
}
else
{
LOBYTE(v5) = v2;
v4 = 1i64;
}
return sub_140017890(a2, (unsigned __int8 *)&v5, v4);
}
//----- (0000000140018910) ----------------------------------------------------
__int64 __fastcall sub_140018910(unsigned __int64 a1, const __m128i *a2)
{
__m128i v3; // xmm6
int v4; // edi
int v5; // eax
__int128 *v6; // r8
__int64 v7; // rax
unsigned __int64 v8; // r9
char v9; // r11
bool v10; // cc
__int64 result; // rax
__int128 v12; // [rsp+B0h] [rbp-28h] BYREF
v3 = _mm_loadu_si128(a2 + 1);
v4 = a2[3].m128i_i32[0];
v5 = v4;
if ( (v4 & 4) != 0 )
{
v5 = v4 | 8;
if ( !v3.m128i_i64[0] )
{
a2[1].m128i_i64[0] = 1i64;
a2[1].m128i_i64[1] = 18i64;
}
}
a2[3].m128i_i32[0] = v5 | 4;
v6 = &v12;
v7 = 0i64;
v8 = a1;
do
{
v8 >>= 4;
v9 = 87;
if ( (a1 & 0xF) < 0xA )
v9 = 48;
*((_BYTE *)v6 - 1) = (a1 & 0xF) + v9;
v6 = (__int128 *)((char *)v6 - 1);
++v7;
v10 = a1 <= 0xF;
a1 = v8;
}
while ( !v10 );
if ( (unsigned __int64)(128 - v7) >= 0x81 )
sub_14001D030(128 - v7, 128i64, (__int64)&off_140021AF0);
result = sub_1400174B0(
(__int64)a2,
1,
"0x000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344454647484950515"
"25354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899",
2ui64,
(__int64)v6,
v7);
a2[1] = v3;
a2[3].m128i_i32[0] = v4;
return result;
}
// 140021AF0: using guessed type void *off_140021AF0;
//----- (0000000140018A00) ----------------------------------------------------
__int64 __fastcall sub_140018A00(unsigned __int8 a1, __int64 a2, unsigned __int64 a3)
{
unsigned __int64 v4; // rcx
__int64 i; // r10
unsigned __int64 v6; // rax
__int64 v7; // r10
__int64 result; // rax
v4 = ((a2 + 7) & 0xFFFFFFFFFFFFFFF8ui64) - a2;
if ( !v4 )
goto LABEL_10;
if ( v4 >= a3 )
v4 = a3;
if ( v4 )
{
for ( i = 0i64; i != v4; ++i )
{
if ( *(_BYTE *)(a2 + i) == a1 )
return 1i64;
}
v6 = a3 - 16;
if ( v4 <= a3 - 16 )
goto LABEL_11;
}
else
{
LABEL_10:
v6 = a3 - 16;
v4 = 0i64;
LABEL_11:
v7 = 0x101010101010101i64 * a1;
do
{
if ( (~(v7 ^ *(_QWORD *)(a2 + v4)) & ((v7 ^ *(_QWORD *)(a2 + v4)) - 0x101010101010101i64) & 0x8080808080808080ui64) != 0 )
break;
if ( (~(v7 ^ *(_QWORD *)(a2 + v4 + 8)) & ((v7 ^ *(_QWORD *)(a2 + v4 + 8)) - 0x101010101010101i64) & 0x8080808080808080ui64) != 0 )
break;
v4 += 16i64;
}
while ( v4 <= v6 );
if ( v4 > a3 )
sub_14001D030(v4, a3, (__int64)&off_140021C78);
}
result = 0i64;
if ( v4 != a3 )
{
while ( *(_BYTE *)(a2 + v4) != a1 )
{
if ( a3 == ++v4 )
return result;
}
return 1i64;
}
return result;
}
// 140021C78: using guessed type void *off_140021C78;
//----- (0000000140018B20) ----------------------------------------------------
__int64 __fastcall sub_140018B20(unsigned __int8 a1, __int64 a2, unsigned __int64 a3)
{
unsigned __int64 v4; // rax
unsigned __int64 v5; // r9
unsigned __int64 v6; // r8
bool v7; // cf
unsigned __int64 v8; // r9
_BYTE *v9; // rsi
__int64 i; // r10
bool v11; // zf
__int64 v12; // r8
unsigned __int64 v13; // r10
__int64 result; // rax
v4 = ((a2 + 7) & 0xFFFFFFFFFFFFFFF8ui64) - a2;
v5 = ((_BYTE)a3 - (_BYTE)v4) & 0xF;
v6 = 0i64;
v7 = a3 < v4;
if ( a3 <= v4 )
v4 = a3;
if ( !v7 )
v6 = v5;
v8 = a3 - v6;
if ( a3 < v6 )
sub_14001D030(v8, a3, (__int64)&off_140021C90);
v9 = (_BYTE *)(a3 + a2 - 1);
for ( i = 0i64; v6 != i; ++i )
{
v11 = *v9-- == a1;
if ( v11 )
return 1i64;
}
v12 = 0x101010101010101i64 * a1;
do
{
v13 = v8;
if ( v8 <= v4 )
break;
if ( (~(v12 ^ *(_QWORD *)(a2 + v8 - 16)) & ((v12 ^ *(_QWORD *)(a2 + v8 - 16)) - 0x101010101010101i64) & 0x8080808080808080ui64) != 0 )
break;
v8 -= 16i64;
}
while ( (~(v12 ^ *(_QWORD *)(a2 + v13 - 8)) & ((v12 ^ *(_QWORD *)(a2 + v13 - 8)) - 0x101010101010101i64) & 0x8080808080808080ui64) == 0 );
if ( v13 > a3 )
sub_14001D040(v13, a3, (__int64)&off_140021CA8);
result = 0i64;
while ( v13 )
{
v11 = *(_BYTE *)(a2 + v13-- - 1) == a1;
if ( v11 )
return 1i64;
}
return result;
}
// 140021C90: using guessed type void *off_140021C90;
// 140021CA8: using guessed type void *off_140021CA8;
//----- (0000000140018C60) ----------------------------------------------------
void __fastcall __noreturn sub_140018C60(__int64 a1, __int64 a2, __int64 a3)
{
__int64 v3; // [rsp+28h] [rbp-60h] BYREF
__int64 v4; // [rsp+30h] [rbp-58h] BYREF
__int64 v5[4]; // [rsp+38h] [rbp-50h] BYREF
__int64 v6[6]; // [rsp+58h] [rbp-30h] BYREF
v3 = a1;
v4 = a2;
v5[0] = (__int64)&v3;
v5[1] = (__int64)sub_14001AD00;
v5[2] = (__int64)&v4;
v5[3] = (__int64)sub_14001AD00;
v6[2] = (__int64)&off_140021CF8;
v6[3] = 2i64;
v6[0] = 0i64;
v6[4] = (__int64)v5;
v6[5] = 2i64;
sub_14001CBB0((__int64)v6, a3);
}
// 140021CF8: using guessed type char *off_140021CF8;
//----- (0000000140018CE0) ----------------------------------------------------
void __fastcall __noreturn sub_140018CE0(__int64 a1, __int64 a2, __int64 a3)
{
__int64 v3; // [rsp+28h] [rbp-60h] BYREF
__int64 v4; // [rsp+30h] [rbp-58h] BYREF
__int64 v5[4]; // [rsp+38h] [rbp-50h] BYREF
__int64 v6[6]; // [rsp+58h] [rbp-30h] BYREF
v3 = a1;
v4 = a2;
v5[0] = (__int64)&v3;
v5[1] = (__int64)sub_14001AD00;
v5[2] = (__int64)&v4;
v5[3] = (__int64)sub_14001AD00;
v6[2] = (__int64)&off_140021D28;
v6[3] = 2i64;
v6[0] = 0i64;
v6[4] = (__int64)v5;
v6[5] = 2i64;
sub_14001CBB0((__int64)v6, a3);
}
// 140021D28: using guessed type void *off_140021D28;
//----- (0000000140018D60) ----------------------------------------------------
void __fastcall __noreturn sub_140018D60(__int64 a1, __int64 a2, __int64 a3)
{
__int64 v3; // [rsp+28h] [rbp-60h] BYREF
__int64 v4; // [rsp+30h] [rbp-58h] BYREF
__int64 v5[4]; // [rsp+38h] [rbp-50h] BYREF
__int64 v6[6]; // [rsp+58h] [rbp-30h] BYREF
v3 = a1;
v4 = a2;
v5[0] = (__int64)&v3;
v5[1] = (__int64)sub_14001AD00;
v5[2] = (__int64)&v4;
v5[3] = (__int64)sub_14001AD00;
v6[2] = (__int64)&off_140021D70;
v6[3] = 2i64;
v6[0] = 0i64;
v6[4] = (__int64)v5;
v6[5] = 2i64;
sub_14001CBB0((__int64)v6, a3);
}
// 140021D70: using guessed type char *off_140021D70;
//----- (0000000140018DE0) ----------------------------------------------------
__int64 __fastcall sub_140018DE0(__int64 a1, __int64 a2, unsigned __int64 a3)
{
__int64 result; // rax
unsigned __int64 v4; // r9
__int64 v5; // r10
unsigned __int64 v6; // rcx
unsigned __int64 v7; // rbx
int v8; // ebp
char v9; // di
unsigned __int64 v10; // r14
char v11; // bp
char v12; // bp
__int64 v13; // rcx
result = a1;
v4 = 0i64;
if ( a3 >= 0xF )
v4 = a3 - 15;
if ( !a3 )
{
LABEL_53:
*(_QWORD *)(result + 8) = a2;
*(_QWORD *)(result + 16) = a3;
v13 = 0i64;
goto LABEL_54;
}
v5 = ((a2 + 7) & 0xFFFFFFFFFFFFFFF8ui64) - a2;
v6 = 0i64;
while ( 1 )
{
v7 = *(unsigned __int8 *)(a2 + v6);
if ( (v7 & 0x80u) == 0i64 )
{
if ( v5 == -1 || (((_BYTE)v5 - (_BYTE)v6) & 7) != 0 )
{
++v6;
}
else
{
for ( ; v6 < v4; v6 += 16i64 )
{
if ( (*(_QWORD *)(a2 + v6) & 0x8080808080808080ui64) != 0 )
break;
if ( (*(_QWORD *)(a2 + v6 + 8) & 0x8080808080808080ui64) != 0 )
break;
}
if ( v6 < a3 )
{
while ( *(char *)(a2 + v6) >= 0 )
{
if ( a3 == ++v6 )
goto LABEL_53;
}
}
}
goto LABEL_6;
}
v8 = byte_140021D90[v7];
v9 = 1;
if ( v8 == 4 )
{
if ( v6 + 1 >= a3 )
goto LABEL_56;
v11 = *(_BYTE *)(a2 + v6 + 1);
if ( (_DWORD)v7 == 240 )
{
if ( (unsigned __int8)(v11 + 112) >= 0x30u )
goto LABEL_57;
}
else if ( (_DWORD)v7 == 244 )
{
if ( v11 > -113 )
goto LABEL_57;
}
else if ( (unsigned __int8)(v7 + 15) > 2u || v11 >= -64 )
{
goto LABEL_57;
}
v7 = v6 + 2;
if ( v6 + 2 >= a3 )
goto LABEL_55;
if ( *(char *)(a2 + v7) > -65 )
goto LABEL_58;
v10 = v6 + 3;
if ( v6 + 3 >= a3 )
goto LABEL_55;
if ( *(char *)(a2 + v10) > -65 )
{
LOBYTE(v7) = 3;
goto LABEL_59;
}
goto LABEL_52;
}
if ( v8 == 3 )
break;
if ( v8 != 2 )
goto LABEL_57;
v10 = v6 + 1;
if ( v6 + 1 >= a3 )
{
LABEL_55:
v9 = 0;
goto LABEL_59;
}
LOBYTE(v7) = 1;
if ( *(char *)(a2 + v10) > -65 )
goto LABEL_59;
LABEL_52:
v6 = v10 + 1;
LABEL_6:
if ( v6 >= a3 )
goto LABEL_53;
}
if ( v6 + 1 >= a3 )
{
LABEL_56:
v9 = 0;
LABEL_57:
LOBYTE(v7) = 1;
goto LABEL_59;
}
v12 = *(_BYTE *)(a2 + v6 + 1);
if ( (_BYTE)v7 == 0xE0 )
{
if ( (v12 & 0xE0) != 0xA0 )
goto LABEL_57;
}
else if ( (_DWORD)v7 == 237 )
{
if ( v12 >= -96 )
goto LABEL_57;
}
else if ( (unsigned __int8)(v7 + 31) >= 0xCu )
{
LOBYTE(v7) = v7 & 0xFE;
if ( (_BYTE)v7 != 0xEE || v12 >= -64 )
goto LABEL_57;
}
else if ( v12 > -65 )
{
goto LABEL_57;
}
v10 = v6 + 2;
if ( v6 + 2 >= a3 )
goto LABEL_55;
if ( *(char *)(a2 + v10) <= -65 )
goto LABEL_52;
LABEL_58:
LOBYTE(v7) = 2;
LABEL_59:
*(_QWORD *)(result + 8) = v6;
*(_BYTE *)(result + 16) = v9;
*(_BYTE *)(result + 17) = v7;
v13 = 1i64;
LABEL_54:
*(_QWORD *)result = v13;
return result;
}
// 140021D90: using guessed type unsigned __int8 byte_140021D90[256];
//----- (0000000140018FF0) ----------------------------------------------------
unsigned __int64 __fastcall sub_140018FF0(_BYTE *a1, unsigned __int64 a2)
{
unsigned __int64 v2; // r10
unsigned __int64 v3; // r8
unsigned __int64 v4; // rdx
int v5; // eax
unsigned __int64 v6; // r9
unsigned __int64 result; // rax
_BYTE *v8; // r8
unsigned __int64 v9; // r9
__m128i v10; // xmm0
__int64 v11; // rax
__m128i si128; // xmm2
__m128i v13; // xmm3
__m128i v14; // xmm1
__m128i v15; // xmm4
__m128i v16; // xmm5
__m128i v17; // xmm1
_BYTE *v18; // rcx
_BYTE *v19; // r11
unsigned __int64 v20; // rsi
__m128i v21; // xmm0
__int64 v22; // r9
__m128i v23; // xmm2
__m128i v24; // xmm3
__m128i v25; // xmm1
__m128i v26; // xmm4
__m128i v27; // xmm5
__m128i v28; // xmm1
unsigned __int64 v29; // r10
__int64 v30; // rcx
unsigned __int64 v31; // rcx
unsigned __int64 v32; // r8
__m128i v33; // xmm1
unsigned __int64 v34; // rcx
const __m128i *v35; // r11
unsigned __int64 v36; // rbx
int v37; // edi
__int64 v38; // rsi
__int64 v39; // rdx
const __m128i *v40; // r14
__m128i v41; // xmm2
__m128i v42; // xmm3
__m128i v43; // xmm2
unsigned __int64 v44; // rdx
v2 = ((unsigned __int64)(a1 + 7) & 0xFFFFFFFFFFFFFFF8ui64) - (_QWORD)a1;
if ( v2 > a2 || v2 > 8 || (v3 = a2 - v2, a2 - v2 < 8) )
{
if ( !a2 )
return 0i64;
if ( a2 >= 4 )
{
v9 = a2 & 0xFFFFFFFFFFFFFFFCui64;
v8 = &a1[a2 & 0xFFFFFFFFFFFFFFFCui64];
v10 = 0i64;
v11 = 0i64;
si128 = _mm_load_si128((const __m128i *)&xmmword_1400216E0);
v13 = _mm_load_si128((const __m128i *)&xmmword_1400216F0);
v14 = 0i64;
do
{
v15 = _mm_cmpgt_epi8(_mm_cvtsi32_si128(*(unsigned __int16 *)&a1[v11]), si128);
v10 = _mm_add_epi64(
v10,
_mm_and_si128(_mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v15, v15), 212), 212), v13));
v16 = _mm_cmpgt_epi8(_mm_cvtsi32_si128(*(unsigned __int16 *)&a1[v11 + 2]), si128);
v14 = _mm_add_epi64(
v14,
_mm_and_si128(_mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v16, v16), 212), 212), v13));
v11 += 4i64;
}
while ( v9 != v11 );
v17 = _mm_add_epi64(v14, v10);
result = _mm_add_epi64(_mm_shuffle_epi32(v17, 238), v17).m128i_u64[0];
if ( v9 == a2 )
return result;
}
else
{
result = 0i64;
v8 = a1;
}
v18 = &a1[a2];
do
result += *v8++ >= 0xC0;
while ( v8 != v18 );
return result;
}
v4 = (unsigned __int64)(a1 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
v5 = v3 & 7;
if ( (_BYTE *)v4 == a1 )
{
v6 = 0i64;
goto LABEL_22;
}
if ( v2 < 4 )
{
v6 = 0i64;
v19 = a1;
do
LABEL_21:
v6 += *v19++ >= 0xC0;
while ( v19 != (_BYTE *)v4 );
goto LABEL_22;
}
v20 = v2 & 0xC;
v19 = &a1[v2 & 0xFFFFFFFFFFFFFFFCui64];
v21 = 0i64;
v22 = 0i64;
v23 = _mm_load_si128((const __m128i *)&xmmword_1400216E0);
v24 = _mm_load_si128((const __m128i *)&xmmword_1400216F0);
v25 = 0i64;
do
{
v26 = _mm_cmpgt_epi8(_mm_cvtsi32_si128(*(unsigned __int16 *)&a1[v22]), v23);
v21 = _mm_add_epi64(
v21,
_mm_and_si128(_mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v26, v26), 212), 212), v24));
v27 = _mm_cmpgt_epi8(_mm_cvtsi32_si128(*(unsigned __int16 *)&a1[v22 + 2]), v23);
v25 = _mm_add_epi64(
v25,
_mm_and_si128(_mm_shuffle_epi32(_mm_shufflelo_epi16(_mm_unpacklo_epi8(v27, v27), 212), 212), v24));
v22 += 4i64;
}
while ( v20 != v22 );
v28 = _mm_add_epi64(v25, v21);
v6 = _mm_add_epi64(_mm_shuffle_epi32(v28, 238), v28).m128i_u64[0];
if ( v2 != v20 )
goto LABEL_21;
LABEL_22:
if ( (v3 & 7) != 0 )
{
v29 = v3 & 0xFFFFFFFFFFFFFFF8ui64;
v30 = *(_BYTE *)(v4 + (v3 & 0xFFFFFFFFFFFFFFF8ui64)) >= 0xC0;
if ( v5 != 1 )
{
v30 += *(_BYTE *)(v4 + v29 + 1) >= 0xC0;
if ( v5 != 2 )
{
v30 += *(_BYTE *)(v4 + v29 + 2) >= 0xC0;
if ( v5 != 3 )
{
v30 += *(_BYTE *)(v4 + v29 + 3) >= 0xC0;
if ( v5 != 4 )
{
v30 += *(_BYTE *)(v4 + v29 + 4) >= 0xC0;
if ( v5 != 5 )
{
v30 += *(_BYTE *)(v4 + v29 + 5) >= 0xC0;
if ( v5 != 6 )
v30 += *(_BYTE *)(v4 + v29 + 6) >= 0xC0;
}
}
}
}
}
}
else
{
v30 = 0i64;
}
v31 = v6 + v30;
v32 = v3 >> 3;
v33 = _mm_load_si128((const __m128i *)&xmmword_140021700);
while ( 1 )
{
result = v31;
if ( !v32 )
break;
v35 = (const __m128i *)v4;
v36 = 192i64;
if ( v32 < 0xC0 )
v36 = v32;
v37 = v36 & 3;
v38 = (unsigned __int8)v36 & 0xFC;
if ( (v36 & 0xFC) != 0 )
{
v39 = 32 * (v36 >> 2);
v34 = 0i64;
v40 = v35;
do
{
if ( !v40 )
break;
v41 = _mm_loadu_si128(v40);
v42 = _mm_loadu_si128(v40 + 1);
v40 += 2;
v43 = _mm_add_epi64(
_mm_and_si128(
_mm_or_si128(_mm_srli_epi64(v41, 6u), _mm_srli_epi64(_mm_xor_si128(v41, (__m128i)-1i64), 7u)),
v33),
_mm_and_si128(
_mm_or_si128(_mm_srli_epi64(v42, 6u), _mm_srli_epi64(_mm_xor_si128(v42, (__m128i)-1i64), 7u)),
v33));
v34 += _mm_add_epi64(_mm_shuffle_epi32(v43, 238), v43).m128i_u64[0];
v39 -= 32i64;
}
while ( v39 );
}
else
{
v34 = 0i64;
}
v4 = (unsigned __int64)v35 + 8 * v36;
v32 -= v36;
v31 = result + ((0x1000100010001i64 * ((v34 & 0xFF00FF00FF00FFi64) + ((v34 >> 8) & 0xFF00FF00FF00FFi64))) >> 48);
if ( (v36 & 3) != 0 )
{
if ( v35 )
{
v44 = (((unsigned __int64)~v35->m128i_i64[v38] >> 7) | ((unsigned __int64)v35->m128i_i64[v38] >> 6)) & 0x101010101010101i64;
if ( v37 != 1 )
{
v44 += (((unsigned __int64)~v35->m128i_i64[v38 + 1] >> 7) | ((unsigned __int64)v35->m128i_i64[v38 + 1] >> 6)) & 0x101010101010101i64;
if ( v37 != 2 )
v44 += (((unsigned __int64)~v35[1].m128i_i64[v38] >> 7) | ((unsigned __int64)v35[1].m128i_i64[v38] >> 6)) & 0x101010101010101i64;
}
}
else
{
v44 = 0i64;
}
return v31 + ((0x1000100010001i64 * ((v44 & 0xFF00FF00FF00FFi64) + ((v44 >> 8) & 0x700FF00FF00FFi64))) >> 48);
}
}
return result;
}
// 140019121: mask 0xFFFFFFFFFFFFFFFC is shortened because r10.8 <= 0x8
// 1400216E0: using guessed type __int128 xmmword_1400216E0;
// 1400216F0: using guessed type __int128 xmmword_1400216F0;
// 140021700: using guessed type __int128 xmmword_140021700;
//----- (00000001400194E0) ----------------------------------------------------
__int64 __fastcall sub_1400194E0(__int64 a1, __int64 a2, __int64 a3, _BYTE *a4, unsigned __int64 a5)
{
__int64 v7; // r15
unsigned __int64 v9; // r12
unsigned __int64 v10; // rax
__int64 v11; // rdx
size_t v12; // r13
unsigned __int64 v13; // rdx
size_t v14; // r12
__int64 v15; // rax
_BYTE *v16; // rdx
__int64 v17; // r10
__int64 v18; // r9
__int64 v19; // r8
__int64 v20; // rcx
unsigned __int64 v21; // rcx
unsigned __int8 v22; // cl
__int64 v23; // r8
__int64 v24; // r10
__int64 v25; // r11
__int64 v26; // r10
__int64 v27; // r9
__int64 v28; // rcx
unsigned __int8 v29; // cl
__int64 v30; // r9
__int64 v31; // r11
__int64 v32; // r9
__int64 v33; // r10
__int64 v34; // r11
unsigned __int64 v35; // rdx
__int64 v36; // rbp
unsigned __int64 v37; // rax
unsigned __int8 v38; // al
__int64 v39; // r10
__int64 v40; // rax
__int64 v41; // r15
__int64 v42; // r11
__int64 v43; // rbp
unsigned __int64 v44; // r10
__int64 v45; // r9
unsigned __int8 v46; // al
__int64 v47; // r11
__int64 v48; // rax
size_t v49; // rcx
_BYTE *v50; // r9
unsigned __int64 v51; // r8
__int64 v52; // rax
char v53; // r9
__int64 v54; // r8
__int64 v55; // r8
__int64 v56; // rdx
unsigned __int64 v57; // r8
__int64 v58; // rax
char v59; // r10
__int64 v60; // r10
char **v62; // r8
char **v63; // r8
__int64 v64; // rcx
__int64 v65; // [rsp+20h] [rbp-48h]
v7 = a2;
if ( !a5 )
{
*(_QWORD *)a1 = a2;
*(_QWORD *)(a1 + 8) = a3;
*(_QWORD *)(a1 + 16) = a4;
*(_OWORD *)(a1 + 24) = 0i64;
*(_QWORD *)(a1 + 40) = 0i64;
*(_QWORD *)(a1 + 48) = a3;
*(_WORD *)(a1 + 56) = 257;
*(_BYTE *)(a1 + 58) = 0;
return a1;
}
if ( a5 != 1 )
{
v17 = 1i64;
v10 = 0i64;
v18 = 1i64;
v19 = 0i64;
v9 = 1i64;
do
{
v21 = v19 + v10;
if ( v19 + v10 >= a5 )
goto LABEL_85;
v22 = a4[v21];
if ( a4[v17] < v22 )
{
v20 = v18 + v19 + 1;
v9 = v20 - v10;
v19 = 0i64;
}
else if ( a4[v17] == v22 )
{
v23 = v19 + 1;
v24 = v23;
if ( v23 == v9 )
v24 = 0i64;
else
v23 = 0i64;
v20 = v18 + v23;
v19 = v24;
}
else
{
v20 = v18 + 1;
v9 = 1i64;
v19 = 0i64;
v10 = v18;
}
v17 = v20 + v19;
v18 = v20;
}
while ( v20 + v19 < a5 );
v25 = 1i64;
v12 = 0i64;
v26 = 1i64;
v27 = 0i64;
v11 = 1i64;
while ( 1 )
{
v21 = v27 + v12;
if ( v27 + v12 >= a5 )
break;
v29 = a4[v21];
if ( a4[v25] > v29 )
{
v28 = v26 + v27 + 1;
v11 = v28 - v12;
v27 = 0i64;
}
else if ( a4[v25] == v29 )
{
v30 = v27 + 1;
v31 = v30;
if ( v30 == v11 )
v31 = 0i64;
else
v30 = 0i64;
v28 = v26 + v30;
v27 = v31;
}
else
{
v28 = v26 + 1;
v11 = 1i64;
v27 = 0i64;
v12 = v26;
}
v25 = v28 + v27;
v26 = v28;
if ( v28 + v27 >= a5 )
goto LABEL_4;
}
LABEL_85:
v62 = &off_140021F38;
goto LABEL_88;
}
v9 = 1i64;
v10 = 0i64;
v11 = 1i64;
v12 = 0i64;
LABEL_4:
if ( v10 > v12 )
v12 = v10;
else
v9 = v11;
if ( v12 > a5 )
{
v63 = &off_140021EF0;
v64 = v12;
goto LABEL_93;
}
v13 = v12 + v9;
if ( __CFADD__(v12, v9) )
sub_14001D050(v9, v13, (__int64)&off_140021F08);
if ( v13 > a5 )
{
v63 = &off_140021F08;
v64 = v12 + v9;
goto LABEL_93;
}
if ( memcmp(a4, &a4[v9], v12) )
{
v14 = a5 - v12;
if ( v12 > a5 - v12 )
v14 = v12;
if ( a5 - 1 >= 3 )
{
v51 = a5 & 0xFFFFFFFFFFFFFFFCui64;
v15 = 0i64;
v16 = a4;
do
{
v52 = v15 | (1i64 << *v16) | (1i64 << v16[1]) | (1i64 << v16[2]);
v53 = v16[3];
v16 += 4;
v15 = v52 | (1i64 << v53);
v51 -= 4i64;
}
while ( v51 );
}
else
{
v15 = 0i64;
v16 = a4;
}
if ( (a5 & 3) != 0 )
{
v54 = 0i64;
do
v15 |= 1i64 << v16[v54++];
while ( (a5 & 3) != v54 );
}
v9 = v14 + 1;
v55 = -1i64;
v56 = -1i64;
v49 = v12;
goto LABEL_83;
}
v32 = 1i64;
v33 = 0i64;
v34 = 1i64;
v35 = 0i64;
while ( v34 + v33 < a5 )
{
v21 = ~v34 + a5 - v33;
if ( v21 >= a5 )
{
LABEL_86:
v62 = &off_140021F50;
goto LABEL_88;
}
v37 = a5 + ~v33 - v35;
if ( v37 >= a5 )
{
LABEL_87:
v62 = &off_140021F68;
v21 = v37;
LABEL_88:
sub_14001CD00(v21, a5, (__int64)v62);
}
v38 = a4[v37];
if ( a4[v21] < v38 )
{
v36 = v33 + v34 + 1;
v32 = v36 - v35;
v33 = 0i64;
LABEL_40:
v34 = v36;
if ( v32 == v9 )
break;
}
else
{
if ( a4[v21] == v38 )
{
v39 = v33 + 1;
v40 = v39;
if ( v39 == v32 )
v40 = 0i64;
else
v39 = 0i64;
v36 = v34 + v39;
v33 = v40;
goto LABEL_40;
}
v32 = 1i64;
v33 = 0i64;
v35 = v34++;
if ( v9 == 1 )
break;
}
}
v65 = v7;
v41 = 1i64;
v42 = 0i64;
v43 = 1i64;
v44 = 0i64;
while ( v42 + v43 < a5 )
{
v21 = ~v43 + a5 - v42;
if ( v21 >= a5 )
goto LABEL_86;
v37 = a5 + ~v42 - v44;
if ( v37 >= a5 )
goto LABEL_87;
v46 = a4[v37];
if ( a4[v21] > v46 )
{
v45 = v42 + v43 + 1;
v41 = v45 - v44;
v42 = 0i64;
LABEL_53:
v43 = v45;
if ( v41 == v9 )
break;
}
else
{
if ( a4[v21] == v46 )
{
v47 = v42 + 1;
v48 = v47;
if ( v47 == v41 )
v48 = 0i64;
else
v47 = 0i64;
v45 = v43 + v47;
v42 = v48;
goto LABEL_53;
}
v41 = 1i64;
v42 = 0i64;
v44 = v43++;
if ( v9 == 1 )
break;
}
}
if ( v35 > v44 )
v44 = v35;
if ( v9 > a5 )
{
v63 = &off_140021F20;
v64 = v9;
LABEL_93:
sub_14001D040(v64, a5, (__int64)v63);
}
v49 = a5 - v44;
v7 = v65;
if ( v9 )
{
if ( v9 >= 4 )
{
v57 = v9 & 0xFFFFFFFFFFFFFFFCui64;
v15 = 0i64;
v50 = a4;
do
{
v58 = v15 | (1i64 << *v50) | (1i64 << v50[1]) | (1i64 << v50[2]);
v59 = v50[3];
v50 += 4;
v15 = v58 | (1i64 << v59);
v57 -= 4i64;
}
while ( v57 );
}
else
{
v15 = 0i64;
v50 = a4;
}
v55 = 0i64;
if ( (v9 & 3) != 0 )
{
v60 = 0i64;
do
v15 |= 1i64 << v50[v60++];
while ( (v9 & 3) != v60 );
}
v56 = a5;
}
else
{
v55 = 0i64;
v56 = a5;
v15 = 0i64;
v9 = 0i64;
}
LABEL_83:
*(_QWORD *)a1 = v7;
*(_QWORD *)(a1 + 8) = a3;
*(_QWORD *)(a1 + 16) = a4;
*(_QWORD *)(a1 + 24) = a5;
*(_QWORD *)(a1 + 32) = 1i64;
*(_QWORD *)(a1 + 40) = v12;
*(_QWORD *)(a1 + 48) = v49;
*(_QWORD *)(a1 + 56) = v9;
*(_QWORD *)(a1 + 64) = v15;
*(_QWORD *)(a1 + 72) = 0i64;
*(_QWORD *)(a1 + 80) = a3;
*(_QWORD *)(a1 + 88) = v55;
*(_QWORD *)(a1 + 96) = v56;
return a1;
}
// 140021EF0: using guessed type char *off_140021EF0;
// 140021F08: using guessed type char *off_140021F08;
// 140021F20: using guessed type char *off_140021F20;
// 140021F38: using guessed type char *off_140021F38;
// 140021F50: using guessed type char *off_140021F50;
// 140021F68: using guessed type char *off_140021F68;
//----- (0000000140019A60) ----------------------------------------------------
void __fastcall __noreturn sub_140019A60(
char *a1,
unsigned __int64 a2,
unsigned __int64 a3,
unsigned __int64 a4,
__int64 a5)
{
unsigned __int64 v5; // rax
unsigned __int64 v6; // rax
unsigned __int64 v7; // r9
__int64 v8; // rax
char *v9; // r11
char *v10; // r8
char *v11; // r8
char *v12; // r8
char v13; // r9
__int64 v14; // rdx
int v15; // edx
int v16; // r11d
int v17; // r8d
unsigned int v18; // ecx
unsigned int v19; // [rsp+2Ch] [rbp-CCh] BYREF
char *v20; // [rsp+30h] [rbp-C8h] BYREF
unsigned __int64 v21; // [rsp+38h] [rbp-C0h]
__int64 v22[2]; // [rsp+40h] [rbp-B8h] BYREF
void **v23; // [rsp+50h] [rbp-A8h]
__int64 v24; // [rsp+58h] [rbp-A0h]
unsigned __int64 **v25; // [rsp+60h] [rbp-98h]
__int64 v26; // [rsp+68h] [rbp-90h]
unsigned __int64 *v27; // [rsp+70h] [rbp-88h] BYREF
__int64 (__fastcall *v28)(unsigned __int64 *, __int64); // [rsp+78h] [rbp-80h]
unsigned __int64 *v29; // [rsp+80h] [rbp-78h]
void *v30; // [rsp+88h] [rbp-70h]
const char **v31; // [rsp+90h] [rbp-68h]
void *v32; // [rsp+98h] [rbp-60h]
const char **v33; // [rsp+A0h] [rbp-58h]
__int64 (__fastcall *v34)(__int64, __int64 *); // [rsp+A8h] [rbp-50h]
const char **v35; // [rsp+B0h] [rbp-48h]
__int64 (__fastcall *v36)(__int64, __int64 *); // [rsp+B8h] [rbp-40h]
const char *v37; // [rsp+C0h] [rbp-38h] BYREF
__int64 v38; // [rsp+C8h] [rbp-30h]
__int64 v39[2]; // [rsp+D0h] [rbp-28h] BYREF
unsigned __int64 v40; // [rsp+E0h] [rbp-18h] BYREF
unsigned __int64 v41; // [rsp+E8h] [rbp-10h] BYREF
unsigned __int64 v42; // [rsp+F0h] [rbp-8h] BYREF
v40 = a3;
v41 = a4;
if ( a2 < 0x101 )
{
v20 = a1;
v21 = a2;
v37 = "from_str_radix_int: must lie in the range `[2, 36]` - found ";
v38 = 0i64;
if ( a3 > a2 )
goto LABEL_13;
}
else
{
v5 = 256i64;
if ( a1[256] <= -65 )
{
v5 = 255i64;
if ( a1[255] <= -65 )
{
v5 = 254i64;
if ( a1[254] <= -65 )
v5 = 253i64;
}
}
if ( a1[v5] <= -65 )
sub_14001D0B0(a1, a2, 0i64, v5, a5);
v20 = a1;
v21 = v5;
v37 = "[...]byte index is out of bounds of `";
v38 = 5i64;
if ( a3 > a2 )
{
LABEL_13:
if ( a3 > a2 )
a4 = a3;
v39[0] = a4;
v27 = (unsigned __int64 *)v39;
v28 = sub_14001AD00;
v29 = (unsigned __int64 *)&v20;
v30 = sub_14001AFA0;
v31 = &v37;
v32 = sub_14001AFA0;
v23 = &off_140021FA8;
v24 = 3i64;
v22[0] = 0i64;
v25 = &v27;
v26 = 3i64;
sub_14001CBB0((__int64)v22, a5);
}
}
if ( a4 > a2 )
goto LABEL_13;
if ( a3 > a4 )
{
v27 = &v40;
v28 = sub_14001AD00;
v29 = &v41;
v30 = sub_14001AD00;
v31 = (const char **)&v20;
v32 = sub_14001AFA0;
v33 = &v37;
v34 = sub_14001AFA0;
v23 = (void **)&off_140022000;
v24 = 4i64;
v22[0] = 0i64;
v25 = &v27;
v26 = 4i64;
sub_14001CBB0((__int64)v22, a5);
}
if ( a3 )
{
if ( a3 >= a2 )
{
if ( a3 != a2 )
goto LABEL_23;
}
else if ( a1[a3] < -64 )
{
LABEL_23:
v42 = a3;
v6 = a2;
if ( a3 < a2 )
{
v7 = 0i64;
if ( a3 >= 3 )
v7 = a3 - 3;
v8 = a3 + 1;
if ( a3 + 1 < v7 )
sub_14001D050(v7, v8, (__int64)&off_1400220E8);
if ( a3 + 1 != v7 )
{
v9 = &a1[v7];
v8 -= v7;
if ( a1[a3] <= -65 )
{
if ( v7 != a3 )
{
v10 = &a1[a3];
if ( *(v10 - 1) <= -65 )
{
v11 = v10 - 1;
if ( v9 != v11 )
{
if ( *(v11 - 1) <= -65 )
{
v12 = v11 - 1;
if ( v9 != v12 )
{
if ( *(v12 - 1) <= -65 )
{
if ( v9 != v12 - 1 )
v8 -= 5i64;
}
else
{
v8 -= 4i64;
}
}
}
else
{
v8 -= 3i64;
}
}
}
else
{
v8 -= 2i64;
}
}
}
else
{
--v8;
}
}
v6 = v7 + v8;
}
if ( v6 )
{
if ( v6 >= a2 )
{
if ( v6 != a2 )
LABEL_46:
sub_14001D0B0(a1, a2, v6, a2, a5);
}
else if ( a1[v6] <= -65 )
{
goto LABEL_46;
}
}
if ( v6 == a2 )
LABEL_49:
sub_14001CC50((__int64)"called `Option::unwrap()` on a `None` value", 43i64, a5);
v13 = a1[v6];
if ( v13 < 0 )
{
v15 = v13 & 0x1F;
v16 = a1[v6 + 1] & 0x3F;
if ( (unsigned __int8)v13 <= 0xDFu )
{
v18 = v16 | (v15 << 6);
}
else
{
v17 = (v16 << 6) | a1[v6 + 2] & 0x3F;
if ( (unsigned __int8)v13 < 0xF0u )
{
v18 = (v15 << 12) | v17;
}
else
{
v18 = ((v13 & 7) << 18) | (v17 << 6) | a1[v6 + 3] & 0x3F;
if ( v18 == 1114112 )
goto LABEL_49;
}
}
v19 = v18;
v14 = 1i64;
if ( v18 >= 0x80 )
{
v14 = 2i64;
if ( v18 > 0x7FF )
v14 = 4i64 - (v18 < 0x10000);
}
}
else
{
v19 = (unsigned __int8)v13;
v14 = 1i64;
}
v39[0] = v6;
v39[1] = v6 + v14;
v27 = &v42;
v28 = sub_14001AD00;
v29 = (unsigned __int64 *)&v19;
v30 = sub_140018410;
v31 = (const char **)v39;
v32 = sub_1400165E0;
v33 = (const char **)&v20;
v34 = sub_14001AFA0;
v35 = &v37;
v36 = sub_14001AFA0;
v23 = &off_140022078;
v24 = 5i64;
v22[0] = 0i64;
v25 = &v27;
v26 = 5i64;
sub_14001CBB0((__int64)v22, a5);
}
}
a3 = a4;
goto LABEL_23;
}
// 140021FA8: using guessed type void *off_140021FA8;
// 140022000: using guessed type char *off_140022000;
// 140022078: using guessed type void *off_140022078;
// 1400220E8: using guessed type char *off_1400220E8;
//----- (0000000140019F10) ----------------------------------------------------
char __fastcall sub_140019F10(
int a1,
_BYTE *a2,
__int64 a3,
__int64 a4,
unsigned __int64 a5,
unsigned __int8 *a6,
__int64 a7)
{
_BYTE *v7; // rax
_BYTE *v8; // r8
unsigned __int64 v9; // r11
_BYTE *v10; // rbx
__int64 v11; // rdi
unsigned __int64 v12; // r10
__int64 v13; // r11
__int64 v14; // rbx
unsigned __int8 *v16; // r8
unsigned __int8 *v17; // rdx
int v18; // r9d
int v19; // r10d
char v20; // al
if ( a3 )
{
v7 = a2;
v8 = &a2[2 * a3];
v9 = 0i64;
do
{
v10 = v7;
v11 = (unsigned __int8)v7[1];
v7 += 2;
v12 = v9 + v11;
if ( *v10 == BYTE1(a1) )
{
if ( v12 < v9 )
sub_14001D050(v9, v9 + v11, (__int64)&off_140022128);
if ( v12 > a5 )
sub_14001D040(v9 + v11, a5, (__int64)&off_140022128);
v13 = a4 + v9;
v14 = 0i64;
while ( v11 != v14 )
{
if ( *(_BYTE *)(v13 + v14++) == (unsigned __int8)a1 )
{
v20 = 0;
return v20 & 1;
}
}
}
else if ( *v10 > BYTE1(a1) )
{
break;
}
v9 = v12;
}
while ( v7 != v8 );
}
if ( a7 )
{
v16 = a6;
v17 = &a6[a7];
a1 = (unsigned __int16)a1;
v20 = 1;
while ( 1 )
{
v18 = *v16;
if ( (v18 & 0x80u) != 0 )
{
if ( v16 + 1 == v17 )
sub_14001CC50((__int64)"called `Option::unwrap()` on a `None` value", 43i64, (__int64)&off_140022140);
v19 = v16[1];
v16 += 2;
a1 -= v19 | ((v18 & 0x7F) << 8);
if ( a1 < 0 )
return v20 & 1;
}
else
{
++v16;
a1 -= v18;
if ( a1 < 0 )
return v20 & 1;
}
v20 ^= 1u;
if ( v16 == v17 )
return v20 & 1;
}
}
v20 = 1;
return v20 & 1;
}
// 140022128: using guessed type char *off_140022128;
// 140022140: using guessed type char *off_140022140;
//----- (000000014001A050) ----------------------------------------------------
char __fastcall sub_14001A050(unsigned int a1)
{
char result; // al
if ( a1 < 0x20 )
return 0;
result = 1;
if ( a1 >= 0x7F )
{
if ( a1 >= 0x10000 )
{
if ( a1 >= 0x20000 )
{
result = 0;
if ( !_mm_movemask_ps((__m128)_mm_cmpgt_epi32(
_mm_load_si128((const __m128i *)&xmmword_140021730),
_mm_xor_si128(
_mm_add_epi32(
_mm_shuffle_epi32(_mm_cvtsi32_si128(a1), 0),
(__m128i)xmmword_140021710),
(__m128i)xmmword_140021720)))
&& a1 - 201547 >= 5
&& a1 - 205744 >= 0xADD50
&& (a1 & 0xFFFFFFE0) != 173792
&& (a1 & 0xFFFFFFFE) != 178206 )
{
return a1 - 1114112 < 0xFFFD01F0;
}
}
else
{
return sub_140019F10(a1, byte_1400223F6, 44i64, (__int64)&unk_14002244E, 0xC4ui64, byte_140022512, 450i64);
}
}
else
{
return sub_140019F10(a1, byte_140022158, 40i64, (__int64)&unk_1400221A8, 0x11Fui64, byte_1400222C7, 303i64);
}
}
return result;
}
// 140021710: using guessed type __int128 xmmword_140021710;
// 140021720: using guessed type __int128 xmmword_140021720;
// 140021730: using guessed type __int128 xmmword_140021730;
// 140022158: using guessed type _BYTE byte_140022158[80];
// 1400222C7: using guessed type unsigned __int8 byte_1400222C7[303];
// 1400223F6: using guessed type _BYTE byte_1400223F6[88];
// 140022512: using guessed type unsigned __int8 byte_140022512[450];
//----- (000000014001A180) ----------------------------------------------------
char __fastcall sub_14001A180(__int64 a1, _QWORD *a2)
{
char v3; // al
char result; // al
char *v5; // rdx
__int64 v6; // r8
_QWORD *v7; // [rsp+28h] [rbp-20h] BYREF
char v8; // [rsp+30h] [rbp-18h]
char v9; // [rsp+31h] [rbp-17h]
__int64 v10; // [rsp+38h] [rbp-10h] BYREF
v10 = a1;
v3 = (*(__int64 (__fastcall **)(_QWORD, const char *, __int64))(a2[1] + 24i64))(*a2, "ParseIntError", 13i64);
v7 = a2;
v8 = v3;
v9 = 0;
sub_140016B60(&v7, (__int64)&unk_140022720, 4ui64, (__int64)&v10, (__int64)&off_140022740);
if ( !v9 )
return v8 != 0;
result = 1;
if ( !v8 )
{
if ( (v7[6] & 4) != 0 )
{
v5 = "} }(\n(,\n";
v6 = 1i64;
}
else
{
v5 = " }(\n(,\n";
v6 = 2i64;
}
return (*(__int64 (__fastcall **)(_QWORD, char *, __int64))(v7[1] + 24i64))(*v7, v5, v6);
}
return result;
}
// 140022740: using guessed type __int64 (__fastcall *off_140022740)();
//----- (000000014001A250) ----------------------------------------------------
__int64 __fastcall sub_14001A250(__int64 a1, unsigned __int8 *a2, unsigned __int64 a3)
{
unsigned __int8 *v3; // r9
int v4; // eax
__int64 v5; // rdx
__int64 v6; // rax
unsigned int v7; // r10d
char v8; // al
__int64 v9; // r10
unsigned __int128 v10; // rax
unsigned int v11; // edi
bool v12; // cf
if ( !a3 )
{
*(_BYTE *)(a1 + 1) = 0;
goto LABEL_20;
}
v3 = a2;
v4 = *a2;
if ( v4 == 45 )
{
if ( a3 != 1 )
goto LABEL_9;
goto LABEL_8;
}
if ( v4 == 43 )
{
if ( --a3 )
{
v3 = a2 + 1;
goto LABEL_9;
}
LABEL_8:
*(_BYTE *)(a1 + 1) = 1;
goto LABEL_20;
}
LABEL_9:
if ( a3 < 0x11 )
{
v5 = 0i64;
v6 = 0i64;
while ( 1 )
{
v7 = v3[v5] - 48;
if ( v7 > 9 )
goto LABEL_8;
v6 = v7 + 10 * v6;
if ( a3 == ++v5 )
goto LABEL_13;
}
}
v9 = 0i64;
v6 = 0i64;
do
{
if ( a3 == v9 )
{
LABEL_13:
*(_QWORD *)(a1 + 8) = v6;
v8 = 0;
goto LABEL_21;
}
v10 = 0xA * (unsigned __int128)(unsigned __int64)v6;
BYTE8(v10) = *((_QWORD *)&v10 + 1) != 0i64;
v11 = v3[v9] - 48;
if ( v11 >= 0xA )
goto LABEL_8;
if ( BYTE8(v10) )
break;
++v9;
v12 = __CFADD__(v11, (_QWORD)v10);
v6 = v11 + (_QWORD)v10;
}
while ( !v12 );
*(_BYTE *)(a1 + 1) = 2;
LABEL_20:
v8 = 1;
LABEL_21:
*(_BYTE *)a1 = v8;
return a1;
}
//----- (000000014001A310) ----------------------------------------------------
__int64 __fastcall sub_14001A310(unsigned __int8 *a1, __int64 a2)
{
unsigned __int8 v2; // cl
char *v3; // r8
__int64 v4; // rax
unsigned __int8 v5; // r10
char v6; // si
bool v7; // cc
char v9; // [rsp+B0h] [rbp-8h] BYREF
v2 = *a1;
v3 = &v9;
v4 = 0i64;
v5 = v2;
do
{
v5 >>= 4;
v6 = 87;
if ( (v2 & 0xFu) < 0xA )
v6 = 48;
*--v3 = (v2 & 0xF) + v6;
++v4;
v7 = v2 <= 0xFu;
v2 = v5;
}
while ( !v7 );
if ( (unsigned __int64)(128 - v4) >= 0x81 )
sub_14001D030(128 - v4, 128i64, (__int64)&off_140021AF0);
return sub_1400174B0(
a2,
1,
"0x00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525"
"354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899",
2ui64,
(__int64)v3,
v4);
}
// 140021AF0: using guessed type void *off_140021AF0;
//----- (000000014001A3B0) ----------------------------------------------------
__int64 __fastcall sub_14001A3B0(unsigned __int8 *a1, __int64 a2)
{
unsigned __int8 v2; // cl
char *v3; // r8
__int64 v4; // rax
unsigned __int8 v5; // r10
char v6; // si
bool v7; // cc
char v9; // [rsp+B0h] [rbp-8h] BYREF
v2 = *a1;
v3 = &v9;
v4 = 0i64;
v5 = v2;
do
{
v5 >>= 4;
v6 = 55;
if ( (v2 & 0xFu) < 0xA )
v6 = 48;
*--v3 = (v2 & 0xF) + v6;
++v4;
v7 = v2 <= 0xFu;
v2 = v5;
}
while ( !v7 );
if ( (unsigned __int64)(128 - v4) >= 0x81 )
sub_14001D030(128 - v4, 128i64, (__int64)&off_140021AF0);
return sub_1400174B0(
a2,
1,
"0x00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525"
"354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899",
2ui64,
(__int64)v3,
v4);
}
// 140021AF0: using guessed type void *off_140021AF0;
//----- (000000014001A450) ----------------------------------------------------
__int64 __fastcall sub_14001A450(unsigned int *a1, __int64 a2)
{
unsigned int v2; // ecx
char *v3; // r9
__int64 v4; // rax
unsigned int v5; // r10d
char v6; // si
bool v7; // cc
char v9; // [rsp+B0h] [rbp-8h] BYREF
v2 = *a1;
v3 = &v9;
v4 = 0i64;
v5 = v2;
do
{
v5 >>= 4;
v6 = 55;
if ( (v2 & 0xF) < 0xA )
v6 = 48;
*--v3 = (v2 & 0xF) + v6;
++v4;
v7 = v2 <= 0xF;
v2 = v5;
}
while ( !v7 );
if ( (unsigned __int64)(128 - v4) >= 0x81 )
sub_14001D030(128 - v4, 128i64, (__int64)&off_140021AF0);
return sub_1400174B0(
a2,
1,
"0x00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525"
"354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899",
2ui64,
(__int64)v3,
v4);
}
// 140021AF0: using guessed type void *off_140021AF0;
//----- (000000014001A4F0) ----------------------------------------------------
__int64 __fastcall sub_14001A4F0(unsigned __int64 *a1, __int64 a2)
{
unsigned __int64 v2; // rcx
char *v3; // r9
__int64 v4; // rax
unsigned __int64 v5; // r10
char v6; // si
bool v7; // cc
char v9; // [rsp+B0h] [rbp-8h] BYREF
v2 = *a1;
v3 = &v9;
v4 = 0i64;
v5 = v2;
do
{
v5 >>= 4;
v6 = 87;
if ( (v2 & 0xF) < 0xA )
v6 = 48;
*--v3 = (v2 & 0xF) + v6;
++v4;
v7 = v2 <= 0xF;
v2 = v5;
}
while ( !v7 );
if ( (unsigned __int64)(128 - v4) >= 0x81 )
sub_14001D030(128 - v4, 128i64, (__int64)&off_140021AF0);
return sub_1400174B0(
a2,
1,
"0x00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525"
"354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899",
2ui64,
(__int64)v3,
v4);
}
// 140021AF0: using guessed type void *off_140021AF0;
//----- (000000014001A590) ----------------------------------------------------
__int64 __fastcall sub_14001A590(unsigned __int64 *a1, __int64 a2)
{
unsigned __int64 v2; // rcx
char *v3; // r9
__int64 v4; // rax
unsigned __int64 v5; // r10
char v6; // si
bool v7; // cc
char v9; // [rsp+B0h] [rbp-8h] BYREF
v2 = *a1;
v3 = &v9;
v4 = 0i64;
v5 = v2;
do
{
v5 >>= 4;
v6 = 55;
if ( (v2 & 0xF) < 0xA )
v6 = 48;
*--v3 = (v2 & 0xF) + v6;
++v4;
v7 = v2 <= 0xF;
v2 = v5;
}
while ( !v7 );
if ( (unsigned __int64)(128 - v4) >= 0x81 )
sub_14001D030(128 - v4, 128i64, (__int64)&off_140021AF0);
return sub_1400174B0(
a2,
1,
"0x00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525"
"354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899",
2ui64,
(__int64)v3,
v4);
}
// 140021AF0: using guessed type void *off_140021AF0;
//----- (000000014001A630) ----------------------------------------------------
__int64 __fastcall sub_14001A630(unsigned __int8 *a1, __int64 a2)
{
int v2; // eax
unsigned __int64 v3; // rax
__int64 v4; // rcx
unsigned __int8 v5; // cl
char *v6; // r8
__int64 v7; // rax
unsigned __int8 v8; // r10
char v9; // si
bool v10; // cc
unsigned __int8 v11; // cl
unsigned __int8 v12; // r10
char v13; // si
char v15[37]; // [rsp+30h] [rbp-88h] BYREF
__int16 v16; // [rsp+55h] [rbp-63h]
char v17; // [rsp+B0h] [rbp-8h] BYREF
v2 = *(_DWORD *)(a2 + 48);
if ( (v2 & 0x10) != 0 )
{
v5 = *a1;
v6 = &v17;
v7 = 0i64;
v8 = v5;
do
{
v8 >>= 4;
v9 = 87;
if ( (v5 & 0xFu) < 0xA )
v9 = 48;
*--v6 = (v5 & 0xF) + v9;
++v7;
v10 = v5 <= 0xFu;
v5 = v8;
}
while ( !v10 );
}
else
{
if ( (v2 & 0x20) == 0 )
{
v3 = *a1;
if ( v3 <= 0x63 )
{
v4 = 38i64;
if ( (unsigned __int8)v3 >= 0xAu )
{
v16 = *(_WORD *)&a0x000102030405[2 * v3 + 2];
v4 = 37i64;
return sub_1400174B0(
a2,
1,
"from_str_radix_int: must lie in the range `[2, 36]` - found ",
0i64,
(__int64)&v15[v4],
39 - v4);
}
}
else
{
v16 = *(_WORD *)&a0x000102030405[2 * ((unsigned __int8)v3 % 0x64u) + 2];
v4 = 36i64;
LOBYTE(v3) = (unsigned __int8)v3 / 0x64u;
}
v15[v4] = v3 | 0x30;
return sub_1400174B0(
a2,
1,
"from_str_radix_int: must lie in the range `[2, 36]` - found ",
0i64,
(__int64)&v15[v4],
39 - v4);
}
v11 = *a1;
v6 = &v17;
v7 = 0i64;
v12 = v11;
do
{
v12 >>= 4;
v13 = 55;
if ( (v11 & 0xFu) < 0xA )
v13 = 48;
*--v6 = (v11 & 0xF) + v13;
++v7;
v10 = v11 <= 0xFu;
v11 = v12;
}
while ( !v10 );
}
if ( (unsigned __int64)(128 - v7) >= 0x81 )
sub_14001D030(128 - v7, 128i64, (__int64)&off_140021AF0);
return sub_1400174B0(
a2,
1,
"0x00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525"
"354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899",
2ui64,
(__int64)v6,
v7);
}
// 140021AF0: using guessed type void *off_140021AF0;
// 14001A630: using guessed type char var_88[37];
//----- (000000014001A7D0) ----------------------------------------------------
__int64 __fastcall sub_14001A7D0(unsigned __int64 *a1, __int64 a2)
{
int v3; // eax
unsigned __int64 v4; // rcx
__int64 v5; // rax
__int64 v6; // r11
unsigned __int64 v7; // rdx
int v8; // esi
bool v9; // cc
__int64 v10; // rax
unsigned __int64 v11; // rcx
char *v12; // r8
__int64 v13; // rax
unsigned __int64 v14; // r9
char v15; // si
unsigned __int64 v16; // rcx
unsigned __int64 v17; // r9
char v18; // si
__int16 v20[66]; // [rsp+34h] [rbp-94h] BYREF
char v21[16]; // [rsp+B8h] [rbp-10h] BYREF
v3 = *(_DWORD *)(a2 + 48);
if ( (v3 & 0x10) != 0 )
{
v11 = *a1;
v12 = v21;
v13 = 0i64;
v14 = v11;
do
{
v14 >>= 4;
v15 = 87;
if ( (v11 & 0xF) < 0xA )
v15 = 48;
*--v12 = (v11 & 0xF) + v15;
++v13;
v9 = v11 <= 0xF;
v11 = v14;
}
while ( !v9 );
}
else
{
if ( (v3 & 0x20) == 0 )
{
v4 = *a1;
v5 = 39i64;
if ( v4 < 0x2710 )
{
v7 = v4;
if ( v4 <= 0x63 )
goto LABEL_8;
}
else
{
v6 = 39i64;
do
{
v7 = v4 / 0x2710;
v8 = v4 % 0x2710;
v5 = v6 - 4;
*(__int16 *)((char *)v20 + v6) = *(_WORD *)&a0x000102030405[2 * ((unsigned int)(5243 * v8) >> 19) + 2];
*(__int16 *)((char *)&v20[1] + v6) = *(_WORD *)&a0x000102030405[2
* (unsigned __int16)(v8
- 100
* ((unsigned __int16)((unsigned int)(5243 * v8) >> 16) >> 3))
+ 2];
v6 -= 4i64;
v9 = v4 <= 0x5F5E0FF;
v4 /= 0x2710ui64;
}
while ( !v9 );
if ( v7 <= 0x63 )
{
LABEL_8:
if ( v7 >= 0xA )
{
*(__int16 *)((char *)&v20[1] + v5) = *(_WORD *)&a0x000102030405[2 * v7 + 2];
v10 = v5 - 2;
}
else
{
*((_BYTE *)&v20[1] + v5 + 1) = v7 + 48;
v10 = v5 - 1;
}
return sub_1400174B0(
a2,
1,
"from_str_radix_int: must lie in the range `[2, 36]` - found ",
0i64,
(__int64)&v20[2] + v10,
39 - v10);
}
}
*(__int16 *)((char *)&v20[1] + v5) = *(_WORD *)&a0x000102030405[2 * ((unsigned __int16)v7 % 0x64u) + 2];
v5 -= 2i64;
v7 = (unsigned int)(5243 * ((unsigned __int16)v7 >> 2)) >> 17;
goto LABEL_8;
}
v16 = *a1;
v12 = v21;
v13 = 0i64;
v17 = v16;
do
{
v17 >>= 4;
v18 = 55;
if ( (v16 & 0xF) < 0xA )
v18 = 48;
*--v12 = (v16 & 0xF) + v18;
++v13;
v9 = v16 <= 0xF;
v16 = v17;
}
while ( !v9 );
}
if ( (unsigned __int64)(128 - v13) >= 0x81 )
sub_14001D030(128 - v13, 128i64, (__int64)&off_140021AF0);
return sub_1400174B0(
a2,
1,
"0x00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525"
"354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899",
2ui64,
(__int64)v12,
v13);
}
// 140021AF0: using guessed type void *off_140021AF0;
//----- (000000014001AA00) ----------------------------------------------------
__int64 __fastcall sub_14001AA00(unsigned __int8 *a1, __int64 a2)
{
unsigned __int64 v2; // rax
__int64 v3; // rcx
char v5[37]; // [rsp+31h] [rbp-27h] BYREF
__int16 v6; // [rsp+56h] [rbp-2h]
v2 = *a1;
if ( v2 <= 0x63 )
{
v3 = 38i64;
if ( (unsigned __int8)v2 >= 0xAu )
{
v6 = *(_WORD *)&a0x000102030405[2 * v2 + 2];
v3 = 37i64;
return sub_1400174B0(
a2,
1,
"from_str_radix_int: must lie in the range `[2, 36]` - found ",
0i64,
(__int64)&v5[v3],
39 - v3);
}
}
else
{
v6 = *(_WORD *)&a0x000102030405[2 * ((unsigned __int8)v2 % 0x64u) + 2];
v3 = 36i64;
LOBYTE(v2) = (unsigned __int8)v2 / 0x64u;
}
v5[v3] = v2 | 0x30;
return sub_1400174B0(
a2,
1,
"from_str_radix_int: must lie in the range `[2, 36]` - found ",
0i64,
(__int64)&v5[v3],
39 - v3);
}
// 14001AA00: using guessed type char var_27[37];
//----- (000000014001AAA0) ----------------------------------------------------
__int64 __fastcall sub_14001AAA0(unsigned int *a1, __int64 a2)
{
__int64 v2; // r9
unsigned __int64 v3; // r8
__int64 v5; // rax
__int64 v6; // rsi
unsigned __int64 v7; // rdx
int v8; // edi
bool v9; // cc
__int64 v10; // rax
__int16 v12[33]; // [rsp+35h] [rbp-43h] BYREF
v2 = (int)*a1;
v3 = *a1;
if ( v2 < 0 )
v3 = -(__int64)(int)*a1;
v5 = 39i64;
if ( v3 >= 0x2710 )
{
v6 = 39i64;
do
{
v7 = v3 / 0x2710;
v8 = v3 % 0x2710;
v5 = v6 - 4;
*(__int16 *)((char *)v12 + v6) = *(_WORD *)&a0x000102030405[2 * ((unsigned int)(5243 * v8) >> 19) + 2];
*(__int16 *)((char *)&v12[1] + v6) = *(_WORD *)&a0x000102030405[2
* (unsigned __int16)(v8
- 100
* ((unsigned __int16)((unsigned int)(5243 * v8) >> 16) >> 3))
+ 2];
v6 -= 4i64;
v9 = v3 <= 0x5F5E0FF;
v3 /= 0x2710ui64;
}
while ( !v9 );
if ( v7 <= 0x63 )
goto LABEL_8;
goto LABEL_7;
}
v7 = v3;
if ( v3 > 0x63 )
{
LABEL_7:
*(__int16 *)((char *)&v12[1] + v5) = *(_WORD *)&a0x000102030405[2 * ((unsigned __int16)v7 % 0x64u) + 2];
v5 -= 2i64;
v7 = (unsigned int)(5243 * ((unsigned __int16)v7 >> 2)) >> 17;
}
LABEL_8:
if ( v7 >= 0xA )
{
*(__int16 *)((char *)&v12[1] + v5) = *(_WORD *)&a0x000102030405[2 * v7 + 2];
v10 = v5 - 2;
}
else
{
*((_BYTE *)&v12[1] + v5 + 1) = v7 + 48;
v10 = v5 - 1;
}
return sub_1400174B0(
a2,
(int)v2 >= 0,
"from_str_radix_int: must lie in the range `[2, 36]` - found ",
0i64,
(__int64)&v12[2] + v10,
39 - v10);
}
//----- (000000014001ABE0) ----------------------------------------------------
__int64 __fastcall sub_14001ABE0(unsigned int *a1, __int64 a2)
{
unsigned __int64 v3; // rcx
__int64 v4; // rax
__int64 v5; // r11
unsigned __int64 v6; // rdx
int v7; // esi
bool v8; // cc
__int64 v9; // rax
__int16 v11[29]; // [rsp+2Dh] [rbp-3Bh] BYREF
v3 = *a1;
v4 = 39i64;
if ( v3 >= 0x2710 )
{
v5 = 39i64;
do
{
v6 = v3 / 0x2710;
v7 = v3 % 0x2710;
v4 = v5 - 4;
*(__int16 *)((char *)v11 + v5) = *(_WORD *)&a0x000102030405[2 * ((unsigned int)(5243 * v7) >> 19) + 2];
*(__int16 *)((char *)&v11[1] + v5) = *(_WORD *)&a0x000102030405[2
* (unsigned __int16)(v7
- 100
* ((unsigned __int16)((unsigned int)(5243 * v7) >> 16) >> 3))
+ 2];
v5 -= 4i64;
v8 = v3 <= 0x5F5E0FF;
v3 /= 0x2710ui64;
}
while ( !v8 );
if ( v6 <= 0x63 )
goto LABEL_6;
goto LABEL_5;
}
v6 = v3;
if ( v3 > 0x63 )
{
LABEL_5:
*(__int16 *)((char *)&v11[1] + v4) = *(_WORD *)&a0x000102030405[2 * ((unsigned __int16)v6 % 0x64u) + 2];
v4 -= 2i64;
v6 = (unsigned int)(5243 * ((unsigned __int16)v6 >> 2)) >> 17;
}
LABEL_6:
if ( v6 >= 0xA )
{
*(__int16 *)((char *)&v11[1] + v4) = *(_WORD *)&a0x000102030405[2 * v6 + 2];
v9 = v4 - 2;
}
else
{
*((_BYTE *)&v11[1] + v4 + 1) = v6 + 48;
v9 = v4 - 1;
}
return sub_1400174B0(
a2,
1,
"from_str_radix_int: must lie in the range `[2, 36]` - found ",
0i64,
(__int64)&v11[2] + v9,
39 - v9);
}
//----- (000000014001AD00) ----------------------------------------------------
__int64 __fastcall sub_14001AD00(unsigned __int64 *a1, __int64 a2)
{
unsigned __int64 v3; // rcx
__int64 v4; // rax
__int64 v5; // r11
unsigned __int64 v6; // rdx
int v7; // esi
bool v8; // cc
__int64 v9; // rax
__int16 v11[29]; // [rsp+2Dh] [rbp-3Bh] BYREF
v3 = *a1;
v4 = 39i64;
if ( v3 >= 0x2710 )
{
v5 = 39i64;
do
{
v6 = v3 / 0x2710;
v7 = v3 % 0x2710;
v4 = v5 - 4;
*(__int16 *)((char *)v11 + v5) = *(_WORD *)&a0x000102030405[2 * ((unsigned int)(5243 * v7) >> 19) + 2];
*(__int16 *)((char *)&v11[1] + v5) = *(_WORD *)&a0x000102030405[2
* (unsigned __int16)(v7
- 100
* ((unsigned __int16)((unsigned int)(5243 * v7) >> 16) >> 3))
+ 2];
v5 -= 4i64;
v8 = v3 <= 0x5F5E0FF;
v3 /= 0x2710ui64;
}
while ( !v8 );
if ( v6 <= 0x63 )
goto LABEL_6;
goto LABEL_5;
}
v6 = v3;
if ( v3 > 0x63 )
{
LABEL_5:
*(__int16 *)((char *)&v11[1] + v4) = *(_WORD *)&a0x000102030405[2 * ((unsigned __int16)v6 % 0x64u) + 2];
v4 -= 2i64;
v6 = (unsigned int)(5243 * ((unsigned __int16)v6 >> 2)) >> 17;
}
LABEL_6:
if ( v6 >= 0xA )
{
*(__int16 *)((char *)&v11[1] + v4) = *(_WORD *)&a0x000102030405[2 * v6 + 2];
v9 = v4 - 2;
}
else
{
*((_BYTE *)&v11[1] + v4 + 1) = v6 + 48;
v9 = v4 - 1;
}
return sub_1400174B0(
a2,
1,
"from_str_radix_int: must lie in the range `[2, 36]` - found ",
0i64,
(__int64)&v11[2] + v9,
39 - v9);
}
//----- (000000014001AE40) ----------------------------------------------------
__int64 __fastcall sub_14001AE40(unsigned __int8 **a1, __int64 a2)
{
return sub_14001A630(*a1, a2);
}
//----- (000000014001AE50) ----------------------------------------------------
__int64 __fastcall sub_14001AE50(_BYTE **a1, _QWORD *a2)
{
unsigned __int8 v3; // al
unsigned int v4; // ebx
_QWORD *v5; // rsi
__int64 v7; // [rsp+28h] [rbp-30h] BYREF
_QWORD *v8; // [rsp+30h] [rbp-28h]
unsigned __int8 v9; // [rsp+38h] [rbp-20h]
char v10; // [rsp+39h] [rbp-1Fh]
__int64 v11[3]; // [rsp+40h] [rbp-18h] BYREF
if ( !**a1 )
return (*(__int64 (__fastcall **)(_QWORD, char *, __int64))(a2[1] + 24i64))(
*a2,
"NoneErrorUtf8Errorvalid_up_toerror_len",
4i64);
v11[0] = (__int64)(*a1 + 1);
v3 = (*(__int64 (__fastcall **)(_QWORD, const char *, __int64))(a2[1] + 24i64))(
*a2,
"SomeNoneErrorUtf8Errorvalid_up_toerror_len",
4i64);
v8 = a2;
v9 = v3;
v7 = 0i64;
v10 = 0;
sub_140016D90(&v7, (__int64)v11, (__int64)&off_140021AB0);
v4 = v9;
if ( v7 )
{
LOBYTE(v4) = 1;
if ( !v9 )
{
v5 = v8;
if ( v7 != 1
|| !v10
|| (v8[6] & 4) != 0
|| !(*(unsigned __int8 (__fastcall **)(_QWORD, char *, __int64))(v8[1] + 24i64))(*v8, ",\n", 1i64) )
{
return (*(unsigned int (__fastcall **)(_QWORD, void *, __int64))(v5[1] + 24i64))(*v5, &unk_1400217F8, 1i64);
}
}
}
return v4;
}
// 140021AB0: using guessed type __int64 (__fastcall *off_140021AB0)();
// 14001AE50: using guessed type __int64 var_18[3];
//----- (000000014001AF40) ----------------------------------------------------
__int64 __fastcall sub_14001AF40(_QWORD *a1)
{
return (*(__int64 (__fastcall **)(_QWORD))(a1[1] + 24i64))(*a1);
}
//----- (000000014001AF60) ----------------------------------------------------
__int64 __fastcall sub_14001AF60(unsigned __int8 **a1, _QWORD *a2)
{
return (*(__int64 (__fastcall **)(_QWORD, _QWORD, _QWORD))(a2[1] + 24i64))(
*a2,
*(&off_140022C90 + **a1),
qword_140022C68[**a1]);
}
// 140022C68: using guessed type _QWORD qword_140022C68[5];
// 140022C90: using guessed type void *off_140022C90;
//----- (000000014001AF90) ----------------------------------------------------
bool __fastcall sub_14001AF90(__int64 **a1, __int64 *a2)
{
return sub_1400172A0(*a2, a2[1], *a1);
}
//----- (000000014001AFA0) ----------------------------------------------------
__int64 __fastcall sub_14001AFA0(__int64 a1, __int64 *a2)
{
return sub_140017890(a2, *(unsigned __int8 **)a1, *(_QWORD *)(a1 + 8));
}
//----- (000000014001AFC0) ----------------------------------------------------
__int64 __fastcall sub_14001AFC0(unsigned __int8 ***a1, __int64 *a2)
{
return sub_140017890(a2, **a1, (unsigned __int64)(*a1)[1]);
}
//----- (000000014001AFE0) ----------------------------------------------------
char __fastcall sub_14001AFE0(__int64 a1, _QWORD *a2)
{
char v4; // al
char result; // al
char *v6; // rdx
__int64 v7; // r8
_QWORD *v8; // [rsp+30h] [rbp-28h] BYREF
char v9; // [rsp+38h] [rbp-20h]
char v10; // [rsp+39h] [rbp-1Fh]
__int64 v11[3]; // [rsp+40h] [rbp-18h] BYREF
v11[0] = a1 + 8;
v4 = (*(__int64 (__fastcall **)(_QWORD, char *, __int64))(a2[1] + 24i64))(*a2, "Utf8Errorvalid_up_toerror_len", 9i64);
v8 = a2;
v9 = v4;
v10 = 0;
sub_140016B60(&v8, (__int64)"valid_up_toerror_len", 0xBui64, a1, (__int64)&off_140022700);
sub_140016B60(&v8, (__int64)"error_len", 9ui64, (__int64)v11, (__int64)&off_1400227B0);
if ( !v10 )
return v9 != 0;
result = 1;
if ( !v9 )
{
if ( (v8[6] & 4) != 0 )
{
v6 = "} }(\n(,\n";
v7 = 1i64;
}
else
{
v6 = " }(\n(,\n";
v7 = 2i64;
}
return (*(__int64 (__fastcall **)(_QWORD, char *, __int64))(v8[1] + 24i64))(*v8, v6, v7);
}
return result;
}
// 140022700: using guessed type __int64 (__fastcall *off_140022700)();
// 1400227B0: using guessed type __int64 (__fastcall *off_1400227B0)();
// 14001AFE0: using guessed type __int64 var_18[3];
//----- (000000014001B0D0) ----------------------------------------------------
bool __fastcall sub_14001B0D0(unsigned int a1)
{
if ( a1 << 11 >= 0x88050000 )
sub_14001CD00(1i64, 1i64, (__int64)&off_1400227D0);
return a1 < 0x20 || a1 - 127 < 0x21;
}
// 1400227D0: using guessed type char *off_1400227D0;
//----- (000000014001B110) ----------------------------------------------------
char __fastcall sub_14001B110(int a1)
{
unsigned int v1; // r8d
unsigned __int64 v2; // rax
unsigned __int64 v3; // r9
int v4; // r10d
unsigned __int64 v5; // r11
bool v6; // cc
unsigned __int64 v7; // rax
unsigned int v8; // edi
unsigned __int8 v9; // si
unsigned __int64 v10; // rax
unsigned __int64 v11; // rax
unsigned __int64 v12; // r8
int v13; // edx
unsigned int v14; // ecx
unsigned __int64 v15; // r8
unsigned int v16; // edx
unsigned __int64 v17; // r10
v1 = a1 << 11;
v2 = 33i64;
v3 = 0i64;
v4 = 255;
v5 = 33i64;
while ( 1 )
{
while ( 1 )
{
v7 = v3 + (v2 >> 1);
v8 = dword_140022800[v7] << 11;
v9 = v8 != v1;
if ( v8 < v1 )
v9 = -1;
if ( v9 != 1 )
break;
v5 = v7;
v6 = v7 <= v3;
v2 = v7 - v3;
if ( v6 )
goto LABEL_10;
}
v10 = v7 + 1;
if ( v9 != 255 )
break;
v3 = v10;
v2 = v5 - v10;
if ( v5 <= v3 )
goto LABEL_10;
}
v3 = v10;
LABEL_10:
if ( v3 > 0x20 )
sub_14001CD00(v3, 33i64, (__int64)&off_1400227D0);
v11 = (unsigned __int64)dword_140022800[v3] >> 21;
v12 = 727i64;
if ( v3 == 32 || (v12 = (unsigned __int64)dword_140022800[v3 + 1] >> 21, v3) )
{
v4 = dword_140022800[v3 - 1] & 0x1FFFFF;
v13 = 1;
}
else
{
v13 = 0;
}
if ( !v13 )
v4 = 0;
if ( v12 + ~v11 )
{
v14 = a1 - v4;
v15 = v12 - 1;
v16 = 0;
v17 = (unsigned __int64)dword_140022800[v3] >> 21;
while ( 1 )
{
if ( v17 > 0x2D6 )
{
if ( v11 < 0x2D8 )
v11 = 727i64;
sub_14001CD00(v11, 727i64, (__int64)&off_1400227E8);
}
v16 += byte_140022884[v17];
if ( v16 > v14 )
break;
if ( v15 == ++v17 )
{
LOBYTE(v11) = v15;
return v11 & 1;
}
}
LOBYTE(v11) = v17;
}
return v11 & 1;
}
// 1400227D0: using guessed type char *off_1400227D0;
// 1400227E8: using guessed type char *off_1400227E8;
// 140022800: using guessed type unsigned int dword_140022800[33];
// 140022884: using guessed type unsigned __int8 byte_140022884[727];
//----- (000000014001B580) ----------------------------------------------------
_QWORD *__fastcall sub_14001B580(_QWORD *a1, char a2)
{
*a1 = &type_info::`vftable';
if ( (a2 & 1) != 0 )
j_j_free(a1);
return a1;
}
// 140022CC0: using guessed type void *type_info::`vftable';
//----- (000000014001B7FC) ----------------------------------------------------
__int64 sub_14001B7FC()
{
uintptr_t v0; // rax
__int64 result; // rax
unsigned __int64 v2; // [rsp+20h] [rbp-10h] BYREF
struct _FILETIME SystemTimeAsFileTime; // [rsp+40h] [rbp+10h] BYREF
LARGE_INTEGER PerformanceCount; // [rsp+48h] [rbp+18h] BYREF
v0 = _security_cookie;
if ( _security_cookie == 0x2B992DDFA232i64 )
{
SystemTimeAsFileTime = 0i64;
GetSystemTimeAsFileTime(&SystemTimeAsFileTime);
v2 = (unsigned __int64)SystemTimeAsFileTime;
v2 ^= GetCurrentThreadId();
v2 ^= GetCurrentProcessId();
QueryPerformanceCounter(&PerformanceCount);
v0 = ((unsigned __int64)&v2 ^ v2 ^ PerformanceCount.QuadPart ^ ((unsigned __int64)PerformanceCount.LowPart << 32)) & 0xFFFFFFFFFFFFi64;
if ( v0 == 0x2B992DDFA232i64 )
v0 = 0x2B992DDFA233i64;
_security_cookie = v0;
}
result = ~v0;
qword_1400270D8 = result;
return result;
}
// 1400270D8: using guessed type __int64 qword_1400270D8;
//----- (000000014001B8A8) ----------------------------------------------------
__int64 __fastcall UserMathErrorFunction(struct _exception *a1)
{
return 0i64;
}
//----- (000000014001B8BC) ----------------------------------------------------
void sub_14001B8BC()
{
InitializeSListHead(&stru_1400272C0);
}
// 1400272C0: using guessed type union _SLIST_HEADER stru_1400272C0;
//----- (000000014001B8D0) ----------------------------------------------------
void *sub_14001B8D0()
{
return &unk_1400272D0;
}
//----- (000000014001B8D8) ----------------------------------------------------
void *sub_14001B8D8()
{
return &unk_1400272D8;
}
//----- (000000014001B908) ----------------------------------------------------
void *sub_14001B908()
{
return &unk_1400272F0;
}
//----- (000000014001B910) ----------------------------------------------------
void *sub_14001B910()
{
return &unk_1400272E8;
}
//----- (000000014001B918) ----------------------------------------------------
void sub_14001B918()
{
dword_1400272E0 = 0;
}
// 1400272E0: using guessed type int dword_1400272E0;
//----- (000000014001BB34) ----------------------------------------------------
void sub_14001BB34()
{
void (**i)(void); // rbx
for ( i = qword_140023368; i < qword_140023368; ++i )
{
if ( *i )
(*i)();
}
}
// 140023368: using guessed type void (*qword_140023368[2])(void);
//----- (000000014001BB70) ----------------------------------------------------
void __fastcall sub_14001BB70()
{
void (**i)(void); // rbx
for ( i = &qword_140023378; i < &qword_140023378; ++i )
{
if ( *i )
(*i)();
}
}
// 140023378: using guessed type void (*qword_140023378)(void);
//----- (000000014001BE80) ----------------------------------------------------
bool __fastcall sub_14001BE80(_QWORD *_RCX, __int64 a2, int _R8D, char a4)
{
bool result; // al
__int64 v5; // rdx
__int64 v6; // r9
_BYTE *v7; // r10
unsigned __int64 v8; // r11
__int64 v9; // rax
int v10; // r10d
__int64 v11; // r9
_DWORD *v12; // r11
_DWORD *v13; // rsi
_DWORD *v14; // rdi
char *v15; // rsi
result = 0;
if ( (_WORD)_R8D && !a4 )
{
v5 = a2 + 1;
v6 = *_RCX;
v7 = (_BYTE *)_RCX[2];
v8 = _RCX[3];
v9 = v8 - 4;
if ( v8 < 4 )
{
while ( 1 )
{
result = 1;
if ( !v8 )
break;
__asm { tzcnt ecx, r8d }
v15 = (char *)_RCX + v5;
if ( *((_BYTE *)_RCX + v5 + v6) == *v7 && (v8 == 1 || v15[v6 + 1] == v7[1] && (v8 == 2 || v15[v6 + 2] == v7[2])) )
break;
LOWORD(_R8D) = __ROL2__(-2, (char)_RCX) & _R8D;
if ( !(_WORD)_R8D )
return 0;
}
}
else if ( v9 > 0 )
{
LABEL_10:
__asm { tzcnt ecx, r8d }
v12 = (_DWORD *)((char *)_RCX + v5 + v6);
v13 = (_DWORD *)((char *)v12 + v9);
v14 = v7;
do
{
if ( *v12 != *v14 )
{
LABEL_9:
LOWORD(_R8D) = __ROL2__(-2, (char)_RCX) & _R8D;
if ( !(_WORD)_R8D )
return 0;
goto LABEL_10;
}
++v12;
++v14;
}
while ( v12 < v13 );
if ( *v13 != *(_DWORD *)&v7[v9] )
goto LABEL_9;
return 1;
}
else
{
v10 = *(_DWORD *)&v7[v9];
v11 = v9 + v6;
do
{
__asm { tzcnt ecx, r8d }
result = *(_DWORD *)((char *)_RCX + v5 + v11) == v10;
if ( *(_DWORD *)((char *)_RCX + v5 + v11) == v10 )
break;
LOWORD(_R8D) = __ROL2__(-2, (char)_RCX) & _R8D;
}
while ( (_WORD)_R8D );
}
}
return result;
}
// 14001BF9F: conditional instruction was optimized away because r11.8==3
//----- (000000014001BFB0) ----------------------------------------------------
void __fastcall __noreturn sub_14001BFB0(__int64 a1, __int64 a2, __int128 *a3, __int64 a4)
{
__int128 v4; // xmm0
__int128 v5; // xmm1
__int64 v6; // [rsp+40h] [rbp-48h] BYREF
__int64 v7; // [rsp+48h] [rbp-40h] BYREF
__int128 v8[3]; // [rsp+50h] [rbp-38h] BYREF
v6 = a1;
v7 = a2;
v4 = *a3;
v5 = a3[1];
v8[2] = a3[2];
v8[1] = v5;
v8[0] = v4;
sub_14001CDA0(0, (__int64)&v6, (__int64)&off_14001E6E0, (__int64)&v7, (__int64)&off_14001E6E0, v8, a4);
}
// 14001E6E0: using guessed type __int64 (__fastcall *off_14001E6E0)();
//----- (000000014001C010) ----------------------------------------------------
__int64 __fastcall sub_14001C010(unsigned __int64 *a1, __int64 a2, __int64 a3)
{
bool v3; // cf
unsigned __int64 v4; // rdx
unsigned __int64 v6; // rcx
unsigned __int64 v7; // rdi
__int64 result; // rax
__int64 v9[2]; // [rsp+28h] [rbp-40h] BYREF
__int64 v10; // [rsp+38h] [rbp-30h]
__int64 v11[2]; // [rsp+40h] [rbp-28h] BYREF
__int64 v12; // [rsp+50h] [rbp-18h]
v3 = __CFADD__(a3, a2);
v4 = a3 + a2;
if ( v3 )
LABEL_12:
sub_140015AA0();
v6 = *a1;
if ( 2 * v6 > v4 )
v4 = 2 * v6;
v7 = 4i64;
if ( v4 >= 5 )
v7 = v4;
if ( v6 )
{
v9[0] = a1[1];
v9[1] = 2 * v6;
v10 = 2i64;
}
else
{
v10 = 0i64;
}
result = sub_140002F90(v11, 2 * v7, 2i64 * (v7 >> 62 == 0), (__int64)v9);
if ( v11[0] )
{
result = 0x8000000000000001ui64;
if ( v12 != 0x8000000000000001ui64 )
{
if ( v12 )
sub_14001CB30();
goto LABEL_12;
}
}
else
{
a1[1] = v11[1];
*a1 = v7;
}
return result;
}
//----- (000000014001C0D0) ----------------------------------------------------
__int64 __fastcall sub_14001C0D0(__int64 *a1, __int64 a2, __int64 a3)
{
bool v3; // cf
unsigned __int64 v4; // rdx
__int64 v6; // rax
unsigned __int64 v7; // rcx
__int64 v8; // rdi
__int64 result; // rax
__int64 v10[2]; // [rsp+28h] [rbp-40h] BYREF
__int64 v11; // [rsp+38h] [rbp-30h]
__int64 v12[2]; // [rsp+40h] [rbp-28h] BYREF
__int64 v13; // [rsp+50h] [rbp-18h]
v3 = __CFADD__(a3, a2);
v4 = a3 + a2;
if ( v3 )
LABEL_12:
sub_140015AA0();
v6 = *a1;
v7 = 2 * *a1;
if ( v7 > v4 )
v4 = v7;
v8 = 8i64;
if ( v4 >= 9 )
v8 = v4;
if ( v6 )
{
v10[0] = a1[1];
v10[1] = v6;
v11 = 1i64;
}
else
{
v11 = 0i64;
}
result = sub_140002F90(v12, v8, v8 >= 0, (__int64)v10);
if ( v12[0] )
{
result = 0x8000000000000001ui64;
if ( v13 != 0x8000000000000001ui64 )
{
if ( v13 )
sub_14001CB30();
goto LABEL_12;
}
}
else
{
a1[1] = v12[1];
*a1 = v8;
}
return result;
}
//----- (000000014001C190) ----------------------------------------------------
void __noreturn sub_14001C190()
{
__int64 v0[6]; // [rsp+28h] [rbp-30h] BYREF
v0[2] = (__int64)&off_14001EB68;
v0[3] = 1i64;
v0[0] = 0i64;
v0[4] = (__int64)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v0[5] = 0i64;
sub_14001CBB0((__int64)v0, (__int64)&off_14001EB78);
}
// 14001EB68: using guessed type char *off_14001EB68;
// 14001EB78: using guessed type void *off_14001EB78;
//----- (000000014001C1E0) ----------------------------------------------------
__int64 __fastcall sub_14001C1E0(__int64 a1, unsigned __int8 *a2, unsigned __int64 a3)
{
unsigned __int64 v6; // rax
__int64 result; // rax
__int64 v8; // r14
char **v9; // rax
v6 = *(_QWORD *)a1;
if ( *(_QWORD *)a1 - *(_QWORD *)(a1 + 16) < a3 )
{
result = sub_140004570(a1);
if ( result )
return result;
v6 = *(_QWORD *)a1;
}
if ( v6 <= a3 )
{
*(_BYTE *)(a1 + 29) = 1;
v9 = sub_140005AB0((unsigned __int8 *)(a1 + 24), a2, a3);
result = sub_140005010((__int64)v9);
*(_BYTE *)(a1 + 29) = 0;
}
else
{
v8 = *(_QWORD *)(a1 + 16);
memcpy((void *)(v8 + *(_QWORD *)(a1 + 8)), a2, a3);
*(_QWORD *)(a1 + 16) = a3 + v8;
return 0i64;
}
return result;
}
//----- (000000014001C260) ----------------------------------------------------
signed __int64 sub_14001C260()
{
signed __int64 result; // rax
char v1; // [rsp+28h] [rbp-20h] BYREF
__int64 *v2; // [rsp+30h] [rbp-18h] BYREF
__int64 v3[2]; // [rsp+38h] [rbp-10h] BYREF
result = qword_140027178;
if ( qword_140027178 != 3 )
{
v3[0] = (__int64)&SRWLock;
v3[1] = (__int64)&v1;
v2 = v3;
return sub_14001C3B0(&qword_140027178, 1, (__int64)&v2, (__int64)&off_14001F398, (__int64)&off_14001F380);
}
return result;
}
// 14001F380: using guessed type char *off_14001F380;
// 14001F398: using guessed type __int64 (__fastcall *off_14001F398)();
// 140027178: using guessed type __int64 qword_140027178;
//----- (000000014001C2D0) ----------------------------------------------------
signed __int64 __fastcall sub_14001C2D0(__int64 a1)
{
signed __int64 result; // rax
char v2; // [rsp+30h] [rbp-28h] BYREF
__int64 *v3; // [rsp+38h] [rbp-20h] BYREF
__int64 v4[3]; // [rsp+40h] [rbp-18h] BYREF
result = qword_140027178;
if ( qword_140027178 != 3 )
{
v4[0] = a1;
v4[1] = (__int64)&SRWLock;
v4[2] = (__int64)&v2;
v3 = v4;
return sub_14001C3B0(&qword_140027178, 1, (__int64)&v3, (__int64)&off_14001F358, (__int64)&off_14001F380);
}
return result;
}
// 14001F358: using guessed type __int64 (__fastcall *off_14001F358)();
// 14001F380: using guessed type char *off_14001F380;
// 140027178: using guessed type __int64 qword_140027178;
//----- (000000014001C340) ----------------------------------------------------
bool sub_14001C340()
{
return *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 88i64) == 0i64;
}
// 140027270: using guessed type int TlsIndex;
//----- (000000014001C360) ----------------------------------------------------
__int64 __fastcall sub_14001C360(__int64 a1)
{
__int64 result; // rax
__int64 v2; // rcx
__int64 v3; // [rsp+28h] [rbp-10h] BYREF
sub_14000E850(&v3, a1);
result = v3;
_InterlockedDecrement64(&qword_1400271C0);
v2 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
--*(_QWORD *)(v2 + 88);
return result;
}
// 1400271C0: using guessed type __int64 qword_1400271C0;
// 140027270: using guessed type int TlsIndex;
//----- (000000014001C3B0) ----------------------------------------------------
signed __int64 __fastcall sub_14001C3B0(volatile signed __int64 *a1, char a2, __int64 a3, __int64 a4, __int64 a5)
{
signed __int64 result; // rax
signed __int64 i; // rdi
int v8; // eax
__int64 v9; // rbx
__int64 v10; // rax
volatile signed __int64 *v11; // rax
_QWORD *ThreadLocalStoragePointer; // rdx
signed __int64 v13; // rax
volatile signed __int64 *v14; // rcx
int v15; // eax
__int64 v16; // rax
__int64 v17; // rdi
__int64 v18; // rax
volatile signed __int8 *v19; // rdi
void (__fastcall *v20)(volatile signed __int8 *, void *, __int64, __int64); // rbx
volatile signed __int64 *v21; // rcx
HANDLE v22; // rcx
int v23; // eax
signed __int64 v24; // rax
void *v25; // rbx
volatile signed __int64 *v26; // rcx
__int64 v27[4]; // [rsp+28h] [rbp-58h] BYREF
__int64 v28; // [rsp+48h] [rbp-38h] BYREF
bool v29; // [rsp+50h] [rbp-30h]
char **v30; // [rsp+58h] [rbp-28h]
__int64 v31; // [rsp+60h] [rbp-20h]
__int64 *v32; // [rsp+68h] [rbp-18h]
__int64 v33; // [rsp+70h] [rbp-10h]
HANDLE hObject; // [rsp+78h] [rbp-8h] BYREF
volatile signed __int64 *v35; // [rsp+80h] [rbp+0h]
int v36; // [rsp+8Ch] [rbp+Ch] BYREF
__int64 v37; // [rsp+90h] [rbp+10h] BYREF
volatile signed __int64 *v38; // [rsp+98h] [rbp+18h]
__int64 v39; // [rsp+A0h] [rbp+20h]
char v40; // [rsp+AFh] [rbp+2Fh]
__int64 v41; // [rsp+B0h] [rbp+30h]
v41 = -2i64;
v27[2] = a4;
v27[3] = a3;
v40 = a2;
result = *a1;
i = *a1;
if ( !*a1 )
goto LABEL_4;
while ( 1 )
{
if ( i == 1 )
{
if ( !v40 )
{
v30 = &off_140020680;
v31 = 1i64;
v28 = 0i64;
v32 = (__int64 *)"/rustc/90c541806f23a127002de5b4038be731ba1458ca\\library\\core\\src\\str\\pattern.rs";
v33 = 0i64;
sub_14001CBB0((__int64)&v28, a5);
}
goto LABEL_4;
}
if ( i == 3 )
return result;
if ( (i & 3) != 2 )
JUMPOUT(0x14001C8BCi64);
while ( 1 )
{
v8 = *(unsigned __int8 *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 80i64);
if ( v8 != 1 )
{
if ( v8 )
sub_14001CB40(
(__int64)"use of std::thread::current() is not possible after the thread's local data has been destroyed",
94i64,
(__int64)&off_14001EAC8);
v9 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
sub_14000CA80(v9 + 64, (__int64)qword_14000DCB0);
*(_BYTE *)(v9 + 80) = 1;
}
if ( *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 64i64) )
sub_14001CF90(
(__int64)"already borrowedlibrary\\std\\src\\io\\stdio.rs",
16i64,
(__int64)&v28,
(__int64)&off_14001E650,
(__int64)&off_14001F580);
v10 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
*(_QWORD *)(v10 + 64) = -1i64;
v11 = *(volatile signed __int64 **)(v10 + 72);
if ( !v11 )
JUMPOUT(0x14001C4F9i64);
if ( _InterlockedIncrement64(v11) <= 0 )
LABEL_48:
BUG();
ThreadLocalStoragePointer = NtCurrentTeb()->ThreadLocalStoragePointer;
++*(_QWORD *)(ThreadLocalStoragePointer[TlsIndex] + 64i64);
v37 = (__int64)v11;
LOBYTE(v39) = 0;
v38 = (volatile signed __int64 *)(i - 2);
v13 = _InterlockedCompareExchange64(a1, (signed __int64)&v37 + 2, i);
if ( i == v13 )
break;
i = v13;
v14 = (volatile signed __int64 *)v37;
if ( v37 )
{
if ( !_InterlockedDecrement64((volatile signed __int64 *)v37) )
sub_140002DF0((__int64)v14);
}
if ( (i & 3) != 2 )
goto LABEL_43;
}
while ( !(_BYTE)v39 )
{
v15 = *(unsigned __int8 *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 80i64);
if ( v15 != 1 )
{
if ( !v15 )
JUMPOUT(0x14001C5D1i64);
JUMPOUT(0x14001C84Fi64);
}
if ( *(_QWORD *)(*((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 64i64) )
JUMPOUT(0x14001C808i64);
v16 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
*(_QWORD *)(v16 + 64) = -1i64;
v17 = *(_QWORD *)(v16 + 72);
if ( !v17 )
JUMPOUT(0x14001C63Ei64);
if ( _InterlockedIncrement64((volatile signed __int64 *)v17) <= 0 )
goto LABEL_48;
v18 = *((_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex);
++*(_QWORD *)(v18 + 64);
v35 = (volatile signed __int64 *)v17;
if ( !_InterlockedDecrement8((volatile signed __int8 *)(v17 + 40)) )
goto LABEL_32;
v19 = (volatile signed __int8 *)(v17 + 40);
v20 = (void (__fastcall *)(volatile signed __int8 *, void *, __int64, __int64))qword_140027200;
if ( qword_140027200 )
{
do
v20(v19, &unk_140020308, 1i64, 0xFFFFFFFFi64);
while ( _InterlockedCompareExchange8(v19, 0, 1) != 1 );
LABEL_32:
v21 = v35;
if ( !_InterlockedDecrement64(v35) )
goto LABEL_33;
}
else
{
v22 = (HANDLE)qword_140027030;
if ( qword_140027030 == -1 )
{
hObject = (HANDLE)-1i64;
v23 = off_140027040(&hObject, 3221225472i64, 0i64, 0i64);
if ( v23 )
{
v36 = v23;
v27[0] = (__int64)&v36;
v27[1] = (__int64)sub_14001AAA0;
v30 = &off_140020338;
v31 = 1i64;
v28 = 0i64;
v32 = v27;
v33 = 1i64;
JUMPOUT(0x14001C8AAi64);
}
v22 = hObject;
v24 = _InterlockedCompareExchange64(&qword_140027030, (signed __int64)hObject, -1i64);
if ( v24 != -1 )
{
v25 = (void *)v24;
CloseHandle(hObject);
v22 = v25;
}
}
off_140027050(v22, v19, 0i64, 0i64);
*v19 = 0;
v21 = v35;
if ( !_InterlockedDecrement64(v35) )
LABEL_33:
sub_140002DF0((__int64)v21);
}
}
v26 = (volatile signed __int64 *)v37;
if ( v37 && !_InterlockedDecrement64((volatile signed __int64 *)v37) )
sub_140002DF0((__int64)v26);
LABEL_43:
result = *a1;
for ( i = *a1; !result; i = result )
{
LABEL_4:
result = _InterlockedCompareExchange64(a1, 2i64, i);
if ( i == result )
{
v38 = a1;
v37 = 1i64;
v28 = 3i64;
v29 = i == 1;
JUMPOUT(0x14001C7A5i64);
}
}
}
}
// 14001C4F7: control flows out of bounds to 14001C4F9
// 14001C5CA: control flows out of bounds to 14001C5D1
// 14001C63C: control flows out of bounds to 14001C63E
// 14001C7A1: control flows out of bounds to 14001C7A5
// 14001C8A2: control flows out of bounds to 14001C8AA
// 14001C44A: control flows out of bounds to 14001C8BC
// 14001C5B1: control flows out of bounds to 14001C84F
// 14001C60E: control flows out of bounds to 14001C808
// 14000DCB0: using guessed type __int64 qword_14000DCB0[6];
// 14001E650: using guessed type __int64 (__fastcall *off_14001E650)();
// 14001EAC8: using guessed type void *off_14001EAC8;
// 14001F580: using guessed type char *off_14001F580;
// 140020338: using guessed type char *off_140020338;
// 140020680: using guessed type char *off_140020680;
// 140027030: using guessed type __int64 qword_140027030;
// 140027040: using guessed type __int64 (__fastcall *off_140027040)(_QWORD, _QWORD, _QWORD, _QWORD);
// 140027050: using guessed type __int64 (__fastcall *off_140027050)(_QWORD, _QWORD, _QWORD, _QWORD);
// 140027200: using guessed type __int64 qword_140027200;
// 140027270: using guessed type int TlsIndex;
//----- (000000014001CA70) ----------------------------------------------------
__int64 __fastcall sub_14001CA70(__int64 *a1, __int64 a2, __int64 a3)
{
bool v3; // cf
unsigned __int64 v4; // rdx
__int64 v6; // rax
unsigned __int64 v7; // rcx
__int64 v8; // rdi
__int64 result; // rax
__int64 v10[2]; // [rsp+28h] [rbp-40h] BYREF
__int64 v11; // [rsp+38h] [rbp-30h]
__int64 v12[2]; // [rsp+40h] [rbp-28h] BYREF
__int64 v13; // [rsp+50h] [rbp-18h]
v3 = __CFADD__(a3, a2);
v4 = a3 + a2;
if ( v3 )
LABEL_12:
sub_140015AA0();
v6 = *a1;
v7 = 2 * *a1;
if ( v7 > v4 )
v4 = v7;
v8 = 8i64;
if ( v4 >= 9 )
v8 = v4;
if ( v6 )
{
v10[0] = a1[1];
v10[1] = v6;
v11 = 1i64;
}
else
{
v11 = 0i64;
}
result = sub_140015A10(v12, v8, v8 >= 0, (__int64)v10);
if ( v12[0] )
{
result = 0x8000000000000001ui64;
if ( v13 != 0x8000000000000001ui64 )
{
if ( v13 )
sub_14001CB30();
goto LABEL_12;
}
}
else
{
a1[1] = v12[1];
*a1 = v8;
}
return result;
}
//----- (000000014001CB30) ----------------------------------------------------
void __noreturn sub_14001CB30()
{
sub_140015AF0();
}
//----- (000000014001CB40) ----------------------------------------------------
void __fastcall __noreturn sub_14001CB40(__int64 a1, __int64 a2, __int64 a3)
{
__int64 v3[2]; // [rsp+28h] [rbp-50h] BYREF
__int64 v4[2]; // [rsp+38h] [rbp-40h] BYREF
__int64 v5[6]; // [rsp+48h] [rbp-30h] BYREF
v3[0] = a1;
v3[1] = a2;
v4[0] = (__int64)v3;
v4[1] = (__int64)sub_14001AFA0;
v5[2] = (__int64)&off_140021820;
v5[3] = 1i64;
v5[0] = 0i64;
v5[4] = (__int64)v4;
v5[5] = 1i64;
sub_14001CBB0((__int64)v5, a3);
}
// 140021820: using guessed type char *off_140021820;
//----- (000000014001CBB0) ----------------------------------------------------
void __fastcall __noreturn sub_14001CBB0(__int64 a1, __int64 a2)
{
__int64 v2[4]; // [rsp+20h] [rbp-28h] BYREF
char v3; // [rsp+40h] [rbp-8h]
v2[0] = (__int64)"from_str_radix_int: must lie in the range `[2, 36]` - found ";
v2[1] = (__int64)&off_140021898;
v2[2] = a1;
v2[3] = a2;
v3 = 1;
sub_14000A5B0((__int64)v2);
}
// 140021898: using guessed type __int64 (__fastcall *off_140021898)();
//----- (000000014001CBF0) ----------------------------------------------------
void sub_14001CBF0()
{
JUMPOUT(0x14001CC24i64);
}
// 14001CC20: control flows out of bounds to 14001CC24
//----- (000000014001CC50) ----------------------------------------------------
void __fastcall __noreturn sub_14001CC50(__int64 a1, __int64 a2, __int64 a3)
{
__int64 v3[2]; // [rsp+28h] [rbp-40h] BYREF
__int64 v4[6]; // [rsp+38h] [rbp-30h] BYREF
v3[0] = a1;
v3[1] = a2;
v4[2] = (__int64)v3;
v4[3] = 1i64;
v4[0] = 0i64;
v4[4] = (__int64)"from_str_radix_int: must lie in the range `[2, 36]` - found ";
v4[5] = 0i64;
sub_14001CBB0((__int64)v4, a3);
}
//----- (000000014001CCA0) ----------------------------------------------------
void __fastcall __noreturn sub_14001CCA0(__int64 a1, __int64 a2)
{
__int64 v2[8]; // [rsp+28h] [rbp-40h] BYREF
v2[0] = a1;
v2[1] = a2;
v2[4] = (__int64)v2;
v2[5] = 1i64;
v2[2] = 0i64;
v2[6] = (__int64)"from_str_radix_int: must lie in the range `[2, 36]` - found ";
v2[7] = 0i64;
sub_14001CBF0();
BUG();
}
//----- (000000014001CD00) ----------------------------------------------------
void __fastcall __noreturn sub_14001CD00(__int64 a1, __int64 a2, __int64 a3)
{
__int64 v3; // [rsp+28h] [rbp-60h] BYREF
__int64 v4; // [rsp+30h] [rbp-58h] BYREF
__int64 v5[4]; // [rsp+38h] [rbp-50h] BYREF
__int64 v6[6]; // [rsp+58h] [rbp-30h] BYREF
v3 = a1;
v4 = a2;
v5[0] = (__int64)&v4;
v5[1] = (__int64)sub_14001AD00;
v5[2] = (__int64)&v3;
v5[3] = (__int64)sub_14001AD00;
v6[2] = (__int64)&off_140021928;
v6[3] = 2i64;
v6[0] = 0i64;
v6[4] = (__int64)v5;
v6[5] = 2i64;
sub_14001CBB0((__int64)v6, a3);
}
// 140021928: using guessed type char *off_140021928;
//----- (000000014001CD80) ----------------------------------------------------
void __noreturn sub_14001CD80()
{
sub_14001CCA0(
(__int64)"panic in a function that cannot unwindmatches!===assertion failed: `(left right)`\n"
" left: ``,\n"
" right: ``: ",
38i64);
}
//----- (000000014001CDA0) ----------------------------------------------------
void __fastcall __noreturn sub_14001CDA0(
char a1,
__int64 a2,
__int64 a3,
__int64 a4,
__int64 a5,
__int128 *a6,
__int64 a7)
{
char *v7; // rcx
__int64 v8; // rdx
__int128 v9; // xmm0
__int128 v10; // xmm1
char *v11; // [rsp+20h] [rbp-D8h] BYREF
__int64 v12; // [rsp+28h] [rbp-D0h]
__int64 v13[2]; // [rsp+30h] [rbp-C8h] BYREF
__int64 v14[2]; // [rsp+40h] [rbp-B8h] BYREF
char **v15; // [rsp+50h] [rbp-A8h] BYREF
__int64 (__fastcall *v16)(__int64, __int64 *); // [rsp+58h] [rbp-A0h]
__int64 *v17; // [rsp+60h] [rbp-98h]
__int64 (__fastcall *v18)(_QWORD *); // [rsp+68h] [rbp-90h]
__int64 *v19; // [rsp+70h] [rbp-88h]
__int64 (__fastcall *v20)(_QWORD *); // [rsp+78h] [rbp-80h]
__int128 *v21; // [rsp+80h] [rbp-78h]
bool (__fastcall *v22)(__int64 *, __int64 *); // [rsp+88h] [rbp-70h]
__int64 v23[2]; // [rsp+90h] [rbp-68h] BYREF
void **v24; // [rsp+A0h] [rbp-58h]
__int64 v25; // [rsp+A8h] [rbp-50h]
__int64 *v26; // [rsp+B0h] [rbp-48h]
__int64 v27; // [rsp+B8h] [rbp-40h]
__int128 v28[3]; // [rsp+C0h] [rbp-38h] BYREF
v13[0] = a2;
v13[1] = a3;
v14[0] = a4;
v14[1] = a5;
if ( a1 )
{
if ( a1 != 1 )
{
v11 = "matches!===assertion failed: `(left right)`\n left: ``,\n right: ``: ";
v8 = a7;
v12 = 7i64;
if ( !*((_QWORD *)a6 + 2) )
{
LABEL_6:
v15 = &v11;
v16 = sub_14001AFA0;
v17 = v13;
v18 = sub_14001AF40;
v19 = v14;
v20 = sub_14001AF40;
v24 = &off_140021A00;
v25 = 4i64;
v23[0] = 0i64;
v26 = (__int64 *)&v15;
v27 = 3i64;
sub_14001CBB0((__int64)v23, v8);
}
LABEL_8:
v9 = *a6;
v10 = a6[1];
v28[2] = a6[2];
v28[1] = v10;
v28[0] = v9;
v15 = &v11;
v16 = sub_14001AFA0;
v17 = v13;
v18 = sub_14001AF40;
v19 = v14;
v20 = sub_14001AF40;
v21 = v28;
v22 = sub_140017290;
v24 = &off_1400219B8;
v25 = 4i64;
v23[0] = 0i64;
v26 = (__int64 *)&v15;
v27 = 4i64;
sub_14001CBB0((__int64)v23, v8);
}
v7 = "!===assertion failed: `(left right)`\n left: ``,\n right: ``: ";
}
else
{
v7 = "==assertion failed: `(left right)`\n left: ``,\n right: ``: ";
}
v11 = v7;
v8 = a7;
v12 = 2i64;
if ( !*((_QWORD *)a6 + 2) )
goto LABEL_6;
goto LABEL_8;
}
// 1400219B8: using guessed type void *off_1400219B8;
// 140021A00: using guessed type void *off_140021A00;
//----- (000000014001CF90) ----------------------------------------------------
void __fastcall __noreturn sub_14001CF90(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5)
{
__int64 v5[2]; // [rsp+28h] [rbp-70h] BYREF
__int64 v6[2]; // [rsp+38h] [rbp-60h] BYREF
__int64 v7[4]; // [rsp+48h] [rbp-50h] BYREF
__int64 v8[6]; // [rsp+68h] [rbp-30h] BYREF
v5[0] = a1;
v5[1] = a2;
v6[0] = a3;
v6[1] = a4;
v7[0] = (__int64)v5;
v7[1] = (__int64)sub_14001AFA0;
v7[2] = (__int64)v6;
v7[3] = (__int64)sub_14001AF40;
v8[2] = (__int64)&off_140021A48;
v8[3] = 2i64;
v8[0] = 0i64;
v8[4] = (__int64)v7;
v8[5] = 2i64;
sub_14001CBB0((__int64)v8, a5);
}
// 140021A48: using guessed type char *off_140021A48;
//----- (000000014001D030) ----------------------------------------------------
void __fastcall __noreturn sub_14001D030(__int64 a1, __int64 a2, __int64 a3)
{
sub_140018C60(a1, a2, a3);
}
//----- (000000014001D040) ----------------------------------------------------
void __fastcall __noreturn sub_14001D040(__int64 a1, __int64 a2, __int64 a3)
{
sub_140018CE0(a1, a2, a3);
}
//----- (000000014001D050) ----------------------------------------------------
void __fastcall __noreturn sub_14001D050(__int64 a1, __int64 a2, __int64 a3)
{
sub_140018D60(a1, a2, a3);
}
//----- (000000014001D060) ----------------------------------------------------
void __fastcall __noreturn sub_14001D060(__int64 a1)
{
__int64 v1[6]; // [rsp+28h] [rbp-30h] BYREF
v1[2] = (__int64)&off_140021EC0;
v1[3] = 1i64;
v1[0] = 0i64;
v1[4] = (__int64)"from_str_radix_int: must lie in the range `[2, 36]` - found ";
v1[5] = 0i64;
sub_14001CBB0((__int64)v1, a1);
}
// 140021EC0: using guessed type char *off_140021EC0;
//----- (000000014001D0B0) ----------------------------------------------------
void __fastcall __noreturn sub_14001D0B0(
char *a1,
unsigned __int64 a2,
unsigned __int64 a3,
unsigned __int64 a4,
__int64 a5)
{
sub_140019A60(a1, a2, a3, a4, a5);
}
// nfuncs=446 queued=363 decompiled=363 lumina nreq=0 worse=0 better=0
#error "There were 2 decompilation failure(s) on 363 function(s)"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment