/* This file was generated by the Hex-Rays decompiler version 8.3.0.230608. Copyright (c) 2007-2021 Hex-Rays Detected compiler: GNU C++ */ #include #include #include //------------------------------------------------------------------------- // Function declarations #define __thiscall __cdecl // Test compile in C mode LONG __stdcall TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo); // idb // void __usercall __noreturn sub_4011A0(__int32 a1@); int _mingw32_init_mainargs(); // void __usercall __noreturn mainCRTStartup(__int32 a1@); // void __usercall __noreturn WinMainCRTStartup(__int32 a1@); // int __cdecl atexit(void (__cdecl *)()); int __gcc_register_frame(); void __cdecl __gcc_deregister_frame(); // idb void __cdecl __tcf_1(); // idb // void __usercall std::_Vector_base::_M_deallocate(void *a1@); void __fastcall std::pair::~pair(void **a1); // _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); unsigned int __thiscall std::string::basic_string(void **this, char *a2); void __fastcall std::vector::~vector(void ***a1); int __cdecl Usage(int a1, const char **a2); int __cdecl ReadFile(char *FileName, unsigned int *a2); _DWORD *__cdecl Trim(_DWORD *a1, int a2); _DWORD *__cdecl GetNextArg(_DWORD *a1, int *a2, int a3); int __cdecl EscapeToJsonString(int a1, int a2); int __cdecl DictToJsonString(int a1, int a2); void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); void __cdecl __tcf_3(); // idb // void __usercall std::_Vector_base::_M_deallocate(void *a1@); // _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); int snprintf_constprop_0(char *Buffer, size_t BufferCount, int a3, ...); // volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); unsigned int __thiscall std::string::basic_string(void **this, char *a2); void **__cdecl WXSS::RemoveQuote(void **a1, char **a2); int __stdcall WXSS::XCompiler::DealRPX(int *a1, int a2); int __thiscall WXSS::XCompiler::GetHostRule(_DWORD *this, _DWORD *a2); int __thiscall WXSS::XCompiler::ShowTree(_DWORD *this, _DWORD *a2); int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); void __cdecl __tcf_1_0(); // idb void __cdecl __tcf_2(); // idb void __fastcall std::pair>::~pair(int a1); void __fastcall std::vector>::~vector(void **a1); volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); int __thiscall WXSS::XCompiler::GetCompiled(int *this, int a2, WXSS::Token *a3); int __thiscall WXSS::XCompiler::GetJSCompiled(int *this, int a2, _DWORD *a3); int __thiscall WXSS::XCompiler::GetWellFormattedJSCompiled(int *this, int a2, _DWORD *a3); void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int a1); void __fastcall std::vector::~vector(void ***a1, int a2); void __fastcall WXSS::XCompiler::~XCompiler(void **a1); void __fastcall std::deque::~deque(int a1); int __thiscall WXSS::XCompiler::GenExpr(_DWORD *this, int a2, int a3, WXSS::Token *a4); int __thiscall WXSS::XCompiler::GetPageCss(int *this, int *a2, _DWORD *a3, int a4); int __thiscall WXSS::XCompiler::MarkImported(_DWORD *this, int a2); int __thiscall WXSS::XCompiler::GetCommHead(int *this, _DWORD *a2, _DWORD *a3, char a4, int *a5); void __fastcall std::deque>::~deque(int a1); int __fastcall WXSS::CSSTreeLib::Parser::~Parser(int a1); int __cdecl WXSS::LintAndParseCSS(int *a1, char **a2, WXSS::Token *a3, unsigned int *a4, char a5, char a6, char a7, void (__cdecl *a8)(void *), int a9); // void __userpurge WXSS::XCompiler::XCompiler(int a1@, unsigned int a2@, _DWORD *a3, char a4, int a5); void *__cdecl WXSS::LintAndParseCSSList(_DWORD *a1, int a2, unsigned int *a3, int a4, int a5, unsigned int a6, char a7, char a8, int a9); // void *__usercall WXSS::NewLintAndParseCSSList@(unsigned int a1@, _DWORD *a2, int *a3, unsigned int *a4, int a5, int a6, char a7, int a8, int *a9); // void __usercall std::_Vector_base::_M_deallocate(void *a1@); // _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); void __fastcall std::vector::~vector(void ***a1); void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, void ***a2); int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int *a3); int __cdecl MMBizWxaAppComm::PathCombine(int a1, _DWORD *a2, _DWORD *a3); void __fastcall std::vector>::~vector(void **a1); int __cdecl WXML::RPX::accept(WXML::RPX *this, int (*a2)[266], bool *a3, int *a4); int __cdecl WXML::RPX::acceptID(WXML::RPX *this, bool *a2); int __cdecl WXML::RPX::acceptStr(WXML::RPX *this, bool *a2); int __cdecl WXML::RPX::acceptNum(WXML::RPX *this, bool *a2); int __cdecl WXML::RPX::acceptSymbol(WXML::RPX *this, char *a2, int *a3); void __cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3); void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2); int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int a1, int a2, int a3); int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2); int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int a1, int a2, int a3); int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2); void __cdecl WXML::Rewrite::ToStringCode(int *a1, _DWORD *a2); int __cdecl WXML::Rewrite::ToStringCode(int a1, int *a2); int __cdecl WXML::Rewrite::GetToken(int a1, int a2); unsigned int __thiscall std::string::basic_string(void **this, char *a2); BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int *a2, char *a3, char *a4); int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int *a2, int *a3, int a4, int a5); void __fastcall std::vector>::~vector(void **a1); std::ostream::sentry *__cdecl WXML::RenderStrToken(_DWORD *a1, int a2); char __cdecl WXML::IsFloat(WXML *this); char __cdecl WXML::IsFloat(int a1); unsigned int __thiscall std::string::basic_string(void **this, char *a2); unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3); void __cdecl WXML::StrSplitList4RPX(char *Str, char *SubStr, char *a3, char **a4); void __cdecl WXML::StrSplitList4ClassSuffix(char *Str, char *SubStr, char **a3); void __cdecl WXML::GetStrForMakingCSS(char **a1, int a2); void __cdecl __tcf_1_1(); // idb unsigned int __thiscall std::string::basic_string(void **this, char *a2); // volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int a1); void __fastcall std::vector::~vector(void **a1); // _DWORD *__usercall std::__relocate_a_1>@(_DWORD *a1@, _DWORD *a2@, _DWORD *a3@); volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); // int __userpurge WXSS::CSSTreeLib::Parser::Parse@(int a1@, void (__cdecl *a2)(void *)@, char **a3, int *a4, unsigned int *a5, int a6); void __cdecl __tcf_0(); // idb void __cdecl __tcf_0_0(); // idb void __thiscall WXSS::Tokenizer::Tokenizer(int this, char *a2, int a3); void WXSS::Tokenizer::InitTransitTable(); int WXSS::Tokenizer::InitSubStrCheckingCaluseTable(); int __cdecl WXSS::Tokenizer::TryGetAnotherTypeByAnySubStr(int a1, int a2, int a3, int a4); int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); // _DWORD *__usercall std::__relocate_a_1>@(_DWORD *a1@, _DWORD *a2@, _DWORD *a3@); int __thiscall WXSS::Tokenizer::GetTokens(int *this, int a2, unsigned int *a3, int a4); void __cdecl __tcf_1_2(); // idb unsigned int __thiscall std::string::basic_string(void **this, char *a2); // volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); void __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); void __fastcall std::vector>::~vector(void **a1); void __fastcall std::vector::~vector(void ***a1); void __thiscall std::vector::_M_move_assign(void *this, int *a2); int WXSS::CSSTreeLib::TransitTable::GetTopType(); int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_move_assign(int this, _DWORD *a2); void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int a1); _DWORD WXSS::CSSTreeLib::TransitTable::Init(WXSS::CSSTreeLib::TransitTable *__hidden this); // idb // LPTOP_LEVEL_EXCEPTION_FILTER __stdcall SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); // HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName); // FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName); // HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName); // BOOL __stdcall FreeLibrary(HMODULE hLibModule); // void __stdcall __noreturn ExitProcess(UINT uExitCode); // _DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4); // _DWORD *__usercall d_ref_qualifier@(_DWORD *a1@, _DWORD *a2@); // _DWORD *__usercall d_count_templates_scopes@(_DWORD *result@, _DWORD *a2@, int a3@); // int __usercall d_append_buffer@(int result@, char *a2@, int a3@); // int __usercall d_number_isra_0@(char **a1@); // _DWORD *__usercall d_number_component@(int a1@); // int __usercall d_compact_number@(int a1@); // _DWORD *__usercall d_template_param@(_DWORD *a1@); // _DWORD *__usercall d_source_name@(int a1@); // _DWORD *__usercall d_abi_tags@(_DWORD *a1@, _DWORD *comp@); // _DWORD *__usercall d_substitution@(_DWORD *a1@, char a2@
); // int __usercall d_call_offset@(int a1@, int a2@); // BOOL __usercall next_is_type_qual_isra_0@(char *a1@); // int __usercall d_discriminator@(int a1@); _BYTE *__cdecl d_growable_string_callback_adapter(void *Src, size_t Size, unsigned int *a3); // _DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int a2@); // _DWORD *__usercall d_lookup_template_argument_isra_0@(int a1@, int *a2@); // _DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@); // _DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
); // _DWORD *__usercall d_expression_1@(_DWORD *a1@); // int *__usercall d_template_arg@(_DWORD *a1@, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12); // _DWORD *__usercall d_template_args_1@(_DWORD *a1@); // _DWORD *__usercall d_template_args@(_DWORD *a1@); // unsigned int *__usercall d_encoding@(int a1@, int a2@, int a3@); // int *__usercall d_name@(_DWORD *a1@, int a2@); // int *__usercall d_type@(int a1@, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12); // _DWORD *__usercall d_operator_name@(_DWORD *a1@); // int __usercall d_parmlist@(_DWORD *a1@); // int **__usercall d_cv_qualifiers@(_DWORD *a1@, int **a2@, int a3@); // _DWORD *__usercall d_bare_function_type@(_DWORD *a1@, int a2@); // _DWORD *__usercall d_function_type@(int a1@); // _DWORD *__usercall d_unqualified_name@(_DWORD *a1@); // _DWORD *__usercall d_expr_primary@(_DWORD *a1@); // int __usercall d_print_comp@(int result@, int a2@, int *a3@); // int __usercall d_print_mod@(int a1@, int a2@, _DWORD *a3@); // int __usercall d_print_function_type_isra_0@(int a1@, int a2@, int *a3@, int **a4); // int __usercall d_print_mod_list@(int result@, int a2@, int **a3@, int a4); // int __usercall d_print_array_type_isra_0@(int a1@, int a2@, int *a3@, int **a4); // int __usercall d_print_expr_op@(int a1@, int a2@, _DWORD *a3@); // int __usercall d_print_subexpr@(int a1@, int a2@, _DWORD *a3@); // int __usercall d_maybe_print_fold_expression_isra_0@(int a1@, int a2@, int a3@, int a4); // BOOL __usercall d_demangle_callback_constprop_0@(char *a1@, int a2@, int a3@); char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus); unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, int a2, int a3); char **_setargv(); // unsigned int __usercall __cpu_features_init@(__int32 a1@); void __cdecl __do_global_dtors(); // idb int __do_global_ctors(); int __main(); int __stdcall TlsCallback_1(int a1, int a2, int a3); int __stdcall __dyn_tls_init(int a1, int a2, int a3); int __tlregdtor(); void sub_42AD90(); int __cdecl ___w64_mingwthr_add_key_dtor(int a1, int a2); int __cdecl ___w64_mingwthr_remove_key_dtor(int a1); int __cdecl __mingw_TLScallback(int a1, int a2); void __noreturn sub_42AFC0(char *Format, ...); // DWORD __usercall sub_42B010@(const void *lpAddress@, int a2@, DWORD a3@); int _pei386_runtime_relocator(); int __cdecl fesetenv(const fenv_t *Env); long double __cdecl strtold(const char *String, char **EndPtr); int *__cdecl __increment_D2A(int *a1); // int __usercall sub_42B4C0@(int *a1@, int *a2@, _DWORD *a3@, double a4, int a5, int a6, _DWORD *a7); _DWORD *__cdecl __decrement_D2A(int a1); int *__cdecl __set_ones_D2A(unsigned int a1, int a2); int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, int *a5); int __cdecl __hexnan_D2A(unsigned __int8 **a1, int *a2, int *a3); // void __usercall sub_42D9B0(int a1@); void __cdecl sub_42DA80(); // idb int *__cdecl __Balloc_D2A(int a1); void __cdecl __Bfree_D2A(unsigned int a1); int *__cdecl __multadd_D2A(int *a1, int a2, int a3); int *__cdecl __i2b_D2A(int a1); int *__cdecl __mult_D2A(int a1, int a2); int __cdecl __pow5mult_D2A(int *a1, int a2); int *__cdecl __lshift_D2A(_DWORD *a1, int a2); int __cdecl __cmp_D2A(int a1, int a2); int *__cdecl __diff_D2A(int a1, int a2); long double __cdecl __b2d_D2A(int a1, _DWORD *a2); int *__cdecl __d2b_D2A(double a1, _DWORD *a2, _DWORD *a3); int __cdecl __strcp_D2A(__int64 a1); float __cdecl strtof(const char *String, char **EndPtr); wint_t __cdecl btowc(int Ch); int __cdecl vsnprintf(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList); void *__cdecl __mingw_realloc(unsigned int a1, size_t a2); int __cdecl __mingw_free(unsigned int a1); // char *__usercall sub_42E880@(char *a1@, int a2@, __int16 a3@); // int __usercall sub_42EBB0@(char *a1@, _BYTE *a2@, int a3@); // int __usercall sub_42EDE0@(char *a1@, unsigned int a2@); // int __usercall sub_42EE80@(int a1@, _DWORD *a2@); // int __usercall sub_42EEE0@(_DWORD *a1@, _DWORD *a2@, int a3@); // int __usercall sub_42EF30@(_DWORD *a1@); // int __usercall sub_42EF80@(char *a1@, unsigned int a2@, int a3@, _DWORD *a4); int *__cdecl __mingw_glob(char *Str, int a2, int a3, char **a4); int __cdecl __mingw_globfree(int a1); char *__cdecl __mingw_dirname(char *Source); // HANDLE __usercall sub_42FDA0@(const CHAR *lpFileName@, int a2@); // BOOL __usercall sub_42FE90@(void *hFindFile@, int a2@); int __cdecl __mingw_opendir(char *Path); // idb int __cdecl __mingw_readdir(int a1); int __cdecl __mingw_closedir(unsigned int a1); _DWORD *__cdecl __mingw_rewinddir(int a1); int __cdecl __mingw_telldir(int a1); int *__cdecl __mingw_seekdir(int a1, int a2); int __mingw_mbrtowc_codeset_init(); UINT __cdecl __mingw_mbrlen_cur_max_init(UINT a1); int __mingw_mbrlen_cur_max(); int __cdecl __mingw_mbtowc_convert(LPCCH lpMultiByteStr, int a2, LPWSTR lpWideCharStr, int cchWideChar); // idb int __cdecl __mingw_mbrscan_begin(_WORD **a1, int *a2, int *a3, unsigned int *a4); int __cdecl __mingw_mbtowc_copy(LPWSTR a1, LPCCH a2, unsigned int a3); size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State); size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State); int __cdecl wctob(wint_t WCh); wctype_t __cdecl wctype(const char *name); wchar_t *__cdecl wmemchr(const wchar_t *S, wchar_t C, size_t N); int __cdecl wmemcmp(const wchar_t *S1, const wchar_t *S2, size_t N); wchar_t *__cdecl wmemcpy(wchar_t *S1, const wchar_t *S2, size_t N); wchar_t *__cdecl wmemmove(wchar_t *S1, const wchar_t *S2, size_t N); wchar_t *__cdecl wmemset(wchar_t *S, wchar_t C, size_t N); int __cdecl __gethex_D2A(unsigned __int8 **a1, int *a2, int *a3, int **a4, int a5); int __cdecl __rshift_D2A(int a1, int a2); int __cdecl __trailz_D2A(int a1); int *__cdecl __s2b_D2A(int a1, int a2, int a3, int a4, int a5); long double __cdecl __ratio_D2A(int a1, int a2); int __cdecl __match_D2A(char **a1, char *a2); _DWORD *__cdecl __copybits_D2A(_DWORD *a1, int a2, int a3); int __cdecl __any_on_D2A(int a1, int a2); int *__cdecl __sum_D2A(int *a1, int *a2); int hexdig_init_D2A(); // int __usercall sub_431B90@(int *a1@); // int *__usercall sub_431C50@(int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7); // int __usercall sub_431D50@(int result@, int a2@); // int __usercall sub_431DB0@(int a1@, int a2@, int a3@); // int __usercall sub_431EE0@(char *a1@, int a2@, int a3@); // int __usercall sub_431FB0@(int a1@, int a2@, int a3@); // int __usercall sub_432050@(wchar_t a1@, int a2@, int a3@); // int __usercall sub_4320D0@(int a1@); // int __usercall sub_4321B0@(_DWORD *a1@); // int __usercall sub_432230@(int *a1@); // int __usercall sub_432260@(unsigned __int8 *a1@); // int __usercall sub_4322E0@(int a1@); // int __usercall sub_432390@(int a1@, int a2@); // int __usercall sub_4323D0@(unsigned int a1@, unsigned int a2@, int a3@); // int __usercall sub_4327A0@(int a1@, _BYTE *a2@, int a3@, int a4); // int __usercall sub_432B10@(int a1@, _BYTE *a2@, int a3@, _DWORD *a4); // void __usercall sub_432BE0(_DWORD *a1@, long double a2); // void __usercall sub_432C90(int a1@, long double a2); // void __usercall sub_432D60(_DWORD *a1@, long double a2); // int __usercall sub_432EF0@(_DWORD *a1@, long double a2); // int __usercall sub_4334A0@(int a1@, int a2@, int a3@, int a4); int __cdecl __mingw_pformat(__int16 a1, int a2, int a3, char *a4, double *a5); unsigned int __cdecl __mingw_memalign_base(unsigned int a1, unsigned int *a2); void *__cdecl __mingw_memalign_realloc(int a1, int *a2, size_t a3); int __mb_codeset_for_locale(); UINT __cdecl __mb_cur_max_for_codeset(UINT CodePage); int __cdecl __mingw_mbrtowc_handler(_WORD *a1, int a2, unsigned int a3, _DWORD *a4); int __mingw_wctomb_codeset_init(); UINT __cdecl __mingw_wctomb_cur_max_init(UINT a1); int __mingw_wctomb_cur_max(); UINT __cdecl __mingw_wctomb_convert(LPSTR lpMultiByteStr, int cbMultiByte, WCHAR *lpWideCharStr, int cchWideChar); int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, int a5, int a6, int *a7, int **a8); int *__cdecl __rv_alloc_D2A(unsigned int a1); int *__cdecl __nrv_alloc_D2A(char *a1, _DWORD *a2, unsigned int a3); void __cdecl __freedtoa(_DWORD *a1); unsigned int __cdecl __quorem_D2A(int a1, int a2); int __cdecl __gthr_win32_once(__gthread_once_t *once, void (*func)(void)); int __cdecl __gthr_win32_key_create(__gthread_key_t *key, void (*dtor)(void *)); int __cdecl __gthr_win32_key_delete(__gthread_key_t key); void *__cdecl __gthr_win32_getspecific(__gthread_key_t key); int __cdecl __gthr_win32_setspecific(__gthread_key_t key, const void *ptr); void __cdecl __gthr_win32_mutex_init_function(__gthread_mutex_t *mutex); void __cdecl __gthr_win32_mutex_destroy(__gthread_mutex_t *mutex); int __cdecl __gthr_win32_mutex_lock(__gthread_mutex_t *mutex); int __cdecl __gthr_win32_mutex_trylock(__gthread_mutex_t *mutex); int __cdecl __gthr_win32_mutex_unlock(__gthread_mutex_t *mutex); void __cdecl __gthr_win32_recursive_mutex_init_function(__gthread_recursive_mutex_t *mutex); int __cdecl __gthr_win32_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex); int __cdecl __gthr_win32_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex); int __cdecl __gthr_win32_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex); int __cdecl __gthr_win32_recursive_mutex_destroy(__gthread_recursive_mutex_t *mutex); // char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4); // int __usercall base_of_encoded_value@(char a1@, _DWORD *a2@); // unsigned int __usercall execute_cfa_program@(int *a1@, unsigned int a2@, _DWORD *a3@, unsigned int a4); void init_dwarf_reg_size_table(); // idb // int __usercall uw_frame_state_for@(dwarf_eh_bases *a1@, _DWORD *a2@); // int __usercall uw_install_context_1@(int a1@, int a2@); // int __usercall execute_stack_op@(char *a1@, unsigned int a2@, int a3@, int a4); // unsigned int __usercall uw_update_context_1@(int a1@, int a2@); // unsigned int __usercall uw_init_context_1@(int a1@, int a2@, int a3@); // int __usercall uw_update_context@(int a1@, int a2@); // int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, dwarf_eh_bases *a2@, int *a3@); // int __usercall _Unwind_ForcedUnwind_Phase2@(_Unwind_Exception *exc@, dwarf_eh_bases *context@, unsigned int *frames_p@); int __cdecl _Unwind_GetGR(int a1, int a2); _Unwind_Word __cdecl _Unwind_GetCFA(_Unwind_Context *context); _DWORD *__cdecl _Unwind_SetGR(int a1, int a2, int a3); _Unwind_Ptr __cdecl _Unwind_GetIP(_Unwind_Context *context); _Unwind_Ptr __cdecl _Unwind_GetIPInfo(_Unwind_Context *context, int *ip_before_insn); void __cdecl _Unwind_SetIP(_Unwind_Context *context, _Unwind_Ptr val); void *__cdecl _Unwind_GetLanguageSpecificData(_Unwind_Context *context); _Unwind_Ptr __cdecl _Unwind_GetRegionStart(_Unwind_Context *context); void *__cdecl _Unwind_FindEnclosingFunction(void *pc); _Unwind_Ptr __cdecl _Unwind_GetDataRelBase(_Unwind_Context *context); _Unwind_Ptr __cdecl _Unwind_GetTextRelBase(_Unwind_Context *context); frame_state *__cdecl __frame_state_for(void *pc_target, frame_state *state_in); void __cdecl _Unwind_DebugHook(void *cfa, void *handler); _Unwind_Reason_Code __cdecl _Unwind_RaiseException(_Unwind_Exception *exc); _Unwind_Reason_Code __cdecl _Unwind_ForcedUnwind(_Unwind_Exception *exc, _Unwind_Stop_Fn stop, void *stop_argument); // void __usercall __noreturn _Unwind_Resume(int a1@, int a2@, _Unwind_Exception *exc); // void __usercall __noreturn _Unwind_Resume_or_Rethrow(int a1@, int a2@, _Unwind_Exception *exc); void __cdecl _Unwind_DeleteException(_Unwind_Exception *exc); _Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn trace, void *trace_argument); int __cdecl fde_unencoded_compare(object *ob, const fde *x, const fde *y); // void __usercall frame_downheap(object *ob@, fde_compare_t fde_compare@, const fde **a@, int lo, int hi); idb // void __usercall frame_heapsort(object *ob@, fde_compare_t fde_compare@, fde_vector *erratic@); idb void init_object_mutex(); // idb // int __usercall size_of_encoded_value@(char a1@); // int __usercall base_from_object@(char a1@, int a2@); // char *__usercall read_encoded_value_with_base_0@(char a1@, int *a2@, int *a3@, int *a4); int __cdecl fde_single_encoding_compare(object *ob, const fde *x, const fde *y); // int __usercall get_cie_encoding@(const dwarf_cie *cie@); idb // size_t __usercall classify_object_over_fdes@(object *ob@, const fde *this_fde@); idb // void __usercall add_fdes(object *ob@, fde_accumulator *accu@, const fde *this_fde@); idb // const fde *__usercall linear_search_fdes@(object *ob@, const fde *this_fde@, char *pc@); int __cdecl fde_mixed_encoding_compare(object *ob, const fde *x, const fde *y); // const fde *__usercall search_object@(int a1@, char *a2@); // void __usercall __register_frame_info_bases_part_0(const void *begin@, object *ob@, void *tbase@, void *dbase); idb void __cdecl __register_frame_info_bases(const void *begin, object *ob, void *tbase, void *dbase); void __cdecl __register_frame_info(const void *begin, object *ob); void __cdecl __register_frame(void *begin); void __cdecl __register_frame_info_table_bases(void *begin, object *ob, void *tbase, void *dbase); void __cdecl __register_frame_info_table(void *begin, object *ob); void __cdecl __register_frame_table(void *begin); void *__cdecl __deregister_frame_info_bases(const void *begin); void *__cdecl __deregister_frame_info(const void *begin); void __cdecl __deregister_frame(void *begin); const fde *__cdecl _Unwind_Find_FDE(void *pc, dwarf_eh_bases *bases); void __cdecl emutls_destroy(void *ptr); // _DWORD *__usercall emutls_alloc@(size_t *a1@); DWORD emutls_init(); _DWORD *__cdecl __emutls_get_address(size_t *a1); void __cdecl __emutls_register_common(__emutls_object *obj, word size, word align, void *templ); // int __cdecl write(int FileHandle, const void *Buf, unsigned int MaxCharCount); // int __cdecl stricoll(const char *String1, const char *String2); // char *__cdecl strdup(const char *String); // int __cdecl read(int FileHandle, void *DstBuf, unsigned int MaxCharCount); // int __cdecl lseek(int FileHandle, int Offset, int Origin); // int __cdecl fstat(const int FileHandle, struct _stat32 *const Stat); // FILE *__cdecl fdopen(int FileHandle, const char *Format); // size_t __cdecl wcsxfrm(wchar_t *Destination, const wchar_t *Source, size_t MaxCount); // size_t __cdecl wcstombs(char *Dest, const wchar_t *Source, size_t MaxCount); // size_t __cdecl wcslen(const wchar_t *String); // size_t __cdecl wcsftime(wchar_t *Buffer, size_t SizeInWords, const wchar_t *Format, const struct tm *Tm); // int __cdecl wcscoll(const wchar_t *String1, const wchar_t *String2); // int __cdecl vfprintf(FILE *const Stream, const char *const Format, va_list ArgList); // wint_t __cdecl ungetwc(wint_t Character, FILE *Stream); // int __cdecl ungetc(int Character, FILE *Stream); // wint_t __cdecl towupper(wint_t C); // wint_t __cdecl towlower(wint_t C); // int __cdecl tolower(int C); // size_t __cdecl strxfrm(char *Destination, const char *Source, size_t MaxCount); // unsigned int __cdecl strtoul(const char *String, char **EndPtr, int Radix); // double __cdecl strtod(const char *String, char **EndPtr); // char *__cdecl strstr(const char *Str, const char *SubStr); // char *__cdecl strncpy(char *Destination, const char *Source, size_t Count); // int __cdecl strncmp(const char *Str1, const char *Str2, size_t MaxCount); // size_t __cdecl strlen(const char *Str); // size_t __cdecl strftime(char *Buffer, size_t SizeInBytes, const char *Format, const struct tm *Tm); // char *__cdecl strerror(int ErrorMessage); // char *__cdecl strcpy(char *Destination, const char *Source); // int __cdecl strcoll(const char *String1, const char *String2); // int __cdecl strcmp(const char *Str1, const char *Str2); // char *__cdecl strchr(const char *Str, int Val); // int sprintf(char *const Buffer, const char *const Format, ...); // _crt_signal_t __cdecl signal(int Signal, _crt_signal_t Function); // int __cdecl setvbuf(FILE *Stream, char *Buffer, int Mode, size_t Size); // char *__cdecl setlocale(int Category, const char *Locale); // wint_t __cdecl putwc(wchar_t Character, FILE *Stream); // int __cdecl puts(const char *Buffer); // int printf(const char *const Format, ...); // void *__cdecl memset(void *, int Val, size_t Size); // void *__cdecl memmove(void *, const void *Src, size_t Size); // void *__cdecl memcpy(void *, const void *Src, size_t Size); // int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size); // void *__cdecl memchr(const void *Buf, int Val, size_t MaxCount); // size_t __cdecl mbstowcs(wchar_t *Dest, const char *Source, size_t MaxCount); // void *__cdecl malloc(size_t Size); // struct lconv *__cdecl localeconv(); // int __cdecl iswctype(wint_t C, wctype_t Type); // wint_t __cdecl getwc(FILE *Stream); // char *__cdecl getenv(const char *VarName); // size_t __cdecl fwrite(const void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); // int __cdecl ftell(FILE *Stream); // int __cdecl fseek(FILE *Stream, int Offset, int Origin); // size_t __cdecl fread(void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); // int __cdecl fputs(const char *Buffer, FILE *Stream); // int __cdecl fputc(int Character, FILE *Stream); // int fprintf(FILE *const Stream, const char *const Format, ...); // FILE *__cdecl fopen(const char *FileName, const char *Mode); // char *__cdecl fgets(char *Buffer, int MaxCount, FILE *Stream); // int __cdecl fflush(FILE *Stream); // int __cdecl fclose(FILE *Stream); // void *__cdecl calloc(size_t Count, size_t Size); // int __cdecl atoi(const char *String); // void __cdecl __noreturn abort(); // FILE *__cdecl _wfopen(const wchar_t *FileName, const wchar_t *Mode); // int __cdecl _stricmp(const char *String1, const char *String2); // int __cdecl _setmode(int FileHandle, int Mode); // size_t __cdecl _msize(void *Block); // int __cdecl _isctype(int C, int Type); // char *__cdecl _fullpath(char *Buffer, const char *Path, size_t BufferCount); // int __cdecl _flsbuf(int Ch, FILE *File); // int __cdecl _filbuf(FILE *File); // int *__cdecl _errno(); // void __cdecl _cexit(); // int *__cdecl __p__fmode(); // char ***__cdecl __p__environ(); // int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak // int __stdcall WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCCH lpDefaultChar, LPBOOL lpUsedDefaultChar); // DWORD __stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); // SIZE_T __stdcall VirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); // BOOL __stdcall VirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); // BOOL __stdcall TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue); // LPVOID __stdcall TlsGetValue(DWORD dwTlsIndex); // BOOL __stdcall TlsFree(DWORD dwTlsIndex); // DWORD __stdcall TlsAlloc(); // void __stdcall Sleep(DWORD dwMilliseconds); // void __stdcall SetLastError(DWORD dwErrCode); // BOOL __stdcall ReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount); // int __stdcall MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); // void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend); // LONG __stdcall InterlockedExchange(volatile LONG *Target, LONG Value); // LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend); // void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // DWORD __stdcall GetLastError(); // DWORD __stdcall GetCurrentThreadId(); // LPSTR __stdcall GetCommandLineA(); // BOOL __stdcall GetCPInfo(UINT CodePage, LPCPINFO lpCPInfo); // BOOL __stdcall FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData); // HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData); // BOOL __stdcall FindClose(HANDLE hFindFile); // void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // HANDLE __stdcall CreateSemaphoreW(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName); BOOL __stdcall CloseHandle(HANDLE hObject); int __cdecl __mingwthr_key_dtor(int a1, int a2); int __cdecl _txnal_cow_string_D1(); void __cdecl __noreturn _txnal_cow_string_c_str(); void __cdecl __noreturn _txnal_sso_string_c_str(); char *__cdecl _txnal_logic_error_get_msg(char *a1); void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *a1); char *__cdecl _txnal_runtime_error_get_msg(char *a1); _DWORD *__cdecl _txnal_cow_string_C1_for_exceptions(_DWORD *a1); void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1); void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1); void __cdecl _ZGTtNSt11logic_errorC2EPKc(_DWORD *a1); void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1); int _ZGTtNSt11logic_errorD2Ev(); void __cdecl _ZGTtNSt11range_errorC2EPKc(_DWORD *a1); void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1); int _ZGTtNSt11range_errorD2Ev(); void __cdecl _ZGTtNSt12domain_errorC2EPKc(_DWORD *a1); void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1); int _ZGTtNSt12domain_errorD2Ev(); void __cdecl _ZGTtNSt12length_errorC2EPKc(_DWORD *a1); void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1); int _ZGTtNSt12length_errorD2Ev(); void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(_DWORD *a1); void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1); int _ZGTtNSt12out_of_rangeD2Ev(); void __cdecl _ZGTtNSt13runtime_errorC2EPKc(_DWORD *a1); void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1); int _ZGTtNSt13runtime_errorD2Ev(); void __cdecl _ZGTtNSt14overflow_errorC2EPKc(_DWORD *a1); void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1); int _ZGTtNSt14overflow_errorD2Ev(); void __cdecl _ZGTtNSt15underflow_errorC2EPKc(_DWORD *a1); void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1); int _ZGTtNSt15underflow_errorD2Ev(); void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(_DWORD *a1); void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1); int _ZGTtNSt16invalid_argumentD2Ev(); void __cdecl eh_globals_dtor(int *a1); // int __usercall get_ttype_entry@(int a1@, int a2@); // int __usercall get_adjusted_ptr@(int a1@, int a2@, int **a3@); // char *__usercall parse_lsda_header@(_Unwind_Context *a1@, char *a2@, int a3@); // int __usercall check_exception_spec@(int a1@, int a2@, int *a3@, int a4); // _Unwind_Ptr __usercall base_of_encoded_value@(char a1@, _Unwind_Context *context@); void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, _Unwind_Exception *a2); // char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4); void __cdecl __noreturn __cxxabiv1::__terminate(void (*a1)(void)); // idb void __cdecl __noreturn __cxxabiv1::__unexpected(void (*a1)(void)); // idb void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *a1); void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1); void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *this); // idb void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *a1); void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1); void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *this); // idb void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1); void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *this); // idb __gthread_mutex_t *`anonymous namespace'::get_locale_mutex(); void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1); void __cdecl `anonymous namespace'::io_error_category::~io_error_category(_anonymous_namespace_::io_error_category *this); // idb void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *a1); void (__cdecl ***`anonymous namespace'::__io_category_instance())(_anonymous_namespace_::io_error_category *__hidden this); void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *a1); // _DWORD *__usercall `anonymous namespace'::pool::free@(int a1@, struct type_info *a2, void (__cdecl *a3)(void *)); // unsigned int *__usercall `anonymous namespace'::pool::allocate@(int a1@); void `anonymous namespace'::init(void); // idb // unsigned int __usercall `anonymous namespace'::xwrite@(int a1@, char *a2@, unsigned int a3@); _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // weak _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // weak int __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); int __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // weak void __fastcall WXSS::CSSTreeLib::NonTerminal::~NonTerminal(void *a1); char __stdcall WXSS::CSSTreeLib::MarkHostRule::MarkGood(WXSS::CSSTreeLib::MarkHostRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); void __fastcall WXSS::CSSTreeLib::MarkHostRule::~MarkHostRule(void *a1); bool __stdcall WXSS::CSSTreeLib::AttrDebugRule::MarkGood(WXSS::CSSTreeLib::AttrDebugRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); void __fastcall WXSS::CSSTreeLib::AttrDebugRule::~AttrDebugRule(void *a1); // char __userpurge WXSS::CSSTreeLib::BlackListRule::MarkGood@(int a1@, WXSS::CSSTreeLib::BlackListRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3); void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(void *a1, int a2); void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(int a1, int a2); void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(int this, WXSS::Token *a2, unsigned __int8 a3); unsigned int __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(int this, WXSS::Token *a2); unsigned int __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(int this, int a2, int a3); int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int a1); int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int a1); void __stdcall WXSS::CSSTreeLib::RuleDebugRule::InsertOriginSelectorInfo(int *a1, unsigned int a2, int a3); bool __stdcall WXSS::CSSTreeLib::RuleDebugRule::MarkGood(WXSS::CSSTreeLib::RuleDebugRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); void __fastcall WXSS::CSSTreeLib::RuleDebugRule::~RuleDebugRule(void *a1); char *WXSS::CSSTreeLib::LexicalChecker::GetInstance(); char *WXSS::CSSTreeLib::LexicalChecker::GetInstance(); // WXSS::CSSTreeLib::LexicalChecker *__userpurge WXSS::CSSTreeLib::LexicalChecker::Init@(int a1@, WXSS::CSSTreeLib::LexicalChecker *this, bool a3); int __thiscall WXSS::CSSTreeLib::LexicalChecker::Traval(_DWORD **this, _DWORD *a2); char __stdcall WXSS::CSSTreeLib::ReWriteRpxRule::MarkGood(WXSS::CSSTreeLib::ReWriteRpxRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); void __fastcall WXSS::CSSTreeLib::ReWriteRpxRule::~ReWriteRpxRule(void *a1); char __stdcall WXSS::CSSTreeLib::MarkSelectorRule::MarkGood(WXSS::CSSTreeLib::MarkSelectorRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); void __fastcall WXSS::CSSTreeLib::MarkSelectorRule::~MarkSelectorRule(void *a1); char __stdcall WXSS::CSSTreeLib::RewriteImgUrlRule::MarkGood(WXSS::CSSTreeLib::RewriteImgUrlRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); void __fastcall WXSS::CSSTreeLib::RewriteImgUrlRule::~RewriteImgUrlRule(void *a1); char __stdcall WXSS::CSSTreeLib::RewriteSelectorRule::MarkGood(WXSS::CSSTreeLib::RewriteSelectorRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); void __fastcall WXSS::CSSTreeLib::RewriteSelectorRule::~RewriteSelectorRule(void *a1); void __fastcall WXSS::CSSTreeLib::EPS::~EPS(void *a1); int __fastcall WXSS::CSSTreeLib::Action::Action(int a1); void __fastcall WXSS::CSSTreeLib::Action::~Action(void **a1); void __fastcall WXSS::CSSTreeLib::Action::~Action(void **a1); void __thiscall WXSS::CSSTreeLib::Action::~Action(void **ecx0, WXSS::CSSTreeLib::Action *this); char *__fastcall WXSS::CSSTreeLib::Parser::Parser(_DWORD *a1); // char __userpurge WXSS::CSSTreeLib::AndRules::MarkGood@(int a1@, WXSS::CSSTreeLib::AndRules *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3); void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(void *a1); void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(int a1); int __fastcall WXSS::CSSTreeLib::Terminal::Terminal(int a1); void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **a1); void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **a1); void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this); void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this); char __stdcall WXSS::CSSTreeLib::TrueRule::MarkGood(WXSS::CSSTreeLib::TrueRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); void __fastcall WXSS::CSSTreeLib::TrueRule::~TrueRule(void *a1); // char __userpurge WXSS::CSSTreeLib::ChildRule::MarkGood@(int a1@, WXSS::CSSTreeLib::ChildRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3); void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *a1); void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *a1); int __stdcall WXSS::CSSTreeLib::FalseRule::MarkGood(WXSS::CSSTreeLib::FalseRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); void __fastcall WXSS::CSSTreeLib::FalseRule::~FalseRule(void *a1); // int __userpurge WXSS::CSSTreeLib::RuleChain::MarkGood@(int a1@, WXSS::CSSTreeLib::RuleChain *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3); void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(void *a1); void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(int a1); // char __userpurge WXSS::CSSTreeLib::SPNotRule::MarkGood@(int a1@, WXSS::CSSTreeLib::SPNotRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3); void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(void *a1); void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(int a1); // int __userpurge WXSS::Token::Token@(_DWORD *a1@, WXSS::Token *this, const WXSS::Token *a3); _DWORD *__thiscall WXSS::Token::operator=(_DWORD *this, int a2); int __thiscall WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(char *this, int a2, char *Source, int a4); void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(__gthread_mutex_t **a1); int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1); int __fastcall __gnu_cxx::stdio_filebuf::file(int a1); char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1); int __fastcall __gnu_cxx::stdio_filebuf::file(int a1); char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); int __cdecl __gnu_cxx::__concat_size_t(char *a1, unsigned int a2, unsigned int a3); int __cdecl __gnu_cxx::__snprintf_lite(char *a1, unsigned int a2, const char *a3, char *a4); int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1); int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2); int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1); int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1); int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, char *Buffer, size_t ElementCount); size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount); _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, int Offset, int a4, int a5, int a6); _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **a2, int Offset, int a4, int a5, int a6, int a7); int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(_DWORD *this, int a2); int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int a2); int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1); int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1); void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1); int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2); int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1); int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2); int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1); wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1); int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, int a2, int a3); int __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, int a2, int a3); _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, int Offset, int a4, int a5, int a6); _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **a2, int Offset, int a4, int a5, int a6, int a7); __int16 __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, wchar_t Character); int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, wint_t Character); wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1); int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2); int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2); int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1); void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1); int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2); void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1); void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1); void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1); void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1); void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1); void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1); void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1); void __cdecl __noreturn __gnu_cxx::__throw_insufficient_space(const char *Src, const char *a2); // idb void __cdecl __noreturn __gnu_cxx::__verbose_terminate_handler(size_t a1, size_t a2, FILE *a3); void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void); // idb void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void); // idb int __gnu_cxx::__freeres(void); bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); // char __userpurge __cxxabiv1::__class_type_info::__do_catch@(_DWORD *a1@, __cxxabiv1::__class_type_info *this, const std::type_info *a3, void **a4, unsigned int a5); bool __thiscall __cxxabiv1::__class_type_info::__do_upcast(_DWORD *this, int a2, int a3, _DWORD *a4); // int __userpurge __cxxabiv1::__class_type_info::__do_upcast@(int *a1@, __cxxabiv1::__class_type_info *this, const __class_type_info *a3, void **a4); int __thiscall __cxxabiv1::__class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7, _DWORD *a8); int __stdcall __cxxabiv1::__class_type_info::__do_find_public_src(__cxxabiv1::__class_type_info *this, const __cxxabiv1::__class_type_info *a2, const void *a3, const __cxxabiv1::__class_type_info *a4, const void *a5); char __thiscall __cxxabiv1::__si_class_type_info::__do_upcast(int this, int a2, int a3, _DWORD *a4); int __thiscall __cxxabiv1::__si_class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7, _DWORD *a8); // int __userpurge __cxxabiv1::__si_class_type_info::__do_find_public_src@(int a1@, __cxxabiv1::__si_class_type_info *this, const __cxxabiv1::__class_type_info *a3, const void *a4, const __cxxabiv1::__class_type_info *a5, const void *a6); int __thiscall __cxxabiv1::__vmi_class_type_info::__do_upcast(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); int __thiscall __cxxabiv1::__vmi_class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, _DWORD *a7, int *a8); // int __userpurge __cxxabiv1::__vmi_class_type_info::__do_find_public_src@(_DWORD *a1@, __cxxabiv1::__vmi_class_type_info *this, const __cxxabiv1::__class_type_info *a3, const void *a4, const __cxxabiv1::__class_type_info *a5, const void *a6); const char *`anonymous namespace'::io_error_category::name(); int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int a2, int a3); _anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition(_anonymous_namespace_::system_error_category *this, int a2); const char *`anonymous namespace'::system_error_category::name(); const char *`anonymous namespace'::generic_error_category::name(); void **__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11](void **this, int a2, int ErrorMessage); int WXSS::CSSTreeLib::NonTerminal::GetClass(); int WXSS::CSSTreeLib::EPS::GetClass(); int WXSS::CSSTreeLib::Rule::GetClass(); int WXSS::CSSTreeLib::Action::GetClass(); int WXSS::CSSTreeLib::Terminal::GetClass(); const char *__fastcall WXSS::Token::GetLiteral(_DWORD *a1); const char *__gnu_cxx::__concurrence_lock_error::what(); const char *__gnu_cxx::__concurrence_unlock_error::what(); int __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2); unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *String, int a3); unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *S, unsigned int a3, size_t N); unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t **a2, int a3); int __thiscall std::wstring::find_last_of(_DWORD *this, __int16 a2, unsigned int a3); unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t **a2, int a3); int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3); void *__thiscall std::wstring::get_allocator(void *this, int a2); unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *String, int a3); unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *S, unsigned int a3, size_t N); unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t **a2, int a3); int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3); unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3); unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t **a2, int a3); int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3); int __thiscall std::wstring::at(int *this, unsigned int a2); int __fastcall std::wstring::end(_DWORD *a1); int __fastcall std::wstring::_Rep::_M_is_leaked(int a1); bool __fastcall std::wstring::_Rep::_M_is_shared(int a1); int __fastcall std::wstring::back(_DWORD *a1); int __fastcall std::wstring::cend(_DWORD *a1); size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4); int __fastcall std::wstring::data(int a1); int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3); int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4); int __thiscall std::wstring::find(int *this, wchar_t **a2, int a3); int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3); _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); int __fastcall std::wstring::size(_DWORD *a1); int __fastcall std::wstring::begin(int a1); int __fastcall std::wstring::c_str(int a1); _DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2); bool __fastcall std::wstring::empty(_DWORD *a1); int __fastcall std::wstring::front(int a1); unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3); unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N); unsigned int __thiscall std::wstring::rfind(int *this, wchar_t **a2, int a3); int __thiscall std::wstring::rfind(_DWORD *this, __int16 a2, unsigned int a3); int __fastcall std::wstring::_M_rep(_DWORD *a1); int __fastcall std::wstring::cbegin(int a1); int __fastcall std::wstring::length(_DWORD *a1); _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::wstring::substr(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); int __fastcall std::wstring::_M_data(int a1); int __fastcall std::wstring::_M_iend(_DWORD *a1); int __thiscall std::wstring::compare(const wchar_t **this, wchar_t *String); int __thiscall std::wstring::compare(const wchar_t **this, const wchar_t **a2); int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5); int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, const wchar_t **a4); int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); _DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2); unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3); unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3); int __fastcall std::wstring::capacity(_DWORD *a1); int std::wstring::max_size(); int __fastcall std::wstring::_M_ibegin(int a1); int __thiscall std::wstring::operator[](_DWORD *this, int a2); int __fastcall std::istream::gcount(int a1); int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1); int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1); // int __userpurge std::string::_M_disjunct@(_DWORD *a1@, std::string *this, const char *a3); // int __userpurge std::string::find_last_of@(int *a1@, std::string *this, char *a3, unsigned int a4); // int __userpurge std::string::find_last_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); // int __userpurge std::string::find_last_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); // int __userpurge std::string::find_last_of@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); // int __userpurge std::string::find_first_of@(int *a1@, std::string *this, char *a3, unsigned int a4); // int __userpurge std::string::find_first_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); // int __userpurge std::string::find_first_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); // char *__userpurge std::string::find_first_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); void *__thiscall std::string::get_allocator(void *ecx0, std::string *this); // char *__userpurge std::string::_M_check_length@(_DWORD *a1@, std::string *this, unsigned int a3, std::length_error *a4, const char *a5); // int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4); // int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, const char *a3, unsigned int MaxCount, unsigned int a5); // int __userpurge std::string::find_last_not_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); // int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); // int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4); // int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); // int __userpurge std::string::find_first_not_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); // int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); // char *__userpurge std::string::at@(int *a1@, std::string *this, unsigned int a3); int __fastcall std::string::end(_DWORD *a1); int __fastcall std::string::_Rep::_M_is_leaked(int a1); bool __fastcall std::string::_Rep::_M_is_shared(int a1); int __fastcall std::string::back(_DWORD *a1); int __fastcall std::string::cend(_DWORD *a1); // int __userpurge std::string::copy@(_DWORD *a1@, std::string *this, char *a3, unsigned int a4, unsigned int a5); int __fastcall std::string::data(int a1); // unsigned int __userpurge std::string::find@(int *a1@, std::string *this, char *a3, unsigned int a4); // unsigned int __userpurge std::string::find@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5); // unsigned int __userpurge std::string::find@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); // char *__userpurge std::string::find@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); _DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this); int __fastcall std::string::size(_DWORD *a1); int __fastcall std::string::begin(int a1); int __fastcall std::string::c_str(int a1); _DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this); bool __fastcall std::string::empty(_DWORD *a1); int __fastcall std::string::front(int a1); // int __userpurge std::string::rfind@(int *a1@, std::string *this, char *a3, unsigned int a4); // int __userpurge std::string::rfind@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5); // int __userpurge std::string::rfind@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); // int __userpurge std::string::rfind@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); int __fastcall std::string::_M_rep(_DWORD *a1); int __fastcall std::string::cbegin(int a1); int __fastcall std::string::length(_DWORD *a1); _DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this); _DWORD *__thiscall std::string::substr(_DWORD *ecx0, std::string *this, std::string *a3, unsigned int a4); int __fastcall std::string::_M_data(int a1); int __fastcall std::string::_M_iend(_DWORD *a1); // int __userpurge std::string::compare@(const void **a1@, std::string *this, const char *a3); // int __userpurge std::string::compare@(const void **a1@, const void **this, const std::string *a3); // int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, char *Str, const char *a5); // int __userpurge std::string::compare@(int *a1@, std::string *this, const char *a3, void *Buf2, const char *a5, unsigned int a6); // int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, const void **a4, const std::string *a5); // int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, size_t a6, unsigned int a7); _DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this); // std::string *__userpurge std::string::_M_check@(_DWORD *a1@, std::string *this, const char *a3, const char *a4); // unsigned int __userpurge std::string::_M_limit@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); int __fastcall std::string::capacity(_DWORD *a1); int std::string::max_size(); int __fastcall std::string::_M_ibegin(int a1); int __thiscall std::string::operator[](_DWORD *this, int a2); const char *std::bad_typeid::what(); int __fastcall std::error_code::default_error_condition(int a1); int __fastcall std::moneypunct::neg_format(_DWORD *a1); int __fastcall std::moneypunct::pos_format(_DWORD *a1); _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); int __fastcall std::moneypunct::frac_digits(_DWORD *a1); int __fastcall std::moneypunct::decimal_point(_DWORD *a1); int __fastcall std::moneypunct::do_neg_format(int a1); int __fastcall std::moneypunct::do_pos_format(int a1); _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); int __fastcall std::moneypunct::do_frac_digits(int a1); int __fastcall std::moneypunct::do_decimal_point(int a1); _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); int __fastcall std::moneypunct::do_thousands_sep(int a1); _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); int __fastcall std::moneypunct::neg_format(_DWORD *a1); int __fastcall std::moneypunct::pos_format(_DWORD *a1); _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); int __fastcall std::moneypunct::frac_digits(_DWORD *a1); int __fastcall std::moneypunct::decimal_point(_DWORD *a1); int __fastcall std::moneypunct::do_neg_format(int a1); int __fastcall std::moneypunct::do_pos_format(int a1); _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); int __fastcall std::moneypunct::do_frac_digits(int a1); int __fastcall std::moneypunct::do_decimal_point(int a1); _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); int __fastcall std::moneypunct::do_thousands_sep(int a1); _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); int __fastcall std::moneypunct::neg_format(_DWORD *a1); int __fastcall std::moneypunct::pos_format(_DWORD *a1); _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); int __fastcall std::moneypunct::frac_digits(_DWORD *a1); int __fastcall std::moneypunct::decimal_point(_DWORD *a1); int __fastcall std::moneypunct::do_neg_format(int a1); int __fastcall std::moneypunct::do_pos_format(int a1); _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); int __fastcall std::moneypunct::do_frac_digits(int a1); int __fastcall std::moneypunct::do_decimal_point(int a1); _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); int __fastcall std::moneypunct::do_thousands_sep(int a1); _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); int __fastcall std::moneypunct::neg_format(_DWORD *a1); int __fastcall std::moneypunct::pos_format(_DWORD *a1); _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); int __fastcall std::moneypunct::frac_digits(_DWORD *a1); int __fastcall std::moneypunct::decimal_point(_DWORD *a1); int __fastcall std::moneypunct::do_neg_format(int a1); int __fastcall std::moneypunct::do_pos_format(int a1); _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); int __fastcall std::moneypunct::do_frac_digits(int a1); int __fastcall std::moneypunct::do_decimal_point(int a1); _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); int __fastcall std::moneypunct::do_thousands_sep(int a1); _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2); void __thiscall std::__timepunct::_M_put(const char **this, char *Buffer, size_t SizeInBytes, char *Format, struct tm *Tm); _DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2); void __thiscall std::__timepunct::_M_put(const char **this, wchar_t *Buffer, size_t SizeInWords, wchar_t *Format, struct tm *Tm); _DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2); int __stdcall std::__use_cache>::operator()(int *a1); int __stdcall std::__use_cache>::operator()(int *a1); int __fastcall std::logic_error::what(int a1); bool __fastcall std::__basic_file::is_open(_DWORD *a1); int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, int a3, int a4); void **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(void **this, int a2, std::string *a3, int a4); int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, int a3, int a4); wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(wchar_t **this, int a2, int a3, int a4); void **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(void **this, int a2, std::string *a3, int a4, int a5, int a6); _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 **a6); int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3); int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, unsigned __int8 **a2, int a3); int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(wchar_t **this, int a2, int a3, int a4, int a5, int a6); _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, wchar_t **a6); int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3); int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, unsigned __int8 **a2, int a3); int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, std::string *a3, int a4, int a5, unsigned __int8 a6, int a7, int *a8, int a9); int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int *a9); int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, std::string *a3, int a4, int a5, unsigned __int8 a6, int a7, int *a8, long double *a9); int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9); int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int *a9); int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(_DWORD *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, int a7); int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, unsigned int **a7); int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, long double a7); int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, long double a7); int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(_DWORD *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6, int a7); int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6, _DWORD *a7); int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, __int16 a6, long double a7); int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, __int16 a6, long double a7); const char *_ZGTtNKSt13bad_exception4whatEv(); bool __fastcall std::filebuf::is_open(int a1); bool __fastcall std::wfilebuf::is_open(int a1); int __fastcall std::fstream::rdbuf(int a1); bool __fastcall std::fstream::is_open(int a1); int __fastcall std::wfstream::rdbuf(int a1); bool __fastcall std::wfstream::is_open(int a1); int __fastcall std::wistream::gcount(int a1); int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1); int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1); int __fastcall std::runtime_error::what(int a1); int __fastcall std::ifstream::rdbuf(int a1); bool __fastcall std::ifstream::is_open(int a1); int __fastcall std::wifstream::rdbuf(int a1); bool __fastcall std::wifstream::is_open(int a1); int __fastcall std::ofstream::rdbuf(int a1); bool __fastcall std::ofstream::is_open(int a1); int __fastcall std::wofstream::rdbuf(int a1); bool __fastcall std::wofstream::is_open(int a1); int __fastcall std::streambuf::gptr(int a1); int __fastcall std::streambuf::pptr(int a1); int __fastcall std::streambuf::eback(int a1); int __fastcall std::streambuf::egptr(int a1); int __fastcall std::streambuf::epptr(int a1); int __fastcall std::streambuf::pbase(int a1); volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int a2); int __fastcall std::wstreambuf::gptr(int a1); int __fastcall std::wstreambuf::pptr(int a1); int __fastcall std::wstreambuf::eback(int a1); int __fastcall std::wstreambuf::egptr(int a1); int __fastcall std::wstreambuf::epptr(int a1); int __fastcall std::wstreambuf::pbase(int a1); volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int a2); int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); int __thiscall std::__codecvt_utf8_base::do_in(unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf8_base::do_out(int this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8); unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5); int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf8_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf8_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, int a5); int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf8_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf8_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, int a5); // char __userpurge std::__iosfail_type_info::__do_upcast@(int *a1@, std::__iosfail_type_info *this, const __cxxabiv1::__class_type_info *a3, void **a4); bool __thiscall std::istreambuf_iterator::equal(_DWORD *this, int a2); // int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@); bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2); // int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@); int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); int __thiscall std::__codecvt_utf16_base::do_in(_DWORD *this, int a2, int a3, int a4, int *a5, unsigned int *a6, unsigned int *a7, unsigned int **a8); int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, int *a8); int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, int *a8); int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); const char *std::bad_array_new_length::what(); int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); int __thiscall std::__codecvt_utf8_utf16_base::do_in(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, unsigned int *a6, unsigned int *a7, unsigned int **a8); int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8); int __thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5); int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); int __thiscall std::__codecvt_utf8_utf16_base::do_in(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf8_utf16_base::do_out(unsigned int *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5); int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); int __thiscall std::__codecvt_utf8_utf16_base::do_in(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8); int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8); int __thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5); _DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int a2, int a3); void **__thiscall std::_V2::error_category::_M_message(void **ecx0, std::_V2::error_category *this, int a3); // bool __userpurge std::_V2::error_category::equivalent@(int a1@, std::_V2::error_category *this, const std::error_code *a3, int a4); int __thiscall std::_V2::error_category::equivalent(void *this, int a2, _DWORD *a3); std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition(std::_V2::error_category *this, int a2); char *__thiscall std::ctype::do_tolower(_DWORD *this, char *a2, char *a3); int __thiscall std::ctype::do_tolower(_DWORD *this, int a2); char *__thiscall std::ctype::do_toupper(_DWORD *this, char *a2, char *a3); int __thiscall std::ctype::do_toupper(_DWORD *this, int a2); int __fastcall std::ctype::_M_widen_init(int a1); int __fastcall std::ctype::_M_narrow_init(int a1); _BYTE *__thiscall std::ctype::widen(_BYTE *this, _BYTE *Src, _BYTE *a3, void *a4); _BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3); int __stdcall std::ctype::do_widen(unsigned __int8 a1); _BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4); int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2); unsigned __int16 *__thiscall std::ctype::do_scan_is(void *this, unsigned __int16 a2, unsigned __int16 *a3, unsigned int a4); unsigned int __stdcall std::ctype::do_tolower(wint_t *a1, unsigned int a2); wint_t __stdcall std::ctype::do_tolower(wint_t C); unsigned int __stdcall std::ctype::do_toupper(wint_t *a1, unsigned int a2); wint_t __stdcall std::ctype::do_toupper(wint_t C); unsigned __int16 *__thiscall std::ctype::do_scan_not(void *this, unsigned __int16 a2, unsigned __int16 *a3, unsigned int a4); wctype_t __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16 a1); unsigned int __thiscall std::ctype::do_is(char *this, wint_t *a2, unsigned int a3, _WORD *a4); int __thiscall std::ctype::do_is(_WORD *this, unsigned __int16 a2, wint_t C); unsigned __int8 *__thiscall std::ctype::do_widen(_WORD *this, unsigned __int8 *a2, unsigned __int8 *a3, int a4); int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2); unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *a2, unsigned int a3, char a4, char *a5); int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3); int __fastcall std::locale::id::_M_id(int *a1); int __thiscall std::locale::name[abi:cxx11](int this, int *a2); unsigned int **__thiscall std::locale::name(unsigned int **ecx0, std::locale *this); // _DWORD *__userpurge std::locale::facet::_M_cow_shim@(volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3); // _DWORD *__userpurge std::locale::facet::_M_sso_shim@(volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3); int __fastcall std::locale::facet::_M_remove_reference(volatile signed __int32 *a1); bool __thiscall std::locale::operator==(int *this, int *a2); int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3); int __fastcall std::moneypunct::neg_format(_DWORD *a1); int __fastcall std::moneypunct::pos_format(_DWORD *a1); void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2); void **__thiscall std::moneypunct::do_grouping(void **this, int a2); int __fastcall std::moneypunct::frac_digits(_DWORD *a1); int __fastcall std::moneypunct::decimal_point(_DWORD *a1); int __fastcall std::moneypunct::do_neg_format(int a1); int __fastcall std::moneypunct::do_pos_format(int a1); void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2); void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2); int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2); int __fastcall std::moneypunct::do_frac_digits(int a1); int __fastcall std::moneypunct::do_decimal_point(int a1); void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2); void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2); int __fastcall std::moneypunct::do_thousands_sep(int a1); void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); int __fastcall std::moneypunct::neg_format(_DWORD *a1); int __fastcall std::moneypunct::pos_format(_DWORD *a1); void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2); void **__thiscall std::moneypunct::do_grouping(void **this, int a2); int __fastcall std::moneypunct::frac_digits(_DWORD *a1); int __fastcall std::moneypunct::decimal_point(_DWORD *a1); int __fastcall std::moneypunct::do_neg_format(int a1); int __fastcall std::moneypunct::do_pos_format(int a1); void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2); void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2); int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2); int __fastcall std::moneypunct::do_frac_digits(int a1); int __fastcall std::moneypunct::do_decimal_point(int a1); void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2); void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2); int __fastcall std::moneypunct::do_thousands_sep(int a1); void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); int __fastcall std::moneypunct::neg_format(_DWORD *a1); int __fastcall std::moneypunct::pos_format(_DWORD *a1); wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2); void **__thiscall std::moneypunct::do_grouping(void **this, int a2); int __fastcall std::moneypunct::frac_digits(_DWORD *a1); int __fastcall std::moneypunct::decimal_point(_DWORD *a1); int __fastcall std::moneypunct::do_neg_format(int a1); int __fastcall std::moneypunct::do_pos_format(int a1); wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2); wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2); int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2); int __fastcall std::moneypunct::do_frac_digits(int a1); int __fastcall std::moneypunct::do_decimal_point(int a1); wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2); wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2); int __fastcall std::moneypunct::do_thousands_sep(int a1); void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); int __fastcall std::moneypunct::neg_format(_DWORD *a1); int __fastcall std::moneypunct::pos_format(_DWORD *a1); wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2); void **__thiscall std::moneypunct::do_grouping(void **this, int a2); int __fastcall std::moneypunct::frac_digits(_DWORD *a1); int __fastcall std::moneypunct::decimal_point(_DWORD *a1); int __fastcall std::moneypunct::do_neg_format(int a1); int __fastcall std::moneypunct::do_pos_format(int a1); wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2); wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2); int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2); int __fastcall std::moneypunct::do_frac_digits(int a1); int __fastcall std::moneypunct::do_decimal_point(int a1); wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2); wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2); int __fastcall std::moneypunct::do_thousands_sep(int a1); void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); int __thiscall std::string::_M_disjunct(unsigned int *this, unsigned int a2); bool __fastcall std::string::_M_is_local(_DWORD *a1); unsigned int __thiscall std::string::find_last_of(int *this, char *Str, int a3); unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); unsigned int __thiscall std::string::find_last_of(int *this, int a2, int a3); int __thiscall std::string::find_last_of(int *this, char a2, unsigned int a3); int __fastcall std::string::_M_local_data(int a1); unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, int a3); unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int a3, size_t MaxCount); unsigned int __thiscall std::string::find_first_of(_DWORD *this, int a2, int a3); char *__thiscall std::string::find_first_of(int *this, char a2, unsigned int a3); void *__thiscall std::string::get_allocator(void *this, int a2); unsigned int __thiscall std::string::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); int __fastcall std::string::_M_get_allocator(int a1); unsigned int __thiscall std::string::find_last_not_of(int *this, char *Str, int a3); unsigned int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); unsigned int __thiscall std::string::find_last_not_of(int *this, int a2, int a3); int __thiscall std::string::find_last_not_of(int *this, char a2, unsigned int a3); unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, int a3); unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); unsigned int __thiscall std::string::find_first_not_of(int *this, int a2, int a3); int __thiscall std::string::find_first_not_of(int *this, char a2, unsigned int a3); unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2); int __fastcall std::string::end(_DWORD *a1); int __fastcall std::string::back(_DWORD *a1); int __fastcall std::string::cend(_DWORD *a1); size_t __thiscall std::string::copy(_DWORD *this, _BYTE *a2, unsigned int a3, unsigned int a4); int __fastcall std::string::data(int a1); int __thiscall std::string::find(int *this, char *Str, int a3); int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size); int __thiscall std::string::find(int *this, int a2, int a3); char *__thiscall std::string::find(int *this, char a2, unsigned int a3); _DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2); int __fastcall std::string::size(int a1); int __fastcall std::string::begin(int a1); int __fastcall std::string::c_str(int a1); _DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2); bool __fastcall std::string::empty(int a1); int __fastcall std::string::front(int a1); unsigned int __thiscall std::string::rfind(int *this, char *Str, int a3); unsigned int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size); unsigned int __thiscall std::string::rfind(int *this, int a2, int a3); int __thiscall std::string::rfind(int *this, char a2, unsigned int a3); int __fastcall std::string::cbegin(int a1); int __fastcall std::string::length(int a1); _DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2); void **__thiscall std::string::substr(void **this, _DWORD *a2, unsigned int a3, unsigned int a4); int __fastcall std::string::_M_data(int a1); int __thiscall std::string::compare(int this, char *Str); int __thiscall std::string::compare(int this, int a2); int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, char *Str); int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, void *Buf2, unsigned int a5); int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, int a4); int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); _DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2); unsigned int __thiscall std::string::_M_check(_DWORD *this, unsigned int a2, const char *a3); unsigned int __thiscall std::string::_M_limit(_DWORD *this, int a2, unsigned int a3); int __fastcall std::string::capacity(_DWORD *a1); int std::string::max_size(); int __thiscall std::string::operator[](_DWORD *this, int a2); bool __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2); bool __fastcall std::wstring::_M_is_local(_DWORD *a1); unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3); unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, int a3); int __thiscall std::wstring::find_last_of(int *this, __int16 a2, unsigned int a3); int __fastcall std::wstring::_M_local_data(int a1); unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, int a3); int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3); void *__thiscall std::wstring::get_allocator(void *this, int a2); unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); int __fastcall std::wstring::_M_get_allocator(int a1); unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3); unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *S, unsigned int a3, int N); unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, int a3); int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3); int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3); int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); int __thiscall std::wstring::find_first_not_of(_DWORD *this, int a2, int a3); int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3); int __thiscall std::wstring::at(_DWORD *this, unsigned int a2); int __fastcall std::wstring::end(_DWORD *a1); int __fastcall std::wstring::back(_DWORD *a1); int __fastcall std::wstring::cend(_DWORD *a1); size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4); int __fastcall std::wstring::data(int a1); int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3); int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4); int __thiscall std::wstring::find(int *this, int a2, int a3); int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3); _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); int __fastcall std::wstring::size(int a1); int __fastcall std::wstring::begin(int a1); int __fastcall std::wstring::c_str(int a1); _DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2); bool __fastcall std::wstring::empty(int a1); int __fastcall std::wstring::front(int a1); unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3); unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N); unsigned int __thiscall std::wstring::rfind(int *this, int a2, int a3); int __thiscall std::wstring::rfind(int *this, __int16 a2, unsigned int a3); int __fastcall std::wstring::cbegin(int a1); int __fastcall std::wstring::length(int a1); _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); wchar_t **__thiscall std::wstring::substr(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4); int __fastcall std::wstring::_M_data(int a1); int __thiscall std::wstring::compare(int this, wchar_t *String); int __thiscall std::wstring::compare(int this, int a2); int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5); int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, int a4); int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); _DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2); unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3); unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3); int __fastcall std::wstring::capacity(_DWORD *a1); int std::wstring::max_size(); int __thiscall std::wstring::operator[](_DWORD *this, int a2); int __thiscall std::stringbuf::str(int this, _DWORD *a2); _WORD *__thiscall std::wstringbuf::str(_WORD *this, _DWORD *a2); int __thiscall std::basic_stringstream,std::allocator>::str(int this, _DWORD *a2); int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1); _WORD *__thiscall std::basic_stringstream,std::allocator>::str(_WORD *this, _DWORD *a2); int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1); int __thiscall std::istringstream::str(int this, _DWORD *a2); int __fastcall std::istringstream::rdbuf(int a1); _WORD *__thiscall std::wistringstream::str(_WORD *this, _DWORD *a2); int __fastcall std::wistringstream::rdbuf(int a1); int __thiscall std::ostringstream::str(int this, _DWORD *a2); int __fastcall std::ostringstream::rdbuf(int a1); _WORD *__thiscall std::wostringstream::str(_WORD *this, _DWORD *a2); int __fastcall std::wostringstream::rdbuf(int a1); int __stdcall std::collate::_M_compare(char *String1, char *String2); // idb int __stdcall std::collate::do_compare(unsigned __int8 *a1, size_t Size, unsigned __int8 *a3, size_t a4); size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount); int __thiscall std::collate::do_transform(int this, int a2, unsigned __int8 *a3, size_t Size); int __thiscall std::collate::hash(void *this, char *a1, char *a2); int __fastcall std::collate::compare(int a1); int __stdcall std::collate::do_hash(char *a1, char *a2); void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2); // idb int __stdcall std::collate::do_compare(wchar_t *a1, int a2, wchar_t *a3, int a4); size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount); int __thiscall std::collate::do_transform(int this, int a2, wchar_t *a3, int a4); int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2); int __fastcall std::collate::compare(int a1); int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2); void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); int __stdcall std::messages::_M_convert_to_char(int a1); _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall std::messages::open(void *this, int a2, int a3); int __thiscall std::messages::open(void *this, int a2, int a3, int a4); int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); _DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6); int __stdcall std::messages::do_open(int a1, int a2); int __stdcall std::messages::do_close(int); // weak int __stdcall std::messages::_M_convert_to_char(int a1); _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall std::messages::open(void *this, int a2, int a3); int __thiscall std::messages::open(void *this, int a2, int a3, int a4); int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); wchar_t **__thiscall std::messages::do_get(wchar_t **this, int a2, int a3, int a4, int a5, int a6); int __stdcall std::messages::do_open(int a1, int a2); int __stdcall std::messages::do_close(int); // weak void **__thiscall std::numpunct::do_grouping(void **this, int a2); void **__thiscall std::numpunct::do_truename(void **this, int a2); void **__thiscall std::numpunct::do_falsename(void **this, int a2); int __fastcall std::numpunct::decimal_point(_DWORD *a1); int __fastcall std::numpunct::thousands_sep(_DWORD *a1); int __fastcall std::numpunct::do_decimal_point(int a1); int __fastcall std::numpunct::do_thousands_sep(int a1); void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2); void **__thiscall std::numpunct::truename(void **this, _DWORD *a2); void **__thiscall std::numpunct::falsename(void **this, _DWORD *a2); void **__thiscall std::numpunct::do_grouping(void **this, int a2); wchar_t **__thiscall std::numpunct::do_truename(wchar_t **this, int a2); wchar_t **__thiscall std::numpunct::do_falsename(wchar_t **this, int a2); int __fastcall std::numpunct::decimal_point(_DWORD *a1); int __fastcall std::numpunct::thousands_sep(_DWORD *a1); int __fastcall std::numpunct::do_decimal_point(int a1); int __fastcall std::numpunct::do_thousands_sep(int a1); void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2); wchar_t **__thiscall std::numpunct::truename(wchar_t **this, _DWORD *a2); wchar_t **__thiscall std::numpunct::falsename(wchar_t **this, _DWORD *a2); int __fastcall std::time_get>::date_order(int a1); _DWORD *__stdcall std::time_get>::do_get_date(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); _DWORD *__stdcall std::time_get>::do_get_time(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); _DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); int __fastcall std::time_get>::get_weekday(int a1); int std::time_get>::do_date_order(); int __fastcall std::time_get>::get_monthname(int a1); _DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, int a2, _DWORD *a3, int a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); _DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); int __stdcall std::time_get>::_M_extract_name(unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, int a7, _DWORD *a8); _DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); _DWORD *__stdcall std::time_get>::_M_extract_via_format(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char *a8); _DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, int a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9); int __thiscall std::time_get>::get(void *this, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int8 *a9, unsigned __int8 *a10); int __thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); _DWORD *__stdcall std::time_get>::do_get(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9); int __fastcall std::time_get>::get_date(int a1); int __fastcall std::time_get>::get_time(int a1); int __fastcall std::time_get>::get_year(int a1); int __fastcall std::time_get>::date_order(int a1); _DWORD *__stdcall std::time_get>::do_get_date(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7); _DWORD *__stdcall std::time_get>::do_get_time(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7); _DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); int __fastcall std::time_get>::get_weekday(int a1); int std::time_get>::do_date_order(); int __fastcall std::time_get>::get_monthname(int a1); _DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); _DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); _DWORD *__stdcall std::time_get>::_M_extract_name(_DWORD *a1, int a2, _DWORD *a3, int *a4, _DWORD *a5, int a6, int a7, int a8, _DWORD *a9); _DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); _DWORD *__stdcall std::time_get>::_M_extract_via_format(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7, wchar_t *String); _DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, _DWORD *a5, int a6, unsigned int a7, int a8, _DWORD *a9); int __thiscall std::time_get>::get(void *this, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10); int __thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int *a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); _DWORD *__stdcall std::time_get>::do_get(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9); int __fastcall std::time_get>::get_date(int a1); int __fastcall std::time_get>::get_time(int a1); int __fastcall std::time_get>::get_year(int a1); unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, int a2, unsigned int a3, int a4, int a5, _DWORD *a6, _DWORD *a7); unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, int a2, unsigned int a3, int a4, int a5, _DWORD *a6, _DWORD *a7); int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); unsigned int __stdcall std::money_get>::do_get(unsigned int a1, int a2, unsigned int a3, int a4, char a5, int a6, _DWORD *a7, int *a8); unsigned int __stdcall std::money_get>::do_get(std::locale::facet *a1, int a2, unsigned int a3, int a4, char a5, int a6, _DWORD *a7, long double *a8); unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); unsigned int __stdcall std::money_get>::do_get(unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, char a5, int a6, _DWORD *a7, int *a8); unsigned int __stdcall std::money_get>::do_get(std::locale::facet *a1, __int16 a2, unsigned int a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, char a5, int a6); int __thiscall std::money_put>::do_put(void *this, int a2, char a3, int a4, int a5, int a6, long double a7); int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, int a5); int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, int a5); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, wchar_t a5, int a6); int __thiscall std::money_put>::do_put(void *this, int a2, int a3, int a4, int a5, int a6, long double a7); int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, wchar_t a4, int a5); int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, wchar_t a4, int a5); int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, int a3, unsigned __int8 **a4, int a5, int a6, _DWORD *a7); int __stdcall std::codecvt::do_out(int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, int a5, int a6, int *a7); unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, int a4); int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); int __stdcall std::codecvt::do_out(int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, _BYTE *a5, _BYTE *a6, _DWORD *a7); unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, int a4); int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, int a5, int a6, int *a7); int __stdcall std::codecvt::do_out(int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, int a5, int a6, int *a7); unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned int a4); int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); int std::codecvt::do_encoding(); int std::codecvt::do_max_length(); int std::codecvt::do_always_noconv(); int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); int __stdcall std::codecvt::do_out(int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, _BYTE *a5, _BYTE *a6, _BYTE **a7); int __stdcall std::codecvt::do_length(int a1, int a2, unsigned __int8 *a3, unsigned int a4); int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); int std::codecvt::do_max_length(); int std::codecvt::do_always_noconv(); int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); unsigned int __stdcall std::codecvt::do_length(int a1, int a2, int a3, unsigned int a4); BOOL std::codecvt::do_encoding(); int std::codecvt::do_max_length(); int std::codecvt::do_always_noconv(); int __stdcall std::codecvt::do_in(unsigned int *a1, char *a2, unsigned int a3, char **a4, wchar_t *a5, unsigned int a6, wchar_t **a7); int __stdcall std::codecvt::do_out(unsigned int *a1, wchar_t *a2, unsigned int a3, wchar_t **a4, char *a5, unsigned int a6, char **a7); int __stdcall std::codecvt::do_length(unsigned int *a1, char *a2, unsigned int a3, int a4); int __stdcall std::collate::_M_compare(char *String1, char *String2); // idb int __stdcall std::collate::do_compare(int a1, _BYTE *a2, int a3, int a4); size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount); unsigned int **__thiscall std::collate::do_transform(unsigned int **this, int a2, _BYTE *a3, int a4); int __thiscall std::collate::hash(void *this, char *a1, char *a2); int __fastcall std::collate::compare(int a1); int __stdcall std::collate::do_hash(char *a1, char *a2); void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2); // idb int __stdcall std::collate::do_compare(int a1, const wchar_t *a2, int a3, int a4); size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount); void **__thiscall std::collate::do_transform(void **this, int a2, const wchar_t *a3, int a4); int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2); int __fastcall std::collate::compare(int a1); int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2); void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned int *a7); unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned int *a7); unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned __int16 *a7); unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6); unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); unsigned __int64 __stdcall std::num_get>::_M_extract_float(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int **a6); int __fastcall std::num_get>::get(int a1); int __fastcall std::num_get>::get(int a1); int __fastcall std::num_get>::get(int a1); int __fastcall std::num_get>::get(int a1); int __fastcall std::num_get>::get(int a1); int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6); int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); unsigned __int64 __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); unsigned __int64 __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, int *a5, _BYTE *a6); int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, double *a6); int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, long double *a6); int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, float *a6); int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned __int16 *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); __int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int *a6); __int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); __int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int *a6); __int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned __int16 *a6); __int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); __int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6); __int64 __stdcall std::num_get>::_M_extract_float(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int **a6); int __fastcall std::num_get>::get(int a1); int __fastcall std::num_get>::get(int a1); int __fastcall std::num_get>::get(int a1); int __fastcall std::num_get>::get(int a1); int __fastcall std::num_get>::get(int a1); int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6); int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); int __stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6); int __stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, int *a5, _BYTE *a6); _DWORD *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, double *a6); _DWORD *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, long double *a6); _DWORD *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, float *a6); int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak _BYTE *__stdcall std::num_put>::_M_group_int(char *a1, int a2, char a3, int a4, _BYTE *a5, _BYTE *a6, _DWORD *a7); int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5); int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5); int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, UDItype a5); int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5, int a6); _BYTE *__stdcall std::num_put>::_M_group_float(char *a1, int a2, char a3, char *Src, int a5, _BYTE *a6, _DWORD *a7); int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, _DWORD *a4, int a5, int a6, double a7); int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, std::__num_base *a4, int a5, int a6, long double a7); int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5); int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5, unsigned __int8 a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5); int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5); int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, UDItype a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6, int a7); int __stdcall std::num_put>::_M_pad(char a1, int a2, _DWORD *a3, char *a4, _BYTE *a5, int *a6); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); int *__stdcall std::num_put>::do_put(int *a1, int a2, _DWORD *a3, int a4, int a5); int __thiscall std::num_put>::do_put(void *this, int a2, int a3, _DWORD *a4, char a5, double a6); int __thiscall std::num_put>::do_put(void *this, int a2, int a3, std::__num_base *a4, char a5, long double a6); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, UDItype a5); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5, int a6); int __stdcall std::num_put>::_M_group_int(char *a1, int a2, __int16 a3, int a4, _WORD *a5, _WORD *a6, int *a7); int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, int a5); // idb int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, int a5); // idb int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, UDItype a5); int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, int a5, int a6); // idb int __stdcall std::num_put>::_M_group_float(char *a1, int a2, __int16 a3, wchar_t *S2, _WORD *a5, _WORD *a6, _DWORD *a7); int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, wchar_t *S1, int a5, int a6, double a7); int __fastcall std::num_put>::_M_insert_float(int a1, int a2, int a3, int a4, wchar_t *S1, int a6, int a7, long double a8); int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5); int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5, unsigned __int8 a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5); int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5); int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, UDItype a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6, int a7); int __stdcall std::num_put>::_M_pad(unsigned __int16 a1, int a2, wchar_t *S1, wchar_t *a4, wchar_t *a5, int *a6); int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *S1, unsigned __int16 a4, int a5); int *__stdcall std::num_put>::do_put(int *a1, int a2, wchar_t *S1, int a4, int a5); int __thiscall std::num_put>::do_put(void *this, int a2, int a3, wchar_t *S1, unsigned __int16 a5, double a6); int __thiscall std::num_put>::do_put(void *this, int a2, int a3, wchar_t *S1, unsigned __int16 a5, long double a6); int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5); int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5); int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, UDItype a5); int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5, int a6); _DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find(_DWORD *this, int a2); _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); const char *std::bad_cast::what(); int __fastcall std::ios_base::failure::what(int a1); int __stdcall std::messages::_M_convert_to_char(int a1); _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall std::messages::open(void *this, int a2, int a3); int __thiscall std::messages::open(void *this, int a2, int a3, int a4); int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); unsigned int **__thiscall std::messages::do_get(unsigned int **this, int a2, int a3, int a4, int a5, unsigned int **a6); int __stdcall std::messages::do_open(int a1, int a2); int __stdcall std::messages::do_close(int); // weak int __stdcall std::messages::_M_convert_to_char(int a1); _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall std::messages::open(void *this, int a2, int a3); int __thiscall std::messages::open(void *this, int a2, int a3, int a4); int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); _DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _DWORD *a6); int __stdcall std::messages::do_open(int a1, int a2); int __stdcall std::messages::do_close(int); // weak _DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2); _DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2); _DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2); int __fastcall std::numpunct::decimal_point(_DWORD *a1); int __fastcall std::numpunct::thousands_sep(_DWORD *a1); int __fastcall std::numpunct::do_decimal_point(int a1); int __fastcall std::numpunct::do_thousands_sep(int a1); _DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2); _DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2); _DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2); int __fastcall std::numpunct::decimal_point(_DWORD *a1); int __fastcall std::numpunct::thousands_sep(_DWORD *a1); int __fastcall std::numpunct::do_decimal_point(int a1); int __fastcall std::numpunct::do_thousands_sep(int a1); _DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2); int __fastcall std::time_get>::date_order(int a1); int __stdcall std::time_get>::do_get_date(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); int __stdcall std::time_get>::do_get_time(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); _DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); int __fastcall std::time_get>::get_weekday(int a1); int std::time_get>::do_date_order(); int __fastcall std::time_get>::get_monthname(int a1); _DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, int a2, _DWORD *a3, int a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); _DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); int __stdcall std::time_get>::_M_extract_name(unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, int a7, _DWORD *a8); _DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); unsigned __int64 __stdcall std::time_get>::_M_extract_via_format(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char *a7); _DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, int a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9); int __stdcall std::time_get>::get(int a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, unsigned __int8 *a8, unsigned __int8 *a9); int __stdcall std::time_get>::get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); int __stdcall std::time_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); int __fastcall std::time_get>::get_date(int a1); int __fastcall std::time_get>::get_time(int a1); int __fastcall std::time_get>::get_year(int a1); int __fastcall std::time_get>::date_order(int a1); _DWORD *__stdcall std::time_get>::do_get_date(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6); _DWORD *__stdcall std::time_get>::do_get_time(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6); _DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); int __fastcall std::time_get>::get_weekday(int a1); int std::time_get>::do_date_order(); int __fastcall std::time_get>::get_monthname(int a1); _DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); _DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); _DWORD *__stdcall std::time_get>::_M_extract_name(_DWORD *a1, int a2, _DWORD *a3, int *a4, _DWORD *a5, int a6, int a7, int a8, _DWORD *a9); _DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); __int64 __stdcall std::time_get>::_M_extract_via_format(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, wchar_t *a7); _DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, _DWORD *a5, int a6, unsigned int a7, int a8, _DWORD *a9); int __thiscall std::time_get>::get(void *this, int a2, int a3, _DWORD *a4, int a5, _DWORD *a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10); int __stdcall std::time_get>::get(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); _DWORD *__stdcall std::time_get>::do_get(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); int __fastcall std::time_get>::get_date(int a1); int __fastcall std::time_get>::get_time(int a1); int __fastcall std::time_get>::get_year(int a1); __int64 __thiscall std::time_put>::put(void *this, __int64 a2, int a3, char a4, int a5, unsigned __int8 *a6, unsigned __int8 *a7); int __thiscall std::time_put>::put(void *this, int a2, int a3, int a4, char a5, int a6, char a7, char a8); int __stdcall std::time_put>::do_put(int a1, char a2, int a3, int a4, struct tm *a5, char a6, char a7); _DWORD *__thiscall std::time_put>::put(void *this, _DWORD *a2, int a3, int a4, unsigned __int16 a5, int a6, unsigned __int16 *a7, unsigned __int16 *a8); int __thiscall std::time_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5, int a6, char a7, char a8); int __stdcall std::time_put>::do_put(int a1, char a2, int a3, int a4, struct tm *a5, char a6, char a7); const char *std::bad_alloc::what(); int __fastcall std::ios::exceptions(int a1); int __fastcall std::ios::bad(int a1); int __fastcall std::ios::eof(int a1); int __fastcall std::ios::tie(int a1); bool __fastcall std::ios::fail(int a1); int __fastcall std::ios::fill(int a1); bool __fastcall std::ios::good(int a1); int __fastcall std::ios::rdbuf(int a1); int __thiscall std::ios::widen(int *this, int a2); int __thiscall std::ios::narrow(_DWORD *this, int a2, int a3); int __fastcall std::ios::rdstate(int a1); int __fastcall std::ios::operator void *(int a1); bool __fastcall std::ios::operator bool(int a1); bool __fastcall std::ios::operator!(int a1); int __fastcall std::wios::exceptions(int a1); int __fastcall std::wios::bad(int a1); int __fastcall std::wios::eof(int a1); int __fastcall std::wios::tie(int a1); bool __fastcall std::wios::fail(int a1); int __fastcall std::wios::fill(int a1); bool __fastcall std::wios::good(int a1); int __fastcall std::wios::rdbuf(int a1); int __thiscall std::wios::widen(_DWORD *this, char a2); int __thiscall std::wios::narrow(_DWORD *this, unsigned __int16 a2, char a3); int __fastcall std::wios::rdstate(int a1); int __fastcall std::wios::operator void *(int a1); bool __fastcall std::wios::operator bool(int a1); bool __fastcall std::wios::operator!(int a1); const char *_ZGTtNKSt9exception4whatEv(); int __stdcall std::money_get>::_M_extract(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); int __stdcall std::money_get>::_M_extract(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); int __stdcall std::money_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, unsigned int **a7); int __stdcall std::money_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, long double *a7); _DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); _DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); _DWORD *__stdcall std::money_get>::do_get(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, void **a8); _DWORD *__stdcall std::money_get>::do_get(std::locale::facet *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, char a5, std::string **a6); int __thiscall std::money_put>::do_put(void *this, std::locale *a2, char a3, int a4, int a5, int a6, long double a7); int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, std::string **a5); int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, std::string **a5); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, __int16 a5, wchar_t **a6); int __thiscall std::money_put>::do_put(void *this, std::locale *a2, char a3, int a4, int a5, int a6, long double a7); int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, __int16 a4, wchar_t **a5); int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, wchar_t a4, wchar_t **a5); // bool __userpurge std::type_info::__do_catch@(_DWORD *a1@, std::type_info *this, const std::type_info *a3, void **a4, unsigned int a5); int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3); int std::type_info::__is_function_p(); bool __thiscall std::type_info::operator==(_DWORD *this, int a2); int __cdecl std::wstring::_S_compare(int a1, int a2); int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); const wchar_t *__fastcall std::wstring::_M_leak_hard(const wchar_t **a1); _DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, wchar_t a2); // _DWORD *__usercall std::wstring::_S_construct@(unsigned int a1@, wchar_t a2@); wchar_t *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(wchar_t *S2, wchar_t *a2); _DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2); _DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2); // _DWORD *__usercall std::wstring::_S_construct@(const wchar_t *a1@, int a2@); void *std::wstring::_S_empty_rep(); int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); char *__fastcall std::wstring::shrink_to_fit(void **a1); const wchar_t **__thiscall std::wstring::_M_replace_aux(const wchar_t **this, size_t a2, int a3, size_t N, wchar_t C); const wchar_t **__thiscall std::wstring::_M_replace_safe(const wchar_t **this, size_t a2, int a3, wchar_t *S2, size_t N); _DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, wchar_t a2); const wchar_t *__thiscall std::wstring::at(const wchar_t **this, unsigned int a2); int __fastcall std::wstring::end(const wchar_t **a1); void __thiscall std::wstring::_Rep::_M_destroy(void *this, int a2); void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2); void __fastcall std::wstring::_Rep::_M_dispose(volatile signed __int32 *a1); void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2); int __fastcall std::wstring::_Rep::_M_refcopy(int a1); int __fastcall std::wstring::_Rep::_M_refdata(int a1); void *std::wstring::_Rep::_S_empty_rep(); void __fastcall std::wstring::_Rep::_M_set_leaked(int a1); void __fastcall std::wstring::_Rep::_M_set_sharable(int a1); int __thiscall std::wstring::_Rep::_M_set_length_and_sharable(int this, int a2); _DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int a2, int a3); _DWORD *__thiscall std::wstring::_Rep::_M_clone(int this, int a2, int a3); _DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int a1, unsigned int a2); const wchar_t *__fastcall std::wstring::back(const wchar_t **a1); const wchar_t **__thiscall std::wstring::rend(const wchar_t **this, const wchar_t **a2); int __thiscall std::wstring::swap(int *this, int *a2); const wchar_t *__fastcall std::wstring::begin(const wchar_t **a1); void __fastcall std::wstring::clear(void **a1); char *__thiscall std::wstring::erase(const wchar_t **this, int a2); char *__thiscall std::wstring::erase(const wchar_t **this, char *a2, int a3); const wchar_t **__thiscall std::wstring::erase(const wchar_t **this, size_t a2, unsigned int a3); const wchar_t *__fastcall std::wstring::front(const wchar_t **a1); void **__thiscall std::wstring::append(void **this, wchar_t *String); void **__thiscall std::wstring::append(void **this, wchar_t *a2, size_t N); void **__thiscall std::wstring::append(void **this, const wchar_t **a2); void **__thiscall std::wstring::append(void **this, _DWORD *a2, unsigned int a3, size_t a4); void **__thiscall std::wstring::append(void **this, size_t N, wchar_t C); int __thiscall std::wstring::assign(int *this, int *a2); const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *String); const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *S2, size_t N); void **__thiscall std::wstring::assign(void **this, _DWORD *a2); const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, _DWORD *a2, unsigned int a3, size_t a4); const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, size_t a2, __int16 a3); const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *a3, size_t a4); const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, size_t a3, __int16 a4); char *__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t a3); const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *String); const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, wchar_t *a3, size_t N); const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t **a3); const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, _DWORD *a3, unsigned int a4, size_t a5); const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, size_t a3, __int16 a4); _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, const wchar_t **a2); void __thiscall std::wstring::resize(void **this, size_t a2); void __thiscall std::wstring::resize(void **this, size_t a2, wchar_t a3); size_t __cdecl std::wstring::_M_copy(wchar_t *S1, const wchar_t *S2, size_t N); int __thiscall std::wstring::_M_data(_DWORD *this, int a2); const wchar_t *__fastcall std::wstring::_M_leak(const wchar_t **a1); size_t __cdecl std::wstring::_M_move(wchar_t *S1, const wchar_t *S2, size_t N); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t a5); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, size_t a4, wchar_t a5); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, unsigned int a2, unsigned int a3, wchar_t *a4, size_t N); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, _DWORD *a4, unsigned int a5, size_t a6); const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, unsigned int a2, unsigned int a3, size_t a4, wchar_t a5); char *__thiscall std::wstring::reserve(void **this, char *a2); void __fastcall std::wstring::pop_back(const wchar_t **a1); wchar_t *__cdecl std::wstring::_M_assign(wchar_t *a1, size_t C, size_t N); void __thiscall std::wstring::_M_mutate(const wchar_t **this, size_t a2, int a3, int a4); _WORD *__thiscall std::wstring::push_back(void **this, __int16 a2); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); void __thiscall std::wstring::basic_string(_DWORD *this, int a2); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4); void __fastcall std::wstring::basic_string(_DWORD *a1); wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *a2, wchar_t *a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); void __thiscall std::wstring::basic_string(_DWORD *this, int a2); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4); void __fastcall std::wstring::basic_string(_DWORD *a1); wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *a2, wchar_t *a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); void __fastcall std::wstring::~wstring(volatile signed __int32 **a1); void __fastcall std::wstring::~wstring(volatile signed __int32 **a1); int __thiscall std::wstring::operator=(int *this, int *a2); const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *String); const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *a2, size_t a3); const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t a2); const wchar_t *__thiscall std::wstring::operator[](const wchar_t **this, int a2); void **__thiscall std::wstring::operator+=(void **this, wchar_t *String); void **__thiscall std::wstring::operator+=(void **this, __int16 a2); // int __userpurge std::iostream::swap@(_DWORD *a1@, std::iostream *this, std::iostream *a3); int __thiscall std::iostream::iostream(_DWORD *this, int *a2); BOOL __thiscall std::iostream::iostream(_DWORD *this, int a2); BOOL __fastcall std::iostream::iostream(int a1); int __thiscall std::iostream::iostream(int *this, int *a2, _DWORD *a3); int __thiscall std::iostream::iostream(int *this, int *a2, int a3); int __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this); void __fastcall std::iostream::~iostream(_DWORD *a1); void __fastcall std::iostream::~iostream(int a1); void __thiscall std::iostream::~iostream(_DWORD *ecx0, std::iostream *this); _DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); // std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); // std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5); std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2); std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2, unsigned __int8 a3); // std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3); int __fastcall std::istream::get(std::istream::sentry *a1); int __fastcall std::istream::peek(std::istream::sentry *a1); // std::istream::sentry *__userpurge std::istream::read@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); // int __userpurge std::istream::swap@(_DWORD *a1@, std::istream *this, std::istream *a3); int __fastcall std::istream::sync(std::istream::sentry *a1); std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4, int a5); std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4); _DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this); std::istream::sentry *__fastcall std::istream::unget(std::istream::sentry *a1); // std::istream::sentry *__userpurge std::istream::ignore@(std::istream::sentry *a1@, std::istream *this, int a3); // std::istream::sentry *__userpurge std::istream::ignore@(std::istream::sentry *a1@, std::istream *this, int a3, int a4); std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *a1); // int __userpurge std::istream::sentry::sentry@(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4); // int __userpurge std::istream::sentry::sentry@(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4); // std::istream::sentry *__userpurge std::istream::getline@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); // std::istream::sentry *__userpurge std::istream::getline@(std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5); // std::istream::sentry *__userpurge std::istream::putback@(std::istream::sentry *a1@, std::istream *this, char a3); // int __userpurge std::istream::readsome@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); int __thiscall std::istream::istream(_DWORD *this, int *a2); BOOL __thiscall std::istream::istream(_DWORD *this, int a2); BOOL __fastcall std::istream::istream(int a1); int __thiscall std::istream::istream(int *this, int *a2, _DWORD *a3); BOOL __thiscall std::istream::istream(int *this, int *a2, int a3); BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this); void __fastcall std::istream::~istream(_DWORD *a1); void __fastcall std::istream::~istream(_DWORD *a1); void __thiscall std::istream::~istream(_DWORD *ecx0, std::istream *this); _DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)); char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)); char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)); std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2); std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2); std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *a2); // std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *a1@, std::ostream *this, char a3); // int __userpurge std::ostream::swap@(_DWORD *a1@, std::ostream *this, std::ostream *a3); _DWORD *__fastcall std::ostream::flush(_DWORD *a1); _DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5); _DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4); _DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this); // std::ostream::sentry *__userpurge std::ostream::write@(std::ostream::sentry *a1@, std::ostream *this, const char *a3, int a4); // int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3); // int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3); void __fastcall std::ostream::sentry::~sentry(int a1); void __fastcall std::ostream::sentry::~sentry(int a1); // const char *__userpurge std::ostream::_M_write@(_DWORD *a1@, std::ostream *this, const char *a3, int a4); std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8 a2); std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double a2); std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double a2); std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3); std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3); int __thiscall std::ostream::ostream(_DWORD *this, int *a2); BOOL __thiscall std::ostream::ostream(_DWORD *this, int a2); // int __userpurge std::ostream::ostream@(int a1@, std::ostream *this, std::iostream *a3); BOOL __fastcall std::ostream::ostream(int a1); int __thiscall std::ostream::ostream(int *this, int *a2, _DWORD *a3); BOOL __thiscall std::ostream::ostream(int *this, int *a2, int a3); int __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this, std::iostream *a3); BOOL __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this); void __fastcall std::ostream::~ostream(_DWORD *a1); void __fastcall std::ostream::~ostream(_DWORD *a1); void __thiscall std::ostream::~ostream(_DWORD *ecx0, std::ostream *this); _DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)); char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)); char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)); std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *a2); std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2); std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2); _DWORD __stdcall std::ostream::operator<<(_DWORD); // weak std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2); std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2); char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2); int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); volatile signed __int32 *__fastcall std::string::_M_leak_hard(volatile signed __int32 **a1); unsigned int *__cdecl std::string::_S_construct(unsigned int a1, char a2); // unsigned int *__usercall std::string::_S_construct@(unsigned int a1@, char a2@
); void *__cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, _BYTE *a2); _DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2); _DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2); // _DWORD *__usercall std::string::_S_construct@(_BYTE *a1@, int a2@); unsigned int *std::string::_S_empty_rep(); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size); size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size); unsigned int *__fastcall std::string::shrink_to_fit(unsigned int **a1); // volatile signed __int32 **__userpurge std::string::_M_replace_aux@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, size_t Size, char a5, char a6); // volatile signed __int32 **__userpurge std::string::_M_replace_safe@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, _BYTE *Src, size_t Size, unsigned int a6); unsigned int *__cdecl std::string::_S_construct_aux_2(unsigned int a1, char a2); // char *__userpurge std::string::at@(volatile signed __int32 **a1@, std::string *this, unsigned int a3); int __fastcall std::string::end(volatile signed __int32 **a1); void __thiscall std::string::_Rep::_M_destroy(void *this, int a2); void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); void __fastcall std::string::_Rep::_M_dispose(volatile signed __int32 *a1); void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); int __fastcall std::string::_Rep::_M_refcopy(int a1); int __fastcall std::string::_Rep::_M_refdata(int a1); unsigned int *std::string::_Rep::_S_empty_rep(); void __fastcall std::string::_Rep::_M_set_leaked(int a1); void __fastcall std::string::_Rep::_M_set_sharable(int a1); // std::string::_Rep *__userpurge std::string::_Rep::_M_set_length_and_sharable@(unsigned int *a1@, std::string::_Rep *this, unsigned int a3); unsigned int *__thiscall std::string::_Rep::_M_grab(int this, int a2, int a3); unsigned int *__thiscall std::string::_Rep::_M_clone(int this, int a2, int a3); _DWORD *__cdecl std::string::_Rep::_S_create(unsigned int a1, unsigned int a2); char *__fastcall std::string::back(volatile signed __int32 **a1); volatile signed __int32 **__thiscall std::string::rend(volatile signed __int32 **ecx0, volatile signed __int32 **this); // int __userpurge std::string::swap@(int *a1@, std::string *this, std::string *a3); volatile signed __int32 *__fastcall std::string::begin(volatile signed __int32 **a1); void __fastcall std::string::clear(void **a1); char *__thiscall std::string::erase(volatile signed __int32 **this, int a2); char *__thiscall std::string::erase(volatile signed __int32 **this, char *a2, char *a3); // volatile signed __int32 **__userpurge std::string::erase@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, unsigned int a4); volatile signed __int32 *__fastcall std::string::front(volatile signed __int32 **a1); // unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const char *a3); // unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, size_t Size, unsigned int a4); // unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const std::string *a3); // unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); // unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, char a3, char a4); unsigned int *__thiscall std::string::append(unsigned int **this, size_t Size, char a3); int __stdcall std::string::assign(std::string *); // idb // volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, std::string *this, const char *a3); // volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, std::string *this, size_t Size, unsigned int a4); // unsigned int **__userpurge std::string::assign@(unsigned int **a1@, unsigned int **this, const std::string *a3); // volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); // volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, size_t this, char a3, char a4); // volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *a2, volatile signed __int32 *a3, size_t a4, unsigned int a5); char *__thiscall std::string::insert(volatile signed __int32 **this, int a2, char a3); volatile signed __int32 **__thiscall std::string::insert(volatile signed __int32 **this, int a2, size_t a3, char a4); // volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, char *Str, const char *a4); // volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, volatile signed __int32 *a3, size_t Size, unsigned int a5); // volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, volatile signed __int32 **a3, const std::string *a4); // volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, _DWORD *a3, const std::string *a4, unsigned int a5, unsigned int a6); // volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, size_t a3, char a4, char a5); _DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, volatile signed __int32 **this); // void __userpurge std::string::resize(unsigned int **a1@, std::string *this, unsigned int a3); // void __userpurge std::string::resize(unsigned int **a1@, size_t this, char a3, char a4); size_t __cdecl std::string::_M_copy(void *this, const void *Src, size_t Size); // std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3); volatile signed __int32 *__fastcall std::string::_M_leak(volatile signed __int32 **a1); size_t __cdecl std::string::_M_move(void *this, const void *Src, size_t Size); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); volatile signed __int32 **__thiscall std::string::replace(volatile signed __int32 **this, int a2, int a3, char *Str); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t a5, unsigned int a6); volatile signed __int32 **__thiscall std::string::replace(volatile signed __int32 **this, int a2, int a3, volatile signed __int32 **a4); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t a5, unsigned int a6); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, size_t a4, char a5, char a6); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, char *Str, const char *a5); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, volatile signed __int32 **a4, const std::string *a5); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, unsigned int a6, unsigned int a7); // volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, size_t a4, char a5, char a6); // unsigned int *__userpurge std::string::reserve@(unsigned int **a1@, std::string *this, unsigned int a3); void __fastcall std::string::pop_back(volatile signed __int32 **a1); char *__cdecl std::string::_M_assign(std::string *this, char *Val, size_t Size); // void __userpurge std::string::_M_mutate(volatile signed __int32 **a1@, size_t this, unsigned int a3, unsigned int a4, unsigned int a5); // unsigned int *__userpurge std::string::push_back@(unsigned int **a1@, std::string *this, char a3); _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); _DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3); _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); void __thiscall std::string::string(_DWORD *this, int a2); // unsigned int *__userpurge std::string::string@(unsigned int **a1@, unsigned int **this, const std::string *a3); unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3); _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); // _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); _DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4); void __fastcall std::string::string(_DWORD *a1); void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *a2, _BYTE *a3, int a4); _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); _DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3); _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); void __thiscall std::string::string(_DWORD *this, int a2); // unsigned int *__userpurge std::string::string@(unsigned int **a1@, unsigned int **this, const std::string *a3); unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3); _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); // _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); _DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4); void __fastcall std::string::string(_DWORD *a1); void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *a2, _BYTE *a3, int a4); _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); void __fastcall std::string::~string(volatile signed __int32 **a1); void __fastcall std::string::~string(volatile signed __int32 **a1); int __stdcall std::string::operator=(std::string *); // idb volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *Str); volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *a2, size_t a3); volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, char a2); char *__thiscall std::string::operator[](volatile signed __int32 **this, int a2); unsigned int **__thiscall std::string::operator+=(unsigned int **this, std::string *Str); unsigned int **__thiscall std::string::operator+=(unsigned int **this, char a2); int __cdecl std::__num_base::_S_format_float(std::__num_base *this, const std::ios_base *a2, char *a3); void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1); void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1); int __cdecl std::money_base::_S_construct_pattern(); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(void *a1); void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(void *a1); void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(void *a1); void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(void *a1); void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); _DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2); _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); void __fastcall std::__timepunct::~__timepunct(void *a1); void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); _DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2); _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); void __fastcall std::__timepunct::~__timepunct(void *a1); void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); int __thiscall std::logic_error::logic_error(_DWORD *this, int a2); // _DWORD *__userpurge std::logic_error::logic_error@(int a1@, std::logic_error *this, const char *a3); _DWORD *__thiscall std::logic_error::logic_error(_DWORD *this, int a2); // unsigned int *__userpurge std::logic_error::logic_error@(int a1@, unsigned int **this, const std::logic_error *a3); // unsigned int *__userpurge std::logic_error::logic_error@(int a1@, unsigned int **this, const std::string *a3); void __fastcall std::logic_error::~logic_error(_DWORD *a1); void __fastcall std::logic_error::~logic_error(_DWORD *a1); int *__thiscall std::logic_error::operator=(int *this, int a2); unsigned int **__thiscall std::logic_error::operator=(unsigned int **this, int a2); // _DWORD *__userpurge std::range_error::range_error@(_DWORD *a1@, std::range_error *this, const char *a3); _DWORD *__thiscall std::range_error::range_error(_DWORD *this, int a2); // unsigned int *__userpurge std::range_error::range_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); void __fastcall std::range_error::~range_error(_DWORD *a1); void __fastcall std::range_error::~range_error(_DWORD *a1); // int __usercall std::_Destroy_aux::__destroy *>@(int a1@, int a2, int a3); // int __usercall std::_Destroy_aux::__destroy *>@(int a1@, int a2, int a3); // int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3); void __fastcall __spoils std::`anonymous namespace'::utf16_span(unsigned int a1, unsigned __int8 *a2, unsigned int a3, char a4); // int __usercall std::`anonymous namespace'::read_utf16_bom@(int result@, _DWORD *a2@); // int __usercall std::`anonymous namespace'::write_utf8_bom@(int *a1@); // int __usercall std::`anonymous namespace'::write_utf16_bom@(int a1@, char a2@
); // int __usercall std::`anonymous namespace'::read_utf8_code_point@(unsigned __int8 **a1@, unsigned int a2@); // int __usercall std::`anonymous namespace'::read_utf8_code_point@(unsigned __int8 **a1@, unsigned int a2@); // unsigned int __usercall std::`anonymous namespace'::read_utf16_code_point@(unsigned int result@, unsigned int a2@, char a3@); // int __usercall std::`anonymous namespace'::write_utf8_code_point@(int a1@, unsigned int a2@); // int __usercall std::`anonymous namespace'::write_utf8_code_point@(_BYTE **a1@, unsigned int a2@); // int __usercall std::`anonymous namespace'::write_utf16_code_point@(int a1@, unsigned int a2@, char a3@); // int __usercall std::`anonymous namespace'::ucs2_in@(_DWORD *a1@, int *a2@, unsigned int a3@, char a4); // int __usercall std::`anonymous namespace'::ucs4_in@(int *a1@, int *a2@, unsigned int a3@, char a4); // int __usercall std::`anonymous namespace'::read_bom@(int a1@, _WORD *a2@); // int __usercall std::`anonymous namespace'::read_bom@(int *a1@); // int __usercall std::`anonymous namespace'::read_bom@(int *a1@); // int __usercall std::`anonymous namespace'::ucs2_out@(unsigned __int16 **a1@, _DWORD *a2@, unsigned int a3@, char a4); // int __usercall std::`anonymous namespace'::utf16_in@(int *a1@, _DWORD *a2@, unsigned int a3@, char a4, int a5); // int __usercall std::`anonymous namespace'::ucs2_span@(unsigned int a1@, int a2@, unsigned int a3@, char a4); void __fastcall __spoils std::`anonymous namespace'::ucs2_span(int a1, unsigned __int8 *a2, unsigned int a3, char a4); // int __usercall std::`anonymous namespace'::utf16_out@(unsigned __int16 **a1@, int *a2@, unsigned int a3@, char a4, int a5); // int __usercall std::`anonymous namespace'::utf16_out@(unsigned __int16 **a1@, _BYTE **a2@, unsigned int a3@, int a4); int __fastcall std::__basic_file::fd(int a1); int __fastcall std::__basic_file::file(int a1); _BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char a3, int a4); FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char a3); int __fastcall std::__basic_file::sync(FILE **a1); int __fastcall std::__basic_file::close(int a1); int __thiscall std::__basic_file::xsgetn(void *this, void *DstBuf, unsigned int MaxCharCount); unsigned int __thiscall std::__basic_file::xsputn(void *this, char *a2, unsigned int a3); __int64 __thiscall std::__basic_file::seekoff(void *this, __int64 Offset, int Origin); _BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3); _BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, int FileHandle, char a3); unsigned int __thiscall std::__basic_file::xsputn_2(void *this, char *a2, unsigned int a3, char *a4, unsigned int a5); int __fastcall std::__basic_file::showmanyc(int a1); void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2); int __fastcall std::__basic_file::~__basic_file(_DWORD); // weak _DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2); // _DWORD *__userpurge std::__cow_string::__cow_string@(_DWORD *a1@, std::__cow_string *this, const char *a3, unsigned int a4); _DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, int a2); // unsigned int *__userpurge std::__cow_string::__cow_string@(unsigned int **a1@, unsigned int **this, const std::__cow_string *a3); void __fastcall std::__cow_string::__cow_string(_DWORD *a1); void __fastcall std::__cow_string::~__cow_string(volatile signed __int32 **a1); int *__thiscall std::__cow_string::operator=(int *this, std::string *a2); unsigned int **__thiscall std::__cow_string::operator=(unsigned int **this, unsigned int **a2); volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); volatile signed __int32 **__thiscall std::__shared_ptr::operator=(volatile signed __int32 **this, volatile signed __int32 **a2); volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); volatile signed __int32 **__thiscall std::__shared_ptr::operator=(volatile signed __int32 **this, volatile signed __int32 **a2); _DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *a2); // unsigned int __userpurge std::__sso_string::__sso_string@(void **a1@, std::__sso_string *this, const char *a3, unsigned int a4); _BYTE *__thiscall std::__sso_string::__sso_string(_DWORD *this, int a2); // _BYTE *__userpurge std::__sso_string::__sso_string@(_DWORD *a1@, std::__sso_string *this, const std::__sso_string *a3); // unsigned int __userpurge std::__sso_string::__sso_string@(void **a1@, std::__sso_string **this, const std::string *a3); int __fastcall std::__sso_string::__sso_string(int a1); void __fastcall std::__sso_string::~__sso_string(void **a1); _DWORD *__thiscall std::__sso_string::operator=(_DWORD *this, int a2); void *__thiscall std::__sso_string::operator=(void *this, int a2); unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1); void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1); char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3); char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1); void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1); // _DWORD *__userpurge std::domain_error::domain_error@(_DWORD *a1@, std::domain_error *this, const char *a3); _DWORD *__thiscall std::domain_error::domain_error(_DWORD *this, int a2); // unsigned int *__userpurge std::domain_error::domain_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); void __fastcall std::domain_error::~domain_error(_DWORD *a1); void __fastcall std::domain_error::~domain_error(_DWORD *a1); // _DWORD *__userpurge std::length_error::length_error@(_DWORD *a1@, std::length_error *this, const char *a3); _DWORD *__thiscall std::length_error::length_error(_DWORD *this, int a2); // unsigned int *__userpurge std::length_error::length_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); void __fastcall std::length_error::~length_error(_DWORD *a1); void __fastcall std::length_error::~length_error(_DWORD *a1); // _DWORD *__userpurge std::out_of_range::out_of_range@(_DWORD *a1@, std::out_of_range *this, const char *a3); _DWORD *__thiscall std::out_of_range::out_of_range(_DWORD *this, int a2); // unsigned int *__userpurge std::out_of_range::out_of_range@(_DWORD *a1@, unsigned int **this, const std::string *a3); void __fastcall std::out_of_range::~out_of_range(_DWORD *a1); void __fastcall std::out_of_range::~out_of_range(_DWORD *a1); void __fastcall std::system_error::~system_error(_DWORD *a1); void __fastcall std::system_error::~system_error(_DWORD *a1); int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, std::string *a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, int a11); int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, _DWORD *a11); int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, _DWORD *a11); int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, int a11); int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, char a7, long double a8, int a9); int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, char a7, long double a8, int a9); int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, unsigned __int16 a7, long double a8, int a9); int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, unsigned __int16 a7, long double a8, int a9); void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1); void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1); void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1); void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1); void __cdecl std::__facet_shims::__messages_get(int a1, int a2, int a3, std::string *a4, int a5, int a6, _BYTE *a7, int a8); void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int a4, int a5, int a6, unsigned __int8 *a7, int a8); void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int a4, int a5, int a6, const wchar_t *a7, int a8); void __cdecl std::__facet_shims::__messages_get(int a1, int a2, int a3, int a4, int a5, int a6, wchar_t *a7, int a8); int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5); int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5); int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5); int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5); int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, std::string *a4, int a5); void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5); void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5); void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, int a4, int a5); int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); // void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, const char *a3); // void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, int a3, int a4); void __fastcall std::__ios_failure::~__ios_failure(int a1); void __fastcall std::__ios_failure::~__ios_failure(int a1); void __fastcall std::bad_exception::~bad_exception(void *a1); void __cdecl std::bad_exception::~bad_exception(void *); // idb unsigned int __thiscall std::filebuf::_M_set_buffer(_DWORD *this, int a2); int __thiscall std::filebuf::_M_get_ext_pos(int this, int a2); int __fastcall std::filebuf::_M_create_pback(int a1); int __fastcall std::filebuf::_M_destroy_pback(int a1); int __fastcall std::filebuf::_M_terminate_output(_DWORD *a1); bool __thiscall std::filebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3); void __fastcall std::filebuf::_M_destroy_internal_buffer(int a1); void __fastcall std::filebuf::_M_allocate_internal_buffer(int a1); char *__thiscall std::filebuf::open(char *this, char *a2, int a3); char *__thiscall std::filebuf::open(char *this, int a2); char *__thiscall std::filebuf::open(char *this, wchar_t *a2, int a3); char *__thiscall std::filebuf::open(char *this, char *a2, int a3); int __thiscall std::filebuf::swap(int this, int a2); int __fastcall std::filebuf::sync(_DWORD *a1); int __fastcall std::filebuf::close(int a1); char __thiscall std::filebuf::imbue(int this, int a2); int __thiscall std::filebuf::setbuf(int this, __int64 a2); int __thiscall std::filebuf::xsgetn(_DWORD *this, char *a2, signed int a3); int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *a2, int a3); _DWORD *__thiscall std::filebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5); _DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5); _DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6); int __thiscall std::filebuf::overflow(int this, int a2); int __thiscall std::filebuf::pbackfail(char *this, int a2); int __fastcall std::filebuf::showmanyc(_DWORD *a1); int __fastcall std::filebuf::underflow(int a1); int __thiscall std::filebuf::basic_filebuf(int this, int a2); void *__fastcall std::filebuf::basic_filebuf(int a1); int __thiscall std::filebuf::basic_filebuf(int this, int a2); void *__fastcall std::filebuf::basic_filebuf(int a1); void __fastcall std::filebuf::~filebuf(_DWORD **a1); void __fastcall std::filebuf::~filebuf(int a1); void __fastcall std::filebuf::~filebuf(int a1); int __thiscall std::filebuf::operator=(int this, int a2); unsigned int __thiscall std::wfilebuf::_M_set_buffer(_DWORD *this, int a2); int __thiscall std::wfilebuf::_M_get_ext_pos(int this, int a2); int __fastcall std::wfilebuf::_M_create_pback(int a1); int __fastcall std::wfilebuf::_M_destroy_pback(int a1); int __fastcall std::wfilebuf::_M_terminate_output(_DWORD *a1); bool __thiscall std::wfilebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3); void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int a1); int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1); int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1); char *__thiscall std::wfilebuf::open(int this, char *a2, int a3); char *__thiscall std::wfilebuf::open(char *this, int a2); char *__thiscall std::wfilebuf::open(int this, wchar_t *a2, int a3); char *__thiscall std::wfilebuf::open(void *this, char *a2, int a3); int __thiscall std::wfilebuf::swap(int this, int a2); int __fastcall std::wfilebuf::sync(_DWORD *a1); int __fastcall std::wfilebuf::close(int a1); char __thiscall std::wfilebuf::imbue(int this, int a2); int __thiscall std::wfilebuf::setbuf(int this, __int64 a2); int __thiscall std::wfilebuf::xsgetn(_DWORD *this, wchar_t *a2, signed int a3); int __thiscall std::wfilebuf::xsputn(int this, wchar_t *a2, int a3); _DWORD *__thiscall std::wfilebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5); _DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5); _DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6); int __thiscall std::wfilebuf::overflow(int this, int a2); int __thiscall std::wfilebuf::pbackfail(char *this, int a2); int __fastcall std::wfilebuf::showmanyc(_DWORD *a1); int __fastcall std::wfilebuf::underflow(int a1); int __thiscall std::wfilebuf::basic_filebuf(int this, int a2); void *__fastcall std::wfilebuf::basic_filebuf(int a1); int __thiscall std::wfilebuf::basic_filebuf(int this, int a2); void *__fastcall std::wfilebuf::basic_filebuf(int a1); void __fastcall std::wfilebuf::~wfilebuf(_DWORD **a1); void __fastcall std::wfilebuf::~wfilebuf(int a1); void __fastcall std::wfilebuf::~wfilebuf(int a1); int __thiscall std::wfilebuf::operator=(int this, int a2); int __thiscall std::fstream::open(char *this, char *a2, int a3); int __thiscall std::fstream::open(char *this, wchar_t *a2, int a3); int __thiscall std::fstream::open(char *this, char **a2, int a3); int __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2); int __fastcall std::fstream::close(_DWORD *a1); bool __fastcall std::fstream::is_open(int a1); int __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2); int __thiscall std::fstream::basic_fstream(char *this, char *a2, int a3); int __thiscall std::fstream::basic_fstream(char *this, wchar_t *a2, int a3); int __thiscall std::fstream::basic_fstream(char *this, char **a2, int a3); BOOL __fastcall std::fstream::basic_fstream(int a1); int __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3); int __thiscall std::fstream::basic_fstream(char *this, int *a2, char *a3, int a4); int __thiscall std::fstream::basic_fstream(char *this, int *a2, wchar_t *a3, int a4); int __thiscall std::fstream::basic_fstream(char *this, int *a2, char **a3, int a4); BOOL __thiscall std::fstream::basic_fstream(int *this, int *a2); void __fastcall std::fstream::~fstream(_DWORD *a1); void __fastcall std::fstream::~fstream(int a1); int __thiscall std::fstream::~fstream(_DWORD *this, int *a2); _DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::wfstream::open(int *this, char *a2, int a3); int __thiscall std::wfstream::open(int *this, wchar_t *a2, int a3); int __thiscall std::wfstream::open(int *this, char **a2, int a3); int __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2); int __fastcall std::wfstream::close(_DWORD *a1); bool __fastcall std::wfstream::is_open(int a1); int __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2); int __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3); int __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3); int __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3); BOOL __fastcall std::wfstream::basic_fstream(int a1); int __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3); int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4); int __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4); int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4); BOOL __thiscall std::wfstream::basic_fstream(int *this, int *a2); void __fastcall std::wfstream::~wfstream(_DWORD *a1); void __fastcall std::wfstream::~wfstream(int a1); int __thiscall std::wfstream::~wfstream(_DWORD *this, int *a2); _DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); int *__thiscall std::wistream::_M_extract(int *this, int a2); _DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3); _DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3, __int16 a4); _DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2, __int16 a3); _DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2); int __fastcall std::wistream::get(_DWORD *a1); int __fastcall std::wistream::peek(_DWORD *a1); _DWORD *__thiscall std::wistream::read(_DWORD *this, int a2, int a3); int __thiscall std::wistream::swap(_DWORD *this, _DWORD *a2); int __fastcall std::wistream::sync(_DWORD *a1); _DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4, int a5); _DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4); _DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *a2); int *__fastcall std::wistream::unget(int *a1); _DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2, wchar_t C); _DWORD *__fastcall std::wistream::ignore(_DWORD *a1); int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3); int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3); _DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3); _DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3, wchar_t C); int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2); int __thiscall std::wistream::readsome(_DWORD *this, int a2, int a3); int __thiscall std::wistream::basic_istream(_DWORD *this, int *a2); BOOL __thiscall std::wistream::basic_istream(_DWORD *this, int a2); BOOL __fastcall std::wistream::basic_istream(int a1); int __thiscall std::wistream::basic_istream(int *this, int *a2, _DWORD *a3); BOOL __thiscall std::wistream::basic_istream(int *this, int *a2, int a3); BOOL __thiscall std::wistream::basic_istream(int *this, int *a2); void __fastcall std::wistream::~wistream(char *a1); void __fastcall std::wistream::~wistream(_DWORD *a1); int __thiscall std::wistream::~wistream(int *this, int *a2); _DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)); char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)); char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)); _DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2); int *__thiscall std::wistream::operator>>(int *this, _DWORD *a2); int *__thiscall std::wistream::operator>>(int *this, _WORD *a2); int *__thiscall std::wostream::put(int *this, unsigned __int16 a2); int __thiscall std::wostream::swap(_DWORD *this, _DWORD *a2); _DWORD *__fastcall std::wostream::flush(_DWORD *a1); _DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5); _DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4); _DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *a2); int *__thiscall std::wostream::write(int *this, int a2, int a3); int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2); int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2); char __fastcall std::wostream::sentry::~sentry(int a1); char __fastcall std::wostream::sentry::~sentry(int a1); int __thiscall std::wostream::_M_write(_DWORD *this, int a2, int a3); int *__thiscall std::wostream::_M_insert(int *this, int a2); int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8 a2); int *__thiscall std::wostream::_M_insert(int *this, double a2); int *__thiscall std::wostream::_M_insert(int *this, long double a2); int *__thiscall std::wostream::_M_insert(int *this, int a2); int *__thiscall std::wostream::_M_insert(int *this, int a2); int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3); int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3); int __thiscall std::wostream::basic_ostream(_DWORD *this, int *a2); BOOL __thiscall std::wostream::basic_ostream(_DWORD *this, int a2); int __thiscall std::wostream::basic_ostream(_DWORD *this, int a2); BOOL __fastcall std::wostream::basic_ostream(int a1); int __thiscall std::wostream::basic_ostream(int *this, int *a2, _DWORD *a3); BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3); int __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3); BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2); void __fastcall std::wostream::~wostream(char *a1); void __fastcall std::wostream::~wostream(_DWORD *a1); int __thiscall std::wostream::~wostream(int *this, int *a2); _DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)); char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)); char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)); int *__thiscall std::wostream::operator<<(int *this, _DWORD *a2); int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2); int *__thiscall std::wostream::operator<<(int *this, float a2); int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2); int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2); // unsigned int __userpurge std::random_device::_M_init_pretr1@(unsigned int *a1@, const void **this, const std::string *a3); // FILE *__userpurge std::random_device::_M_init@(FILE **a1@, const void **this, const std::string *a3); int __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2); // _DWORD *__userpurge std::runtime_error::runtime_error@(int a1@, std::runtime_error *this, const char *a3); _DWORD *__thiscall std::runtime_error::runtime_error(_DWORD *this, int a2); // unsigned int *__userpurge std::runtime_error::runtime_error@(int a1@, unsigned int **this, const std::runtime_error *a3); // unsigned int *__userpurge std::runtime_error::runtime_error@(int a1@, unsigned int **this, const std::string *a3); void __fastcall std::runtime_error::~runtime_error(_DWORD *a1); void __fastcall std::runtime_error::~runtime_error(_DWORD *a1); int *__thiscall std::runtime_error::operator=(int *this, int a2); unsigned int **__thiscall std::runtime_error::operator=(unsigned int **this, int a2); int __thiscall std::ifstream::open(char *this, char *a2, int a3); int __thiscall std::ifstream::open(char *this, wchar_t *a2, int a3); int __thiscall std::ifstream::open(char *this, char **a2, int a3); int __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2); int __fastcall std::ifstream::close(_DWORD *a1); bool __fastcall std::ifstream::is_open(int a1); int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2); int __thiscall std::ifstream::basic_ifstream(char *this, char *a2, int a3); int __thiscall std::ifstream::basic_ifstream(char *this, wchar_t *a2, int a3); int __thiscall std::ifstream::basic_ifstream(char *this, char **a2, int a3); BOOL __fastcall std::ifstream::basic_ifstream(int a1); int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3); int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char *a3, int a4); int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, wchar_t *a3, int a4); int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char **a3, int a4); BOOL __thiscall std::ifstream::basic_ifstream(int *this, int *a2); void __fastcall std::ifstream::~ifstream(_DWORD *a1); void __fastcall std::ifstream::~ifstream(int a1); int __thiscall std::ifstream::~ifstream(_DWORD *this, int *a2); _DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::wifstream::open(int *this, char *a2, int a3); int __thiscall std::wifstream::open(int *this, wchar_t *a2, int a3); int __thiscall std::wifstream::open(int *this, char **a2, int a3); int __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2); int __fastcall std::wifstream::close(_DWORD *a1); bool __fastcall std::wifstream::is_open(int a1); int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2); int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3); int __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3); int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3); BOOL __fastcall std::wifstream::basic_ifstream(int a1); int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3); int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4); int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4); int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4); BOOL __thiscall std::wifstream::basic_ifstream(int *this, int *a2); void __fastcall std::wifstream::~wifstream(_DWORD *a1); void __fastcall std::wifstream::~wifstream(int a1); int __thiscall std::wifstream::~wifstream(_DWORD *this, int *a2); _DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2); int __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2); BOOL __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2); BOOL __fastcall std::wiostream::basic_iostream(int a1); int __thiscall std::wiostream::basic_iostream(int *this, int *a2, _DWORD *a3); int __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3); int __thiscall std::wiostream::basic_iostream(int *this, int *a2); void __fastcall std::wiostream::~basic_iostream(char *a1); void __fastcall std::wiostream::~basic_iostream(int a1); int __thiscall std::wiostream::~basic_iostream(int *this, int *a2); _DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::ofstream::open(char *this, char *a2, int a3); int __thiscall std::ofstream::open(char *this, wchar_t *a2, int a3); int __thiscall std::ofstream::open(char *this, char **a2, int a3); int __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2); int __fastcall std::ofstream::close(_DWORD *a1); bool __fastcall std::ofstream::is_open(int a1); int __thiscall std::ofstream::basic_ofstream(_DWORD *this, int *a2); int __thiscall std::ofstream::basic_ofstream(char *this, char *a2, int a3); int __thiscall std::ofstream::basic_ofstream(char *this, wchar_t *a2, int a3); int __thiscall std::ofstream::basic_ofstream(char *this, char **a2, int a3); BOOL __fastcall std::ofstream::basic_ofstream(int a1); int __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3); int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char *a3, int a4); int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, wchar_t *a3, int a4); int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char **a3, int a4); BOOL __thiscall std::ofstream::basic_ofstream(int *this, int *a2); void __fastcall std::ofstream::~ofstream(_DWORD *a1); void __fastcall std::ofstream::~ofstream(int a1); int __thiscall std::ofstream::~ofstream(_DWORD *this, int *a2); _DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::wofstream::open(int *this, char *a2, int a3); int __thiscall std::wofstream::open(int *this, wchar_t *a2, int a3); int __thiscall std::wofstream::open(int *this, char **a2, int a3); int __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2); int __fastcall std::wofstream::close(_DWORD *a1); bool __fastcall std::wofstream::is_open(int a1); int __thiscall std::wofstream::basic_ofstream(_DWORD *this, int *a2); int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3); int __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3); int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3); BOOL __fastcall std::wofstream::basic_ofstream(int a1); int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3); int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4); int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4); int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4); BOOL __thiscall std::wofstream::basic_ofstream(int *this, int *a2); void __fastcall std::wofstream::~wofstream(_DWORD *a1); void __fastcall std::wofstream::~wofstream(int a1); int __thiscall std::wofstream::~wofstream(_DWORD *this, int *a2); _DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); // _DWORD *__userpurge std::overflow_error::overflow_error@(_DWORD *a1@, std::overflow_error *this, const char *a3); _DWORD *__thiscall std::overflow_error::overflow_error(_DWORD *this, int a2); // unsigned int *__userpurge std::overflow_error::overflow_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); void __fastcall std::overflow_error::~overflow_error(_DWORD *a1); void __fastcall std::overflow_error::~overflow_error(_DWORD *a1); void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1); void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); _DWORD *__thiscall std::streambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); _DWORD *__thiscall std::streambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2); int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2); int __thiscall std::streambuf::setg(_DWORD *this, int a2, int a3, int a4); int __thiscall std::streambuf::setp(_DWORD *this, int a2, int a3); void __thiscall std::streambuf::swap(int this, int a2); int std::streambuf::sync(); int __thiscall std::streambuf::gbump(_DWORD *this, int a2); int __stdcall std::streambuf::imbue(int); // weak int __thiscall std::streambuf::pbump(_DWORD *this, int a2); int __fastcall std::streambuf::sgetc(_DWORD *a1); int __fastcall std::streambuf::sgetn(int a1); int __thiscall std::streambuf::sputc(_DWORD *this, unsigned __int8 a2); int __fastcall std::streambuf::sputn(int a1); int __fastcall std::streambuf::uflow(_DWORD *a1); int __fastcall std::streambuf::sbumpc(_DWORD *a1); int __fastcall std::streambuf::sbumpc(int a1); void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3); int __fastcall std::streambuf::snextc(_DWORD *a1); int (*__fastcall std::streambuf::stossc(_DWORD *a1))(void); int __thiscall std::streambuf::xsgetn(_DWORD *this, char *a2, int a3); int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *a2, int a3); int __fastcall std::streambuf::pubsync(int a1); _DWORD *__thiscall std::streambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); _DWORD *__thiscall std::streambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); int __fastcall std::streambuf::sungetc(_DWORD *a1); int __fastcall std::streambuf::in_avail(_DWORD *a1); int __stdcall std::streambuf::overflow(int a1); volatile signed __int32 **__thiscall std::streambuf::pubimbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); int __stdcall std::streambuf::pbackfail(int a1); int __thiscall std::streambuf::pubsetbuf(void *this, int a2, int a3); int std::streambuf::showmanyc(); int __thiscall std::streambuf::sputbackc(_DWORD *this, unsigned __int8 a2); int std::streambuf::underflow(); // volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); int __fastcall std::streambuf::basic_streambuf(_DWORD *a1); // volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); int __fastcall std::streambuf::basic_streambuf(_DWORD *a1); void __fastcall std::streambuf::~streambuf(char *a1); void __fastcall std::streambuf::~streambuf(int a1); void __fastcall std::streambuf::~streambuf(int a1); volatile signed __int32 **__thiscall std::streambuf::operator=(volatile signed __int32 **this, int a2); _DWORD *__thiscall std::wstreambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); _DWORD *__thiscall std::wstreambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2); int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2); int __thiscall std::wstreambuf::setg(_DWORD *this, int a2, int a3, int a4); int __thiscall std::wstreambuf::setp(_DWORD *this, int a2, int a3); void __thiscall std::wstreambuf::swap(int this, int a2); int std::wstreambuf::sync(); int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2); int __stdcall std::wstreambuf::imbue(int); // weak int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2); int __fastcall std::wstreambuf::sgetc(_DWORD *a1); int __fastcall std::wstreambuf::sgetn(int a1); int __thiscall std::wstreambuf::sputc(_DWORD *this, int a2); int __fastcall std::wstreambuf::sputn(int a1); int __fastcall std::wstreambuf::uflow(_DWORD *a1); int __fastcall std::wstreambuf::sbumpc(_DWORD *a1); int __fastcall std::wstreambuf::sbumpc(int a1); void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3); int __fastcall std::wstreambuf::snextc(_DWORD *a1); int (*__fastcall std::wstreambuf::stossc(_DWORD *a1))(void); int __thiscall std::wstreambuf::xsgetn(_DWORD *this, wchar_t *a2, int a3); int __thiscall std::wstreambuf::xsputn(_DWORD *this, wchar_t *a2, int a3); int __fastcall std::wstreambuf::pubsync(int a1); _DWORD *__thiscall std::wstreambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); _DWORD *__thiscall std::wstreambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); int __fastcall std::wstreambuf::sungetc(_DWORD *a1); int __fastcall std::wstreambuf::in_avail(_DWORD *a1); int __stdcall std::wstreambuf::overflow(int a1); volatile signed __int32 **__thiscall std::wstreambuf::pubimbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); int __stdcall std::wstreambuf::pbackfail(int a1); int __thiscall std::wstreambuf::pubsetbuf(void *this, int a2, int a3); int std::wstreambuf::showmanyc(); int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int a2); int std::wstreambuf::underflow(); // volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1); // volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1); void __fastcall std::wstreambuf::~wstreambuf(char *a1); void __fastcall std::wstreambuf::~wstreambuf(int a1); void __fastcall std::wstreambuf::~wstreambuf(int a1); volatile signed __int32 **__thiscall std::wstreambuf::operator=(volatile signed __int32 **this, int a2); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1); void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1); void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); // _DWORD *__userpurge std::underflow_error::underflow_error@(_DWORD *a1@, std::underflow_error *this, const char *a3); _DWORD *__thiscall std::underflow_error::underflow_error(_DWORD *this, int a2); // unsigned int *__userpurge std::underflow_error::underflow_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); void __fastcall std::underflow_error::~underflow_error(_DWORD *a1); void __fastcall std::underflow_error::~underflow_error(_DWORD *a1); int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *a1); void __thiscall std::__numpunct_cache::_M_cache(int this, int a2); int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1); void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); void __thiscall std::__numpunct_cache::_M_cache(int this, int a2); BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1); void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); // _DWORD *__userpurge std::invalid_argument::invalid_argument@(_DWORD *a1@, std::invalid_argument *this, const char *a3); _DWORD *__thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2); // unsigned int *__userpurge std::invalid_argument::invalid_argument@(_DWORD *a1@, unsigned int **this, const std::string *a3); void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1); void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1); BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1); void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1); void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1); void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1); void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1); void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1); void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *this); // idb void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1); void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1); void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); void __fastcall std::_V2::error_category::~error_category(void *a1); void __cdecl std::_V2::error_category::~error_category(std::_V2::error_category *__hidden this); // idb void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this); void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this); _DWORD *__thiscall std::map>::operator[](_DWORD *this, int a2); _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2); char *__thiscall std::map>::operator[](_DWORD *this, int a2); _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); _DWORD *__thiscall std::map>>::operator[](_DWORD *this, _DWORD *a2); volatile signed __int32 *__thiscall std::pair>::pair,true>(int this, int a2); int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, _BYTE *a4, int a5, int a6); int __cdecl std::__pad>::_S_pad(wchar_t *S1, wchar_t *S2, wchar_t *a3, wchar_t *a4, int a5, int a6); void **std::ctype::classic_table(); int __thiscall std::ctype::ctype(_DWORD *this, void **a2, char a3, int a4); int __thiscall std::ctype::ctype(_DWORD *this, int a2, void **a3, char a4, int a5); void __fastcall std::ctype::~ctype(void *a1); void __cdecl std::ctype::~ctype(std::locale::facet *a1); wctype_t __fastcall std::ctype::_M_initialize_ctype(int a1); wctype_t __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3); wctype_t __thiscall std::ctype::ctype(_DWORD *this, int a2); void __fastcall std::ctype::~ctype(_DWORD *a1); void __cdecl std::ctype::~ctype(std::locale::facet *a1); int __thiscall std::deque>::_M_push_back_aux const&>(int this, _DWORD *a2); int __fastcall std::deque>::back(_DWORD *a1); int __fastcall std::deque>::pop_back(_DWORD *a1); volatile signed __int32 *__thiscall std::deque>::push_back(_DWORD *this, _DWORD *a2); int __thiscall std::deque>::_M_push_back_aux const&>(int this, _DWORD *a2); int __fastcall std::deque>::pop_back(_DWORD *a1); volatile signed __int32 *__thiscall std::deque>::push_back(_DWORD *this, _DWORD *a2); _DWORD __stdcall std::deque::_M_push_back_aux(_DWORD); // weak _BYTE *__thiscall std::deque::push_back(_DWORD *this, int a2); int std::locale::_S_initialize(); void std::locale::_S_initialize_once(void); // idb std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this); // int __userpurge std::locale::_Impl::_M_init_extra@(int a1@, std::locale::_Impl *this, std::locale::facet **a3); // int __userpurge std::locale::_Impl::_M_init_extra@(int a1@, std::locale::_Impl *this, int *a3, int **a4, const char *a5, const char *a6); // void __userpurge std::locale::_Impl::_M_install_cache(int a1@, std::locale::_Impl *this, const std::locale::facet *a3, unsigned int a4); // const std::locale::id *__userpurge std::locale::_Impl::_M_install_facet@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::id *a3, const std::locale::facet *a4); // const std::locale::id *__userpurge std::locale::_Impl::_M_replace_facet@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, const std::locale::id *a4); // const std::locale::_Impl *__userpurge std::locale::_Impl::_M_replace_category@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl **a3, const std::locale::id *const *a4); // void *__userpurge std::locale::_Impl::_Impl@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, unsigned int a4); // int __userpurge std::locale::_Impl::_Impl@(_DWORD *a1@, std::locale::_Impl *this, unsigned int a3); void __fastcall std::locale::_Impl::~_Impl(_DWORD *a1); int *const *std::locale::facet::_S_get_c_name(); int std::locale::facet::_S_get_c_locale(); int __cdecl std::locale::facet::_S_clone_c_locale(); int **__cdecl std::locale::facet::_S_create_c_locale(std::locale::facet *this, int **a2); void std::locale::facet::_S_initialize_once(void); // idb std::locale::facet *__cdecl std::locale::facet::_S_destroy_c_locale(std::locale::facet *this); int __cdecl std::locale::facet::_S_lc_ctype_c_locale(); void __fastcall std::locale::facet::~facet(void *a1); void __cdecl std::locale::facet::~facet(std::locale::facet *__hidden this); // idb std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **a2); _DWORD *std::locale::classic(); // std::locale *__userpurge std::locale::locale@(_DWORD *a1@, std::locale *this, std::locale::_Impl *a3); // volatile signed __int32 *__userpurge std::locale::locale@(volatile signed __int32 **a1@, volatile signed __int32 **this, const std::locale *a3); int __fastcall std::locale::locale(_DWORD *a1); void __fastcall std::locale::~locale(_DWORD **a1); volatile signed __int32 **__thiscall std::locale::operator=(volatile signed __int32 **this, volatile signed __int32 **a2); char *__thiscall std::vector>::_M_realloc_insert const&>(char **this, char *a2, _DWORD *a3); char *__thiscall std::vector>::push_back(char **this, _DWORD *a2); char *__thiscall std::vector>::_M_realloc_insert const&>(char **this, char *a2, _DWORD *a3); char *__thiscall std::vector>::push_back(int this, _DWORD *a2); volatile signed __int32 *__thiscall std::vector>::vector(volatile signed __int32 **this, volatile signed __int32 **a2); char *__thiscall std::vector>::_M_realloc_insert const&>(char **this, char *a2, _DWORD *a3); char *__thiscall std::vector>::push_back(char **this, _DWORD *a2); int __thiscall std::vector::_M_realloc_insert(void ***this, char *a2, volatile signed __int32 **a3); volatile signed __int32 *__thiscall std::vector::push_back(int this, volatile signed __int32 **a2); char **__thiscall std::vector::_M_realloc_insert(char **this, char *a2, _DWORD *a3); char **__thiscall std::vector::push_back(char **this, WXSS::Token *a2); void __thiscall std::vector::emplace_back(void ***this, _DWORD *a2); _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); // weak _BYTE *__thiscall std::vector::push_back(_DWORD *this, int a2); _DWORD *__thiscall std::vector>::emplace_back>(char **this, _DWORD *a2); int __thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); char **__thiscall std::vector>>::emplace_back>>(int this, _DWORD *a2); char **__thiscall std::vector>>::_M_realloc_insert>>(char **this, char *a2, _DWORD *a3); int __thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(void *a1); void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(void *a1); void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(void *a1); void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(void *a1); void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); void __thiscall std::string::_M_destroy(void **this, int a2); void __fastcall std::string::_M_dispose(void **a1); unsigned int *__thiscall std::string::_M_replace(unsigned int *this, size_t a2, size_t a3, char *Src, size_t a5); int __cdecl std::string::_S_compare(int a1, int a2); int __thiscall std::string::_M_capacity(_DWORD *this, int a2); int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); _BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t a2, char a3); _BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *Src, int a3, int a4); _BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *Src, int a3, int a4); unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *a2, size_t Size, int a4); _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4); int __fastcall std::string::_M_local_data(int a1); int __thiscall std::string::_M_set_length(int *this, int a2); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); void __fastcall std::string::shrink_to_fit(_DWORD *a1); _DWORD *__thiscall std::string::_M_replace_aux(_DWORD *this, size_t a2, int a3, size_t a4, char a5); int __fastcall std::string::_M_get_allocator(int a1); _BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t a2, char a3); unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2); int __fastcall std::string::end(_DWORD *a1); int __fastcall std::string::back(_DWORD *a1); _DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2); _BYTE *__thiscall std::string::swap(_DWORD *this, _DWORD *a2); int __fastcall std::string::begin(int a1); _BYTE *__fastcall std::string::clear(int a1); int __thiscall std::string::erase(int *this, int a2); int __thiscall std::string::erase(int *this, _BYTE *a2, int a3); int __thiscall std::string::erase(int *this, int a2); int __thiscall std::string::erase(int *this, _BYTE *a2, int a3); int *__thiscall std::string::erase(int *this, unsigned int a2, unsigned int a3); int __fastcall std::string::front(int a1); _DWORD *__thiscall std::string::append(_DWORD *this, char *Str); _DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3); _DWORD *__thiscall std::string::append(_DWORD *this, int a2); _DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, size_t a4); _DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3); _DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3); _DWORD *__thiscall std::string::assign(_DWORD *this, int a2); unsigned int *__thiscall std::string::assign(unsigned int *this, char *Str); unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3); void *__thiscall std::string::assign(void *this, int a2); unsigned int *__thiscall std::string::assign(unsigned int *this, _DWORD *a2, unsigned int a3, size_t a4); unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3); _DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3); size_t __thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4); size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3); size_t __thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4); unsigned int *__thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4); size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3); _DWORD *__thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4); unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *Str); unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *a3, size_t a4); unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, int a3); unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, _DWORD *a3, char *a4, size_t a5); _DWORD *__thiscall std::string::insert(_DWORD *this, unsigned int a2, size_t a3, char a4); unsigned int *__thiscall std::string::insert<__gnu_cxx::__normal_iterator>(unsigned int *this, int a2, char *a3, int a4); _DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::string::resize(int *this, _DWORD *a2); _DWORD *__thiscall std::string::resize(int *this, _DWORD *a2, char a3); int __thiscall std::string::_M_data(_DWORD *this, int a2); size_t __cdecl std::string::_S_copy(void *a1, const void *Src, size_t Size); size_t __cdecl std::string::_S_move(void *a1, const void *Src, size_t Size); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); _DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); _DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5); unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *Str); unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *a4, size_t a5); unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, size_t a3, int a4); unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); _DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, char a5); void __thiscall std::string::reserve(_DWORD *this, unsigned int a2); int __thiscall std::string::_M_erase(int *this, int a2, int a3); int __fastcall std::string::pop_back(int *a1); _DWORD *__thiscall std::string::_M_append(_DWORD *this, _BYTE *Src, size_t Size); void __thiscall std::string::_M_assign(int this, int a2); void *__stdcall std::string::_M_create(unsigned int *a1, unsigned int a2); int __thiscall std::string::_M_length(_DWORD *this, int a2); size_t __thiscall std::string::_M_mutate(int this, size_t Size, int a3, _BYTE *a4, size_t a5); void *__cdecl std::string::_S_assign(_BYTE *a1, void *Val, size_t Size); _DWORD *__thiscall std::string::push_back(_DWORD *this, char a2); _DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2); _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3); unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); char *__thiscall std::string::basic_string(_DWORD *this, int a2); _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2); _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); _BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4); int __fastcall std::string::basic_string(int a1); _BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _BYTE *a2, int a3, int a4); unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, size_t a3, int a4); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); _DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2); _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3); unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); char *__thiscall std::string::basic_string(_DWORD *this, int a2); _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2); _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); _BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4); int __fastcall std::string::basic_string(int a1); _BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _BYTE *a2, int a3, int a4); unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, size_t a3, int a4); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); void __fastcall std::string::~string(void **a1); void __fastcall std::string::~string(void **a1); _DWORD *__thiscall std::string::operator=(_DWORD *this, _DWORD *a2); unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); void *__thiscall std::string::operator=(void *this, int a2); unsigned int *__thiscall std::string::operator=(unsigned int *this, char *a2, size_t a3); _DWORD *__thiscall std::string::operator=(_DWORD *this, char a2); int __thiscall std::string::operator[](_DWORD *this, int a2); _DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str); _DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2); _DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *a2, size_t a3); _DWORD *__thiscall std::string::operator+=(_DWORD *this, char a2); void __thiscall std::wstring::_M_destroy(void **this, int a2); void __fastcall std::wstring::_M_dispose(void **a1); int __thiscall std::wstring::_M_replace(int this, size_t a2, size_t a3, wchar_t *a4, size_t a5); int __cdecl std::wstring::_S_compare(int a1, int a2); int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2); int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, size_t a2, wchar_t a3); wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *S2, int a3, int a4); wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *S2, int a3, int a4); wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4); wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4); int __fastcall std::wstring::_M_local_data(int a1); int __thiscall std::wstring::_M_set_length(int *this, int a2); int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); void __fastcall std::wstring::shrink_to_fit(_DWORD *a1); int __thiscall std::wstring::_M_replace_aux(int this, size_t a2, int a3, size_t a4, wchar_t a5); int __fastcall std::wstring::_M_get_allocator(int a1); wchar_t *__thiscall std::wstring::_M_construct_aux_2(wchar_t **this, size_t a2, wchar_t a3); int __thiscall std::wstring::at(_DWORD *this, unsigned int a2); int __fastcall std::wstring::end(_DWORD *a1); int __fastcall std::wstring::back(_DWORD *a1); _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); void __thiscall std::wstring::swap(wchar_t **this, int a2); int __fastcall std::wstring::begin(int a1); _WORD *__fastcall std::wstring::clear(int a1); int __thiscall std::wstring::erase(int *this, int a2); _WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3); int __thiscall std::wstring::erase(int *this, int a2); _WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3); int *__thiscall std::wstring::erase(int *this, unsigned int a2, unsigned int a3); int __fastcall std::wstring::front(int a1); int __thiscall std::wstring::append(_DWORD *this, wchar_t *String); int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3); int __thiscall std::wstring::append(void *this, int a2); int __thiscall std::wstring::append(void *this, _DWORD *a2, unsigned int a3, size_t a4); int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3); int __thiscall std::wstring::append(size_t *this, size_t a2, __int16 a3); wchar_t **__thiscall std::wstring::assign(wchar_t **this, int a2); int __thiscall std::wstring::assign(size_t *this, wchar_t *String); int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3); void *__thiscall std::wstring::assign(void *this, int a2); int __thiscall std::wstring::assign(size_t *this, _DWORD *a2, unsigned int a3, size_t a4); int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3); int __thiscall std::wstring::assign(int *this, size_t a2, __int16 a3); int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, int a4); int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4); int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3); int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, size_t a4); int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4); int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3); int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *String); int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *a3, size_t a4); int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, int a3); int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, _DWORD *a3, unsigned int a4, size_t a5); int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, size_t a3, __int16 a4); int __thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>(_DWORD *this, int a2, wchar_t *a3, int a4); _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); int __thiscall std::wstring::resize(int *this, unsigned int a2); int __thiscall std::wstring::resize(int *this, unsigned int a2, wchar_t a3); int __thiscall std::wstring::_M_data(_DWORD *this, int a2); size_t __cdecl std::wstring::_S_copy(wchar_t *S1, const wchar_t *S2, size_t N); size_t __cdecl std::wstring::_S_move(wchar_t *S1, const wchar_t *S2, size_t N); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5); int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *a4, size_t a5); int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, int a4); int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, wchar_t a5); void __thiscall std::wstring::reserve(int this, unsigned int a2); int __thiscall std::wstring::_M_erase(int *this, int a2, int a3); int __fastcall std::wstring::pop_back(int *a1); int __thiscall std::wstring::_M_append(int this, wchar_t *S2, size_t N); void __thiscall std::wstring::_M_assign(int this, int a2); void *__stdcall std::wstring::_M_create(unsigned int *a1, unsigned int a2); int __thiscall std::wstring::_M_length(_DWORD *this, int a2); const wchar_t *__thiscall std::wstring::_M_mutate(const wchar_t **this, size_t N, int a3, wchar_t *a4, size_t a5); wchar_t *__cdecl std::wstring::_S_assign(wchar_t *a1, size_t C, size_t N); const wchar_t *__thiscall std::wstring::push_back(int this, wchar_t a2); int __thiscall std::wstring::basic_string(wchar_t *this, int a2); _WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); int __thiscall std::wstring::basic_string(_DWORD *this, int a2); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4); int __fastcall std::wstring::basic_string(int a1); wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(wchar_t **this, wchar_t *a2, int a3, int a4); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); int __thiscall std::wstring::basic_string(wchar_t *this, int a2); _WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); int __thiscall std::wstring::basic_string(_DWORD *this, int a2); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4); int __fastcall std::wstring::basic_string(int a1); wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(wchar_t **this, wchar_t *a2, int a3, int a4); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); void __fastcall std::wstring::~wstring(void **a1); void __fastcall std::wstring::~wstring(void **a1); wchar_t **__thiscall std::wstring::operator=(wchar_t **this, int a2); int __thiscall std::wstring::operator=(size_t *this, wchar_t *String); void *__thiscall std::wstring::operator=(void *this, int a2); size_t *__thiscall std::wstring::operator=(size_t *this, wchar_t *a2, size_t a3); int *__thiscall std::wstring::operator=(int *this, wchar_t a2); int __thiscall std::wstring::operator[](_DWORD *this, int a2); int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String); int __thiscall std::wstring::operator+=(void *this, int a2); int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *a2, size_t a3); _DWORD *__thiscall std::wstring::operator+=(char *this, __int16 a2); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); unsigned int __fastcall std::stringbuf::_M_update_egptr(int a1); int __thiscall std::stringbuf::_M_stringbuf_init(int this, int a2); int __thiscall std::stringbuf::str(int this, int a2); int __thiscall std::stringbuf::swap(_DWORD *this, int a2); _DWORD *__thiscall std::stringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3); int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4); unsigned int *__thiscall std::stringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5); _DWORD *__thiscall std::stringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6); int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4); int __thiscall std::stringbuf::overflow(int this, int a2); int __thiscall std::stringbuf::pbackfail(int this, int a2); int __fastcall std::stringbuf::showmanyc(int a1); int __fastcall std::stringbuf::underflow(int a1); int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3); int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3); char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2); int __fastcall std::stringbuf::basic_stringbuf(int a1); int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3); int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3); char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2); int __fastcall std::stringbuf::basic_stringbuf(int a1); void __fastcall std::stringbuf::~stringbuf(_DWORD *a1); void __fastcall std::stringbuf::~stringbuf(int a1); int __thiscall std::stringbuf::operator=(int this, int a2); unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); unsigned int __fastcall std::wstringbuf::_M_update_egptr(int a1); int __thiscall std::wstringbuf::_M_stringbuf_init(int this, int a2); int __thiscall std::wstringbuf::str(int this, int a2); int __thiscall std::wstringbuf::swap(_DWORD *this, int a2); _DWORD *__thiscall std::wstringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3); int __thiscall std::wstringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4); unsigned int *__thiscall std::wstringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5); _DWORD *__thiscall std::wstringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6); int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4); int __thiscall std::wstringbuf::overflow(int this, int a2); int __thiscall std::wstringbuf::pbackfail(int this, int a2); int __fastcall std::wstringbuf::showmanyc(int a1); int __fastcall std::wstringbuf::underflow(int a1); int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2); int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3); int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3); int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2); int __fastcall std::wstringbuf::basic_stringbuf(int a1); int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2); int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3); int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3); int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2); int __fastcall std::wstringbuf::basic_stringbuf(int a1); void __fastcall std::wstringbuf::~wstringbuf(_DWORD *a1); void __fastcall std::wstringbuf::~wstringbuf(int a1); int __thiscall std::wstringbuf::operator=(int this, int a2); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); int __thiscall std::basic_stringstream,std::allocator>::swap(_DWORD *this, _DWORD *a2); char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, _DWORD *a2); BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int a2, int a3); BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2); BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1); int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, _DWORD *a3); BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2, int a3, int a4); BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3); BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2); void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *a2); char *__thiscall std::basic_stringstream,std::allocator>::operator=(char *this, int a2); int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); int __thiscall std::basic_stringstream,std::allocator>::swap(_DWORD *this, _DWORD *a2); char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2); BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int a2, int a3); BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2); BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1); int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2, _DWORD *a3); BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2, int a3, int a4); BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3); BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2); void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *a2); char *__thiscall std::basic_stringstream,std::allocator>::operator=(char *this, int a2); int __thiscall std::istringstream::str(int this, int a2); int __thiscall std::istringstream::swap(_DWORD *this, _DWORD *a2); char *__thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2); BOOL __thiscall std::istringstream::basic_istringstream(char *this, int a2, int a3); BOOL __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2); BOOL __fastcall std::istringstream::basic_istringstream(int a1); int __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3); BOOL __thiscall std::istringstream::basic_istringstream(char *this, int *a2, int a3, int a4); BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3); BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2); void __fastcall std::istringstream::~istringstream(_DWORD *a1); void __fastcall std::istringstream::~istringstream(int a1); int __thiscall std::istringstream::~istringstream(int *this, int *a2); char *__thiscall std::istringstream::operator=(char *this, int a2); int __thiscall std::wistringstream::str(int this, int a2); int __thiscall std::wistringstream::swap(_DWORD *this, _DWORD *a2); char *__thiscall std::wistringstream::basic_istringstream(char *this, int *a2); BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int a2, int a3); BOOL __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2); BOOL __fastcall std::wistringstream::basic_istringstream(int a1); int __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3); BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3, int a4); BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3); BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2); void __fastcall std::wistringstream::~wistringstream(_DWORD *a1); void __fastcall std::wistringstream::~wistringstream(int a1); int __thiscall std::wistringstream::~wistringstream(int *this, int *a2); char *__thiscall std::wistringstream::operator=(char *this, int a2); int __thiscall std::ostringstream::str(int this, int a2); int __thiscall std::ostringstream::swap(_DWORD *this, _DWORD *a2); char *__thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2); BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int a2, int a3); BOOL __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2); BOOL __fastcall std::ostringstream::basic_ostringstream(int a1); int __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3); BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4); BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3); BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2); void __fastcall std::ostringstream::~ostringstream(_DWORD *a1); void __fastcall std::ostringstream::~ostringstream(int a1); int __thiscall std::ostringstream::~ostringstream(int *this, int *a2); volatile signed __int32 **__thiscall std::ostringstream::operator=(volatile signed __int32 **this, int a2); int __thiscall std::wostringstream::str(int this, int a2); int __thiscall std::wostringstream::swap(_DWORD *this, _DWORD *a2); char *__thiscall std::wostringstream::basic_ostringstream(char *this, int *a2); BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int a2, int a3); BOOL __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2); BOOL __fastcall std::wostringstream::basic_ostringstream(int a1); int __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3); BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4); BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3); BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2); void __fastcall std::wostringstream::~wostringstream(_DWORD *a1); void __fastcall std::wostringstream::~wostringstream(int a1); int __thiscall std::wostringstream::~wostringstream(int *this, int *a2); char *__thiscall std::wostringstream::operator=(char *this, int a2); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); int __thiscall std::collate::collate(_DWORD *this, int a2); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); int __thiscall std::collate::collate(_DWORD *this, int a2); void __fastcall std::collate::~collate(_DWORD *a1); void __cdecl std::collate::~collate(std::locale::facet *a1); void __cdecl std::collate::~collate(std::locale::facet *a1); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); int __thiscall std::collate::collate(_DWORD *this, int a2); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); int __thiscall std::collate::collate(_DWORD *this, int a2); void __fastcall std::collate::~collate(_DWORD *a1); void __cdecl std::collate::~collate(std::locale::facet *a1); void __cdecl std::collate::~collate(std::locale::facet *a1); int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); int __thiscall std::messages::messages(_DWORD *this, int a2); int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); int __thiscall std::messages::messages(_DWORD *this, int a2); void __fastcall std::messages::~messages(_DWORD *a1); void __cdecl std::messages::~messages(std::locale::facet *a1); void __cdecl std::messages::~messages(std::locale::facet *a1); int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); int __thiscall std::messages::messages(_DWORD *this, int a2); int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); int __thiscall std::messages::messages(_DWORD *this, int a2); void __fastcall std::messages::~messages(_DWORD *a1); void __cdecl std::messages::~messages(std::locale::facet *a1); void __cdecl std::messages::~messages(std::locale::facet *a1); _DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __fastcall std::numpunct::~numpunct(void *a1); void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __fastcall std::numpunct::~numpunct(void *a1); void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); void __fastcall std::time_get>::~time_get(_DWORD *a1); void __cdecl std::time_get>::~time_get(std::locale::facet *a1); void __cdecl std::time_get>::~time_get(std::locale::facet *a1); BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); void __fastcall std::time_get>::~time_get(_DWORD *a1); void __cdecl std::time_get>::~time_get(std::locale::facet *a1); void __cdecl std::time_get>::~time_get(std::locale::facet *a1); BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); void __fastcall std::money_get>::~money_get(_DWORD *a1); void __cdecl std::money_get>::~money_get(std::locale::facet *a1); void __cdecl std::money_get>::~money_get(std::locale::facet *a1); BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); void __fastcall std::money_get>::~money_get(_DWORD *a1); void __cdecl std::money_get>::~money_get(std::locale::facet *a1); void __cdecl std::money_get>::~money_get(std::locale::facet *a1); BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); void __fastcall std::money_put>::~money_put(_DWORD *a1); void __cdecl std::money_put>::~money_put(std::locale::facet *a1); void __cdecl std::money_put>::~money_put(std::locale::facet *a1); BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); void __fastcall std::money_put>::~money_put(_DWORD *a1); void __cdecl std::money_put>::~money_put(std::locale::facet *a1); void __cdecl std::money_put>::~money_put(std::locale::facet *a1); void __fastcall std::codecvt::~codecvt(_DWORD *a1); void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); void __fastcall std::codecvt::~codecvt(_DWORD *a1); void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); void __fastcall std::codecvt::~codecvt(_DWORD *a1); void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); void __fastcall std::codecvt::~codecvt(_DWORD *a1); void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3); int __thiscall std::codecvt::codecvt(_DWORD *this, int a2); void __fastcall std::codecvt::~codecvt(void *a1); void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3); int __thiscall std::codecvt::codecvt(_DWORD *this, int a2); void __fastcall std::codecvt::~codecvt(void *a1); void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); int __thiscall std::collate::collate(_DWORD *this, int a2); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); int __thiscall std::collate::collate(_DWORD *this, int a2); void __fastcall std::collate::~collate(_DWORD *a1); void __cdecl std::collate::~collate(std::locale::facet *a1); void __cdecl std::collate::~collate(std::locale::facet *a1); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); int __thiscall std::collate::collate(_DWORD *this, int a2); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); int __thiscall std::collate::collate(_DWORD *this, int a2); void __fastcall std::collate::~collate(_DWORD *a1); void __cdecl std::collate::~collate(std::locale::facet *a1); void __cdecl std::collate::~collate(std::locale::facet *a1); BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); void __fastcall std::num_get>::~num_get(_DWORD *a1); void __cdecl std::num_get>::~num_get(std::locale::facet *a1); void __cdecl std::num_get>::~num_get(std::locale::facet *a1); BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); void __fastcall std::num_get>::~num_get(_DWORD *a1); void __cdecl std::num_get>::~num_get(std::locale::facet *a1); void __cdecl std::num_get>::~num_get(std::locale::facet *a1); BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); void __fastcall std::num_put>::~num_put(_DWORD *a1); void __cdecl std::num_put>::~num_put(std::locale::facet *a1); void __cdecl std::num_put>::~num_put(std::locale::facet *a1); BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); void __fastcall std::num_put>::~num_put(_DWORD *a1); void __cdecl std::num_put>::~num_put(std::locale::facet *a1); void __cdecl std::num_put>::~num_put(std::locale::facet *a1); _DWORD *__thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique(_DWORD *this, int a2); void __stdcall std::_Rb_tree,std::less,std::allocator>::_M_erase(void **a1); _DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); _DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find(_DWORD *this, int a2); void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void *a1); _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>(_DWORD *this, _DWORD *a2); int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void **a1); int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void *a1); int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos(_DWORD *this, _DWORD *a2); int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int *a3); void __stdcall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(void *a1); void __fastcall std::bad_cast::~bad_cast(_DWORD *a1); void __cdecl std::bad_cast::~bad_cast(std::exception *a1); // int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, int this, char a3, bool a4); int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this); int __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int a2); _DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int a2, int a3); void __fastcall std::ios_base::_M_dispose_callbacks(int a1); int std::ios_base::Init::Init(); void __cdecl std::ios_base::Init::~Init(); volatile signed __int32 **__thiscall std::ios_base::imbue(volatile signed __int32 **ecx0, volatile signed __int32 **this, volatile signed __int32 **a3); int std::ios_base::xalloc(); void __fastcall std::ios_base::_M_init(int a1); // volatile signed __int32 **__userpurge std::ios_base::_M_move@(int a1@, std::ios_base *this, std::ios_base *a3); // void __userpurge std::ios_base::_M_swap(int a1@, std::ios_base *this, std::ios_base *a3); int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *Str, int *a3); void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2); int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3); void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1); void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1); // unsigned int *__userpurge std::ios_base::failure::failure@(int a1@, unsigned int **this, const std::string *a3); void __fastcall std::ios_base::failure::~failure(_DWORD *a1); void __fastcall std::ios_base::failure::~failure(_DWORD *a1); int __fastcall std::ios_base::ios_base(_DWORD *a1); void __fastcall std::ios_base::~ios_base(void *a1); void __fastcall std::ios_base::~ios_base(int a1); int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); int __thiscall std::messages::messages(_DWORD *this, int a2); int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); int __thiscall std::messages::messages(_DWORD *this, int a2); void __fastcall std::messages::~messages(_DWORD *a1); void __cdecl std::messages::~messages(std::locale::facet *a1); void __cdecl std::messages::~messages(std::locale::facet *a1); int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); int __thiscall std::messages::messages(_DWORD *this, int a2); int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); int __thiscall std::messages::messages(_DWORD *this, int a2); void __fastcall std::messages::~messages(_DWORD *a1); void __cdecl std::messages::~messages(std::locale::facet *a1); void __cdecl std::messages::~messages(std::locale::facet *a1); _DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __fastcall std::numpunct::~numpunct(void *a1); void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __fastcall std::numpunct::~numpunct(void *a1); void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); void __fastcall std::time_get>::~time_get(_DWORD *a1); void __cdecl std::time_get>::~time_get(std::locale::facet *a1); void __cdecl std::time_get>::~time_get(std::locale::facet *a1); BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); void __fastcall std::time_get>::~time_get(_DWORD *a1); void __cdecl std::time_get>::~time_get(std::locale::facet *a1); void __cdecl std::time_get>::~time_get(std::locale::facet *a1); BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); void __fastcall std::time_put>::~time_put(_DWORD *a1); void __cdecl std::time_put>::~time_put(std::locale::facet *a1); void __cdecl std::time_put>::~time_put(std::locale::facet *a1); BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); void __fastcall std::time_put>::~time_put(_DWORD *a1); void __cdecl std::time_put>::~time_put(std::locale::facet *a1); void __cdecl std::time_put>::~time_put(std::locale::facet *a1); void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1); void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1); int __thiscall std::ios::exceptions(_DWORD *this, int a2); int __thiscall std::ios::_M_setstate(_DWORD *this, int a2); void *__thiscall std::ios::_M_cache_locale(_DWORD *this, int a2); int __thiscall std::ios::tie(_DWORD *this, int a2); int __thiscall std::ios::fill(int this, char a2); BOOL __thiscall std::ios::init(int this, int a2); int __thiscall std::ios::move(int this, std::ios_base *a2); int __thiscall std::ios::move(int this, std::ios_base *a2); int __thiscall std::ios::swap(int this, std::ios_base *a2); int __thiscall std::ios::clear(_DWORD *this, int a2); volatile signed __int32 **__thiscall std::ios::imbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); int __thiscall std::ios::rdbuf(_DWORD *this, int a2); int __thiscall std::ios::copyfmt(int this, _DWORD *a2); int __thiscall std::ios::setstate(_DWORD *this, int a2); int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2); BOOL __thiscall std::ios::basic_ios(int this, int a2); int __fastcall std::ios::basic_ios(int a1); BOOL __thiscall std::ios::basic_ios(int this, int a2); int __fastcall std::ios::basic_ios(int a1); void __fastcall std::ios::~ios(_DWORD *a1); void __fastcall std::ios::~ios(int a1); void __fastcall std::ios::~ios(int a1); int __thiscall std::wios::exceptions(_DWORD *this, int a2); int __thiscall std::wios::_M_setstate(_DWORD *this, int a2); void *__thiscall std::wios::_M_cache_locale(_DWORD *this, int a2); int __thiscall std::wios::tie(_DWORD *this, int a2); int __thiscall std::wios::fill(int this, __int16 a2); BOOL __thiscall std::wios::init(int this, int a2); int __thiscall std::wios::move(int this, std::ios_base *a2); int __thiscall std::wios::move(int this, std::ios_base *a2); int __thiscall std::wios::swap(int this, std::ios_base *a2); int __thiscall std::wios::clear(_DWORD *this, int a2); volatile signed __int32 **__thiscall std::wios::imbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); int __thiscall std::wios::rdbuf(_DWORD *this, int a2); int __thiscall std::wios::copyfmt(int this, _DWORD *a2); int __thiscall std::wios::setstate(_DWORD *this, int a2); int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2); BOOL __thiscall std::wios::basic_ios(int this, int a2); int __fastcall std::wios::basic_ios(int a1); BOOL __thiscall std::wios::basic_ios(int this, int a2); int __fastcall std::wios::basic_ios(int a1); void __fastcall std::wios::~wios(_DWORD *a1); void __fastcall std::wios::~wios(int a1); void __fastcall std::wios::~wios(int a1); void __fastcall std::exception::~exception(void *a1); void __cdecl std::exception::~exception(std::exception *__hidden this); // idb BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); void __fastcall std::money_get>::~money_get(_DWORD *a1); void __cdecl std::money_get>::~money_get(std::locale::facet *a1); void __cdecl std::money_get>::~money_get(std::locale::facet *a1); BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); void __fastcall std::money_get>::~money_get(_DWORD *a1); void __cdecl std::money_get>::~money_get(std::locale::facet *a1); void __cdecl std::money_get>::~money_get(std::locale::facet *a1); BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); void __fastcall std::money_put>::~money_put(_DWORD *a1); void __cdecl std::money_put>::~money_put(std::locale::facet *a1); void __cdecl std::money_put>::~money_put(std::locale::facet *a1); BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); void __fastcall std::money_put>::~money_put(_DWORD *a1); void __cdecl std::money_put>::~money_put(std::locale::facet *a1); void __cdecl std::money_put>::~money_put(std::locale::facet *a1); void __fastcall std::type_info::~type_info(void *a1); void __cdecl std::type_info::~type_info(std::type_info *__hidden this); // idb void __noreturn std::unexpected(void); // idb int __cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, int a3, __int16 a4, char a5); int __cdecl std::__int_to_char(_BYTE *a1, UDItype n, int a3, __int16 a4, char a5); int __cdecl std::__int_to_char(_WORD *a1, unsigned int a2, int a3, __int16 a4, char a5); int __cdecl std::__int_to_char(_WORD *a1, UDItype n, int a3, __int16 a4, char a5); void (*std::get_terminate(void))(void); __int32 __cdecl std::set_terminate(void (*a1)(void)); _BYTE *__cdecl std::__add_grouping(_BYTE *a1, char a2, char *a3, int a4, _BYTE *a5, _BYTE *a6); _WORD *__cdecl std::__add_grouping(_WORD *a1, __int16 a2, char *a3, int a4, _WORD *a5, _WORD *a6); void __cdecl std::__convert_to_v(char *String, double *a2, _DWORD *a3); void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3); void __cdecl std::__convert_to_v(char *String, float *a2, _DWORD *a3); void (*std::get_unexpected(void))(void); __int32 __cdecl std::set_unexpected(void (*a1)(void)); int std::get_new_handler(void); __int32 __cdecl std::set_new_handler(void (*a1)(void)); int std::__convert_from_v(int *const *a1, char *Buffer, size_t BufferCount, char *Format, ...); std::ostream::sentry *__cdecl std::__ostream_insert>(std::ostream::sentry *a1, int a2, int a3); int *__cdecl std::__ostream_insert>(int *a1, int a2, int a3); int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2); int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2); int __cdecl std::__verify_grouping(char *a1, unsigned int a2, int a3); // idb int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3); void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden this); int __cdecl std::_Rb_tree_decrement(_DWORD *a1); int __cdecl std::_Rb_tree_decrement(_DWORD *a1); int __cdecl std::_Rb_tree_increment(_DWORD); // weak int __cdecl std::_Rb_tree_increment(int a1); bool std::uncaught_exception(void); int std::uncaught_exceptions(void); int __cdecl std::_Rb_tree_black_count(_DWORD *a1, _DWORD *a2); int __cdecl std::_Rb_tree_rotate_left(int a1, _DWORD *a2); int __cdecl std::_Rb_tree_rotate_right(int a1, _DWORD *a2); int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3); int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3); int __cdecl std::__destroy_ios_failure(int (__fastcall ***a1)(_DWORD)); int __cdecl std::__verify_grouping_impl(const char *a1, unsigned int a2, const char *a3, unsigned int a4); void __cdecl std::__construct_ios_failure(void *a1, char *a2); bool __cdecl std::__is_ios_failure_handler(const __cxxabiv1::__class_type_info *a1); void __noreturn std::__throw_out_of_range_fmt(char *Str, ...); int *__cdecl std::_Rb_tree_rebalance_for_erase(int *a1, _DWORD *a2); _DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char a1, _DWORD *a2, _DWORD *a3, _DWORD *a4); _DWORD *__cdecl std::ws>(_DWORD *a1); _DWORD *__cdecl std::ws>(_DWORD *a1); std::ios_base *__cdecl std::hex(std::ios_base *a1); _DWORD *__cdecl std::endl>(std::ostream::sentry *a1); _DWORD *__cdecl std::endl>(int *a1); std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1); int *__cdecl std::ends>(int *a1); _DWORD *__cdecl std::flush>(_DWORD *a1); _DWORD *__cdecl std::flush>(_DWORD *a1); std::istream::sentry *__cdecl std::getline,std::allocator>(std::istream::sentry *a1, _DWORD *a2); std::istream::sentry *__cdecl std::getline,std::allocator>(std::istream::sentry *a1, _DWORD *a2, unsigned __int8 a3); _DWORD *__cdecl std::getline,std::allocator>(_DWORD *a1, int a2, wchar_t a3); int __cdecl std::setfill(unsigned __int8 a1); int __cdecl std::setfill(unsigned __int16 a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); void __noreturn std::terminate(void); // idb void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); // int __usercall std::local_Rb_tree_decrement@(_DWORD *a1@); bool __cdecl std::operator==(int a1, int a2); bool __cdecl std::operator==(int a1, char *a2); std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, char a2); std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2); int *__cdecl std::operator<<>(int *a1, wchar_t *String); int *__cdecl std::operator<<>(int *a1, char *Str); int *__cdecl std::operator<<>(int *a1, __int16 a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator<<>(_DWORD *a1, __int16 a2); int *__cdecl std::operator<<>(int *a1, char a2); unsigned int __cdecl std::operator<(int a1, int a2); int __cdecl std::operator+(int a1, char *a2, int a3); _DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3); int __cdecl std::operator+(int a1, char a2, int a3); unsigned int **__cdecl std::operator+(unsigned int **a1, char *Str, std::string *a3); unsigned int **__cdecl std::operator+(unsigned int **a1, unsigned int **a2, std::string *a3); unsigned int **__cdecl std::operator+(unsigned int **a1, char a2, std::string *a3); int __cdecl std::operator+(int a1, wchar_t *String, int a3); // idb wchar_t **__cdecl std::operator+(wchar_t **a1, int a2, int a3); int __cdecl std::operator+(int a1, wchar_t a2, int a3); void **__cdecl std::operator+(void **a1, wchar_t *String, const wchar_t **a3); void **__cdecl std::operator+(void **a1, _DWORD *a2, const wchar_t **a3); void **__cdecl std::operator+(void **a1, wchar_t a2, const wchar_t **a3); std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, char *a2); std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, _BYTE *a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, char a2); std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *a1, _DWORD *a2); int *__cdecl std::operator>>>(int *a1, _WORD *a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, _WORD *a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); _DWORD *__cdecl std::operator>>>(_DWORD *a1, __int16 a2); void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1); void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1); void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1); void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1); void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1); void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1); void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1); void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1); void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1); void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1); void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1); void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1); void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1); void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1); void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1); void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1); void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1); void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1); void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1); void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1); void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1); void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1); void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1); int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *a1); int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *a1); void __cdecl operator delete[](void *); // idb void __cdecl operator delete(void *); // idb void __cdecl operator delete(void *, unsigned int); // idb _DWORD __cdecl operator new[](unsigned int); // idb int __cdecl operator new[](unsigned int a1); void *__cdecl operator new(struct type_info *a1, void (__cdecl *a2)(void *)); unsigned int *__cxa_allocate_dependent_exception(); void *__cdecl __cxa_allocate_exception(size_t thrown_size); void *__cdecl __cxa_begin_catch(void *); void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *); void __cdecl __noreturn __cxa_call_unexpected(void *); struct type_info *__cxa_current_exception_type(void); void __noreturn __cxa_deleted_virtual(void); void __cxa_end_catch(void); _DWORD *__cdecl __cxa_free_dependent_exception(unsigned int a1); void __cdecl __cxa_free_exception(void *); void *__cdecl __cxa_get_exception_ptr(void *); _DWORD *__cxa_get_globals(); void *__cxa_get_globals_fast(); void __cdecl __cxa_guard_abort(__guard *); int __cdecl __cxa_guard_acquire(__guard *); void __cdecl __cxa_guard_release(__guard *); int __cdecl __cxa_init_primary_exception(int a1, int a2, int a3); void __noreturn __cxa_pure_virtual(void); void __noreturn __cxa_rethrow(void); void __cdecl __noreturn __cxa_throw(void *, struct type_info *lptinfo, void (__cdecl *)(void *)); void *__cdecl __dynamic_cast(const void *lpsrc, const struct __class_type_info *lpstype, const struct __class_type_info *lpdtype, ptrdiff_t s2d); int __cdecl __gxx_personality_v0(int a1, int a2, __int64 a3, _Unwind_Exception *a4, _Unwind_Context *context); void __cdecl __tcf_0_1(); // idb void __cdecl __tcf_0_2(); // idb void __cdecl __tcf_0_3(); // idb void __cdecl __tcf_0_4(); // idb void __cdecl __tcf_0_5(std::_V2::error_category *a1); void __cdecl __tcf_0_6(); // idb void __cdecl __tcf_1_3(); // idb int __cdecl main(int argc, const char **argv, const char **envp); int _GLOBAL__sub_I__Z5UsageiPPKc(); int _GLOBAL__sub_I__ZN4WXSS11RemoveQuoteERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(); int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib6Parser5ParseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_RS7_S9_(); int _GLOBAL__sub_I__ZN4WXSS9Tokenizer2TTE(); int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib12TransitTable10GetTopTypeEv(); int _GLOBAL__sub_I___cxa_get_globals_fast(); void __cdecl __noreturn get_ttype_entry(); void __cdecl __noreturn base_of_encoded_value(); void __noreturn __gxx_personality_v0_cold(void); // weak void __noreturn __cxa_call_unexpected_cold(void); // weak void __noreturn __cxxabiv1::__terminate(void); // weak void __noreturn __cxxabiv1::throw_recursive_init_exception(void); // idb void __cdecl __noreturn __cxa_guard_acquire_cold(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb void __noreturn __cxa_guard_abort_cold(void); // weak void __noreturn __cxa_guard_release_cold(void); // weak void __cdecl __noreturn operator new(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb // void __usercall std::ios_base::Init::~Init(void *a1@); int std::locale::_Impl::~_Impl(void); // weak void __stdcall __noreturn std::locale::_Impl::_Impl(_DWORD, _DWORD); // weak void __stdcall __noreturn std::locale::_Impl::_M_install_facet(_DWORD, _DWORD); // weak void __cdecl __noreturn std::locale::_Impl::_M_install_cache(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb void __cdecl __noreturn std::locale::global(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb // void __usercall __noreturn std::locale::name(int a1@, void **a2@, int a3@, _Unwind_Exception *a4@); void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2); void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(); void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(); void __noreturn std::wfilebuf::_M_allocate_internal_buffer(void); void __noreturn std::__throw_bad_exception(void); // idb void __noreturn std::__throw_bad_alloc(void); // idb void __noreturn std::__throw_bad_cast(void); // idb void __noreturn std::__throw_bad_typeid(void); // idb void __cdecl __noreturn std::__throw_logic_error(std::logic_error *a1); // idb void __cdecl __noreturn std::__throw_domain_error(std::domain_error *a1); // idb void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *a1); // idb void __cdecl __noreturn std::__throw_length_error(std::length_error *a1); // idb void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *a1); // idb void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *a1); // idb void __cdecl __noreturn std::__throw_range_error(std::range_error *a1); // idb void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *a1); // idb void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *a1); // idb void __noreturn std::ios_base::_M_grow_words(void); int __stdcall std::ios_base::_M_call_callbacks(_DWORD); // weak void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj(); void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj(); void __cdecl __noreturn `anonymous namespace'::pool::free(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb void __cdecl __noreturn `anonymous namespace'::pool::allocate(); int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv(); void __noreturn __cxa_bad_cast(void); void __noreturn __cxa_bad_typeid(void); void __noreturn __cxa_throw_bad_array_new_length(void); int operator new[](void); // weak void __cdecl __noreturn __gnu_cxx::__verbose_terminate_handler(size_t ElementSize, size_t ElementCount, FILE *Stream); // idb int std::getline,std::allocator>(void); // weak int std::getline,std::allocator>(void); // weak int __stdcall std::istream::getline(_DWORD, _DWORD, _DWORD); // weak int __stdcall std::istream::ignore(_DWORD, _DWORD); // weak int std::operator>>>(void); // weak int __stdcall std::wistream::getline(_DWORD, _DWORD, _DWORD); // weak int __stdcall std::wistream::ignore(_DWORD, _DWORD); // weak // void __usercall __noreturn std::_V2::error_category::_M_message(int a1@, _Unwind_Exception *a2@, int a3@); void __noreturn _txnal_cow_string_C1_for_exceptions(void); // weak void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1); // idb void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1, char *a2); // idb void __cdecl __noreturn std::__throw_system_error(int a1); // idb int _GLOBAL__sub_I__ZSt20__throw_system_errori(); int __stdcall std::istream::ignore(_DWORD); // weak int __stdcall std::wistream::ignore(_DWORD); // weak void __cdecl __noreturn d_type_cold(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11); void __cdecl __noreturn base_of_encoded_value_cold(); void __cdecl __noreturn uw_frame_state_for_cold(); void __cdecl __noreturn uw_install_context_1_cold(); void __cdecl __noreturn uw_update_context_1_cold(); void __cdecl __noreturn uw_init_context_1_cold(); void __cdecl __noreturn uw_update_context_cold(); void __cdecl __noreturn _Unwind_RaiseException_Phase2_cold(); void __cdecl __noreturn _Unwind_GetGR_cold(); void __cdecl __noreturn _Unwind_SetGR_cold(); void __cdecl __noreturn _Unwind_Resume_cold(); void __cdecl __noreturn _Unwind_Resume_or_Rethrow_cold(); void __cdecl __noreturn size_of_encoded_value_cold(); void __cdecl __noreturn base_from_object_cold(); void __cdecl __noreturn search_object_cold(); void __cdecl __noreturn emutls_alloc_cold(); void __cdecl __noreturn emutls_init_cold(); void __cdecl __noreturn __emutls_get_address_cold(); // int __cdecl ___msvcrt_free(_DWORD); weak // int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); weak //------------------------------------------------------------------------- // Data declarations func_ptr __CTOR_LIST__[] = { (func_ptr)0xFFFFFFFF }; // idb int (__cdecl *_data_start__)(_DWORD) = NULL; // weak int WXML::RPX::acceptNum(char const*,int &)::canAccept[266] = { 65536, 1, 0, 16777472, 0, 0, 0, 5161770, 5161778, 5161723, 5161730, 5161741, 5161760, 5161787, 5161797, 5161812, 5161824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // idb int WXML::RPX::acceptStr(char const*,int &)::canAccept[266] = { 0, 16777472, 0, 0, 0, 5161770, 5161778, 5161723, 5161730, 5161741, 5161760, 5161787, 5161797, 5161812, 5161824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // idb int WXML::RPX::acceptID(char const*,int &)::canAccept[266] = { 256, 0, 0, -1020657664, -1020133298, -1023737778, -1023279026, -1022558130, -1021312946, -1019543474, -1018888114, -1017905074, -1017118642, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // idb char *WXSS::Tokenizer::DIRECTIVES = "@import"; // idb int _CRT_glob = 2; // weak fenv_t *_CRT_fenv = (fenv_t *)0xFFFFFFFD; // idb int _fmode = 16384; int *off_4E802C = &dword_4DBE40; // weak int dword_4E8030 = -1; // weak int dword_4E8034[5] = { 64, -16445, 16320, 1, 0 }; // weak void *off_4E8048 = &unk_1541340; // weak int dword_4E804C[5] = { 24, -149, 104, 1, 0 }; // weak size_t dword_4E8060[4] = { 4u, 4u, 0u, 0u }; // weak size_t dword_4E8070[4] = { 4u, 4u, 0u, 0u }; // weak int dword_4E8080[5] = { 64, -16445, 16320, 1, 0 }; // weak size_t dword_4E8094[4] = { 4u, 4u, 0u, 0u }; // weak size_t dword_4E80A4[4] = { 4u, 4u, 0u, 0u }; // weak int once_regsizes_22907 = 0; // weak LONG Addend = -1; // idb int once_22341 = 0; // weak LONG dword_4E80C0 = -1; // idb int once_21263 = 0; // weak LONG dword_4E80C8 = -1; // idb char `guard variable for'std::moneypunct::id = '\0'; // weak char `guard variable for'std::moneypunct::id = '\0'; // weak char `guard variable for'std::moneypunct::id = '\0'; // weak char `guard variable for'std::moneypunct::id = '\0'; // weak char `guard variable for'std::__timepunct::id = '\0'; // weak char `guard variable for'std::__timepunct::id = '\0'; // weak char `guard variable for'std::moneypunct::id = '\0'; // weak char `guard variable for'std::moneypunct::id = '\0'; // weak char `guard variable for'std::moneypunct::id = '\0'; // weak char `guard variable for'std::moneypunct::id = '\0'; // weak char `guard variable for'std::collate::id = '\0'; // weak char `guard variable for'std::collate::id = '\0'; // weak char `guard variable for'std::messages::id = '\0'; // weak char `guard variable for'std::messages::id = '\0'; // weak char `guard variable for'std::numpunct::id = '\0'; // weak char `guard variable for'std::numpunct::id = '\0'; // weak char `guard variable for'std::time_get>::id = '\0'; // weak char `guard variable for'std::time_get>::id = '\0'; // weak char `guard variable for'std::money_get>::id = '\0'; // weak char `guard variable for'std::money_get>::id = '\0'; // weak char `guard variable for'std::money_put>::id = '\0'; // weak char `guard variable for'std::money_put>::id = '\0'; // weak char `guard variable for'std::collate::id = '\0'; // weak char `guard variable for'std::collate::id = '\0'; // weak char `guard variable for'std::num_get>::id = '\0'; // weak char `guard variable for'std::num_get>::id = '\0'; // weak char `guard variable for'std::num_put>::id = '\0'; // weak char `guard variable for'std::num_put>::id = '\0'; // weak char `guard variable for'std::messages::id = '\0'; // weak char `guard variable for'std::messages::id = '\0'; // weak char `guard variable for'std::numpunct::id = '\0'; // weak char `guard variable for'std::numpunct::id = '\0'; // weak char `guard variable for'std::time_get>::id = '\0'; // weak char `guard variable for'std::time_get>::id = '\0'; // weak char `guard variable for'std::time_put>::id = '\0'; // weak char `guard variable for'std::time_put>::id = '\0'; // weak char `guard variable for'std::money_get>::id = '\0'; // weak char `guard variable for'std::money_get>::id = '\0'; // weak char `guard variable for'std::money_put>::id = '\0'; // weak char `guard variable for'std::money_put>::id = '\0'; // weak __guard `guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex = 0; // idb __guard `guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec = 0; // idb __guard `guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex = 0; // idb __guard `guard variable for'WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret = 0; // idb __guard `guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; // idb __guard `guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; // idb _UNKNOWN eh_globals; // weak __gthread_key_t init = 0u; // idb char byte_4E824C = '\0'; // weak void (*__cxxabiv1::__terminate_handler)(void) = &__gnu_cxx::__verbose_terminate_handler; // idb void (*__cxxabiv1::__unexpected_handler)(void) = &std::terminate; // idb __gthread_recursive_mutex_t `anonymous namespace'::fake_mutex = { 0, 0, 0u, NULL }; // idb _DWORD `anonymous namespace'::messages_c[4] = { 0, 0, 0, 0 }; // weak _DWORD `anonymous namespace'::messages_w[4] = { 0, 0, 0, 0 }; // weak _UNKNOWN `anonymous namespace'::numpunct_c; // weak int dword_4E828C = 0; // weak int dword_4E8290 = 0; // weak _UNKNOWN `anonymous namespace'::numpunct_w; // weak int dword_4E8298 = 0; // weak int dword_4E829C = 0; // weak _UNKNOWN `anonymous namespace'::time_get_c; // weak int dword_4E82A4 = 0; // weak _UNKNOWN `anonymous namespace'::time_get_w; // weak int dword_4E82AC = 0; // weak _UNKNOWN `anonymous namespace'::time_put_c; // weak int dword_4E82B4 = 0; // weak _UNKNOWN `anonymous namespace'::time_put_w; // weak int dword_4E82BC = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c16; // weak int dword_4E82C4 = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c32; // weak int dword_4E82CC = 0; // weak _UNKNOWN `anonymous namespace'::money_get_c; // weak int dword_4E82D4 = 0; // weak _UNKNOWN `anonymous namespace'::money_get_w; // weak int dword_4E82DC = 0; // weak _UNKNOWN `anonymous namespace'::money_put_c; // weak int dword_4E82E4 = 0; // weak _UNKNOWN `anonymous namespace'::money_put_w; // weak int dword_4E82EC = 0; // weak _DWORD `anonymous namespace'::timepunct_c[5] = { 0, 0, 0, 0, 0 }; // weak _DWORD `anonymous namespace'::timepunct_w[5] = { 0, 0, 0, 0, 0 }; // weak int `anonymous namespace'::__new_handler = 0; // weak _DWORD `anonymous namespace'::c_locale_impl[5] = { 0, 0, 0, 0, 0 }; // weak _UNKNOWN `anonymous namespace'::moneypunct_cf; // weak int dword_4E8334 = 0; // weak int dword_4E8338 = 0; // weak _UNKNOWN `anonymous namespace'::moneypunct_ct; // weak int dword_4E8340 = 0; // weak int dword_4E8344 = 0; // weak _UNKNOWN `anonymous namespace'::moneypunct_wf; // weak int dword_4E834C = 0; // weak int dword_4E8350 = 0; // weak _UNKNOWN `anonymous namespace'::moneypunct_wt; // weak int dword_4E8358 = 0; // weak int dword_4E835C = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c16_c8; // weak int dword_4E8364 = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c32_c8; // weak int dword_4E836C = 0; // weak __gthread_mutex_t `anonymous namespace'::emergency_pool = { 0, NULL }; // idb int dword_4E8378 = 0; // weak int dword_4E837C = 0; // weak int dword_4E8380 = 0; // weak int `anonymous namespace'::numpunct_cache_c = 0; // weak int dword_4E83A4 = 0; // weak int dword_4E83A8 = 0; // weak int dword_4E83AC = 0; // weak char byte_4E83B0 = '\0'; // weak int dword_4E83B4 = 0; // weak int dword_4E83B8 = 0; // weak int dword_4E83BC = 0; // weak int dword_4E83C0 = 0; // weak __int16 word_4E83C4 = 0; // weak char byte_4E8404 = '\0'; // weak int `anonymous namespace'::numpunct_cache_w = 0; // weak int dword_4E8424 = 0; // weak int dword_4E8428 = 0; // weak int dword_4E842C = 0; // weak char byte_4E8430 = '\0'; // weak int dword_4E8434 = 0; // weak int dword_4E8438 = 0; // weak int dword_4E843C = 0; // weak int dword_4E8440 = 0; // weak int dword_4E8444 = 0; // weak char byte_4E84C4 = '\0'; // weak int `anonymous namespace'::timepunct_cache_c = 0; // weak int dword_4E84E4 = 0; // weak int dword_4E84E8 = 0; // weak int dword_4E84EC = 0; // weak int dword_4E84F0 = 0; // weak int dword_4E84F4 = 0; // weak int dword_4E84F8 = 0; // weak int dword_4E84FC = 0; // weak int dword_4E8500 = 0; // weak int dword_4E8504 = 0; // weak int dword_4E8508 = 0; // weak int dword_4E850C = 0; // weak int dword_4E8510 = 0; // weak int dword_4E8514 = 0; // weak int dword_4E8518 = 0; // weak int dword_4E851C = 0; // weak int dword_4E8520 = 0; // weak int dword_4E8524 = 0; // weak int dword_4E8528 = 0; // weak int dword_4E852C = 0; // weak int dword_4E8530 = 0; // weak int dword_4E8534 = 0; // weak int dword_4E8538 = 0; // weak int dword_4E853C = 0; // weak int dword_4E8540 = 0; // weak int dword_4E8544 = 0; // weak int dword_4E8548 = 0; // weak int dword_4E854C = 0; // weak int dword_4E8550 = 0; // weak int dword_4E8554 = 0; // weak int dword_4E8558 = 0; // weak int dword_4E855C = 0; // weak int dword_4E8560 = 0; // weak int dword_4E8564 = 0; // weak int dword_4E8568 = 0; // weak int dword_4E856C = 0; // weak int dword_4E8570 = 0; // weak int dword_4E8574 = 0; // weak int dword_4E8578 = 0; // weak int dword_4E857C = 0; // weak int dword_4E8580 = 0; // weak int dword_4E8584 = 0; // weak int dword_4E8588 = 0; // weak int dword_4E858C = 0; // weak int dword_4E8590 = 0; // weak int dword_4E8594 = 0; // weak int dword_4E8598 = 0; // weak int dword_4E859C = 0; // weak int dword_4E85A0 = 0; // weak char byte_4E85A4 = '\0'; // weak int `anonymous namespace'::timepunct_cache_w = 0; // weak int dword_4E85C4 = 0; // weak int dword_4E85C8 = 0; // weak int dword_4E85CC = 0; // weak int dword_4E85D0 = 0; // weak int dword_4E85D4 = 0; // weak int dword_4E85D8 = 0; // weak int dword_4E85DC = 0; // weak int dword_4E85E0 = 0; // weak int dword_4E85E4 = 0; // weak int dword_4E85E8 = 0; // weak int dword_4E85EC = 0; // weak int dword_4E85F0 = 0; // weak int dword_4E85F4 = 0; // weak int dword_4E85F8 = 0; // weak int dword_4E85FC = 0; // weak int dword_4E8600 = 0; // weak int dword_4E8604 = 0; // weak int dword_4E8608 = 0; // weak int dword_4E860C = 0; // weak int dword_4E8610 = 0; // weak int dword_4E8614 = 0; // weak int dword_4E8618 = 0; // weak int dword_4E861C = 0; // weak int dword_4E8620 = 0; // weak int dword_4E8624 = 0; // weak int dword_4E8628 = 0; // weak int dword_4E862C = 0; // weak int dword_4E8630 = 0; // weak int dword_4E8634 = 0; // weak int dword_4E8638 = 0; // weak int dword_4E863C = 0; // weak int dword_4E8640 = 0; // weak int dword_4E8644 = 0; // weak int dword_4E8648 = 0; // weak int dword_4E864C = 0; // weak int dword_4E8650 = 0; // weak int dword_4E8654 = 0; // weak int dword_4E8658 = 0; // weak int dword_4E865C = 0; // weak int dword_4E8660 = 0; // weak int dword_4E8664 = 0; // weak int dword_4E8668 = 0; // weak int dword_4E866C = 0; // weak int dword_4E8670 = 0; // weak int dword_4E8674 = 0; // weak int dword_4E8678 = 0; // weak int dword_4E867C = 0; // weak int dword_4E8680 = 0; // weak char byte_4E8684 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_cf = 0; // weak int dword_4E86A4 = 0; // weak int dword_4E86A8 = 0; // weak int dword_4E86AC = 0; // weak __int16 word_4E86B0 = 0; // weak char byte_4E86B2 = '\0'; // weak int dword_4E86B4 = 0; // weak int dword_4E86B8 = 0; // weak int dword_4E86BC = 0; // weak int dword_4E86C0 = 0; // weak int dword_4E86C4 = 0; // weak int dword_4E86C8 = 0; // weak int dword_4E86CC = 0; // weak int dword_4E86D0 = 0; // weak int dword_4E86D4 = 0; // weak char byte_4E86E3 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_ct = 0; // weak int dword_4E8704 = 0; // weak int dword_4E8708 = 0; // weak int dword_4E870C = 0; // weak __int16 word_4E8710 = 0; // weak char byte_4E8712 = '\0'; // weak int dword_4E8714 = 0; // weak int dword_4E8718 = 0; // weak int dword_4E871C = 0; // weak int dword_4E8720 = 0; // weak int dword_4E8724 = 0; // weak int dword_4E8728 = 0; // weak int dword_4E872C = 0; // weak int dword_4E8730 = 0; // weak int dword_4E8734 = 0; // weak char byte_4E8743 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_wf = 0; // weak int dword_4E8764 = 0; // weak int dword_4E8768 = 0; // weak int dword_4E876C = 0; // weak char byte_4E8770 = '\0'; // weak int dword_4E8772 = 0; // weak int dword_4E8778 = 0; // weak int dword_4E877C = 0; // weak int dword_4E8780 = 0; // weak int dword_4E8784 = 0; // weak int dword_4E8788 = 0; // weak int dword_4E878C = 0; // weak int dword_4E8790 = 0; // weak int dword_4E8794 = 0; // weak int dword_4E8798 = 0; // weak char byte_4E87B2 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_wt = 0; // weak int dword_4E87C4 = 0; // weak int dword_4E87C8 = 0; // weak int dword_4E87CC = 0; // weak char byte_4E87D0 = '\0'; // weak int dword_4E87D2 = 0; // weak int dword_4E87D8 = 0; // weak int dword_4E87DC = 0; // weak int dword_4E87E0 = 0; // weak int dword_4E87E4 = 0; // weak int dword_4E87E8 = 0; // weak int dword_4E87EC = 0; // weak int dword_4E87F0 = 0; // weak int dword_4E87F4 = 0; // weak int dword_4E87F8 = 0; // weak char byte_4E8812 = '\0'; // weak __int16 `anonymous namespace'::name_c = 0; // weak _DWORD `anonymous namespace'::ctype_c[136] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // weak _DWORD `anonymous namespace'::ctype_w[184] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // weak _DWORD `anonymous namespace'::c_locale = 0; // weak int `anonymous namespace'::name_vec = 0; // weak _UNKNOWN unk_4E8D5C; // weak _UNKNOWN `anonymous namespace'::cache_vec; // weak _DWORD `anonymous namespace'::codecvt_c[3] = { 0, 0, 0 }; // weak _DWORD `anonymous namespace'::codecvt_w[3] = { 0, 0, 0 }; // weak _UNKNOWN `anonymous namespace'::collate_c; // weak int dword_4E8E3C = 0; // weak int dword_4E8E40 = 0; // weak _UNKNOWN `anonymous namespace'::collate_w; // weak int dword_4E8E48 = 0; // weak int dword_4E8E4C = 0; // weak _UNKNOWN `anonymous namespace'::facet_vec; // weak _UNKNOWN `anonymous namespace'::num_get_c; // weak int dword_4E8F24 = 0; // weak _UNKNOWN `anonymous namespace'::num_get_w; // weak int dword_4E8F2C = 0; // weak _UNKNOWN `anonymous namespace'::num_put_c; // weak int dword_4E8F34 = 0; // weak _UNKNOWN `anonymous namespace'::num_put_w; // weak int dword_4E8F3C = 0; // weak __gthread_recursive_mutex_t *`anonymous namespace'::static_mutex = NULL; // idb void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this) = { &off_4F5034, &off_4F505C }; // weak void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this) = &off_4F505C; // weak _UNKNOWN __gnu_internal::buf_cin_sync; // weak int dword_4E8F64 = 0; // weak int dword_4E8F68 = 0; // weak int dword_4E8F6C = 0; // weak int dword_4E8F70 = 0; // weak int dword_4E8F74 = 0; // weak int dword_4E8F78 = 0; // weak _DWORD dword_4E8F7C = 0; // weak int dword_4E8F80 = 0; // weak int dword_4E8F84 = 0; // weak _UNKNOWN __gnu_internal::buf_cerr_sync; // weak int dword_4E8FA4 = 0; // weak int dword_4E8FA8 = 0; // weak int dword_4E8FAC = 0; // weak int dword_4E8FB0 = 0; // weak int dword_4E8FB4 = 0; // weak int dword_4E8FB8 = 0; // weak _DWORD dword_4E8FBC = 0; // weak int dword_4E8FC0 = 0; // weak int dword_4E8FC4 = 0; // weak _UNKNOWN __gnu_internal::buf_cout_sync; // weak int dword_4E8FE4 = 0; // weak int dword_4E8FE8 = 0; // weak int dword_4E8FEC = 0; // weak int dword_4E8FF0 = 0; // weak int dword_4E8FF4 = 0; // weak int dword_4E8FF8 = 0; // weak _DWORD dword_4E8FFC = 0; // weak int dword_4E9000 = 0; // weak int dword_4E9004 = 0; // weak _UNKNOWN __gnu_internal::buf_wcin_sync; // weak int dword_4E9024 = 0; // weak int dword_4E9028 = 0; // weak int dword_4E902C = 0; // weak int dword_4E9030 = 0; // weak int dword_4E9034 = 0; // weak int dword_4E9038 = 0; // weak _DWORD dword_4E903C = 0; // weak int dword_4E9040 = 0; // weak __int16 word_4E9044 = 0; // weak _UNKNOWN __gnu_internal::buf_wcerr_sync; // weak int dword_4E9064 = 0; // weak int dword_4E9068 = 0; // weak int dword_4E906C = 0; // weak int dword_4E9070 = 0; // weak int dword_4E9074 = 0; // weak int dword_4E9078 = 0; // weak _DWORD dword_4E907C = 0; // weak int dword_4E9080 = 0; // weak __int16 word_4E9084 = 0; // weak _UNKNOWN __gnu_internal::buf_wcout_sync; // weak int dword_4E90A4 = 0; // weak int dword_4E90A8 = 0; // weak int dword_4E90AC = 0; // weak int dword_4E90B0 = 0; // weak int dword_4E90B4 = 0; // weak int dword_4E90B8 = 0; // weak _DWORD dword_4E90BC = 0; // weak int dword_4E90C0 = 0; // weak __int16 word_4E90C4 = 0; // weak char __gnu_internal::buf_cin[128] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' }; // weak char __gnu_internal::buf_cerr[128] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' }; // weak char __gnu_internal::buf_cout[128] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' }; // weak char __gnu_internal::buf_wcin[128] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' }; // weak char __gnu_internal::buf_wcerr[128] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' }; // weak char __gnu_internal::buf_wcout[128] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' }; // weak _UNKNOWN std::wstring::_Rep::_S_empty_rep_storage; // weak _UNKNOWN unk_4E93EC; // weak unsigned int std::string::_Rep::_S_empty_rep_storage = 0u; // idb _UNKNOWN unk_4E93FC; // weak char *std::__num_base::_S_atoms_in[3] = { "-+xX0123456789abcdefABCDEF", "-+xX0123456789abcdef0123456789ABCDEF", "-0123456789" }; // weak char *std::__num_base::_S_atoms_out[2] = { "-+xX0123456789abcdef0123456789ABCDEF", "-0123456789" }; // weak char *std::money_base::_S_atoms = "-0123456789"; // weak int std::moneypunct::id = 0; // weak int std::moneypunct::id = 0; // weak int std::moneypunct::id = 0; // weak int std::moneypunct::id = 0; // weak int std::__timepunct::id = 0; // weak int std::__timepunct::id = 0; // weak _DWORD std::`anonymous namespace'::messages_c = 0; // weak signed __int32 dword_4E9428[3] = { 0, 0, 0 }; // weak _DWORD std::`anonymous namespace'::messages_w = 0; // weak signed __int32 dword_4E9438[3] = { 0, 0, 0 }; // weak int std::`anonymous namespace'::numpunct_c = 0; // weak int dword_4E9448 = 0; // weak int dword_4E944C = 0; // weak int std::`anonymous namespace'::numpunct_w = 0; // weak int dword_4E9454 = 0; // weak int dword_4E9458 = 0; // weak int std::`anonymous namespace'::time_get_c = 0; // weak int dword_4E9460 = 0; // weak int std::`anonymous namespace'::time_get_w = 0; // weak int dword_4E9468 = 0; // weak int std::`anonymous namespace'::money_get_c = 0; // weak int dword_4E9470 = 0; // weak int std::`anonymous namespace'::money_get_w = 0; // weak int dword_4E9478 = 0; // weak int std::`anonymous namespace'::money_put_c = 0; // weak int dword_4E9480 = 0; // weak int std::`anonymous namespace'::money_put_w = 0; // weak int dword_4E9488 = 0; // weak int std::`anonymous namespace'::moneypunct_cf = 0; // weak int dword_4E9490 = 0; // weak int dword_4E9494 = 0; // weak int std::`anonymous namespace'::moneypunct_ct = 0; // weak int dword_4E949C = 0; // weak int dword_4E94A0 = 0; // weak int std::`anonymous namespace'::moneypunct_wf = 0; // weak int dword_4E94A8 = 0; // weak int dword_4E94AC = 0; // weak int std::`anonymous namespace'::moneypunct_wt = 0; // weak int dword_4E94B4 = 0; // weak int dword_4E94B8 = 0; // weak int std::`anonymous namespace'::collate_c = 0; // weak int dword_4E94C0 = 0; // weak int dword_4E94C4 = 0; // weak int std::`anonymous namespace'::collate_w = 0; // weak int dword_4E94CC = 0; // weak int dword_4E94D0 = 0; // weak void *std::__timepunct_cache::_S_timezones[2] = { &off_4EDD1E, &off_4EDD22 }; // weak wchar_t *std::__timepunct_cache::_S_timezones[11] = { L"GMT", &off_4EDCBC, L"AKST", &off_4EDCCE, &off_4EDCD6, &off_4EDCDE, &off_4EDCE6, &off_4EDCEE, &off_4EDCF6, &off_4EDCFE, &off_4EDD06 }; // weak int std::ctype::id = 0; // weak int std::ctype::id = 0; // weak int std::locale::_S_classic = 0; // weak int std::locale::id::_S_refcount = 0; // weak int std::locale::facet::_S_c_locale = 0; // weak __gthread_once_t std::locale::facet::_S_once = { 0, -1 }; // idb __gthread_once_t std::locale::_S_once = { 0, -1 }; // idb int std::locale::_S_global = 0; // weak int std::moneypunct::id = 0; // weak int std::moneypunct::id = 0; // weak int std::moneypunct::id = 0; // weak int std::moneypunct::id = 0; // weak int std::collate::id = 0; // weak int std::collate::id = 0; // weak int std::messages::id = 0; // weak int std::messages::id = 0; // weak int std::numpunct::id = 0; // weak int std::numpunct::id = 0; // weak int std::time_get>::id = 0; // weak int std::time_get>::id = 0; // weak int std::money_get>::id = 0; // weak int std::money_get>::id = 0; // weak int std::money_put>::id = 0; // weak int std::money_put>::id = 0; // weak _UNKNOWN std::codecvt::id; // weak _UNKNOWN std::codecvt::id; // weak _UNKNOWN std::codecvt::id; // weak _UNKNOWN std::codecvt::id; // weak int std::codecvt::id = 0; // weak int std::codecvt::id = 0; // weak int std::collate::id = 0; // weak int std::collate::id = 0; // weak int std::num_get>::id = 0; // weak int std::num_get>::id = 0; // weak int std::num_put>::id = 0; // weak int std::num_put>::id = 0; // weak int std::ios_base::Init::_S_refcount = 0; // weak char std::ios_base::Init::_S_synced_with_stdio = '\x01'; // weak int std::messages::id = 0; // weak int std::messages::id = 0; // weak int std::numpunct::id = 0; // weak int std::numpunct::id = 0; // weak int std::time_get>::id = 0; // weak int std::time_get>::id = 0; // weak int std::time_put>::id = 0; // weak int std::time_put>::id = 0; // weak int std::money_get>::id = 0; // weak int std::money_get>::id = 0; // weak int std::money_put>::id = 0; // weak int std::money_put>::id[5] = { 0, 0, 0, 0, 0 }; // weak int std::cin = 0; // weak int dword_4E9644 = 0; // weak int dword_4E9648[28] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // weak int dword_4E96B8 = 0; // weak __int16 word_4E96BC = 0; // weak int dword_4E96C0 = 0; // weak int dword_4E96C4 = 0; // weak int dword_4E96C8 = 0; // weak int dword_4E96CC = 0; // weak int std::cerr = 0; // weak int dword_4E96E4 = 0; // weak int dword_4E96F0 = 0; // weak int dword_4E9754 = 0; // weak __int16 word_4E9758 = 0; // weak int dword_4E975C = 0; // weak int dword_4E9760 = 0; // weak int dword_4E9764 = 0; // weak int dword_4E9768 = 0; // weak int std::clog = 0; // weak int dword_4E9784[28] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // weak int dword_4E97F4 = 0; // weak __int16 word_4E97F8 = 0; // weak int dword_4E97FC = 0; // weak int dword_4E9800 = 0; // weak int dword_4E9804 = 0; // weak int dword_4E9808 = 0; // weak int std::cout = 0; // weak int dword_4E9824[28] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // weak int dword_4E9894 = 0; // weak __int16 word_4E9898 = 0; // weak int dword_4E989C = 0; // weak int dword_4E98A0 = 0; // weak int dword_4E98A4 = 0; // weak int dword_4E98A8 = 0; // weak int std::wcin = 0; // weak int dword_4E98C4 = 0; // weak int dword_4E98C8[28] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // weak int dword_4E9938 = 0; // weak __int16 word_4E993C = 0; // weak char byte_4E993E = '\0'; // weak int dword_4E9940 = 0; // weak int dword_4E9944 = 0; // weak int dword_4E9948 = 0; // weak int dword_4E994C = 0; // weak int std::wcerr = 0; // weak int dword_4E9964 = 0; // weak int dword_4E9970 = 0; // weak int dword_4E99D4 = 0; // weak __int16 word_4E99D8 = 0; // weak char byte_4E99DA = '\0'; // weak int dword_4E99DC = 0; // weak int dword_4E99E0 = 0; // weak int dword_4E99E4 = 0; // weak int dword_4E99E8 = 0; // weak int std::wclog = 0; // weak int dword_4E9A04[28] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // weak int dword_4E9A74 = 0; // weak __int16 word_4E9A78 = 0; // weak char byte_4E9A7A = '\0'; // weak int dword_4E9A7C = 0; // weak int dword_4E9A80 = 0; // weak int dword_4E9A84 = 0; // weak int dword_4E9A88 = 0; // weak int std::wcout = 0; // weak int dword_4E9AA4[28] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // weak int dword_4E9B14 = 0; // weak __int16 word_4E9B18 = 0; // weak char byte_4E9B1A = '\0'; // weak int dword_4E9B1C = 0; // weak int dword_4E9B20 = 0; // weak int dword_4E9B24 = 0; // weak int dword_4E9B28 = 0; // weak __gthread_mutex_t `anonymous namespace'::get_locale_mutex(void)::locale_mutex = { 0, NULL }; // idb __gthread_once_t `anonymous namespace'::get_static_mutex(void)::once = { 0, -1 }; // idb void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this) = &off_4F500C; // weak __gthread_mutex_t `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex = { 0, NULL }; // idb int dword_4E9B60 = 0; // weak void *dword_4E9B64 = NULL; // idb int dword_4E9B68 = 0; // weak int dword_4E9B6C = 0; // weak int dword_4E9B70 = 0; // weak char byte_4E9B74 = '\0'; // weak char WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = '\0'; // weak int dword_4E9B7C = 0; // weak int dword_4E9B80 = 0; // weak char WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = '\0'; // weak int dword_4E9B88 = 0; // weak int dword_4E9B8C = 0; // weak char __gnu_cxx::__verbose_terminate_handler(void)::terminating = '\0'; // weak int std::ios_base::xalloc(void)::_S_top = 0; // weak const char byte_4EA251 = '\0'; // idb const char off_4EAF6E[] = { 'n', 'o', 't', '\0' }; // idb const char byte_4EAF84 = '\0'; // idb const char asc_4EAFF8[1] = "f"; // idb void *off_4EAFF9 = &unk_6D6F72; // weak const char asc_4EBDB4[] = ":\x00)\x00]"; // idb char byte_4EBF05[3] = { '\0', '\0', '\0' }; // weak const char byte_4EBF96 = '\0'; // idb const char off_4EBF97[] = { 'r', 'p', 'x', '\0' }; // idb const char off_4EBF9B[] = { 'u', 'r', 'l', '\0' }; // idb void *off_4EC02D = &unk_5D315B; // weak void *off_4EC0D7 = (void *)0x444924; // weak const char off_4EC1FC[] = { 'u', 'r', 'l', '\0' }; // idb const char off_4EC200[] = { 'r', 'p', 'x', '\0' }; // idb const char byte_4EC204 = '\0'; // idb _UNKNOWN unk_4EC628; // weak _UNKNOWN unk_4EC62A; // weak _UNKNOWN unk_4EC62C; // weak _UNKNOWN unk_4EC62E; // weak _UNKNOWN unk_4EC630; // weak void *off_4EC63C = &unk_720074; // weak void *off_4EC646 = &unk_610066; // weak _UNKNOWN unk_4EC654; // weak void *off_4EC660 = &unk_720074; // weak void *off_4EC66A = &unk_610066; // weak _UNKNOWN unk_4ECD6E; // weak _UNKNOWN unk_4ED02A; // weak _BYTE byte_4ED356[2] = { 0, 0 }; // weak _UNKNOWN unk_4ED464; // weak char byte_4ED4CD[] = { '0' }; // weak _UNKNOWN unk_4ED73A; // weak void *off_4EDDB6 = &loc_4D4100; // weak _UNKNOWN unk_4EDDBA; // weak void *off_4EDDF6 = &unk_6E7553; // weak void *off_4EDDFA = &unk_6E6F4D; // weak void *off_4EDDFE = &unk_657554; // weak void *off_4EDE02 = &unk_646557; // weak void *off_4EDE06 = &unk_756854; // weak void *off_4EDE0A = &unk_697246; // weak void *off_4EDE0E = &unk_746153; // weak void *off_4EDE2F = &unk_79614D; // weak void *off_4EDE68 = &unk_6E614A; // weak void *off_4EDE6C = &unk_626546; // weak void *off_4EDE70 = &unk_72614D; // weak void *off_4EDE74 = &unk_727041; // weak void *off_4EDE78 = &unk_6E754A; // weak void *off_4EDE7C = &unk_6C754A; // weak void *off_4EDE80 = &unk_677541; // weak void *off_4EDE84 = &unk_706553; // weak void *off_4EDE88 = &unk_74634F; // weak void *off_4EDE8C = &unk_766F4E; // weak void *off_4EDE90 = &unk_636544; // weak void *off_4EDE94 = &unk_6D0025; // weak _UNKNOWN unk_4EDEB8; // weak void *off_4EDEBA = &loc_4D0041; // weak void *off_4EDEC0 = (void *)0x4D0050; // weak void *off_4EDEC6 = &unk_750053; // weak void *off_4EDED4 = &unk_6F004D; // weak void *off_4EDEE2 = &unk_750054; // weak void *off_4EDEF2 = &unk_650057; // weak void *off_4EDF06 = &unk_680054; // weak void *off_4EDF18 = &unk_720046; // weak void *off_4EDF26 = &unk_610053; // weak void *off_4EDF38 = &unk_750053; // weak void *off_4EDF40 = &unk_6F004D; // weak void *off_4EDF48 = &unk_750054; // weak void *off_4EDF50 = &unk_650057; // weak void *off_4EDF58 = &unk_680054; // weak void *off_4EDF60 = &unk_720046; // weak void *off_4EDF68 = &unk_610053; // weak void *off_4EDF70 = &unk_61004A; // weak void *off_4EDF80 = &unk_650046; // weak void *off_4EDF92 = &unk_61004D; // weak void *off_4EDF9E = &unk_700041; // weak void *off_4EDFAA = &unk_61004D; // weak void *off_4EDFB2 = &unk_75004A; // weak void *off_4EDFBC = &unk_75004A; // weak void *off_4EDFC6 = &unk_750041; // weak void *off_4EDFD4 = &unk_650053; // weak void *off_4EDFE8 = &unk_63004F; // weak void *off_4EDFF8 = &unk_6F004E; // weak void *off_4EE00A = &unk_650044; // weak void *off_4EE01C = &unk_61004A; // weak void *off_4EE024 = &unk_650046; // weak void *off_4EE02C = &unk_61004D; // weak void *off_4EE034 = &unk_700041; // weak void *off_4EE03C = &unk_75004A; // weak void *off_4EE044 = &unk_75004A; // weak void *off_4EE04C = &unk_750041; // weak void *off_4EE054 = &unk_650053; // weak void *off_4EE05C = &unk_63004F; // weak void *off_4EE064 = &unk_6F004E; // weak void *off_4EE06C = &unk_650044; // weak _UNKNOWN unk_4EE074; // weak void *off_4EE663 = &unk_647473; // weak void *off_4EEA7E = &unk_6C6C75; // weak _UNKNOWN unk_4EEE58; // weak _UNKNOWN unk_4EEE5A; // weak _UNKNOWN unk_4EF0C4; // weak void *cplus_demangle_operators = &unk_4EF0C4; // weak void **off_4EF8A0 = &off_4EF715; // weak char *off_4EFA08 = "decimal32"; // weak char *off_4EFA1C = "decimal64"; // weak char *off_4EFA30 = "decimal128"; // weak char *off_4EFA44 = "half"; // weak char *off_4EFA58 = "char8_t"; // weak char *off_4EFA6C = "char16_t"; // weak char *off_4EFA80 = "char32_t"; // weak char *off_4EFA94 = "decltype(nullptr)"; // weak int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD) = &__dyn_tls_init; // weak int dword_4EFD80[22] = { 0, 3, 5, 7, 10, 12, 14, 17, 19, 21, 24, 26, 28, 31, 33, 35, 38, 40, 42, 45, 47, 49 }; // weak double dbl_4EFDD8[] = { 0.00781250000000009 }; // weak int dword_4EFDFC[7] = { 0, 5, 25, 125, 0, 0, 0 }; // weak double dbl_4EFE18[] = { 0.0 }; // weak double __tens_D2A[24] = { 1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 1.0e7, 1.0e8, 1.0e9, 1.0e10, 1.0e11, 1.0e12, 1.0e13, 1.0e14, 1.0e15, 1.0e16, 1.0e17, 1.0e18, 1.0e19, 1.0e20, 1.0e21, 1.0e22, 0.0 }; // weak double __tinytens_D2A[4] = { 1.0e-16, 1.0e-32, 1.0e-64, 1.0e-128 }; // weak double __bigtens_D2A[4] = { 1.0e16, 1.0e32, 1.0e64, 1.0e128 }; // weak const char Locale[2] = { '\0', '\0' }; // idb _UNKNOWN unk_4EFF94; // weak char *off_4F0000 = "alnum"; // weak __int16 word_4F0004[] = { 263 }; // weak void **off_4F0159 = &off_4E614E; // weak void *off_4F015D = &unk_666E49; // weak void *off_4F0162 = &unk_6E0028; // weak const char byte_4F0304 = '\0'; // idb void **off_4F0329 = &off_4E614E; // weak _UNKNOWN terminator_22562; // weak int CSWTCH_107[6] = { 4, 1, 16, 2, 8, 0 }; // weak char *const CSWTCH_20 = "a"; // idb int std::money_base::_S_default_pattern = 67109634; // weak _WORD std::`anonymous namespace'::utf16le_bom[2] = { -257, 0 }; // weak __int16 std::`anonymous namespace'::utf8_bom = -17425; // weak _WORD std::`anonymous namespace'::utf16_bom[2] = { -2, 0 }; // weak char **std::locale::_S_categories = &__gnu_cxx::category_names; // weak int *std::locale::_S_twinned_facets = &std::numpunct::id; // weak int *const std::locale::facet::_S_c_name = (int *const)0x43; // idb _UNKNOWN unk_4F0DC4; // weak _UNKNOWN unk_4F0DD8; // weak _UNKNOWN unk_4F0DEC; // weak _UNKNOWN unk_4F0E00; // weak _UNKNOWN unk_4F0E14; // weak _UNKNOWN unk_4F0E28; // weak _UNKNOWN unk_4F0E78; // weak _UNKNOWN unk_4F0E8C; // weak _UNKNOWN unk_4F0EA0; // weak _UNKNOWN unk_4F0EB4; // weak _UNKNOWN unk_4F0EC8; // weak _UNKNOWN unk_4F0EDC; // weak _UNKNOWN unk_4F0EF0; // weak _UNKNOWN unk_4F0F04; // weak _UNKNOWN unk_4F0F18; // weak _UNKNOWN unk_4F0F2C; // weak _UNKNOWN unk_4F0F40; // weak _UNKNOWN unk_4F0F54; // weak _UNKNOWN unk_4F0F68; // weak _UNKNOWN unk_4F0F7C; // weak _UNKNOWN unk_4F0FCC; // weak _UNKNOWN unk_4F0FE0; // weak _UNKNOWN unk_4F0FF4; // weak _UNKNOWN unk_4F1008; // weak _UNKNOWN unk_4F101C; // weak _UNKNOWN unk_4F1030; // weak _UNKNOWN unk_4F1080; // weak _UNKNOWN unk_4F1094; // weak _UNKNOWN unk_4F10A8; // weak _UNKNOWN unk_4F10BC; // weak _UNKNOWN unk_4F10D0; // weak _UNKNOWN unk_4F10E4; // weak _UNKNOWN unk_4F10F8; // weak _UNKNOWN unk_4F110C; // weak _UNKNOWN unk_4F1120; // weak _UNKNOWN unk_4F1134; // weak _UNKNOWN unk_4F1148; // weak _UNKNOWN unk_4F115C; // weak _UNKNOWN unk_4F1170; // weak _UNKNOWN unk_4F1184; // weak int *`typeinfo for'__cxxabiv1::__forced_unwind = &off_4F4F74; // weak int *`typeinfo for'__cxxabiv1::__foreign_exception = &off_4F4F74; // weak int *`typeinfo for'__gnu_cxx::recursive_init_error = &off_4F4FB4; // weak int *`typeinfo for'__gnu_cxx::__concurrence_lock_error = &off_4F4FB4; // weak int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error = &off_4F4FB4; // weak int *`typeinfo for'std::locale::facet::__shim = &off_4F4F74; // weak int *`typeinfo for'std::locale::facet = &off_4F4F74; // weak int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak int *`typeinfo for'std::collate = &off_4F4FB4; // weak int *`typeinfo for'std::collate = &off_4F4FB4; // weak int *`typeinfo for'std::messages = &off_4F4FE0; // weak int *`typeinfo for'std::messages = &off_4F4FE0; // weak int *`typeinfo for'std::numpunct = &off_4F4FB4; // weak int *`typeinfo for'std::numpunct = &off_4F4FB4; // weak int *`typeinfo for'std::time_get> = &off_4F4FE0; // weak int *`typeinfo for'std::time_get> = &off_4F4FE0; // weak int *`typeinfo for'std::money_get> = &off_4F4FB4; // weak int *`typeinfo for'std::money_get> = &off_4F4FB4; // weak int *`typeinfo for'std::money_put> = &off_4F4FB4; // weak int *`typeinfo for'std::money_put> = &off_4F4FB4; // weak int *`typeinfo for'std::ios_base::failure = &off_4F4FB4; // weak int `typeinfo for'std::bad_typeid = 5197748; // weak int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak int *`typeinfo for'std::__timepunct = &off_4F4FB4; // weak int *`typeinfo for'std::__timepunct = &off_4F4FB4; // weak int *`typeinfo for'std::logic_error = &off_4F4FB4; // weak int *`typeinfo for'std::range_error = &off_4F4FB4; // weak int *`typeinfo for'std::domain_error = &off_4F4FB4; // weak int *`typeinfo for'std::length_error = &off_4F4FB4; // weak int *`typeinfo for'std::out_of_range = &off_4F4FB4; // weak int *`typeinfo for'std::system_error = &off_4F4FB4; // weak int *`typeinfo for'std::__ios_failure = &off_4F6788; // weak int *`typeinfo for'std::bad_exception = &off_4F4FB4; // weak int *`typeinfo for'std::runtime_error = &off_4F4FB4; // weak int *`typeinfo for'std::overflow_error = &off_4F4FB4; // weak int *`typeinfo for'std::underflow_error = &off_4F4FB4; // weak int *`typeinfo for'std::invalid_argument = &off_4F4FB4; // weak int *`typeinfo for'std::bad_array_new_length = &off_4F4FB4; // weak int *`typeinfo for'std::ctype = &off_4F4FE0; // weak int *`typeinfo for'std::ctype = &off_4F4FB4; // weak int *`typeinfo for'std::codecvt = &off_4F4FB4; // weak int *`typeinfo for'std::codecvt = &off_4F4FB4; // weak int *`typeinfo for'std::collate = &off_4F4FB4; // weak int *`typeinfo for'std::collate = &off_4F4FB4; // weak int *`typeinfo for'std::num_get> = &off_4F4FB4; // weak int *`typeinfo for'std::num_get> = &off_4F4FB4; // weak int *`typeinfo for'std::num_put> = &off_4F4FB4; // weak int *`typeinfo for'std::num_put> = &off_4F4FB4; // weak int *`typeinfo for'std::bad_cast = &off_4F4FB4; // weak int *`typeinfo for'std::messages = &off_4F4FE0; // weak int *`typeinfo for'std::messages = &off_4F4FE0; // weak int *`typeinfo for'std::numpunct = &off_4F4FB4; // weak int *`typeinfo for'std::numpunct = &off_4F4FB4; // weak int *`typeinfo for'std::time_get> = &off_4F4FE0; // weak int *`typeinfo for'std::time_get> = &off_4F4FE0; // weak int *`typeinfo for'std::time_put> = &off_4F4FB4; // weak int *`typeinfo for'std::time_put> = &off_4F4FB4; // weak int *`typeinfo for'std::bad_alloc = &off_4F4FB4; // weak int *`typeinfo for'std::money_get> = &off_4F4FB4; // weak int *`typeinfo for'std::money_get> = &off_4F4FB4; // weak int *`typeinfo for'std::money_put> = &off_4F4FB4; // weak int *`typeinfo for'std::money_put> = &off_4F4FB4; // weak void (__cdecl *off_4F4F74)(__cxxabiv1::__class_type_info *__hidden this) = &__cxxabiv1::__class_type_info::~__class_type_info; // weak void (__cdecl *off_4F4FB4)(__cxxabiv1::__si_class_type_info *__hidden this) = &__cxxabiv1::__si_class_type_info::~__si_class_type_info; // weak void (__cdecl *off_4F4FE0)(__cxxabiv1::__vmi_class_type_info *__hidden this) = &__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info; // weak void (__cdecl *off_4F500C)(_anonymous_namespace_::io_error_category *__hidden this) = &`anonymous namespace'::io_error_category::~io_error_category; // weak void (__cdecl *off_4F5084)(WXSS::CSSTreeLib::NonTerminal *__hidden this) = &WXSS::CSSTreeLib::NonTerminal::~NonTerminal; // weak void (__cdecl *off_4F5098)(WXSS::CSSTreeLib::MarkHostRule *__hidden this) = &WXSS::CSSTreeLib::MarkHostRule::~MarkHostRule; // weak void (__cdecl *off_4F50B0)(WXSS::CSSTreeLib::AttrDebugRule *__hidden this) = &WXSS::CSSTreeLib::AttrDebugRule::~AttrDebugRule; // weak void (__cdecl *off_4F50C8)(WXSS::CSSTreeLib::BlackListRule *__hidden this) = &WXSS::CSSTreeLib::BlackListRule::~BlackListRule; // weak void (__cdecl *off_4F50E0)(WXSS::CSSTreeLib::RuleDebugRule *__hidden this) = &WXSS::CSSTreeLib::RuleDebugRule::~RuleDebugRule; // weak void (__cdecl *off_4F50F8)(WXSS::CSSTreeLib::ReWriteRpxRule *__hidden this) = &WXSS::CSSTreeLib::ReWriteRpxRule::~ReWriteRpxRule; // weak void (__cdecl *off_4F5110)(WXSS::CSSTreeLib::MarkSelectorRule *__hidden this) = &WXSS::CSSTreeLib::MarkSelectorRule::~MarkSelectorRule; // weak void (__cdecl *off_4F5128)(WXSS::CSSTreeLib::RewriteImgUrlRule *__hidden this) = &WXSS::CSSTreeLib::RewriteImgUrlRule::~RewriteImgUrlRule; // weak void (__cdecl *off_4F5140)(WXSS::CSSTreeLib::RewriteSelectorRule *__hidden this) = &WXSS::CSSTreeLib::RewriteSelectorRule::~RewriteSelectorRule; // weak void (__cdecl *off_4F516C)(WXSS::CSSTreeLib::Action *__hidden this) = &WXSS::CSSTreeLib::Action::~Action; // weak void (__cdecl *off_4F5180)(WXSS::CSSTreeLib::AndRules *__hidden this) = &WXSS::CSSTreeLib::AndRules::~AndRules; // weak void (__cdecl *off_4F5198)(WXSS::CSSTreeLib::Terminal *__hidden this) = &WXSS::CSSTreeLib::Terminal::~Terminal; // weak void (__cdecl *off_4F51AC)(WXSS::CSSTreeLib::TrueRule *__hidden this) = &WXSS::CSSTreeLib::TrueRule::~TrueRule; // weak void (__cdecl *off_4F51C4)(WXSS::CSSTreeLib::ChildRule *__hidden this) = &WXSS::CSSTreeLib::ChildRule::~ChildRule; // weak void (__cdecl *off_4F51DC)(WXSS::CSSTreeLib::FalseRule *__hidden this) = &WXSS::CSSTreeLib::FalseRule::~FalseRule; // weak void (__cdecl *off_4F51F4)(WXSS::CSSTreeLib::RuleChain *__hidden this) = &WXSS::CSSTreeLib::RuleChain::~RuleChain; // weak void (__cdecl *off_4F520C)(WXSS::CSSTreeLib::SPNotRule *__hidden this) = &WXSS::CSSTreeLib::SPNotRule::~SPNotRule; // weak int (*off_4F5224)() = &__gnu_cxx::stdio_filebuf::~stdio_filebuf; // weak int (*off_4F5264)() = &__gnu_cxx::stdio_filebuf::~stdio_filebuf; // weak int (*off_4F52A4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak int (*off_4F52E4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak void (__cdecl *off_4F5324)(__gnu_cxx::recursive_init_error *__hidden this) = &__gnu_cxx::recursive_init_error::~recursive_init_error; // weak void (__cdecl *off_4F5338)(__gnu_cxx::__concurrence_lock_error *__hidden this) = &__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error; // weak void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this) = &__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error; // weak int (*off_4F5360)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_4F537C)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_4F5398)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_4F53B4)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_4F53D0)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_4F53EC)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_4F5408)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_4F5424)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_4F5440)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_4F5464)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_4F5488)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_4F54AC)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_4F54D0)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_4F54F8)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_4F5524)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_4F554C)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_4F5578)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_4F5590)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_4F55A8)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_4F55C0)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_4F55D8)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_4F55F0)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_4F5608)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_4F5620)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_4F5638)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_4F566C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_4F56A0)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_4F56D4)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_4F5708)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_4F573C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_4F5770)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_4F57A4)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_4F5810)() = &std::moneypunct::~moneypunct; // weak int (*off_4F5844)() = &std::moneypunct::~moneypunct; // weak int (*off_4F5878)() = &std::moneypunct::~moneypunct; // weak int (*off_4F58AC)() = &std::moneypunct::~moneypunct; // weak int (*off_4F58E0)() = &std::collate_byname::~collate_byname; // weak int (*off_4F58FC)() = &std::collate_byname::~collate_byname; // weak int (*off_4F5918)() = &std::stringbuf::~stringbuf; // weak int (*off_4F5958)() = &std::wstringbuf::~wstringbuf; // weak int (*off_4F5998)() = &std::messages_byname::~messages_byname; // weak int (*off_4F59B4)() = &std::messages_byname::~messages_byname; // weak int (*off_4F59D0)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_4F59F4)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_4F5A18)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_4F5A44)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_4F5A70)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_4F5AA4)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_4F5AD8)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_4F5B0C)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_4F5B44)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak int (*off_4F5B58[2])() = { &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream }; // weak int (*off_4F5B6C[2])() = { &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream }; // weak int (*off_4F5B80)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak int (*off_4F5B94[2])() = { &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream }; // weak int (*off_4F5BA8[2])() = { &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream }; // weak int (*off_4F5BBC)() = &std::istringstream::~istringstream; // weak int (*off_4F5BD0[2])() = { &`virtual thunk to'std::istringstream::~istringstream, &`virtual thunk to'std::istringstream::~istringstream }; // weak int (*off_4F5BE4)() = &std::wistringstream::~wistringstream; // weak int (*off_4F5BF8[2])() = { &`virtual thunk to'std::wistringstream::~wistringstream, &`virtual thunk to'std::wistringstream::~wistringstream }; // weak int (*off_4F5C0C)() = &std::ostringstream::~ostringstream; // weak int (*off_4F5C20[2])() = { &`virtual thunk to'std::ostringstream::~ostringstream, &`virtual thunk to'std::ostringstream::~ostringstream }; // weak int (*off_4F5C34)() = &std::wostringstream::~wostringstream; // weak int (*off_4F5C48[2])() = { &`virtual thunk to'std::wostringstream::~wostringstream, &`virtual thunk to'std::wostringstream::~wostringstream }; // weak int (*off_4F5C58)() = &std::collate::~collate; // weak int (*off_4F5C74)() = &std::collate::~collate; // weak int (*off_4F5C90)() = &std::messages::~messages; // weak int (*off_4F5CAC)() = &std::messages::~messages; // weak int (*off_4F5CC8)() = &std::numpunct::~numpunct; // weak int (*off_4F5CEC)() = &std::numpunct::~numpunct; // weak int (*off_4F5D10)() = &std::time_get>::~time_get; // weak int (*off_4F5D3C)() = &std::time_get>::~time_get; // weak int (*off_4F5D68)() = &std::money_get>::~money_get; // weak int (*off_4F5D80)() = &std::money_get>::~money_get; // weak int (*off_4F5D98)() = &std::money_put>::~money_put; // weak int (*off_4F5DB0)() = &std::money_put>::~money_put; // weak int (*off_4F5DC8)() = &std::ios_base::failure[abi:cxx11]::~failure; // weak void (__cdecl *off_4F5DDC)(std::ios_base::failure *__hidden this) = &std::ios_base::failure::~failure; // weak void (__cdecl *off_4F5DF4)(std::iostream *__hidden this) = &std::iostream::~iostream; // weak void (__cdecl *off_4F5E08[2])(std::iostream *__hidden this) = { &`non-virtual thunk to'std::iostream::~iostream, &`non-virtual thunk to'std::iostream::~iostream }; // weak void (__cdecl *off_4F5E1C[2])(std::iostream *__hidden this) = { &`virtual thunk to'std::iostream::~iostream, &`virtual thunk to'std::iostream::~iostream }; // weak void (__cdecl *off_4F5E30)(std::istream *__hidden this) = &std::istream::~istream; // weak void (__cdecl *off_4F5E44[2])(std::istream *__hidden this) = { &`virtual thunk to'std::istream::~istream, &`virtual thunk to'std::istream::~istream }; // weak void (__cdecl *off_4F5E58)(std::ostream *__hidden this) = &std::ostream::~ostream; // weak void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this) = { &`virtual thunk to'std::ostream::~ostream, &`virtual thunk to'std::ostream::~ostream }; // weak void (__cdecl *off_4F5E7C)(std::bad_typeid *__hidden this) = &std::bad_typeid::~bad_typeid; // weak int (*off_4F5E90)() = &std::moneypunct::~moneypunct; // weak int (*off_4F5EC4)() = &std::moneypunct::~moneypunct; // weak int (*off_4F5EF8)() = &std::moneypunct::~moneypunct; // weak int (*off_4F5F2C)() = &std::moneypunct::~moneypunct; // weak int (*off_4F5F60)() = &std::__timepunct::~__timepunct; // weak int (*off_4F5F70)() = &std::__timepunct::~__timepunct; // weak void (__cdecl *off_4F5F80)(std::logic_error *__hidden this) = &std::logic_error::~logic_error; // weak void (__cdecl *off_4F5F94)(std::range_error *__hidden this) = &std::range_error::~range_error; // weak int (*off_4F5FA8)() = &std::ctype_byname::~ctype_byname; // weak int (*off_4F5FD8)() = &std::ctype_byname::~ctype_byname; // weak void (__cdecl *off_4F6018)(std::domain_error *__hidden this) = &std::domain_error::~domain_error; // weak void (__cdecl *off_4F602C)(std::length_error *__hidden this) = &std::length_error::~length_error; // weak void (__cdecl *off_4F6040)(std::out_of_range *__hidden this) = &std::out_of_range::~out_of_range; // weak void (__cdecl *off_4F6054)(std::system_error *__hidden this) = &std::system_error::~system_error; // weak void (__cdecl *off_4F6068)(std::__ios_failure *__hidden this) = &std::__ios_failure::~__ios_failure; // weak void (__cdecl *off_4F607C)(std::bad_exception *__hidden this) = &std::bad_exception::~bad_exception; // weak int (*off_4F6090)() = &std::filebuf::~filebuf; // weak int (*off_4F60D0)() = &std::wfilebuf::~wfilebuf; // weak int (*off_4F6114)() = &std::fstream::~fstream; // weak int (*off_4F6128[2])() = { &`non-virtual thunk to'std::fstream::~fstream, &`non-virtual thunk to'std::fstream::~fstream }; // weak int (*off_4F613C[2])() = { &`virtual thunk to'std::fstream::~fstream, &`virtual thunk to'std::fstream::~fstream }; // weak int (*off_4F6150)() = &std::wfstream::~wfstream; // weak int (*off_4F6164[2])() = { &`non-virtual thunk to'std::wfstream::~wfstream, &`non-virtual thunk to'std::wfstream::~wfstream }; // weak int (*off_4F6178[2])() = { &`virtual thunk to'std::wfstream::~wfstream, &`virtual thunk to'std::wfstream::~wfstream }; // weak int (*off_4F618C)() = &std::wistream::~wistream; // weak int (*off_4F61A0[2])() = { &`virtual thunk to'std::wistream::~wistream, &`virtual thunk to'std::wistream::~wistream }; // weak int (*off_4F61B4)() = &std::wostream::~wostream; // weak int (*off_4F61C8[2])() = { &`virtual thunk to'std::wostream::~wostream, &`virtual thunk to'std::wostream::~wostream }; // weak void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this) = &std::runtime_error::~runtime_error; // weak int (*off_4F61F0)() = &std::ifstream::~ifstream; // weak int (*off_4F6204[2])() = { &`virtual thunk to'std::ifstream::~ifstream, &`virtual thunk to'std::ifstream::~ifstream }; // weak int (*off_4F6218)() = &std::wifstream::~wifstream; // weak int (*off_4F622C[2])() = { &`virtual thunk to'std::wifstream::~wifstream, &`virtual thunk to'std::wifstream::~wifstream }; // weak int (*off_4F6240)() = &std::wiostream::~basic_iostream; // weak int (*off_4F6254[2])() = { &`non-virtual thunk to'std::wiostream::~basic_iostream, &`non-virtual thunk to'std::wiostream::~basic_iostream }; // weak int (*off_4F6268[2])() = { &`virtual thunk to'std::wiostream::~basic_iostream, &`virtual thunk to'std::wiostream::~basic_iostream }; // weak int (*off_4F627C)() = &std::ofstream::~ofstream; // weak int (*off_4F6290[2])() = { &`virtual thunk to'std::ofstream::~ofstream, &`virtual thunk to'std::ofstream::~ofstream }; // weak int (*off_4F62A4)() = &std::wofstream::~wofstream; // weak int (*off_4F62B8[2])() = { &`virtual thunk to'std::wofstream::~wofstream, &`virtual thunk to'std::wofstream::~wofstream }; // weak int (*off_4F62C8)() = &std::codecvt_byname::~codecvt_byname; // weak int (*off_4F62F4)() = &std::codecvt_byname::~codecvt_byname; // weak int (*off_4F6320)() = &std::collate_byname::~collate_byname; // weak int (*off_4F633C)() = &std::collate_byname::~collate_byname; // weak void (__cdecl *off_4F6358)(std::overflow_error *__hidden this) = &std::overflow_error::~overflow_error; // weak int (*off_4F636C)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak int (*off_4F63A4)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak int (*off_4F63C0)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak int (*off_4F63DC)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak int (*off_4F63F8)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak int (*off_4F6414)() = &std::streambuf::~streambuf; // weak int (*off_4F6454)() = &std::wstreambuf::~wstreambuf; // weak int (*off_4F6494)() = &std::messages_byname::~messages_byname; // weak int (*off_4F64B0)() = &std::messages_byname::~messages_byname; // weak int (*off_4F64CC)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_4F64F0)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_4F6514)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_4F653C)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_4F6564)() = &std::time_put_byname>::~time_put_byname; // weak int (*off_4F6578)() = &std::time_put_byname>::~time_put_byname; // weak void (__cdecl *off_4F658C)(std::underflow_error *__hidden this) = &std::underflow_error::~underflow_error; // weak int (*off_4F65A0)() = &std::__numpunct_cache::~__numpunct_cache; // weak int (*off_4F65B0)() = &std::__numpunct_cache::~__numpunct_cache; // weak void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this) = &std::invalid_argument::~invalid_argument; // weak int (*off_4F65D4)() = &std::__timepunct_cache::~__timepunct_cache; // weak int (*off_4F65E4)() = &std::__timepunct_cache::~__timepunct_cache; // weak int (*off_4F65F4)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_4F6628)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_4F665C)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_4F6690)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_4F66C4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_4F66D4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_4F66E4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_4F66F4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_4F675C)() = &std::__codecvt_utf8_base::~__codecvt_utf8_base; // weak void (__cdecl *off_4F6788)(std::__iosfail_type_info *__hidden this) = &std::__iosfail_type_info::~__iosfail_type_info; // weak int (*off_4F680C)() = &std::__codecvt_utf16_base::~__codecvt_utf16_base; // weak void (__cdecl *off_4F6838)(std::bad_array_new_length *__hidden this) = &std::bad_array_new_length::~bad_array_new_length; // weak _UNKNOWN unk_4F688C; // weak _UNKNOWN unk_4F68CC; // weak _UNKNOWN unk_4F68F8; // weak _UNKNOWN unk_4F6924; // weak _UNKNOWN unk_4F6950; // weak _UNKNOWN unk_4F697C; // weak _UNKNOWN unk_4F69A8; // weak int (*off_4F6A2C)() = &std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base; // weak int (*off_4F6A58)() = &std::ctype::~ctype; // weak int (*off_4F6A88)() = &std::ctype::~ctype; // weak int (*off_4F6AC8)() = &std::codecvt::~codecvt; // weak int (*off_4F6AF4)() = &std::codecvt::~codecvt; // weak int (*off_4F6B20)() = &std::codecvt::~codecvt; // weak int (*off_4F6B4C)() = &std::codecvt::~codecvt; // weak int (*off_4F6B78)() = &std::codecvt::~codecvt; // weak int (*off_4F6BA4)() = &std::codecvt::~codecvt; // weak int (*off_4F6BD0)() = &std::collate::~collate; // weak int (*off_4F6BEC)() = &std::collate::~collate; // weak int (*off_4F6C08)() = &std::num_get>::~num_get; // weak int (*off_4F6C44)() = &std::num_get>::~num_get; // weak int (*off_4F6C80)() = &std::num_put>::~num_put; // weak int (*off_4F6CB0)() = &std::num_put>::~num_put; // weak void (__cdecl *off_4F6CE0)(std::bad_cast *__hidden this) = &std::bad_cast::~bad_cast; // weak void (__cdecl *off_4F6CF4)(std::ios_base *__hidden this) = &std::ios_base::~ios_base; // weak int (*off_4F6D04)() = &std::messages::~messages; // weak int (*off_4F6D20)() = &std::messages::~messages; // weak int (*off_4F6D3C)() = &std::numpunct::~numpunct; // weak int (*off_4F6D60)() = &std::numpunct::~numpunct; // weak int (*off_4F6D84)() = &std::time_get>::~time_get; // weak int (*off_4F6DAC)() = &std::time_get>::~time_get; // weak int (*off_4F6DD4)() = &std::time_put>::~time_put; // weak int (*off_4F6DE8)() = &std::time_put>::~time_put; // weak void (__cdecl *off_4F6DFC)(std::bad_alloc *__hidden this) = &std::bad_alloc::~bad_alloc; // weak int (*off_4F6E10)() = &std::ios::~ios; // weak int (*off_4F6E20)() = &std::wios::~wios; // weak int (*off_4F6E44)() = &std::money_get>::~money_get; // weak int (*off_4F6E5C)() = &std::money_get>::~money_get; // weak int (*off_4F6E74)() = &std::money_put>::~money_put; // weak int (*off_4F6E8C)() = &std::money_put>::~money_put; // weak void *std::ctype::classic_table(void)::_S_classic_table = &unk_1000100; // weak _UNKNOWN __EH_FRAME_BEGIN__; // weak char **_bss_start__; // idb int _argc; // idb _UNKNOWN obj; // weak _UNKNOWN WXML::RPX::acceptNum(char const*,int &)::nextPos; // weak int dword_53C0EC; // weak int dword_53C0F4; // weak int dword_53C0F8; // weak int dword_53C100[264]; // weak int dword_53C520; // weak int dword_53C528[264]; // weak int dword_53C948; // weak int dword_53C950[266]; // weak int dword_53CD78[266]; // weak int dword_53D1A0[218]; // weak char WXML::RPX::acceptNum(char const*,int &)::inited; // weak _UNKNOWN WXML::RPX::acceptStr(char const*,int &)::nextPos; // weak int dword_53D5A8; // weak int dword_53D5BC; // weak int dword_53D948[34]; // weak int dword_53D9D0; // weak int dword_53DAB8; // weak int dword_53DD70[39]; // weak int dword_53DE0C; // weak int dword_53DEE0; // weak int dword_53E198[266]; // weak int dword_53E5C0[532]; // weak char WXML::RPX::acceptStr(char const*,int &)::inited; // weak _UNKNOWN WXML::RPX::acceptID(char const*,int &)::nextPos; // weak int dword_53EF24[30]; // weak int dword_53EF9C; // weak int dword_53EFA4[217]; // weak int dword_53F308; // weak int dword_53F30C; // weak int dword_53F310; // weak int dword_53F314; // weak int dword_53F318; // weak int dword_53F31C; // weak int dword_53F320; // weak int dword_53F324; // weak int dword_53F328; // weak int dword_53F32C; // weak int dword_53F34C[30]; // weak int dword_53F3C4; // weak int dword_53F3CC[169]; // weak char WXML::RPX::acceptID(char const*,int &)::inited; // weak _UNKNOWN WXSS::Tokenizer::SCC; // weak int dword_53F6B8[1786]; // weak int WXSS::Tokenizer::TT[]; // weak int dword_541AA0[]; // weak int dword_5422A0[]; // weak int dword_5422A4[67]; // weak int dword_5423B0; // weak int dword_5423B4; // weak int dword_5423B8; // weak int dword_5423BC; // weak int dword_5423C0; // weak int dword_5423C4; // weak int dword_5423D8; // weak int dword_5423DC; // weak int dword_542418; // weak int dword_54241C; // weak int dword_5424A0; // weak int dword_5424A4; // weak int dword_542678; // weak int dword_54267C; // weak int dword_542AA0; // weak int dword_542AA4; // weak int dword_5432A0[]; // weak int dword_5432A4[67]; // weak int dword_5433B0; // weak int dword_5433B4; // weak int dword_543AA0; // weak int dword_543AA4; // weak int dword_5442A0[]; // weak int dword_5442A4[167]; // weak int dword_544AA0; // weak int dword_544AA4; // weak int dword_5452A0[]; // weak int dword_5452A4[39]; // weak int dword_545418; // weak int dword_54541C; // weak int dword_545470; // weak int dword_545474; // weak int dword_545478; // weak int dword_54547C; // weak int dword_545688; // weak int dword_54568C; // weak int dword_545AA0; // weak int dword_545AA4; // weak int dword_5462A0[]; // weak int dword_5462A4[73]; // weak int dword_5463C8; // weak int dword_5463CC; // weak int dword_546AA0; // weak int dword_546AA4; // weak int dword_5473B0; // weak int dword_5473B4; // weak int dword_547AA0; // weak int dword_547AA4; // weak int dword_5483D8; // weak int dword_5483DC; // weak int dword_548AA0; // weak int dword_548AA4; // weak int dword_5492A0[]; // weak int dword_5492A4[115]; // weak int dword_549470; // weak int dword_549474; // weak int dword_549478; // weak int dword_54947C; // weak int dword_549688; // weak int dword_54968C; // weak int dword_549AA0; // weak int dword_549AA4; // weak int dword_54A3B0; // weak int dword_54A3B4; // weak int dword_54A3D8; // weak int dword_54A3DC; // weak int dword_54A3E0; // weak int dword_54A3E4; // weak int dword_54A478; // weak int dword_54A47C; // weak int dword_54A688; // weak int dword_54A68C; // weak int dword_54AAA0; // weak int dword_54AAA4; // weak int dword_54B3B0; // weak int dword_54B3B4; // weak int dword_54B3D8; // weak int dword_54B3DC; // weak int dword_54B3E8; // weak int dword_54B3EC; // weak int dword_54BAA0; // weak int dword_54BAA4; // weak int dword_54C3B0; // weak int dword_54C3B4; // weak int dword_54CAA0; // weak int dword_54CAA4; // weak int dword_54D3B0; // weak int dword_54D3B4; // weak int dword_54DAA0; // weak int dword_54DAA4; // weak int dword_54E3D8; // weak int dword_54E3DC; // weak int dword_54EAA0; // weak int dword_54EAA4; // weak int dword_54F3D8; // weak int dword_54F3DC; // weak int dword_54FAA0; // weak int dword_54FAA4; // weak int dword_5503F0; // weak int dword_5503F4; // weak int dword_550AA0; // weak int dword_550AA4; // weak int dword_5513F0; // weak int dword_5513F4; // weak int dword_551AA0; // weak int dword_551AA4; // weak int dword_5523F0; // weak int dword_5523F4; // weak int dword_552418; // weak int dword_55241C; // weak int dword_552AA0; // weak int dword_552AA4; // weak int dword_5533F0; // weak int dword_5533F4; // weak int dword_553AA0; // weak int dword_553AA4; // weak int dword_5543F0; // weak int dword_5543F4; // weak int dword_554AA0; // weak int dword_554AA4; // weak int dword_5553F0; // weak int dword_5553F4; // weak int dword_555418; // weak int dword_55541C; // weak int dword_555AA0; // weak int dword_555AA4; // weak int dword_5582A0[]; // weak int dword_5582A4[511]; // weak int dword_558AA0; // weak int dword_558AA4; // weak int dword_5592A0; // weak int dword_5592A4; // weak int dword_559678; // weak int dword_55967C; // weak int dword_559AA0; // weak int dword_559AA4; // weak int dword_55A678; // weak int dword_55A67C; // weak int dword_55AAA0; // weak int dword_55AAA4; // weak _UNKNOWN unk_7FFFFF; // weak _UNKNOWN unk_800000; // weak _UNKNOWN unk_1000000; // weak _UNKNOWN unk_1440001; // weak int WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited; // weak char WXSS::Tokenizer::InitTransitTable(void)::bInited; // weak int _CRT_fmode; // idb int __cpu_features; // weak int dword_15412CC; // weak int _CRT_MT; // weak int dword_15412E4; // weak int dword_15412E8; // weak struct _RTL_CRITICAL_SECTION CriticalSection; // idb int dword_1541304; // weak int dword_1541320; // weak _UNKNOWN unk_1541340; // weak int dword_1541C40[10]; // weak LONG Target; // idb struct _RTL_CRITICAL_SECTION stru_1541C80; // idb struct _RTL_CRITICAL_SECTION stru_1541C98; // idb int dword_1541CC0; // weak _UNKNOWN unk_1541CC4; // weak _UNKNOWN unk_1541CC8; // weak _UNKNOWN __mingw_output_format_flags; // weak char byte_1541CCD; // weak int __mingw_memalign_lwm; // weak unsigned __int8 dwarf_reg_size_table[18]; // idb _UNKNOWN marker_22456; // weak __gthread_mutex_t object_mutex; // idb object *seen_objects; // idb object *unseen_objects; // idb pointer emutls_size; // idb __gthread_key_t emutls_key; // idb __gthread_mutex_t emutls_mutex; // idb HMODULE hmod_libgcc; // idb char __hexdig_D2A[48]; // weak char byte_1541D50; // weak // extern int ___mb_cur_max; // extern void (__cdecl *___set_app_type)(_crt_app_type Type); // extern void (__cdecl *__fpreset)(); // extern FILE __iob[]; // extern const unsigned __int16 *__pctype; //----- (00401000) -------------------------------------------------------- LONG __stdcall TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo) { DWORD ExceptionCode; // eax int v2; // edx _crt_signal_t v3; // eax _crt_signal_t v5; // eax _crt_signal_t v6; // eax ExceptionCode = ExceptionInfo->ExceptionRecord->ExceptionCode; if ( ExceptionCode == -1073741677 ) { LABEL_6: v3 = signal(8, 0); if ( v3 == (_crt_signal_t)1 ) { signal(8, (_crt_signal_t)1); fesetenv(0); return -1; } LABEL_7: if ( v3 ) { v3(8); return -1; } return 0; } if ( ExceptionCode > 0xC0000093 ) { if ( ExceptionCode == -1073741676 ) { v3 = signal(8, 0); if ( v3 == (_crt_signal_t)1 ) { signal(8, (_crt_signal_t)1); return -1; } goto LABEL_7; } if ( ExceptionCode != -1073741674 ) return 0; LABEL_18: v6 = signal(4, 0); if ( v6 == (_crt_signal_t)1 ) { signal(4, (_crt_signal_t)1); return -1; } if ( v6 ) { v6(4); return -1; } return 0; } if ( ExceptionCode == -1073741795 ) goto LABEL_18; if ( ExceptionCode <= 0xC000001D ) { if ( ExceptionCode == -1073741819 ) { v5 = signal(11, 0); if ( v5 == (_crt_signal_t)1 ) { signal(11, (_crt_signal_t)1); return -1; } if ( v5 ) { v5(11); return -1; } } return 0; } v2 = 0; if ( ExceptionCode + 1073741683 <= 4 ) goto LABEL_6; return v2; } //----- (004011A0) -------------------------------------------------------- void __usercall __noreturn sub_4011A0(__int32 a1@) { char ***v1; // eax int v2; // ebx if ( __dyn_tls_init_callback ) __dyn_tls_init_callback(0, 2, 0); SetUnhandledExceptionFilter(TopLevelExceptionFilter); __cpu_features_init(a1); fesetenv(_CRT_fenv); _setargv(); if ( _CRT_fmode ) { _fmode = _CRT_fmode; _setmode(__iob[0]._file, _CRT_fmode); _setmode(__iob[1]._file, _CRT_fmode); _setmode(__iob[2]._file, _CRT_fmode); } *__p__fmode() = _fmode; _pei386_runtime_relocator(); __main(); v1 = __p__environ(); v2 = main(_argc, (const char **)_bss_start__, (const char **)*v1); _cexit(); ExitProcess(v2); } // 4EFBCC: using guessed type int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD); //----- (00401290) -------------------------------------------------------- int _mingw32_init_mainargs() { char v1[4]; // [esp+28h] [ebp-14h] BYREF int v2[4]; // [esp+2Ch] [ebp-10h] BYREF v2[0] = 0; return __getmainargs(&_argc, &_bss_start__, v1, _CRT_glob & 1, v2); } // 43B3F8: using guessed type int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 4E8020: using guessed type int _CRT_glob; // 401290: using guessed type int var_10[4]; // 401290: using guessed type char var_14[4]; //----- (004012D0) -------------------------------------------------------- void __usercall __noreturn mainCRTStartup(__int32 a1@) { ___set_app_type(_crt_console_app); sub_4011A0(a1); } //----- (004012F0) -------------------------------------------------------- void __usercall __noreturn WinMainCRTStartup(__int32 a1@) { ___set_app_type(_crt_gui_app); sub_4011A0(a1); } //----- (00401330) -------------------------------------------------------- int __gcc_register_frame() { HMODULE ModuleHandleA; // eax HMODULE v1; // ebx void (__cdecl *__register_frame_info)(void *, void *); // esi ModuleHandleA = GetModuleHandleA("libgcc_s_dw2-1.dll"); if ( ModuleHandleA ) { v1 = ModuleHandleA; hmod_libgcc = LoadLibraryA("libgcc_s_dw2-1.dll"); __register_frame_info = (void (__cdecl *)(void *, void *))GetProcAddress(v1, "__register_frame_info"); _data_start__ = (int (__cdecl *)(_DWORD))GetProcAddress(v1, "__deregister_frame_info"); } else { _data_start__ = (int (__cdecl *)(_DWORD))__deregister_frame_info; __register_frame_info = (void (__cdecl *)(void *, void *))::__register_frame_info; } if ( __register_frame_info ) __register_frame_info(&__EH_FRAME_BEGIN__, &obj); return atexit(__gcc_deregister_frame); } // 4E7000: using guessed type int (__cdecl *_data_start__)(_DWORD); //----- (004013E0) -------------------------------------------------------- void __cdecl __gcc_deregister_frame() { if ( _data_start__ ) _data_start__(&__EH_FRAME_BEGIN__); if ( hmod_libgcc ) FreeLibrary(hmod_libgcc); } // 4E7000: using guessed type int (__cdecl *_data_start__)(_DWORD); //----- (00401410) -------------------------------------------------------- void __cdecl __tcf_1() { std::ios_base::Init::~Init(); } //----- (0040141A) -------------------------------------------------------- void __usercall std::_Vector_base::_M_deallocate(void *a1@) { if ( a1 ) operator delete(a1); } // 40141A: could not find valid save-restore pair for ebp //----- (00401430) -------------------------------------------------------- void __fastcall std::pair::~pair(void **a1) { std::string::_M_dispose(a1 + 6); std::string::_M_dispose(a1); } //----- (00401449) -------------------------------------------------------- _DWORD *__usercall std::__relocate_a_1>@( void **a1@, void **a2@, _DWORD *a3@) { _DWORD *v4; // eax void **i; // ebx void **v7; // ecx _DWORD *v9; // [esp+18h] [ebp-20h] v4 = a3; for ( i = a1; i != a2; i += 6 ) { v9 = v4; std::string::basic_string(v4, i); v7 = i; std::string::_M_dispose(v7); v4 = v9 + 6; } return &a3[6 * ((178956971 * ((unsigned int)((char *)i - (char *)a1) >> 3)) & 0x1FFFFFFF)]; } //----- (004014A2) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, char *a2) { unsigned int v3; // kr04_4 unsigned int result; // eax _BYTE *v5; // edx unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; if ( !a2 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v3 = strlen(a2) + 1; v6[0] = v3 - 1; if ( v3 - 1 > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 4014A2: using guessed type unsigned int var_1C[7]; //----- (00401524) -------------------------------------------------------- void __fastcall std::vector::~vector(void ***a1) { void **v2; // edi void **i; // esi void **v4; // ecx v2 = a1[1]; for ( i = *a1; v2 != i; i += 6 ) { v4 = i; std::string::_M_dispose(v4); } std::_Vector_base::_M_deallocate(*a1); } //----- (00401552) -------------------------------------------------------- int __cdecl Usage(int a1, const char **a2) { printf("*** WeChat Stylesheet Compiler, Version %s ***\n", "v0.4me_20200724_db"); printf( "Usage: %s [-lc] [-o OUTPUT] [-s ] [-st] [-js] [-db] [-cp ] [-pc ] <[-sd ] | [import_css_files..]>\n", *a2); puts(" -lc: need to lint the css"); puts(" -sd: 'someclass { font-size: 18px }'"); puts(" -s: read from stdin"); puts(" -o: output destination (default stdout)"); puts(" -st: print tree"); puts(" -db: add debug attr"); puts(" -js: js formate output"); puts(" -cp: add class prefix"); puts(" -pc: page wxss files count"); return 0; } //----- (004015F1) -------------------------------------------------------- int __cdecl ReadFile(char *FileName, unsigned int *a2) { int v2; // edi FILE *ptr; // ebx char Buffer[4]; // [esp+10h] [ebp-418h] BYREF char v6[1020]; // [esp+14h] [ebp-414h] BYREF std::string::operator=(a2, (char *)&byte_4EA251); if ( FileName ) { v2 = -1; ptr = fopen(FileName, "r"); if ( !ptr ) return v2; } else { ptr = (FILE *)__iob[0]._ptr; } *(_DWORD *)Buffer = 0; memset(v6, 0, sizeof(v6)); while ( fgets(Buffer, 1024, ptr) ) std::string::operator+=(a2, Buffer); v2 = 0; if ( FileName ) fclose(ptr); return v2; } //----- (00401692) -------------------------------------------------------- _DWORD *__cdecl Trim(_DWORD *a1, int a2) { unsigned int v2; // eax void *v4[6]; // [esp+10h] [ebp-38h] BYREF void *v5[8]; // [esp+28h] [ebp-20h] BYREF std::string::basic_string(a1, a2); while ( a1[1] > 1u && *(_BYTE *)*a1 == 32 ) { std::string::substr(v4, a1, 1u, 0xFFFFFFFF); std::string::operator=(a1, v4); std::string::_M_dispose(v4); } while ( 1 ) { v2 = a1[1]; if ( v2 <= 1 || *(_BYTE *)(*a1 + v2 - 1) != 32 ) break; std::string::substr(v5, a1, 0, v2 - 1); std::string::operator=(a1, v5); std::string::_M_dispose(v5); } return a1; } //----- (0040174A) -------------------------------------------------------- _DWORD *__cdecl GetNextArg(_DWORD *a1, int *a2, int a3) { int v3; // eax int v4; // ebx void *v6[2]; // [esp+18h] [ebp-60h] BYREF char v7; // [esp+20h] [ebp-58h] BYREF void *v8[6]; // [esp+30h] [ebp-48h] BYREF void *v9[12]; // [esp+48h] [ebp-30h] BYREF v3 = std::string::find(a2, *(char **)a3, 0); v6[1] = 0; v4 = v3; v6[0] = &v7; v7 = 0; if ( v3 == -1 ) { std::string::_M_assign((int)v6, (int)a2); std::string::operator=((unsigned int *)a2, (char *)&byte_4EA251); } else { std::string::substr(v8, a2, 0, v3); std::string::operator=(v6, v8); std::string::_M_dispose(v8); std::string::substr(v9, a2, *(_DWORD *)(a3 + 4) + v4, 0xFFFFFFFF); std::string::operator=(a2, v9); std::string::_M_dispose(v9); } Trim(a1, (int)v6); std::string::_M_dispose(v6); return a1; } //----- (0040184C) -------------------------------------------------------- int __cdecl EscapeToJsonString(int a1, int a2) { char *i; // ebx char v3; // al char *v4; // eax char *v5; // eax char v7[4]; // [esp+18h] [ebp-D0h] BYREF int v8[51]; // [esp+1Ch] [ebp-CCh] BYREF std::ostringstream::basic_ostringstream((int)v7); for ( i = *(char **)a2; i != (char *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 4)); ++i ) { v3 = *i; if ( *i == 92 || v3 == 34 || (unsigned __int8)v3 <= 0x1Fu ) { v4 = (char *)std::operator<<>((std::ostream::sentry *)v7, "\\u"); v5 = std::ostream::operator<<(v4, (void (__cdecl *)(char *))std::hex); *(_DWORD *)&v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 8] = 4; std::operator<<>(v5, 48); std::ostream::operator<<(*i); } else { std::operator<<>((std::ostream::sentry *)v7, *i); } } std::stringbuf::str(a1, v8); std::ostringstream::~ostringstream((int)v7); return a1; } // 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 40184C: using guessed type char var_D0[4]; // 40184C: using guessed type int var_CC[51]; //----- (00401921) -------------------------------------------------------- int __cdecl DictToJsonString(int a1, int a2) { int v2; // ebx char v3; // al std::ostream::sentry *v4; // edi std::ostream::sentry *v5; // eax std::ostream::sentry *v6; // esi std::ostream::sentry *v7; // eax char *v9[6]; // [esp+20h] [ebp-F8h] BYREF char v10[4]; // [esp+38h] [ebp-E0h] BYREF int v11[55]; // [esp+3Ch] [ebp-DCh] BYREF std::ostringstream::basic_ostringstream((int)v10); std::operator<<>((std::ostream::sentry *)v10, "{"); v2 = *(_DWORD *)(a2 + 12); v3 = 1; while ( a2 + 4 != v2 ) { if ( !v3 ) std::operator<<>((std::ostream::sentry *)v10, ","); v4 = std::operator<<>((std::ostream::sentry *)v10, "\""); EscapeToJsonString((int)v9, v2 + 16); v5 = std::operator<<>(v4, v9[0]); std::operator<<>(v5, "\":"); std::string::_M_dispose((void **)v9); v6 = std::operator<<>((std::ostream::sentry *)v10, "\""); EscapeToJsonString((int)v9, v2 + 40); v7 = std::operator<<>(v6, v9[0]); std::operator<<>(v7, "\""); std::string::_M_dispose((void **)v9); v2 = std::_Rb_tree_increment(v2); v3 = 0; } std::operator<<>((std::ostream::sentry *)v10, "}"); std::stringbuf::str(a1, v11); std::ostringstream::~ostringstream((int)v10); return a1; } // 4D1A50: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); // 401921: using guessed type char var_E0[4]; // 401921: using guessed type int var_DC[55]; //----- (00401A98) -------------------------------------------------------- void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( int a1) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); } //----- (00401AAC) -------------------------------------------------------- void __cdecl __tcf_3() { std::ios_base::Init::~Init(); } //----- (00401AB6) -------------------------------------------------------- void __usercall std::_Vector_base::_M_deallocate(void *a1@) { if ( a1 ) operator delete(a1); } // 401AB6: could not find valid save-restore pair for ebp //----- (00401ACB) -------------------------------------------------------- _DWORD *__usercall std::__relocate_a_1>@( void **a1@, void **a2@, _DWORD *a3@) { _DWORD *v4; // eax void **i; // ebx void **v7; // ecx _DWORD *v9; // [esp+18h] [ebp-20h] v4 = a3; for ( i = a1; i != a2; i += 6 ) { v9 = v4; std::string::basic_string(v4, i); v7 = i; std::string::_M_dispose(v7); v4 = v9 + 6; } return &a3[6 * ((178956971 * ((unsigned int)((char *)i - (char *)a1) >> 3)) & 0x1FFFFFFF)]; } //----- (00401B23) -------------------------------------------------------- int snprintf_constprop_0(char *Buffer, size_t BufferCount, int a3, ...) { va_list va; // [esp+2Ch] [ebp+14h] BYREF va_start(va, a3); return vsnprintf( Buffer, BufferCount, "var BASE_DEVICE_WIDTH = 750;\n" "var isIOS=navigator.userAgent.match(\"iPhone\");\n" "var deviceWidth = window.screen.width || 375;\n" "var deviceDPR = window.devicePixelRatio || 2;\n" "var checkDeviceWidth = window.__checkDeviceWidth__ || function() {\n" "var newDeviceWidth = window.screen.width || 375\n" "var newDeviceDPR = window.devicePixelRatio || 2\n" "var newDeviceHeight = window.screen.height || 375\n" "if (window.screen.orientation && /^landscape/.test(window.screen.orientation.type || '')) newDeviceWidth = ne" "wDeviceHeight\n" "if (newDeviceWidth !== deviceWidth || newDeviceDPR !== deviceDPR) {\n" "deviceWidth = newDeviceWidth\n" "deviceDPR = newDeviceDPR\n" "}\n" "}\n" "checkDeviceWidth()\n" "var eps = 1e-4;\n" "var transformRPX = window.__transformRpx__ || function(number, newDeviceWidth) {\n" "if ( number === 0 ) return 0;\n" "number = number / BASE_DEVICE_WIDTH * ( newDeviceWidth || deviceWidth );\n" "number = Math.floor(number + eps);\n" "if (number === 0) {\n" "if (deviceDPR === 1 || !isIOS) {\n" "return 1;\n" "} else {\n" "return 0.5;\n" "}\n" "}\n" "return number;\n" "}\n" "window.__rpxRecalculatingFuncs__ = window.__rpxRecalculatingFuncs__ || [];\n" "var __COMMON_STYLESHEETS__ = __COMMON_STYLESHEETS__||{}\n" "%s\n" "var setCssToHead = function(file, _xcInvalid, info) {\n" "var Ca = {};\n" "var css_id;\n" "var info = info || {};\n" "var _C = __COMMON_STYLESHEETS__\n" "function makeup(file, opt) {\n" "var _n = typeof(file) === \"string\";\n" "if ( _n && Ca.hasOwnProperty(file)) return \"\";\n" "if ( _n ) Ca[file] = 1;\n" "var ex = _n ? _C[file] : file;\n" "var res=\"\";\n" "for (var i = ex.length - 1; i >= 0; i--) {\n" "var content = ex[i];\n" "if (typeof(content) === \"object\")\n" "{\n" "var op = content[0];\n" "if ( op == 0 )\n" "res = transformRPX(content[1], opt.deviceWidth) + \"px\" + res;\n" "else if ( op == 1)\n" "res = opt.suffix + res;\n" "else if ( op == 2 )\n" "res = makeup(content[1], opt) + res;\n" "}\n" "else\n" "res = content + res\n" "}\n" "return res;\n" "}\n" "var styleSheetManager = window.__styleSheetManager2__\n" "var rewritor = function(suffix, opt, style){\n" "opt = opt || {};\n" "suffix = suffix || \"\";\n" "opt.suffix = suffix;\n" "if ( opt.allowIllegalSelector != undefined && _xcInvalid != undefined )\n" "{\n" "if ( opt.allowIllegalSelector )\n" "console.warn( \"For developer:\" + _xcInvalid );\n" "else\n" "{\n" "console.error( _xcInvalid );\n" "}\n" "}\n" "Ca={};\n" "css = makeup(file, opt);\n" "if (styleSheetManager) {\n" "var key = (info.path || Math.random()) + ':' + suffix\n" "if (!style) {\n" "styleSheetManager.addItem(key, info.path);\n" "window.__rpxRecalculatingFuncs__.push(function(size){\n" "opt.deviceWidth = size.width;\n" "rewritor(suffix, opt, true);\n" "});\n" "}\n" "styleSheetManager.setCss(key, css);\n" "return;\n" "}\n" "if ( !style )\n" "{\n" "var head = document.head || document.getElementsByTagName('head')[0];\n" "style = document.createElement('style');\n" "style.type = 'text/css';\n" "style.setAttribute( \"wxss:path\", info.path );\n" "head.appendChild(style);\n" "window.__rpxRecalculatingFuncs__.push(function(size){\n" "opt.deviceWidth = size.width;\n" "rewritor(suffix, opt, style);\n" "});\n" "}\n" "if (style.styleSheet) {\n" "style.styleSheet.cssText = css;\n" "} else {\n" "if ( style.childNodes.length == 0 )\n" "style.appendChild(document.createTextNode(css));\n" "else\n" "style.childNodes[0].nodeValue = css;\n" "}\n" "}\n" "return rewritor;\n" "}\n", va); } //----- (00401B4C) -------------------------------------------------------- volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) { if ( _CRT_MT ) _InterlockedIncrement(result); else ++*result; return result; } // 15412D0: using guessed type int _CRT_MT; //----- (00401B5C) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, char *a2) { unsigned int v3; // kr04_4 unsigned int result; // eax _BYTE *v5; // edx unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; if ( !a2 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v3 = strlen(a2) + 1; v6[0] = v3 - 1; if ( v3 - 1 > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 401B5C: using guessed type unsigned int var_1C[7]; //----- (00401BDD) -------------------------------------------------------- void **__cdecl WXSS::RemoveQuote(void **a1, char **a2) { unsigned int v2; // edx char v3; // cl v2 = (unsigned int)a2[1]; if ( v2 <= 2 ) { std::string::basic_string(a1, (char *)&byte_4EAF84); } else { v3 = **a2; if ( v3 == 39 || v3 == 34 ) std::string::substr(a1, a2, 1u, v2 - 2); else std::string::basic_string(a1, (int)a2); } return a1; } //----- (00401C3E) -------------------------------------------------------- int __stdcall WXSS::XCompiler::DealRPX(int *a1, int a2) { void *v3[8]; // [esp+18h] [ebp-20h] BYREF WXML::Rewrite::ToStringCode2((int)v3, a1); WXML::GetStrForMakingCSS((char **)v3, a2); std::string::_M_dispose(v3); std::string::operator=((unsigned int *)a1, (char *)&byte_4EAF84); return 0; } //----- (00401C9A) -------------------------------------------------------- int __thiscall WXSS::XCompiler::GetHostRule(_DWORD *this, _DWORD *a2) { int v3; // edi void *v5[2]; // [esp+10h] [ebp-118h] BYREF char v6; // [esp+18h] [ebp-110h] BYREF void *v7[6]; // [esp+28h] [ebp-100h] BYREF char v8[8]; // [esp+40h] [ebp-E8h] BYREF char v9[4]; // [esp+48h] [ebp-E0h] BYREF int v10[55]; // [esp+4Ch] [ebp-DCh] BYREF v5[0] = &v6; v3 = this[11]; v5[1] = 0; v6 = 0; while ( (_DWORD *)v3 != this + 9 ) { WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(*(_DWORD *)(v3 + 40), (WXSS::Token *)v5); v3 = std::_Rb_tree_increment(v3); } std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); std::operator<<>((std::ostream::sentry *)v9, "setCssToHead(["); WXSS::XCompiler::DealRPX((int *)v5, (int)v8); std::operator<<>((std::ostream::sentry *)v9, "])"); std::stringbuf::str((int)v7, v10); std::string::operator=(a2, v7); std::string::_M_dispose(v7); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); std::string::_M_dispose(v5); return 0; } // 401C9A: using guessed type char var_E0[4]; // 401C9A: using guessed type int var_DC[55]; //----- (00401D9C) -------------------------------------------------------- int __thiscall WXSS::XCompiler::ShowTree(_DWORD *this, _DWORD *a2) { int i; // ebx _DWORD *v4; // eax void *v6[6]; // [esp+18h] [ebp-F0h] BYREF void *v7[3]; // [esp+30h] [ebp-D8h] BYREF int v8[51]; // [esp+3Ch] [ebp-CCh] BYREF for ( i = this[11]; (_DWORD *)i != this + 9; i = std::_Rb_tree_increment(i) ) { std::operator+((int)v6, "\n/* ", i + 16); v4 = std::string::append(v6, " */\n"); std::string::basic_string(v7, v4); std::string::operator+=(a2, (int)v7); std::string::_M_dispose(v7); std::string::_M_dispose(v6); std::basic_stringstream,std::allocator>::basic_stringstream((int)v7); WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(*(_DWORD *)(i + 40), 0, (int)v7); std::stringbuf::str((int)v6, v8); std::string::operator+=(a2, (int)v6); std::string::_M_dispose(v6); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v7); } return 0; } // 401D9C: using guessed type int var_CC[51]; //----- (00401EDE) -------------------------------------------------------- int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) { volatile signed __int32 *v1; // ecx int result; // eax v1 = *a1; if ( v1 ) return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); return result; } //----- (00401EEA) -------------------------------------------------------- void __cdecl __tcf_1_0() { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)&dword_4E9B8C); } // 4E9B8C: using guessed type int dword_4E9B8C; //----- (00401EF1) -------------------------------------------------------- void __cdecl __tcf_2() { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)&dword_4E9B80); } // 4E9B80: using guessed type int dword_4E9B80; //----- (00401EF8) -------------------------------------------------------- void __fastcall std::pair>::~pair(int a1) { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 28)); std::string::_M_dispose((void **)a1); } //----- (00401F12) -------------------------------------------------------- void __fastcall std::vector>::~vector(void **a1) { char *v2; // edi char *i; // esi volatile signed __int32 **v4; // ecx v2 = (char *)a1[1]; for ( i = (char *)*a1; v2 != i; i += 8 ) { v4 = (volatile signed __int32 **)(i + 4); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); } if ( *a1 ) operator delete(*a1); } //----- (00401F4A) -------------------------------------------------------- volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( volatile signed __int32 **this, volatile signed __int32 *a2) { if ( *this != a2 ) { if ( a2 ) __gnu_cxx::__atomic_add_dispatch(a2 + 1); if ( *this ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); *this = a2; } return this; } //----- (00401F7A) -------------------------------------------------------- void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( int a1) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); } //----- (00401F8E) -------------------------------------------------------- void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( int a1) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); } //----- (00401FA2) -------------------------------------------------------- int __thiscall WXSS::XCompiler::GetCompiled(int *this, int a2, WXSS::Token *a3) { _DWORD *v3; // edx _DWORD *v4; // ebx _DWORD *v6; // esi char v7; // al unsigned int v8; // ebx _DWORD *v9; // eax int v10; // edx int v11; // eax int *v12; // edx _DWORD *v13; // eax _DWORD *v14; // eax _DWORD *v16; // [esp+18h] [ebp-60h] int v17; // [esp+1Ch] [ebp-5Ch] int v18; // [esp+28h] [ebp-50h] BYREF volatile signed __int32 *v19; // [esp+2Ch] [ebp-4Ch] BYREF void *v20[6]; // [esp+30h] [ebp-48h] BYREF void *v21[2]; // [esp+48h] [ebp-30h] BYREF char v22; // [esp+50h] [ebp-28h] BYREF v17 = *this; if ( *this ) return 6; v3 = this + 27; v4 = (_DWORD *)this[28]; v6 = this + 27; while ( v4 ) { v16 = v3; v7 = std::operator<((int)(v4 + 4), a2); v3 = v16; if ( v7 ) { v4 = (_DWORD *)v4[3]; } else { v6 = v4; v4 = (_DWORD *)v4[2]; } } if ( v3 == v6 || (unsigned __int8)std::operator<(a2, (int)(v6 + 4)) ) { if ( this + 9 == std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( this + 8, a2) ) { std::string::operator=((unsigned int *)a3, (char *)&byte_4EAF84); return 1; } else { std::string::operator=((unsigned int *)a3, (char *)&byte_4EAF84); v8 = 0; v9 = std::map>::operator[](this + 8, a2); std::__shared_ptr::__shared_ptr(&v18, v9); while ( 1 ) { v10 = *(_DWORD *)(v18 + 120); if ( (*(_DWORD *)(v18 + 124) - v10) >> 3 <= v8 ) break; if ( std::operator==(*(_DWORD *)(v10 + 8 * v8), "DIRECTIVE") && (v11 = *(_DWORD *)(*(_DWORD *)(v18 + 120) + 8 * v8), v12 = *(int **)(v11 + 120), (unsigned int)(*(_DWORD *)(v11 + 124) - (_DWORD)v12) > 0xF) && std::operator==(*v12, "@import") && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v18 + 120) + 8 * v8) + 140) ) { std::string::basic_string(v20, *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v18 + 120) + 8 * v8) + 140)); v21[0] = &v22; v21[1] = 0; v22 = 0; WXSS::XCompiler::GetCompiled(v20, (WXSS::Token *)v21); std::string::operator+=(a3, (int)v21); std::string::_M_dispose(v21); std::string::_M_dispose(v20); } else { WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(*(_DWORD *)(v18 + 120) + 8 * v8), a3, 1u); } ++v8; } v13 = std::map::operator[](this + 26, a2); std::string::_M_assign((int)v13, (int)a3); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v19); } } else { v14 = std::map::operator[](this + 26, a2); std::string::_M_assign((int)a3, (int)v14); } return v17; } //----- (004021D4) -------------------------------------------------------- int __thiscall WXSS::XCompiler::GetJSCompiled(int *this, int a2, _DWORD *a3) { int Compiled; // ebx void *v5[2]; // [esp+10h] [ebp-48h] BYREF char v6; // [esp+18h] [ebp-40h] BYREF void *v7[12]; // [esp+28h] [ebp-30h] BYREF v5[0] = &v6; v5[1] = 0; v6 = 0; Compiled = WXSS::XCompiler::GetCompiled(this, a2, (WXSS::Token *)v5); if ( !Compiled ) { WXML::Rewrite::ToStringCode2((int)v7, (int *)v5); std::string::operator=(a3, v7); std::string::_M_dispose(v7); } std::string::_M_dispose(v5); return Compiled; } //----- (00402250) -------------------------------------------------------- int __thiscall WXSS::XCompiler::GetWellFormattedJSCompiled(int *this, int a2, _DWORD *a3) { int JSCompiled; // [esp+1Ch] [ebp-11Ch] void *v5[2]; // [esp+20h] [ebp-118h] BYREF char v6; // [esp+28h] [ebp-110h] BYREF void *v7[6]; // [esp+38h] [ebp-100h] BYREF char v8[8]; // [esp+50h] [ebp-E8h] BYREF char v9[4]; // [esp+58h] [ebp-E0h] BYREF int v10[55]; // [esp+5Ch] [ebp-DCh] BYREF v5[0] = &v6; v5[1] = 0; v6 = 0; JSCompiled = WXSS::XCompiler::GetJSCompiled(this, a2, v5); if ( !JSCompiled ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); std::operator<<>( (std::ostream::sentry *)v9, "var BASE_DEVICE_WIDTH = 750;\n" "var isIOS=navigator.userAgent.match(\"iPhone\");\n" "var deviceWidth = window.screen.width || 375;\n" "var deviceDPR = window.devicePixelRatio || 2;\n" "var checkDeviceWidth = window.__checkDeviceWidth__ || function() {\n" "var newDeviceWidth = window.screen.width || 375\n" "var newDeviceDPR = window.devicePixelRatio || 2\n" "var newDeviceHeight = window.screen.height || 375\n" "if (window.screen.orientation && /^landscape/.test(window.screen.orientation.type || '')) newDeviceWidth = newDevi" "ceHeight\n" "if (newDeviceWidth !== deviceWidth || newDeviceDPR !== deviceDPR) {\n" "deviceWidth = newDeviceWidth\n" "deviceDPR = newDeviceDPR\n" "}\n" "}\n" "checkDeviceWidth()\n" "var eps = 1e-4;\n" "var transformRPX = window.__transformRpx__ || function(number, newDeviceWidth) {\n" "if ( number === 0 ) return 0;\n" "number = number / BASE_DEVICE_WIDTH * ( newDeviceWidth || deviceWidth );\n" "number = Math.floor(number + eps);\n" "if (number === 0) {\n" "if (deviceDPR === 1 || !isIOS) {\n" "return 1;\n" "} else {\n" "return 0.5;\n" "}\n" "}\n" "return number;\n" "}\n" "window.__rpxRecalculatingFuncs__ = window.__rpxRecalculatingFuncs__ || [];\n" "var __COMMON_STYLESHEETS__ = __COMMON_STYLESHEETS__||{}\n" "%s\n" "var setCssToHead = function(file, _xcInvalid, info) {\n" "var Ca = {};\n" "var css_id;\n" "var info = info || {};\n" "var _C = __COMMON_STYLESHEETS__\n" "function makeup(file, opt) {\n" "var _n = typeof(file) === \"string\";\n" "if ( _n && Ca.hasOwnProperty(file)) return \"\";\n" "if ( _n ) Ca[file] = 1;\n" "var ex = _n ? _C[file] : file;\n" "var res=\"\";\n" "for (var i = ex.length - 1; i >= 0; i--) {\n" "var content = ex[i];\n" "if (typeof(content) === \"object\")\n" "{\n" "var op = content[0];\n" "if ( op == 0 )\n" "res = transformRPX(content[1], opt.deviceWidth) + \"px\" + res;\n" "else if ( op == 1)\n" "res = opt.suffix + res;\n" "else if ( op == 2 )\n" "res = makeup(content[1], opt) + res;\n" "}\n" "else\n" "res = content + res\n" "}\n" "return res;\n" "}\n" "var styleSheetManager = window.__styleSheetManager2__\n" "var rewritor = function(suffix, opt, style){\n" "opt = opt || {};\n" "suffix = suffix || \"\";\n" "opt.suffix = suffix;\n" "if ( opt.allowIllegalSelector != undefined && _xcInvalid != undefined )\n" "{\n" "if ( opt.allowIllegalSelector )\n" "console.warn( \"For developer:\" + _xcInvalid );\n" "else\n" "{\n" "console.error( _xcInvalid );\n" "}\n" "}\n" "Ca={};\n" "css = makeup(file, opt);\n" "if (styleSheetManager) {\n" "var key = (info.path || Math.random()) + ':' + suffix\n" "if (!style) {\n" "styleSheetManager.addItem(key, info.path);\n" "window.__rpxRecalculatingFuncs__.push(function(size){\n" "opt.deviceWidth = size.width;\n" "rewritor(suffix, opt, true);\n" "});\n" "}\n" "styleSheetManager.setCss(key, css);\n" "return;\n" "}\n" "if ( !style )\n" "{\n" "var head = document.head || document.getElementsByTagName('head')[0];\n" "style = document.createElement('style');\n" "style.type = 'text/css';\n" "style.setAttribute( \"wxss:path\", info.path );\n" "head.appendChild(style);\n" "window.__rpxRecalculatingFuncs__.push(function(size){\n" "opt.deviceWidth = size.width;\n" "rewritor(suffix, opt, style);\n" "});\n" "}\n" "if (style.styleSheet) {\n" "style.styleSheet.cssText = css;\n" "} else {\n" "if ( style.childNodes.length == 0 )\n" "style.appendChild(document.createTextNode(css));\n" "else\n" "style.childNodes[0].nodeValue = css;\n" "}\n" "}\n" "return rewritor;\n" "}\n" "setCssToHead(["); WXML::GetStrForMakingCSS((char **)v5, (int)v8); std::operator<<>( (std::ostream::sentry *)v9, "])( typeof __wxAppSuffixCode__ == \"undefined\"? undefined : __wxAppSuffixCode__ );"); std::stringbuf::str((int)v7, v10); std::string::operator=(a3, v7); std::string::_M_dispose(v7); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); } std::string::_M_dispose(v5); return JSCompiled; } // 402250: using guessed type char var_E0[4]; // 402250: using guessed type int var_DC[55]; //----- (00402344) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int a1) { int v2; // edx std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 160)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 152)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 144)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 136)); std::_Destroy_aux::__destroy *>( v2, *(_DWORD *)(a1 + 120), *(_DWORD *)(a1 + 124)); if ( *(_DWORD *)(a1 + 120) ) operator delete(*(void **)(a1 + 120)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 32)); std::string::_M_dispose((void **)a1); } // 402386: variable 'v2' is possibly undefined //----- (004023AE) -------------------------------------------------------- void __fastcall std::vector::~vector(void ***a1, int a2) { std::_Destroy_aux::__destroy(a2, *a1, a1[1]); std::_Vector_base::_M_deallocate(*a1); } //----- (004023D4) -------------------------------------------------------- void __fastcall WXSS::XCompiler::~XCompiler(void **a1) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)(a1 + 38)); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)(a1 + 32)); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)(a1 + 26)); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)(a1 + 20)); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[16]); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[10]); std::string::_M_dispose(a1 + 2); } //----- (0040242E) -------------------------------------------------------- void __fastcall std::deque::~deque(int a1) { void **v2; // eax void **v3; // edi void ***i; // esi void **v5; // edx int v6; // edx void **v7; // esi unsigned int v8; // edi void *v9; // eax void **v10; // [esp+1Ch] [ebp-6Ch] void **v11; // [esp+20h] [ebp-68h] void **v12; // [esp+24h] [ebp-64h] int v13; // [esp+28h] [ebp-60h] unsigned int v14; // [esp+2Ch] [ebp-5Ch] int v15[4]; // [esp+30h] [ebp-58h] BYREF int v16[4]; // [esp+40h] [ebp-48h] BYREF char v17[16]; // [esp+50h] [ebp-38h] BYREF char v18[16]; // [esp+60h] [ebp-28h] BYREF qmemcpy(v18, (const void *)(a1 + 24), sizeof(v18)); qmemcpy(v17, (const void *)(a1 + 8), sizeof(v17)); qmemcpy(v16, v17, sizeof(v16)); qmemcpy(v15, v18, sizeof(v15)); v2 = (void **)v16[0]; v3 = (void **)v15[0]; v11 = (void **)v16[2]; v13 = v16[3]; v12 = (void **)v15[1]; v14 = v15[3]; for ( i = (void ***)(v16[3] + 4); (unsigned int)i < v14; ++i ) { v5 = *i; v10 = v2; std::_Destroy_aux::__destroy((int)v5, v5, v5 + 126); v2 = v10; } if ( v14 == v13 ) { std::_Destroy_aux::__destroy(v13, v2, v3); } else { std::_Destroy_aux::__destroy(v13, v2, v11); std::_Destroy_aux::__destroy(v6, v12, v3); } if ( *(_DWORD *)a1 ) { v7 = *(void ***)(a1 + 20); v8 = *(_DWORD *)(a1 + 36) + 4; while ( v8 > (unsigned int)v7 ) { v9 = *v7++; operator delete(v9); } operator delete(*(void **)a1); } } // 4024D3: variable 'v6' is possibly undefined //----- (00402514) -------------------------------------------------------- int __thiscall WXSS::XCompiler::GenExpr(_DWORD *this, int a2, int a3, WXSS::Token *a4) { unsigned int i; // edi int v5; // edx int v6; // eax int *v7; // edx std::ostream::sentry *v8; // eax int *v9; // eax std::ostream::sentry *v10; // eax std::ostream::sentry *v11; // eax _DWORD *v12; // eax int v13; // ecx std::ostream::sentry *v15; // [esp+18h] [ebp-50h] void *v17[6]; // [esp+20h] [ebp-48h] BYREF int v18; // [esp+38h] [ebp-30h] BYREF volatile signed __int32 *v19; // [esp+3Ch] [ebp-2Ch] BYREF for ( i = 0; ; ++i ) { v5 = *(_DWORD *)(*(_DWORD *)a2 + 120); if ( i >= (*(_DWORD *)(*(_DWORD *)a2 + 124) - v5) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v5 + 8 * i), "DIRECTIVE") && (v6 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * i), v7 = *(int **)(v6 + 120), (unsigned int)(*(_DWORD *)(v6 + 124) - (_DWORD)v7) > 0xF) && std::operator==(*v7, "@import") && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * i) + 140) ) { std::string::basic_string(v17, *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * i) + 140)); if ( *std::map::operator[](this + 32, (int)v17) > 1u ) { WXSS::XCompiler::DealRPX((int *)a4, a3); v8 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "[2,"); v15 = std::operator<<>(v8, "\""); v9 = std::map::operator[](this + 38, (int)v17); WXML::Rewrite::ToStringCode2((int)&v18, v9); v10 = std::operator<<(v15, &v18); v11 = std::operator<<>(v10, "\""); std::operator<<>(v11, "],"); std::string::_M_dispose((void **)&v18); } else { v12 = std::map>::operator[](this + 8, (int)v17); std::__shared_ptr::__shared_ptr(&v18, v12); WXSS::XCompiler::GenExpr(v13, a3, a4); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v19); } std::string::_M_dispose(v17); } else { WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * i), a4, 1u); } } return 0; } // 4026AF: variable 'v13' is possibly undefined //----- (00402702) -------------------------------------------------------- int __thiscall WXSS::XCompiler::GetPageCss(int *this, int *a2, _DWORD *a3, int a4) { std::ostream::sentry *v5; // eax std::ostream::sentry *v6; // edi std::ostream::sentry *v7; // eax int v8; // eax int v9; // edx volatile signed __int32 *v10; // eax std::ostream::sentry *v11; // ebx std::ostream::sentry *v12; // eax std::ostream::sentry *v13; // eax std::ostream::sentry *v14; // eax std::ostream::sentry *v15; // eax std::ostream::sentry *v16; // ebx int *v17; // eax std::ostream::sentry *v18; // eax std::ostream::sentry *v19; // eax _DWORD *v20; // eax int v21; // ecx std::ostream::sentry *v22; // eax std::ostream::sentry *v23; // eax std::ostream::sentry *v24; // eax std::ostream::sentry *v25; // edi std::ostream::sentry *v26; // eax int v28; // [esp+1Ch] [ebp-13Ch] int v29; // [esp+20h] [ebp-138h] volatile signed __int32 *v30; // [esp+24h] [ebp-134h] BYREF int v31; // [esp+28h] [ebp-130h] BYREF int v32; // [esp+2Ch] [ebp-12Ch] char v33; // [esp+30h] [ebp-128h] BYREF void *v34; // [esp+40h] [ebp-118h] BYREF volatile signed __int32 *v35; // [esp+44h] [ebp-114h] BYREF int v36; // [esp+58h] [ebp-100h] BYREF int v37; // [esp+5Ch] [ebp-FCh] char v38; // [esp+60h] [ebp-F8h] BYREF char v39[8]; // [esp+70h] [ebp-E8h] BYREF char v40[4]; // [esp+78h] [ebp-E0h] BYREF _DWORD v41[55]; // [esp+7Ch] [ebp-DCh] BYREF v28 = *this; if ( *this ) return 6; if ( this + 9 == std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( this + 8, (int)a2) ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)v39); std::operator<<>((std::ostream::sentry *)v40, "setCssToHead([],undefined,{"); v5 = std::operator<<>((std::ostream::sentry *)v40, "path:"); v6 = std::operator<<>(v5, "\""); WXML::Rewrite::ToStringCode2((int)&v36, a2); v7 = std::operator<<(v6, &v36); std::operator<<>(v7, "\""); std::string::_M_dispose((void **)&v36); std::operator<<>((std::ostream::sentry *)v40, "})"); std::stringbuf::str((int)&v36, v41); std::string::operator=(a3, &v36); std::string::_M_dispose((void **)&v36); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v39); return 1; } else { v32 = 0; v31 = (int)&v33; v33 = 0; if ( *(_DWORD *)(*std::map>::operator[]( this + 8, (int)a2) + 156) && *(_DWORD *)(*(_DWORD *)(*std::map>::operator[]( this + 8, (int)a2) + 156) + 12) != -1 ) { v8 = *std::map>::operator[](this + 8, (int)a2); v9 = *(_DWORD *)(v8 + 156); v10 = *(volatile signed __int32 **)(v8 + 160); v29 = v9; v30 = v10; if ( v10 ) __gnu_cxx::__atomic_add_dispatch(v10 + 1); std::basic_stringstream,std::allocator>::basic_stringstream((int)v39); v11 = std::operator<<>( (std::ostream::sentry *)v40, "Some selectors are not allowed in component wxss, including tag name selectors, ID selectors, and attribute selectors.("); WXML::Rewrite::ToStringCode2((int)&v36, a2); v12 = std::operator<<(v11, &v36); std::operator<<>(v12, (char *)asc_4EBDB4); v13 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(v29 + 20)); std::operator<<>(v13, (char *)asc_4EBDB4); v14 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(v29 + 24)); std::operator<<>(v14, (char *)&asc_4EBDB4[2]); std::string::_M_dispose((void **)&v36); std::stringbuf::str((int)&v34, v41); std::string::operator=(&v31, &v34); std::string::_M_dispose(&v34); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v39); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); } std::basic_stringstream,std::allocator>::basic_stringstream((int)v39); std::operator<<>((std::ostream::sentry *)v40, "setCssToHead(["); if ( *std::map::operator[](this + 32, (int)a2) <= 1u ) { v37 = 0; v36 = (int)&v38; v38 = 0; v20 = std::map>::operator[](this + 8, (int)a2); std::__shared_ptr::__shared_ptr(&v34, v20); WXSS::XCompiler::GenExpr(this, v21, (int)v39, (WXSS::Token *)&v36); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v35); if ( v37 ) WXSS::XCompiler::DealRPX(&v36, (int)v39); } else { v15 = std::operator<<>((std::ostream::sentry *)v40, "[2,"); v16 = std::operator<<>(v15, "\""); v17 = std::map::operator[](this + 38, (int)a2); WXML::Rewrite::ToStringCode2((int)&v36, v17); v18 = std::operator<<(v16, &v36); v19 = std::operator<<>(v18, "\""); std::operator<<>(v19, (char *)&asc_4EBDB4[4]); } std::string::_M_dispose((void **)&v36); std::operator<<>((std::ostream::sentry *)v40, (char *)&asc_4EBDB4[4]); if ( v32 ) { v22 = std::operator<<>((std::ostream::sentry *)v40, ",\""); v23 = std::operator<<(v22, &v31); std::operator<<>(v23, "\""); } else { std::operator<<>((std::ostream::sentry *)v40, ",undefined"); } std::operator<<>((std::ostream::sentry *)v40, ",{"); v24 = std::operator<<>((std::ostream::sentry *)v40, "path:"); v25 = std::operator<<>(v24, "\""); WXML::Rewrite::ToStringCode2((int)&v36, a2); v26 = std::operator<<(v25, &v36); std::operator<<>(v26, "\""); std::string::_M_dispose((void **)&v36); std::operator<<>((std::ostream::sentry *)v40, "}"); std::operator<<>((std::ostream::sentry *)v40, (char *)&asc_4EBDB4[2]); std::stringbuf::str((int)&v36, v41); std::string::operator=(a3, &v36); std::string::_M_dispose((void **)&v36); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v39); std::string::_M_dispose((void **)&v31); } return v28; } // 402A8B: variable 'v21' is possibly undefined // 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 402702: using guessed type char var_E0[4]; // 402702: using guessed type _DWORD var_DC[55]; //----- (00402CAC) -------------------------------------------------------- int __thiscall WXSS::XCompiler::MarkImported(_DWORD *this, int a2) { _DWORD *v3; // esi void *v4; // eax char *v5; // ebx _DWORD *v6; // eax unsigned int v7; // ebx char *v8; // eax void *v9; // eax int v10; // ebx volatile signed __int32 **v11; // ecx char *v12; // eax void (__cdecl *v14)(void *); // [esp+4h] [ebp-74h] void (__cdecl *v15)(void *); // [esp+4h] [ebp-74h] void *v16[6]; // [esp+20h] [ebp-58h] BYREF void *v17[2]; // [esp+38h] [ebp-40h] BYREF void **v18; // [esp+40h] [ebp-38h] void *v19; // [esp+44h] [ebp-34h] int v20; // [esp+48h] [ebp-30h] char *v21; // [esp+4Ch] [ebp-2Ch] void **v22; // [esp+50h] [ebp-28h] void *v23; // [esp+54h] [ebp-24h] int v24; // [esp+58h] [ebp-20h] char *v25; // [esp+5Ch] [ebp-1Ch] v3 = this + 8; if ( this + 9 != std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( this + 8, a2) ) { v17[1] = (void *)8; v17[0] = operator new((struct type_info *)0x20, v14); v4 = operator new((struct type_info *)0x1F8, v15); v19 = v4; v23 = v4; v18 = (void **)v4; v22 = (void **)v4; v5 = (char *)v17[0] + 12; *((_DWORD *)v17[0] + 3) = v4; v21 = v5; v20 = (int)v4 + 504; v25 = v5; v24 = (int)v4 + 504; std::deque::push_back(v17, a2); while ( v18 != v22 ) { std::string::basic_string(v16, (int)v18); if ( v18 == (void **)(v20 - 24) ) { std::string::_M_dispose(v18); operator delete(v19); v9 = (void *)*((_DWORD *)v21 + 1); v21 += 4; v19 = v9; v20 = (int)v9 + 504; v18 = (void **)v9; } else { std::string::_M_dispose(v18); v18 += 6; } if ( *(_DWORD *)(*std::map>::operator[](v3, (int)v16) + 156) && *(_DWORD *)(*(_DWORD *)(*std::map>::operator[]( v3, (int)v16) + 156) + 12) != -1 ) { v10 = *std::map>::operator[](v3, (int)v16); v11 = (volatile signed __int32 **)(*std::map>::operator[]( v3, a2) + 160); *(v11 - 1) = *(volatile signed __int32 **)(v10 + 156); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v11, *(volatile signed __int32 **)(v10 + 160)); } v6 = std::map::operator[](this + 32, (int)v16); v7 = 0; ++*v6; while ( 1 ) { v8 = std::map>::operator[](this + 14, (int)v16); if ( -1431655765 * ((*((_DWORD *)v8 + 1) - *(_DWORD *)v8) >> 3) <= v7 ) break; v12 = std::map>::operator[](this + 14, (int)v16); std::deque::push_back(v17, *(_DWORD *)v12 + 24 * v7++); } std::string::_M_dispose(v16); } std::deque::~deque((int)v17); } return 0; } // 402D20: variable 'v14' is possibly undefined // 402D37: variable 'v15' is possibly undefined //----- (00402F40) -------------------------------------------------------- int __thiscall WXSS::XCompiler::GetCommHead(int *this, _DWORD *a2, _DWORD *a3, char a4, int *a5) { unsigned int i; // edi int result; // eax int j; // eax int v9; // esi void **v10; // esi int insert_unique_pos; // eax _DWORD *v12; // edx int k; // esi int *v14; // eax std::ostream::sentry *v15; // eax std::ostream::sentry *v16; // eax std::ostream::sentry *v17; // eax std::ostream::sentry *v18; // eax int v19; // ecx unsigned int v20; // edi char *v21; // ebx _DWORD *v22; // eax void (__cdecl *v23)(void *); // [esp+4h] [ebp-194h] int v24; // [esp+1Ch] [ebp-17Ch] char *v25; // [esp+20h] [ebp-178h] BYREF int v26; // [esp+24h] [ebp-174h] char v27; // [esp+28h] [ebp-170h] BYREF void *v28[6]; // [esp+38h] [ebp-160h] BYREF char *v29; // [esp+50h] [ebp-148h] BYREF volatile signed __int32 *v30; // [esp+54h] [ebp-144h] BYREF char v31; // [esp+58h] [ebp-140h] BYREF int v32[6]; // [esp+68h] [ebp-130h] BYREF char ArgList[4]; // [esp+80h] [ebp-118h] BYREF int v34; // [esp+84h] [ebp-114h] char v35; // [esp+88h] [ebp-110h] BYREF void *v36[6]; // [esp+98h] [ebp-100h] BYREF char v37[8]; // [esp+B0h] [ebp-E8h] BYREF char v38[4]; // [esp+B8h] [ebp-E0h] BYREF _DWORD v39[55]; // [esp+BCh] [ebp-DCh] BYREF if ( a4 && this + 9 != std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( this + 8, (int)a5) ) { std::vector::push_back(a2, (int)a5); } for ( i = 0; i < -1431655765 * ((a2[1] - *a2) >> 3); ++i ) { result = WXSS::XCompiler::MarkImported(this, 24 * i + *a2); if ( result ) return result; } std::basic_stringstream,std::allocator>::basic_stringstream((int)v37); for ( j = this[11]; ; j = std::_Rb_tree_increment(v24) ) { v24 = j; if ( (int *)j == this + 9 ) break; v9 = j + 16; if ( *std::map::operator[](this + 32, j + 16) > 1u ) { std::string::basic_string(ArgList, v9); std::string::basic_string(v36, v9); v10 = (void **)operator new((struct type_info *)0x40, v23); std::string::basic_string(v10 + 4, ArgList); std::string::basic_string(v10 + 10, v36); insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this + 38, (int)(v10 + 4)); if ( v12 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this + 38, insert_unique_pos, v12, v10); } else { std::string::_M_dispose(v10 + 10); std::string::_M_dispose(v10 + 4); operator delete(v10); } std::string::_M_dispose(v36); std::string::_M_dispose((void **)ArgList); } } for ( k = this[11]; v24 != k; k = std::_Rb_tree_increment(k) ) { if ( *std::map::operator[](this + 32, k + 16) > 1u ) { v14 = std::map::operator[](this + 38, k + 16); WXML::Rewrite::ToStringCode2((int)v32, v14); v15 = std::operator<<>( (std::ostream::sentry *)v38, "if (!__COMMON_STYLESHEETS__.hasOwnProperty('"); v16 = std::operator<<(v15, v32); std::operator<<>(v16, "'))"); v17 = std::operator<<>((std::ostream::sentry *)v38, "__COMMON_STYLESHEETS__['"); v18 = std::operator<<(v17, v32); std::operator<<>(v18, "']=["); v34 = 0; *(_DWORD *)ArgList = &v35; v35 = 0; std::__shared_ptr::__shared_ptr( &v29, (_DWORD *)(k + 40)); WXSS::XCompiler::GenExpr(this, v19, (int)v37, (WXSS::Token *)ArgList); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); if ( v34 ) WXSS::XCompiler::DealRPX((int *)ArgList, (int)v37); std::operator<<>((std::ostream::sentry *)v38, "];"); std::string::_M_dispose((void **)ArgList); std::string::_M_dispose((void **)v32); } } v26 = 0; v25 = &v27; v27 = 0; if ( a4 ) { WXSS::XCompiler::GetPageCss(this, a5, &v25, 1); if ( v26 ) { std::string::basic_string(v28, (int)&v25); std::string::append(v28, "();"); std::string::operator=(&v25, v28); std::string::_M_dispose(v28); } } v31 = 0; v29 = &v31; v30 = 0; WXSS::XCompiler::GetHostRule(this, &v29); if ( v30 ) std::string::operator+=(&v29, "();"); std::stringbuf::str((int)v32, v39); v20 = v32[1] + 3022; std::string::_M_dispose((void **)v32); v21 = (char *)operator new[](v20); std::stringbuf::str((int)ArgList, v39); snprintf_constprop_0( v21, v20, (int)"var BASE_DEVICE_WIDTH = 750;\n" "var isIOS=navigator.userAgent.match(\"iPhone\");\n" "var deviceWidth = window.screen.width || 375;\n" "var deviceDPR = window.devicePixelRatio || 2;\n" "var checkDeviceWidth = window.__checkDeviceWidth__ || function() {\n" "var newDeviceWidth = window.screen.width || 375\n" "var newDeviceDPR = window.devicePixelRatio || 2\n" "var newDeviceHeight = window.screen.height || 375\n" "if (window.screen.orientation && /^landscape/.test(window.screen.orientation.type || '')) newDeviceWidth = newD" "eviceHeight\n" "if (newDeviceWidth !== deviceWidth || newDeviceDPR !== deviceDPR) {\n" "deviceWidth = newDeviceWidth\n" "deviceDPR = newDeviceDPR\n" "}\n" "}\n" "checkDeviceWidth()\n" "var eps = 1e-4;\n" "var transformRPX = window.__transformRpx__ || function(number, newDeviceWidth) {\n" "if ( number === 0 ) return 0;\n" "number = number / BASE_DEVICE_WIDTH * ( newDeviceWidth || deviceWidth );\n" "number = Math.floor(number + eps);\n" "if (number === 0) {\n" "if (deviceDPR === 1 || !isIOS) {\n" "return 1;\n" "} else {\n" "return 0.5;\n" "}\n" "}\n" "return number;\n" "}\n" "window.__rpxRecalculatingFuncs__ = window.__rpxRecalculatingFuncs__ || [];\n" "var __COMMON_STYLESHEETS__ = __COMMON_STYLESHEETS__||{}\n" "%s\n" "var setCssToHead = function(file, _xcInvalid, info) {\n" "var Ca = {};\n" "var css_id;\n" "var info = info || {};\n" "var _C = __COMMON_STYLESHEETS__\n" "function makeup(file, opt) {\n" "var _n = typeof(file) === \"string\";\n" "if ( _n && Ca.hasOwnProperty(file)) return \"\";\n" "if ( _n ) Ca[file] = 1;\n" "var ex = _n ? _C[file] : file;\n" "var res=\"\";\n" "for (var i = ex.length - 1; i >= 0; i--) {\n" "var content = ex[i];\n" "if (typeof(content) === \"object\")\n" "{\n" "var op = content[0];\n" "if ( op == 0 )\n" "res = transformRPX(content[1], opt.deviceWidth) + \"px\" + res;\n" "else if ( op == 1)\n" "res = opt.suffix + res;\n" "else if ( op == 2 )\n" "res = makeup(content[1], opt) + res;\n" "}\n" "else\n" "res = content + res\n" "}\n" "return res;\n" "}\n" "var styleSheetManager = window.__styleSheetManager2__\n" "var rewritor = function(suffix, opt, style){\n" "opt = opt || {};\n" "suffix = suffix || \"\";\n" "opt.suffix = suffix;\n" "if ( opt.allowIllegalSelector != undefined && _xcInvalid != undefined )\n" "{\n" "if ( opt.allowIllegalSelector )\n" "console.warn( \"For developer:\" + _xcInvalid );\n" "else\n" "{\n" "console.error( _xcInvalid );\n" "}\n" "}\n" "Ca={};\n" "css = makeup(file, opt);\n" "if (styleSheetManager) {\n" "var key = (info.path || Math.random()) + ':' + suffix\n" "if (!style) {\n" "styleSheetManager.addItem(key, info.path);\n" "window.__rpxRecalculatingFuncs__.push(function(size){\n" "opt.deviceWidth = size.width;\n" "rewritor(suffix, opt, true);\n" "});\n" "}\n" "styleSheetManager.setCss(key, css);\n" "return;\n" "}\n" "if ( !style )\n" "{\n" "var head = document.head || document.getElementsByTagName('head')[0];\n" "style = document.createElement('style');\n" "style.type = 'text/css';\n" "style.setAttribute( \"wxss:path\", info.path );\n" "head.appendChild(style);\n" "window.__rpxRecalculatingFuncs__.push(function(size){\n" "opt.deviceWidth = size.width;\n" "rewritor(suffix, opt, style);\n" "});\n" "}\n" "if (style.styleSheet) {\n" "style.styleSheet.cssText = css;\n" "} else {\n" "if ( style.childNodes.length == 0 )\n" "style.appendChild(document.createTextNode(css));\n" "else\n" "style.childNodes[0].nodeValue = css;\n" "}\n" "}\n" "return rewritor;\n" "}\n", *(const char **)ArgList); std::string::_M_dispose((void **)ArgList); std::operator+((int)v32, v21, (int)&v29); v22 = std::string::append(v32, (int)&v25); std::string::basic_string(ArgList, v22); std::string::operator=(a3, ArgList); std::string::_M_dispose((void **)ArgList); std::string::_M_dispose((void **)v32); operator delete[](v21); std::string::_M_dispose((void **)&v29); std::string::_M_dispose((void **)&v25); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v37); return 0; } // 403021: variable 'v23' is possibly undefined // 403071: variable 'v12' is possibly undefined // 4031D1: variable 'v19' is possibly undefined // 402F40: using guessed type char var_E0[4]; // 402F40: using guessed type _DWORD var_DC[55]; //----- (00403498) -------------------------------------------------------- void __fastcall std::deque>::~deque(int a1) { int v2; // eax int v3; // edi int *i; // esi int v5; // edx int v6; // edx void **v7; // esi unsigned int v8; // edi void *v9; // eax int v10; // [esp+1Ch] [ebp-6Ch] int v11; // [esp+20h] [ebp-68h] int v12; // [esp+24h] [ebp-64h] int v13; // [esp+28h] [ebp-60h] unsigned int v14; // [esp+2Ch] [ebp-5Ch] int v15[4]; // [esp+30h] [ebp-58h] BYREF int v16[4]; // [esp+40h] [ebp-48h] BYREF char v17[16]; // [esp+50h] [ebp-38h] BYREF char v18[16]; // [esp+60h] [ebp-28h] BYREF qmemcpy(v18, (const void *)(a1 + 24), sizeof(v18)); qmemcpy(v17, (const void *)(a1 + 8), sizeof(v17)); qmemcpy(v16, v17, sizeof(v16)); qmemcpy(v15, v18, sizeof(v15)); v2 = v16[0]; v3 = v15[0]; v11 = v16[2]; v13 = v16[3]; v12 = v15[1]; v14 = v15[3]; for ( i = (int *)(v16[3] + 4); (unsigned int)i < v14; ++i ) { v5 = *i; v10 = v2; std::_Destroy_aux::__destroy *>(v5, v5, v5 + 512); v2 = v10; } if ( v14 == v13 ) { std::_Destroy_aux::__destroy *>(v13, v2, v3); } else { std::_Destroy_aux::__destroy *>(v13, v2, v11); std::_Destroy_aux::__destroy *>(v6, v12, v3); } if ( *(_DWORD *)a1 ) { v7 = *(void ***)(a1 + 20); v8 = *(_DWORD *)(a1 + 36) + 4; while ( v8 > (unsigned int)v7 ) { v9 = *v7++; operator delete(v9); } operator delete(*(void **)a1); } } // 40353D: variable 'v6' is possibly undefined //----- (0040357E) -------------------------------------------------------- int __fastcall WXSS::CSSTreeLib::Parser::~Parser(int a1) { int v2; // eax int v3; // edi int v4; // edx int *i; // esi int v6; // edx int v7; // edx void **v8; // esi unsigned int v9; // edi void *v10; // eax int v12; // [esp+1Ch] [ebp-6Ch] int v13; // [esp+20h] [ebp-68h] int v14; // [esp+24h] [ebp-64h] int v15; // [esp+28h] [ebp-60h] unsigned int v16; // [esp+2Ch] [ebp-5Ch] int v17[4]; // [esp+30h] [ebp-58h] BYREF int v18[4]; // [esp+40h] [ebp-48h] BYREF char v19[16]; // [esp+50h] [ebp-38h] BYREF char v20[16]; // [esp+60h] [ebp-28h] BYREF qmemcpy(v19, (const void *)(a1 + 72), sizeof(v19)); qmemcpy(v20, (const void *)(a1 + 56), sizeof(v20)); qmemcpy(v18, v20, sizeof(v18)); qmemcpy(v17, v19, sizeof(v17)); v2 = v18[0]; v3 = v17[0]; v13 = v18[2]; v15 = v18[3]; v14 = v17[1]; v16 = v17[3]; v4 = v18[3]; for ( i = (int *)(v18[3] + 4); (unsigned int)i < v16; ++i ) { v6 = *i; v12 = v2; std::_Destroy_aux::__destroy *>(v6, v6, v6 + 512); v2 = v12; } if ( v16 == v15 ) { std::_Destroy_aux::__destroy *>(v4, v2, v3); } else { std::_Destroy_aux::__destroy *>(v13, v2, v13); std::_Destroy_aux::__destroy *>(v7, v14, v3); } if ( *(_DWORD *)(a1 + 48) ) { v8 = *(void ***)(a1 + 68); v9 = *(_DWORD *)(a1 + 84) + 4; while ( v9 > (unsigned int)v8 ) { v10 = *v8++; operator delete(v10); } operator delete(*(void **)(a1 + 48)); } std::deque>::~deque(a1 + 8); return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); } // 403623: variable 'v7' is possibly undefined // 40362C: variable 'v4' is possibly undefined //----- (00403675) -------------------------------------------------------- int __cdecl WXSS::LintAndParseCSS( int *a1, char **a2, WXSS::Token *a3, unsigned int *a4, char a5, char a6, char a7, void (__cdecl *a8)(void *), int a9) { int v9; // edi volatile signed __int32 **v10; // ecx char *v11; // eax volatile signed __int32 *v13; // [esp+28h] [ebp-160h] BYREF volatile signed __int32 *v14; // [esp+2Ch] [ebp-15Ch] BYREF void *v15[6]; // [esp+30h] [ebp-158h] BYREF _DWORD v16[22]; // [esp+48h] [ebp-140h] BYREF void *v17; // [esp+A0h] [ebp-E8h] BYREF volatile signed __int32 *v18; // [esp+A4h] [ebp-E4h] BYREF int v19[55]; // [esp+ACh] [ebp-DCh] BYREF WXSS::CSSTreeLib::Parser::Parser(v16); v9 = WXSS::CSSTreeLib::Parser::Parse((int)v16, a8, a2, a1, a4, a9); if ( !v9 ) { v13 = 0; v14 = 0; std::__shared_ptr::__shared_ptr(&v17, v16); std::__shared_ptr::operator=(&v13, v10); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v18); std::string::operator=((unsigned int *)a3, "/*"); std::string::operator+=(a3, "v0.4me_20200724_db"); std::string::operator+=(a3, "*/\n"); if ( a6 ) { if ( (_BYTE)a8 ) v11 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); else v11 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); WXSS::CSSTreeLib::LexicalChecker::Traval((_DWORD **)v11, &v13); } if ( a5 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v17); WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream((int)v13, 0, (int)&v17); std::stringbuf::str((int)v15, v19); std::string::operator+=(a3, (int)v15); std::string::_M_dispose(v15); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v17); } else if ( a7 ) { WXML::Rewrite::ToStringCode2((int)&v17, (int *)a3); std::string::operator+=(a3, (int)&v17); std::string::_M_dispose(&v17); } else { WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode((int)v13, a3, 1u); } std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v14); } WXSS::CSSTreeLib::Parser::~Parser((int)v16); return v9; } // 403709: variable 'v10' is possibly undefined // 403675: using guessed type _DWORD var_140[22]; // 403675: using guessed type int var_DC[55]; //----- (0040388E) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __userpurge WXSS::XCompiler::XCompiler(int a1@, unsigned int a2@, _DWORD *a3, char a4, int a5) { char *v6; // eax int v7; // edx int i; // eax _DWORD *v9; // ecx int v10; // edx int v11; // eax int *v12; // edx char *Literal; // eax char *v14; // eax _DWORD *v15; // edi int insert_unique_pos; // eax _DWORD *v17; // edx int j; // esi int k; // eax int v20; // edi int v21; // esi int v22; // edx char v23; // al unsigned int m; // edi int v25; // edx _DWORD *v26; // eax int *v27; // esi int *v28; // edx int *v29; // ecx char v30; // al int v31; // edi _DWORD *v32; // eax unsigned int ii; // edi char *v34; // eax char *v35; // eax _DWORD *v36; // eax _DWORD *v37; // eax void (__cdecl *v38)(void *); // [esp+0h] [ebp-128h] bool v39; // [esp+1Ch] [ebp-10Ch] int v40; // [esp+20h] [ebp-108h] char *v41; // [esp+24h] [ebp-104h] _DWORD *v42; // [esp+28h] [ebp-100h] _DWORD *v43; // [esp+2Ch] [ebp-FCh] _DWORD *v44; // [esp+30h] [ebp-F8h] int v45; // [esp+30h] [ebp-F8h] int *v46; // [esp+30h] [ebp-F8h] int v47; // [esp+30h] [ebp-F8h] _DWORD *v48; // [esp+34h] [ebp-F4h] int v49; // [esp+34h] [ebp-F4h] int *v50; // [esp+34h] [ebp-F4h] unsigned int n; // [esp+34h] [ebp-F4h] int v52; // [esp+38h] [ebp-F0h] _DWORD *v53; // [esp+3Ch] [ebp-ECh] int v54; // [esp+40h] [ebp-E8h] BYREF volatile signed __int32 *v55; // [esp+44h] [ebp-E4h] BYREF volatile signed __int32 *v56; // [esp+48h] [ebp-E0h] BYREF volatile signed __int32 *v57; // [esp+4Ch] [ebp-DCh] BYREF int *v58; // [esp+50h] [ebp-D8h] BYREF int *v59; // [esp+54h] [ebp-D4h] int v60; // [esp+58h] [ebp-D0h] BYREF void *v61; // [esp+68h] [ebp-C0h] BYREF int v62; // [esp+6Ch] [ebp-BCh] BYREF void *v63; // [esp+70h] [ebp-B8h] int *v64; // [esp+74h] [ebp-B4h] int *v65; // [esp+78h] [ebp-B0h] int v66; // [esp+7Ch] [ebp-ACh] void **v67; // [esp+80h] [ebp-A8h] BYREF int v68; // [esp+84h] [ebp-A4h] BYREF void *v69[3]; // [esp+88h] [ebp-A0h] BYREF int v70; // [esp+94h] [ebp-94h] int v71[6]; // [esp+98h] [ebp-90h] BYREF int v72; // [esp+B0h] [ebp-78h] BYREF volatile signed __int32 *v73; // [esp+B4h] [ebp-74h] BYREF void *v74[28]; // [esp+B8h] [ebp-70h] BYREF v53 = (_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = a1 + 16; *(_DWORD *)(a1 + 44) = a1 + 36; *(_DWORD *)(a1 + 48) = a1 + 36; v43 = (_DWORD *)(a1 + 56); v40 = a1 + 60; *(_DWORD *)(a1 + 68) = a1 + 60; *(_DWORD *)(a1 + 72) = a1 + 60; v42 = (_DWORD *)(a1 + 80); *(_DWORD *)(a1 + 92) = a1 + 84; *(_DWORD *)(a1 + 96) = a1 + 84; *(_DWORD *)(a1 + 116) = a1 + 108; *(_DWORD *)(a1 + 120) = a1 + 108; *(_DWORD *)(a1 + 12) = 0; *(_BYTE *)(a1 + 16) = 0; *(_DWORD *)(a1 + 36) = 0; *(_DWORD *)(a1 + 40) = 0; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 60) = 0; *(_DWORD *)(a1 + 64) = 0; *(_DWORD *)(a1 + 76) = 0; *(_DWORD *)(a1 + 84) = 0; *(_DWORD *)(a1 + 88) = 0; *(_DWORD *)(a1 + 100) = 0; *(_DWORD *)(a1 + 108) = 0; *(_DWORD *)(a1 + 112) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 132) = 0; *(_DWORD *)(a1 + 140) = a1 + 132; *(_DWORD *)(a1 + 144) = a1 + 132; *(_DWORD *)(a1 + 136) = 0; *(_DWORD *)(a1 + 148) = 0; *(_DWORD *)(a1 + 156) = 0; *(_DWORD *)(a1 + 160) = 0; *(_DWORD *)(a1 + 164) = a1 + 156; *(_DWORD *)(a1 + 168) = a1 + 156; *(_DWORD *)(a1 + 172) = 0; if ( a4 ) v6 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); else v6 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); v41 = v6; *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 4) = 0; for ( i = a3[3]; ; i = std::_Rb_tree_increment(v52) ) { v52 = i; v44 = a3 + 1; if ( a3 + 1 == (_DWORD *)i ) break; WXSS::CSSTreeLib::Parser::Parser(v74); v59 = 0; v58 = &v60; LOBYTE(v60) = 0; v48 = (_DWORD *)(v52 + 16); a2 = WXSS::CSSTreeLib::Parser::Parse( (int)v74, (void (__cdecl *)(void *))a2, (char **)(v52 + 40), (int *)(v52 + 16), (unsigned int *)&v58, a5); if ( a2 ) { ++*(_DWORD *)(a1 + 4); std::string::operator+=(v53, (int)&v58); std::string::operator+=(v53, "\n"); *(_DWORD *)a1 = a2; } else { std::__shared_ptr::__shared_ptr(&v54, v74); WXSS::CSSTreeLib::LexicalChecker::Traval((_DWORD **)v41, v9); while ( 1 ) { v10 = *(_DWORD *)(v54 + 120); if ( (*(_DWORD *)(v54 + 124) - v10) >> 3 <= a2 ) break; if ( std::operator==(*(_DWORD *)(v10 + 8 * a2), "DIRECTIVE") ) { v11 = *(_DWORD *)(*(_DWORD *)(v54 + 120) + 8 * a2); v12 = *(int **)(v11 + 120); if ( (unsigned int)(*(_DWORD *)(v11 + 124) - (_DWORD)v12) > 0xF && std::operator==(*v12, "@import") ) { Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v54 + 120) + 8 * a2) + 120) + 8) + 24)); std::string::basic_string((void **)v71, Literal); WXSS::RemoveQuote(&v61, (char **)v71); std::string::_M_dispose((void **)v71); LOBYTE(v69[0]) = 0; v67 = v69; v68 = 0; std::string::substr((void **)v71, &v61, 0, 1u); v39 = std::operator==((int)v71, "/"); std::string::_M_dispose((void **)v71); if ( v39 ) { std::string::basic_string((void **)v71, "."); std::string::operator+=(v71, (int)&v61); if ( v44 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a3, (int)v71) ) std::string::_M_assign((int)&v67, (int)v71); std::string::operator+=(v71, ".wxss"); if ( v44 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a3, (int)v71) ) std::string::_M_assign((int)&v67, (int)v71); std::string::_M_dispose((void **)v71); } if ( !v68 ) MMBizWxaAppComm::PathCombine(v48, &v61, (unsigned int *)&v67); if ( v44 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a3, (int)&v67) ) std::string::operator+=(&v67, ".wxss"); if ( v44 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a3, (int)&v67) ) { std::string::operator+=(v53, "path `"); std::string::operator+=(v53, (int)&v61); std::string::operator+=(v53, "` not found from `"); std::string::operator+=(v53, (int)v48); std::string::operator+=(v53, "`.\n"); ++*(_DWORD *)(a1 + 4); *(_DWORD *)a1 = 3; } else { v14 = std::map>::operator[](v43, (int)v48); std::vector::push_back(v14, (int)&v67); v15 = operator new((struct type_info *)0x18, v38); std::string::basic_string(v15, (int)&v67); zcc::shared_ptr::shared_ptr(v15); std::__shared_ptr::operator=( (volatile signed __int32 **)(*(_DWORD *)(*(_DWORD *)(v54 + 120) + 8 * a2) + 140), &v56); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v57); } std::string::_M_dispose((void **)&v67); std::string::_M_dispose(&v61); } } ++a2; } std::string::basic_string(v71, (int)v48); std::__shared_ptr::__shared_ptr(&v72, &v54); a2 = (unsigned int)operator new((struct type_info *)0x30, v38); std::string::basic_string((_DWORD *)(a2 + 16), v71); std::__shared_ptr::__shared_ptr( (_DWORD *)(a2 + 40), &v72); insert_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( (_DWORD *)(a1 + 32), a2 + 16); if ( v17 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( (_DWORD *)(a1 + 32), insert_unique_pos, v17, (_DWORD *)a2); } else { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a2 + 44)); std::string::_M_dispose((void **)(a2 + 16)); operator delete((void *)a2); } std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v73); std::string::_M_dispose((void **)v71); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v55); } std::string::_M_dispose((void **)&v58); WXSS::CSSTreeLib::Parser::~Parser((int)v74); } if ( !*(_DWORD *)a1 ) { v62 = 0; v64 = &v62; v65 = &v62; v63 = 0; v66 = 0; for ( j = a3[3]; j != v52; j = std::_Rb_tree_increment(j) ) *std::map::operator[](&v61, j + 16) = 0; for ( k = a3[3]; ; k = std::_Rb_tree_increment(v49) ) { v49 = k; if ( k == v52 ) break; v20 = *(_DWORD *)(a1 + 64); v21 = v40; v22 = k + 16; while ( v20 ) { v45 = v22; v23 = std::operator<(v20 + 16, v22); v22 = v45; if ( v23 ) { v20 = *(_DWORD *)(v20 + 12); } else { v21 = v20; v20 = *(_DWORD *)(v20 + 8); } } if ( v40 != v21 && !(unsigned __int8)std::operator<(v22, v21 + 16) ) { for ( m = 0; ; ++m ) { v25 = *(_DWORD *)(v21 + 40); if ( -1431655765 * ((*(_DWORD *)(v21 + 44) - v25) >> 3) <= m ) break; v26 = std::map::operator[](&v61, 24 * m + v25); ++*v26; } } } v68 = 0; v69[0] = 0; v69[1] = &v68; v69[2] = &v68; v70 = 0; while ( 1 ) { v58 = 0; v27 = v64; v59 = 0; v60 = 0; while ( v27 != &v62 ) { if ( !v27[10] ) { v28 = (int *)v69[0]; v29 = &v68; while ( v28 ) { v46 = v29; v50 = v28; v30 = std::operator<((int)(v28 + 4), (int)(v27 + 4)); v29 = v46; if ( v30 ) { v28 = (int *)v50[3]; } else { v29 = v50; v28 = (int *)v50[2]; } } if ( v29 == &v68 || (unsigned __int8)std::operator<((int)(v27 + 4), (int)(v29 + 4)) ) { std::vector::push_back(&v58, (int)(v27 + 4)); std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( &v67, (int)(v27 + 4)); } } v27 = (int *)std::_Rb_tree_increment((int)v27); } if ( v59 == v58 ) break; for ( n = 0; -1431655765 * (((char *)v59 - (char *)v58) >> 3) > n; ++n ) { std::string::basic_string(v71, (int)&v58[6 * n]); v31 = 0; if ( (_DWORD *)v52 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a3, (int)v71) ) v31 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a3, (int)v71)[11]; v32 = std::map::operator[](v42, (int)v71); *v32 += v31; for ( ii = 0; ; ++ii ) { v34 = std::map>::operator[](v43, (int)v71); if ( -1431655765 * ((*((_DWORD *)v34 + 1) - *(_DWORD *)v34) >> 3) <= ii ) break; v35 = std::map>::operator[](v43, (int)v71); std::string::basic_string(v74, *(_DWORD *)v35 + 24 * ii); v36 = std::map::operator[](&v61, (int)v74); --*v36; v47 = *std::map::operator[](v42, (int)v71); v37 = std::map::operator[](v42, (int)v74); *v37 += v47; std::string::_M_dispose(v74); } std::string::_M_dispose((void **)v71); } std::vector::~vector((void ***)&v58, (int)v58); } if ( a3[5] != v70 ) { std::string::operator+=( v53, "I don't know what will happen if a snake eats its tail, but a file can not import itself."); ++*(_DWORD *)(a1 + 4); *(_DWORD *)a1 = 4; } std::vector::~vector((void ***)&v58, v7); std::_Rb_tree,std::less,std::allocator>::_M_erase((void **)v69[0]); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase((void **)v63); } } // 404367: positive sp value 4 has been found // 403AA4: variable 'v9' is possibly undefined // 403D72: variable 'v38' is possibly undefined // 403E57: variable 'v17' is possibly undefined // 404284: variable 'v7' is possibly undefined // 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 4D1A50: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); //----- (004043EC) -------------------------------------------------------- void *__cdecl WXSS::LintAndParseCSSList( _DWORD *a1, int a2, unsigned int *a3, int a4, int a5, unsigned int a6, char a7, char a8, int a9) { void *WellFormattedJSCompiled; // eax void *v11; // [esp+1Ch] [ebp-CCh] void *v12[2]; // [esp+20h] [ebp-C8h] BYREF char v13[192]; // [esp+28h] [ebp-C0h] BYREF WXSS::XCompiler::XCompiler((int)v12, a6, a1, a7, a9); std::string::_M_assign(a4, (int)v13); WellFormattedJSCompiled = v12[0]; if ( !v12[0] ) { std::string::operator=(a3, "/*"); std::string::operator+=(a3, "v0.4me_20200724_db"); std::string::operator+=(a3, "*/\n"); if ( a8 ) { WellFormattedJSCompiled = (void *)WXSS::XCompiler::ShowTree(v12, a3); } else if ( (_BYTE)a6 ) { WellFormattedJSCompiled = (void *)WXSS::XCompiler::GetWellFormattedJSCompiled((int *)v12, a2, a3); } else { WellFormattedJSCompiled = (void *)WXSS::XCompiler::GetCompiled((int *)v12, a2, (WXSS::Token *)a3); } } v11 = WellFormattedJSCompiled; WXSS::XCompiler::~XCompiler(v12); return v11; } // 4043EC: using guessed type char var_C0[192]; //----- (004044DC) -------------------------------------------------------- void *__usercall WXSS::NewLintAndParseCSSList@( unsigned int a1@, _DWORD *a2, int *a3, unsigned int *a4, int a5, int a6, char a7, int a8, int *a9) { void *CommHead; // ebx unsigned int *v10; // eax _DWORD *v11; // eax int v12; // edx int PageCss; // eax _DWORD *v14; // eax char *v15; // eax unsigned int v16; // edx unsigned int v17; // edx _DWORD *v18; // eax _DWORD *v19; // eax unsigned int i; // [esp+1Ch] [ebp-17Ch] void *v22; // [esp+1Ch] [ebp-17Ch] void *v23[2]; // [esp+28h] [ebp-170h] BYREF char v24; // [esp+30h] [ebp-168h] BYREF void *v25[2]; // [esp+40h] [ebp-158h] BYREF char v26; // [esp+48h] [ebp-150h] BYREF void *v27[6]; // [esp+58h] [ebp-140h] BYREF void *v28[2]; // [esp+70h] [ebp-128h] BYREF unsigned int v29; // [esp+78h] [ebp-120h] BYREF void *v30[2]; // [esp+88h] [ebp-110h] BYREF unsigned int v31; // [esp+90h] [ebp-108h] BYREF void *v32[6]; // [esp+A0h] [ebp-F8h] BYREF void *v33[6]; // [esp+B8h] [ebp-E0h] BYREF void *v34[2]; // [esp+D0h] [ebp-C8h] BYREF char v35[192]; // [esp+D8h] [ebp-C0h] BYREF WXSS::XCompiler::XCompiler((int)v34, a1, a2, a7, a8); std::string::_M_assign(a5, (int)v35); CommHead = v34[0]; if ( !v34[0] ) { v23[0] = &v24; v23[1] = 0; v24 = 0; CommHead = (void *)WXSS::XCompiler::GetCommHead((int *)v34, a3, v23, 1, a9); if ( !CommHead ) { std::string::operator=(a4, "version=v0.4me_20200724_db="); WXML::Rewrite::ToStringCode2((int)v30, (int *)v23); v10 = std::string::insert((unsigned int *)v30, 0, "comm="); std::string::basic_string(v32, v10); v11 = std::string::append(v32, "="); std::string::basic_string(v33, v11); std::string::operator+=(a4, (int)v33); std::string::_M_dispose(v33); std::string::_M_dispose(v32); std::string::_M_dispose(v30); for ( i = 0; ; ++i ) { v12 = *a3; if ( -1431655765 * ((a3[1] - *a3) >> 3) <= i ) break; v25[0] = &v26; v26 = 0; v25[1] = 0; PageCss = WXSS::XCompiler::GetPageCss((int *)v34, (int *)(24 * i + v12), v25, 2); if ( PageCss ) { v22 = (void *)PageCss; std::string::_M_dispose(v25); CommHead = v22; break; } WXML::Rewrite::ToStringCode2((int)v30, (int *)v25); std::operator+((int)v27, (char *)&byte_4EAF84, *a3 + 24 * i); v14 = std::string::append(v27, "="); std::string::basic_string(v28, v14); v15 = (char *)v28[1] + (unsigned int)v30[1]; v16 = 15; if ( v28[0] != &v29 ) v16 = v29; if ( (unsigned int)v15 <= v16 ) goto LABEL_14; v17 = 15; if ( v30[0] != &v31 ) v17 = v31; if ( (unsigned int)v15 > v17 ) LABEL_14: v18 = std::string::append(v28, (int)v30); else v18 = std::string::insert((unsigned int *)v30, 0, (int)v28); std::string::basic_string(v32, v18); v19 = std::string::append(v32, "="); std::string::basic_string(v33, v19); std::string::operator+=(a4, (int)v33); std::string::_M_dispose(v33); std::string::_M_dispose(v32); std::string::_M_dispose(v28); std::string::_M_dispose(v27); std::string::_M_dispose(v30); std::string::_M_dispose(v25); } } std::string::_M_dispose(v23); } WXSS::XCompiler::~XCompiler(v34); return CommHead; } // 4044DC: using guessed type char var_C0[192]; //----- (004048B8) -------------------------------------------------------- void __usercall std::_Vector_base::_M_deallocate(void *a1@) { if ( a1 ) operator delete(a1); } // 4048B8: could not find valid save-restore pair for ebp //----- (004048CD) -------------------------------------------------------- _DWORD *__usercall std::__relocate_a_1>@( void **a1@, void **a2@, _DWORD *a3@) { _DWORD *v4; // eax void **i; // ebx void **v7; // ecx _DWORD *v9; // [esp+18h] [ebp-20h] v4 = a3; for ( i = a1; i != a2; i += 6 ) { v9 = v4; std::string::basic_string(v4, i); v7 = i; std::string::_M_dispose(v7); v4 = v9 + 6; } return &a3[6 * ((178956971 * ((unsigned int)((char *)i - (char *)a1) >> 3)) & 0x1FFFFFFF)]; } //----- (00404926) -------------------------------------------------------- void __fastcall std::vector::~vector(void ***a1) { void **v2; // edi void **i; // esi void **v4; // ecx v2 = a1[1]; for ( i = *a1; v2 != i; i += 6 ) { v4 = i; std::string::_M_dispose(v4); } std::_Vector_base::_M_deallocate(*a1); } //----- (00404954) -------------------------------------------------------- void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, void ***a2) { int v2; // eax int i; // ebx int v4; // ebx void *v5[12]; // [esp+18h] [ebp-30h] BYREF v2 = -1; for ( i = 0; a1[1] > i; ++i ) { if ( *(_BYTE *)(*a1 + i) == 47 ) { if ( i - v2 > 1 ) { std::string::substr(v5, a1, v2 + 1, i - v2 - 1); std::vector::emplace_back(a2, v5); std::string::_M_dispose(v5); } v2 = i; } } v4 = i - v2; if ( v4 > 1 ) { std::string::substr(v5, a1, v2 + 1, v4 - 1); std::vector::emplace_back(a2, v5); std::string::_M_dispose(v5); } } //----- (004049FE) -------------------------------------------------------- int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int *a3) { bool v3; // zf int v4; // eax int v5; // ebx void **v6; // ebx unsigned int j; // ebx unsigned int i; // [esp+1Ch] [ebp-4Ch] void **v10; // [esp+20h] [ebp-48h] BYREF void **v11; // [esp+24h] [ebp-44h] void **v12; // [esp+28h] [ebp-40h] void **v13; // [esp+2Ch] [ebp-3Ch] BYREF int v14; // [esp+30h] [ebp-38h] int v15; // [esp+34h] [ebp-34h] void *v16[2]; // [esp+38h] [ebp-30h] BYREF _BYTE v17[40]; // [esp+40h] [ebp-28h] BYREF v10 = 0; v11 = 0; v3 = a2[1] == 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; if ( v3 || *(_BYTE *)*a2 != 47 ) { MMBizWxaAppComm::SplitBySlash(a1, &v10); v4 = a1[1]; if ( v4 ) { if ( *(_BYTE *)(*a1 + v4 - 1) != 47 ) { v11 -= 6; std::string::_M_dispose(v11); } } } MMBizWxaAppComm::SplitBySlash(a2, &v13); for ( i = 0; i < -1431655765 * ((v14 - (int)v13) >> 3); ++i ) { v5 = 6 * i; if ( !std::string::compare((int)&v13[6 * i], "..") ) { if ( v10 != v11 ) { v11 -= 6; std::string::_M_dispose(v11); } } else if ( std::string::compare((int)&v13[v5], ".") ) { v6 = &v13[v5]; if ( v11 == v12 ) { std::vector::_M_realloc_insert(v11, v6); } else { std::string::basic_string(v11, (int)v6); v11 += 6; } } } if ( a1[1] && *(_BYTE *)*a1 == 47 || a2[1] && *(_BYTE *)*a2 == 47 ) std::string::operator=(a3, "/"); else std::string::operator=(a3, byte_4EBF05); for ( j = 0; j < -1431655765 * (((char *)v11 - (char *)v10) >> 3); ++j ) { if ( j ) { v16[0] = v17; std::string::_S_copy_chars(v17, "/", (size_t)""); v16[1] = (void *)1; *((_BYTE *)v16[0] + 1) = 0; std::string::operator+=(a3, (int)v16); std::string::_M_dispose(v16); } std::string::operator+=(a3, (int)&v10[6 * j]); } std::vector::~vector(&v13); std::vector::~vector(&v10); return 0; } // 4B5908: using guessed type _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); // 4049FE: using guessed type _BYTE var_28[40]; //----- (00404BF8) -------------------------------------------------------- int __cdecl MMBizWxaAppComm::PathCombine(int a1, _DWORD *a2, _DWORD *a3) { *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; MMBizWxaAppComm::PathCombine(a2, a3, (unsigned int *)a1); return a1; } //----- (00404C44) -------------------------------------------------------- void __fastcall std::vector>::~vector(void **a1) { char *v2; // edi char *i; // esi void **v4; // ecx v2 = (char *)a1[1]; for ( i = (char *)*a1; v2 != i; i += 28 ) { v4 = (void **)(i + 4); std::string::_M_dispose(v4); } if ( *a1 ) operator delete(*a1); } //----- (00404C7B) -------------------------------------------------------- int __cdecl WXML::RPX::accept(WXML::RPX *this, int (*a2)[266], bool *a3, int *a4) { int v4; // eax int i; // edx int v7; // esi int result; // eax v4 = 0; for ( i = *(_DWORD *)a3; ; --i ) { v7 = v4; if ( i <= 0 ) break; v4 = *((_DWORD *)this + 266 * v4 + *(unsigned __int8 *)a4); if ( v4 == -1 ) break; a4 = (int *)((char *)a4 + 1); } result = -1; if ( *((_BYTE *)*a2 + v7) ) { *(_DWORD *)a3 = i; return 0; } return result; } //----- (00404CBE) -------------------------------------------------------- int __cdecl WXML::RPX::acceptID(WXML::RPX *this, bool *a2) { int v2; // eax if ( !WXML::RPX::acceptID(char const*,int &)::inited ) { memset(&WXML::RPX::acceptID(char const*,int &)::nextPos, 255, 0x850u); v2 = 0; dword_53EF9C = 1; dword_53F3C4 = 1; do { dword_53EFA4[v2] = 1; dword_53EF24[v2] = 1; dword_53F3CC[v2] = 1; dword_53F34C[v2++] = 1; } while ( v2 != 26 ); dword_53F308 = 1; dword_53F30C = 1; dword_53F310 = 1; dword_53F314 = 1; dword_53F318 = 1; dword_53F31C = 1; dword_53F320 = 1; dword_53F324 = 1; dword_53F328 = 1; dword_53F32C = 1; WXML::RPX::acceptID(char const*,int &)::inited = 1; } return WXML::RPX::accept( (WXML::RPX *)&WXML::RPX::acceptID(char const*,int &)::nextPos, (int (*)[266])WXML::RPX::acceptID(char const*,int &)::canAccept, a2, (int *)this); } // 53EF24: using guessed type int dword_53EF24[30]; // 53EF9C: using guessed type int dword_53EF9C; // 53EFA4: using guessed type int dword_53EFA4[217]; // 53F308: using guessed type int dword_53F308; // 53F30C: using guessed type int dword_53F30C; // 53F310: using guessed type int dword_53F310; // 53F314: using guessed type int dword_53F314; // 53F318: using guessed type int dword_53F318; // 53F31C: using guessed type int dword_53F31C; // 53F320: using guessed type int dword_53F320; // 53F324: using guessed type int dword_53F324; // 53F328: using guessed type int dword_53F328; // 53F32C: using guessed type int dword_53F32C; // 53F34C: using guessed type int dword_53F34C[30]; // 53F3C4: using guessed type int dword_53F3C4; // 53F3CC: using guessed type int dword_53F3CC[169]; // 53F670: using guessed type char WXML::RPX::acceptID(char const*,int &)::inited; //----- (00404DBD) -------------------------------------------------------- int __cdecl WXML::RPX::acceptStr(WXML::RPX *this, bool *a2) { int i; // eax if ( !WXML::RPX::acceptStr(char const*,int &)::inited ) { memset(&WXML::RPX::acceptStr(char const*,int &)::nextPos, 255, 0x18F0u); for ( i = 0; i != 256; ++i ) { dword_53D948[i] = 1; dword_53DD70[i] = 2; dword_53E198[i] = 1; dword_53E5C0[i] = 2; } dword_53D5A8 = 1; dword_53D5BC = 2; dword_53DAB8 = 3; dword_53DEE0 = 4; dword_53D9D0 = 5; dword_53DE0C = 5; WXML::RPX::acceptStr(char const*,int &)::inited = 1; } return WXML::RPX::accept( (WXML::RPX *)&WXML::RPX::acceptStr(char const*,int &)::nextPos, (int (*)[266])WXML::RPX::acceptStr(char const*,int &)::canAccept, a2, (int *)this); } // 53D5A8: using guessed type int dword_53D5A8; // 53D5BC: using guessed type int dword_53D5BC; // 53D948: using guessed type int dword_53D948[34]; // 53D9D0: using guessed type int dword_53D9D0; // 53DAB8: using guessed type int dword_53DAB8; // 53DD70: using guessed type int dword_53DD70[39]; // 53DE0C: using guessed type int dword_53DE0C; // 53DEE0: using guessed type int dword_53DEE0; // 53E198: using guessed type int dword_53E198[266]; // 53E5C0: using guessed type int dword_53E5C0[532]; // 53EE10: using guessed type char WXML::RPX::acceptStr(char const*,int &)::inited; //----- (00404E82) -------------------------------------------------------- int __cdecl WXML::RPX::acceptNum(WXML::RPX *this, bool *a2) { int v2; // eax if ( !WXML::RPX::acceptNum(char const*,int &)::inited ) { memset(&WXML::RPX::acceptNum(char const*,int &)::nextPos, 255, 0x14C8u); v2 = 0; dword_53C0EC = 1; dword_53C0F4 = 1; dword_53C0F8 = 3; dword_53C520 = 3; dword_53C948 = 4; do { dword_53C100[v2] = 2; dword_53C528[v2] = 2; dword_53C950[v2] = 2; dword_53CD78[v2] = 4; dword_53D1A0[v2++] = 4; } while ( v2 != 10 ); WXML::RPX::acceptNum(char const*,int &)::inited = 1; } return WXML::RPX::accept( (WXML::RPX *)&WXML::RPX::acceptNum(char const*,int &)::nextPos, (int (*)[266])WXML::RPX::acceptNum(char const*,int &)::canAccept, a2, (int *)this); } // 53C0EC: using guessed type int dword_53C0EC; // 53C0F4: using guessed type int dword_53C0F4; // 53C0F8: using guessed type int dword_53C0F8; // 53C100: using guessed type int dword_53C100[264]; // 53C520: using guessed type int dword_53C520; // 53C528: using guessed type int dword_53C528[264]; // 53C948: using guessed type int dword_53C948; // 53C950: using guessed type int dword_53C950[266]; // 53CD78: using guessed type int dword_53CD78[266]; // 53D1A0: using guessed type int dword_53D1A0[218]; // 53D508: using guessed type char WXML::RPX::acceptNum(char const*,int &)::inited; //----- (00404F46) -------------------------------------------------------- int __cdecl WXML::RPX::acceptSymbol(WXML::RPX *this, char *a2, int *a3) { WXML::RPX *v3; // ebx int v4; // edi int v5; // esi v3 = this; v4 = *(_DWORD *)a2; v5 = *(_DWORD *)a2 - 1; *(_DWORD *)a2 = v5; switch ( *((_BYTE *)this + 1) ) { case '(': *a3 = 3; break; case ')': *a3 = 4; break; case '+': *a3 = 1; break; case ',': *a3 = 6; break; case '-': *a3 = 2; break; case '.': *a3 = 5; break; default: *(_DWORD *)a2 = v4; if ( *(_BYTE *)this == 32 || *(_BYTE *)this == 9 ) { while ( *(int *)a2 > 0 && (*(_BYTE *)v3 == 32 || *(_BYTE *)v3 == 9) ) { v3 = (WXML::RPX *)((char *)v3 + 1); --*(_DWORD *)a2; } *a3 = 7; } else { *(_DWORD *)a2 = v5; *a3 = 0; } break; } return 0; } //----- (00404FDE) -------------------------------------------------------- void __cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3) { int i; // ebx int v4; // eax unsigned int v5; // ecx void *v6; // eax for ( i = 0; i < a2; ++i ) { v4 = *(char *)(a1 + i); if ( (_BYTE)v4 == 39 ) { std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x27"); continue; } if ( (char)v4 > 39 ) { if ( (_BYTE)v4 == 62 ) { std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3e"); continue; } if ( (char)v4 <= 62 ) { if ( (_BYTE)v4 == 60 ) { std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3c"); continue; } if ( (_BYTE)v4 == 61 ) { std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3d"); continue; } LABEL_32: std::operator<<>((std::ostream::sentry *)(a3 + 8), *(_BYTE *)(a1 + i)); continue; } if ( (_BYTE)v4 != 92 ) goto LABEL_32; LOBYTE(v4) = *(_BYTE *)(a1 + i + 1); v5 = v4 - 92; if ( (unsigned __int8)(v4 - 92) <= 0x18u ) { v6 = &unk_1440001; if ( _bittest((const int *)&v6, v5) ) goto LABEL_30; } else if ( (_BYTE)v4 == 39 || (_BYTE)v4 == 34 ) { LABEL_30: std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\"); continue; } std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x5c"); } else { if ( (_BYTE)v4 != 34 ) { if ( (char)v4 > 34 ) { if ( (_BYTE)v4 == 38 ) { std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x26"); continue; } } else { if ( (_BYTE)v4 == 10 ) { std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\n"); continue; } if ( (_BYTE)v4 == 13 ) { std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\r"); continue; } } goto LABEL_32; } std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x22"); } } } //----- (004050D7) -------------------------------------------------------- void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2) { WXML::Rewrite::ToStringCode(*a1, a1[1], a2); } //----- (004050FA) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int a1, int a2, int a3) { int v3; // ebx char v4; // al char v6[8]; // [esp+10h] [ebp-D8h] BYREF char v7[4]; // [esp+18h] [ebp-D0h] BYREF int v8[50]; // [esp+1Ch] [ebp-CCh] BYREF v3 = 0; std::basic_stringstream,std::allocator>::basic_stringstream((int)v6); while ( v3 < a3 ) { v4 = *(_BYTE *)(a2 + v3); if ( v4 == 61 ) { std::operator<<>((std::ostream::sentry *)v7, "\\x3d"); } else { if ( v4 > 61 ) { if ( v4 == 62 ) { std::operator<<>((std::ostream::sentry *)v7, "\\x3e"); goto LABEL_11; } } else { if ( v4 == 38 ) { std::operator<<>((std::ostream::sentry *)v7, "\\x26"); goto LABEL_11; } if ( v4 == 60 ) { std::operator<<>((std::ostream::sentry *)v7, "\\x3c"); goto LABEL_11; } } std::operator<<>((std::ostream::sentry *)v7, *(_BYTE *)(a2 + v3)); } LABEL_11: ++v3; } std::stringbuf::str(a1, v8); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v6); return a1; } // 4050FA: using guessed type char var_D0[4]; // 4050FA: using guessed type int var_CC[50]; //----- (004051AE) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2) { WXML::Rewrite::ToStringCode3[abi:cxx11](a1, *a2, a2[1]); return a1; } //----- (004051D4) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int a1, int a2, int a3) { int v3; // ebx char v4; // al char v6[8]; // [esp+10h] [ebp-D8h] BYREF char v7[4]; // [esp+18h] [ebp-D0h] BYREF int v8[50]; // [esp+1Ch] [ebp-CCh] BYREF v3 = 0; std::basic_stringstream,std::allocator>::basic_stringstream((int)v6); while ( v3 < a3 ) { v4 = *(_BYTE *)(a2 + v3); if ( v4 == 39 ) { std::operator<<>((std::ostream::sentry *)v7, "\\x27"); goto LABEL_19; } if ( v4 > 39 ) { if ( v4 == 62 ) { std::operator<<>((std::ostream::sentry *)v7, "\\x3e"); goto LABEL_19; } if ( v4 > 62 ) { if ( v4 == 92 ) { std::operator<<>((std::ostream::sentry *)v7, "\\\\"); goto LABEL_19; } } else { if ( v4 == 60 ) { std::operator<<>((std::ostream::sentry *)v7, "\\x3c"); goto LABEL_19; } if ( v4 == 61 ) { std::operator<<>((std::ostream::sentry *)v7, "\\x3d"); goto LABEL_19; } } } else { if ( v4 == 34 ) { std::operator<<>((std::ostream::sentry *)v7, "\\x22"); goto LABEL_19; } if ( v4 > 34 ) { if ( v4 == 38 ) { std::operator<<>((std::ostream::sentry *)v7, "\\x26"); goto LABEL_19; } } else { if ( v4 == 10 ) { std::operator<<>((std::ostream::sentry *)v7, "\\n"); goto LABEL_19; } if ( v4 == 13 ) { std::operator<<>((std::ostream::sentry *)v7, "\\r"); goto LABEL_19; } } } std::operator<<>((std::ostream::sentry *)v7, *(_BYTE *)(a2 + v3)); LABEL_19: ++v3; } std::stringbuf::str(a1, v8); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v6); return a1; } // 4051D4: using guessed type char var_D0[4]; // 4051D4: using guessed type int var_CC[50]; //----- (004052D6) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2) { WXML::Rewrite::ToStringCode2[abi:cxx11](a1, *a2, a2[1]); return a1; } //----- (004052FC) -------------------------------------------------------- void __cdecl WXML::Rewrite::ToStringCode(int *a1, _DWORD *a2) { void *v2[6]; // [esp+18h] [ebp-F0h] BYREF char v3[12]; // [esp+30h] [ebp-D8h] BYREF int v4[51]; // [esp+3Ch] [ebp-CCh] BYREF std::basic_stringstream,std::allocator>::basic_stringstream((int)v3); WXML::Rewrite::ToStringCode(*a1, a1[1], (int)v3); std::stringbuf::str((int)v2, v4); std::string::operator=(a2, v2); std::string::_M_dispose(v2); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v3); } // 4052FC: using guessed type int var_CC[51]; //----- (00405375) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode(int a1, int *a2) { *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; WXML::Rewrite::ToStringCode(a2, (_DWORD *)a1); return a1; } //----- (004053B9) -------------------------------------------------------- int __cdecl WXML::Rewrite::GetToken(int a1, int a2) { int result; // eax WXML::RPX *v3; // ebx int i; // esi int v5; // eax int v6; // edx int v7; // edx int v8; // edx int v9; // ecx _DWORD *v10; // ecx int v11; // [esp+8h] [ebp-70h] int v12; // [esp+1Ch] [ebp-5Ch] int v13; // [esp+24h] [ebp-54h] BYREF bool v14[4]; // [esp+28h] [ebp-50h] BYREF void *v15[2]; // [esp+2Ch] [ebp-4Ch] BYREF char v16; // [esp+34h] [ebp-44h] BYREF int v17; // [esp+44h] [ebp-34h] BYREF void *v18[12]; // [esp+48h] [ebp-30h] BYREF result = a1; v3 = *(WXML::RPX **)a1; for ( i = *(_DWORD *)(a1 + 4); i > 0; i = *(_DWORD *)v14 ) { v13 = -1; *(_DWORD *)v14 = i; v5 = WXML::RPX::acceptID(v3, v14); if ( v5 ) { v6 = WXML::RPX::acceptNum(v3, v14); v5 = 1; if ( v6 ) { v7 = WXML::RPX::acceptStr(v3, v14); v5 = 2; if ( v7 ) { v8 = WXML::RPX::acceptSymbol(v3, (char *)v14, &v13); v5 = 3; if ( !v8 ) v5 = (v13 == 7) + 3; } } } LOBYTE(v11) = 0; v15[0] = &v16; v12 = v5; std::string::_M_construct(v15, (unsigned __int8 *)v3, (size_t)v3 + i - *(_DWORD *)v14, v11); v17 = v12; std::string::basic_string(v18, v15); v9 = *(_DWORD *)(a2 + 4); if ( v9 == *(_DWORD *)(a2 + 8) ) { std::vector>::_M_realloc_insert>( (char **)a2, *(char **)(a2 + 4), &v17); } else { v10 = (_DWORD *)(v9 + 4); *(v10 - 1) = v17; std::string::basic_string(v10, v18); *(_DWORD *)(a2 + 4) += 28; } std::string::_M_dispose(v18); std::string::_M_dispose(v15); result = *(_DWORD *)v14; v3 = (WXML::RPX *)((char *)v3 + i - *(_DWORD *)v14); } return result; } // 405469: variable 'v11' is possibly undefined //----- (004054FE) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, char *a2) { size_t v3; // eax int v5; // [esp+8h] [ebp-10h] *this = this + 2; v3 = -1; if ( a2 ) v3 = (size_t)&a2[strlen(a2)]; LOBYTE(v5) = 0; return std::string::_M_construct(this, (unsigned __int8 *)a2, v3, v5); } // 405534: variable 'v5' is possibly undefined //----- (00405545) -------------------------------------------------------- BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int *a2, char *a3, char *a4) { unsigned int i; // edi int v5; // ebx char *v6; // ecx char *v7; // edx char *v8; // ebx _DWORD *v9; // eax _DWORD *v10; // eax char *v11; // eax unsigned int v12; // edx unsigned int v13; // edx _DWORD *v14; // eax unsigned int v15; // edx BOOL v16; // eax int v18; // [esp+18h] [ebp-B0h] char v19; // [esp+1Ch] [ebp-ACh] BOOL v20; // [esp+1Ch] [ebp-ACh] char *v21; // [esp+2Ch] [ebp-9Ch] BYREF char *v22; // [esp+30h] [ebp-98h] int v23; // [esp+34h] [ebp-94h] void *v24[6]; // [esp+38h] [ebp-90h] BYREF void *v25[6]; // [esp+50h] [ebp-78h] BYREF void *v26[2]; // [esp+68h] [ebp-60h] BYREF unsigned int v27; // [esp+70h] [ebp-58h] BYREF void *v28[2]; // [esp+80h] [ebp-48h] BYREF unsigned int v29; // [esp+88h] [ebp-40h] BYREF void *v30[12]; // [esp+98h] [ebp-30h] BYREF v21 = 0; v22 = 0; v23 = 0; WXML::Rewrite::GetToken(a1, (int)&v21); std::string::operator=(a2, (char *)&byte_4EBF96); v19 = 1; for ( i = 1; i < -1227133513 * ((v22 - v21) >> 2); ++i ) { v5 = 28 * (i - 1); if ( *(_DWORD *)&v21[v5] == 1 && (v6 = &v21[v5 + 28], !*(_DWORD *)v6) && !std::string::compare((int)(v6 + 4), (char *)off_4EBF97) ) { std::string::basic_string(v28, a4); v7 = &v21[v5 + 32]; v8 = &v21[v5 + 4]; v18 = (int)v7; std::string::basic_string(v24, a3); v9 = std::string::append(v24, (int)v8); std::string::basic_string(v25, v9); v10 = std::string::append(v25, v18); std::string::basic_string(v26, v10); v11 = (char *)v26[1] + (unsigned int)v28[1]; v12 = 15; if ( v26[0] != &v27 ) v12 = v27; if ( (unsigned int)v11 <= v12 ) goto LABEL_15; v13 = 15; if ( v28[0] != &v29 ) v13 = v29; if ( (unsigned int)v11 > v13 ) LABEL_15: v14 = std::string::append(v26, (int)v28); else v14 = std::string::insert((unsigned int *)v28, 0, (int)v26); std::string::basic_string(v30, v14); std::string::operator+=(a2, (int)v30); ++i; std::string::_M_dispose(v30); std::string::_M_dispose(v26); std::string::_M_dispose(v25); std::string::_M_dispose(v24); std::string::_M_dispose(v28); if ( i == -1227133513 * ((v22 - v21) >> 2) ) v19 = 0; } else { std::string::operator+=(a2, (int)&v21[v5 + 4]); } } if ( v21 != v22 && v19 ) std::string::operator+=(a2, (int)(v22 - 24)); v15 = a2[1]; if ( v15 == *(_DWORD *)(a1 + 4) ) { v16 = 0; if ( v15 ) v16 = memcmp((const void *)*a2, *(const void **)a1, a2[1]) != 0; } else { v16 = 1; } v20 = v16; std::vector>::~vector((void **)&v21); return v20; } //----- (00405808) -------------------------------------------------------- int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int *a2, int *a3, int a4, int a5) { unsigned int v5; // edi int v6; // ebx char *v7; // eax int v8; // ecx int v9; // ebx int v10; // esi char *i; // ebx std::ostream::sentry *v12; // eax std::ostream::sentry *v13; // eax std::ostream::sentry *v14; // eax std::ostream::sentry *v15; // eax std::ostream::sentry *v16; // eax _DWORD *v17; // eax char v19; // [esp+1Bh] [ebp-12Dh] unsigned __int8 v20; // [esp+1Ch] [ebp-12Ch] std::ostream::sentry *v21; // [esp+1Ch] [ebp-12Ch] char *v22; // [esp+24h] [ebp-124h] BYREF _BYTE *v23; // [esp+28h] [ebp-120h] int v24; // [esp+2Ch] [ebp-11Ch] char *Str1; // [esp+30h] [ebp-118h] BYREF int v26; // [esp+34h] [ebp-114h] int v27[2]; // [esp+48h] [ebp-100h] BYREF char v28; // [esp+50h] [ebp-F8h] BYREF void *v29[2]; // [esp+60h] [ebp-E8h] BYREF char v30[4]; // [esp+68h] [ebp-E0h] BYREF int v31[55]; // [esp+6Ch] [ebp-DCh] BYREF v22 = 0; v23 = 0; v24 = 0; WXML::Rewrite::GetToken(a1, (int)&v22); std::string::operator=(a2, (char *)&byte_4EBF96); v19 = 1; v5 = 1; v20 = 0; while ( v5 < -1227133513 * ((v23 - v22) >> 2) ) { v6 = 28 * (v5 - 1); if ( !std::string::compare((int)&v22[v6 + 4], (char *)off_4EBF9B) && !std::string::compare((int)&v22[v6 + 32], "(") ) { std::string::basic_string((void **)&Str1, (char *)&byte_4EBF96); while ( -1227133513 * ((v23 - v22) >> 2) > ++v5 ) { v9 = 28 * v5; if ( !std::string::compare((int)&v22[28 * v5 + 4], ")") ) { v10 = v26; for ( i = Str1; &Str1[v26] - i > 0 && (*i == 32 || *i == 9); ++i ) ; if ( !strncmp(i, "http://", 7u) || !strncmp(i, "https://", 8u) || !strncmp(i, "//", 2u) || !strncmp(i, "data:", 5u) ) { v27[1] = 0; v27[0] = (int)&v28; v28 = 0; std::string::reserve(v27, v10 + 4); std::string::append(v27, "url(", 4u); std::string::append(v27, (int)&Str1); v17 = std::string::append(v27, ")"); std::string::basic_string(v29, v17); std::string::operator+=(a2, (int)v29); std::string::_M_dispose(v29); std::string::_M_dispose((void **)v27); } else { std::basic_stringstream,std::allocator>::basic_stringstream((int)v29); v21 = std::operator<<>((std::ostream::sentry *)v30, "url("); std::string::basic_string((void **)v27, i); v12 = std::operator<<(v21, v27); v13 = std::operator<<>(v12, "-do-not-use-local-path-"); v14 = std::operator<<(v13, a3); std::operator<<>(v14, "&"); v15 = (std::ostream::sentry *)std::ostream::operator<<(a4); std::operator<<>(v15, "&"); v16 = (std::ostream::sentry *)std::ostream::operator<<(a5); std::operator<<>(v16, ")"); std::string::_M_dispose((void **)v27); std::stringbuf::str((int)v27, v31); std::string::operator+=(a2, (int)v27); std::string::_M_dispose((void **)v27); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v29); v20 = 1; } if ( ++v5 == -1227133513 * ((v23 - v22) >> 2) ) v19 = 0; break; } v7 = &v22[v9]; v8 = *(_DWORD *)&v22[v9]; if ( v8 != 4 ) { if ( v8 == 2 ) { std::string::substr(v29, (_DWORD *)v7 + 1, 1u, *((_DWORD *)v7 + 2) - 2); std::string::operator+=(&Str1, (int)v29); std::string::_M_dispose(v29); } else { std::string::operator+=(&Str1, (int)(v7 + 4)); } } } std::string::_M_dispose((void **)&Str1); } else { std::string::operator+=(a2, (int)&v22[v6 + 4]); } ++v5; } if ( v23 != v22 && v19 ) std::string::operator+=(a2, (int)(v23 - 24)); std::vector>::~vector((void **)&v22); return v20; } // 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 405808: using guessed type char var_E0[4]; // 405808: using guessed type int var_DC[55]; //----- (00405CB8) -------------------------------------------------------- void __fastcall std::vector>::~vector(void **a1) { char *v2; // edi char *i; // esi void **v4; // ecx v2 = (char *)a1[1]; for ( i = (char *)*a1; v2 != i; i += 28 ) { v4 = (void **)(i + 4); std::string::_M_dispose(v4); } if ( *a1 ) operator delete(*a1); } //----- (00405CEF) -------------------------------------------------------- std::ostream::sentry *__cdecl WXML::RenderStrToken(_DWORD *a1, int a2) { std::ostream::sentry *result; // eax std::ostream::sentry *v3; // eax std::ostream::sentry *v4; // eax char *v5; // [esp+24h] [ebp+Ch] result = (std::ostream::sentry *)a2; if ( *a1 ) { if ( *a1 != 1 ) return result; v4 = std::operator<<>((std::ostream::sentry *)(a2 + 8), "\""); v3 = std::operator<<(v4, a1 + 1); v5 = "\","; } else { v3 = std::operator<<((std::ostream::sentry *)(a2 + 8), a1 + 1); v5 = ","; } return std::operator<<>(v3, v5); } //----- (00405D5C) -------------------------------------------------------- char __cdecl WXML::IsFloat(WXML *this) { int v1; // edx char v2; // cl char v3; // al v1 = ((*(_BYTE *)this - 43) & 0xFD) == 0; v2 = 0; while ( 1 ) { v3 = *((_BYTE *)this + v1); if ( !v3 ) return 1; if ( v3 != 46 ) break; if ( v2 ) return 0; v2 = 1; LABEL_7: ++v1; } if ( (unsigned __int8)(v3 - 48) <= 9u ) goto LABEL_7; return 0; } //----- (00405D97) -------------------------------------------------------- char __cdecl WXML::IsFloat(int a1) { if ( *(_DWORD *)(a1 + 4) ) return WXML::IsFloat(*(WXML **)a1); else return 0; } //----- (00405DB0) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, char *a2) { size_t v3; // eax int v5; // [esp+8h] [ebp-10h] *this = this + 2; v3 = -1; if ( a2 ) v3 = (size_t)&a2[strlen(a2)]; LOBYTE(v5) = 0; return std::string::_M_construct(this, (unsigned __int8 *)a2, v3, v5); } // 405DE6: variable 'v5' is possibly undefined //----- (00405DF8) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3) { int v4; // [esp+8h] [ebp-10h] *this = this + 2; LOBYTE(v4) = 0; return std::string::_M_construct(this, a2, (size_t)&a2[a3], v4); } // 405E17: variable 'v4' is possibly undefined //----- (00405E23) -------------------------------------------------------- void __cdecl WXML::StrSplitList4RPX(char *Str, char *SubStr, char *a3, char **a4) { char *v4; // ebx char v5; // al char *v6; // edi int v7; // ecx bool v8; // zf int v9; // edi int v10; // ecx char *v11; // edi char *v12; // eax char *v13; // esi char *v14; // edi _DWORD *v15; // eax int v16; // [esp+18h] [ebp-90h] int v17; // [esp+1Ch] [ebp-8Ch] void *v18[6]; // [esp+2Ch] [ebp-7Ch] BYREF void *v19[2]; // [esp+44h] [ebp-64h] BYREF char v20; // [esp+4Ch] [ebp-5Ch] BYREF void *v21[6]; // [esp+5Ch] [ebp-4Ch] BYREF int v22; // [esp+74h] [ebp-34h] BYREF void *v23[12]; // [esp+78h] [ebp-30h] BYREF v4 = Str; if ( a3 != 0 && SubStr != 0 ) { v5 = Str == 0; if ( Str ) { v6 = SubStr; v7 = -1; do { if ( !v7 ) break; v8 = *v6++ == v5; --v7; } while ( !v8 ); v9 = -v7 - 2; v10 = -1; v17 = v9; v11 = a3; do { if ( !v10 ) break; v8 = *v11++ == v5; --v10; } while ( !v8 ); v16 = -v10 - 2; while ( 1 ) { v12 = strstr(v4, SubStr); v13 = v12; if ( !v12 ) break; if ( v4 != v12 ) { std::string::basic_string(v21, (unsigned __int8 *)v4, v12 - v4); v22 = 1; std::string::basic_string(v23, v21); std::vector>::emplace_back>( a4, &v22); std::string::_M_dispose(v23); std::string::_M_dispose(v21); } v4 = &v13[v17]; v14 = strstr(&v13[v17], a3); if ( !v14 ) { std::string::basic_string(v21, v13); v22 = 1; std::string::basic_string(v23, v21); std::vector>::emplace_back>( a4, &v22); std::string::_M_dispose(v23); goto LABEL_21; } std::string::basic_string(v18, (unsigned __int8 *)v4, v14 - v4); if ( WXML::IsFloat((int)v18) ) { v19[1] = 0; v19[0] = &v20; v20 = 0; std::string::reserve(v19, (unsigned int)v18[1] + 3); std::string::append(v19, "[0,", 3u); std::string::append(v19, (int)v18); v15 = std::string::append(v19, "]"); std::string::basic_string(v21, v15); v22 = 0; std::string::basic_string(v23, v21); std::vector>::emplace_back>( a4, &v22); std::string::_M_dispose(v23); std::string::_M_dispose(v21); std::string::_M_dispose(v19); v4 = &v14[v16]; } else { std::string::basic_string(v21, (unsigned __int8 *)v13, v17); v22 = 1; std::string::basic_string(v23, v21); std::vector>::emplace_back>( a4, &v22); std::string::_M_dispose(v23); std::string::_M_dispose(v21); } std::string::_M_dispose(v18); } if ( !*v4 ) return; std::string::basic_string(v21, v4); v22 = 1; std::string::basic_string(v23, v21); std::vector>::emplace_back>(a4, &v22); std::string::_M_dispose(v23); LABEL_21: std::string::_M_dispose(v21); } } } //----- (00406135) -------------------------------------------------------- void __cdecl WXML::StrSplitList4ClassSuffix(char *Str, char *SubStr, char **a3) { char *v3; // esi char *v4; // edi int v5; // ecx bool v6; // zf char *v7; // eax char *v8; // ebx int i; // [esp+1Ch] [ebp-5Ch] void *v10[6]; // [esp+2Ch] [ebp-4Ch] BYREF int v11; // [esp+44h] [ebp-34h] BYREF void *v12[12]; // [esp+48h] [ebp-30h] BYREF v3 = Str; if ( Str && SubStr ) { v4 = SubStr; v5 = -1; do { if ( !v5 ) break; v6 = *v4++ == (SubStr == 0); --v5; } while ( !v6 ); for ( i = -v5 - 2; ; v3 = &v8[i] ) { v7 = strstr(v3, SubStr); v8 = v7; if ( !v7 ) break; if ( v3 != v7 ) { std::string::basic_string(v10, (unsigned __int8 *)v3, v7 - v3); v11 = 1; std::string::basic_string(v12, v10); std::vector>::emplace_back>( a3, &v11); std::string::_M_dispose(v12); std::string::_M_dispose(v10); } v11 = 0; std::string::basic_string(v12, (char *)&off_4EC02D); std::vector>::emplace_back>(a3, &v11); std::string::_M_dispose(v12); } if ( *v3 ) { std::string::basic_string(v10, v3); v11 = 1; std::string::basic_string(v12, v10); std::vector>::emplace_back>(a3, &v11); std::string::_M_dispose(v12); std::string::_M_dispose(v10); } } } // 4EC02D: using guessed type void *off_4EC02D; //----- (00406286) -------------------------------------------------------- void __cdecl WXML::GetStrForMakingCSS(char **a1, int a2) { char *v2; // eax unsigned int i; // ebx _DWORD *v4; // edx char *v5; // eax unsigned int j; // esi int v7; // [esp+18h] [ebp-30h] BYREF int v8; // [esp+1Ch] [ebp-2Ch] int v9; // [esp+20h] [ebp-28h] int v10; // [esp+24h] [ebp-24h] BYREF int v11; // [esp+28h] [ebp-20h] int v12; // [esp+2Ch] [ebp-1Ch] v7 = 0; v2 = *a1; v8 = 0; v9 = 0; WXML::StrSplitList4RPX(v2, "%%?", "rpx?%%", (char **)&v7); for ( i = 0; -1227133513 * ((v8 - v7) >> 2) > i; ++i ) { v4 = (_DWORD *)(28 * i + v7); if ( *v4 == 1 ) { v5 = (char *)v4[1]; v10 = 0; v11 = 0; v12 = 0; WXML::StrSplitList4ClassSuffix(v5, "%%HERESUFFIX%%", (char **)&v10); for ( j = 0; -1227133513 * ((v11 - v10) >> 2) > j; ++j ) WXML::RenderStrToken((_DWORD *)(28 * j + v10), a2); std::vector>::~vector((void **)&v10); } else if ( !*v4 ) { WXML::RenderStrToken(v4, a2); } } std::vector>::~vector((void **)&v7); } //----- (0040639C) -------------------------------------------------------- void __cdecl __tcf_1_1() { std::ios_base::Init::~Init(); } //----- (004063A6) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, char *a2) { unsigned int v3; // kr04_4 unsigned int result; // eax _BYTE *v5; // edx unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; if ( !a2 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v3 = strlen(a2) + 1; v6[0] = v3 - 1; if ( v3 - 1 > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 4063A6: using guessed type unsigned int var_1C[7]; //----- (00406427) -------------------------------------------------------- volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) { if ( _CRT_MT ) _InterlockedIncrement(result); else ++*result; return result; } // 15412D0: using guessed type int _CRT_MT; //----- (00406438) -------------------------------------------------------- int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) { volatile signed __int32 *v1; // ecx int result; // eax v1 = *a1; if ( v1 ) return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); return result; } //----- (00406444) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int a1) { int v2; // edi int i; // esi volatile signed __int32 **v4; // ecx std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 160)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 152)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 144)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 136)); v2 = *(_DWORD *)(a1 + 124); for ( i = *(_DWORD *)(a1 + 120); v2 != i; i += 8 ) { v4 = (volatile signed __int32 **)(i + 4); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); } if ( *(_DWORD *)(a1 + 120) ) operator delete(*(void **)(a1 + 120)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 32)); std::string::_M_dispose((void **)a1); } //----- (004064B8) -------------------------------------------------------- void __fastcall std::vector::~vector(void **a1) { char *v2; // edi char *i; // esi volatile signed __int32 **v4; // ecx v2 = (char *)a1[1]; for ( i = (char *)*a1; v2 != i; i += 92 ) { v4 = (volatile signed __int32 **)(i + 8); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); } if ( *a1 ) operator delete(*a1); } //----- (004064EF) -------------------------------------------------------- _DWORD *__usercall std::__relocate_a_1>@( _DWORD *a1@, _DWORD *a2@, _DWORD *a3@) { _DWORD *v3; // ebx _DWORD *v4; // edx int v5; // eax volatile signed __int32 **v6; // ecx _DWORD *v8; // [esp+0h] [ebp-28h] _DWORD *v9; // [esp+0h] [ebp-28h] v3 = a1; v4 = a3; while ( v3 != a2 ) { *v4 = *v3; v4[1] = v3[1]; v5 = v3[2]; v4[2] = v5; if ( v5 ) { v8 = v4; __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v5 + 4)); v4 = v8; } v9 = v4; v4[3] = v3[3]; v4[4] = v3[4]; v4[5] = v3[5]; v4[6] = v3[6]; qmemcpy(v4 + 7, v3 + 7, 0x40u); v6 = (volatile signed __int32 **)(v3 + 2); v3 += 23; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v6); v4 = v9 + 23; } return &a3[23 * ((700266407 * ((unsigned int)((char *)v3 - (char *)a1) >> 2)) & 0x3FFFFFFF)]; } //----- (00406588) -------------------------------------------------------- volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( volatile signed __int32 **this, volatile signed __int32 *a2) { if ( *this != a2 ) { if ( a2 ) __gnu_cxx::__atomic_add_dispatch(a2 + 1); if ( *this ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); *this = a2; } return this; } //----- (004065B8) -------------------------------------------------------- int __userpurge WXSS::CSSTreeLib::Parser::Parse@( int a1@, void (__cdecl *a2)(void *)@, char **a3, int *a4, unsigned int *a5, int a6) { void *v6; // eax int v7; // edx char *v8; // edi int v9; // eax int v10; // eax int v11; // eax volatile signed __int32 *v12; // eax _DWORD *v13; // edi _DWORD *v14; // eax int v15; // ebx _DWORD *v16; // eax int v17; // ebx _DWORD *v18; // ebx volatile signed __int32 *v19; // eax _DWORD *v20; // edx _DWORD *v21; // ecx volatile signed __int32 *v22; // edx _DWORD *v23; // eax _DWORD *v24; // ebx volatile signed __int32 *v25; // eax _DWORD *v26; // edx _DWORD *v27; // ecx volatile signed __int32 *v28; // edx _DWORD *v29; // esi volatile signed __int32 *v30; // eax _DWORD *v31; // edx _DWORD *v32; // ecx int v33; // ecx char *v34; // edi int v35; // eax int v36; // eax int v37; // ecx char *v38; // ebx void *v39; // eax int v40; // edx _DWORD *v41; // esi volatile signed __int32 **v42; // ecx int i; // eax volatile signed __int32 **v44; // ecx std::ostream::sentry *v45; // eax std::ostream::sentry *v46; // eax std::ostream::sentry *v47; // eax char *v48; // ebx std::ostream::sentry *v49; // eax std::ostream::sentry *v50; // eax std::ostream::sentry *v51; // eax std::ostream::sentry *v52; // eax char *v53; // edx char **v54; // ecx std::ostream::sentry *v55; // eax _DWORD *v56; // esi _DWORD *v57; // eax _DWORD *v58; // eax char **v59; // ecx int v60; // edi void *v61; // eax int v62; // edx _DWORD *v63; // ebx int j; // esi _DWORD *v65; // eax int *v66; // eax int v67; // edx int v68; // eax volatile signed __int32 **v69; // esi volatile signed __int32 **v70; // ebx volatile signed __int32 **k; // esi volatile signed __int32 **v72; // ecx volatile signed __int32 **v73; // ecx int *v74; // esi int v75; // edx int *v76; // eax _DWORD *v77; // ecx int v78; // edi int *v79; // esi int v80; // eax _DWORD *v81; // edx int v82; // eax int v83; // ebx std::ostream::sentry *v84; // eax std::ostream::sentry *v85; // eax std::ostream::sentry *v86; // eax std::ostream::sentry *v87; // eax char *v88; // edx char **v89; // ecx std::ostream::sentry *v90; // eax int v91; // ecx _DWORD *v92; // edi volatile signed __int32 **v93; // eax WXSS::CSSTreeLib::TransitTable *v95; // [esp+0h] [ebp-238h] volatile signed __int32 *v96; // [esp+0h] [ebp-238h] _DWORD *v97; // [esp+0h] [ebp-238h] void (__cdecl *v98)(void *); // [esp+4h] [ebp-234h] void (__cdecl *v99)(void *); // [esp+4h] [ebp-234h] void (__cdecl *v100)(void *); // [esp+4h] [ebp-234h] void (__cdecl *v101)(void *); // [esp+4h] [ebp-234h] void (__cdecl *v102)(void *); // [esp+4h] [ebp-234h] void (__cdecl *v103)(void *); // [esp+4h] [ebp-234h] void (__cdecl *v104)(void *); // [esp+4h] [ebp-234h] void (__cdecl *v105)(void *); // [esp+4h] [ebp-234h] void (__cdecl *v106)(void *); // [esp+4h] [ebp-234h] void (__cdecl *v107)(void *); // [esp+4h] [ebp-234h] unsigned int v108; // [esp+1Ch] [ebp-21Ch] int v109; // [esp+20h] [ebp-218h] int *v110; // [esp+20h] [ebp-218h] _DWORD *v111; // [esp+24h] [ebp-214h] int Tokens; // [esp+28h] [ebp-210h] volatile signed __int32 *v114; // [esp+38h] [ebp-200h] BYREF volatile signed __int32 *v115; // [esp+3Ch] [ebp-1FCh] BYREF int v116; // [esp+40h] [ebp-1F8h] BYREF volatile signed __int32 *v117; // [esp+44h] [ebp-1F4h] BYREF int v118; // [esp+48h] [ebp-1F0h] BYREF volatile signed __int32 *v119; // [esp+4Ch] [ebp-1ECh] BYREF _DWORD *v120; // [esp+50h] [ebp-1E8h] volatile signed __int32 *v121; // [esp+54h] [ebp-1E4h] BYREF _DWORD *v122; // [esp+58h] [ebp-1E0h] volatile signed __int32 *v123; // [esp+5Ch] [ebp-1DCh] BYREF _DWORD *v124; // [esp+60h] [ebp-1D8h] volatile signed __int32 *v125; // [esp+64h] [ebp-1D4h] BYREF _DWORD *v126; // [esp+68h] [ebp-1D0h] volatile signed __int32 *v127; // [esp+6Ch] [ebp-1CCh] BYREF char *v128; // [esp+70h] [ebp-1C8h] BYREF char *v129; // [esp+74h] [ebp-1C4h] char *v130; // [esp+78h] [ebp-1C0h] char v131; // [esp+7Ch] [ebp-1BCh] BYREF char v132; // [esp+94h] [ebp-1A4h] BYREF _DWORD *v133; // [esp+ACh] [ebp-18Ch] BYREF volatile signed __int32 *v134[5]; // [esp+B0h] [ebp-188h] BYREF void *v135[6]; // [esp+C4h] [ebp-174h] BYREF void *v136; // [esp+DCh] [ebp-15Ch] BYREF int v137; // [esp+F4h] [ebp-144h] BYREF int v138; // [esp+F8h] [ebp-140h] volatile signed __int32 *v139; // [esp+FCh] [ebp-13Ch] BYREF int v140; // [esp+100h] [ebp-138h] int v141; // [esp+104h] [ebp-134h] int v142; // [esp+108h] [ebp-130h] int v143; // [esp+10Ch] [ebp-12Ch] char v144[64]; // [esp+110h] [ebp-128h] BYREF _DWORD *v145; // [esp+150h] [ebp-E8h] BYREF volatile signed __int32 *v146; // [esp+154h] [ebp-E4h] BYREF char v147[4]; // [esp+158h] [ebp-E0h] BYREF _DWORD v148[55]; // [esp+15Ch] [ebp-DCh] BYREF WXSS::Tokenizer::Tokenizer((int)v135, *a3, (int)a4); v128 = 0; v129 = 0; v130 = 0; Tokens = WXSS::Tokenizer::GetTokens((int *)v135, (int)&v128, a5, -1); if ( Tokens ) goto LABEL_106; while ( *(_DWORD *)(a1 + 16) != *(_DWORD *)(a1 + 32) ) std::deque>::pop_back((_DWORD *)(a1 + 8)); while ( *(_DWORD *)(a1 + 56) != *(_DWORD *)(a1 + 72) ) std::deque>::pop_back((_DWORD *)(a1 + 48)); if ( !(_BYTE)`guard variable for'WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret && __cxa_guard_acquire(&`guard variable for'WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret) ) { dword_4E9B60 = 0; dword_4E9B64 = 0; dword_4E9B68 = (int)&dword_4E9B60; dword_4E9B6C = (int)&dword_4E9B60; dword_4E9B70 = 0; byte_4E9B74 = 0; __cxa_guard_release(&`guard variable for'WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret); atexit(__tcf_0); } WXSS::CSSTreeLib::TransitTable::Init(v95); v6 = operator new((struct type_info *)0xB0, v98); WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v6); zcc::shared_ptr::shared_ptr(v7); std::__shared_ptr::operator=( (volatile signed __int32 **)a1, &v114); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); std::string::operator=(*(unsigned int **)a1, "RULES"); v8 = v129; if ( v128 == v129 ) goto LABEL_106; v142 = 0; v143 = 0; v144[0] = 0; v140 = 0; v141 = 0; v9 = *((_DWORD *)v129 - 18); v138 = 0; v142 = v9; v10 = *((_DWORD *)v129 - 17); v139 = 0; v137 = 8; v143 = v10; if ( v129 == v130 ) { std::vector::_M_realloc_insert(&v128, v129, &v137); v99 = a2; } else { v11 = v138; *(_DWORD *)v129 = 8; *((_DWORD *)v8 + 1) = v11; v12 = v139; *((_DWORD *)v8 + 2) = v139; if ( v12 ) __gnu_cxx::__atomic_add_dispatch(v12 + 1); v13 = v8 + 28; v129 += 92; *(v13 - 4) = v140; *(v13 - 3) = v141; *(v13 - 2) = v142; *(v13 - 1) = v143; qmemcpy(v13, v144, 0x40u); } v14 = operator new((struct type_info *)0x78, v99); *v14 = &off_4F5198; v14[1] = v14 + 3; v14[2] = 0; *((_BYTE *)v14 + 12) = 0; v14[8] = 0; v14[9] = 0; *((_BYTE *)v14 + 56) = 0; v14[7] = 1; v14[10] = 0; v14[11] = 0; v14[12] = 0; v14[13] = 0; zcc::shared_ptr::shared_ptr(&v116, (int)v14); v15 = v116; std::string::basic_string((void **)&v145, "$"); std::string::_M_assign(v15 + 4, (int)&v145); std::string::_M_dispose((void **)&v145); v111 = (_DWORD *)(a1 + 8); std::deque>::push_back((_DWORD *)(a1 + 8), &v116); v16 = operator new((struct type_info *)8, v100); *v16 = &off_4F5084; v16[1] = 0; zcc::shared_ptr::shared_ptr(&v118, (int)v16); v17 = v118; *(_DWORD *)(v17 + 4) = WXSS::CSSTreeLib::TransitTable::GetTopType(); std::deque>::push_back((_DWORD *)(a1 + 8), &v118); v18 = operator new((struct type_info *)0x48, v101); v120 = 0; v145 = v18; memset(v18, 0, 0x48u); v121 = 0; *v18 = v18 + 2; v18[6] = v18 + 8; v18[12] = v18 + 14; v146 = 0; v19 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v102); v20 = v145; v21 = v120; *((_DWORD *)v19 + 3) = v18; *((_DWORD *)v19 + 1) = 1; *((_DWORD *)v19 + 2) = 1; *v19 = (volatile signed __int32)&off_4F636C; v120 = v20; v22 = v121; v145 = v21; v121 = v19; v146 = v22; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v146); std::string::_M_assign((int)v120, (int)a4); std::string::_M_assign((int)(v120 + 6), a6); v23 = operator new((struct type_info *)0x5C, v103); v23[1] = 0; v24 = v23; v23[2] = 0; *((_BYTE *)v23 + 28) = 0; *v23 = 1; v23[3] = 0; v23[4] = 0; v23[5] = 0; v23[6] = 0; v122 = 0; v123 = 0; v145 = v23; v146 = 0; v25 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v104); v26 = v145; v27 = v122; *((_DWORD *)v25 + 3) = v24; *((_DWORD *)v25 + 1) = 1; *((_DWORD *)v25 + 2) = 1; *v25 = (volatile signed __int32)&off_4F63DC; v122 = v26; v28 = v123; v145 = v27; v123 = v25; v146 = v28; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v146); v122[3] = -1; v29 = operator new((struct type_info *)0x18, v105); std::string::basic_string(v29, (int)a4); v124 = 0; v125 = 0; v145 = v29; v146 = 0; v30 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v106); v31 = v145; v32 = v124; *((_DWORD *)v30 + 3) = v29; *((_DWORD *)v30 + 1) = 1; *((_DWORD *)v30 + 2) = 1; *v30 = (volatile signed __int32)&off_4F63F8; v124 = v31; v145 = v32; v146 = v125; v125 = v30; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v146); v33 = (int)v122; v122[1] = v124; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(v33 + 8), v125); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v125); v126 = 0; v127 = 0; v108 = 0; while ( 1 ) { v36 = *(_DWORD *)(a1 + 32); if ( *(_DWORD *)(a1 + 16) == v36 || v108 >= -373475417 * ((v129 - v128) >> 2) ) break; if ( *(_DWORD *)(a1 + 36) == v36 ) v36 = *(_DWORD *)(*(_DWORD *)(a1 + 44) - 4) + 512; v96 = *(volatile signed __int32 **)(v36 - 4); v126 = *(_DWORD **)(v36 - 8); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(&v127, v96); v38 = &v128[92 * v108]; switch ( *(_DWORD *)v38 ) { case 1: v34 = v38 + 28; break; case 2: v34 = "$VALUE"; break; case 3: v34 = "$STRING"; break; case 4: v34 = "$NAME"; break; case 5: v34 = (char *)&off_4EC0D7; break; case 6: v34 = "$MULTI_EXPR"; break; case 7: v34 = "$$"; break; case 9: v34 = "$ESV"; break; default: v34 = "$"; break; } if ( (*(int (__thiscall **)(_DWORD *, int))(*v126 + 8))(v126, v37) == 1 ) { v35 = v126[1]; if ( *v34 != *(_BYTE *)v35 || strcmp(v34 + 1, (const char *)(v35 + 1)) ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v145); if ( *v34 != 36 || v34[1] ) { v49 = std::operator<<((std::ostream::sentry *)v147, a4); std::operator<<>(v49, "("); v50 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 5)); std::operator<<>(v50, ":"); v51 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 6)); v52 = std::operator<<>(v51, "): error at token `"); v53 = v38 + 28; if ( *(_DWORD *)v38 != 1 ) { v53 = "$"; if ( *(_DWORD *)v38 != 8 ) { v54 = (char **)*((_DWORD *)v38 + 1); v53 = "UNKNOWN"; if ( v54 ) v53 = *v54; } } v55 = std::operator<<>(v52, v53); std::operator<<>(v55, "`"); v48 = &v132; } else { v45 = std::operator<<((std::ostream::sentry *)v147, a4); std::operator<<>(v45, "("); v46 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 5)); std::operator<<>(v46, ":"); v47 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 6)); std::operator<<>(v47, "): unexpected end of input or bad input"); v48 = &v131; } std::stringbuf::str((int)v48, v148); LABEL_50: std::string::operator=(a5, v48); std::string::_M_dispose((void **)v48); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v145); Tokens = -1; goto LABEL_105; } ++v108; std::deque>::pop_back(v111); if ( *v34 != 36 || v34[1] ) { v39 = operator new((struct type_info *)0xB0, v107); WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v39); zcc::shared_ptr::shared_ptr(v40); v41 = v145; v42 = (volatile signed __int32 **)(v145 + 8); v145[6] = *(_DWORD *)v38; v41[7] = *((_DWORD *)v38 + 1); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v42, *((volatile signed __int32 **)v38 + 2)); v41[9] = *((_DWORD *)v38 + 3); v41[10] = *((_DWORD *)v38 + 4); v41[11] = *((_DWORD *)v38 + 5); v41[12] = *((_DWORD *)v38 + 6); for ( i = 0; i != 64; ++i ) *((_BYTE *)v41 + i + 52) = v38[i + 28]; std::string::operator=(v41, v34); v41[41] = *((_DWORD *)v38 + 3); v41[42] = *((_DWORD *)v38 + 3) + *((_DWORD *)v38 + 4); v41[37] = v120; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v41 + 38, v121); v41[39] = v122; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v41 + 40, v123); std::deque>::push_back((_DWORD *)(a1 + 48), &v145); v44 = &v146; goto LABEL_61; } } else if ( (*(int (__fastcall **)(_DWORD *))(*v126 + 8))(v126) == 3 ) { std::deque>::pop_back(v111); v56 = v126; v109 = v126[7]; if ( v109 == 2 ) { if ( *(_DWORD *)(a1 + 72) == *(_DWORD *)(a1 + 56) ) { std::string::operator=(a5, "interal error: "); std::string::operator+=(a5, "1001"); Tokens = 1001; goto LABEL_105; } v57 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 48)); std::__shared_ptr::__shared_ptr(&v133, v57); std::deque>::pop_back((_DWORD *)(a1 + 48)); if ( *(_DWORD *)(a1 + 72) == *(_DWORD *)(a1 + 56) ) { std::string::operator=(a5, "interal error: "); std::string::operator+=(a5, "1002"); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v134); Tokens = 1002; goto LABEL_105; } v58 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 48)); std::__shared_ptr::__shared_ptr(&v145, v58); v59 = (char **)v145; if ( v145[31] == v145[30] ) v145[41] = v133[41]; std::vector>::push_back(v59 + 30, &v133); v145[42] = v133[42]; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v146); } else { v60 = v126[8]; v61 = operator new((struct type_info *)0xB0, v107); WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v61); zcc::shared_ptr::shared_ptr(v62); v63 = v133; std::string::_M_assign((int)v133, (int)(v56 + 1)); for ( j = 0; j < v60; ++j ) { if ( *(_DWORD *)(a1 + 72) == *(_DWORD *)(a1 + 56) ) { std::string::operator=(a5, "interal error: "); std::string::operator+=(a5, "1003"); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v134); Tokens = 1003; goto LABEL_105; } v65 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 48)); std::vector>::push_back((char **)v63 + 30, v65); std::deque>::pop_back((_DWORD *)(a1 + 48)); } if ( v60 > 0 ) { v66 = (int *)v133[30]; v67 = v66[2 * v60 - 2]; v68 = *v66; v63[41] = *(_DWORD *)(v67 + 164); v63[42] = *(_DWORD *)(v68 + 168); v63[37] = v120; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v63 + 38, v121); v63[39] = v122; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v63 + 40, v123); } if ( !v109 ) { v69 = (volatile signed __int32 **)v63[31]; v70 = (volatile signed __int32 **)v63[30]; if ( v70 != v69 ) { for ( k = v69 - 2; k > v70; k -= 2 ) { std::__shared_ptr::__shared_ptr(&v145, v70); v72 = v70; v70 += 2; std::__shared_ptr::operator=(v72, k); v73 = k; std::__shared_ptr::operator=( v73, (volatile signed __int32 **)&v145); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v146); } } } std::deque>::push_back((_DWORD *)(a1 + 48), &v133); } v44 = v134; LABEL_61: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v44); } else if ( (*(int (__fastcall **)(_DWORD *))(*v126 + 8))(v126) == 2 ) { v74 = &dword_4E9B60; v75 = v126[1]; v76 = (int *)dword_4E9B64; while ( v76 ) { if ( v75 > v76[4] ) { v76 = (int *)v76[3]; } else { v74 = v76; v76 = (int *)v76[2]; } } if ( v74 != &dword_4E9B60 && v75 < v74[4] ) v74 = &dword_4E9B60; std::string::basic_string((void **)&v145, v34); v97 = v77; v78 = v74[7]; v110 = v74 + 6; v79 = v74 + 6; while ( v78 ) { v80 = std::string::compare(v78 + 16, (int)&v145); v97 = v81; if ( v80 < 0 ) { v78 = *(_DWORD *)(v78 + 12); } else { v79 = (int *)v78; v78 = *(_DWORD *)(v78 + 8); } } if ( v110 != v79 ) { v82 = std::string::compare((int)&v145, (int)(v79 + 4)); v97 = 0; if ( v82 < 0 ) v79 = v110; } std::string::_M_dispose((void **)&v145); if ( v79 == v110 || v79[11] == v79[10] ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v145); v84 = std::operator<<((std::ostream::sentry *)v147, a4); std::operator<<>(v84, "("); v85 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 5)); std::operator<<>(v85, ":"); v86 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 6)); v87 = std::operator<<>(v86, "): unexpected token `"); v88 = v38 + 28; if ( *(_DWORD *)v38 != 1 ) { v88 = "$"; if ( *(_DWORD *)v38 != 8 ) { v89 = (char **)*((_DWORD *)v38 + 1); v88 = "UNKNOWN"; if ( v89 ) v88 = *v89; } } v90 = std::operator<<>(v87, v88); std::operator<<>(v90, "`"); v48 = (char *)&v133; std::stringbuf::str((int)&v133, v148); goto LABEL_50; } std::deque>::pop_back(v111); v83 = (*(_DWORD *)(v79[10] + 4) - *(_DWORD *)v79[10]) >> 3; while ( --v83 >= 0 ) { v91 = *(_DWORD *)(*(_DWORD *)v79[10] + 8 * v83); if ( (*(int (__thiscall **)(int, _DWORD *))(*(_DWORD *)v91 + 8))(v91, v97) == 4 ) break; v92 = (_DWORD *)(*(_DWORD *)v79[10] + 8 * v83); std::deque>::push_back(v111, v92); v97 = v92; } } } if ( *(_DWORD *)(a1 + 72) == *(_DWORD *)(a1 + 56) ) { std::string::operator=(a5, "interal error: "); std::string::operator+=(a5, "1004"); Tokens = 1004; } else { v93 = (volatile signed __int32 **)std::deque>::back((_DWORD *)(a1 + 48)); std::__shared_ptr::operator=( (volatile signed __int32 **)a1, v93); } LABEL_105: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v127); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v123); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v121); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v119); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v117); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v139); LABEL_106: std::vector::~vector((void **)&v128); std::string::_M_dispose(&v136); std::string::_M_dispose(v135); return Tokens; } // 4066D7: variable 'v95' is possibly undefined // 4066E3: variable 'v98' is possibly undefined // 4066FC: variable 'v7' is possibly undefined // 40682C: variable 'v99' is possibly undefined // 4068E5: variable 'v100' is possibly undefined // 406935: variable 'v101' is possibly undefined // 406983: variable 'v102' is possibly undefined // 406A3C: variable 'v103' is possibly undefined // 406AA2: variable 'v104' is possibly undefined // 406B07: variable 'v105' is possibly undefined // 406B72: variable 'v106' is possibly undefined // 406C4D: variable 'v37' is possibly undefined // 406DA2: variable 'v107' is possibly undefined // 406DB9: variable 'v40' is possibly undefined // 407158: variable 'v62' is possibly undefined // 407333: variable 'v77' is possibly undefined // 407350: variable 'v81' is possibly undefined // 43CAA0: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 4E9B60: using guessed type int dword_4E9B60; // 4E9B68: using guessed type int dword_4E9B68; // 4E9B6C: using guessed type int dword_4E9B6C; // 4E9B70: using guessed type int dword_4E9B70; // 4E9B74: using guessed type char byte_4E9B74; // 4EC0D7: using guessed type void *off_4EC0D7; // 4F5084: using guessed type void (__cdecl *off_4F5084)(WXSS::CSSTreeLib::NonTerminal *__hidden this); // 4F5198: using guessed type void (__cdecl *off_4F5198)(WXSS::CSSTreeLib::Terminal *__hidden this); // 4F636C: using guessed type int (*off_4F636C)(); // 4F63DC: using guessed type int (*off_4F63DC)(); // 4F63F8: using guessed type int (*off_4F63F8)(); // 4065B8: using guessed type char var_E0[4]; // 4065B8: using guessed type _DWORD var_DC[55]; //----- (00407656) -------------------------------------------------------- void __cdecl __tcf_0() { std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(dword_4E9B64); } //----- (00407674) -------------------------------------------------------- void __cdecl __tcf_0_0() { std::ios_base::Init::~Init(); } //----- (0040767E) -------------------------------------------------------- void __thiscall WXSS::Tokenizer::Tokenizer(int this, char *a2, int a3) { int v3; // edi v3 = this + 24; *(_DWORD *)this = this + 8; *(_DWORD *)(this + 24) = this + 32; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; *(_DWORD *)(this + 28) = 0; *(_BYTE *)(this + 32) = 0; std::string::operator=((unsigned int *)this, a2); std::string::_M_assign(v3, a3); } //----- (004076EA) -------------------------------------------------------- void WXSS::Tokenizer::InitTransitTable() { const char *i; // edx int v1; // eax const char *j; // edx int v3; // eax const char *k; // edx int v5; // eax const char *m; // edx int v7; // eax const char *v8; // edx int v9; // eax const char *v10; // edx int v11; // eax const char *n; // edx int v13; // eax const char *v14; // edx int v15; // eax const char *ii; // edx int v17; // eax const char *jj; // edx int v19; // eax const char *v20; // edx int v21; // eax const char *kk; // edx int v23; // eax const char *v24; // edx int v25; // eax const char *mm; // edx int v27; // eax const char *nn; // edx int v29; // eax const char *i1; // edx int v31; // eax const char *i2; // edx int v33; // eax if ( !WXSS::Tokenizer::InitTransitTable(void)::bInited ) { WXSS::Tokenizer::InitTransitTable(void)::bInited = 1; for ( i = " \n\t\r"; ; ++i ) { v1 = *i; if ( !(_BYTE)v1 ) break; dword_5422A0[2 * v1] = 134217729; dword_5422A4[2 * v1] = 0; } for ( j = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; ; ++j ) { v3 = *j; if ( !(_BYTE)v3 ) break; dword_5422A0[2 * v3] = 2; dword_5422A4[2 * v3] = 0; } for ( k = "0123456789"; ; ++k ) { v5 = *k; if ( !(_BYTE)v5 ) break; dword_5422A0[2 * v5] = 5; dword_5422A4[2 * v5] = 0; } for ( m = "#*,{}[]:()~=|>\"+^@;"; ; ++m ) { v7 = *m; if ( !(_BYTE)v7 ) break; dword_5422A0[2 * v7] = 1114113; dword_5422A4[2 * v7] = 0; } dword_542678 = 1114116; v8 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; dword_54267C = 0; dword_5422A0[0] = 1; dword_5422A4[0] = 0; dword_5423B0 = 6; dword_5423B4 = 0; dword_5423D8 = 7; dword_5423DC = 0; dword_5424A0 = 23; dword_5424A4 = 0; dword_5423B8 = 3; dword_5423BC = 0; dword_542AA0 = -1; dword_542AA4 = -1; dword_5423C0 = 33619969; dword_5423C4 = 0; dword_559678 = 88211481; dword_55967C = 0; dword_5592A0 = -1; dword_5592A4 = -1; dword_559AA0 = 24; dword_559AA4 = 0; dword_55A678 = 1114113; dword_55A67C = 0; dword_55AAA0 = -1; dword_55AAA4 = -1; while ( 1 ) { v9 = *v8; if ( !(_BYTE)v9 ) break; dword_5582A0[2 * v9] = 2; ++v8; dword_5582A4[2 * v9] = 0; } dword_558AA0 = 68288513; v10 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; dword_558AA4 = 0; while ( 1 ) { v11 = *v10; if ( !(_BYTE)v11 ) break; dword_5462A0[2 * v11] = 5; ++v10; dword_5462A4[2 * v11] = 0; } for ( n = "0123456789"; ; ++n ) { v13 = *n; if ( !(_BYTE)v13 ) break; dword_5462A0[2 * v13] = 5; dword_5462A4[2 * v13] = 0; } dword_5463C8 = 589825; v14 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; dword_5463CC = 0; dword_546AA0 = 67502081; dword_546AA4 = 0; dword_5473B0 = 327681; dword_5473B4 = 0; dword_547AA0 = 6; dword_547AA4 = 0; dword_5483D8 = 327681; dword_5483DC = 0; dword_548AA0 = 7; dword_548AA4 = 0; dword_542418 = 134217743; dword_54241C = 0; dword_5503F0 = 16; dword_5503F4 = 0; dword_550AA0 = 134217729; dword_550AA4 = 0; dword_5513F0 = 17; dword_5513F4 = 0; dword_551AA0 = 16; dword_551AA4 = 0; dword_552418 = 134217729; dword_55241C = 0; dword_5523F0 = 67108880; dword_5523F4 = 0; dword_552AA0 = 16; dword_552AA4 = 0; dword_545418 = 134217746; dword_54541C = 0; dword_5533F0 = 19; dword_5533F4 = 0; dword_553AA0 = 134217732; dword_553AA4 = 0; dword_5543F0 = 20; dword_5543F4 = 0; dword_554AA0 = 19; dword_554AA4 = 0; dword_555418 = 134217732; dword_55541C = 0; dword_5553F0 = 67108883; dword_5553F4 = 0; dword_555AA0 = 19; dword_555AA4 = 0; while ( 1 ) { v15 = *v14; if ( !(_BYTE)v15 ) break; dword_5432A0[2 * v15] = 2; ++v14; dword_5432A4[2 * v15] = 0; } for ( ii = "0123456789"; ; ++ii ) { v17 = *ii; if ( !(_BYTE)v17 ) break; dword_5432A0[2 * v17] = 2; dword_5432A4[2 * v17] = 0; } for ( jj = " \n\t\r"; ; ++jj ) { v19 = *jj; if ( !(_BYTE)v19 ) break; dword_5432A0[2 * v19] = 67764225; dword_5432A4[2 * v19] = 0; } dword_5433B0 = 67764225; v20 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; dword_5433B4 = 0; dword_543AA0 = 67764225; dword_543AA4 = 0; while ( 1 ) { v21 = *v20; if ( !(_BYTE)v21 ) break; dword_5442A0[2 * v21] = 3; ++v20; dword_5442A4[2 * v21] = 0; } for ( kk = "0123456789"; ; ++kk ) { v23 = *kk; if ( !(_BYTE)v23 ) break; dword_5442A0[2 * v23] = 3; dword_5442A4[2 * v23] = 0; } dword_544AA0 = 69337089; v24 = " \n\t\r"; dword_544AA4 = 0; while ( 1 ) { v25 = *v24; if ( !(_BYTE)v25 ) break; dword_5452A0[2 * v25] = 134217732; ++v24; dword_5452A4[2 * v25] = 0; } for ( mm = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; ; ++mm ) { v27 = *mm; if ( !(_BYTE)v27 ) break; dword_5452A0[2 * v27] = 8; dword_5452A4[2 * v27] = 0; } for ( nn = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; ; ++nn ) { v29 = *nn; if ( !(_BYTE)v29 ) break; dword_5492A0[2 * v29] = 8; dword_5492A4[2 * v29] = 0; } for ( i1 = "0123456789"; ; ++i1 ) { v31 = *i1; if ( !(_BYTE)v31 ) break; dword_5492A0[2 * v31] = 8; dword_5492A4[2 * v31] = 0; } for ( i2 = " \n\t\r"; ; ++i2 ) { v33 = *i2; if ( !(_BYTE)v33 ) break; dword_5492A0[2 * v33] = 67764228; dword_5492A4[2 * v33] = 0; } dword_549470 = 67764228; dword_549474 = 0; dword_549688 = 67764228; dword_54968C = 0; dword_549478 = 67764228; dword_54947C = 0; dword_549AA0 = -1; dword_549AA4 = -1; dword_545470 = 1114121; dword_545474 = 0; dword_545478 = 1114116; dword_54547C = 0; dword_545688 = 1114113; dword_54568C = 0; dword_545AA0 = -1; dword_545AA4 = -1; dword_54A478 = 84279300; dword_54A47C = 0; dword_54A688 = 84279300; dword_54A68C = 0; dword_54A3E0 = 10; dword_54A3E4 = 0; dword_54A3B0 = 11; dword_54A3B4 = 0; dword_54A3D8 = 13; dword_54A3DC = 0; dword_54B3E8 = 9; dword_54B3EC = 0; dword_54B3B0 = 12; dword_54B3B4 = 0; dword_54B3D8 = 14; dword_54B3DC = 0; dword_54BAA0 = 10; dword_54BAA4 = 0; dword_54C3B0 = 9; dword_54C3B4 = 0; dword_54E3D8 = 9; dword_54E3DC = 0; dword_54D3B0 = 10; dword_54D3B4 = 0; dword_54F3D8 = 10; dword_54F3DC = 0; dword_54CAA0 = 11; dword_54CAA4 = 0; dword_54EAA0 = 13; dword_54EAA4 = 0; dword_54DAA0 = 12; dword_54DAA4 = 0; dword_54FAA0 = 14; dword_54FAA4 = 0; dword_54AAA0 = 9; dword_54AAA4 = 0; } } // 5422A0: using guessed type int dword_5422A0[]; // 5422A4: using guessed type int dword_5422A4[67]; // 5423B0: using guessed type int dword_5423B0; // 5423B4: using guessed type int dword_5423B4; // 5423B8: using guessed type int dword_5423B8; // 5423BC: using guessed type int dword_5423BC; // 5423C0: using guessed type int dword_5423C0; // 5423C4: using guessed type int dword_5423C4; // 5423D8: using guessed type int dword_5423D8; // 5423DC: using guessed type int dword_5423DC; // 542418: using guessed type int dword_542418; // 54241C: using guessed type int dword_54241C; // 5424A0: using guessed type int dword_5424A0; // 5424A4: using guessed type int dword_5424A4; // 542678: using guessed type int dword_542678; // 54267C: using guessed type int dword_54267C; // 542AA0: using guessed type int dword_542AA0; // 542AA4: using guessed type int dword_542AA4; // 5432A0: using guessed type int dword_5432A0[]; // 5432A4: using guessed type int dword_5432A4[67]; // 5433B0: using guessed type int dword_5433B0; // 5433B4: using guessed type int dword_5433B4; // 543AA0: using guessed type int dword_543AA0; // 543AA4: using guessed type int dword_543AA4; // 5442A0: using guessed type int dword_5442A0[]; // 5442A4: using guessed type int dword_5442A4[167]; // 544AA0: using guessed type int dword_544AA0; // 544AA4: using guessed type int dword_544AA4; // 5452A0: using guessed type int dword_5452A0[]; // 5452A4: using guessed type int dword_5452A4[39]; // 545418: using guessed type int dword_545418; // 54541C: using guessed type int dword_54541C; // 545470: using guessed type int dword_545470; // 545474: using guessed type int dword_545474; // 545478: using guessed type int dword_545478; // 54547C: using guessed type int dword_54547C; // 545688: using guessed type int dword_545688; // 54568C: using guessed type int dword_54568C; // 545AA0: using guessed type int dword_545AA0; // 545AA4: using guessed type int dword_545AA4; // 5462A0: using guessed type int dword_5462A0[]; // 5462A4: using guessed type int dword_5462A4[73]; // 5463C8: using guessed type int dword_5463C8; // 5463CC: using guessed type int dword_5463CC; // 546AA0: using guessed type int dword_546AA0; // 546AA4: using guessed type int dword_546AA4; // 5473B0: using guessed type int dword_5473B0; // 5473B4: using guessed type int dword_5473B4; // 547AA0: using guessed type int dword_547AA0; // 547AA4: using guessed type int dword_547AA4; // 5483D8: using guessed type int dword_5483D8; // 5483DC: using guessed type int dword_5483DC; // 548AA0: using guessed type int dword_548AA0; // 548AA4: using guessed type int dword_548AA4; // 5492A0: using guessed type int dword_5492A0[]; // 5492A4: using guessed type int dword_5492A4[115]; // 549470: using guessed type int dword_549470; // 549474: using guessed type int dword_549474; // 549478: using guessed type int dword_549478; // 54947C: using guessed type int dword_54947C; // 549688: using guessed type int dword_549688; // 54968C: using guessed type int dword_54968C; // 549AA0: using guessed type int dword_549AA0; // 549AA4: using guessed type int dword_549AA4; // 54A3B0: using guessed type int dword_54A3B0; // 54A3B4: using guessed type int dword_54A3B4; // 54A3D8: using guessed type int dword_54A3D8; // 54A3DC: using guessed type int dword_54A3DC; // 54A3E0: using guessed type int dword_54A3E0; // 54A3E4: using guessed type int dword_54A3E4; // 54A478: using guessed type int dword_54A478; // 54A47C: using guessed type int dword_54A47C; // 54A688: using guessed type int dword_54A688; // 54A68C: using guessed type int dword_54A68C; // 54AAA0: using guessed type int dword_54AAA0; // 54AAA4: using guessed type int dword_54AAA4; // 54B3B0: using guessed type int dword_54B3B0; // 54B3B4: using guessed type int dword_54B3B4; // 54B3D8: using guessed type int dword_54B3D8; // 54B3DC: using guessed type int dword_54B3DC; // 54B3E8: using guessed type int dword_54B3E8; // 54B3EC: using guessed type int dword_54B3EC; // 54BAA0: using guessed type int dword_54BAA0; // 54BAA4: using guessed type int dword_54BAA4; // 54C3B0: using guessed type int dword_54C3B0; // 54C3B4: using guessed type int dword_54C3B4; // 54CAA0: using guessed type int dword_54CAA0; // 54CAA4: using guessed type int dword_54CAA4; // 54D3B0: using guessed type int dword_54D3B0; // 54D3B4: using guessed type int dword_54D3B4; // 54DAA0: using guessed type int dword_54DAA0; // 54DAA4: using guessed type int dword_54DAA4; // 54E3D8: using guessed type int dword_54E3D8; // 54E3DC: using guessed type int dword_54E3DC; // 54EAA0: using guessed type int dword_54EAA0; // 54EAA4: using guessed type int dword_54EAA4; // 54F3D8: using guessed type int dword_54F3D8; // 54F3DC: using guessed type int dword_54F3DC; // 54FAA0: using guessed type int dword_54FAA0; // 54FAA4: using guessed type int dword_54FAA4; // 5503F0: using guessed type int dword_5503F0; // 5503F4: using guessed type int dword_5503F4; // 550AA0: using guessed type int dword_550AA0; // 550AA4: using guessed type int dword_550AA4; // 5513F0: using guessed type int dword_5513F0; // 5513F4: using guessed type int dword_5513F4; // 551AA0: using guessed type int dword_551AA0; // 551AA4: using guessed type int dword_551AA4; // 5523F0: using guessed type int dword_5523F0; // 5523F4: using guessed type int dword_5523F4; // 552418: using guessed type int dword_552418; // 55241C: using guessed type int dword_55241C; // 552AA0: using guessed type int dword_552AA0; // 552AA4: using guessed type int dword_552AA4; // 5533F0: using guessed type int dword_5533F0; // 5533F4: using guessed type int dword_5533F4; // 553AA0: using guessed type int dword_553AA0; // 553AA4: using guessed type int dword_553AA4; // 5543F0: using guessed type int dword_5543F0; // 5543F4: using guessed type int dword_5543F4; // 554AA0: using guessed type int dword_554AA0; // 554AA4: using guessed type int dword_554AA4; // 5553F0: using guessed type int dword_5553F0; // 5553F4: using guessed type int dword_5553F4; // 555418: using guessed type int dword_555418; // 55541C: using guessed type int dword_55541C; // 555AA0: using guessed type int dword_555AA0; // 555AA4: using guessed type int dword_555AA4; // 5582A0: using guessed type int dword_5582A0[]; // 5582A4: using guessed type int dword_5582A4[511]; // 558AA0: using guessed type int dword_558AA0; // 558AA4: using guessed type int dword_558AA4; // 5592A0: using guessed type int dword_5592A0; // 5592A4: using guessed type int dword_5592A4; // 559678: using guessed type int dword_559678; // 55967C: using guessed type int dword_55967C; // 559AA0: using guessed type int dword_559AA0; // 559AA4: using guessed type int dword_559AA4; // 55A678: using guessed type int dword_55A678; // 55A67C: using guessed type int dword_55A67C; // 55AAA0: using guessed type int dword_55AAA0; // 55AAA4: using guessed type int dword_55AAA4; // 15412A4: using guessed type char WXSS::Tokenizer::InitTransitTable(void)::bInited; //----- (00407E88) -------------------------------------------------------- int WXSS::Tokenizer::InitSubStrCheckingCaluseTable() { int result; // eax char v1[56]; // [esp+14h] [ebp-38h] BYREF if ( !WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited ) { WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited = 1; WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 9, (char *)off_4EC1FC, 9); qmemcpy(&WXSS::Tokenizer::SCC, v1, 0x1Cu); WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 9, (char *)off_4EC200, 9); qmemcpy((char *)&WXSS::Tokenizer::SCC + 28, v1, 0x1Cu); WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 10, (char *)off_4EC1FC, 9); qmemcpy((char *)&WXSS::Tokenizer::SCC + 56, v1, 0x1Cu); WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 10, (char *)off_4EC200, 9); qmemcpy((char *)&WXSS::Tokenizer::SCC + 84, v1, 0x1Cu); result = WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 0, (char *)&byte_4EC204, 0); qmemcpy((char *)&WXSS::Tokenizer::SCC + 112, v1, 0x1Cu); } return result; } // 15412A0: using guessed type int WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited; //----- (00407F94) -------------------------------------------------------- int __cdecl WXSS::Tokenizer::TryGetAnotherTypeByAnySubStr(int a1, int a2, int a3, int a4) { char *v4; // ebx int v5; // esi unsigned int v6; // edi unsigned int v7; // eax if ( !a4 ) { v4 = (char *)&WXSS::Tokenizer::SCC; v5 = 0; v6 = a2 + 1; while ( *(_DWORD *)v4 ) { if ( a3 == *(_DWORD *)v4 ) { v7 = *((_DWORD *)v4 + 1); if ( v6 >= v7 && !strncmp(v4 + 8, (const char *)(v6 - v7 + a1), *((_DWORD *)v4 + 1)) ) return dword_53F6B8[7 * v5]; } ++v5; v4 += 28; } } return a4; } // 53F6B8: using guessed type int dword_53F6B8[1786]; //----- (00408002) -------------------------------------------------------- int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) { volatile signed __int32 *v1; // ecx int result; // eax v1 = *a1; if ( v1 ) return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); return result; } //----- (0040800E) -------------------------------------------------------- _DWORD *__usercall std::__relocate_a_1>@( _DWORD *a1@, _DWORD *a2@, _DWORD *a3@) { _DWORD *v3; // ebx _DWORD *v4; // edx int v5; // ecx volatile signed __int32 **v6; // ecx _DWORD *v8; // [esp+0h] [ebp-28h] _DWORD *v9; // [esp+4h] [ebp-24h] v3 = a1; v4 = a3; while ( v3 != a2 ) { *v4 = *v3; v4[1] = v3[1]; v5 = v3[2]; v4[2] = v5; if ( v5 ) { if ( _CRT_MT ) _InterlockedIncrement((volatile signed __int32 *)(v5 + 4)); else ++*(_DWORD *)(v5 + 4); } v8 = a1; v9 = v4; v4[3] = v3[3]; v4[4] = v3[4]; v4[5] = v3[5]; v4[6] = v3[6]; qmemcpy(v4 + 7, v3 + 7, 0x40u); v6 = (volatile signed __int32 **)(v3 + 2); v3 += 23; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v6); a1 = v8; v4 = v9 + 23; } return &a3[23 * ((700266407 * ((unsigned int)((char *)v3 - (char *)a1) >> 2)) & 0x3FFFFFFF)]; } // 15412D0: using guessed type int _CRT_MT; //----- (004080AE) -------------------------------------------------------- int __thiscall WXSS::Tokenizer::GetTokens(int *this, int a2, unsigned int *a3, int a4) { unsigned int v4; // eax int v5; // ebx _DWORD *v6; // edi int v7; // esi int AnotherTypeByAnySubStr; // eax int v9; // ebx int v10; // esi int v11; // edi std::ostream::sentry *v12; // eax std::ostream::sentry *v13; // eax std::ostream::sentry *v14; // eax std::ostream::sentry *v15; // eax std::ostream::sentry *v16; // eax std::ostream::sentry *v17; // eax std::ostream::sentry *v18; // eax size_t v19; // esi int v20; // ecx int v21; // eax int v22; // edx int v23; // eax unsigned int v24; // eax _BYTE **v25; // esi int v26; // eax unsigned __int8 *v27; // ebx unsigned int v28; // eax int v29; // edx volatile signed __int32 *v30; // eax unsigned int v31; // edx volatile signed __int32 *v32; // edx volatile signed __int32 *v33; // ebx std::ostream::sentry *v34; // eax std::ostream::sentry *v35; // eax const char *v36; // ebx int i; // esi const char *v38; // eax void (__cdecl *v40)(void *); // [esp+4h] [ebp-1A4h] void (__cdecl *v41)(void *); // [esp+4h] [ebp-1A4h] void (__cdecl *v42)(void *); // [esp+4h] [ebp-1A4h] size_t Size; // [esp+10h] [ebp-198h] int v44; // [esp+14h] [ebp-194h] int v46; // [esp+1Ch] [ebp-18Ch] unsigned int v47; // [esp+20h] [ebp-188h] int v48; // [esp+24h] [ebp-184h] unsigned int v49; // [esp+24h] [ebp-184h] int v50; // [esp+28h] [ebp-180h] unsigned __int8 v51; // [esp+2Fh] [ebp-179h] int v52; // [esp+30h] [ebp-178h] int v53; // [esp+34h] [ebp-174h] int v54; // [esp+38h] [ebp-170h] int v55; // [esp+3Ch] [ebp-16Ch] const char **v56; // [esp+44h] [ebp-164h] volatile signed __int32 *v57; // [esp+48h] [ebp-160h] BYREF void *v58[6]; // [esp+4Ch] [ebp-15Ch] BYREF void *v59; // [esp+64h] [ebp-144h] BYREF const char **v60; // [esp+68h] [ebp-140h] volatile signed __int32 *v61; // [esp+6Ch] [ebp-13Ch] BYREF int v62; // [esp+70h] [ebp-138h] size_t v63; // [esp+74h] [ebp-134h] int v64; // [esp+78h] [ebp-130h] int v65; // [esp+7Ch] [ebp-12Ch] char Destination[64]; // [esp+80h] [ebp-128h] BYREF unsigned int v67; // [esp+C0h] [ebp-E8h] BYREF volatile signed __int32 *v68; // [esp+C4h] [ebp-E4h] BYREF volatile signed __int32 *v69; // [esp+C8h] [ebp-E0h] BYREF int v70; // [esp+CCh] [ebp-DCh] BYREF size_t v71; // [esp+D0h] [ebp-D8h] int v72; // [esp+D4h] [ebp-D4h] int v73; // [esp+D8h] [ebp-D0h] char v74[204]; // [esp+DCh] [ebp-CCh] BYREF WXSS::Tokenizer::InitTransitTable(); WXSS::Tokenizer::InitSubStrCheckingCaluseTable(); v47 = this[1]; v52 = a4; if ( a4 <= 0 ) v52 = 1; v53 = *this; v4 = v47 / 7; if ( v47 > 0x9BD37A9 ) std::__throw_length_error((std::length_error *)"vector::reserve"); if ( v4 > -373475417 * ((*(_DWORD *)(a2 + 8) - *(_DWORD *)a2) >> 2) ) { v5 = 23 * v4; v6 = 0; v7 = *(_DWORD *)(a2 + 4) - *(_DWORD *)a2; if ( v47 > 6 ) v6 = operator new((struct type_info *)(92 * v4), v40); std::__relocate_a_1>( *(_DWORD **)a2, *(_DWORD **)(a2 + 4), v6); if ( *(_DWORD *)a2 ) operator delete(*(void **)a2); *(_DWORD *)a2 = v6; *(_DWORD *)(a2 + 4) = (char *)v6 + v7; *(_DWORD *)(a2 + 8) = &v6[v5]; } v44 = 4194305; AnotherTypeByAnySubStr = 0; v9 = 0; v10 = 1; v50 = 1; v46 = 1; v55 = 0; while ( 1 ) { if ( v55 > (int)v47 ) return 0; if ( !--v44 ) { std::string::operator=(a3, "something must be wrong"); return -1; } v51 = *(_BYTE *)(v53 + v55); if ( v55 == v47 ) v51 = 0; v11 = WXSS::Tokenizer::TT[1024 * v52 + 2 * v51]; AnotherTypeByAnySubStr = WXSS::Tokenizer::TryGetAnotherTypeByAnySubStr(v53, v55, v52, AnotherTypeByAnySubStr); if ( !v11 ) { v11 = dword_541AA0[1024 * v52]; if ( !v11 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v67); std::operator<<>((std::ostream::sentry *)&v69, "no transition for "); v12 = (std::ostream::sentry *)std::ostream::operator<<(v52); v13 = std::operator<<>(v12, " with input "); std::operator<<>(v13, v51); std::stringbuf::str((int)&v59, &v70); std::string::operator=(a3, &v59); std::string::_M_dispose(&v59); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v67); return -1; } } if ( v11 == -1 ) break; v52 = (unsigned __int16)v11; if ( (v11 & 0x30000) != 0 ) { v54 = ((v11 & 0x20000) == 0) + v55 - 1; if ( !AnotherTypeByAnySubStr ) { AnotherTypeByAnySubStr = 2; if ( (v11 & 0x40000) == 0 ) { AnotherTypeByAnySubStr = 4; if ( (v11 & 0x80000) == 0 ) { AnotherTypeByAnySubStr = 6; if ( (v11 & 0x400000) == 0 ) { AnotherTypeByAnySubStr = 5; if ( (v11 & 0x200000) == 0 ) AnotherTypeByAnySubStr = (v11 & 0x2000000) == 0 ? 1 : 7; } } } } if ( v9 <= v54 ) { v65 = v10; v59 = (void *)AnotherTypeByAnySubStr; Destination[0] = 0; v19 = ((v11 & 0x20000) == 0) + v55 - v9; v60 = 0; v61 = 0; v62 = v9; v64 = v46; v63 = v19; if ( AnotherTypeByAnySubStr == 1 ) { strncpy(Destination, (const char *)(v53 + v9), v19); Destination[v19] = 0; } else { v48 = ((v11 & 0x20000) == 0) + v55 - 1; if ( (v11 & 0x1000000) != 0 ) { v21 = v53; v20 = 4194313; LOBYTE(v21) = *(_BYTE *)(v53 + v9); while ( v54 != v9 ) { if ( (unsigned __int8)(v21 - 10) > 0x16u || !_bittest(&v20, v21 - 10) ) goto LABEL_44; if ( (_BYTE)v21 == 10 ) ++v64; v21 = v53; ++v9; LOBYTE(v21) = *(_BYTE *)(v53 + v9); } v9 = ((v11 & 0x20000) == 0) + v55 - 1; LABEL_44: v23 = v53; v22 = 4194313; v48 = ((v11 & 0x20000) == 0) + v55 - 1; for ( LOBYTE(v23) = *(_BYTE *)(v53 + v54); v9 < v48; LOBYTE(v23) = *(_BYTE *)(v53 + v48) ) { v24 = v23 - 10; if ( (unsigned __int8)v24 > 0x16u || !_bittest(&v22, v24) ) break; --v48; v23 = v53; } } v62 = v9; v25 = (_BYTE **)operator new((struct type_info *)0x18, v41); v26 = v48 - v9; v27 = (unsigned __int8 *)(v53 + v9); v49 = v26 + 1; *v25 = v25 + 2; Size = (size_t)&v27[v26 + 1]; if ( Size && !v27 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v67 = v26 + 1; if ( v49 > 0xF ) { *v25 = std::string::_M_create(&v67, 0); v25[2] = (_BYTE *)v67; } std::string::_S_copy_chars(*v25, v27, Size); v28 = v67; v29 = (int)*v25; v25[1] = (_BYTE *)v67; *(_BYTE *)(v29 + v28) = 0; v57 = 0; v67 = (unsigned int)v25; v68 = 0; v30 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v42); v31 = v67; *((_DWORD *)v30 + 3) = v25; *((_DWORD *)v30 + 1) = 1; *((_DWORD *)v30 + 2) = 1; *v30 = (volatile signed __int32)&off_4F63F8; v56 = (const char **)v31; v32 = v57; v67 = 0; v57 = v30; v68 = v32; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v68); v33 = v57; v60 = v56; if ( v57 != v61 ) { if ( v57 ) { if ( _CRT_MT ) _InterlockedIncrement(v57 + 1); else ++*((_DWORD *)v57 + 1); } if ( v61 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v61); v61 = v33; } std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v57); v63 = v49; } if ( v59 != (void *)1 ) { if ( !v60 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v67); std::operator<<>((std::ostream::sentry *)&v69, "pos: "); v34 = (std::ostream::sentry *)std::ostream::operator<<(v55); v35 = std::operator<<>(v34, "f739 error"); std::endl>(v35); std::stringbuf::str((int)v58, &v70); std::string::operator=(a3, v58); std::string::_M_dispose(v58); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v67); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v61); return -1; } if ( v59 == (void *)4 ) { v36 = *v60; if ( !_stricmp(*v60, "@media") || !_stricmp(v36, "@keyframes") || !_stricmp(v36, "@-webkit-keyframes") || !_stricmp(v36, "@supports") ) { v52 = 24; } for ( i = 0; (&WXSS::Tokenizer::DIRECTIVES)[i]; ++i ) { if ( !_stricmp(v36, (&WXSS::Tokenizer::DIRECTIVES)[i]) ) { v38 = (&WXSS::Tokenizer::DIRECTIVES)[i]; v74[0] = 0; v68 = 0; v69 = 0; v67 = 1; v70 = 0; v71 = 0; v72 = 0; v73 = 0; strcpy(v74, v38); v70 = v62; v72 = v64; v73 = v65; v71 = v63; std::vector::push_back((char **)a2, (WXSS::Token *)&v67); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v69); goto LABEL_80; } } } } std::vector::push_back((char **)a2, (WXSS::Token *)&v59); LABEL_80: v9 = ((v11 & 0x20000) == 0) + v55; v10 = v50 + 1; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v61); } AnotherTypeByAnySubStr = 0; } if ( (v11 & 0x4000000) != 0 ) { --v55; } else { if ( v51 == 10 ) { ++v46; v50 = 0; } ++v50; } ++v55; if ( (v11 & 0x8000000) != 0 ) { v10 = v50; v9 = v55; } } std::basic_stringstream,std::allocator>::basic_stringstream((int)&v67); v14 = std::operator<<((std::ostream::sentry *)&v69, this + 6); std::operator<<>(v14, "("); v15 = (std::ostream::sentry *)std::ostream::operator<<(v46); std::operator<<>(v15, ":"); v16 = (std::ostream::sentry *)std::ostream::operator<<(v50); v17 = std::operator<<>(v16, "): unexpected `"); v18 = std::operator<<>(v17, v51); std::operator<<>(v18, "` at pos "); std::ostream::operator<<(v55 + 1); if ( !v55 && v51 > 0xFDu ) std::operator<<>( (std::ostream::sentry *)&v69, " (shoud you check if there's any BOM at the begin of file)"); std::stringbuf::str((int)&v59, &v70); std::string::operator=(a3, &v59); std::string::_M_dispose(&v59); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v67); return v11; } // 408165: variable 'v40' is possibly undefined // 4085C7: variable 'v41' is possibly undefined // 408690: variable 'v42' is possibly undefined // 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 4F63F8: using guessed type int (*off_4F63F8)(); // 5412A0: using guessed type int WXSS::Tokenizer::TT[]; // 541AA0: using guessed type int dword_541AA0[]; // 15412D0: using guessed type int _CRT_MT; // 4080AE: using guessed type char Destination[64]; // 4080AE: using guessed type char var_CC[204]; //----- (00408A44) -------------------------------------------------------- void __cdecl __tcf_1_2() { std::ios_base::Init::~Init(); } //----- (00408A4E) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, char *a2) { unsigned int v3; // kr04_4 unsigned int result; // eax _BYTE *v5; // edx unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; v3 = strlen(a2) + 1; v6[0] = v3 - 1; if ( v3 - 1 > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 408A4E: using guessed type unsigned int var_1C[7]; //----- (00408ABF) -------------------------------------------------------- volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) { if ( _CRT_MT ) _InterlockedIncrement(result); else ++*result; return result; } // 15412D0: using guessed type int _CRT_MT; //----- (00408AD0) -------------------------------------------------------- void __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) { volatile signed __int32 *v1; // ecx signed __int32 v2; // eax signed __int32 v3; // eax int v4; // [esp-1Ch] [ebp-1Ch] int v5; // [esp-18h] [ebp-18h] int v6; // [esp-14h] [ebp-14h] volatile signed __int32 *v7; // [esp-10h] [ebp-10h] int v8; // [esp-Ch] [ebp-Ch] int v9; // [esp-8h] [ebp-8h] v1 = *a1; if ( v1 ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 + 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 + 1); *((_DWORD *)v1 + 1) = v2 - 1; } if ( v2 == 1 ) { (*(void (__stdcall **)(int, int, int, volatile signed __int32 *, int, int))(*v1 + 8))(v4, v5, v6, v1, v8, v9); if ( _CRT_MT ) { v3 = _InterlockedExchangeAdd(v7 + 2, 0xFFFFFFFF); } else { v3 = *((_DWORD *)v7 + 2); *((_DWORD *)v7 + 2) = v3 - 1; } if ( v3 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v7 + 12))(v7); } } } // 408B00: variable 'v4' is possibly undefined // 408B00: variable 'v5' is possibly undefined // 408B00: variable 'v6' is possibly undefined // 408B00: variable 'v8' is possibly undefined // 408B00: variable 'v9' is possibly undefined // 408B12: variable 'v7' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (00408B30) -------------------------------------------------------- void __fastcall std::vector>::~vector(void **a1) { char *v2; // edi char *i; // esi volatile signed __int32 **v4; // ecx v2 = (char *)a1[1]; for ( i = (char *)*a1; v2 != i; i += 8 ) { v4 = (volatile signed __int32 **)(i + 4); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); } if ( *a1 ) operator delete(*a1); } //----- (00408B68) -------------------------------------------------------- void __fastcall std::vector::~vector(void ***a1) { void **v2; // edi void **i; // esi void **v4; // ecx v2 = a1[1]; for ( i = *a1; v2 != i; i += 3 ) { v4 = i; std::vector>::~vector(v4); } if ( *a1 ) operator delete(*a1); } //----- (00408B9E) -------------------------------------------------------- void __thiscall std::vector::_M_move_assign(void *this, int *a2) { void **v2; // ebx void **v3; // edx int v4; // edi int v5; // edi void **v6[9]; // [esp+4h] [ebp-24h] BYREF v2 = (void **)*((_DWORD *)this + 1); v3 = (void **)*((_DWORD *)this + 2); v4 = *a2; v6[0] = *(void ***)this; v6[1] = v2; *(_DWORD *)this = v4; v5 = a2[1]; v6[2] = v3; *((_DWORD *)this + 1) = v5; *((_DWORD *)this + 2) = a2[2]; *a2 = 0; a2[1] = 0; a2[2] = 0; std::vector::~vector(v6); } //----- (00408BF2) -------------------------------------------------------- int WXSS::CSSTreeLib::TransitTable::GetTopType() { return 25; } //----- (00408BF8) -------------------------------------------------------- int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_move_assign( int this, _DWORD *a2) { int result; // eax int v4; // edi std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(void ***)(this + 8)); *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = this + 4; *(_DWORD *)(this + 16) = this + 4; result = a2[2]; *(_DWORD *)(this + 20) = 0; if ( result ) { v4 = a2[1]; *(_DWORD *)(this + 8) = result; *(_DWORD *)(this + 4) = v4; *(_DWORD *)(this + 12) = a2[3]; *(_DWORD *)(this + 16) = a2[4]; *(_DWORD *)(result + 4) = this + 4; result = a2[5]; *(_DWORD *)(this + 20) = result; a2[2] = 0; a2[3] = a2 + 1; a2[4] = a2 + 1; a2[5] = 0; } return result; } //----- (00408C70) -------------------------------------------------------- void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree( int a1) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(void ***)(a1 + 8)); } //----- (00408C84) -------------------------------------------------------- #error "408C84: too big function (funcsize=0)" //----- (00420200) -------------------------------------------------------- _DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4) { int v4; // esi _DWORD *v5; // ebx _DWORD *result; // eax switch ( a2 ) { case 1: case 2: case 3: case 4: case 11: case 33: case 43: case 45: case 55: case 56: case 57: case 58: case 59: case 61: case 62: case 64: case 76: case 78: if ( !a3 ) goto LABEL_7; goto LABEL_6; case 9: case 10: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 34: case 35: case 36: case 37: case 38: case 40: case 48: case 52: case 53: case 54: case 60: case 63: case 67: case 68: case 69: case 73: case 74: case 75: if ( a3 ) goto LABEL_3; goto LABEL_7; case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 41: case 46: case 47: case 77: case 79: case 80: goto LABEL_3; case 42: case 49: LABEL_6: if ( !a4 ) goto LABEL_7; LABEL_3: v4 = a1[5]; if ( v4 >= a1[6] ) goto LABEL_7; v5 = (_DWORD *)(a1[4] + 16 * a1[5]); v5[1] = 0; a1[5] = v4 + 1; *v5 = a2; v5[3] = a4; result = v5; v5[2] = a3; break; default: LABEL_7: result = 0; break; } return result; } //----- (00420260) -------------------------------------------------------- _DWORD *__usercall d_ref_qualifier@(_DWORD *a1@, _DWORD *a2@) { _DWORD *result; // eax char *v4; // edx char v5; // cl int v6; // ebp int v7; // esi int v8; // edi result = a2; v4 = (char *)a1[3]; v5 = *v4; if ( *v4 == 82 || v5 == 79 ) { v6 = a1[11]; v7 = 32; v8 = v6 + 3; if ( v5 == 82 ) { v8 = v6 + 2; v7 = 31; } a1[11] = v8; a1[3] = v4 + 1; return d_make_comp(a1, v7, (int)result, 0); } return result; } //----- (004202D0) -------------------------------------------------------- _DWORD *__usercall d_count_templates_scopes@(_DWORD *result@, _DWORD *a2@, int a3@) { _DWORD *v3; // esi _DWORD *v4; // ebx int v5; // edx int v6; // ecx if ( a2 ) { v3 = result; v4 = a2; while ( 2 ) { switch ( *v4 ) { case 1: case 2: case 3: case 9: case 0xA: case 0xB: case 0xC: case 0xD: case 0xE: case 0xF: case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x19: case 0x1A: case 0x1B: case 0x1C: case 0x1D: case 0x1E: case 0x1F: case 0x20: case 0x21: case 0x22: case 0x25: case 0x26: case 0x28: case 0x29: case 0x2A: case 0x2B: case 0x2D: case 0x2E: case 0x2F: case 0x30: case 0x31: case 0x34: case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: case 0x3A: case 0x3B: case 0x3C: case 0x3D: case 0x3E: case 0x3F: case 0x40: case 0x43: case 0x49: case 0x4A: case 0x4B: case 0x4C: case 0x4D: case 0x4E: case 0x4F: case 0x50: goto LABEL_6; case 4: v5 = result[71]; ++result[81]; if ( v5 <= 2048 ) goto LABEL_12; return result; case 7: case 8: case 0x33: v4 = (_DWORD *)v4[3]; goto LABEL_9; case 0x23: case 0x24: result = (_DWORD *)v4[2]; if ( *result == 5 ) ++v3[78]; LABEL_6: v5 = v3[71]; if ( v5 > 2048 ) return result; LABEL_12: v3[71] = v5 + 1; d_count_templates_scopes(a3, v4[2]); result = (_DWORD *)d_count_templates_scopes(v6, v4[3]); --v3[71]; return result; case 0x2C: case 0x44: case 0x45: case 0x46: case 0x47: v4 = (_DWORD *)v4[2]; LABEL_9: if ( !v4 ) return result; continue; default: return result; } } } return result; } // 420348: variable 'v6' is possibly undefined //----- (00420380) -------------------------------------------------------- int __usercall d_append_buffer@(int result@, char *a2@, int a3@) { char *v3; // edi char *v4; // esi int v5; // ebx int v6; // ecx char v7; // dl int v8; // eax char v9; // [esp+1Fh] [ebp-Dh] if ( a3 ) { v3 = &a2[a3]; v4 = a2; v5 = result; result = *(_DWORD *)(result + 256); do { v7 = *v4; if ( result == 255 ) { v8 = *(_DWORD *)(v5 + 268); *(_BYTE *)(v5 + 255) = 0; v9 = v7; (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v8); ++*(_DWORD *)(v5 + 296); v7 = v9; v6 = 0; result = 1; } else { v6 = result++; } ++v4; *(_DWORD *)(v5 + 256) = result; *(_BYTE *)(v5 + v6) = v7; *(_BYTE *)(v5 + 260) = v7; } while ( v4 != v3 ); } return result; } //----- (00420420) -------------------------------------------------------- int __usercall d_number_isra_0@(char **a1@) { int v2; // ebx int v3; // ecx char *v4; // ebx signed int v5; // esi int v6; // eax int v8; // [esp+0h] [ebp-14h] v2 = (int)*a1; v3 = **a1; if ( (_BYTE)v3 != 110 ) { if ( (unsigned __int8)(v3 - 48) <= 9u ) { v8 = 0; goto LABEL_4; } return 0; } *a1 = (char *)(v2 + 1); v3 = *(char *)(v2 + 1); if ( (unsigned __int8)(v3 - 48) > 9u ) return 0; v8 = 1; ++v2; LABEL_4: v4 = (char *)(v2 + 1); v5 = 0; while ( 1 ) { *a1 = v4; v6 = v3 + 10 * v5; v3 = *v4; v5 = v6 - 48; if ( (unsigned __int8)(v3 - 48) > 9u ) break; ++v4; if ( (int)((0x7FFFFFFF - (v3 - 48)) / 0xAu) < v5 ) return -1; } if ( v8 ) return 48 - v6; return v5; } //----- (004204E0) -------------------------------------------------------- _DWORD *__usercall d_number_component@(int a1@) { int v1; // edx int v2; // ebx int v3; // eax _DWORD *v4; // ebx v1 = *(_DWORD *)(a1 + 20); if ( v1 >= *(_DWORD *)(a1 + 24) ) return 0; v2 = *(_DWORD *)(a1 + 20); v3 = a1 + 12; v4 = (_DWORD *)(*(_DWORD *)(v3 + 4) + 16 * v2); v4[1] = 0; *(_DWORD *)(v3 + 8) = v1 + 1; *v4 = 66; v4[2] = d_number_isra_0((char **)v3); return v4; } //----- (00420520) -------------------------------------------------------- int __usercall d_compact_number@(int a1@) { _BYTE *v1; // edx int result; // eax v1 = *(_BYTE **)(a1 + 12); if ( *v1 == 95 ) { result = 0; LABEL_5: *(_DWORD *)(a1 + 12) = v1 + 1; return result; } if ( *v1 != 110 ) { result = d_number_isra_0((char **)(a1 + 12)) + 1; if ( result >= 0 ) { v1 = *(_BYTE **)(a1 + 12); if ( *v1 == 95 ) goto LABEL_5; } } return -1; } //----- (00420560) -------------------------------------------------------- _DWORD *__usercall d_template_param@(_DWORD *a1@) { _BYTE *v2; // eax int v3; // edx int v4; // ecx _DWORD *result; // eax v2 = (_BYTE *)a1[3]; if ( *v2 != 84 ) return 0; a1[3] = v2 + 1; v3 = d_compact_number((int)a1); if ( v3 < 0 ) return 0; v4 = a1[5]; if ( v4 >= a1[6] ) return 0; result = (_DWORD *)(a1[4] + 16 * a1[5]); result[1] = 0; a1[5] = v4 + 1; *result = 5; result[2] = v3; return result; } //----- (004205C0) -------------------------------------------------------- _DWORD *__usercall d_source_name@(int a1@) { _DWORD *v1; // esi int v3; // eax _BYTE *v4; // edx int v5; // esi int v7; // ecx int v8; // [esp+0h] [ebp-1Ch] int v9; // [esp+4h] [ebp-18h] v1 = 0; v3 = d_number_isra_0((char **)(a1 + 12)); if ( v3 > 0 ) { v8 = *(_DWORD *)(a1 + 12); if ( v3 > *(_DWORD *)(a1 + 4) - v8 ) goto LABEL_14; v4 = (_BYTE *)(v8 + v3); *(_DWORD *)(a1 + 12) = v8 + v3; if ( (*(_BYTE *)(a1 + 8) & 4) != 0 && *v4 == 36 ) { v7 = *(_DWORD *)(a1 + 20); v5 = *(_DWORD *)(a1 + 24); *(_DWORD *)(a1 + 12) = v4 + 1; v9 = v7; if ( v3 > 9 ) { LABEL_6: if ( *(_DWORD *)v8 == 1330399071 && *(_DWORD *)(v8 + 4) == 1598832962 && (*(_BYTE *)(v8 + 8) == 95 || *(_BYTE *)(v8 + 8) == 46 || *(_BYTE *)(v8 + 8) == 36) && *(_BYTE *)(v8 + 9) == 78 ) { *(_DWORD *)(a1 + 44) = *(_DWORD *)(a1 + 44) + 22 - v3; if ( v5 > v9 ) { v1 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * v9); *(_DWORD *)(a1 + 20) = v9 + 1; v1[1] = 0; *v1 = 0; v1[2] = "(anonymous namespace)"; v1[3] = 21; goto LABEL_10; } goto LABEL_14; } if ( v5 > v9 ) { v1 = (_DWORD *)(16 * v9 + *(_DWORD *)(a1 + 16)); v1[1] = 0; *(_DWORD *)(a1 + 20) = v9 + 1; LABEL_9: v1[1] = 0; *v1 = 0; v1[2] = v8; v1[3] = v3; LABEL_10: *(_DWORD *)(a1 + 40) = v1; return v1; } LABEL_14: v1 = 0; goto LABEL_10; } } else { v5 = *(_DWORD *)(a1 + 24); v9 = *(_DWORD *)(a1 + 20); if ( v3 > 9 ) goto LABEL_6; } if ( v5 > v9 ) { v1 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * v9); v1[1] = 0; *(_DWORD *)(a1 + 20) = v9 + 1; if ( v8 ) goto LABEL_9; } goto LABEL_14; } return v1; } //----- (00420750) -------------------------------------------------------- _DWORD *__usercall d_abi_tags@(_DWORD *a1@, _DWORD *comp@) { int v4; // esi _BYTE *i; // eax _DWORD *v6; // eax v4 = a1[10]; for ( i = (_BYTE *)a1[3]; *i == 66; i = (_BYTE *)a1[3] ) { a1[3] = i + 1; v6 = d_source_name((int)a1); comp = d_make_comp(a1, 76, (int)comp, (int)v6); } a1[10] = v4; return comp; } //----- (004207A0) -------------------------------------------------------- _DWORD *__usercall d_substitution@(_DWORD *a1@, char a2@
) { _BYTE *v3; // eax int v5; // edx char v6; // cl const char *v7; // eax _DWORD *result; // eax unsigned int v9; // eax unsigned int i; // ecx char *v11; // eax unsigned int v12; // ecx int v13; // ebp int v14; // edx int v15; // edi int v16; // ecx _DWORD *v17; // esi int v18; // ecx int v19; // esi int v20; // edx BOOL v21; // [esp+0h] [ebp-14h] v3 = (_BYTE *)a1[3]; if ( *v3 != 83 ) return 0; a1[3] = v3 + 1; LOBYTE(v5) = v3[1]; if ( !(_BYTE)v5 ) goto LABEL_3; a1[3] = v3 + 2; v5 = (char)v3[1]; if ( (unsigned __int8)(v5 - 48) <= 9u ) { if ( (_BYTE)v5 != 95 ) goto LABEL_15; LABEL_24: v12 = 0; LABEL_25: if ( a1[8] > v12 ) return *(_DWORD **)(a1[7] + 4 * v12); return 0; } if ( (_BYTE)v5 == 95 ) goto LABEL_24; if ( (unsigned __int8)(v5 - 65) <= 0x19u ) { LABEL_15: v9 = 0; if ( (unsigned __int8)(v5 - 48) > 9u ) goto LABEL_21; LABEL_16: for ( i = v5 + 36 * v9 - 48; v9 <= i; i = v5 + 36 * v9 - 55 ) { v11 = (char *)a1[3]; v5 = *v11; if ( (_BYTE)v5 ) { a1[3] = v11 + 1; v5 = *v11; if ( (_BYTE)v5 == 95 ) { v12 = i + 1; goto LABEL_25; } } v9 = i; if ( (unsigned __int8)(v5 - 48) <= 9u ) goto LABEL_16; LABEL_21: if ( (unsigned __int8)(v5 - 65) > 0x19u ) return 0; } return 0; } LABEL_3: v21 = (a1[2] & 8) != 0; if ( (a1[2] & 8) == 0 && (a2 & 1) != 0 && (unsigned __int8)(*(_BYTE *)a1[3] - 67) <= 1u ) v21 = 1; v6 = 116; v7 = "t"; while ( (_BYTE)v5 != v6 ) { v7 += 28; if ( v7 == (const char *)&unk_4EF0C4 ) return 0; v6 = *v7; } v13 = *((_DWORD *)v7 + 5); v14 = a1[5]; v15 = a1[6]; if ( v13 ) { v16 = *((_DWORD *)v7 + 6); if ( v14 >= v15 ) { v17 = 0; } else { ++v14; v17 = (_DWORD *)(a1[4] + 16 * a1[5]); v17[1] = 0; a1[5] = v14; *v17 = 24; v17[2] = v13; v17[3] = v16; } a1[10] = v17; } if ( v21 ) { v18 = *((_DWORD *)v7 + 3); v19 = *((_DWORD *)v7 + 4); } else { v18 = *((_DWORD *)v7 + 1); v19 = *((_DWORD *)v7 + 2); } a1[11] += v19; if ( v14 >= v15 ) { result = 0; } else { result = (_DWORD *)(a1[4] + 16 * v14); result[1] = 0; a1[5] = v14 + 1; *result = 24; result[2] = v18; result[3] = v19; } if ( *(_BYTE *)a1[3] == 66 ) { result = d_abi_tags(a1, result); if ( result ) { v20 = a1[8]; if ( v20 < a1[9] ) { *(_DWORD *)(a1[7] + 4 * v20) = result; a1[8] = v20 + 1; return result; } } return 0; } return result; } //----- (00420990) -------------------------------------------------------- int __usercall d_call_offset@(int a1@, int a2@) { _BYTE *v3; // eax _BYTE *v5; // eax _BYTE *v6; // eax if ( !a2 ) { v3 = *(_BYTE **)(a1 + 12); if ( !*v3 ) return 0; *(_DWORD *)(a1 + 12) = v3 + 1; a2 = (char)*v3; } if ( a2 == 104 ) { d_number_isra_0((char **)(a1 + 12)); } else { if ( a2 != 118 ) return 0; d_number_isra_0((char **)(a1 + 12)); v5 = *(_BYTE **)(a1 + 12); if ( *v5 != 95 ) return 0; *(_DWORD *)(a1 + 12) = v5 + 1; d_number_isra_0((char **)(a1 + 12)); } v6 = *(_BYTE **)(a1 + 12); if ( *v6 != 95 ) return 0; *(_DWORD *)(a1 + 12) = v6 + 1; return 1; } //----- (00420A00) -------------------------------------------------------- BOOL __usercall next_is_type_qual_isra_0@(char *a1@) { char v1; // dl v1 = *a1; if ( v1 == 86 || v1 == 114 || v1 == 75 ) return 1; if ( v1 == 68 ) return (a1[1] & 0xDF) == 79 || (unsigned __int8)(a1[1] - 119) <= 1u; return 0; } //----- (00420A60) -------------------------------------------------------- int __usercall d_discriminator@(int a1@) { _BYTE *v2; // eax int v3; // edx int result; // eax int v5; // eax _BYTE *v6; // edx v2 = *(_BYTE **)(a1 + 12); if ( *v2 != 95 ) return 1; *(_DWORD *)(a1 + 12) = v2 + 1; if ( v2[1] != 95 ) { v3 = d_number_isra_0((char **)(a1 + 12)); result = 0; if ( v3 < 0 ) return result; return 1; } *(_DWORD *)(a1 + 12) = v2 + 2; v5 = d_number_isra_0((char **)(a1 + 12)); if ( v5 < 0 ) return 0; if ( v5 <= 9 ) return 1; v6 = *(_BYTE **)(a1 + 12); result = 0; if ( *v6 == 95 ) { *(_DWORD *)(a1 + 12) = v6 + 1; return 1; } return result; } //----- (00420AC0) -------------------------------------------------------- _BYTE *__cdecl d_growable_string_callback_adapter(void *Src, size_t Size, unsigned int *a3) { size_t v3; // esi unsigned int v4; // edx _BYTE *result; // eax v3 = a3[2]; v4 = a3[3]; result = (_BYTE *)(Size + a3[1] + 1); if ( (unsigned int)result > v3 ) { if ( v4 ) return result; if ( v3 || (v3 = 2, (unsigned int)result > 2) ) { do v3 *= 2; while ( (unsigned int)result > v3 ); } result = __mingw_realloc(*a3, v3); if ( !result ) { result = (_BYTE *)__mingw_free(*a3); *a3 = 0; a3[1] = 0; a3[2] = 0; a3[3] = 1; return result; } *a3 = (unsigned int)result; v4 = a3[3]; a3[2] = v3; } if ( !v4 ) { memcpy((void *)(*a3 + a3[1]), Src, Size); result = (_BYTE *)(a3[1] + Size + *a3); *result = 0; a3[1] += Size; } return result; } //----- (00420B80) -------------------------------------------------------- _DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int a2@) { if ( result ) { while ( *result == 47 ) { if ( a2 <= 0 ) { if ( a2 ) return 0; return (_DWORD *)result[2]; } result = (_DWORD *)result[3]; --a2; if ( !result ) return result; } } return 0; } //----- (00420BD0) -------------------------------------------------------- _DWORD *__usercall d_lookup_template_argument_isra_0@(int a1@, int *a2@) { _DWORD *result; // eax int v4; // edx result = *(_DWORD **)(a1 + 272); if ( result ) { v4 = *a2; result = *(_DWORD **)(result[1] + 12); if ( v4 >= 0 ) return d_index_template_argument_part_0(result, v4); } else { *(_DWORD *)(a1 + 280) = 1; } return result; } //----- (00420C10) -------------------------------------------------------- _DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@) { _DWORD *v4; // ebx _DWORD *result; // eax if ( !a2 ) return 0; v4 = a2; while ( 2 ) { switch ( *v4 ) { case 0: case 6: case 0x18: case 0x27: case 0x2C: case 0x32: case 0x41: case 0x42: case 0x46: case 0x47: case 0x48: case 0x4B: case 0x4C: goto LABEL_6; case 5: result = d_lookup_template_argument_isra_0(a1, v4 + 2); if ( !result || *result != 47 ) goto LABEL_6; return result; case 7: case 8: case 0x33: goto LABEL_9; default: result = (_DWORD *)d_find_pack(a3, v4[2]); if ( result ) return result; LABEL_9: v4 = (_DWORD *)v4[3]; if ( v4 ) continue; LABEL_6: result = 0; break; } return result; } } // 420C55: variable 'a3' is possibly undefined //----- (00420C80) -------------------------------------------------------- _DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
) { char *v3; // eax int v4; // edi char v5; // dl _DWORD *v6; // eax _DWORD *v7; // esi int v8; // eax int v9; // eax _BYTE *v11; // eax char v12; // dl int v13; // eax _BYTE *v14; // eax int *v15; // esi int v16; // eax int v17; // eax int v18; // ecx int v19; // edx _DWORD *v20; // eax char **v21; // eax char *v22; // edx int v23; // ecx int v24; // eax unsigned __int8 v25; // al int v26; // eax int *v27; // ecx char *v28; // eax char v29; // dl int v30; // eax _DWORD *v31; // eax int *v32; // eax int *v33; // esi _DWORD *v34; // ecx _BYTE *v35; // eax _DWORD *v36; // eax char v37; // al _BYTE *v38; // eax _BYTE *v39; // eax _DWORD *v40; // eax _DWORD *v41; // eax _DWORD *v42; // eax _DWORD *v43; // eax char *v44; // eax _DWORD *v45; // eax unsigned __int8 *v46; // edx int v47; // ecx _DWORD *v48; // ecx _BYTE *v49; // eax _DWORD *v50; // eax char v51; // al int *v52; // eax _DWORD *v53; // eax int v54; // [esp+0h] [ebp-2Ch] _DWORD *comp; // [esp+0h] [ebp-2Ch] int v56; // [esp+4h] [ebp-28h] int v57; // [esp+8h] [ebp-24h] int v58; // [esp+Ch] [ebp-20h] int v59; // [esp+10h] [ebp-1Ch] int v60; // [esp+14h] [ebp-18h] int v61; // [esp+18h] [ebp-14h] int v62; // [esp+1Ch] [ebp-10h] int v63; // [esp+20h] [ebp-Ch] int v64; // [esp+24h] [ebp-8h] int v65; // [esp+28h] [ebp-4h] _DWORD *v66; // [esp+2Ch] [ebp+0h] v3 = (char *)a1[3]; HIBYTE(v60) = a2; if ( *v3 != a2 ) { while ( 1 ) { v4 = a1[12]; a1[12] = 1; v5 = *v3; if ( *v3 == 76 ) { v7 = d_expr_primary(a1); goto LABEL_27; } switch ( v5 ) { case 'T': v7 = d_template_param(a1); goto LABEL_27; case 's': v12 = v3[1]; if ( v12 == 114 ) { a1[3] = v3 + 2; v33 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65); v34 = d_unqualified_name(a1); v35 = (_BYTE *)a1[3]; if ( *v35 == 73 ) { v61 = (int)v34; a1[3] = v35 + 1; v43 = d_template_args_1(a1); comp = d_make_comp(a1, 4, v61, (int)v43); v36 = d_make_comp(a1, 1, (int)v33, (int)comp); } else { v36 = d_make_comp(a1, 1, (int)v33, (int)v34); } v7 = v36; goto LABEL_27; } if ( v12 == 112 ) { a1[3] = v3 + 2; v13 = d_expression_1(); v7 = d_make_comp(a1, 75, v13, 0); goto LABEL_27; } break; case 'f': if ( v3[1] == 112 ) { a1[3] = v3 + 2; if ( v3[2] == 84 ) { v18 = 0; a1[3] = v3 + 3; } else { v17 = d_compact_number((int)a1); if ( (v17 & 0x7FFFFFFF) == 0x7FFFFFFF ) goto LABEL_15; v18 = v17 + 1; } v19 = a1[5]; if ( v19 >= a1[6] ) { LABEL_15: a1[12] = v4; return 0; } v20 = (_DWORD *)(a1[4] + 16 * a1[5]); v20[1] = 0; v7 = v20; a1[5] = v19 + 1; *v20 = 6; v20[2] = v18; LABEL_19: a1[12] = v4; goto LABEL_20; } break; default: if ( (unsigned __int8)(v5 - 48) <= 9u ) { v7 = d_unqualified_name(a1); if ( !v7 ) goto LABEL_32; LABEL_18: v11 = (_BYTE *)a1[3]; if ( *v11 != 73 ) goto LABEL_19; a1[3] = v11 + 1; v31 = d_template_args_1(a1); v7 = d_make_comp(a1, 4, (int)v7, (int)v31); goto LABEL_27; } if ( v5 == 111 ) { if ( v3[1] == 110 ) { a1[3] = v3 + 2; v7 = d_unqualified_name(a1); if ( !v7 ) { LABEL_32: a1[12] = v4; return v7; } goto LABEL_18; } } else if ( (v5 == 105 || v5 == 116) && v3[1] == 108 ) { v14 = v3 + 2; v15 = 0; a1[3] = v14; if ( v5 == 116 ) { v15 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65); if ( !*(_BYTE *)(a1[3] + 1) ) goto LABEL_15; } else if ( !v14[1] ) { goto LABEL_15; } v16 = d_exprlist(); v7 = d_make_comp(a1, 49, (int)v15, v16); goto LABEL_27; } break; } v6 = d_operator_name(a1); v7 = v6; if ( !v6 ) goto LABEL_32; v8 = *v6; if ( v8 != 50 ) { if ( v8 == 52 ) { v38 = (_BYTE *)a1[3]; if ( *v38 != 95 ) goto LABEL_80; a1[3] = v38 + 1; v32 = (int *)d_exprlist(); } else { if ( v8 != 51 ) goto LABEL_15; v9 = v7[2]; if ( v9 > 1 ) goto LABEL_15; if ( !v9 ) goto LABEL_13; if ( v9 != 1 ) goto LABEL_15; LABEL_80: v32 = (int *)d_expression_1(); } LABEL_78: v7 = d_make_comp(a1, 55, (int)v7, (int)v32); goto LABEL_27; } v21 = (char **)v7[2]; v22 = *v21; a1[11] += v21[2] - 2; v23 = (unsigned __int8)*v22; if ( v23 == 115 && v22[1] == 116 && !v22[2] ) { v32 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65); goto LABEL_78; } v24 = (int)v21[3]; v61 = v24; if ( v24 == 1 ) { v37 = *v22; if ( (*v22 == 112 || v37 == 109) && v37 == v22[1] ) { v39 = (_BYTE *)a1[3]; if ( *v39 == 95 ) { v61 = 0; a1[3] = v39 + 1; v23 = (unsigned __int8)*v22; } } else { v61 = 0; } if ( v23 == 115 && v22[1] == 80 && !v22[2] ) v32 = d_template_args_1(a1); else v32 = (int *)d_expression_1(); if ( v61 ) v32 = d_make_comp(a1, 57, (int)v32, (int)v32); goto LABEL_78; } if ( v24 <= 1 ) { if ( v24 ) goto LABEL_15; LABEL_13: v7 = d_make_comp(a1, 54, (int)v7, 0); goto LABEL_27; } if ( v24 != 2 ) { if ( v24 != 3 ) goto LABEL_15; if ( v23 == 113 && v22[1] == 117 && !v22[2] ) { v40 = (_DWORD *)d_expression_1(); LABEL_91: v61 = (int)v40; v62 = d_expression_1(); v30 = d_expression_1(); v27 = (int *)v62; if ( !v30 ) goto LABEL_15; } else { if ( *v22 == 102 ) { v40 = d_operator_name(a1); goto LABEL_91; } if ( *v22 != 110 ) goto LABEL_15; v25 = v22[1]; if ( v25 != 119 && v25 != 97 ) goto LABEL_15; v26 = d_exprlist(); v27 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v26, v62, v63, v64, v65); v28 = (char *)a1[3]; v29 = *v28; if ( *v28 == 69 ) { a1[3] = v28 + 1; v30 = 0; } else if ( v29 == 112 ) { if ( v28[1] != 105 ) goto LABEL_15; v62 = (int)v27; a1[3] = v28 + 2; v30 = d_exprlist(); v27 = (int *)v62; } else { if ( v29 != 105 || v28[1] != 108 ) goto LABEL_15; v62 = (int)v27; v30 = d_expression_1(); v27 = (int *)v62; } } v41 = d_make_comp(a1, 60, (int)v27, v30); v42 = d_make_comp(a1, 59, v61, (int)v41); v7 = d_make_comp(a1, 58, (int)v7, (int)v42); goto LABEL_27; } v44 = *(char **)v7[2]; if ( v44[1] == 99 && ((v51 = *v44, (unsigned __int8)(v51 - 114) <= 1u) || (unsigned __int8)(v51 - 99) <= 1u) ) { v52 = d_type((int)a1, v54, v56, v57, v58, v59, v60, 2, (int)v22, v63, v64, v65); v46 = (unsigned __int8 *)v62; v61 = (int)v52; } else { v62 = (int)v22; if ( *v22 == 102 ) v45 = d_operator_name(a1); else v45 = (_DWORD *)d_expression_1(); v46 = (unsigned __int8 *)v62; v61 = (int)v45; } v47 = *v46; if ( v47 == 99 && v46[1] == 108 && !v46[2] ) { v48 = (_DWORD *)d_exprlist(); } else if ( v47 == 100 && v46[1] == 116 && !v46[2] || v47 == 112 && v46[1] == 116 && !v46[2] ) { v48 = d_unqualified_name(a1); v49 = (_BYTE *)a1[3]; if ( *v49 == 73 ) { v62 = (int)v48; a1[3] = v49 + 1; v53 = d_template_args_1(a1); v48 = d_make_comp(a1, 4, v62, (int)v53); } } else { v48 = (_DWORD *)d_expression_1(); } v50 = d_make_comp(a1, 57, v61, (int)v48); v7 = d_make_comp(a1, 56, (int)v7, (int)v50); LABEL_27: a1[12] = v4; if ( !v7 ) return 0; LABEL_20: v66 = d_make_comp(a1, 46, (int)v7, 0); if ( !v66 ) return 0; v3 = (char *)a1[3]; if ( *v3 == HIBYTE(v60) ) { a1[3] = v3 + 1; return v66; } } } a1[3] = v3 + 1; return d_make_comp(a1, 46, 0, 0); } // 420DA5: variable 'v60' is possibly undefined // 420FA4: variable 'v54' is possibly undefined // 420FA4: variable 'v56' is possibly undefined // 420FA4: variable 'v57' is possibly undefined // 420FA4: variable 'v58' is possibly undefined // 420FA4: variable 'v59' is possibly undefined // 420FA4: variable 'v62' is possibly undefined // 420FA4: variable 'v63' is possibly undefined // 420FA4: variable 'v64' is possibly undefined // 420FA4: variable 'v65' is possibly undefined // 42102E: variable 'v61' is possibly undefined // 4213F0: using guessed type int d_expression_1(void); //----- (004213F0) -------------------------------------------------------- _DWORD *__usercall d_expression_1@(_DWORD *a1@) { char *v2; // edx char v3; // al _DWORD *v4; // esi _BYTE *v5; // eax int *v7; // eax int v8; // esi int v9; // eax int v10; // eax char v11; // al int v12; // eax int v13; // eax int v14; // edx int v15; // ecx _DWORD *v16; // eax _BYTE *v17; // edx int v18; // esi int *v19; // eax char **v20; // edx char *v21; // edi int v22; // eax int v23; // ebp _DWORD *v24; // eax _DWORD *v25; // edi int *v26; // ebp _DWORD *v27; // eax _DWORD *v28; // eax _DWORD *v29; // eax _DWORD *v30; // eax int *v31; // esi _DWORD *v32; // edi _BYTE *v33; // eax _DWORD *v35; // eax _DWORD *v36; // eax _DWORD *v37; // eax char v38; // dl _BYTE *v39; // edx char *v40; // eax int *v41; // ebp int v42; // eax _DWORD *v43; // edi _DWORD *v44; // eax unsigned __int8 v45; // al char *v46; // eax char v47; // dl _BYTE *v48; // eax _DWORD *v49; // eax _BYTE *v50; // eax char v51; // al int v52; // [esp+0h] [ebp-2Ch] _DWORD *comp; // [esp+0h] [ebp-2Ch] int v54; // [esp+4h] [ebp-28h] int v55; // [esp+8h] [ebp-24h] int v56; // [esp+Ch] [ebp-20h] int v57; // [esp+10h] [ebp-1Ch] int v58; // [esp+14h] [ebp-18h] int v59; // [esp+18h] [ebp-14h] int v60; // [esp+1Ch] [ebp-10h] int v61; // [esp+20h] [ebp-Ch] int v62; // [esp+24h] [ebp-8h] int v63; // [esp+28h] [ebp-4h] v2 = (char *)a1[3]; v3 = *v2; if ( *v2 == 76 ) return d_expr_primary(a1); if ( v3 != 84 ) { if ( v3 == 115 ) { v11 = v2[1]; if ( v11 == 114 ) { a1[3] = v2 + 2; v31 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); v32 = d_unqualified_name(a1); v33 = (_BYTE *)a1[3]; if ( *v33 != 73 ) return d_make_comp(a1, 1, (int)v31, (int)v32); a1[3] = v33 + 1; v37 = d_template_args_1(a1); comp = d_make_comp(a1, 4, (int)v32, (int)v37); return d_make_comp(a1, 1, (int)v31, (int)comp); } if ( v11 == 112 ) { a1[3] = v2 + 2; v12 = d_expression_1(); return d_make_comp(a1, 75, v12, 0); } } else if ( v3 == 102 ) { if ( v2[1] == 112 ) { a1[3] = v2 + 2; if ( v2[2] == 84 ) { a1[3] = v2 + 3; v14 = 0; } else { v13 = d_compact_number((int)a1); v14 = v13 + 1; if ( (v13 & 0x7FFFFFFF) == 0x7FFFFFFF ) return 0; } v15 = a1[5]; if ( v15 < a1[6] ) { v16 = (_DWORD *)(a1[4] + 16 * a1[5]); v16[1] = 0; v4 = v16; a1[5] = v15 + 1; *v16 = 6; v16[2] = v14; return v4; } return 0; } } else { if ( (unsigned __int8)(v3 - 48) <= 9u ) goto LABEL_6; if ( v3 == 111 ) { if ( v2[1] == 110 ) { a1[3] = v2 + 2; LABEL_6: v4 = d_unqualified_name(a1); if ( v4 ) { v5 = (_BYTE *)a1[3]; if ( *v5 == 73 ) { a1[3] = v5 + 1; v30 = d_template_args_1(a1); return d_make_comp(a1, 4, (int)v4, (int)v30); } return v4; } return 0; } } else if ( (v3 == 105 || v3 == 116) && v2[1] == 108 ) { v17 = v2 + 2; v18 = 0; a1[3] = v17; if ( v3 == 116 ) { v19 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); v17 = (_BYTE *)a1[3]; v18 = (int)v19; } if ( v17[1] ) { v35 = d_exprlist(a1, 69); return d_make_comp(a1, 49, v18, (int)v35); } return 0; } } v7 = d_operator_name(a1); v8 = (int)v7; if ( !v7 ) return 0; v9 = *v7; if ( v9 != 50 ) { if ( v9 == 52 ) { v50 = (_BYTE *)a1[3]; if ( *v50 == 95 ) { a1[3] = v50 + 1; v36 = d_exprlist(a1, 69); return d_make_comp(a1, 55, v8, (int)v36); } goto LABEL_58; } if ( v9 == 51 ) { v10 = *(_DWORD *)(v8 + 8); if ( v10 <= 1 ) { if ( !v10 ) return d_make_comp(a1, 54, v8, 0); if ( v10 == 1 ) { LABEL_58: v36 = (_DWORD *)d_expression_1(); return d_make_comp(a1, 55, v8, (int)v36); } } } return 0; } v20 = *(char ***)(v8 + 8); v21 = *v20; a1[11] += v20[2] - 2; v22 = (unsigned __int8)*v21; if ( v22 == 115 && v21[1] == 116 && !v21[2] ) { v36 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); return d_make_comp(a1, 55, v8, (int)v36); } v23 = (int)v20[3]; if ( v23 == 1 ) { v38 = *v21; if ( (*v21 == 112 || v38 == 109) && v38 == v21[1] ) { v39 = (_BYTE *)a1[3]; if ( *v39 == 95 ) { v23 = 0; a1[3] = v39 + 1; v22 = (unsigned __int8)*v21; } } else { v23 = 0; } if ( v22 == 115 && v21[1] == 80 && !v21[2] ) v36 = d_template_args_1(a1); else v36 = (_DWORD *)d_expression_1(); if ( v23 ) v36 = d_make_comp(a1, 57, (int)v36, (int)v36); return d_make_comp(a1, 55, v8, (int)v36); } if ( v23 <= 1 ) { if ( !v23 ) return d_make_comp(a1, 54, v8, 0); return 0; } if ( v23 == 2 ) { v40 = **(char ***)(v8 + 8); if ( v40[1] == 99 && ((v51 = *v40, (unsigned __int8)(v51 - 114) <= 1u) || (unsigned __int8)(v51 - 99) <= 1u) ) { v41 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); } else if ( *v21 == 102 ) { v41 = d_operator_name(a1); } else { v41 = (int *)d_expression_1(); } v42 = (unsigned __int8)*v21; if ( v42 == 99 && v21[1] == 108 && !v21[2] ) { v43 = d_exprlist(a1, 69); } else if ( v42 == 100 && v21[1] == 116 && !v21[2] || v42 == 112 && v21[1] == 116 && !v21[2] ) { v43 = d_unqualified_name(a1); v48 = (_BYTE *)a1[3]; if ( *v48 == 73 ) { a1[3] = v48 + 1; v49 = d_template_args_1(a1); v43 = d_make_comp(a1, 4, (int)v43, (int)v49); } } else { v43 = (_DWORD *)d_expression_1(); } v44 = d_make_comp(a1, 57, (int)v41, (int)v43); return d_make_comp(a1, 56, v8, (int)v44); } if ( v23 != 3 ) return 0; if ( v22 == 113 && v21[1] == 117 && !v21[2] ) { v24 = (_DWORD *)d_expression_1(); } else { if ( *v21 != 102 ) { if ( *v21 != 110 ) return 0; v45 = v21[1]; if ( v45 != 119 && v45 != 97 ) return 0; v25 = d_exprlist(a1, 95); v26 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); v46 = (char *)a1[3]; v47 = *v46; if ( *v46 == 69 ) { a1[3] = v46 + 1; v27 = 0; } else if ( v47 == 112 ) { if ( v46[1] != 105 ) return 0; a1[3] = v46 + 2; v27 = d_exprlist(a1, 69); } else { if ( v47 != 105 || v46[1] != 108 ) return 0; v27 = (_DWORD *)d_expression_1(); } goto LABEL_47; } v24 = d_operator_name(a1); } v25 = v24; v26 = (int *)d_expression_1(); v27 = (_DWORD *)d_expression_1(); if ( !v27 ) return 0; LABEL_47: v28 = d_make_comp(a1, 60, (int)v26, (int)v27); v29 = d_make_comp(a1, 59, (int)v25, (int)v28); return d_make_comp(a1, 58, v8, (int)v29); } return d_template_param(a1); } // 421583: variable 'v52' is possibly undefined // 421583: variable 'v54' is possibly undefined // 421583: variable 'v55' is possibly undefined // 421583: variable 'v56' is possibly undefined // 421583: variable 'v57' is possibly undefined // 421583: variable 'v58' is possibly undefined // 421583: variable 'v59' is possibly undefined // 421583: variable 'v60' is possibly undefined // 421583: variable 'v61' is possibly undefined // 421583: variable 'v62' is possibly undefined // 421583: variable 'v63' is possibly undefined //----- (00421A60) -------------------------------------------------------- int *__usercall d_template_arg@( _DWORD *a1@, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12) { char *v13; // edx char v14; // al int *result; // eax int v16; // esi _BYTE *v17; // edx v13 = (char *)a1[3]; v14 = *v13; if ( *v13 == 76 ) return d_expr_primary(a1); if ( v14 <= 76 ) { if ( (unsigned __int8)(v14 - 73) <= 1u ) return d_template_args(a1); return d_type((int)a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } if ( v14 != 88 ) return d_type((int)a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); v16 = a1[12]; a1[12] = 1; a1[3] = v13 + 1; result = d_expression_1(a1); v17 = (_BYTE *)a1[3]; a1[12] = v16; if ( *v17 != 69 ) return 0; a1[3] = v17 + 1; return result; } //----- (00421AF0) -------------------------------------------------------- _DWORD *__usercall d_template_args_1@(_DWORD *a1@) { int v2; // edi _BYTE *v3; // eax int *v4; // esi _DWORD *comp; // eax _BYTE *v6; // eax int v7; // ecx int v9; // [esp+1Ch] [ebp-10h] BYREF v2 = a1[10]; v3 = (_BYTE *)a1[3]; if ( *v3 == 69 ) { a1[3] = v3 + 1; return d_make_comp(a1, 47, 0, 0); } else { v9 = 0; v4 = &v9; do { v7 = d_template_arg(); if ( !v7 ) return 0; comp = d_make_comp(a1, 47, v7, 0); *v4 = (int)comp; if ( !comp ) return 0; v4 = comp + 3; v6 = (_BYTE *)a1[3]; } while ( *v6 != 69 ); a1[10] = v2; a1[3] = v6 + 1; return (_DWORD *)v9; } } // 421A60: using guessed type int d_template_arg(void); //----- (00421BA0) -------------------------------------------------------- _DWORD *__usercall d_template_args@(_DWORD *a1@) { _BYTE *v1; // ecx v1 = (_BYTE *)a1[3]; if ( (unsigned __int8)(*v1 - 73) > 1u ) return 0; a1[3] = v1 + 1; return d_template_args_1(a1); } //----- (00421BD0) -------------------------------------------------------- unsigned int *__usercall d_encoding@(int a1@, int a2@, int a3@) { _BYTE *v5; // eax unsigned int *comp; // esi unsigned int v7; // eax unsigned int *v8; // edx unsigned int v9; // eax bool v10; // cc int v11; // ecx char v12; // dl int *v13; // esi _DWORD *v14; // eax char v15; // al unsigned int *v16; // edx unsigned int v17; // eax int v18; // edx _DWORD *v19; // eax int v21; // eax _BYTE *v22; // edx _BYTE *v23; // esi int v24; // edi _DWORD *v25; // eax char v26; // dl int v27; // ebp int v28; // edx _DWORD *v29; // ecx int *v30; // eax int *v31; // eax int *v32; // eax int *v33; // eax int *v34; // esi _BYTE *v35; // eax int *v36; // eax int v37; // ecx int v38; // eax int v39; // ecx int v40; // eax int v41; // ecx int v42; // eax int *v43; // eax int *v44; // eax int *v45; // eax int *v46; // eax int *v47; // eax unsigned int *v48; // edx unsigned int v49; // eax int v50; // edx char v51; // cl int v52; // ebp int v53; // esi int v54; // eax int v55; // eax int *v56; // eax int v57; // eax int v58; // [esp+0h] [ebp-2Ch] int v59; // [esp+0h] [ebp-2Ch] int v60; // [esp+4h] [ebp-28h] int v61; // [esp+4h] [ebp-28h] int v62; // [esp+8h] [ebp-24h] int v63; // [esp+8h] [ebp-24h] int v64; // [esp+Ch] [ebp-20h] int v65; // [esp+Ch] [ebp-20h] int v66; // [esp+10h] [ebp-1Ch] int v67; // [esp+10h] [ebp-1Ch] int v68; // [esp+14h] [ebp-18h] int v69; // [esp+14h] [ebp-18h] int v70; // [esp+18h] [ebp-14h] int v71; // [esp+18h] [ebp-14h] int v72; // [esp+1Ch] [ebp-10h] int v73; // [esp+1Ch] [ebp-10h] int v74; // [esp+20h] [ebp-Ch] int v75; // [esp+20h] [ebp-Ch] int v76; // [esp+24h] [ebp-8h] int v77; // [esp+24h] [ebp-8h] int v78; // [esp+28h] [ebp-4h] int v79; // [esp+28h] [ebp-4h] v5 = *(_BYTE **)(a1 + 12); if ( *v5 == 71 || *v5 == 84 ) { v11 = *(_DWORD *)(a1 + 44); *(_DWORD *)(a1 + 44) = v11 + 20; if ( *v5 == 84 ) { *(_DWORD *)(a1 + 12) = v5 + 1; if ( v5[1] ) { *(_DWORD *)(a1 + 12) = v5 + 2; switch ( v5[1] ) { case 'A': v30 = d_template_arg((_DWORD *)a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); comp = d_make_comp((_DWORD *)a1, 48, (int)v30, 0); break; case 'C': v34 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); if ( d_number_isra_0((char **)(a1 + 12)) < 0 ) return 0; v35 = *(_BYTE **)(a1 + 12); if ( *v35 != 95 ) return 0; *(_DWORD *)(a1 + 12) = v35 + 1; v36 = d_type(a1, v59, v61, v63, v65, v67, v69, v71, v73, v75, v77, v79); *(_DWORD *)(a1 + 44) += 5; comp = d_make_comp((_DWORD *)a1, 11, (int)v36, (int)v34); break; case 'F': v33 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); comp = d_make_comp((_DWORD *)a1, 14, (int)v33, 0); break; case 'H': v32 = d_name((_DWORD *)a1, v11); comp = d_make_comp((_DWORD *)a1, 20, (int)v32, 0); break; case 'I': v31 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); comp = d_make_comp((_DWORD *)a1, 12, (int)v31, 0); break; case 'J': v47 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); comp = d_make_comp((_DWORD *)a1, 18, (int)v47, 0); break; case 'S': v46 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); comp = d_make_comp((_DWORD *)a1, 13, (int)v46, 0); break; case 'T': *(_DWORD *)(a1 + 44) = v11 + 10; v45 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); comp = d_make_comp((_DWORD *)a1, 10, (int)v45, 0); break; case 'V': *(_DWORD *)(a1 + 44) = v11 + 15; v44 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); comp = d_make_comp((_DWORD *)a1, 9, (int)v44, 0); break; case 'W': v43 = d_name((_DWORD *)a1, v11); comp = d_make_comp((_DWORD *)a1, 21, (int)v43, 0); break; case 'c': if ( !d_call_offset(a1, 0) || !d_call_offset(a1, 0) ) return 0; v42 = d_encoding(v41, 0); comp = d_make_comp((_DWORD *)a1, 17, v42, 0); break; case 'h': if ( !d_call_offset(a1, 104) ) return 0; v40 = d_encoding(v39, 0); comp = d_make_comp((_DWORD *)a1, 15, v40, 0); break; case 'v': if ( !d_call_offset(a1, 118) ) return 0; v38 = d_encoding(v37, 0); comp = d_make_comp((_DWORD *)a1, 16, v38, 0); break; default: return 0; } return comp; } } else { if ( *v5 != 71 ) return 0; *(_DWORD *)(a1 + 12) = v5 + 1; if ( !v5[1] ) return 0; *(_DWORD *)(a1 + 12) = v5 + 2; v12 = v5[1]; if ( v12 == 84 ) { if ( v5[2] && (*(_DWORD *)(a1 + 12) = v5 + 3, v5[2] == 110) ) { v57 = d_encoding(v11, 0); return d_make_comp((_DWORD *)a1, 74, v57, 0); } else { v54 = d_encoding(v11, 0); return d_make_comp((_DWORD *)a1, 73, v54, 0); } } if ( v12 > 84 ) { if ( v12 == 86 ) { v56 = d_name((_DWORD *)a1, v11); return d_make_comp((_DWORD *)a1, 19, (int)v56, 0); } if ( v12 != 114 ) return 0; v21 = d_number_isra_0((char **)(a1 + 12)); if ( v21 <= 1 ) return 0; v22 = *(_BYTE **)(a1 + 12); if ( !*v22 ) return 0; v23 = v22 + 1; *(_DWORD *)(a1 + 12) = v22 + 1; if ( *v22 != 95 ) return 0; v24 = v21 - 1; v25 = 0; while ( 1 ) { if ( !*v23 ) return 0; if ( *v23 == 36 ) { v26 = v23[1]; switch ( v26 ) { case 'S': v27 = 47; break; case '_': v27 = 46; break; case '$': v27 = 36; break; default: return 0; } v28 = *(_DWORD *)(a1 + 20); v23 = (_BYTE *)(*(_DWORD *)(a1 + 12) + 2); if ( v28 >= *(_DWORD *)(a1 + 24) ) { *(_DWORD *)(a1 + 12) = v23; return 0; } v24 -= 2; v29 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); v29[1] = 0; *(_DWORD *)(a1 + 20) = v28 + 1; *v29 = 65; v29[2] = v27; *(_DWORD *)(a1 + 12) = v23; } else { v50 = 0; do { if ( ++v50 >= v24 ) break; v51 = v23[v50]; if ( !v51 ) break; } while ( v51 != 36 ); v52 = *(_DWORD *)(a1 + 20); if ( v52 >= *(_DWORD *)(a1 + 24) ) { *(_DWORD *)(a1 + 12) += v50; return 0; } v24 -= v50; v29 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); v29[1] = 0; *(_DWORD *)(a1 + 20) = v52 + 1; v29[2] = v23; v53 = *(_DWORD *)(a1 + 12); v29[1] = 0; v23 = (_BYTE *)(v50 + v53); *v29 = 0; v29[3] = v50; *(_DWORD *)(a1 + 12) = v23; } if ( v25 ) { v25 = d_make_comp((_DWORD *)a1, 64, (int)v25, (int)v29); if ( !v25 ) return 0; } else { v25 = v29; } if ( v24 <= 0 ) return d_make_comp((_DWORD *)a1, 63, (int)v25, 0); } } if ( v12 == 65 ) { v55 = d_encoding(v11, 0); return d_make_comp((_DWORD *)a1, 23, v55, 0); } if ( v12 == 82 ) { v13 = d_name((_DWORD *)a1, v11); v14 = d_number_component(a1); return d_make_comp((_DWORD *)a1, 22, (int)v13, (int)v14); } } return 0; } comp = (unsigned int *)d_name((_DWORD *)a1, a3); if ( !comp ) return 0; if ( !a2 || (*(_BYTE *)(a1 + 8) & 1) != 0 ) { v15 = **(_BYTE **)(a1 + 12); if ( !v15 || v15 == 69 ) return comp; v16 = comp; while ( 1 ) { v17 = *v16; if ( *v16 == 4 ) break; if ( *v16 > 4 ) { if ( v17 != 77 ) { if ( v17 <= 0x4D ) { if ( v17 - 28 > 4 ) { LABEL_31: v18 = 0; goto LABEL_32; } } else if ( v17 - 79 > 1 ) { goto LABEL_31; } } v16 = (unsigned int *)v16[2]; } else { if ( v17 != 2 ) goto LABEL_31; v16 = (unsigned int *)v16[3]; } if ( !v16 ) goto LABEL_31; } v48 = (unsigned int *)v16[2]; if ( v48 ) { while ( 1 ) { v49 = *v48; if ( *v48 > 8 ) break; if ( v49 > 6 ) goto LABEL_31; if ( v49 - 1 <= 1 ) { v48 = (unsigned int *)v48[3]; if ( v48 ) continue; } goto LABEL_95; } v18 = v49 != 53; } else { LABEL_95: v18 = 1; } LABEL_32: v19 = d_bare_function_type((_DWORD *)a1, v18); if ( v19 ) { if ( !a2 && *comp == 2 && *v19 == 41 ) v19[2] = 0; return d_make_comp((_DWORD *)a1, 3, (int)comp, (int)v19); } return 0; } while ( 1 ) { v7 = *comp; if ( *comp == 77 ) goto LABEL_62; if ( *comp <= 0x4D ) break; if ( v7 - 79 > 1 ) return comp; LABEL_62: comp = (unsigned int *)comp[2]; } if ( v7 - 28 <= 4 ) goto LABEL_62; if ( v7 == 2 ) { v8 = (unsigned int *)comp[3]; v9 = *v8; v10 = *v8 <= 0x4D; if ( *v8 == 77 ) goto LABEL_13; while ( 1 ) { if ( v10 ) { if ( v9 - 28 > 4 ) return comp; } else if ( v9 - 79 > 1 ) { return comp; } do { LABEL_13: v8 = (unsigned int *)v8[2]; v9 = *v8; comp[3] = (unsigned int)v8; v10 = v9 <= 0x4D; } while ( v9 == 77 ); } } return comp; } // 421EBA: variable 'v58' is possibly undefined // 421EBA: variable 'v60' is possibly undefined // 421EBA: variable 'v62' is possibly undefined // 421EBA: variable 'v64' is possibly undefined // 421EBA: variable 'v66' is possibly undefined // 421EBA: variable 'v68' is possibly undefined // 421EBA: variable 'v70' is possibly undefined // 421EBA: variable 'v72' is possibly undefined // 421EBA: variable 'v74' is possibly undefined // 421EBA: variable 'v76' is possibly undefined // 421EBA: variable 'v78' is possibly undefined // 421F71: variable 'v59' is possibly undefined // 421F71: variable 'v61' is possibly undefined // 421F71: variable 'v63' is possibly undefined // 421F71: variable 'v65' is possibly undefined // 421F71: variable 'v67' is possibly undefined // 421F71: variable 'v69' is possibly undefined // 421F71: variable 'v71' is possibly undefined // 421F71: variable 'v73' is possibly undefined // 421F71: variable 'v75' is possibly undefined // 421F71: variable 'v77' is possibly undefined // 421F71: variable 'v79' is possibly undefined // 421FAA: variable 'v37' is possibly undefined // 421FE3: variable 'v39' is possibly undefined // 42202A: variable 'v41' is possibly undefined //----- (004222C0) -------------------------------------------------------- int *__usercall d_name@(_DWORD *a1@, int a2@) { char *v3; // edx char v4; // al int *v5; // esi _DWORD *v6; // eax _DWORD *v7; // edi _BYTE *v8; // eax char v9; // dl _DWORD *v10; // eax _DWORD *v11; // esi int **v12; // ebp unsigned __int8 *v13; // edx _DWORD *v14; // eax int *v15; // edi int v16; // ebx _DWORD *v17; // esi unsigned int v18; // eax int *v19; // eax int v20; // edx int v21; // eax _DWORD *v23; // eax int v24; // edx _DWORD *v25; // ecx int *comp; // eax int v27; // eax int v28; // ecx int v29; // ebp _DWORD *v30; // eax _DWORD *v31; // ecx int v32; // edx _DWORD *v33; // ebx int *v34; // eax _BYTE *v35; // eax _DWORD *v36; // eax int v37; // eax int v38; // eax int *v39; // [esp+1Ch] [ebp-30h] _DWORD *v40; // [esp+1Ch] [ebp-30h] int *v41; // [esp+2Ch] [ebp-20h] BYREF v3 = (char *)a1[3]; v4 = *v3; if ( *v3 == 85 ) return d_unqualified_name(a1); if ( v4 <= 85 ) { if ( v4 != 78 ) { if ( v4 == 83 ) { if ( v3[1] != 116 ) { v5 = d_substitution(a1, 0); if ( *(_BYTE *)a1[3] != 73 ) return v5; goto LABEL_7; } a1[3] = v3 + 2; v23 = d_unqualified_name(a1); v24 = a1[5]; if ( v24 >= a1[6] ) { v25 = 0; } else { v25 = (_DWORD *)(a1[4] + 16 * a1[5]); a1[5] = v24 + 1; v25[1] = 0; *v25 = 0; v25[2] = &off_4EE663; v25[3] = 3; } comp = d_make_comp(a1, 1, (int)v25, (int)v23); a1[11] += 3; v5 = comp; if ( *(_BYTE *)a1[3] == 73 ) { LABEL_39: if ( !v5 ) return 0; v27 = a1[8]; if ( v27 >= a1[9] ) return 0; *(_DWORD *)(a1[7] + 4 * v27) = v5; a1[8] = v27 + 1; LABEL_7: v6 = d_template_args(a1); return d_make_comp(a1, 4, (int)v5, (int)v6); } return v5; } goto LABEL_42; } a1[3] = v3 + 1; v12 = d_cv_qualifiers(a1, &v41, 1); if ( !v12 ) return 0; v39 = d_ref_qualifier(a1, 0); if ( !*(_BYTE *)a1[3] ) { LABEL_33: *v12 = 0; return 0; } v13 = (unsigned __int8 *)a1[3]; v14 = a1; v15 = 0; v16 = *v13; v17 = v14; while ( 1 ) { if ( (_BYTE)v16 == 68 ) { if ( (v13[1] & 0xDF) == 84 ) v19 = (int *)d_type(); else v19 = d_unqualified_name(v17); LABEL_47: v20 = 1; if ( v15 ) { LABEL_26: v15 = d_make_comp(v17, v20, (int)v15, (int)v19); goto LABEL_27; } LABEL_48: v13 = (unsigned __int8 *)v17[3]; v15 = v19; goto LABEL_28; } v18 = v16 - 48; if ( (unsigned __int8)(v16 - 48) > 0x1Cu ) break; while ( 1 ) { v28 = 268960767; if ( !_bittest(&v28, v18) ) break; LABEL_51: v19 = d_unqualified_name(v17); if ( v15 ) goto LABEL_25; v15 = v19; LABEL_27: v13 = (unsigned __int8 *)v17[3]; if ( (_BYTE)v16 == 83 ) goto LABEL_32; LABEL_28: LOBYTE(v16) = *v13; if ( *v13 != 69 ) { if ( !v15 ) goto LABEL_33; v21 = v17[8]; if ( v21 >= v17[9] ) goto LABEL_33; *(_DWORD *)(v17[7] + 4 * v21) = v15; v17[8] = v21 + 1; goto LABEL_32; } v18 = 21; } if ( (_BYTE)v16 == 73 ) { if ( !v15 ) goto LABEL_33; v17[3] = v13 + 1; v19 = d_template_args_1(v17); v20 = 4; goto LABEL_26; } LABEL_60: if ( (_BYTE)v16 == 84 ) { v19 = d_template_param(v17); goto LABEL_47; } if ( (_BYTE)v16 == 69 ) { *v12 = v15; v33 = v17; if ( v15 ) { if ( v39 ) { v34 = v41; v41 = v39; v39[2] = (int)v34; } v35 = (_BYTE *)v17[3]; if ( *v35 == 69 ) { v5 = v41; v33[3] = v35 + 1; return v5; } } return 0; } if ( (_BYTE)v16 != 77 || !v15 ) goto LABEL_33; v17[3] = ++v13; LABEL_32: v16 = *v13; if ( !(_BYTE)v16 ) goto LABEL_33; } if ( (unsigned __int8)(v16 - 97) > 0x19u ) { if ( (_BYTE)v16 == 85 ) { v19 = d_unqualified_name(v17); if ( v15 ) { LABEL_25: v20 = 1; goto LABEL_26; } goto LABEL_48; } if ( (_BYTE)v16 == 83 ) { v19 = d_substitution(v17, 1); if ( v15 ) goto LABEL_25; v13 = (unsigned __int8 *)v17[3]; v15 = v19; goto LABEL_32; } goto LABEL_60; } goto LABEL_51; } if ( v4 == 90 ) { a1[3] = v3 + 1; v7 = (_DWORD *)d_encoding(a2, 0); if ( !v7 ) return 0; v8 = (_BYTE *)a1[3]; if ( *v8 != 69 ) return 0; a1[3] = v8 + 1; v9 = v8[1]; if ( v9 == 115 ) { a1[3] = v8 + 2; if ( !d_discriminator((int)a1) ) return 0; v37 = a1[5]; if ( v37 < a1[6] ) { v11 = (_DWORD *)(a1[4] + 16 * a1[5]); a1[5] = v37 + 1; v11[1] = 0; *v11 = 0; v11[2] = "string literal"; v11[3] = 14; goto LABEL_15; } } else { if ( v9 != 100 ) { v10 = (_DWORD *)d_name(); v11 = v10; if ( v10 && ((*v10 - 70) & 0xFFFFFFFD) != 0 && !d_discriminator((int)a1) ) return 0; goto LABEL_15; } a1[3] = v8 + 2; v29 = d_compact_number((int)a1); if ( v29 < 0 ) return 0; v30 = (_DWORD *)d_name(); v31 = v30; if ( v30 ) { if ( ((*v30 - 70) & 0xFFFFFFFD) != 0 ) { v40 = v30; v38 = d_discriminator((int)a1); v31 = v40; if ( !v38 ) return 0; } } v32 = a1[5]; if ( v32 < a1[6] ) { v11 = (_DWORD *)(a1[4] + 16 * a1[5]); v11[1] = 0; a1[5] = v32 + 1; *v11 = 71; v11[3] = v29; v11[2] = v31; goto LABEL_15; } } v11 = 0; LABEL_15: if ( *v7 == 3 ) { v36 = (_DWORD *)v7[3]; if ( *v36 == 41 ) v36[2] = 0; } return d_make_comp(a1, 2, (int)v7, (int)v11); } LABEL_42: v5 = d_unqualified_name(a1); if ( *(_BYTE *)a1[3] == 73 ) goto LABEL_39; return v5; } // 421BD0: using guessed type int __fastcall d_encoding(_DWORD, _DWORD); // 4227B0: using guessed type int d_type(void); // 4EE663: using guessed type void *off_4EE663; //----- (004227B0) -------------------------------------------------------- int *__usercall d_type@( int a1@, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12) { char *v13; // esi int v14; // ecx int v15; // edx int v16; // esi int v17; // eax int *result; // eax _BYTE *v19; // edx int **v20; // esi int *v21; // eax int *v22; // edx int *v23; // ecx int v24; // edx int v25; // eax int v26; // edx int v27; // ecx int v28; // edx int v29; // edx char v30; // al _BYTE *v31; // edx int v32; // eax int v33; // eax int v34; // eax int v35; // eax _DWORD *v36; // eax int v37; // eax int *comp; // esi _BYTE *v39; // eax int v40; // eax _BYTE *v41; // esi int v42; // ecx _DWORD *v43; // ecx char *v44; // ecx char v45; // al char *v46; // eax char *v47; // esi int v48; // edx int v49; // ebp _DWORD *v50; // edi char v51; // dl int v52; // eax int v53; // esi int v54; // eax int v55; // eax int *v56; // edi unsigned __int8 v57; // al char *v58; // eax char v59; // dl int v60; // edx int v61; // edx int v62; // edx int v63; // edx int v64; // edx int v65; // edx _DWORD *v66; // esi _BYTE *v67; // eax int v68; // eax int v69; // edx int v70; // edx int v71; // edx int v72; // eax int v73; // edx _DWORD *v74; // eax int v75; // esi int v76; // eax int v77; // ebp int v78; // edi _DWORD *v79; // ecx int *v80; // edx int v81; // eax int v82; // edi int v83; // eax _DWORD *v84; // [esp+0h] [ebp-4Ch] int v85; // [esp+1Ch] [ebp-30h] int *v86; // [esp+2Ch] [ebp-20h] BYREF v13 = *(char **)(a1 + 12); if ( next_is_type_qual_isra_0(v13) ) { v20 = d_cv_qualifiers((_DWORD *)a1, &v86, 0); if ( v20 ) { v21 = **(_BYTE **)(a1 + 12) == 70 ? d_function_type(a1) : (int *)d_type(); *v20 = v21; v22 = v21; if ( v21 ) { result = v86; if ( (unsigned int)(*v22 - 31) <= 1 ) { v23 = (int *)v22[2]; v22[2] = (int)v86; v86 = *v20; *v20 = v23; result = v86; } if ( result ) { v24 = *(_DWORD *)(a1 + 32); if ( v24 < *(_DWORD *)(a1 + 36) ) { *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v24) = result; *(_DWORD *)(a1 + 32) = v24 + 1; return result; } } } } } else { v15 = *v13; switch ( (char)v15 ) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'N': case 'Z': result = d_name((_DWORD *)a1, v14); v86 = result; goto LABEL_21; case 'A': v44 = v13 + 1; *(_DWORD *)(a1 + 12) = v13 + 1; v45 = v13[1]; if ( v45 == 95 ) { v50 = 0; LABEL_57: *(_DWORD *)(a1 + 12) = v44 + 1; v52 = d_type(); result = d_make_comp((_DWORD *)a1, 42, (int)v50, v52); v86 = result; goto LABEL_21; } if ( (unsigned __int8)(v45 - 48) > 9u ) { v75 = *(_DWORD *)(a1 + 48); *(_DWORD *)(a1 + 48) = 1; v76 = d_expression_1(); *(_DWORD *)(a1 + 48) = v75; v50 = (_DWORD *)v76; if ( v76 ) { v46 = *(char **)(a1 + 12); v51 = *v46; LABEL_56: v44 = v46; if ( v51 != 95 ) return 0; goto LABEL_57; } } else { v46 = v13 + 1; do { v47 = v46++; *(_DWORD *)(a1 + 12) = v46; } while ( (unsigned __int8)(*v46 - 48) <= 9u ); v48 = *(_DWORD *)(a1 + 20); v49 = v46 - v44; if ( v48 < *(_DWORD *)(a1 + 24) ) { v50 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); v50[1] = 0; *(_DWORD *)(a1 + 20) = v48 + 1; if ( v49 > 0 ) { v50[1] = 0; *v50 = 0; v50[2] = v44; v50[3] = v49; v51 = v47[1]; goto LABEL_56; } } } break; case 'C': *(_DWORD *)(a1 + 12) = v13 + 1; v37 = d_type(); result = d_make_comp((_DWORD *)a1, 37, v37, 0); v86 = result; goto LABEL_21; case 'D': *(_DWORD *)(a1 + 12) = v13 + 1; if ( v13[1] ) { *(_DWORD *)(a1 + 12) = v13 + 2; switch ( v13[1] ) { case 'F': v55 = *(_DWORD *)(a1 + 20); if ( v55 >= *(_DWORD *)(a1 + 24) ) { MEMORY[0] = 0; BUG(); } v56 = (int *)(*(_DWORD *)(a1 + 16) + 16 * v55); v56[1] = 0; v86 = v56; *(_DWORD *)(a1 + 20) = v55 + 1; *v56 = 44; v57 = v13[2] - 48; *((_WORD *)v56 + 6) = v57 <= 9u; if ( v57 <= 9u ) { d_number_isra_0((char **)(a1 + 12)); v56 = v86; } v56[2] = d_type(); if ( !v86[2] ) return 0; d_number_isra_0((char **)(a1 + 12)); v58 = *(char **)(a1 + 12); v59 = *v58; if ( *v58 ) { *(_DWORD *)(a1 + 12) = v58 + 1; v59 = *v58; } result = v86; *((_WORD *)v86 + 7) = v59 == 115; return result; case 'T': case 't': v16 = *(_DWORD *)(a1 + 48); *(_DWORD *)(a1 + 48) = 1; v17 = d_expression_1(); *(_DWORD *)(a1 + 48) = v16; result = d_make_comp((_DWORD *)a1, 67, v17, 0); v86 = result; if ( !result ) return 0; v19 = *(_BYTE **)(a1 + 12); if ( !*v19 ) return 0; *(_DWORD *)(a1 + 12) = v19 + 1; if ( *v19 != 69 ) return 0; goto LABEL_22; case 'a': v61 = *(_DWORD *)(a1 + 20); if ( v61 >= *(_DWORD *)(a1 + 24) ) return 0; result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); *(_DWORD *)(a1 + 20) = v61 + 1; result[1] = 0; *result = 0; result[2] = (int)"auto"; result[3] = 4; return result; case 'c': v60 = *(_DWORD *)(a1 + 20); if ( v60 >= *(_DWORD *)(a1 + 24) ) return 0; result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); *(_DWORD *)(a1 + 20) = v60 + 1; result[1] = 0; *result = 0; result[2] = (int)"decltype(auto)"; result[3] = 14; return result; case 'd': v69 = *(_DWORD *)(a1 + 20); if ( v69 >= *(_DWORD *)(a1 + 24) ) { v86 = 0; BUG(); } result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); result[1] = 0; *(_DWORD *)(a1 + 20) = v69 + 1; *result = 39; result[2] = (int)&off_4EFA1C; *(_DWORD *)(a1 + 44) += 9; return result; case 'e': v65 = *(_DWORD *)(a1 + 20); if ( v65 >= *(_DWORD *)(a1 + 24) ) { v86 = 0; BUG(); } result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); result[1] = 0; *(_DWORD *)(a1 + 20) = v65 + 1; *result = 39; result[2] = (int)&off_4EFA30; *(_DWORD *)(a1 + 44) += 10; return result; case 'f': v63 = *(_DWORD *)(a1 + 20); if ( v63 >= *(_DWORD *)(a1 + 24) ) { v86 = 0; BUG(); } result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); result[1] = 0; *(_DWORD *)(a1 + 20) = v63 + 1; *result = 39; result[2] = (int)&off_4EFA08; *(_DWORD *)(a1 + 44) += 9; return result; case 'h': v62 = *(_DWORD *)(a1 + 20); if ( v62 >= *(_DWORD *)(a1 + 24) ) { v86 = 0; BUG(); } result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); result[1] = 0; *(_DWORD *)(a1 + 20) = v62 + 1; *result = 39; result[2] = (int)&off_4EFA44; *(_DWORD *)(a1 + 44) += 4; return result; case 'i': v73 = *(_DWORD *)(a1 + 20); if ( v73 >= *(_DWORD *)(a1 + 24) ) { v86 = 0; BUG(); } result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); result[1] = 0; *(_DWORD *)(a1 + 20) = v73 + 1; *result = 39; result[2] = (int)&off_4EFA80; *(_DWORD *)(a1 + 44) += 8; return result; case 'n': v70 = *(_DWORD *)(a1 + 20); if ( v70 >= *(_DWORD *)(a1 + 24) ) { v86 = 0; BUG(); } result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); result[1] = 0; *(_DWORD *)(a1 + 20) = v70 + 1; *result = 39; result[2] = (int)&off_4EFA94; *(_DWORD *)(a1 + 44) += 17; return result; case 'p': v72 = d_type(); result = d_make_comp((_DWORD *)a1, 75, v72, 0); v86 = result; goto LABEL_21; case 's': v64 = *(_DWORD *)(a1 + 20); if ( v64 >= *(_DWORD *)(a1 + 24) ) { v86 = 0; BUG(); } result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); result[1] = 0; *(_DWORD *)(a1 + 20) = v64 + 1; *result = 39; result[2] = (int)&off_4EFA6C; *(_DWORD *)(a1 + 44) += 8; return result; case 'u': v71 = *(_DWORD *)(a1 + 20); if ( v71 >= *(_DWORD *)(a1 + 24) ) { v86 = 0; BUG(); } result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); result[1] = 0; *(_DWORD *)(a1 + 20) = v71 + 1; *result = 39; result[2] = (int)&off_4EFA58; *(_DWORD *)(a1 + 44) += 7; return result; case 'v': if ( v13[2] == 95 ) { v82 = *(_DWORD *)(a1 + 48); *(_DWORD *)(a1 + 48) = 1; *(_DWORD *)(a1 + 12) = v13 + 3; v83 = d_expression_1(); *(_DWORD *)(a1 + 48) = v82; v66 = (_DWORD *)v83; } else { v66 = d_number_component(a1); } if ( !v66 ) return 0; v67 = *(_BYTE **)(a1 + 12); if ( *v67 != 95 ) return 0; *(_DWORD *)(a1 + 12) = v67 + 1; v68 = d_type(); result = d_make_comp((_DWORD *)a1, 45, (int)v66, v68); v86 = result; goto LABEL_21; default: return 0; } } return 0; case 'F': result = d_function_type(a1); v86 = result; goto LABEL_21; case 'G': *(_DWORD *)(a1 + 12) = v13 + 1; v35 = d_type(); result = d_make_comp((_DWORD *)a1, 38, v35, 0); v86 = result; goto LABEL_21; case 'M': *(_DWORD *)(a1 + 12) = v13 + 1; v53 = d_type(); if ( !v53 ) return 0; v54 = d_type(); if ( !v54 ) return 0; result = d_make_comp((_DWORD *)a1, 43, v53, v54); v86 = result; goto LABEL_21; case 'O': *(_DWORD *)(a1 + 12) = v13 + 1; v34 = d_type(); result = d_make_comp((_DWORD *)a1, 36, v34, 0); v86 = result; goto LABEL_21; case 'P': *(_DWORD *)(a1 + 12) = v13 + 1; v33 = d_type(); result = d_make_comp((_DWORD *)a1, 34, v33, 0); v86 = result; goto LABEL_21; case 'R': *(_DWORD *)(a1 + 12) = v13 + 1; v32 = d_type(); result = d_make_comp((_DWORD *)a1, 35, v32, 0); v86 = result; goto LABEL_21; case 'S': v30 = v13[1]; if ( (unsigned __int8)(v30 - 48) <= 9u || v30 == 95 || (unsigned __int8)(v30 - 65) <= 0x19u ) { result = d_substitution((_DWORD *)a1, 0); v31 = *(_BYTE **)(a1 + 12); v86 = result; if ( *v31 != 73 ) return result; *(_DWORD *)(a1 + 12) = v31 + 1; v84 = d_template_args_1((_DWORD *)a1); result = d_make_comp((_DWORD *)a1, 4, (int)v86, (int)v84); goto LABEL_29; } result = d_name((_DWORD *)a1, v14); v86 = result; if ( !result ) return 0; if ( *result == 24 ) return result; goto LABEL_22; case 'T': result = d_template_param((_DWORD *)a1); v41 = *(_BYTE **)(a1 + 12); v86 = result; if ( *v41 != 73 ) goto LABEL_21; if ( *(_DWORD *)(a1 + 52) ) { v77 = *(_DWORD *)(a1 + 20); v78 = *(_DWORD *)(a1 + 32); v85 = *(_DWORD *)(a1 + 44); *(_DWORD *)(a1 + 12) = v41 + 1; v79 = d_template_args_1((_DWORD *)a1); if ( **(_BYTE **)(a1 + 12) == 73 ) { v80 = v86; if ( !v86 ) return 0; v81 = *(_DWORD *)(a1 + 32); if ( v81 >= *(_DWORD *)(a1 + 36) ) return 0; *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v81) = v86; *(_DWORD *)(a1 + 32) = v81 + 1; result = d_make_comp((_DWORD *)a1, 4, (int)v80, (int)v79); v86 = result; } else { *(_DWORD *)(a1 + 12) = v41; *(_DWORD *)(a1 + 20) = v77; *(_DWORD *)(a1 + 44) = v85; result = v86; *(_DWORD *)(a1 + 32) = v78; } } else { if ( !result ) return 0; v42 = *(_DWORD *)(a1 + 32); if ( v42 >= *(_DWORD *)(a1 + 36) ) return 0; *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v42) = result; *(_DWORD *)(a1 + 32) = v42 + 1; v43 = 0; if ( (unsigned __int8)(*v41 - 73) <= 1u ) { *(_DWORD *)(a1 + 12) = v41 + 1; v43 = d_template_args_1((_DWORD *)a1); } result = d_make_comp((_DWORD *)a1, 4, (int)v86, (int)v43); LABEL_29: v86 = result; } LABEL_21: if ( !result ) return 0; LABEL_22: v29 = *(_DWORD *)(a1 + 32); if ( v29 < *(_DWORD *)(a1 + 36) ) { *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v29) = result; result = v86; *(_DWORD *)(a1 + 32) = v29 + 1; return result; } return 0; case 'U': *(_DWORD *)(a1 + 12) = v13 + 1; v86 = d_source_name(a1); comp = v86; v39 = *(_BYTE **)(a1 + 12); if ( *v39 == 73 ) { *(_DWORD *)(a1 + 12) = v39 + 1; v74 = d_template_args_1((_DWORD *)a1); comp = d_make_comp((_DWORD *)a1, 4, (int)v86, (int)v74); } v40 = d_type(); result = d_make_comp((_DWORD *)a1, 33, v40, (int)comp); v86 = result; goto LABEL_21; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'l': case 'm': case 'n': case 'o': case 's': case 't': case 'v': case 'w': case 'x': case 'y': case 'z': v25 = 5 * v15 - 485; v26 = *(_DWORD *)(a1 + 20); v27 = 4 * v25 + 5175296; if ( v26 >= *(_DWORD *)(a1 + 24) ) d_type_cold(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); result = (int *)(*(_DWORD *)(a1 + 16) + 16 * v26); result[1] = 0; *(_DWORD *)(a1 + 20) = v26 + 1; v28 = *(_DWORD *)(v27 + 4); *result = 39; result[2] = v27; *(_DWORD *)(a1 + 44) += v28; *(_DWORD *)(a1 + 12) = v13 + 1; return result; case 'u': *(_DWORD *)(a1 + 12) = v13 + 1; v36 = d_source_name(a1); result = d_make_comp((_DWORD *)a1, 40, (int)v36, 0); v86 = result; goto LABEL_21; default: return 0; } } return 0; } // 42290A: variable 'v14' is possibly undefined // 4213F0: using guessed type int d_expression_1(void); // 4EFA08: using guessed type char *off_4EFA08; // 4EFA1C: using guessed type char *off_4EFA1C; // 4EFA30: using guessed type char *off_4EFA30; // 4EFA44: using guessed type char *off_4EFA44; // 4EFA58: using guessed type char *off_4EFA58; // 4EFA6C: using guessed type char *off_4EFA6C; // 4EFA80: using guessed type char *off_4EFA80; // 4EFA94: using guessed type char *off_4EFA94; //----- (004230D0) -------------------------------------------------------- _DWORD *__usercall d_operator_name@(_DWORD *a1@) { unsigned __int8 *v2; // eax unsigned __int8 v3; // si unsigned __int8 v4; // bp int v5; // edx unsigned __int8 v6; // di void **v7; // ebp _BYTE *v8; // ecx bool v9; // cc _DWORD *result; // eax int v11; // edx _DWORD *v12; // eax int v13; // edx _DWORD *v14; // ecx int v15; // ebx int v16; // ecx int v17; // [esp+18h] [ebp-24h] _DWORD *v18; // [esp+1Ch] [ebp-20h] v2 = (unsigned __int8 *)a1[3]; if ( !*v2 ) { v4 = 0; v3 = 0; goto LABEL_3; } a1[3] = v2 + 1; v3 = *v2; v4 = v2[1]; if ( !v4 ) { LABEL_3: v18 = a1; v5 = 0; v6 = v4; v17 = 67; while ( 1 ) { v7 = &cplus_demangle_operators + 4 * v5 + 4 * ((v17 - v5) / 2); v8 = *v7; v9 = *(_BYTE *)*v7 <= v3; if ( *(_BYTE *)*v7 == v3 ) { v9 = v8[1] <= v6; if ( v8[1] == v6 ) break; } if ( v9 ) v5 += (v17 - v5) / 2 + 1; else v17 = v5 + (v17 - v5) / 2; if ( v5 == v17 ) return 0; } v11 = v18[5]; if ( v11 < v18[6] ) { result = (_DWORD *)(v18[4] + 16 * v18[5]); result[1] = 0; v18[5] = v11 + 1; *result = 50; result[2] = v7; return result; } return 0; } a1[3] = v2 + 2; v4 = v2[1]; if ( v3 == 118 ) { if ( (unsigned __int8)(v4 - 48) > 9u ) goto LABEL_3; v12 = d_source_name((int)a1); v13 = a1[5]; v14 = v12; if ( v13 >= a1[6] ) return 0; result = (_DWORD *)(a1[4] + 16 * a1[5]); result[1] = 0; a1[5] = v13 + 1; if ( !v14 ) return 0; result[1] = 0; *result = 51; result[3] = v14; result[2] = (char)v4 - 48; } else { if ( v3 != 99 || v4 != 118 ) goto LABEL_3; v15 = a1[13]; a1[13] = a1[12] == 0; v16 = d_type(); if ( a1[13] ) result = d_make_comp(a1, 53, v16, 0); else result = d_make_comp(a1, 52, v16, 0); a1[13] = v15; } return result; } // 4227B0: using guessed type int d_type(void); // 4EF280: using guessed type void *cplus_demangle_operators; //----- (00423280) -------------------------------------------------------- int __usercall d_parmlist@(_DWORD *a1@) { char *v2; // ebp char v3; // al int *v4; // esi _DWORD *comp; // eax int v6; // ecx int result; // eax _DWORD *v8; // edx int v9; // edx int v10; // [esp+1Ch] [ebp-20h] BYREF v2 = (char *)a1[3]; v10 = 0; v3 = *v2; if ( v3 == 0 || v3 == 69 ) return 0; v4 = &v10; if ( v3 == 46 ) return 0; do { if ( (v3 == 82 || v3 == 79) && v2[1] == 69 ) break; v6 = d_type(); if ( !v6 ) return 0; comp = d_make_comp(a1, 46, v6, 0); *v4 = (int)comp; if ( !comp ) return 0; v2 = (char *)a1[3]; v4 = comp + 3; v3 = *v2; if ( *v2 == 69 || *v2 == 0 ) break; } while ( v3 != 46 ); result = v10; if ( !v10 ) return 0; if ( !*(_DWORD *)(v10 + 12) ) { v8 = *(_DWORD **)(v10 + 8); if ( *v8 == 39 ) { v9 = v8[2]; if ( *(_DWORD *)(v9 + 16) == 9 ) { a1[11] -= *(_DWORD *)(v9 + 4); *(_DWORD *)(result + 8) = 0; } } } return result; } // 4227B0: using guessed type int d_type(void); //----- (00423350) -------------------------------------------------------- int **__usercall d_cv_qualifiers@(_DWORD *a1@, int **a2@, int a3@) { int **v3; // esi char *v5; // ebp char i; // di char v7; // al int v8; // edi int v9; // eax _BYTE *v10; // edx int v11; // edx _DWORD *comp; // eax int *v14; // eax int v15; // edx _BYTE *v16; // edx int **v17; // eax int v18; // [esp+1Ch] [ebp-30h] int v19; // [esp+20h] [ebp-2Ch] int v20; // [esp+24h] [ebp-28h] char v21; // [esp+28h] [ebp-24h] v3 = a2; v21 = a3; v20 = a3 == 0 ? 27 : 30; v19 = a3 == 0 ? 26 : 29; v18 = a3 == 0 ? 25 : 28; v5 = (char *)a1[3]; for ( i = *v5; next_is_type_qual_isra_0(v5); i = *v5 ) { a1[3] = v5 + 1; switch ( i ) { case 'r': a1[11] += 9; v11 = v18; v9 = 0; break; case 'V': a1[11] += 9; v11 = v19; v9 = 0; break; case 'K': a1[11] += 6; v11 = v20; v9 = 0; break; default: if ( !v5[1] ) return 0; a1[3] = v5 + 2; v7 = v5[1]; if ( v7 == 120 ) { a1[11] += 17; v9 = 0; v11 = 77; } else if ( (v7 & 0xDF) == 79 ) { a1[11] += 9; if ( v7 == 79 ) { v8 = a1[12]; a1[12] = 1; v9 = d_expression_1(); a1[12] = v8; if ( !v9 ) return 0; v10 = (_BYTE *)a1[3]; if ( *v10 != 69 ) return 0; a1[3] = v10 + 1; v11 = 79; } else { v9 = 0; v11 = 79; } } else { if ( v7 != 119 ) return 0; a1[11] += 6; v9 = d_parmlist(a1); if ( !v9 ) return 0; v16 = (_BYTE *)a1[3]; if ( *v16 != 69 ) return 0; a1[3] = v16 + 1; v11 = 80; } break; } comp = d_make_comp(a1, v11, 0, v9); *v3 = comp; if ( !comp ) return 0; v5 = (char *)a1[3]; v3 = (int **)(comp + 2); } if ( (v21 & 1) == 0 && i == 70 && v3 != a2 ) { v14 = *a2; v15 = **a2; if ( v15 != 26 ) goto LABEL_34; LABEL_21: *v14 = 29; while ( 1 ) { v17 = (int **)(v14 + 2); if ( v3 == v17 ) break; v14 = *v17; v15 = *v14; if ( *v14 == 26 ) goto LABEL_21; LABEL_34: if ( v15 == 27 ) { *v14 = 30; } else if ( v15 == 25 ) { *v14 = 28; } } } return v3; } // 4213F0: using guessed type int d_expression_1(void); //----- (00423570) -------------------------------------------------------- _DWORD *__usercall d_bare_function_type@(_DWORD *a1@, int a2@) { _BYTE *v3; // eax int v4; // esi int v5; // eax v3 = (_BYTE *)a1[3]; if ( *v3 == 74 ) { a1[3] = v3 + 1; goto LABEL_3; } if ( a2 ) { LABEL_3: v4 = d_type(); if ( v4 ) { v5 = d_parmlist(a1); if ( v5 ) return d_make_comp(a1, 41, v4, v5); } return 0; } v4 = 0; v5 = d_parmlist(a1); if ( v5 ) return d_make_comp(a1, 41, v4, v5); return 0; } // 4227B0: using guessed type int d_type(void); //----- (004235E0) -------------------------------------------------------- _DWORD *__usercall d_function_type@(int a1@) { unsigned int v2; // ecx _BYTE *v3; // edx _DWORD *result; // eax _DWORD *v5; // eax _BYTE *v6; // edx if ( (*(_BYTE *)(a1 + 10) & 4) != 0 ) { v3 = *(_BYTE **)(a1 + 12); if ( *v3 == 70 ) goto LABEL_8; return 0; } v2 = *(_DWORD *)(a1 + 56); if ( v2 > 0x800 ) return 0; v3 = *(_BYTE **)(a1 + 12); *(_DWORD *)(a1 + 56) = v2 + 1; result = 0; if ( *v3 != 70 ) { LABEL_4: *(_DWORD *)(a1 + 56) = v2; return result; } LABEL_8: *(_DWORD *)(a1 + 12) = v3 + 1; if ( v3[1] == 89 ) *(_DWORD *)(a1 + 12) = v3 + 2; v5 = d_bare_function_type((_DWORD *)a1, 1); result = d_ref_qualifier((_DWORD *)a1, v5); v6 = *(_BYTE **)(a1 + 12); if ( *v6 == 69 ) *(_DWORD *)(a1 + 12) = v6 + 1; else result = 0; if ( (*(_BYTE *)(a1 + 10) & 4) == 0 ) { v2 = *(_DWORD *)(a1 + 56) - 1; goto LABEL_4; } return result; } //----- (00423670) -------------------------------------------------------- _DWORD *__usercall d_unqualified_name@(_DWORD *a1@) { char *v2; // edx char v3; // cl _DWORD *v4; // eax _DWORD *comp; // esi char v6; // al char v8; // al int v9; // eax int v10; // edx char *v11; // edx int v12; // eax int v13; // eax int v14; // edx _BYTE *v15; // eax _DWORD *v16; // eax _DWORD *v17; // edi int v18; // ebp int v19; // ecx _DWORD *v20; // eax int v21; // edi char *v22; // edx int v23; // eax int v24; // edx char *v25; // ecx int v26; // eax int v27; // eax int v28; // ebp int v29; // edx int v30; // eax char *v31; // eax int v32; // eax v2 = (char *)a1[3]; v3 = *v2; if ( (unsigned __int8)(*v2 - 48) <= 9u ) { comp = d_source_name((int)a1); if ( *(_BYTE *)a1[3] != 66 ) return comp; return d_abi_tags(a1, comp); } if ( (unsigned __int8)(v3 - 97) <= 0x19u ) { if ( v3 == 111 && v2[1] == 110 ) a1[3] = v2 + 2; v4 = d_operator_name(a1); comp = v4; if ( v4 ) { if ( *v4 == 50 ) { v13 = v4[2]; v14 = *(_DWORD *)(v13 + 8); v15 = *(_BYTE **)v13; a1[11] += v14 + 7; if ( *v15 == 108 && v15[1] == 105 && !v15[2] ) { v16 = d_source_name((int)a1); comp = d_make_comp(a1, 55, (int)comp, (int)v16); } } } goto LABEL_6; } if ( (unsigned __int8)(v3 - 67) <= 1u ) { v17 = (_DWORD *)a1[10]; if ( v17 && (!*v17 || *v17 == 24) ) { a1[11] += v17[3]; v6 = *v2; v3 = *v2; if ( *v2 != 67 ) { if ( v6 != 68 ) { comp = 0; goto LABEL_7; } goto LABEL_34; } } else if ( v3 != 67 ) { LABEL_34: switch ( v2[1] ) { case '0': v18 = 1; goto LABEL_39; case '1': v18 = 2; goto LABEL_39; case '2': v18 = 3; goto LABEL_39; case '4': v18 = 4; goto LABEL_39; case '5': v18 = 5; LABEL_39: v19 = a1[5]; a1[3] = v2 + 2; if ( v19 < a1[6] && (v20 = (_DWORD *)(a1[4] + 16 * v19), v20[1] = 0, comp = v20, a1[5] = v19 + 1, v17) ) { v20[1] = 0; *v20 = 8; v20[2] = v18; v20[3] = v17; v6 = v2[2]; } else { v6 = v2[2]; comp = 0; } break; default: v6 = v3; comp = 0; break; } LABEL_7: if ( v6 != 66 ) return comp; return d_abi_tags(a1, comp); } v27 = v2[1]; if ( (_BYTE)v27 == 73 ) { a1[3] = v2 + 1; v32 = v2[2]; if ( (unsigned __int8)(v32 - 49) > 4u ) { v6 = v2[1]; comp = 0; goto LABEL_7; } v28 = v32 - 48; a1[3] = v2 + 3; d_type(); v17 = (_DWORD *)a1[10]; } else { if ( (unsigned __int8)(v27 - 49) > 4u ) return 0; v28 = v27 - 48; a1[3] = v2 + 2; } v29 = a1[5]; if ( v29 < a1[6] ) { v30 = a1[4] + 16 * a1[5]; *(_DWORD *)(v30 + 4) = 0; comp = (_DWORD *)v30; v31 = (char *)a1[3]; a1[5] = v29 + 1; if ( v17 ) { comp[1] = 0; *comp = 7; comp[2] = v28; comp[3] = v17; v6 = *v31; goto LABEL_7; } goto LABEL_61; } goto LABEL_60; } if ( v3 == 76 ) { a1[3] = v2 + 1; comp = d_source_name((int)a1); if ( comp && d_discriminator((int)a1) ) goto LABEL_6; return 0; } if ( v3 != 85 ) return 0; v8 = v2[1]; if ( v8 == 108 ) { comp = 0; a1[3] = v2 + 1; v6 = v2[1]; if ( v6 != 108 ) goto LABEL_7; a1[3] = v2 + 2; v21 = d_parmlist(a1); if ( !v21 ) goto LABEL_6; v22 = (char *)a1[3]; v6 = *v22; if ( *v22 != 69 ) goto LABEL_7; a1[3] = v22 + 1; v23 = d_compact_number((int)a1); if ( v23 >= 0 ) { v24 = a1[5]; v25 = (char *)a1[3]; if ( v24 >= a1[6] || (comp = (_DWORD *)(a1[4] + 16 * a1[5]), comp[1] = 0, a1[5] = v24 + 1, comp[3] = v23, v26 = a1[8], *comp = 70, comp[2] = v21, v26 >= a1[9]) ) { v6 = *v25; comp = 0; } else { *(_DWORD *)(a1[7] + 4 * v26) = comp; a1[8] = v26 + 1; v6 = *v25; } goto LABEL_7; } LABEL_60: v31 = (char *)a1[3]; LABEL_61: v6 = *v31; comp = 0; goto LABEL_7; } if ( v8 == 116 ) { comp = 0; a1[3] = v2 + 1; v6 = v2[1]; if ( v6 != 116 ) goto LABEL_7; a1[3] = v2 + 2; v9 = d_compact_number((int)a1); if ( v9 >= 0 ) { v10 = a1[5]; if ( v10 < a1[6] ) { comp = (_DWORD *)(a1[4] + 16 * v10); comp[1] = 0; a1[5] = v10 + 1; v11 = (char *)a1[3]; comp[2] = v9; v12 = a1[8]; *comp = 72; if ( v12 >= a1[9] ) { v6 = *v11; comp = 0; } else { *(_DWORD *)(a1[7] + 4 * v12) = comp; a1[8] = v12 + 1; v6 = *v11; } goto LABEL_7; } goto LABEL_60; } LABEL_6: v6 = *(_BYTE *)a1[3]; goto LABEL_7; } return 0; } // 4227B0: using guessed type int d_type(void); //----- (00423A80) -------------------------------------------------------- _DWORD *__usercall d_expr_primary@(_DWORD *a1@) { _BYTE *v2; // eax _BYTE *v3; // edx int v4; // ecx int *v5; // eax char *v6; // ebp int v7; // edi char v8; // cl char *v9; // edx char *v10; // esi _DWORD *result; // eax int v12; // esi int v13; // ecx _DWORD *v14; // edx int v15; // edx int v16; // [esp+0h] [ebp-2Ch] int v17; // [esp+4h] [ebp-28h] int v18; // [esp+8h] [ebp-24h] int v19; // [esp+Ch] [ebp-20h] int v20; // [esp+10h] [ebp-1Ch] int v21; // [esp+14h] [ebp-18h] int v22; // [esp+18h] [ebp-14h] int v23; // [esp+1Ch] [ebp-10h] int v24; // [esp+20h] [ebp-Ch] int v25; // [esp+24h] [ebp-8h] int v26; // [esp+28h] [ebp-4h] v2 = (_BYTE *)a1[3]; if ( *v2 != 76 ) return 0; v3 = v2 + 1; a1[3] = v2 + 1; v4 = (unsigned __int8)v2[1]; if ( (_BYTE)v4 == 95 ) { v3 = v2 + 2; a1[3] = v2 + 2; v4 = (unsigned __int8)v2[2]; if ( (_BYTE)v4 != 90 ) { result = 0; goto LABEL_14; } LABEL_13: a1[3] = v3 + 1; result = (_DWORD *)d_encoding(v4, 0); v3 = (_BYTE *)a1[3]; LOBYTE(v4) = *v3; goto LABEL_14; } if ( (_BYTE)v4 == 90 ) goto LABEL_13; v5 = d_type((int)a1, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); if ( !v5 ) return 0; if ( *v5 == 39 ) { v15 = v5[2]; if ( *(_DWORD *)(v15 + 16) ) a1[11] -= *(_DWORD *)(v15 + 4); } v6 = (char *)a1[3]; v7 = 61; v8 = *v6; if ( *v6 == 110 ) { v7 = 62; a1[3] = v6 + 1; v8 = *++v6; } if ( v8 != 69 ) { v9 = v6 + 1; while ( v8 ) { a1[3] = v9; v10 = v9; v8 = *v9++; if ( v8 == 69 ) { v12 = v10 - v6; goto LABEL_19; } } return 0; } v12 = 0; LABEL_19: v13 = a1[5]; if ( v13 >= a1[6] || (v14 = (_DWORD *)(a1[4] + 16 * a1[5]), v14[1] = 0, a1[5] = v13 + 1, v12 <= 0) ) { v14 = 0; } else { v14[1] = 0; *v14 = 0; v14[2] = v6; v14[3] = v12; } result = d_make_comp(a1, v7, (int)v5, (int)v14); v3 = (_BYTE *)a1[3]; LOBYTE(v4) = *v3; LABEL_14: if ( (_BYTE)v4 != 69 ) return 0; a1[3] = v3 + 1; return result; } // 423AAB: variable 'v16' is possibly undefined // 423AAB: variable 'v17' is possibly undefined // 423AAB: variable 'v18' is possibly undefined // 423AAB: variable 'v19' is possibly undefined // 423AAB: variable 'v20' is possibly undefined // 423AAB: variable 'v21' is possibly undefined // 423AAB: variable 'v22' is possibly undefined // 423AAB: variable 'v23' is possibly undefined // 423AAB: variable 'v24' is possibly undefined // 423AAB: variable 'v25' is possibly undefined // 423AAB: variable 'v26' is possibly undefined // 421BD0: using guessed type int __fastcall d_encoding(_DWORD, _DWORD); //----- (00423BD0) -------------------------------------------------------- int __usercall d_print_comp@(int result@, int a2@, int *a3@) { int v3; // ebx int v4; // ebp int v5; // edx int v6; // edi int v7; // edi int v8; // ecx int v9; // ecx char *v10; // eax int v11; // eax int v12; // eax int v13; // ecx int v14; // esi const char *Str1; // edi int v16; // eax int v17; // eax int v18; // eax int v19; // eax _DWORD *v20; // eax int v21; // ecx int v22; // eax int **v23; // esi int **v24; // eax int v25; // edx int v26; // eax int v27; // eax int *v28; // esi _DWORD *v29; // ecx unsigned int v30; // esi int v31; // eax int v32; // eax int v33; // eax int v34; // ecx unsigned int v35; // esi const char *v36; // edi char i13; // dl unsigned int v38; // eax int v39; // eax int v40; // eax int v41; // ecx int v42; // edi int v43; // eax _DWORD *v44; // esi unsigned int v45; // edi _DWORD *v46; // ecx char *v47; // esi int v48; // eax _DWORD *v49; // eax unsigned int v50; // edx char *v51; // ecx char *v52; // esi _DWORD *v53; // ecx int v54; // esi int v55; // edi char *v56; // esi int v57; // eax char *v58; // edi int v59; // ecx char v60; // dl int v61; // eax int **v62; // esi int v63; // edi int v64; // ecx int v65; // ecx int v66; // eax int v67; // edx int v68; // eax const char *v69; // esi char i12; // cl int v71; // edx int v72; // eax int v73; // edi int v74; // eax int v75; // eax int v76; // eax int v77; // eax int v78; // eax const char *v79; // esi char i16; // dl int v81; // ecx int v82; // eax int v83; // eax const char *v84; // esi char i15; // dl int v86; // ecx int v87; // eax int v88; // ecx int v89; // esi int v90; // eax int v91; // eax int i24; // eax int v93; // eax int v94; // eax const char *v95; // esi char i14; // dl int v97; // ecx int v98; // eax const char *v99; // esi char v100; // dl int v101; // eax int v102; // ecx int v103; // eax _DWORD *v104; // eax int v105; // edx int v106; // eax const char *v107; // esi char i28; // dl int v109; // ecx int v110; // eax int v111; // eax const char *v112; // esi char i27; // dl int v114; // ecx int v115; // eax int v116; // eax const char *v117; // esi char i26; // dl int v119; // ecx int v120; // eax int v121; // eax const char *v122; // esi char i25; // dl int v124; // ecx int v125; // eax int v126; // edi char *v127; // esi int v128; // eax char *v129; // edi int v130; // ecx char v131; // dl int v132; // eax int v133; // eax const char *v134; // esi char i10; // dl int v136; // ecx int v137; // eax int v138; // eax const char *v139; // esi char i8; // dl int v141; // ecx int v142; // eax int v143; // eax const char *v144; // esi char i7; // dl int v146; // ecx int v147; // eax int v148; // eax const char *v149; // esi char i5; // dl int v151; // ecx int v152; // eax int v153; // eax const char *v154; // esi char i6; // dl int v156; // ecx int v157; // eax int v158; // eax const char *v159; // esi char i4; // dl int v161; // ecx int v162; // eax int v163; // eax const char *v164; // esi char i3; // dl int v166; // ecx int v167; // eax int v168; // eax const char *v169; // esi char i1; // dl int v171; // ecx int v172; // eax int v173; // eax const char *v174; // esi char i2; // dl int v176; // ecx int v177; // eax int v178; // eax const char *v179; // esi char nn; // dl int v181; // ecx int v182; // eax int v183; // eax const char *v184; // esi char mm; // dl int v186; // ecx int v187; // eax int v188; // eax const char *v189; // esi char ii; // dl int v191; // ecx int v192; // eax int v193; // eax const char *v194; // esi char kk; // dl int v196; // ecx int v197; // eax int v198; // eax const char *v199; // esi char n; // dl int v201; // ecx int v202; // eax int v203; // eax const char *v204; // esi char m; // dl int v206; // ecx int v207; // eax int v208; // eax const char *v209; // esi char j; // dl int v211; // ecx int v212; // eax int v213; // eax int v214; // eax char *v215; // edi int v216; // ecx char *v217; // esi int v218; // eax char *v219; // edi int v220; // ecx char v221; // dl int v222; // eax const char *v223; // esi int v224; // eax char i30; // dl int v226; // ecx int v227; // eax const char *v228; // esi int v229; // eax char i29; // dl int v231; // ecx int v232; // eax int v233; // eax const char *v234; // esi char i; // cl int v236; // edx int v237; // eax int v238; // esi int v239; // edi char *v240; // ecx int v241; // eax int v242; // eax int v243; // eax int v244; // eax int v245; // eax int v246; // edi int v247; // eax char *v248; // eax int v249; // edx char *v250; // ecx char *v251; // esi unsigned int v252; // ecx char *v253; // eax unsigned int v254; // ecx char *v255; // esi int v256; // edx int v257; // edx _DWORD *v258; // ecx char *v259; // kr0C_4 char *v260; // esi int v261; // eax int v262; // ecx char v263; // dl int v264; // eax int v265; // eax const char *v266; // esi char i23; // dl int v268; // ecx int v269; // eax int v270; // eax const char *v271; // esi char i21; // dl int v273; // ecx int v274; // eax int v275; // eax const char *v276; // esi char i22; // dl int v278; // ecx int v279; // eax int v280; // eax const char *v281; // esi char i20; // dl int v283; // ecx int v284; // eax int v285; // eax int v286; // eax const char *v287; // esi char i19; // dl int v289; // ecx int v290; // eax int v291; // esi int v292; // edi int v293; // eax int v294; // eax int v295; // eax int v296; // eax int v297; // eax char *v298; // esi int v299; // eax int v300; // eax int v301; // edi int v302; // eax char *v303; // edi int v304; // ecx char v305; // dl int v306; // eax int v307; // ecx const char *v308; // esi int v309; // eax char v310; // dl int v311; // ecx int v312; // eax char *v313; // kr10_4 char *v314; // esi int v315; // ecx char v316; // dl int v317; // eax int v318; // eax int v319; // eax int v320; // eax int v321; // eax int v322; // edx _DWORD *v323; // ecx int v324; // eax const char *v325; // esi int v326; // eax char jj; // dl int v328; // ecx int v329; // eax const char *v330; // esi int v331; // eax char i9; // dl int v333; // ecx int v334; // eax char *v335; // kr14_4 char *v336; // esi int v337; // ecx char v338; // dl int v339; // eax int v340; // eax int v341; // eax int v342; // edi int v343; // eax _DWORD *v344; // eax _DWORD *v345; // esi int v346; // eax int v347; // edi char *v348; // kr18_4 char *v349; // esi int v350; // eax int v351; // ecx char v352; // dl int v353; // eax unsigned int v354; // esi unsigned int v355; // edx int v356; // ecx int v357; // edx char v358; // al char *v359; // ebp int v360; // edx int v361; // edx const char *v362; // esi char k; // cl int v364; // edx int v365; // eax char *v366; // kr1C_4 char *v367; // esi int v368; // eax int v369; // ecx char v370; // dl int v371; // eax int v372; // eax int v373; // eax int v374; // eax const char *v375; // esi char i11; // cl int v377; // edx int v378; // eax int v379; // edi char *v380; // esi int v381; // eax char *v382; // edi int v383; // ecx char v384; // dl int v385; // eax int v386; // eax int v387; // eax int v388; // eax int v389; // eax int v390; // eax int v391; // eax int v392; // eax int v393; // eax _DWORD *v394; // eax int v395; // eax const char *v396; // esi int v397; // ecx char v398; // dl int v399; // eax int v400; // eax const char *v401; // esi int v402; // ecx char v403; // dl int v404; // eax int v405; // edx int v406; // eax int v407; // ecx int v408; // ecx int v409; // edi int v410; // eax _DWORD *v411; // eax int i18; // edx int v413; // eax int v414; // eax int v415; // eax int v416; // eax int v417; // eax int v418; // eax int v419; // eax int v420; // eax int v421; // eax bool v422; // zf int v423; // eax int v424; // ecx int v425; // eax char v426; // al int v427; // eax int v428; // eax int v429; // eax int v430; // eax int v431; // eax const char *v432; // edi int v433; // ecx char v434; // dl int v435; // eax unsigned int v436; // kr04_4 int v437; // eax char *v438; // edi int v439; // ecx char v440; // dl int v441; // eax int v442; // eax const char *v443; // edi int v444; // ecx char v445; // dl int v446; // eax _DWORD *v447; // eax int v448; // edi int v449; // edx int *v450; // edx int v451; // edi int v452; // edx _DWORD *v453; // eax int v454; // edx int v455; // eax int v456; // edi int v457; // eax _DWORD *v458; // esi int v459; // eax _DWORD *v460; // edi char *v461; // esi unsigned int v462; // kr08_4 int v463; // edx char v464; // cl int v465; // eax int v466; // eax char v467; // al int v468; // eax int v469; // eax const char *v470; // esi int v471; // edx char v472; // cl int v473; // eax int v474; // eax int v475; // eax int v476; // eax _DWORD *v477; // esi _DWORD *v478; // eax int *i31; // edi int v480; // eax int v481; // edx int v482; // eax int v483; // eax int v484; // eax int v485; // eax int v486; // eax int v487; // edx int v488; // eax int v489; // eax int v490; // eax int v491; // eax int v492; // eax int v493; // eax int v494; // eax int v495; // eax _DWORD *pack; // eax int i17; // ecx char *v498; // esi unsigned int v499; // kr0C_4 char v500; // di int v501; // eax int v502; // eax int v503; // eax int v504; // eax int v505; // eax int v506; // eax int v507; // eax int v508; // eax int v509; // eax int v510; // eax int v511; // eax int v512; // eax char *Str2; // [esp+4h] [ebp-98h] char v515; // [esp+18h] [ebp-84h] char v516; // [esp+18h] [ebp-84h] char v517; // [esp+18h] [ebp-84h] char v518; // [esp+18h] [ebp-84h] char v519; // [esp+18h] [ebp-84h] char v520; // [esp+18h] [ebp-84h] char v521; // [esp+18h] [ebp-84h] char v522; // [esp+18h] [ebp-84h] char v523; // [esp+18h] [ebp-84h] char v524; // [esp+18h] [ebp-84h] char v525; // [esp+18h] [ebp-84h] char v526; // [esp+18h] [ebp-84h] char v527; // [esp+18h] [ebp-84h] char v528; // [esp+18h] [ebp-84h] char v529; // [esp+18h] [ebp-84h] unsigned int v530; // [esp+18h] [ebp-84h] char v531; // [esp+18h] [ebp-84h] char v532; // [esp+18h] [ebp-84h] char v533; // [esp+18h] [ebp-84h] char v534; // [esp+18h] [ebp-84h] char v535; // [esp+18h] [ebp-84h] char *v536; // [esp+1Ch] [ebp-80h] char v537; // [esp+1Ch] [ebp-80h] char v538; // [esp+1Ch] [ebp-80h] char v539; // [esp+1Ch] [ebp-80h] char v540; // [esp+1Ch] [ebp-80h] char *v541; // [esp+1Ch] [ebp-80h] char v542; // [esp+1Ch] [ebp-80h] char v543; // [esp+1Ch] [ebp-80h] char v544; // [esp+1Ch] [ebp-80h] char v545; // [esp+1Ch] [ebp-80h] char v546; // [esp+1Ch] [ebp-80h] char v547; // [esp+1Ch] [ebp-80h] char v548; // [esp+1Ch] [ebp-80h] char v549; // [esp+1Ch] [ebp-80h] char v550; // [esp+1Ch] [ebp-80h] char v551; // [esp+1Ch] [ebp-80h] char v552; // [esp+1Ch] [ebp-80h] char v553; // [esp+1Ch] [ebp-80h] char v554; // [esp+1Ch] [ebp-80h] char v555; // [esp+1Ch] [ebp-80h] char v556; // [esp+1Ch] [ebp-80h] char v557; // [esp+1Ch] [ebp-80h] char v558; // [esp+1Ch] [ebp-80h] char v559; // [esp+1Ch] [ebp-80h] char *v560; // [esp+1Ch] [ebp-80h] char v561; // [esp+1Ch] [ebp-80h] char v562; // [esp+1Ch] [ebp-80h] char v563; // [esp+1Ch] [ebp-80h] char v564; // [esp+1Ch] [ebp-80h] char v565; // [esp+1Ch] [ebp-80h] char v566; // [esp+1Ch] [ebp-80h] char v567; // [esp+1Ch] [ebp-80h] char v568; // [esp+1Ch] [ebp-80h] char v569; // [esp+1Ch] [ebp-80h] char *v570; // [esp+1Ch] [ebp-80h] char v571; // [esp+1Ch] [ebp-80h] char v572; // [esp+1Ch] [ebp-80h] char *v573; // [esp+1Ch] [ebp-80h] char v574; // [esp+1Ch] [ebp-80h] char v575; // [esp+1Ch] [ebp-80h] char *v576; // [esp+1Ch] [ebp-80h] char v577; // [esp+1Ch] [ebp-80h] char *v578; // [esp+1Ch] [ebp-80h] unsigned int v579; // [esp+20h] [ebp-7Ch] _DWORD *v580; // [esp+20h] [ebp-7Ch] int v581; // [esp+20h] [ebp-7Ch] int v582; // [esp+20h] [ebp-7Ch] unsigned int *v583; // [esp+20h] [ebp-7Ch] char v584; // [esp+20h] [ebp-7Ch] int v585; // [esp+20h] [ebp-7Ch] int v586; // [esp+24h] [ebp-78h] _DWORD *v587; // [esp+24h] [ebp-78h] int v588; // [esp+24h] [ebp-78h] int v589; // [esp+24h] [ebp-78h] int v590; // [esp+28h] [ebp-74h] int v591; // [esp+28h] [ebp-74h] int v592; // [esp+2Ch] [ebp-70h] int *v593; // [esp+30h] [ebp-6Ch] BYREF char *v594; // [esp+34h] [ebp-68h] int v595[2]; // [esp+38h] [ebp-64h] BYREF char Buffer[4]; // [esp+40h] [ebp-5Ch] BYREF _DWORD *v597; // [esp+44h] [ebp-58h] int v598; // [esp+48h] [ebp-54h] int v599; // [esp+4Ch] [ebp-50h] char v600; // [esp+50h] [ebp-4Ch] BYREF v3 = result; if ( !a3 || (result = a3[1], v4 = (int)a3, result > 1) || (v5 = *(_DWORD *)(v3 + 284), v5 > 1024) ) { *(_DWORD *)(v3 + 280) = 1; return result; } v6 = *(_DWORD *)(v3 + 300); v593 = a3; a3[1] = result + 1; v536 = (char *)v6; v594 = (char *)v6; v7 = *(_DWORD *)(v3 + 280); *(_DWORD *)(v3 + 284) = v5 + 1; *(_DWORD *)(v3 + 300) = &v593; if ( v7 ) goto LABEL_21; v8 = *a3; v579 = *(_DWORD *)v4; switch ( *(_DWORD *)v4 ) { case 0: v215 = *(char **)(v4 + 8); if ( (a2 & 4) != 0 ) { v354 = (unsigned int)&v215[*(_DWORD *)(v4 + 12)]; if ( v354 <= (unsigned int)v215 ) goto LABEL_21; v570 = (char *)v4; LABEL_506: v358 = *v215; if ( (int)(v354 - (_DWORD)v215) <= 3 ) goto LABEL_502; if ( v358 != 95 ) goto LABEL_502; if ( v215[1] != 95 ) goto LABEL_502; if ( v215[2] != 85 ) goto LABEL_502; v359 = v215 + 3; if ( v354 <= (unsigned int)(v215 + 3) ) goto LABEL_502; v530 = v579; while ( 1 ) { v361 = *v359; if ( (unsigned __int8)(v361 - 48) <= 9u ) { v360 = v361 - 48; } else if ( (unsigned __int8)(v361 - 65) > 5u ) { if ( (unsigned __int8)(v361 - 97) > 5u ) { if ( v354 > (unsigned int)v359 && v530 <= 0xFF && (_BYTE)v361 == 95 ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v511 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v511); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v512 = *(_DWORD *)(v3 + 256); v215 = v359; *(_DWORD *)(v3 + 256) = v512 + 1; *(_BYTE *)(v3 + v512) = v530; *(_BYTE *)(v3 + 260) = v530; goto LABEL_505; } LABEL_502: v355 = *(_DWORD *)(v3 + 256); v356 = v355 + 1; if ( v355 == 255 ) { v357 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v529 = v358; (*(void (__thiscall **)(int, int, int, int))(v3 + 264))(v356, v3, 255, v357); v355 = v579; v358 = v529; v356 = 1; ++*(_DWORD *)(v3 + 296); } *(_DWORD *)(v3 + 256) = v356; *(_BYTE *)(v3 + v355) = v358; *(_BYTE *)(v3 + 260) = v358; LABEL_505: if ( v354 <= (unsigned int)++v215 ) { v4 = (int)v570; v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } goto LABEL_506; } v360 = v361 - 87; } else { v360 = v361 - 55; } ++v359; v530 = v360 + 16 * v530; if ( (char *)v354 == v359 ) goto LABEL_502; } } v216 = *(_DWORD *)(v4 + 12); if ( v216 ) { v217 = *(char **)(v4 + 8); v218 = *(_DWORD *)(v3 + 256); v219 = &v215[v216]; do { v221 = *v217; if ( v218 == 255 ) { v222 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v521 = v221; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v222); v220 = v579; v221 = v521; v218 = 1; ++*(_DWORD *)(v3 + 296); } else { v220 = v218++; } ++v217; *(_DWORD *)(v3 + 256) = v218; *(_BYTE *)(v3 + v220) = v221; *(_BYTE *)(v3 + 260) = v221; } while ( v219 != v217 ); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } goto LABEL_21; case 1: case 2: d_print_comp(*(_DWORD *)(v4 + 8), a2); if ( (a2 & 4) != 0 ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v26 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v26); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v27 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v27 + 1; *(_BYTE *)(v3 + v27) = 46; *(_BYTE *)(v3 + 260) = 46; } else { v395 = *(_DWORD *)(v3 + 256); v396 = "::"; do { v398 = *v396; if ( v395 == 255 ) { v399 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v571 = v398; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v399); ++*(_DWORD *)(v3 + 296); v398 = v571; v397 = 0; v395 = 1; } else { v397 = v395++; } ++v396; *(_DWORD *)(v3 + 256) = v395; *(_BYTE *)(v3 + v397) = v398; *(_BYTE *)(v3 + 260) = v398; } while ( v396 != "" ); } v28 = *(int **)(v4 + 12); if ( *v28 == 71 ) { v431 = *(_DWORD *)(v3 + 256); v432 = "{default arg#"; do { v434 = *v432; if ( v431 == 255 ) { v435 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v574 = v434; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v435); ++*(_DWORD *)(v3 + 296); v434 = v574; v433 = 0; v431 = 1; } else { v433 = v431++; } *(_DWORD *)(v3 + 256) = v431; ++v432; *(_BYTE *)(v3 + v433) = v434; *(_BYTE *)(v3 + 260) = v434; } while ( v432 != "" ); sprintf(Buffer, "%d", v28[3] + 1); v436 = strlen(Buffer) + 1; if ( v436 != 1 ) { v437 = *(_DWORD *)(v3 + 256); v438 = Buffer; do { v440 = *v438; if ( v437 == 255 ) { v441 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v584 = v440; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v441); ++*(_DWORD *)(v3 + 296); v440 = v584; v439 = 0; v437 = 1; } else { v439 = v437++; } *(_DWORD *)(v3 + 256) = v437; ++v438; *(_BYTE *)(v3 + v439) = v440; *(_BYTE *)(v3 + 260) = v440; } while ( &Buffer[v436 - 1] != v438 ); } v442 = *(_DWORD *)(v3 + 256); v443 = "}::"; do { v445 = *v443; if ( v442 == 255 ) { v446 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v575 = v445; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v446); ++*(_DWORD *)(v3 + 296); v445 = v575; v444 = 0; v442 = 1; } else { v444 = v442++; } *(_DWORD *)(v3 + 256) = v442; ++v443; *(_BYTE *)(v3 + v444) = v445; *(_BYTE *)(v3 + 260) = v445; } while ( v443 != "" ); v28 = (int *)v28[2]; } goto LABEL_604; case 3: v247 = *(_DWORD *)(v3 + 276); *(_DWORD *)(v3 + 276) = 0; v590 = v247; v583 = *(unsigned int **)(v4 + 8); if ( !v583 ) goto LABEL_684; v248 = Buffer; v589 = 0; v249 = *(_DWORD *)(v3 + 272); v250 = 0; while ( 2 ) { *(_DWORD *)v248 = v250; v251 = v248; *((_DWORD *)v248 + 2) = 0; v252 = *v583; ++v589; *((_DWORD *)v248 + 1) = v583; *((_DWORD *)v248 + 3) = v249; if ( v252 == 77 ) goto LABEL_485; if ( v252 > 0x4D ) { if ( v252 - 79 > 1 ) { *(_DWORD *)(v3 + 276) = v248; LABEL_337: if ( *v583 == 4 ) { v595[0] = v249; *(_DWORD *)(v3 + 272) = v595; v595[1] = (int)v583; } LABEL_339: d_print_comp(*(_DWORD *)(v4 + 12), a2); if ( *v583 == 4 ) *(_DWORD *)(v3 + 272) = v595[0]; v255 = &Buffer[16 * v589]; do { if ( !*((_DWORD *)v255 - 2) ) { v256 = *(_DWORD *)(v3 + 256); if ( v256 == 255 ) { v257 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v257); ++*(_DWORD *)(v3 + 296); v256 = 0; } *(_DWORD *)(v3 + 256) = v256 + 1; v258 = (_DWORD *)*((_DWORD *)v255 - 3); *(_BYTE *)(v3 + v256) = 32; *(_BYTE *)(v3 + 260) = 32; d_print_mod(v3, a2, v258); } v255 -= 16; } while ( Buffer != v255 ); *(_DWORD *)(v3 + 276) = v590; goto LABEL_348; } } else if ( v252 - 28 > 4 ) { *(_DWORD *)(v3 + 276) = v248; if ( v252 == 2 ) { v583 = (unsigned int *)v583[3]; if ( *v583 != 71 || (v583 = (unsigned int *)v583[2]) != 0 ) { v253 = &Buffer[16 * v589]; while ( 1 ) { v254 = *v583; if ( *v583 != 77 ) { if ( *v583 > 0x4D ) { if ( v254 - 79 > 1 ) goto LABEL_339; } else if ( v254 - 28 > 4 ) { goto LABEL_337; } } if ( v589 == 4 ) break; *(_DWORD *)(v3 + 276) = v253; qmemcpy(v253, v253 - 16, 0x10u); *((_DWORD *)v253 - 2) = 0; *(_DWORD *)v253 = v253 - 16; v253 += 16; *((_DWORD *)v253 - 7) = v583; *((_DWORD *)v253 - 5) = v249; ++v589; v583 = (unsigned int *)v583[2]; } } LABEL_684: *(_DWORD *)(v3 + 280) = 1; goto LABEL_348; } goto LABEL_337; } LABEL_485: v583 = (unsigned int *)v583[2]; if ( !v583 ) { *(_DWORD *)(v3 + 276) = v248; goto LABEL_684; } v248 += 16; if ( v589 != 4 ) { v250 = v251; continue; } break; } *(_DWORD *)(v3 + 276) = v251; *(_DWORD *)(v3 + 280) = 1; LABEL_348: v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 4: v238 = *(_DWORD *)(v3 + 328); v239 = *(_DWORD *)(v3 + 276); *(_DWORD *)(v3 + 328) = v4; *(_DWORD *)(v3 + 276) = 0; v240 = *(char **)(v4 + 8); if ( (a2 & 4) == 0 || *(_DWORD *)v240 || *((_DWORD *)v240 + 3) != 6 || (v578 = *(char **)(v4 + 8), v482 = strncmp(*((const char **)v240 + 2), "JArray", 6u), v240 = v578, v482) ) { d_print_comp(v240, a2); if ( *(_BYTE *)(v3 + 260) == 60 ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v392 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v392); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v393 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v393 + 1; *(_BYTE *)(v3 + v393) = 32; *(_BYTE *)(v3 + 260) = 32; } v241 = *(_DWORD *)(v3 + 256); if ( v241 == 255 ) { v242 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v242); ++*(_DWORD *)(v3 + 296); v241 = 0; } *(_DWORD *)(v3 + 256) = v241 + 1; *(_BYTE *)(v3 + v241) = 60; *(_BYTE *)(v3 + 260) = 60; d_print_comp(*(_DWORD *)(v4 + 12), a2); if ( *(_BYTE *)(v3 + 260) == 62 ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v390 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v390); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v391 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v391 + 1; *(_BYTE *)(v3 + v391) = 32; *(_BYTE *)(v3 + 260) = 32; } v243 = *(_DWORD *)(v3 + 256); if ( v243 == 255 ) { v244 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v244); ++*(_DWORD *)(v3 + 296); v243 = 0; } *(_DWORD *)(v3 + 256) = v243 + 1; *(_BYTE *)(v3 + v243) = 62; *(_BYTE *)(v3 + 260) = 62; } else { d_print_comp(*(_DWORD *)(v4 + 12), a2); d_append_buffer(v3, "[]", 2); } v245 = (int)v594; *(_DWORD *)(v3 + 276) = v239; v246 = *(_DWORD *)(v3 + 284); *(_DWORD *)(v3 + 328) = v238; v536 = (char *)v245; v5 = v246 - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 5: if ( *(_DWORD *)(v3 + 288) ) { v233 = *(_DWORD *)(v3 + 256); v234 = "auto:"; for ( i = 97; ; i = *v234 ) { if ( v233 == 255 ) { v237 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v522 = i; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v237); ++*(_DWORD *)(v3 + 296); i = v522; v236 = 0; v233 = 1; } else { v236 = v233++; } ++v234; *(_DWORD *)(v3 + 256) = v233; *(_BYTE *)(v3 + v236) = i; *(_BYTE *)(v3 + 260) = i; if ( v234 == "" ) break; } sprintf(Buffer, "%d", *(_DWORD *)(v4 + 8) + 1); v348 = &Buffer[strlen(Buffer)]; if ( v348 != Buffer ) { v349 = Buffer; v350 = *(_DWORD *)(v3 + 256); do { v352 = *v349; if ( v350 == 255 ) { v353 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v528 = v352; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v353); ++*(_DWORD *)(v3 + 296); v352 = v528; v351 = 0; v350 = 1; } else { v351 = v350++; } ++v349; *(_DWORD *)(v3 + 256) = v350; *(_BYTE *)(v3 + v351) = v352; *(_BYTE *)(v3 + 260) = v352; } while ( v348 != v349 ); } v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } v344 = d_lookup_template_argument_isra_0(v3, (int *)(v4 + 8)); if ( v344 ) { if ( *v344 != 47 || (v454 = *(_DWORD *)(v3 + 292), v454 < 0) || (v344 = d_index_template_argument_part_0(v344, v454)) != 0 ) { v345 = *(_DWORD **)(v3 + 272); *(_DWORD *)(v3 + 272) = *v345; d_print_comp(v344, a2); v346 = (int)v594; v347 = *(_DWORD *)(v3 + 284); *(_DWORD *)(v3 + 272) = v345; v536 = (char *)v346; v5 = v347 - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } } goto LABEL_679; case 6: v560 = *(char **)(v4 + 8); v208 = *(_DWORD *)(v3 + 256); if ( v560 ) { v209 = "parm#"; for ( j = 123; ; j = *v209++ ) { if ( v208 == 255 ) { v212 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v520 = j; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v212); ++*(_DWORD *)(v3 + 296); j = v520; v211 = 0; v208 = 1; } else { v211 = v208++; } *(_DWORD *)(v3 + 256) = v208; *(_BYTE *)(v3 + v211) = j; *(_BYTE *)(v3 + 260) = j; if ( v209 == "" ) break; } sprintf(Buffer, "%d", v560); v366 = &Buffer[strlen(Buffer)]; if ( v366 != Buffer ) { v367 = Buffer; v368 = *(_DWORD *)(v3 + 256); do { v370 = *v367; if ( v368 == 255 ) { v371 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v532 = v370; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v371); ++*(_DWORD *)(v3 + 296); v370 = v532; v369 = 0; v368 = 1; } else { v369 = v368++; } ++v367; *(_DWORD *)(v3 + 256) = v368; *(_BYTE *)(v3 + v369) = v370; *(_BYTE *)(v3 + 260) = v370; } while ( v366 != v367 ); } if ( *(_DWORD *)(v3 + 256) == 255 ) { v372 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v372); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v373 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v373 + 1; *(_BYTE *)(v3 + v373) = 125; v374 = (int)v594; *(_BYTE *)(v3 + 260) = 125; v536 = (char *)v374; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } else { v362 = "this"; for ( k = 116; ; k = *v362 ) { if ( v208 == 255 ) { v365 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v531 = k; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v365); ++*(_DWORD *)(v3 + 296); k = v531; v364 = 0; v208 = 1; } else { v364 = v208++; } ++v362; *(_DWORD *)(v3 + 256) = v208; *(_BYTE *)(v3 + v364) = k; *(_BYTE *)(v3 + 260) = k; if ( v362 == "" ) break; } v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } goto LABEL_21; case 7: goto LABEL_47; case 8: v213 = *(_DWORD *)(v3 + 256); if ( v213 == 255 ) { v214 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v214); ++*(_DWORD *)(v3 + 296); v213 = 0; } *(_DWORD *)(v3 + 256) = v213 + 1; *(_BYTE *)(v3 + v213) = 126; *(_BYTE *)(v3 + 260) = 126; d_print_comp(*(_DWORD *)(v4 + 12), a2); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 9: v203 = *(_DWORD *)(v3 + 256); v204 = "table for "; for ( m = 118; ; m = *v204++ ) { if ( v203 == 255 ) { v207 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v559 = m; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v207); ++*(_DWORD *)(v3 + 296); m = v559; v206 = 0; v203 = 1; } else { v206 = v203++; } *(_DWORD *)(v3 + 256) = v203; *(_BYTE *)(v3 + v206) = m; *(_BYTE *)(v3 + 260) = m; if ( v204 == "" ) break; } goto LABEL_427; case 0xA: v198 = *(_DWORD *)(v3 + 256); v199 = "TT for "; for ( n = 86; ; n = *v199++ ) { if ( v198 == 255 ) { v202 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v558 = n; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v202); ++*(_DWORD *)(v3 + 296); n = v558; v201 = 0; v198 = 1; } else { v201 = v198++; } *(_DWORD *)(v3 + 256) = v198; *(_BYTE *)(v3 + v201) = n; *(_BYTE *)(v3 + 260) = n; if ( v199 == "" ) break; } goto LABEL_427; case 0xB: v188 = *(_DWORD *)(v3 + 256); v189 = "onstruction vtable for "; for ( ii = 99; ; ii = *v189++ ) { if ( v188 == 255 ) { v192 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v556 = ii; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v192); ++*(_DWORD *)(v3 + 296); ii = v556; v191 = 0; v188 = 1; } else { v191 = v188++; } *(_DWORD *)(v3 + 256) = v188; *(_BYTE *)(v3 + v191) = ii; *(_BYTE *)(v3 + 260) = ii; if ( v189 == "" ) break; } v325 = "-in-"; d_print_comp(*(_DWORD *)(v4 + 8), a2); v326 = *(_DWORD *)(v3 + 256); for ( jj = 45; ; jj = *v325 ) { if ( v326 == 255 ) { v329 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v568 = jj; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v329); ++*(_DWORD *)(v3 + 296); jj = v568; v328 = 0; v326 = 1; } else { v328 = v326++; } ++v325; *(_DWORD *)(v3 + 256) = v326; *(_BYTE *)(v3 + v328) = jj; *(_BYTE *)(v3 + 260) = jj; if ( v325 == "" ) break; } goto LABEL_47; case 0xC: v193 = *(_DWORD *)(v3 + 256); v194 = "ypeinfo for "; for ( kk = 116; ; kk = *v194++ ) { if ( v193 == 255 ) { v197 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v557 = kk; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v197); ++*(_DWORD *)(v3 + 296); kk = v557; v196 = 0; v193 = 1; } else { v196 = v193++; } *(_DWORD *)(v3 + 256) = v193; *(_BYTE *)(v3 + v196) = kk; *(_BYTE *)(v3 + 260) = kk; if ( v194 == "" ) break; } goto LABEL_427; case 0xD: v183 = *(_DWORD *)(v3 + 256); v184 = "ypeinfo name for "; for ( mm = 116; ; mm = *v184++ ) { if ( v183 == 255 ) { v187 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v555 = mm; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v187); ++*(_DWORD *)(v3 + 296); mm = v555; v186 = 0; v183 = 1; } else { v186 = v183++; } *(_DWORD *)(v3 + 256) = v183; *(_BYTE *)(v3 + v186) = mm; *(_BYTE *)(v3 + 260) = mm; if ( v184 == "" ) break; } goto LABEL_427; case 0xE: v178 = *(_DWORD *)(v3 + 256); v179 = "ypeinfo fn for "; for ( nn = 116; ; nn = *v179++ ) { if ( v178 == 255 ) { v182 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v554 = nn; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v182); ++*(_DWORD *)(v3 + 296); nn = v554; v181 = 0; v178 = 1; } else { v181 = v178++; } *(_DWORD *)(v3 + 256) = v178; *(_BYTE *)(v3 + v181) = nn; *(_BYTE *)(v3 + 260) = nn; if ( v179 == "" ) break; } goto LABEL_427; case 0xF: v168 = *(_DWORD *)(v3 + 256); v169 = "on-virtual thunk to "; for ( i1 = 110; ; i1 = *v169++ ) { if ( v168 == 255 ) { v172 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v552 = i1; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v172); ++*(_DWORD *)(v3 + 296); i1 = v552; v171 = 0; v168 = 1; } else { v171 = v168++; } *(_DWORD *)(v3 + 256) = v168; *(_BYTE *)(v3 + v171) = i1; *(_BYTE *)(v3 + 260) = i1; if ( v169 == "" ) break; } goto LABEL_427; case 0x10: v173 = *(_DWORD *)(v3 + 256); v174 = "irtual thunk to "; for ( i2 = 118; ; i2 = *v174++ ) { if ( v173 == 255 ) { v177 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v553 = i2; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v177); ++*(_DWORD *)(v3 + 296); i2 = v553; v176 = 0; v173 = 1; } else { v176 = v173++; } *(_DWORD *)(v3 + 256) = v173; *(_BYTE *)(v3 + v176) = i2; *(_BYTE *)(v3 + 260) = i2; if ( v174 == "" ) break; } goto LABEL_427; case 0x11: v163 = *(_DWORD *)(v3 + 256); v164 = "ovariant return thunk to "; for ( i3 = 99; ; i3 = *v164++ ) { if ( v163 == 255 ) { v167 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v551 = i3; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v167); ++*(_DWORD *)(v3 + 296); i3 = v551; v166 = 0; v163 = 1; } else { v166 = v163++; } *(_DWORD *)(v3 + 256) = v163; *(_BYTE *)(v3 + v166) = i3; *(_BYTE *)(v3 + 260) = i3; if ( v164 == "" ) break; } goto LABEL_427; case 0x12: v158 = *(_DWORD *)(v3 + 256); v159 = "ava Class for "; for ( i4 = 106; ; i4 = *v159++ ) { if ( v158 == 255 ) { v162 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v550 = i4; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v162); ++*(_DWORD *)(v3 + 296); i4 = v550; v161 = 0; v158 = 1; } else { v161 = v158++; } *(_DWORD *)(v3 + 256) = v158; *(_BYTE *)(v3 + v161) = i4; *(_BYTE *)(v3 + 260) = i4; if ( v159 == "" ) break; } goto LABEL_427; case 0x13: v148 = *(_DWORD *)(v3 + 256); v149 = "uard variable for "; for ( i5 = 103; ; i5 = *v149++ ) { if ( v148 == 255 ) { v152 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v548 = i5; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v152); ++*(_DWORD *)(v3 + 296); i5 = v548; v151 = 0; v148 = 1; } else { v151 = v148++; } *(_DWORD *)(v3 + 256) = v148; *(_BYTE *)(v3 + v151) = i5; *(_BYTE *)(v3 + 260) = i5; if ( v149 == "" ) break; } goto LABEL_427; case 0x14: v153 = *(_DWORD *)(v3 + 256); v154 = "LS init function for "; for ( i6 = 84; ; i6 = *v154++ ) { if ( v153 == 255 ) { v157 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v549 = i6; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v157); ++*(_DWORD *)(v3 + 296); i6 = v549; v156 = 0; v153 = 1; } else { v156 = v153++; } *(_DWORD *)(v3 + 256) = v153; *(_BYTE *)(v3 + v156) = i6; *(_BYTE *)(v3 + 260) = i6; if ( v154 == "" ) break; } goto LABEL_427; case 0x15: v143 = *(_DWORD *)(v3 + 256); v144 = "LS wrapper function for "; for ( i7 = 84; ; i7 = *v144++ ) { if ( v143 == 255 ) { v147 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v547 = i7; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v147); ++*(_DWORD *)(v3 + 296); i7 = v547; v146 = 0; v143 = 1; } else { v146 = v143++; } *(_DWORD *)(v3 + 256) = v143; *(_BYTE *)(v3 + v146) = i7; *(_BYTE *)(v3 + 260) = i7; if ( v144 == "" ) break; } goto LABEL_427; case 0x16: v138 = *(_DWORD *)(v3 + 256); v139 = "eference temporary #"; for ( i8 = 114; ; i8 = *v139++ ) { if ( v138 == 255 ) { v142 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v546 = i8; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v142); ++*(_DWORD *)(v3 + 296); i8 = v546; v141 = 0; v138 = 1; } else { v141 = v138++; } *(_DWORD *)(v3 + 256) = v138; *(_BYTE *)(v3 + v141) = i8; *(_BYTE *)(v3 + 260) = i8; if ( v139 == "" ) break; } v330 = " for "; d_print_comp(*(_DWORD *)(v4 + 12), a2); v331 = *(_DWORD *)(v3 + 256); for ( i9 = 32; ; i9 = *v330 ) { if ( v331 == 255 ) { v334 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v569 = i9; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v334); ++*(_DWORD *)(v3 + 296); i9 = v569; v333 = 0; v331 = 1; } else { v333 = v331++; } ++v330; *(_DWORD *)(v3 + 256) = v331; *(_BYTE *)(v3 + v333) = i9; *(_BYTE *)(v3 + 260) = i9; if ( v330 == "" ) break; } goto LABEL_427; case 0x17: v133 = *(_DWORD *)(v3 + 256); v134 = "idden alias for "; for ( i10 = 104; ; i10 = *v134++ ) { if ( v133 == 255 ) { v137 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v545 = i10; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v137); ++*(_DWORD *)(v3 + 296); i10 = v545; v136 = 0; v133 = 1; } else { v136 = v133++; } *(_DWORD *)(v3 + 256) = v133; *(_BYTE *)(v3 + v136) = i10; *(_BYTE *)(v3 + 260) = i10; if ( v134 == "" ) break; } goto LABEL_427; case 0x18: v126 = *(_DWORD *)(v4 + 12); v127 = *(char **)(v4 + 8); if ( v126 ) { v128 = *(_DWORD *)(v3 + 256); v129 = &v127[v126]; do { v131 = *v127; if ( v128 == 255 ) { v132 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v519 = v131; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v132); ++*(_DWORD *)(v3 + 296); v131 = v519; v130 = 0; v128 = 1; } else { v130 = v128++; } ++v127; *(_DWORD *)(v3 + 256) = v128; *(_BYTE *)(v3 + v130) = v131; *(_BYTE *)(v3 + 260) = v131; } while ( v129 != v127 ); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } goto LABEL_21; case 0x19: case 0x1A: case 0x1B: v23 = *(int ***)(v3 + 276); v24 = v23; if ( !v23 ) goto LABEL_633; while ( 2 ) { if ( v24[2] ) goto LABEL_33; v25 = *v24[1]; if ( (unsigned int)(v25 - 25) > 2 ) { v23 = *(int ***)(v3 + 276); v7 = 0; LABEL_633: v580 = (_DWORD *)v4; goto LABEL_70; } if ( v579 != v25 ) { LABEL_33: v24 = (int **)*v24; if ( !v24 ) { v580 = (_DWORD *)v4; v23 = *(int ***)(v3 + 276); goto LABEL_70; } continue; } break; } LABEL_427: d_print_comp(*(_DWORD *)(v4 + 8), a2); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x1C: case 0x1D: case 0x1E: case 0x1F: case 0x20: case 0x21: case 0x22: case 0x25: case 0x26: case 0x4D: case 0x4F: case 0x50: v21 = 0; goto LABEL_23; case 0x23: case 0x24: v580 = *(_DWORD **)(v4 + 8); v43 = *v580; if ( *(_DWORD *)(v3 + 288) ) goto LABEL_65; v7 = 0; if ( v43 != 5 ) goto LABEL_65; v447 = *(_DWORD **)(v3 + 304); v448 = *(_DWORD *)(v3 + 308); if ( v448 <= 0 ) goto LABEL_706; v592 = v5; v449 = 0; break; case 0x27: v54 = *(_DWORD *)(v4 + 8); if ( (a2 & 4) != 0 ) { v379 = *(_DWORD *)(v54 + 12); v380 = *(char **)(v54 + 8); if ( v379 ) { v381 = *(_DWORD *)(v3 + 256); v382 = &v380[v379]; do { v384 = *v380; if ( v381 == 255 ) { v385 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v534 = v384; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v385); ++*(_DWORD *)(v3 + 296); v384 = v534; v383 = 0; v381 = 1; } else { v383 = v381++; } ++v380; *(_DWORD *)(v3 + 256) = v381; *(_BYTE *)(v3 + v383) = v384; *(_BYTE *)(v3 + 260) = v384; } while ( v382 != v380 ); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } } else { v55 = *(_DWORD *)(v54 + 4); v56 = *(char **)v54; if ( v55 ) { v57 = *(_DWORD *)(v3 + 256); v58 = &v56[v55]; do { v60 = *v56; if ( v57 == 255 ) { v61 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v515 = v60; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v61); ++*(_DWORD *)(v3 + 296); v60 = v515; v59 = 0; v57 = 1; } else { v59 = v57++; } ++v56; *(_DWORD *)(v3 + 256) = v57; *(_BYTE *)(v3 + v59) = v60; *(_BYTE *)(v3 + 260) = v60; } while ( v58 != v56 ); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } } goto LABEL_21; case 0x28: goto LABEL_427; case 0x29: v62 = *(int ***)(v3 + 276); v63 = a2 & 0xFFFFFF9F; if ( (a2 & 0x20) == 0 ) { v64 = *(_DWORD *)(v4 + 8); if ( v64 && (a2 & 0x40) == 0 ) { *(_DWORD *)Buffer = *(_DWORD *)(v3 + 276); *(_DWORD *)(v3 + 276) = Buffer; v428 = *(_DWORD *)(v3 + 272); v597 = (_DWORD *)v4; v599 = v428; v598 = 0; d_print_comp(v64, a2 & 0xFFFFFF9F); v422 = v598 == 0; *(_DWORD *)(v3 + 276) = *(_DWORD *)Buffer; if ( !v422 ) { v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } if ( *(_DWORD *)(v3 + 256) == 255 ) { v429 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v429); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v430 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v430 + 1; *(_BYTE *)(v3 + v430) = 32; v62 = *(int ***)(v3 + 276); *(_BYTE *)(v3 + 260) = 32; } d_print_function_type_isra_0(v3, v63, (int *)(v4 + 12), v62); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } d_print_function_type_isra_0(v3, a2 & 0xFFFFFF9F, (int *)(v4 + 12), *(int ***)(v3 + 276)); v424 = *(_DWORD *)(v4 + 8); if ( v424 ) d_print_comp(v424, v63); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x2A: v44 = *(_DWORD **)(v3 + 276); v597 = (_DWORD *)v4; v45 = 1; v46 = v44; v587 = v44; *(_DWORD *)Buffer = v44; v47 = Buffer; *(_DWORD *)(v3 + 276) = Buffer; v48 = *(_DWORD *)(v3 + 272); v598 = 0; v599 = v48; v49 = v46; if ( v46 ) { while ( (unsigned int)(*(_DWORD *)v49[1] - 25) <= 2 ) { if ( !v49[2] ) { if ( v45 > 3 ) { *(_DWORD *)(v3 + 280) = 1; LABEL_84: v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } v50 = v45++; v50 *= 16; *(_DWORD *)&Buffer[v50] = *v49; v51 = &Buffer[v50]; *((_DWORD *)v51 + 1) = v49[1]; *((_DWORD *)v51 + 2) = v49[2]; *((_DWORD *)v51 + 3) = v49[3]; *(_DWORD *)&Buffer[v50] = v47; v47 = &Buffer[v50]; *(_DWORD *)(v3 + 276) = &Buffer[v50]; v49[2] = 1; } v49 = (_DWORD *)*v49; if ( !v49 ) break; } d_print_comp(*(_DWORD *)(v4 + 12), a2); *(_DWORD *)(v3 + 276) = v587; if ( v598 ) goto LABEL_84; if ( v45 != 1 ) { v52 = &Buffer[16 * v45]; do { v53 = (_DWORD *)*((_DWORD *)v52 - 3); v52 -= 16; d_print_mod(v3, a2, v53); } while ( &v600 != v52 ); } } else { d_print_comp(*(_DWORD *)(v4 + 12), a2); v422 = v598 == 0; *(_DWORD *)(v3 + 276) = 0; if ( !v422 ) goto LABEL_84; } d_print_array_type_isra_0(v3, a2, (int *)(v4 + 8), *(int ***)(v3 + 276)); goto LABEL_84; case 0x2B: case 0x2D: v40 = *(_DWORD *)(v3 + 276); v41 = *(_DWORD *)(v4 + 12); v597 = (_DWORD *)v4; v598 = 0; *(_DWORD *)Buffer = v40; *(_DWORD *)(v3 + 276) = Buffer; v599 = *(_DWORD *)(v3 + 272); d_print_comp(v41, a2); if ( !v598 ) d_print_mod(v3, a2, (_DWORD *)v4); v42 = *(_DWORD *)(v3 + 284); *(_DWORD *)(v3 + 276) = *(_DWORD *)Buffer; v5 = v42 - 1; v536 = v594; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x2C: if ( *(_WORD *)(v4 + 14) ) { v400 = *(_DWORD *)(v3 + 256); v401 = "_Sat "; do { v403 = *v401; if ( v400 == 255 ) { v404 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v572 = v403; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v404); ++*(_DWORD *)(v3 + 296); v403 = v572; v402 = 0; v400 = 1; } else { v402 = v400++; } ++v401; *(_DWORD *)(v3 + 256) = v400; *(_BYTE *)(v3 + v402) = v403; *(_BYTE *)(v3 + 260) = v403; } while ( v401 != "" ); } v65 = *(_DWORD *)(v4 + 8); if ( *(void ****)(v65 + 8) == &off_4EF8A0 ) { v68 = *(_DWORD *)(v3 + 256); } else { d_print_comp(v65, a2); if ( *(_DWORD *)(v3 + 256) == 255 ) { v66 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v66); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v67 = *(_DWORD *)(v3 + 256); v68 = v67 + 1; *(_DWORD *)(v3 + 256) = v67 + 1; *(_BYTE *)(v3 + v67) = 32; *(_BYTE *)(v3 + 260) = 32; } if ( *(_WORD *)(v4 + 12) ) { v375 = "Accum"; for ( i11 = 95; ; i11 = *v375++ ) { if ( v68 == 255 ) { v378 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v533 = i11; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v378); ++*(_DWORD *)(v3 + 296); i11 = v533; v377 = 0; v68 = 1; } else { v377 = v68++; } *(_DWORD *)(v3 + 256) = v68; *(_BYTE *)(v3 + v377) = i11; *(_BYTE *)(v3 + 260) = i11; if ( v375 == "" ) break; } v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } else { v69 = "Fract"; for ( i12 = 95; ; i12 = *v69++ ) { if ( v68 == 255 ) { v72 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v516 = i12; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v72); ++*(_DWORD *)(v3 + 296); i12 = v516; v71 = 0; v68 = 1; } else { v71 = v68++; } *(_DWORD *)(v3 + 256) = v68; *(_BYTE *)(v3 + v71) = i12; *(_BYTE *)(v3 + 260) = i12; if ( v69 == "" ) break; } v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } goto LABEL_21; case 0x2E: case 0x2F: v34 = *(_DWORD *)(v4 + 8); if ( v34 ) d_print_comp(v34, a2); if ( *(_DWORD *)(v4 + 12) ) { v35 = *(_DWORD *)(v3 + 256); if ( v35 > 0xFD ) { *(_BYTE *)(v3 + v35) = 0; Str2 = (char *)v35; v35 = 0; (*(void (__cdecl **)(int, char *, _DWORD))(v3 + 264))(v3, Str2, *(_DWORD *)(v3 + 268)); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v36 = ", "; for ( i13 = 44; ; i13 = *v36 ) { if ( v35 == 255 ) { v39 = *(_DWORD *)(v3 + 268); v537 = i13; v35 = 1; *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v39); ++*(_DWORD *)(v3 + 296); i13 = v537; v38 = 0; } else { v38 = v35++; } ++v36; *(_DWORD *)(v3 + 256) = v35; *(_BYTE *)(v3 + v38) = i13; *(_BYTE *)(v3 + 260) = i13; if ( "" == v36 ) break; } v342 = *(_DWORD *)(v3 + 296); d_print_comp(*(_DWORD *)(v4 + 12), a2); v536 = v594; v343 = *(_DWORD *)(v4 + 4); if ( v342 == *(_DWORD *)(v3 + 296) ) { result = v343 - 1; v5 = *(_DWORD *)(v3 + 284) - 1; if ( *(_DWORD *)(v3 + 256) == v35 ) *(_DWORD *)(v3 + 256) = v35 - 2; } else { result = v343 - 1; v5 = *(_DWORD *)(v3 + 284) - 1; } } else { v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } goto LABEL_21; case 0x30: v94 = *(_DWORD *)(v3 + 256); v95 = "emplate parameter object for "; for ( i14 = 116; ; i14 = *v95++ ) { if ( v94 == 255 ) { v98 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v540 = i14; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v98); ++*(_DWORD *)(v3 + 296); i14 = v540; v97 = 0; v94 = 1; } else { v97 = v94++; } *(_DWORD *)(v3 + 256) = v94; *(_BYTE *)(v3 + v97) = i14; *(_BYTE *)(v3 + 260) = i14; if ( v95 == "" ) break; } goto LABEL_427; case 0x31: v88 = *(_DWORD *)(v4 + 8); v89 = *(_DWORD *)(v4 + 12); if ( v88 ) d_print_comp(v88, a2); v90 = *(_DWORD *)(v3 + 256); if ( v90 == 255 ) { v91 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v91); ++*(_DWORD *)(v3 + 296); v90 = 0; } *(_DWORD *)(v3 + 256) = v90 + 1; *(_BYTE *)(v3 + v90) = 123; *(_BYTE *)(v3 + 260) = 123; d_print_comp(v89, a2); i24 = *(_DWORD *)(v3 + 256); if ( i24 == 255 ) { v93 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v93); ++*(_DWORD *)(v3 + 296); i24 = 0; } goto LABEL_479; case 0x32: v99 = "perator"; v100 = 111; v541 = *(char **)(v4 + 8); v581 = *((_DWORD *)v541 + 2); v101 = *(_DWORD *)(v3 + 256); while ( 1 ) { if ( v101 == 255 ) { v103 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v517 = v100; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v103); ++*(_DWORD *)(v3 + 296); v100 = v517; v102 = 0; v101 = 1; } else { v102 = v101++; } *(_DWORD *)(v3 + 256) = v101; *(_BYTE *)(v3 + v102) = v100; *(_BYTE *)(v3 + 260) = v100; if ( v99 == "" ) break; v100 = *v99++; } v298 = (char *)*((_DWORD *)v541 + 1); if ( (unsigned __int8)(*v298 - 97) <= 0x19u ) { if ( v101 == 255 ) { v299 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v299); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v300 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v300 + 1; *(_BYTE *)(v3 + v300) = 32; *(_BYTE *)(v3 + 260) = 32; v298 = (char *)*((_DWORD *)v541 + 1); } v301 = v581; if ( v298[v581 - 1] == 32 ) v301 = v581 - 1; if ( v301 ) { v302 = *(_DWORD *)(v3 + 256); v303 = &v298[v301]; do { v305 = *v298; if ( v302 == 255 ) { v306 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v524 = v305; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v306); ++*(_DWORD *)(v3 + 296); v305 = v524; v304 = 0; v302 = 1; } else { v304 = v302++; } ++v298; *(_DWORD *)(v3 + 256) = v302; *(_BYTE *)(v3 + v304) = v305; *(_BYTE *)(v3 + 260) = v305; } while ( v303 != v298 ); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } else { v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } goto LABEL_21; case 0x33: v83 = *(_DWORD *)(v3 + 256); v84 = "perator "; for ( i15 = 111; ; i15 = *v84++ ) { if ( v83 == 255 ) { v87 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v539 = i15; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v87); ++*(_DWORD *)(v3 + 296); i15 = v539; v86 = 0; v83 = 1; } else { v86 = v83++; } *(_DWORD *)(v3 + 256) = v83; *(_BYTE *)(v3 + v86) = i15; *(_BYTE *)(v3 + 260) = i15; if ( v84 == "" ) break; } goto LABEL_47; case 0x35: v78 = *(_DWORD *)(v3 + 256); v79 = "perator "; for ( i16 = 111; ; i16 = *v79++ ) { if ( v78 == 255 ) { v82 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v538 = i16; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v82); ++*(_DWORD *)(v3 + 296); i16 = v538; v81 = 0; v78 = 1; } else { v81 = v78++; } *(_DWORD *)(v3 + 256) = v78; *(_BYTE *)(v3 + v81) = i16; *(_BYTE *)(v3 + 260) = i16; if ( v79 == "" ) break; } if ( *(_DWORD *)(v3 + 328) ) { v322 = *(_DWORD *)(v3 + 272); v597 = *(_DWORD **)(v3 + 328); *(_DWORD *)Buffer = v322; *(_DWORD *)(v3 + 272) = Buffer; } v323 = *(_DWORD **)(v4 + 8); if ( *v323 == 4 ) { d_print_comp(v323[2], a2); if ( *(_DWORD *)(v3 + 328) ) *(_DWORD *)(v3 + 272) = *(_DWORD *)Buffer; if ( *(_BYTE *)(v3 + 260) == 60 ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v485 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v485); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v486 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v486 + 1; *(_BYTE *)(v3 + v486) = 32; *(_BYTE *)(v3 + 260) = 32; } if ( *(_DWORD *)(v3 + 256) == 255 ) { v386 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v386); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v387 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v387 + 1; *(_BYTE *)(v3 + v387) = 60; *(_BYTE *)(v3 + 260) = 60; d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 8) + 12), a2); if ( *(_BYTE *)(v3 + 260) == 62 ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v483 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v483); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v484 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v484 + 1; *(_BYTE *)(v3 + v484) = 32; *(_BYTE *)(v3 + 260) = 32; } if ( *(_DWORD *)(v3 + 256) == 255 ) { v388 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v388); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v389 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v389 + 1; *(_BYTE *)(v3 + v389) = 62; *(_BYTE *)(v3 + 260) = 62; } else { d_print_comp(v323, a2); if ( *(_DWORD *)(v3 + 328) ) *(_DWORD *)(v3 + 272) = *(_DWORD *)Buffer; } v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x36: d_print_expr_op(v3, a2, *(_DWORD **)(v4 + 8)); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x37: v73 = *(_DWORD *)(v4 + 8); v28 = *(int **)(v4 + 12); if ( *(_DWORD *)v73 == 50 ) { v573 = **(char ***)(v73 + 8); v405 = strcmp(v573, "ad"); v406 = *v28; if ( !v405 && v406 == 3 ) { if ( *(_DWORD *)v28[2] == 1 && *(_DWORD *)v28[3] == 41 ) v28 = (int *)v28[2]; } else if ( v406 == 57 ) { d_print_subexpr(v3, a2, (_DWORD *)v28[2]); d_print_expr_op(v3, a2, (_DWORD *)v73); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } if ( !strcmp(v573, "sZ") ) { pack = d_find_pack(v3, v28, v407); for ( i17 = 0; pack; ++i17 ) { if ( *pack != 47 ) break; if ( !pack[2] ) break; pack = (_DWORD *)pack[3]; } v498 = Buffer; sprintf(Buffer, "%d", i17); v499 = strlen(Buffer) + 1; if ( v499 != 1 ) { do { v500 = *v498; if ( *(_DWORD *)(v3 + 256) == 255 ) { v501 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v501); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v502 = *(_DWORD *)(v3 + 256); ++v498; *(_DWORD *)(v3 + 256) = v502 + 1; *(_BYTE *)(v3 + v502) = v500; *(_BYTE *)(v3 + 260) = v500; } while ( &Buffer[v499 - 1] != v498 ); } v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } if ( *v573 == 115 && v573[1] == 80 ) { v408 = 0; if ( !v573[2] ) { v409 = 0; do { if ( *v28 != 47 ) break; v410 = v28[2]; if ( !v410 ) break; if ( *(_DWORD *)v410 == 75 ) { v411 = d_find_pack(v3, *(_DWORD **)(v410 + 8), v408); for ( i18 = 0; v411; ++i18 ) { if ( *v411 != 47 ) break; v408 = v411[2]; if ( !v408 ) break; v411 = (_DWORD *)v411[3]; } v409 += i18; } else { ++v409; } v28 = (int *)v28[3]; } while ( v28 ); v461 = Buffer; sprintf(Buffer, "%d", v409); v462 = strlen(Buffer) + 1; if ( v462 != 1 ) { v463 = *(_DWORD *)(v3 + 256); do { v464 = *v461; v465 = v463; if ( v463 == 255 ) { v466 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v535 = v464; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v466); ++*(_DWORD *)(v3 + 296); v464 = v535; v465 = 0; } v463 = v465 + 1; ++v461; *(_DWORD *)(v3 + 256) = v465 + 1; *(_BYTE *)(v3 + v465) = v464; *(_BYTE *)(v3 + 260) = v464; } while ( &Buffer[v462 - 1] != v461 ); } v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } } d_print_expr_op(v3, a2, (_DWORD *)v73); if ( *v573 == 103 && v573[1] == 115 && !v573[2] ) { LABEL_604: d_print_comp(v28, a2); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } if ( !strcmp(v573, "st") ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v413 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v413); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v414 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v414 + 1; *(_BYTE *)(v3 + v414) = 40; *(_BYTE *)(v3 + 260) = 40; d_print_comp(v28, a2); if ( *(_DWORD *)(v3 + 256) == 255 ) { v415 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v415); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } LABEL_737: v492 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v492 + 1; *(_BYTE *)(v3 + v492) = 41; v493 = (int)v594; *(_BYTE *)(v3 + 260) = 41; v536 = (char *)v493; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } } else if ( *(_DWORD *)v73 == 52 ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v74 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v74); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v75 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v75 + 1; *(_BYTE *)(v3 + v75) = 40; *(_BYTE *)(v3 + 260) = 40; d_print_comp(*(_DWORD *)(v73 + 8), a2); if ( *(_DWORD *)(v3 + 256) == 255 ) { v76 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v76); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v77 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v77 + 1; *(_BYTE *)(v3 + v77) = 41; *(_BYTE *)(v3 + 260) = 41; } else { d_print_expr_op(v3, a2, (_DWORD *)v73); } d_print_subexpr(v3, a2, v28); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x38: if ( **(_DWORD **)(v4 + 12) != 57 ) { *(_DWORD *)(v3 + 280) = 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } v9 = *(_DWORD *)(v4 + 8); v10 = **(char ***)(v9 + 8); if ( v10[1] == 99 && ((v467 = *v10, (unsigned __int8)(v467 - 99) <= 1u) || (unsigned __int8)(v467 - 114) <= 1u) ) { d_print_expr_op(v3, a2, (_DWORD *)v9); if ( *(_DWORD *)(v3 + 256) == 255 ) { v468 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v468); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v469 = *(_DWORD *)(v3 + 256); v470 = ">("; *(_DWORD *)(v3 + 256) = v469 + 1; *(_BYTE *)(v3 + v469) = 60; *(_BYTE *)(v3 + 260) = 60; d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 8), a2); v471 = *(_DWORD *)(v3 + 256); do { v472 = *v470; v473 = v471; if ( v471 == 255 ) { v474 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v577 = v472; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v474); ++*(_DWORD *)(v3 + 296); v472 = v577; v473 = 0; } v471 = v473 + 1; ++v470; *(_DWORD *)(v3 + 256) = v473 + 1; *(_BYTE *)(v3 + v473) = v472; *(_BYTE *)(v3 + 260) = v472; } while ( v470 != "" ); d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 12), a2); if ( *(_DWORD *)(v3 + 256) == 255 ) { v475 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v475); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } } else { if ( d_maybe_print_fold_expression_isra_0(v3, a2, v9, v4 + 12) ) { v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } v11 = *(_DWORD *)(v4 + 8); if ( *(_DWORD *)v11 == 50 ) { v487 = *(_DWORD *)(v11 + 8); if ( *(_DWORD *)(v487 + 8) == 1 && **(_BYTE **)(v487 + 4) == 62 ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v488 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v488); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v489 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v489 + 1; *(_BYTE *)(v3 + v489) = 40; *(_BYTE *)(v3 + 260) = 40; v11 = *(_DWORD *)(v4 + 8); } } v12 = strcmp(**(const char ***)(v11 + 8), "cl"); v13 = *(_DWORD *)(*(_DWORD *)(v4 + 12) + 8); if ( !v12 && *(_DWORD *)v13 == 3 ) { if ( **(_DWORD **)(v13 + 12) != 41 ) *(_DWORD *)(v3 + 280) = 1; d_print_subexpr(v3, a2, *(_DWORD **)(v13 + 8)); } else { d_print_subexpr(v3, a2, (_DWORD *)v13); } v14 = *(_DWORD *)(v4 + 8); Str1 = **(const char ***)(v14 + 8); if ( !strcmp(Str1, "ix") ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v16 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v16); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v17 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v17 + 1; *(_BYTE *)(v3 + v17) = 91; *(_BYTE *)(v3 + 260) = 91; d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 12), a2); if ( *(_DWORD *)(v3 + 256) == 255 ) { v18 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v18); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v19 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v19 + 1; *(_BYTE *)(v3 + v19) = 93; *(_BYTE *)(v3 + 260) = 93; } else { if ( strcmp(Str1, "cl") ) d_print_expr_op(v3, a2, (_DWORD *)v14); d_print_subexpr(v3, a2, *(_DWORD **)(*(_DWORD *)(v4 + 12) + 12)); } v20 = *(_DWORD **)(v4 + 8); if ( *v20 != 50 || (v490 = v20[2], *(_DWORD *)(v490 + 8) != 1) || **(_BYTE **)(v490 + 4) != 62 ) { v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } if ( *(_DWORD *)(v3 + 256) == 255 ) { v491 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v491); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } } goto LABEL_737; case 0x39: *(_DWORD *)(v3 + 280) = 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x3A: v285 = *(_DWORD *)(v4 + 12); if ( *(_DWORD *)v285 == 59 && **(_DWORD **)(v285 + 12) == 60 ) { if ( d_maybe_print_fold_expression_isra_0(v3, a2, *(_DWORD *)(v4 + 8), v4 + 12) ) { v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } else { v457 = *(_DWORD *)(v4 + 12); v458 = *(_DWORD **)(v457 + 8); v459 = *(_DWORD *)(v457 + 12); v585 = *(_DWORD *)(v4 + 8); v576 = *(char **)(v459 + 8); v460 = *(_DWORD **)(v459 + 12); if ( !strcmp(**(const char ***)(v585 + 8), "qu") ) { d_print_subexpr(v3, a2, v458); d_print_expr_op(v3, a2, (_DWORD *)v585); d_print_subexpr(v3, a2, v576); d_append_buffer(v3, " : ", 3); d_print_subexpr(v3, a2, v460); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } else { d_append_buffer(v3, "new ", 4); if ( v458[2] ) { d_print_subexpr(v3, a2, v458); if ( *(_DWORD *)(v3 + 256) == 255 ) { v494 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v494); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v495 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v495 + 1; *(_BYTE *)(v3 + v495) = 32; *(_BYTE *)(v3 + 260) = 32; } d_print_comp(v576, a2); if ( v460 ) d_print_subexpr(v3, a2, v460); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } } } else { *(_DWORD *)(v3 + 280) = 1; result = *(_DWORD *)(v4 + 4) - 1; } goto LABEL_21; case 0x3B: case 0x3C: *(_DWORD *)(v3 + 280) = 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x3D: case 0x3E: v29 = *(_DWORD **)(v4 + 8); v30 = 0; if ( *v29 != 39 ) goto LABEL_42; v30 = *(_DWORD *)(v29[2] + 16); if ( v30 > 6 ) { if ( v30 == 7 ) { v425 = *(_DWORD *)(v4 + 12); if ( !*(_DWORD *)v425 && *(_DWORD *)(v425 + 12) == 1 && v579 == 61 ) { v426 = **(_BYTE **)(v425 + 8); if ( v426 == 48 ) { d_append_buffer(v3, "false", 5); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } if ( v426 == 49 ) { d_append_buffer(v3, "true", 4); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } } } } else if ( v30 ) { v394 = *(_DWORD **)(v4 + 12); if ( !*v394 ) { if ( v579 == 62 ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v503 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v503); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v504 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v504 + 1; *(_BYTE *)(v3 + v504) = 45; *(_BYTE *)(v3 + 260) = 45; v394 = *(_DWORD **)(v4 + 12); } d_print_comp(v394, a2); switch ( v30 ) { case 2u: if ( *(_DWORD *)(v3 + 256) == 255 ) { v508 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v508); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v509 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v509 + 1; *(_BYTE *)(v3 + v509) = 117; v510 = (int)v594; *(_BYTE *)(v3 + 260) = 117; v536 = (char *)v510; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; break; case 3u: if ( *(_DWORD *)(v3 + 256) == 255 ) { v505 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v505); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v506 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v506 + 1; *(_BYTE *)(v3 + v506) = 108; v507 = (int)v594; *(_BYTE *)(v3 + 260) = 108; v536 = (char *)v507; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; break; case 4u: d_append_buffer(v3, "ul", 2); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; break; case 5u: d_append_buffer(v3, "ll", 2); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; break; case 6u: d_append_buffer(v3, (char *)&off_4EEA7E, 3); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; break; default: v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; break; } goto LABEL_21; } } LABEL_42: v31 = *(_DWORD *)(v3 + 256); if ( v31 == 255 ) { v32 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v32); ++*(_DWORD *)(v3 + 296); v29 = *(_DWORD **)(v4 + 8); v31 = 0; } *(_DWORD *)(v3 + 256) = v31 + 1; *(_BYTE *)(v3 + v31) = 40; *(_BYTE *)(v3 + 260) = 40; d_print_comp(v29, a2); v33 = *(_DWORD *)(v3 + 256); if ( v33 == 255 ) { v421 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v421); ++*(_DWORD *)(v3 + 296); *(_BYTE *)v3 = 41; *(_BYTE *)(v3 + 260) = 41; v422 = *(_DWORD *)v4 == 62; *(_DWORD *)(v3 + 256) = 1; if ( !v422 ) goto LABEL_46; } else { *(_DWORD *)(v3 + 256) = v33 + 1; *(_BYTE *)(v3 + v33) = 41; *(_BYTE *)(v3 + 260) = 41; if ( *(_DWORD *)v4 != 62 ) goto LABEL_46; if ( v33 == 254 ) { v427 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v427); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } } v423 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v423 + 1; *(_BYTE *)(v3 + v423) = 45; *(_BYTE *)(v3 + 260) = 45; LABEL_46: if ( v30 == 8 ) { if ( *(_DWORD *)(v3 + 256) == 255 ) { v416 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v416); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v417 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v417 + 1; *(_BYTE *)(v3 + v417) = 91; *(_BYTE *)(v3 + 260) = 91; d_print_comp(*(_DWORD *)(v4 + 12), a2); if ( *(_DWORD *)(v3 + 256) == 255 ) { v418 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v418); ++*(_DWORD *)(v3 + 296); *(_DWORD *)(v3 + 256) = 0; } v419 = *(_DWORD *)(v3 + 256); *(_DWORD *)(v3 + 256) = v419 + 1; *(_BYTE *)(v3 + v419) = 93; v420 = (int)v594; *(_BYTE *)(v3 + 260) = 93; v536 = (char *)v420; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } else { LABEL_47: d_print_comp(*(_DWORD *)(v4 + 12), a2); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; } goto LABEL_21; case 0x3F: v286 = *(_DWORD *)(v3 + 256); v287 = "ava resource "; for ( i19 = 106; ; i19 = *v287++ ) { if ( v286 == 255 ) { v290 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v567 = i19; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v290); ++*(_DWORD *)(v3 + 296); i19 = v567; v289 = 0; v286 = 1; } else { v289 = v286++; } *(_DWORD *)(v3 + 256) = v286; *(_BYTE *)(v3 + v289) = i19; *(_BYTE *)(v3 + 260) = i19; if ( v287 == "" ) break; } goto LABEL_427; case 0x40: d_print_comp(*(_DWORD *)(v4 + 8), a2); d_print_comp(*(_DWORD *)(v4 + 12), a2); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x41: v291 = *(_DWORD *)(v3 + 256); v292 = *(_DWORD *)(v4 + 8); if ( v291 == 255 ) { v293 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v293); v294 = (int)v594; ++*(_DWORD *)(v3 + 296); v536 = (char *)v294; v5 = *(_DWORD *)(v3 + 284) - 1; v291 = 0; result = *(_DWORD *)(v4 + 4) - 1; } *(_DWORD *)(v3 + 256) = v291 + 1; *(_BYTE *)(v3 + v291) = v292; *(_BYTE *)(v3 + 260) = v292; goto LABEL_21; case 0x42: sprintf(Buffer, "%d", *(_DWORD *)(v4 + 8)); v259 = &Buffer[strlen(Buffer)]; if ( v259 != Buffer ) { v260 = Buffer; v261 = *(_DWORD *)(v3 + 256); do { v263 = *v260; if ( v261 == 255 ) { v264 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v523 = v263; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v264); ++*(_DWORD *)(v3 + 296); v263 = v523; v262 = 0; v261 = 1; } else { v262 = v261++; } ++v260; *(_DWORD *)(v3 + 256) = v261; *(_BYTE *)(v3 + v262) = v263; *(_BYTE *)(v3 + 260) = v263; } while ( v259 != v260 ); } v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x43: v280 = *(_DWORD *)(v3 + 256); v281 = "ecltype ("; for ( i20 = 100; ; i20 = *v281++ ) { if ( v280 == 255 ) { v284 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v566 = i20; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v284); ++*(_DWORD *)(v3 + 296); i20 = v566; v283 = 0; v280 = 1; } else { v283 = v280++; } *(_DWORD *)(v3 + 256) = v280; *(_BYTE *)(v3 + v283) = i20; *(_BYTE *)(v3 + 260) = i20; if ( v281 == "" ) break; } d_print_comp(*(_DWORD *)(v4 + 8), a2); v319 = *(_DWORD *)(v3 + 256); if ( v319 == 255 ) { v320 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v320); ++*(_DWORD *)(v3 + 296); v319 = 0; } *(_DWORD *)(v3 + 256) = v319 + 1; *(_BYTE *)(v3 + v319) = 41; v321 = (int)v594; *(_BYTE *)(v3 + 260) = 41; v536 = (char *)v321; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x44: v270 = *(_DWORD *)(v3 + 256); v271 = "lobal constructors keyed to "; for ( i21 = 103; ; i21 = *v271++ ) { if ( v270 == 255 ) { v274 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v564 = i21; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v274); ++*(_DWORD *)(v3 + 296); i21 = v564; v273 = 0; v270 = 1; } else { v273 = v270++; } *(_DWORD *)(v3 + 256) = v270; *(_BYTE *)(v3 + v273) = i21; *(_BYTE *)(v3 + 260) = i21; if ( v271 == "" ) break; } goto LABEL_427; case 0x45: v275 = *(_DWORD *)(v3 + 256); v276 = "lobal destructors keyed to "; for ( i22 = 103; ; i22 = *v276++ ) { if ( v275 == 255 ) { v279 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v565 = i22; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v279); ++*(_DWORD *)(v3 + 296); i22 = v565; v278 = 0; v275 = 1; } else { v278 = v275++; } *(_DWORD *)(v3 + 256) = v275; *(_BYTE *)(v3 + v278) = i22; *(_BYTE *)(v3 + 260) = i22; if ( v276 == "" ) break; } goto LABEL_427; case 0x46: v265 = *(_DWORD *)(v3 + 256); v266 = "lambda("; for ( i23 = 123; ; i23 = *v266++ ) { if ( v265 == 255 ) { v269 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v563 = i23; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v269); ++*(_DWORD *)(v3 + 296); i23 = v563; v268 = 0; v265 = 1; } else { v268 = v265++; } *(_DWORD *)(v3 + 256) = v265; *(_BYTE *)(v3 + v268) = i23; *(_BYTE *)(v3 + 260) = i23; if ( v266 == "" ) break; } v307 = *(_DWORD *)(v4 + 8); v308 = ")#"; ++*(_DWORD *)(v3 + 288); d_print_comp(v307, a2); v309 = *(_DWORD *)(v3 + 256); v310 = 41; --*(_DWORD *)(v3 + 288); while ( 1 ) { if ( v309 == 255 ) { v312 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v525 = v310; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v312); ++*(_DWORD *)(v3 + 296); v310 = v525; v311 = 0; v309 = 1; } else { v311 = v309++; } ++v308; *(_DWORD *)(v3 + 256) = v309; *(_BYTE *)(v3 + v311) = v310; *(_BYTE *)(v3 + 260) = v310; if ( v308 == "" ) break; v310 = *v308; } sprintf(Buffer, "%d", *(_DWORD *)(v4 + 12) + 1); v313 = &Buffer[strlen(Buffer)]; v314 = Buffer; for ( i24 = *(_DWORD *)(v3 + 256); v313 != v314; *(_BYTE *)(v3 + 260) = v316 ) { v316 = *v314; if ( i24 == 255 ) { v317 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v526 = v316; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v317); ++*(_DWORD *)(v3 + 296); v316 = v526; v315 = 0; i24 = 1; } else { v315 = i24++; } ++v314; *(_DWORD *)(v3 + 256) = i24; *(_BYTE *)(v3 + v315) = v316; } if ( i24 == 255 ) { v318 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v318); ++*(_DWORD *)(v3 + 296); i24 = 0; } goto LABEL_479; case 0x48: v121 = *(_DWORD *)(v3 + 256); v122 = "unnamed type#"; for ( i25 = 123; ; i25 = *v122++ ) { if ( v121 == 255 ) { v125 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v518 = i25; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v125); ++*(_DWORD *)(v3 + 296); i25 = v518; v124 = 0; v121 = 1; } else { v124 = v121++; } *(_DWORD *)(v3 + 256) = v121; *(_BYTE *)(v3 + v124) = i25; *(_BYTE *)(v3 + 260) = i25; if ( v122 == "" ) break; } sprintf(Buffer, "%d", *(_DWORD *)(v4 + 8) + 1); v335 = &Buffer[strlen(Buffer)]; v336 = Buffer; for ( i24 = *(_DWORD *)(v3 + 256); v335 != v336; *(_BYTE *)(v3 + 260) = v338 ) { v338 = *v336; if ( i24 == 255 ) { v339 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v527 = v338; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v339); ++*(_DWORD *)(v3 + 296); v338 = v527; v337 = 0; i24 = 1; } else { v337 = i24++; } ++v336; *(_DWORD *)(v3 + 256) = i24; *(_BYTE *)(v3 + v337) = v338; } if ( i24 == 255 ) { v340 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v340); ++*(_DWORD *)(v3 + 296); i24 = 0; } LABEL_479: *(_DWORD *)(v3 + 256) = i24 + 1; *(_BYTE *)(v3 + i24) = 125; v341 = (int)v594; *(_BYTE *)(v3 + 260) = 125; v536 = (char *)v341; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; case 0x49: v116 = *(_DWORD *)(v3 + 256); v117 = "ransaction clone for "; for ( i26 = 116; ; i26 = *v117++ ) { if ( v116 == 255 ) { v120 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v544 = i26; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v120); ++*(_DWORD *)(v3 + 296); i26 = v544; v119 = 0; v116 = 1; } else { v119 = v116++; } *(_DWORD *)(v3 + 256) = v116; *(_BYTE *)(v3 + v119) = i26; *(_BYTE *)(v3 + 260) = i26; if ( v117 == "" ) break; } goto LABEL_427; case 0x4A: v111 = *(_DWORD *)(v3 + 256); v112 = "on-transaction clone for "; for ( i27 = 110; ; i27 = *v112++ ) { if ( v111 == 255 ) { v115 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v543 = i27; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v115); ++*(_DWORD *)(v3 + 296); i27 = v543; v114 = 0; v111 = 1; } else { v114 = v111++; } *(_DWORD *)(v3 + 256) = v111; *(_BYTE *)(v3 + v114) = i27; *(_BYTE *)(v3 + 260) = i27; if ( v112 == "" ) break; } goto LABEL_427; case 0x4B: v104 = d_find_pack(v3, *(_DWORD **)(v4 + 8), v8); v105 = 0; if ( !v104 ) { d_print_subexpr(v3, a2, *(_DWORD **)(v4 + 8)); d_append_buffer(v3, "...", 3); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } while ( *v104 == 47 && v104[2] ) { v104 = (_DWORD *)v104[3]; ++v105; if ( !v104 ) { v582 = v105; v588 = *(_DWORD *)(v4 + 8); do { LABEL_157: *(_DWORD *)(v3 + 292) = v7; d_print_comp(v588, a2); if ( v7 < v582 - 1 ) { v106 = *(_DWORD *)(v3 + 256); v107 = ", "; for ( i28 = 44; ; i28 = *v107 ) { if ( v106 == 255 ) { v110 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v542 = i28; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v110); ++*(_DWORD *)(v3 + 296); i28 = v542; v109 = 0; v106 = 1; } else { v109 = v106++; } ++v107; *(_DWORD *)(v3 + 256) = v106; *(_BYTE *)(v3 + v109) = i28; *(_BYTE *)(v3 + 260) = i28; if ( "" == v107 ) break; } } ++v7; } while ( v582 > v7 ); v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } } v582 = v105; v588 = *(_DWORD *)(v4 + 8); if ( !v105 ) { v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } goto LABEL_157; case 0x4C: v228 = "[abi:"; d_print_comp(*(_DWORD *)(v4 + 8), a2); v229 = *(_DWORD *)(v3 + 256); for ( i29 = 91; ; i29 = *v228 ) { if ( v229 == 255 ) { v232 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v562 = i29; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v232); ++*(_DWORD *)(v3 + 296); i29 = v562; v231 = 0; v229 = 1; } else { v231 = v229++; } ++v228; *(_DWORD *)(v3 + 256) = v229; *(_BYTE *)(v3 + v231) = i29; *(_BYTE *)(v3 + 260) = i29; if ( v228 == "" ) break; } d_print_comp(*(_DWORD *)(v4 + 12), a2); v295 = *(_DWORD *)(v3 + 256); if ( v295 == 255 ) { v296 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v296); ++*(_DWORD *)(v3 + 296); v295 = 0; } goto LABEL_398; case 0x4E: v223 = "[clone "; d_print_comp(*(_DWORD *)(v4 + 8), a2); v224 = *(_DWORD *)(v3 + 256); for ( i30 = 32; ; i30 = *v223++ ) { if ( v224 == 255 ) { v227 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; v561 = i30; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v227); ++*(_DWORD *)(v3 + 296); i30 = v561; v226 = 0; v224 = 1; } else { v226 = v224++; } *(_DWORD *)(v3 + 256) = v224; *(_BYTE *)(v3 + v226) = i30; *(_BYTE *)(v3 + 260) = i30; if ( v223 == "" ) break; } d_print_comp(*(_DWORD *)(v4 + 12), a2); v295 = *(_DWORD *)(v3 + 256); if ( v295 == 255 ) { v324 = *(_DWORD *)(v3 + 268); *(_BYTE *)(v3 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v324); ++*(_DWORD *)(v3 + 296); v295 = 0; } LABEL_398: *(_DWORD *)(v3 + 256) = v295 + 1; *(_BYTE *)(v3 + v295) = 93; v297 = (int)v594; *(_BYTE *)(v3 + 260) = 93; v536 = (char *)v297; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; default: *(_DWORD *)(v3 + 280) = 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } do { if ( v580 == (_DWORD *)*v447 ) { v450 = (int *)&v593; while ( v580 != (_DWORD *)*v450 && (v4 != *v450 || v450 == (int *)&v593) ) { v450 = (int *)v450[1]; if ( !v450 ) { v451 = *(_DWORD *)(v3 + 272); *(_DWORD *)(v3 + 272) = v447[1]; v586 = v451; v7 = 1; v580 = d_lookup_template_argument_isra_0(v3, v580 + 2); if ( !v580 ) goto LABEL_786; goto LABEL_672; } } LABEL_712: v7 = 0; v580 = d_lookup_template_argument_isra_0(v3, v580 + 2); if ( !v580 ) goto LABEL_679; LABEL_672: v43 = *v580; if ( *v580 == 47 ) { v452 = *(_DWORD *)(v3 + 292); if ( v452 < 0 ) { if ( *(_DWORD *)v4 != 47 ) LABEL_68: v580 = (_DWORD *)v4; LABEL_69: v23 = *(int ***)(v3 + 276); LABEL_70: *(_DWORD *)Buffer = v23; *(_DWORD *)(v3 + 276) = Buffer; v598 = 0; v597 = v580; v599 = *(_DWORD *)(v3 + 272); LABEL_71: v21 = v580[2]; LABEL_24: d_print_comp(v21, a2); if ( !v598 ) d_print_mod(v3, a2, v580); *(_DWORD *)(v3 + 276) = *(_DWORD *)Buffer; if ( v7 ) *(_DWORD *)(v3 + 272) = v586; v536 = v594; v5 = *(_DWORD *)(v3 + 284) - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } v453 = d_index_template_argument_part_0(v580, v452); v580 = v453; if ( !v453 ) { if ( v7 ) LABEL_786: *(_DWORD *)(v3 + 272) = v586; LABEL_679: v455 = (int)v594; v456 = *(_DWORD *)(v3 + 284); *(_DWORD *)(v3 + 280) = 1; v536 = (char *)v455; v5 = v456 - 1; result = *(_DWORD *)(v4 + 4) - 1; goto LABEL_21; } v43 = *v453; } LABEL_65: if ( v43 != 35 && *(_DWORD *)v4 != v43 ) { if ( v43 == 36 ) { v21 = v580[2]; LABEL_23: v22 = *(_DWORD *)(v3 + 276); v597 = (_DWORD *)v4; v598 = 0; *(_DWORD *)Buffer = v22; *(_DWORD *)(v3 + 276) = Buffer; v580 = (_DWORD *)v4; v599 = *(_DWORD *)(v3 + 272); if ( v21 ) goto LABEL_24; goto LABEL_71; } goto LABEL_68; } goto LABEL_69; } ++v449; v447 += 2; } while ( v448 != v449 ); v5 = v592; LABEL_706: if ( v448 < *(_DWORD *)(v3 + 312) ) { v476 = *(_DWORD *)(v3 + 304); v591 = v5; *(_DWORD *)(v3 + 308) = v448 + 1; v477 = *(_DWORD **)(v3 + 272); v478 = (_DWORD *)(v476 + 8 * v448); *v478 = v580; for ( i31 = v478 + 1; ; i31 = (int *)v481 ) { if ( !v477 ) { *i31 = 0; goto LABEL_712; } v480 = *(_DWORD *)(v3 + 320); if ( v480 >= *(_DWORD *)(v3 + 324) ) break; v481 = *(_DWORD *)(v3 + 316) + 8 * v480; *(_DWORD *)(v3 + 320) = v480 + 1; *(_DWORD *)(v481 + 4) = v477[1]; *i31 = v481; v477 = (_DWORD *)*v477; } v5 = v591; } *(_DWORD *)(v3 + 280) = 1; result = *(_DWORD *)(v4 + 4) - 1; LABEL_21: *(_DWORD *)(v3 + 300) = v536; *(_DWORD *)(v4 + 4) = result; *(_DWORD *)(v3 + 284) = v5; return result; } // 423E59: variable 'v586' is possibly undefined // 42731A: variable 'v408' is possibly undefined // 4282E0: variable 'v407' is possibly undefined // 4EEA7E: using guessed type void *off_4EEA7E; // 4EF8A0: using guessed type void **off_4EF8A0; //----- (00428740) -------------------------------------------------------- int __usercall d_print_mod@(int a1@, int a2@, _DWORD *a3@) { _DWORD *v4; // esi int result; // eax const char *v7; // esi char i; // dl int v9; // ecx int v10; // eax const char *v11; // esi char j; // dl int v13; // ecx int v14; // eax const char *v15; // esi char k; // dl int v17; // ecx int v18; // eax int v19; // edx int v20; // edx const char *v21; // esi char m; // dl int v23; // ecx int v24; // eax int v25; // eax int v26; // edx int v27; // edx int v28; // eax int v29; // eax int v30; // edx int v31; // eax int v32; // ecx const char *v33; // esi char jj; // dl int v35; // ecx int v36; // eax int v37; // edx const char *v38; // ebp char i1; // dl int v40; // ecx int v41; // eax const char *v42; // ebp char nn; // dl int v44; // ecx int v45; // eax int v46; // eax const char *v47; // ebp char kk; // dl int v49; // ecx int v50; // eax const char *v51; // esi char n; // dl int v53; // ecx int v54; // eax const char *v55; // esi char ii; // dl int v57; // ecx int v58; // eax const char *v59; // esi char mm; // dl int v61; // ecx int v62; // eax int v63; // ecx int v64; // edx int v65; // eax int v66; // edx int v67; // eax int v68; // eax int v69; // eax int v70; // eax int v71; // eax char v72; // [esp+1Fh] [ebp-1Dh] char v73; // [esp+1Fh] [ebp-1Dh] char v74; // [esp+1Fh] [ebp-1Dh] char v75; // [esp+1Fh] [ebp-1Dh] char v76; // [esp+1Fh] [ebp-1Dh] char v77; // [esp+1Fh] [ebp-1Dh] char v78; // [esp+1Fh] [ebp-1Dh] char v79; // [esp+1Fh] [ebp-1Dh] char v80; // [esp+1Fh] [ebp-1Dh] char v81; // [esp+1Fh] [ebp-1Dh] char v82; // [esp+1Fh] [ebp-1Dh] v4 = a3; result = *a3 - 3; switch ( *a3 ) { case 3: a3 = (_DWORD *)a3[2]; return d_print_comp(a3, a2); case 0x19: case 0x1C: result = *(_DWORD *)(a1 + 256); v7 = "restrict"; for ( i = 32; ; i = *v7++ ) { if ( result == 255 ) { v10 = *(_DWORD *)(a1 + 268); v72 = i; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v10); ++*(_DWORD *)(a1 + 296); i = v72; v9 = 0; result = 1; } else { v9 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v9) = i; *(_BYTE *)(a1 + 260) = i; if ( v7 == "" ) break; } return result; case 0x1A: case 0x1D: result = *(_DWORD *)(a1 + 256); v11 = "volatile"; for ( j = 32; ; j = *v11++ ) { if ( result == 255 ) { v14 = *(_DWORD *)(a1 + 268); v73 = j; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v14); ++*(_DWORD *)(a1 + 296); j = v73; v13 = 0; result = 1; } else { v13 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v13) = j; *(_BYTE *)(a1 + 260) = j; if ( v11 == "" ) break; } return result; case 0x1B: case 0x1E: result = *(_DWORD *)(a1 + 256); v15 = "const"; for ( k = 32; ; k = *v15++ ) { if ( result == 255 ) { v18 = *(_DWORD *)(a1 + 268); v74 = k; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v18); ++*(_DWORD *)(a1 + 296); k = v74; v17 = 0; result = 1; } else { v17 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v17) = k; *(_BYTE *)(a1 + 260) = k; if ( v15 == "" ) break; } return result; case 0x1F: v19 = *(_DWORD *)(a1 + 256); if ( v19 == 255 ) { v68 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v68); *(_BYTE *)a1 = 32; result = 1; ++*(_DWORD *)(a1 + 296); LABEL_53: v37 = result + 1; goto LABEL_54; } result = v19 + 1; *(_DWORD *)(a1 + 256) = v19 + 1; *(_BYTE *)(a1 + v19) = 32; *(_BYTE *)(a1 + 260) = 32; LABEL_52: if ( result != 255 ) goto LABEL_53; v71 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v71); ++*(_DWORD *)(a1 + 296); v37 = 1; result = 0; LABEL_54: *(_DWORD *)(a1 + 256) = v37; *(_BYTE *)(a1 + result) = 38; *(_BYTE *)(a1 + 260) = 38; return result; case 0x20: v20 = *(_DWORD *)(a1 + 256); result = v20 + 1; if ( v20 == 255 ) { v70 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v70); ++*(_DWORD *)(a1 + 296); result = 1; v20 = 0; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v20) = 32; *(_BYTE *)(a1 + 260) = 32; goto LABEL_27; case 0x21: v25 = *(_DWORD *)(a1 + 256); v26 = v25 + 1; if ( v25 == 255 ) { v69 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v69); ++*(_DWORD *)(a1 + 296); v26 = 1; v25 = 0; } *(_DWORD *)(a1 + 256) = v26; *(_BYTE *)(a1 + v25) = 32; *(_BYTE *)(a1 + 260) = 32; a3 = (_DWORD *)v4[3]; return d_print_comp(a3, a2); case 0x22: if ( (a2 & 4) == 0 ) { result = *(_DWORD *)(a1 + 256); v27 = result + 1; if ( result == 255 ) { v28 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v28); ++*(_DWORD *)(a1 + 296); v27 = 1; result = 0; } *(_DWORD *)(a1 + 256) = v27; *(_BYTE *)(a1 + result) = 42; *(_BYTE *)(a1 + 260) = 42; } return result; case 0x23: result = *(_DWORD *)(a1 + 256); goto LABEL_52; case 0x24: result = *(_DWORD *)(a1 + 256); LABEL_27: v21 = "&&"; for ( m = 38; ; m = *v21 ) { if ( result == 255 ) { v24 = *(_DWORD *)(a1 + 268); v75 = m; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v24); ++*(_DWORD *)(a1 + 296); m = v75; v23 = 0; result = 1; } else { v23 = result++; } ++v21; *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v23) = m; *(_BYTE *)(a1 + 260) = m; if ( "" == v21 ) break; } return result; case 0x25: result = *(_DWORD *)(a1 + 256); v51 = "omplex "; for ( n = 99; ; n = *v51++ ) { if ( result == 255 ) { v54 = *(_DWORD *)(a1 + 268); v80 = n; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v54); ++*(_DWORD *)(a1 + 296); n = v80; v53 = 0; result = 1; } else { v53 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v53) = n; *(_BYTE *)(a1 + 260) = n; if ( v51 == "" ) break; } return result; case 0x26: result = *(_DWORD *)(a1 + 256); v55 = "maginary "; for ( ii = 105; ; ii = *v55++ ) { if ( result == 255 ) { v58 = *(_DWORD *)(a1 + 268); v81 = ii; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v58); ++*(_DWORD *)(a1 + 296); ii = v81; v57 = 0; result = 1; } else { v57 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v57) = ii; *(_BYTE *)(a1 + 260) = ii; if ( v55 == "" ) break; } return result; case 0x2B: if ( *(_BYTE *)(a1 + 260) != 40 ) { v29 = *(_DWORD *)(a1 + 256); v30 = v29 + 1; if ( v29 == 255 ) { v31 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v31); ++*(_DWORD *)(a1 + 296); v30 = 1; v29 = 0; } *(_DWORD *)(a1 + 256) = v30; *(_BYTE *)(a1 + v29) = 32; *(_BYTE *)(a1 + 260) = 32; } v32 = v4[2]; v33 = "::*"; d_print_comp(v32, a2); result = *(_DWORD *)(a1 + 256); for ( jj = 58; ; jj = *v33 ) { if ( result == 255 ) { v36 = *(_DWORD *)(a1 + 268); v76 = jj; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v36); ++*(_DWORD *)(a1 + 296); jj = v76; v35 = 0; result = 1; } else { v35 = result++; } ++v33; *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v35) = jj; *(_BYTE *)(a1 + 260) = jj; if ( "" == v33 ) break; } return result; case 0x2D: v46 = *(_DWORD *)(a1 + 256); v47 = "__vector("; for ( kk = 32; ; kk = *v47++ ) { if ( v46 == 255 ) { v50 = *(_DWORD *)(a1 + 268); v79 = kk; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v50); ++*(_DWORD *)(a1 + 296); kk = v79; v49 = 0; v46 = 1; } else { v49 = v46++; } *(_DWORD *)(a1 + 256) = v46; *(_BYTE *)(a1 + v49) = kk; *(_BYTE *)(a1 + 260) = kk; if ( v47 == "" ) break; } v63 = v4[2]; goto LABEL_96; case 0x4D: result = *(_DWORD *)(a1 + 256); v59 = "transaction_safe"; for ( mm = 32; ; mm = *v59++ ) { if ( result == 255 ) { v62 = *(_DWORD *)(a1 + 268); v82 = mm; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v62); ++*(_DWORD *)(a1 + 296); mm = v82; v61 = 0; result = 1; } else { v61 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v61) = mm; *(_BYTE *)(a1 + 260) = mm; if ( v59 == "" ) break; } return result; case 0x4F: result = *(_DWORD *)(a1 + 256); v42 = "noexcept"; for ( nn = 32; ; nn = *v42++ ) { if ( result == 255 ) { v45 = *(_DWORD *)(a1 + 268); v78 = nn; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v45); ++*(_DWORD *)(a1 + 296); nn = v78; v44 = 0; result = 1; } else { v44 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v44) = nn; *(_BYTE *)(a1 + 260) = nn; if ( v42 == "" ) break; } goto LABEL_92; case 0x50: result = *(_DWORD *)(a1 + 256); v38 = "throw"; for ( i1 = 32; ; i1 = *v38++ ) { if ( result == 255 ) { v41 = *(_DWORD *)(a1 + 268); v77 = i1; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v41); ++*(_DWORD *)(a1 + 296); i1 = v77; v40 = 0; result = 1; } else { v40 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v40) = i1; *(_BYTE *)(a1 + 260) = i1; if ( v38 == "" ) break; } LABEL_92: v63 = v4[3]; if ( v63 ) { v64 = result + 1; if ( result == 255 ) { v65 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v65); v63 = v4[3]; v64 = 1; result = 0; ++*(_DWORD *)(a1 + 296); } *(_DWORD *)(a1 + 256) = v64; *(_BYTE *)(a1 + result) = 40; *(_BYTE *)(a1 + 260) = 40; LABEL_96: d_print_comp(v63, a2); result = *(_DWORD *)(a1 + 256); v66 = result + 1; if ( result == 255 ) { v67 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v67); ++*(_DWORD *)(a1 + 296); v66 = 1; result = 0; } *(_DWORD *)(a1 + 256) = v66; *(_BYTE *)(a1 + result) = 41; *(_BYTE *)(a1 + 260) = 41; } return result; default: return d_print_comp(a3, a2); } } // 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (00429080) -------------------------------------------------------- int __usercall d_print_function_type_isra_0@(int a1@, int a2@, int *a3@, int **a4) { int **v6; // ecx char v7; // cl int v8; // eax int v9; // ecx int v10; // ebp int v11; // eax int v12; // ecx int v13; // eax int v14; // ecx int v15; // ecx int result; // eax int v17; // eax int v18; // eax int v19; // eax int v20; // eax int v21; // eax if ( !a4 ) goto LABEL_19; v6 = a4; while ( 2 ) { if ( v6[2] ) { LABEL_19: v10 = *(_DWORD *)(a1 + 276); *(_DWORD *)(a1 + 276) = 0; d_print_mod_list(a1, a2, a4, 0); v12 = *(_DWORD *)(a1 + 256); if ( v12 != 255 ) { LABEL_13: v13 = v12 + 1; *(_DWORD *)(a1 + 256) = v12 + 1; *(_BYTE *)(a1 + v12) = 40; *(_BYTE *)(a1 + 260) = 40; v14 = *a3; if ( !*a3 ) goto LABEL_15; goto LABEL_14; } goto LABEL_20; } switch ( *v6[1] ) { case 25: case 26: case 27: case 33: case 37: case 38: case 43: v7 = *(_BYTE *)(a1 + 260); v8 = *(_DWORD *)(a1 + 256); goto LABEL_6; case 34: case 35: case 36: v7 = *(_BYTE *)(a1 + 260); v8 = *(_DWORD *)(a1 + 256); if ( (*(_BYTE *)(a1 + 260) & 0xFD) == 40 ) { if ( v8 == 255 ) goto LABEL_24; goto LABEL_10; } LABEL_6: if ( v7 != 32 ) { if ( v8 == 255 ) { v20 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); *(_BYTE *)a1 = 32; v8 = 1; ++*(_DWORD *)(a1 + 296); goto LABEL_10; } *(_DWORD *)(a1 + 256) = v8 + 1; *(_BYTE *)(a1 + v8++) = 32; *(_BYTE *)(a1 + 260) = 32; } if ( v8 != 255 ) { LABEL_10: v9 = v8 + 1; goto LABEL_11; } LABEL_24: v18 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v18); ++*(_DWORD *)(a1 + 296); v9 = 1; v8 = 0; LABEL_11: *(_DWORD *)(a1 + 256) = v9; *(_BYTE *)(a1 + v8) = 40; v10 = *(_DWORD *)(a1 + 276); *(_BYTE *)(a1 + 260) = 40; *(_DWORD *)(a1 + 276) = 0; d_print_mod_list(a1, a2, a4, 0); v11 = *(_DWORD *)(a1 + 256); if ( v11 != 255 ) { v12 = v11 + 1; *(_DWORD *)(a1 + 256) = v11 + 1; *(_BYTE *)(a1 + v11) = 41; *(_BYTE *)(a1 + 260) = 41; if ( v11 != 254 ) goto LABEL_13; LABEL_20: v17 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v17); *(_BYTE *)a1 = 40; *(_BYTE *)(a1 + 260) = 40; v14 = *a3; ++*(_DWORD *)(a1 + 296); *(_DWORD *)(a1 + 256) = 1; if ( !v14 ) { v13 = 1; goto LABEL_16; } goto LABEL_14; } v21 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v21); *(_BYTE *)(a1 + 260) = 40; *(_WORD *)a1 = 10281; ++*(_DWORD *)(a1 + 296); *(_DWORD *)(a1 + 256) = 2; v14 = *a3; v13 = 2; if ( !*a3 ) goto LABEL_16; LABEL_14: d_print_comp(v14, a2); v13 = *(_DWORD *)(a1 + 256); LABEL_15: if ( v13 == 255 ) { v19 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v19); ++*(_DWORD *)(a1 + 296); v15 = 1; v13 = 0; goto LABEL_17; } LABEL_16: v15 = v13 + 1; LABEL_17: *(_DWORD *)(a1 + 256) = v15; *(_BYTE *)(a1 + v13) = 41; *(_BYTE *)(a1 + 260) = 41; result = d_print_mod_list(a1, a2, a4, 1); *(_DWORD *)(a1 + 276) = v10; return result; default: v6 = (int **)*v6; if ( !v6 ) goto LABEL_19; continue; } } } // 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (004293B0) -------------------------------------------------------- int __usercall d_print_mod_list@(int result@, int a2@, int **a3@, int a4) { int v5; // esi int **v6; // ebx int *v7; // eax int v8; // edi int *v9; // ecx unsigned int v10; // edx int *v11; // edx int v12; // eax int v13; // ecx int v14; // eax int v15; // ecx int v16; // eax unsigned int v17; // eax const char *v18; // edi char i; // bl int v20; // ecx int v21; // eax int v22; // eax char *v23; // ebx char j; // cl int v25; // edx int v26; // eax char *v27; // ebx size_t v28; // ecx int v29; // eax char *v30; // edi int v31; // ecx char v32; // dl int v33; // eax const char *v34; // ebx char k; // cl int v36; // edx int v37; // eax int v38; // [esp+14h] [ebp-48h] unsigned int *v39; // [esp+14h] [ebp-48h] int v40; // [esp+14h] [ebp-48h] int **v41; // [esp+18h] [ebp-44h] char v42; // [esp+18h] [ebp-44h] char v43; // [esp+18h] [ebp-44h] char v44; // [esp+18h] [ebp-44h] int v45; // [esp+1Ch] [ebp-40h] char Str[53]; // [esp+27h] [ebp-35h] BYREF if ( a3 ) { v5 = result; v6 = a3; do { if ( *(_DWORD *)(v5 + 280) ) return result; if ( !v6[2] ) { v9 = v6[1]; result = a4; v10 = *v9; if ( a4 ) { LABEL_4: v7 = v6[3]; v8 = *(_DWORD *)(v5 + 272); v6[2] = (int *)1; *(_DWORD *)(v5 + 272) = v7; switch ( v10 ) { case 0x29u: result = d_print_function_type_isra_0(*v6); *(_DWORD *)(v5 + 272) = v8; return result; case 0x2Au: result = d_print_array_type_isra_0(v5, a2, v9 + 2, (int **)*v6); *(_DWORD *)(v5 + 272) = v8; return result; case 2u: v12 = *(_DWORD *)(v5 + 276); v13 = v9[2]; *(_DWORD *)(v5 + 276) = 0; v38 = v12; d_print_comp(v13, a2); *(_DWORD *)(v5 + 276) = v38; v14 = *(_DWORD *)(v5 + 256); if ( (a2 & 4) != 0 ) { v15 = v14 + 1; if ( v14 == 255 ) { v16 = *(_DWORD *)(v5 + 268); *(_BYTE *)(v5 + 255) = 0; (*(void (__thiscall **)(int, int, int, int))(v5 + 264))(v15, v5, 255, v16); ++*(_DWORD *)(v5 + 296); v15 = 1; v14 = 0; } *(_DWORD *)(v5 + 256) = v15; *(_BYTE *)(v5 + v14) = 46; *(_BYTE *)(v5 + 260) = 46; } else { v40 = v8; v41 = v6; v18 = "::"; for ( i = 58; ; i = *v18 ) { if ( v14 == 255 ) { v21 = *(_DWORD *)(v5 + 268); *(_BYTE *)(v5 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v21); ++*(_DWORD *)(v5 + 296); v14 = 1; v20 = 0; } else { v20 = v14++; } ++v18; *(_DWORD *)(v5 + 256) = v14; *(_BYTE *)(v5 + v20) = i; *(_BYTE *)(v5 + 260) = i; if ( v18 == "" ) break; } v8 = v40; v6 = v41; } v39 = (unsigned int *)v6[1][3]; v17 = *v39; if ( *v39 == 71 ) { v22 = *(_DWORD *)(v5 + 256); v23 = "{default arg#" + 1; for ( j = 123; ; j = *v23++ ) { if ( v22 == 255 ) { v26 = *(_DWORD *)(v5 + 268); *(_BYTE *)(v5 + 255) = 0; v42 = j; (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v26); ++*(_DWORD *)(v5 + 296); j = v42; v25 = 0; v22 = 1; } else { v25 = v22++; } *(_DWORD *)(v5 + 256) = v22; *(_BYTE *)(v5 + v25) = j; *(_BYTE *)(v5 + 260) = j; if ( v23 == "" ) break; } v27 = Str; sprintf(Str, "%d", v39[3] + 1); v28 = strlen(Str); v29 = *(_DWORD *)(v5 + 256); if ( v28 ) { v45 = v8; v30 = &Str[v28]; do { v32 = *v27; if ( v29 == 255 ) { v33 = *(_DWORD *)(v5 + 268); *(_BYTE *)(v5 + 255) = 0; v43 = v32; (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v33); ++*(_DWORD *)(v5 + 296); v32 = v43; v31 = 0; v29 = 1; } else { v31 = v29++; } ++v27; *(_DWORD *)(v5 + 256) = v29; *(_BYTE *)(v5 + v31) = v32; *(_BYTE *)(v5 + 260) = v32; } while ( v30 != v27 ); v8 = v45; } v34 = "}::"; for ( k = 125; ; k = *v34 ) { if ( v29 == 255 ) { v37 = *(_DWORD *)(v5 + 268); *(_BYTE *)(v5 + 255) = 0; v44 = k; (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v37); ++*(_DWORD *)(v5 + 296); k = v44; v36 = 0; v29 = 1; } else { v36 = v29++; } *(_DWORD *)(v5 + 256) = v29; ++v34; *(_BYTE *)(v5 + v36) = k; *(_BYTE *)(v5 + 260) = k; if ( v34 == "" ) break; } goto LABEL_29; } while ( 1 ) { if ( v17 != 77 ) { if ( v17 > 0x4D ) { if ( v17 - 79 > 1 ) { LABEL_24: result = d_print_comp(v39, a2); *(_DWORD *)(v5 + 272) = v8; return result; } } else if ( v17 - 28 > 4 ) { goto LABEL_24; } } LABEL_29: v39 = (unsigned int *)v39[2]; v17 = *v39; } } LABEL_7: result = d_print_mod(v5, a2, v9); *(_DWORD *)(v5 + 272) = v8; goto LABEL_8; } if ( v10 == 77 ) goto LABEL_8; if ( v10 > 0x4D ) { if ( v10 - 79 <= 1 ) goto LABEL_8; v11 = v6[3]; v8 = *(_DWORD *)(v5 + 272); v6[2] = (int *)1; *(_DWORD *)(v5 + 272) = v11; goto LABEL_7; } if ( v10 - 28 > 4 ) goto LABEL_4; } LABEL_8: v6 = (int **)*v6; } while ( v6 ); } return result; } // 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); // 429080: using guessed type _DWORD __cdecl d_print_function_type_isra_0(_DWORD); // 4293B0: using guessed type char Str[53]; //----- (004297A0) -------------------------------------------------------- int __usercall d_print_array_type_isra_0@(int a1@, int a2@, int *a3@, int **a4) { int **v7; // eax int v8; // eax int v9; // edx int result; // eax int v11; // ecx int v12; // edx int v13; // eax int v14; // eax int v15; // eax int v16; // eax char *v17; // ebp char i; // dl int v19; // ecx int v20; // eax int v21; // edx int v22; // eax char v23; // [esp+1Fh] [ebp-1Dh] v7 = a4; if ( !a4 ) { LABEL_5: v8 = *(_DWORD *)(a1 + 256); goto LABEL_6; } while ( v7[2] ) { v7 = (int **)*v7; if ( !v7 ) { d_print_mod_list(0); goto LABEL_5; } } if ( *v7[1] != 42 ) { v16 = *(_DWORD *)(a1 + 256); v17 = (char *)&unk_4EEE58; for ( i = 32; ; i = *v17 ) { if ( v16 == 255 ) { v20 = *(_DWORD *)(a1 + 268); v23 = i; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); ++*(_DWORD *)(a1 + 296); i = v23; v19 = 0; v16 = 1; } else { v19 = v16++; } *(_DWORD *)(a1 + 256) = v16; ++v17; *(_BYTE *)(a1 + v19) = i; *(_BYTE *)(a1 + 260) = i; if ( &unk_4EEE5A == (_UNKNOWN *)v17 ) break; } d_print_mod_list(0); v21 = *(_DWORD *)(a1 + 256); if ( v21 == 255 ) { v22 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v22); *(_BYTE *)a1 = 41; v8 = 1; ++*(_DWORD *)(a1 + 296); LABEL_7: v9 = v8 + 1; *(_DWORD *)(a1 + 256) = v8 + 1; *(_BYTE *)(a1 + v8) = 32; *(_BYTE *)(a1 + 260) = 32; goto LABEL_8; } v8 = v21 + 1; *(_DWORD *)(a1 + 256) = v21 + 1; *(_BYTE *)(a1 + v21) = 41; *(_BYTE *)(a1 + 260) = 41; LABEL_6: if ( v8 == 255 ) { v15 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v15); *(_BYTE *)(a1 + 260) = 91; *(_WORD *)a1 = 23328; v11 = *a3; result = 2; ++*(_DWORD *)(a1 + 296); *(_DWORD *)(a1 + 256) = 2; if ( !v11 ) goto LABEL_12; goto LABEL_10; } goto LABEL_7; } d_print_mod_list(0); v9 = *(_DWORD *)(a1 + 256); LABEL_8: if ( v9 == 255 ) { v13 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v13); *(_BYTE *)a1 = 91; *(_BYTE *)(a1 + 260) = 91; v11 = *a3; ++*(_DWORD *)(a1 + 296); *(_DWORD *)(a1 + 256) = 1; if ( !v11 ) { result = 1; goto LABEL_12; } } else { result = v9 + 1; *(_DWORD *)(a1 + 256) = v9 + 1; *(_BYTE *)(a1 + v9) = 91; *(_BYTE *)(a1 + 260) = 91; v11 = *a3; if ( !*a3 ) goto LABEL_11; } LABEL_10: d_print_comp(v11, a2); result = *(_DWORD *)(a1 + 256); LABEL_11: if ( result == 255 ) { v14 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v14); ++*(_DWORD *)(a1 + 296); v12 = 1; result = 0; goto LABEL_13; } LABEL_12: v12 = result + 1; LABEL_13: *(_DWORD *)(a1 + 256) = v12; *(_BYTE *)(a1 + result) = 93; *(_BYTE *)(a1 + 260) = 93; return result; } // 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); // 4293B0: using guessed type _DWORD __cdecl d_print_mod_list(_DWORD); //----- (00429A70) -------------------------------------------------------- int __usercall d_print_expr_op@(int a1@, int a2@, _DWORD *a3@) { int result; // eax int v5; // edi char *v6; // esi char *v7; // edi int v8; // edx char v9; // bp int v10; // eax if ( *a3 != 50 ) return d_print_comp(a3, a2); result = a3[2]; v5 = *(_DWORD *)(result + 8); v6 = *(char **)(result + 4); if ( v5 ) { result = *(_DWORD *)(a1 + 256); v7 = &v6[v5]; do { v9 = *v6; if ( result == 255 ) { v10 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v10); ++*(_DWORD *)(a1 + 296); result = 1; v8 = 0; } else { v8 = result++; } ++v6; *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v8) = v9; *(_BYTE *)(a1 + 260) = v9; } while ( v6 != v7 ); } return result; } // 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (00429B20) -------------------------------------------------------- int __usercall d_print_subexpr@(int a1@, int a2@, _DWORD *a3@) { int v4; // eax int v5; // eax int v6; // esi int result; // eax int v8; // edx int v9; // eax int v10; // [esp+8h] [ebp-24h] int v11; // [esp+18h] [ebp-14h] _DWORD *v12; // [esp+1Ch] [ebp-10h] v4 = *a3; if ( *a3 <= 1u || v4 == 49 || v4 == 6 ) return d_print_comp(a3, a2); v5 = *(_DWORD *)(a1 + 256); v6 = v5 + 1; if ( v5 == 255 ) { v12 = a3; v6 = 1; v11 = a2; v10 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v10); a3 = v12; a2 = v11; v5 = 0; ++*(_DWORD *)(a1 + 296); } *(_DWORD *)(a1 + 256) = v6; *(_BYTE *)(a1 + v5) = 40; *(_BYTE *)(a1 + 260) = 40; d_print_comp(a3, a2); result = *(_DWORD *)(a1 + 256); v8 = result + 1; if ( result == 255 ) { v9 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); ++*(_DWORD *)(a1 + 296); v8 = 1; result = 0; } *(_DWORD *)(a1 + 256) = v8; *(_BYTE *)(a1 + result) = 41; *(_BYTE *)(a1 + 260) = 41; return result; } // 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (00429C20) -------------------------------------------------------- int __usercall d_maybe_print_fold_expression_isra_0@(int a1@, int a2@, int a3@, int a4) { _BYTE *v5; // eax _DWORD *v7; // edi int v8; // esi char v9; // al int v10; // eax int v11; // edx const char *v12; // esi int v13; // eax char k; // dl int v15; // ecx int v16; // eax _DWORD *v18; // ecx int v19; // eax int v20; // edx int v21; // eax int v22; // eax int v23; // edx const char *v24; // esi int v25; // eax char j; // dl int v27; // ecx int v28; // eax _DWORD *v29; // esi int v30; // eax const char *v31; // esi char i; // dl int v33; // ecx int v34; // eax int v35; // eax int v36; // eax _DWORD *v37; // [esp+10h] [ebp-2Ch] char v38; // [esp+10h] [ebp-2Ch] int v39; // [esp+14h] [ebp-28h] _DWORD *v40; // [esp+18h] [ebp-24h] char v41; // [esp+18h] [ebp-24h] char v42; // [esp+1Fh] [ebp-1Dh] v5 = **(_BYTE ***)(a3 + 8); if ( *v5 != 102 ) return 0; v40 = 0; v37 = *(_DWORD **)(*(_DWORD *)a4 + 8); v7 = *(_DWORD **)(*(_DWORD *)a4 + 12); if ( *v7 == 60 ) { v29 = (_DWORD *)v7[3]; v7 = (_DWORD *)v7[2]; v40 = v29; } v8 = *(_DWORD *)(a1 + 292); *(_DWORD *)(a1 + 292) = -1; v9 = v5[1]; v39 = v8; if ( v9 == 108 ) { v30 = *(_DWORD *)(a1 + 256); v31 = "(..."; for ( i = 40; ; i = *v31 ) { if ( v30 == 255 ) { v34 = *(_DWORD *)(a1 + 268); v41 = i; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v34); ++*(_DWORD *)(a1 + 296); i = v41; v33 = 0; v30 = 1; } else { v33 = v30++; } *(_DWORD *)(a1 + 256) = v30; ++v31; *(_BYTE *)(a1 + v33) = i; *(_BYTE *)(a1 + 260) = i; if ( v31 == "" ) break; } d_print_expr_op(a1, a2, v37); v18 = v7; LABEL_18: d_print_subexpr(a1, a2, v18); v19 = *(_DWORD *)(a1 + 256); v20 = v19 + 1; if ( v19 == 255 ) { v21 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v21); ++*(_DWORD *)(a1 + 296); v20 = 1; v19 = 0; } *(_DWORD *)(a1 + 256) = v20; *(_BYTE *)(a1 + v19) = 41; *(_BYTE *)(a1 + 260) = 41; goto LABEL_21; } if ( v9 > 108 ) { if ( v9 == 114 ) { v22 = *(_DWORD *)(a1 + 256); v23 = v22 + 1; if ( v22 == 255 ) { v35 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v35); ++*(_DWORD *)(a1 + 296); v23 = 1; v22 = 0; } *(_DWORD *)(a1 + 256) = v23; v24 = "...)"; *(_BYTE *)(a1 + v22) = 40; *(_BYTE *)(a1 + 260) = 40; d_print_subexpr(a1, a2, v7); d_print_expr_op(a1, a2, v37); v25 = *(_DWORD *)(a1 + 256); for ( j = 46; ; j = *v24 ) { if ( v25 == 255 ) { v28 = *(_DWORD *)(a1 + 268); v38 = j; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v28); ++*(_DWORD *)(a1 + 296); j = v38; v27 = 0; v25 = 1; } else { v27 = v25++; } ++v24; *(_DWORD *)(a1 + 256) = v25; *(_BYTE *)(a1 + v27) = j; *(_BYTE *)(a1 + 260) = j; if ( v24 == "" ) break; } } goto LABEL_21; } if ( v9 == 76 || v9 == 82 ) { v10 = *(_DWORD *)(a1 + 256); v11 = v10 + 1; if ( v10 == 255 ) { v36 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v36); ++*(_DWORD *)(a1 + 296); v11 = 1; v10 = 0; } *(_DWORD *)(a1 + 256) = v11; v12 = "..."; *(_BYTE *)(a1 + v10) = 40; *(_BYTE *)(a1 + 260) = 40; d_print_subexpr(a1, a2, v7); d_print_expr_op(a1, a2, v37); v13 = *(_DWORD *)(a1 + 256); for ( k = 46; ; k = *v12 ) { if ( v13 == 255 ) { v16 = *(_DWORD *)(a1 + 268); v42 = k; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v16); ++*(_DWORD *)(a1 + 296); k = v42; v15 = 0; v13 = 1; } else { v15 = v13++; } ++v12; *(_DWORD *)(a1 + 256) = v13; *(_BYTE *)(a1 + v15) = k; *(_BYTE *)(a1 + 260) = k; if ( v12 == "" ) break; } d_print_expr_op(a1, a2, v37); v18 = v40; goto LABEL_18; } LABEL_21: *(_DWORD *)(a1 + 292) = v39; return 1; } //----- (00429FC0) -------------------------------------------------------- BOOL __usercall d_demangle_callback_constprop_0@(char *a1@, int a2@, int a3@) { char v4; // al bool v5; // zf int v6; // edi char v7; // al char v8; // al size_t v9; // esi int v10; // ecx BOOL result; // eax void *v12; // esp void *v13; // esp int v14; // eax void *v15; // esp void *v16; // esp size_t v17; // eax unsigned int *v18; // ebx char *v19; // ecx char v20; // al int v21; // eax int v22; // edx int v23; // eax void *v24; // esp void *v25; // esp int v26; // eax void *v27; // esp void *v28; // esp int v29; // eax int v30; // edx unsigned int *comp; // eax char v32; // dl char *v33; // edx char *v34; // esi char i; // dl int v36; // edx int v37; // esi int *v38; // ebx unsigned __int8 v39; // si char v40; // bl int v41[3]; // [esp+0h] [ebp-1D8h] BYREF int v42[2]; // [esp+Ch] [ebp-1CCh] BYREF _BYTE *v43; // [esp+14h] [ebp-1C4h] int v44; // [esp+18h] [ebp-1C0h] int *v45; // [esp+1Ch] [ebp-1BCh] int v46; // [esp+20h] [ebp-1B8h] int v47; // [esp+24h] [ebp-1B4h] void (__cdecl *v48)(_DWORD *, int, int); // [esp+28h] [ebp-1B0h] unsigned int *v49; // [esp+2Ch] [ebp-1ACh] int v50[2]; // [esp+38h] [ebp-1A0h] BYREF int v51; // [esp+40h] [ebp-198h] char *Str; // [esp+44h] [ebp-194h] int *v53; // [esp+48h] [ebp-190h] int v54; // [esp+4Ch] [ebp-18Ch] int v55; // [esp+50h] [ebp-188h] int *v56; // [esp+54h] [ebp-184h] int v57; // [esp+58h] [ebp-180h] size_t v58; // [esp+5Ch] [ebp-17Ch] int v59; // [esp+60h] [ebp-178h] int v60; // [esp+64h] [ebp-174h] int v61; // [esp+68h] [ebp-170h] int v62; // [esp+6Ch] [ebp-16Ch] int v63; // [esp+70h] [ebp-168h] _DWORD v64[64]; // [esp+74h] [ebp-164h] BYREF int v65; // [esp+174h] [ebp-64h] char v66; // [esp+178h] [ebp-60h] void (__cdecl *v67)(_DWORD *, int, int); // [esp+17Ch] [ebp-5Ch] int v68; // [esp+180h] [ebp-58h] int v69; // [esp+184h] [ebp-54h] int v70; // [esp+188h] [ebp-50h] int v71; // [esp+18Ch] [ebp-4Ch] int v72; // [esp+190h] [ebp-48h] int v73; // [esp+194h] [ebp-44h] int v74; // [esp+198h] [ebp-40h] int v75; // [esp+19Ch] [ebp-3Ch] int v76; // [esp+1A0h] [ebp-38h] int *v77; // [esp+1A4h] [ebp-34h] int v78; // [esp+1A8h] [ebp-30h] int v79; // [esp+1ACh] [ebp-2Ch] int *v80; // [esp+1B0h] [ebp-28h] int v81; // [esp+1B4h] [ebp-24h] int v82; // [esp+1B8h] [ebp-20h] int v83; // [esp+1BCh] [ebp-1Ch] v4 = *a1; v48 = (void (__cdecl *)(_DWORD *, int, int))a2; v47 = a3; LOBYTE(v46) = v4; if ( v4 != 95 || (v6 = 1, a1[1] != 90) ) { v5 = memcmp(a1, "_GLOBAL_", 8u) == 0; v6 = 0; if ( v5 ) { v7 = a1[8]; if ( v7 == 95 || v7 == 46 || v7 == 36 ) { v8 = a1[9]; if ( v8 == 68 || (v6 = 0, v8 == 73) ) { v6 = 0; if ( a1[10] == 95 ) v6 = (v8 != 73) + 2; } } } } v50[0] = (int)a1; v9 = strlen(a1); v51 = 17; v10 = 2 * v9; v50[1] = (int)&a1[v9]; result = 0; Str = a1; v55 = 2 * v9; v54 = 0; v58 = v9; v57 = 0; v59 = 0; v60 = 0; v61 = 0; v62 = 0; v63 = 0; if ( 2 * v9 <= 0x800 ) { v45 = v41; v12 = alloca(32 * v9); v13 = alloca(32 * v9); v49 = (unsigned int *)v42; v14 = 16 * ((4 * v9 + 15) >> 4); v15 = alloca(v14); v16 = alloca(v14); v53 = v42; v56 = v42; if ( v6 == 1 ) { if ( (_BYTE)v46 != 95 || a1[1] != 90 ) return 0; Str = a1 + 2; v18 = d_encoding((int)v50, 1, v10); if ( (v51 & 1) != 0 ) { v19 = Str; v20 = *Str; if ( *Str == 46 ) { comp = v18; while ( 1 ) { v32 = v19[1]; if ( (unsigned __int8)(v32 - 97) <= 0x19u || v32 == 95 ) { v33 = v19 + 2; v39 = v19[2] - 97; LOBYTE(v49) = v19[2]; if ( v39 <= 0x19u || (_BYTE)v49 == 95 ) { v49 = comp; do { do v40 = *++v33; while ( (unsigned __int8)(v40 - 97) <= 0x19u ); } while ( v40 == 95 ); comp = v49; LOBYTE(v49) = v40; } } else { if ( (unsigned __int8)(v32 - 48) > 9u ) { v18 = comp; v20 = *v19; break; } v33 = v19; LOBYTE(v49) = *v19; } if ( (_BYTE)v49 == 46 ) { do { if ( (unsigned __int8)(v33[1] - 48) > 9u ) break; v34 = v33 + 2; for ( i = v33[2]; (unsigned __int8)(i - 48) <= 9u; ++v34 ) i = v34[1]; v5 = i == 46; v33 = v34; } while ( v5 ); } Str = v33; if ( v54 >= v55 || (v36 = v33 - v19, v37 = v54 + 1, v38 = &v53[4 * v54], v38[1] = 0, v54 = v37, v36 <= 0) ) { v38 = 0; } else { v38[1] = 0; *v38 = 0; v38[2] = (int)v19; v38[3] = v36; } comp = d_make_comp(v50, 78, (int)comp, (int)v38); v19 = Str; if ( *Str != 46 ) { v18 = comp; v20 = *Str; break; } } } } else { v20 = *Str; } } else if ( (unsigned int)(v6 - 2) > 1 ) { v18 = (unsigned int *)d_type( (int)v50, v41[0], v41[1], v41[2], v42[0], v42[1], (int)v43, v44, (int)v45, v46, v47, (int)v48); v20 = *Str; } else { v5 = a1[11] == 95; Str = a1 + 11; if ( v5 && a1[12] == 90 ) { Str = a1 + 13; v49 = d_encoding((int)v50, 0, v10); } else if ( v10 > 0 && (v46 = ((unsigned int)v42 + 3) >> 2, v17 = strlen(a1 + 11), v54 = 1, *(_DWORD *)(4 * v46 + 4) = 0, v17) ) { v42[0] = 0; v44 = v17; v43 = a1 + 11; } else { v49 = 0; } v18 = d_make_comp(v50, (v6 != 2) + 68, (int)v49, 0); Str += strlen(Str); v20 = *Str; } if ( !v20 && v18 ) { v65 = 0; v66 = 0; v67 = v48; v69 = 0; v68 = v47; v70 = 0; v74 = 0; v75 = 0; v71 = 0; v72 = 0; v73 = 0; v76 = 0; v77 = 0; v78 = 0; v79 = 0; v80 = 0; v81 = 0; v82 = 0; d_count_templates_scopes(v64, v18, (int)v19); if ( v72 <= 2047 ) v72 = 0; v21 = v79; v83 = 0; v22 = v79 * v82; v82 *= v79; if ( v79 <= 0 ) v21 = 1; v23 = 16 * ((unsigned int)(8 * v21 + 15) >> 4); v24 = alloca(v23); v25 = alloca(v23); if ( v22 <= 0 ) v22 = 1; v26 = 16 * ((unsigned int)(8 * v22 + 15) >> 4); v27 = alloca(v26); v28 = alloca(v26); v77 = v42; v80 = v42; d_print_comp((int)v64, 17, (int *)v18); v29 = v65; v30 = v68; *((_BYTE *)v64 + v65) = 0; v67(v64, v29, v30); return v71 == 0; } return 0; } return result; } // 42A25F: variable 'v19' is possibly undefined //----- (0042A580) -------------------------------------------------------- char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus) { char *v4; // edi size_t v5; // ebp size_t v6; // eax char *Str; // [esp+0h] [ebp-3Ch] char *Src[2]; // [esp+10h] [ebp-2Ch] BYREF size_t v10; // [esp+18h] [ebp-24h] int v11; // [esp+1Ch] [ebp-20h] if ( !lpmangled || lpout && !lpoutlen ) { if ( lpstatus ) *lpstatus = -3; return 0; } Src[0] = 0; Src[1] = 0; v10 = 0; v11 = 0; if ( !d_demangle_callback_constprop_0((char *)lpmangled, (int)d_growable_string_callback_adapter, (int)Src) ) { __mingw_free((unsigned int)Src[0]); if ( !lpstatus ) return 0; goto LABEL_25; } v4 = Src[0]; if ( v11 ) { v5 = 1; if ( Src[0] ) goto LABEL_7; if ( !lpstatus ) return 0; goto LABEL_16; } v5 = v10; if ( Src[0] ) { LABEL_7: if ( lpout ) { v6 = strlen(Src[0]); if ( v6 < *lpoutlen ) { memcpy(lpout, Src[0], v6 + 1); Str = v4; v4 = lpout; __mingw_free((unsigned int)Str); goto LABEL_10; } __mingw_free((unsigned int)lpout); } else if ( !lpoutlen ) { LABEL_10: if ( lpstatus ) *lpstatus = 0; return v4; } *lpoutlen = v5; goto LABEL_10; } if ( lpstatus ) { if ( v10 == 1 ) { LABEL_16: *lpstatus = -1; return 0; } LABEL_25: *lpstatus = -2; return 0; } return 0; } //----- (0042A6D0) -------------------------------------------------------- unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, int a2, int a3) { if ( a1 && a2 ) return !d_demangle_callback_constprop_0(a1, a2, a3) ? 0xFFFFFFFE : 0; else return -3; } //----- (0042A710) -------------------------------------------------------- char **_setargv() { char **result; // eax const char *CommandLineA; // ebx int v2; // eax void *v3; // esp void *v4; // esp int v5; // edi char *v6; // eax char v7; // bl char *v8; // eax int v9; // edx char *v10; // esi char *v11; // edx char *v12; // edi int v13; // esi int v14; // esi bool v15; // cl char *v16; // edx char *v17; // ecx char *v18; // ecx int v19; // [esp+0h] [ebp-58h] BYREF _DWORD v20[3]; // [esp+10h] [ebp-48h] BYREF int v21; // [esp+1Ch] [ebp-3Ch] char *Str; // [esp+20h] [ebp-38h] int v23; // [esp+24h] [ebp-34h] int v24; // [esp+28h] [ebp-30h] char *v25; // [esp+2Ch] [ebp-2Ch] int v26[2]; // [esp+30h] [ebp-28h] BYREF char **v27; // [esp+38h] [ebp-20h] int v28; // [esp+3Ch] [ebp-1Ch] if ( (_CRT_glob & 2) == 0 ) return (char **)_mingw32_init_mainargs(); v20[2] = &v19; CommandLineA = GetCommandLineA(); v2 = 16 * ((2 * strlen(CommandLineA) + 17) >> 4); v3 = alloca(v2); v4 = alloca(v2); v28 = 0; v5 = *CommandLineA; Str = (char *)v20; v21 = _CRT_glob & 0x4400 | 0x10; v6 = (char *)(CommandLineA + 1); v7 = v5; v25 = v6; if ( !v5 ) goto LABEL_19; v23 = 0; v8 = (char *)v20; v9 = 0; v24 = 0; do { if ( v7 > 63 ) { if ( v7 > 90 ) { switch ( v7 ) { case '[': v14 = v9 - 1; if ( (_CRT_glob & 0x20) != 0 ) goto LABEL_31; v15 = 1; if ( v9 ) goto LABEL_32; v16 = v8; goto LABEL_35; case '\\': if ( v24 == 39 ) *v8++ = 92; else ++v9; goto LABEL_23; case '{': case '}': case '\x7F': LABEL_30: v14 = v9 - 1; LABEL_31: v15 = v5 == 127 || v24 != 0; if ( v9 ) { LABEL_32: v16 = &v8[v14 + 1]; do *v8++ = 92; while ( v8 != v16 ); } else { v16 = v8; } v10 = v16; if ( v15 ) { LABEL_35: *v16 = 127; v10 = v16 + 1; } break; default: goto LABEL_7; } LABEL_22: *v10 = v7; v8 = v10 + 1; v9 = 0; goto LABEL_23; } LABEL_7: v10 = &v8[v9]; if ( v9 ) { do *v8++ = 92; while ( v8 != v10 ); } else { v10 = v8; } if ( v24 ) goto LABEL_22; if ( ___mb_cur_max == 1 ) { if ( (__pctype[v5] & 0x40) != 0 ) { LABEL_12: if ( Str < v10 || v23 ) { *v10 = 0; v12 = Str; v13 = v21 | 1; __mingw_glob(Str, v21, 0, (char **)v26); v21 = v13; v8 = v12; v9 = 0; v23 = 0; } else { v23 = 0; v8 = v10; v9 = 0; } goto LABEL_23; } } else if ( _isctype(v5, 64) ) { goto LABEL_12; } if ( v5 != 9 ) goto LABEL_22; goto LABEL_12; } if ( v7 <= 33 ) goto LABEL_7; switch ( v7 ) { case '"': if ( v9 >> 1 ) { v18 = &v8[v9 >> 1]; do *v8++ = 92; while ( v8 != v18 ); } else { v18 = v8; } if ( v24 == 39 || (v9 & 1) != 0 ) { *v18 = 34; v8 = v18 + 1; v9 = 0; v23 = 1; } else { v24 ^= 0x22u; v8 = v18; v9 = 0; v23 = 1; } break; case '\'': if ( (_CRT_glob & 0x10) == 0 ) goto LABEL_7; if ( v9 >> 1 ) { v17 = &v8[v9 >> 1]; do *v8++ = 92; while ( v8 != v17 ); } else { v17 = v8; } if ( v24 == 34 || (v9 & 1) != 0 ) { *v17 = 39; v8 = v17 + 1; v9 = 0; v23 = 1; } else { v24 ^= 0x27u; v8 = v17; v9 = 0; v23 = 1; } break; case '*': case ',': case '?': goto LABEL_30; default: goto LABEL_7; } LABEL_23: v5 = *v25++; v7 = *(v25 - 1); } while ( v7 ); if ( v9 ) { v11 = &v8[v9]; do *v8++ = 92; while ( v8 != v11 ); } else { v11 = v8; } if ( Str < v11 || v23 ) { *v11 = 0; __mingw_glob(Str, v21, 0, (char **)v26); } LABEL_19: _argc = v26[1]; result = v27; _bss_start__ = v27; return result; } // 4E8020: using guessed type int _CRT_glob; //----- (0042AAB0) -------------------------------------------------------- unsigned int __usercall __cpu_features_init@(__int32 a1@) { unsigned int v1; // kr00_4 unsigned int v2; // kr04_4 unsigned int v3; // kr08_4 unsigned int result; // eax int v14; // eax __int32 v15; // ebx __int32 v16; // ebx int v26[50]; // [esp+0h] [ebp-208h] BYREF __int32 v27[79]; // [esp+C8h] [ebp-140h] BYREF unsigned int v28; // [esp+204h] [ebp-4h] v1 = __getcallerseflags(); v28 = v1; v2 = __readeflags(); __writeeflags(v2 ^ 0x200000); v3 = __readeflags(); __writeeflags(v28); result = v2 ^ v3; if ( ((v2 ^ v3) & 0x200000) != 0 ) { _EAX = 0; __asm { cpuid } if ( result ) { _EAX = 1; __asm { cpuid } v14 = (_EDX & 0x100) != 0; if ( (_ECX & 0x2000) != 0 ) v14 |= 0x80u; if ( (_EDX & 0x8000) != 0 ) v14 |= 2u; if ( ((unsigned int)&unk_800000 & _EDX) != 0 ) v14 |= 4u; if ( ((unsigned int)&unk_1000000 & _EDX) != 0 ) { v14 |= 8u; v27[78] = a1; _fxsave(v26); v15 = v27[0]; v27[0] ^= 0x13C0DEu; _fxrstor(v26); v27[0] = v15; _fxsave(v26); v16 = _InterlockedExchange(v27, v15); _fxrstor(v26); if ( (v27[0] ^ v16) == 1294558 ) { if ( (_EDX & 0x2000000) != 0 ) v14 |= 0x10u; if ( (_EDX & 0x4000000) != 0 ) v14 |= 0x20u; if ( (_ECX & 1) != 0 ) v14 |= 0x40u; } } __cpu_features = v14; _EAX = 0x80000000; __asm { cpuid } if ( result > 0x80000000 ) { _EAX = -2147483647; __asm { cpuid } result = 0; if ( _EDX < 0 ) result = 256; if ( (_EDX & 0x40000000) != 0 ) result |= 0x200u; __cpu_features |= result; } } } return result; } // 42AAB0: could not find valid save-restore pair for ebp // 15412C8: using guessed type int __cpu_features; // 42AAB0: using guessed type __int32 var_140[79]; //----- (0042ABC0) -------------------------------------------------------- void __cdecl __do_global_dtors() { void (*v0)(void); // eax v0 = (void (*)(void))*off_4E802C; if ( *off_4E802C ) { do { v0(); v0 = (void (*)(void))off_4E802C[1]; ++off_4E802C; } while ( v0 ); } } // 4E802C: using guessed type int *off_4E802C; //----- (0042AC00) -------------------------------------------------------- int __do_global_ctors() { func_ptr v0; // ebx func_ptr v2; // eax v0 = __CTOR_LIST__[0]; if ( __CTOR_LIST__[0] == (func_ptr)-1 ) { v2 = 0; do { v0 = v2; v2 = (func_ptr)((char *)v2 + 1); } while ( __CTOR_LIST__[(_DWORD)v2] ); } for ( ; v0; v0 = (func_ptr)((char *)v0 - 1) ) __CTOR_LIST__[(_DWORD)v0](); return atexit(__do_global_dtors); } //----- (0042AC60) -------------------------------------------------------- int __main() { int result; // eax result = dword_15412CC; if ( !dword_15412CC ) { dword_15412CC = 1; return __do_global_ctors(); } return result; } // 15412CC: using guessed type int dword_15412CC; //----- (0042AC80) -------------------------------------------------------- int __stdcall TlsCallback_1(int a1, int a2, int a3) { if ( a2 != 3 && a2 ) return 1; __mingw_TLScallback(a1, a2); return 1; } //----- (0042ACD0) -------------------------------------------------------- int __stdcall __dyn_tls_init(int a1, int a2, int a3) { if ( _CRT_MT != 2 ) _CRT_MT = 2; if ( a2 == 1 ) __mingw_TLScallback(a1, 1); return 1; } // 15412D0: using guessed type int _CRT_MT; //----- (0042AD80) -------------------------------------------------------- int __tlregdtor() { return 0; } //----- (0042AD90) -------------------------------------------------------- void sub_42AD90() { int i; // ebx LPVOID Value; // esi EnterCriticalSection(&CriticalSection); for ( i = dword_15412E4; i; i = *(_DWORD *)(i + 8) ) { Value = TlsGetValue(*(_DWORD *)i); if ( !GetLastError() && Value ) (*(void (__cdecl **)(LPVOID))(i + 4))(Value); } LeaveCriticalSection(&CriticalSection); } // 15412E4: using guessed type int dword_15412E4; //----- (0042ADF0) -------------------------------------------------------- int __cdecl ___w64_mingwthr_add_key_dtor(int a1, int a2) { int result; // eax _DWORD *v3; // eax int v4; // ebx int v5; // eax result = dword_15412E8; if ( dword_15412E8 ) { v3 = calloc(1u, 0xCu); v4 = (int)v3; if ( v3 ) { *v3 = a1; v3[1] = a2; EnterCriticalSection(&CriticalSection); v5 = dword_15412E4; dword_15412E4 = v4; *(_DWORD *)(v4 + 8) = v5; LeaveCriticalSection(&CriticalSection); return 0; } else { return -1; } } return result; } // 15412E4: using guessed type int dword_15412E4; // 15412E8: using guessed type int dword_15412E8; //----- (0042AE70) -------------------------------------------------------- int __cdecl ___w64_mingwthr_remove_key_dtor(int a1) { _DWORD *v2; // eax _DWORD *v3; // ecx int v4; // edx if ( !dword_15412E8 ) return 0; EnterCriticalSection(&CriticalSection); v2 = (_DWORD *)dword_15412E4; if ( dword_15412E4 ) { v3 = 0; while ( 1 ) { v4 = v2[2]; if ( *v2 == a1 ) break; v3 = v2; if ( !v4 ) goto LABEL_11; v2 = (_DWORD *)v2[2]; } if ( v3 ) v3[2] = v4; else dword_15412E4 = v2[2]; __mingw_free((unsigned int)v2); } LABEL_11: LeaveCriticalSection(&CriticalSection); return 0; } // 15412E4: using guessed type int dword_15412E4; // 15412E8: using guessed type int dword_15412E8; //----- (0042AF00) -------------------------------------------------------- int __cdecl __mingw_TLScallback(int a1, int a2) { if ( a2 == 1 ) { if ( !dword_15412E8 ) InitializeCriticalSection(&CriticalSection); dword_15412E8 = 1; return 1; } else { if ( a2 != 3 ) { if ( !a2 && dword_15412E8 ) { sub_42AD90(); if ( dword_15412E8 == 1 ) { dword_15412E8 = 0; DeleteCriticalSection(&CriticalSection); } } return 1; } if ( !dword_15412E8 ) return 1; sub_42AD90(); return 1; } } // 15412E8: using guessed type int dword_15412E8; //----- (0042AFC0) -------------------------------------------------------- void __noreturn sub_42AFC0(char *Format, ...) { va_list va; // [esp+24h] [ebp+8h] BYREF va_start(va, Format); fwrite("Mingw runtime failure:\n", 1u, 0x17u, &__iob[2]); vfprintf(&__iob[2], Format, va); abort(); } //----- (0042B010) -------------------------------------------------------- DWORD __usercall sub_42B010@(const void *lpAddress@, int a2@, DWORD a3@) { DWORD result; // eax DWORD Protect; // ecx DWORD v8; // edx DWORD flOldProtect; // [esp+10h] [ebp-3Ch] BYREF struct _MEMORY_BASIC_INFORMATION Buffer; // [esp+14h] [ebp-38h] BYREF if ( !VirtualQuery(lpAddress, &Buffer, 0x1Cu) ) sub_42AFC0(" VirtualQuery failed for %d bytes at address %p", 28, lpAddress); result = Buffer.Protect; if ( Buffer.Protect == 64 || Buffer.Protect == 4 ) { if ( a3 ) { result = 0; do { *((_BYTE *)lpAddress + result) = *(_BYTE *)(a2 + result); ++result; } while ( result < a3 ); } } else { result = VirtualProtect(Buffer.BaseAddress, Buffer.RegionSize, 0x40u, &flOldProtect); Protect = Buffer.Protect; if ( a3 ) { v8 = 0; do { result = *(unsigned __int8 *)(a2 + v8); *((_BYTE *)lpAddress + v8++) = result; } while ( v8 < a3 ); } if ( Protect != 64 && Protect != 4 ) return VirtualProtect(Buffer.BaseAddress, Buffer.RegionSize, flOldProtect, &flOldProtect); } return result; } //----- (0042B100) -------------------------------------------------------- int _pei386_runtime_relocator() { int result; // eax result = dword_1541304; if ( !dword_1541304 ) { dword_1541304 = 1; return 0; } return result; } // 42B100: could not find valid save-restore pair for ebx // 42B100: could not find valid save-restore pair for edi // 42B100: could not find valid save-restore pair for esi // 1541304: using guessed type int dword_1541304; //----- (0042B2F0) -------------------------------------------------------- int __cdecl fesetenv(const fenv_t *Env) { unsigned int Fe_stat_low; // [esp+Ch] [ebp-10h] _EAX = Env; Fe_stat_low = 8064; if ( Env == (const fenv_t *)-3 ) { dword_4E8030 = -1; } else { if ( Env == (const fenv_t *)-4 ) { dword_4E8030 = -2; LABEL_12: __fpreset(); goto LABEL_8; } if ( !Env ) _EAX = (const fenv_t *)dword_4E8030; if ( _EAX != (const fenv_t *)-1 ) { if ( _EAX != (const fenv_t *)-2 ) { __asm { fldenv byte ptr [eax] } Fe_stat_low = LOWORD(_EAX[3]._Fe_stat); goto LABEL_8; } goto LABEL_12; } } __asm { fninit } LABEL_8: if ( (__cpu_features & 0x10) != 0 ) _mm_setcsr(Fe_stat_low); return 0; } // 4E8030: using guessed type int dword_4E8030; // 15412C8: using guessed type int __cpu_features; //----- (0042B370) -------------------------------------------------------- long double __cdecl strtold(const char *String, char **EndPtr) { char v2; // al int v4; // [esp+28h] [ebp-24h] BYREF __int64 v5; // [esp+2Ch] [ebp-20h] BYREF long double v6; // [esp+34h] [ebp-18h] v6 = 0.0; v2 = __strtodg((unsigned __int8 *)String, (unsigned __int8 **)EndPtr, dword_4E8034, &v4, (int *)&v5); switch ( v2 & 7 ) { case 1: case 5: WORD4(v6) = v4 + 16446; goto LABEL_3; case 2: LABEL_3: *(_QWORD *)&v6 = v5; break; case 3: *(_DWORD *)((char *)&v6 + 6) = 2147450880; break; case 4: *(_DWORD *)((char *)&v6 + 6) = -16384; break; default: break; } if ( (v2 & 8) != 0 ) WORD4(v6) |= 0x8000u; return v6; } // 4E8034: using guessed type int dword_4E8034[5]; //----- (0042B420) -------------------------------------------------------- int *__cdecl __increment_D2A(int *a1) { int *v1; // ebx int v2; // esi int *v3; // eax int *result; // eax int *v5; // edi v1 = a1; v2 = a1[4]; v3 = a1 + 5; do { if ( *v3 != -1 ) { ++*v3; return a1; } *v3++ = 0; } while ( &a1[v2 + 5] > v3 ); if ( v2 >= a1[2] ) { v5 = __Balloc_D2A(a1[1] + 1); memcpy(v5 + 3, a1 + 3, 4 * a1[4] + 8); v1 = v5; __Bfree_D2A((unsigned int)a1); v2 = v5[4]; } v1[4] = v2 + 1; result = v1; v1[v2 + 5] = 1; return result; } //----- (0042B4C0) -------------------------------------------------------- int __usercall sub_42B4C0@(int *a1@, int *a2@, _DWORD *a3@, double a4, int a5, int a6, _DWORD *a7) { int *v8; // eax int v9; // ecx int v10; // edi int *v11; // ebx int v12; // eax int v13; // edx int v14; // ebp int v15; // edx int v17; // eax int v18; // ecx int v19; // edx int v20; // ecx int v21; // esi int v22; // eax int v23; // edx unsigned int v24; // eax int v25; // eax int *v26; // eax int v29; // [esp+20h] [ebp-3Ch] int v30; // [esp+24h] [ebp-38h] int v31; // [esp+28h] [ebp-34h] int v32; // [esp+28h] [ebp-34h] int v33; // [esp+2Ch] [ebp-30h] int v34; // [esp+38h] [ebp-24h] BYREF int v35[8]; // [esp+3Ch] [ebp-20h] BYREF v8 = __d2b_D2A(a4, v35, &v34); v9 = v34; v10 = *a1; v11 = v8; v12 = v34 - *a1; v13 = v12 + v35[0]; v34 = v12; v35[0] += v12; if ( v12 <= 0 ) { if ( !a5 ) { v14 = 0; goto LABEL_10; } v30 = 0; v29 = 0; if ( !v12 ) goto LABEL_14; v11 = __lshift_D2A(v11, v10 - v9); goto LABEL_36; } if ( v10 == 53 ) { v14 = 0; if ( !a5 || a1[3] != 1 ) goto LABEL_10; v30 = __any_on_D2A((int)v11, v12); if ( !v30 ) { __rshift_D2A((int)v11, v34); v29 = 0; v13 = v35[0]; goto LABEL_14; } } else { if ( a6 != 1 ) { if ( a6 == 2 ) { v30 = __any_on_D2A((int)v11, v12); __rshift_D2A((int)v11, v34); LABEL_29: v11 = __increment_D2A(v11); v23 = v10 & 0x1F; if ( (v10 & 0x1F) != 0 ) v23 = 32 - v23; _BitScanReverse(&v24, v11[v11[4] + 4]); if ( (v24 ^ 0x1F) == v23 ) { v29 = 32; v13 = v35[0]; } else { if ( !v30 ) v30 = v11[5] & 1; __rshift_D2A((int)v11, 1); v29 = 32; v13 = ++v35[0]; } goto LABEL_14; } if ( v12 == 1 ) { v14 = 0; if ( !a5 ) goto LABEL_10; v15 = ((unsigned int)v11[5] >> 1) & 1; } else { v15 = ((unsigned int)v11[((v12 - 1) >> 5) + 5] >> (v12 - 1)) & 1; } v31 = v15; v30 = __any_on_D2A((int)v11, v12); v29 = v30 != 0 ? 0x10 : 0; __rshift_D2A((int)v11, v34); if ( v31 ) goto LABEL_29; goto LABEL_36; } v30 = __any_on_D2A((int)v11, v12); if ( !v30 ) { __rshift_D2A((int)v11, v34); v29 = 0; goto LABEL_36; } } __rshift_D2A((int)v11, v34); v29 = 16; LABEL_36: v13 = v35[0]; LABEL_14: v17 = a1[1]; if ( v17 <= v13 ) { v22 = a1[2]; if ( v22 < v13 ) { v35[0] = v22 + 1; *a7 = 163; v29 = 0; *_errno() = 34; v13 = v35[0]; v11[4] = 0; } goto LABEL_25; } v35[0] = a1[1]; v18 = v17 - v13; v19 = v18; if ( v10 < v18 || (v14 = a1[4]) != 0 ) { v11[4] = 0; v13 = v17; v29 = 0; *a7 = 80; LABEL_25: v14 = 1; *a2 = v13; __copybits_D2A(a3, v10, (int)v11); *a7 |= v29; goto LABEL_10; } v20 = v18 - 1; if ( v20 > 0 && !v30 ) { v33 = v19; v32 = v20; v25 = __any_on_D2A((int)v11, v20); v19 = v33; v20 = v32; v30 = v25; } if ( a5 | v30 ) { v21 = v11[(v20 >> 5) + 5] & (1 << v20); __rshift_D2A((int)v11, v19); *a7 = 2; if ( v21 ) { v26 = __increment_D2A(v11); v29 = 96; v13 = v35[0]; v11 = v26; } else { v13 = v35[0]; if ( v30 ) v29 = 80; } goto LABEL_25; } LABEL_10: __Bfree_D2A((unsigned int)v11); return v14; } // 42B4C0: using guessed type int var_20[8]; //----- (0042B8B0) -------------------------------------------------------- _DWORD *__cdecl __decrement_D2A(int a1) { _DWORD *result; // eax unsigned int v2; // ecx result = (_DWORD *)(a1 + 20); v2 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); while ( !*result ) { *result++ = -1; if ( v2 <= (unsigned int)result ) return result; } --*result; return result; } //----- (0042B8F0) -------------------------------------------------------- int *__cdecl __set_ones_D2A(unsigned int a1, int a2) { int *result; // eax int v3; // esi int *v4; // esi int v5; // edx int v6; // edx unsigned int v7; // ecx int *v8; // edx result = (int *)a1; v3 = (a2 + 31) >> 5; if ( *(_DWORD *)(a1 + 4) < v3 ) { __Bfree_D2A(a1); result = __Balloc_D2A(v3); } v4 = result + 5; v5 = a2 >> 5; if ( (a2 & 0x1F) != 0 ) { v6 = v5 + 1; v7 = (unsigned int)&v4[v6]; result[4] = v6; if ( v7 <= (unsigned int)v4 ) goto LABEL_10; } else { v7 = (unsigned int)&v4[v5]; result[4] = v5; if ( (unsigned int)v4 >= v7 ) return result; } v8 = result + 5; do *v8++ = -1; while ( (unsigned int)v8 < v7 ); if ( v7 < (unsigned int)result + 21 ) { v4 = result + 6; if ( (a2 & 0x1F) == 0 ) return result; LABEL_10: *(v4 - 1) = (unsigned int)*(v4 - 1) >> (32 - (a2 & 0x1F)); return result; } v4 += ((v7 - (unsigned int)result - 21) >> 2) + 1; if ( (a2 & 0x1F) != 0 ) goto LABEL_10; return result; } //----- (0042B9C0) -------------------------------------------------------- int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, int *a5) { char *decimal_point; // edi unsigned __int8 *v6; // eax signed __int8 v7; // cl unsigned __int8 *v8; // ebp int v9; // eax int v10; // ebx int v11; // edi unsigned __int8 *v12; // edx int result; // eax unsigned __int8 *v14; // edi int *v15; // eax unsigned __int8 *v16; // edx unsigned __int8 *v17; // esi int v18; // ecx unsigned __int8 *v19; // edx unsigned __int8 *v20; // edi int v21; // esi unsigned __int8 *v22; // eax int v23; // eax int v24; // eax int v25; // ecx int *v26; // edx int *j; // eax int v28; // ecx int v29; // edx int v30; // ecx int v31; // eax int v32; // edi long double v33; // fst7 int v37; // eax int v38; // eax int v39; // ecx char v40; // al signed int v41; // esi long double v42; // fst7 int *v43; // eax int v44; // edx int v45; // esi int v46; // edi int v47; // eax int v48; // edi int v49; // edx int v50; // eax int *v51; // eax int *v52; // edi int v53; // esi int v54; // ebp int v55; // ebx int v56; // edx int v57; // ebx int v58; // esi int v59; // eax int v60; // esi int v61; // ebp int v62; // edx int v63; // eax int *v64; // eax int *v65; // ebp int v66; // ebx int v67; // eax int v68; // eax int v69; // eax int *v70; // edx int *v71; // ebx int *v72; // esi int *v73; // eax int v74; // edx unsigned int v75; // ecx long double v76; // fst7 long double v77; // fst5 int v78; // eax unsigned __int8 *v79; // edx int v80; // esi int v81; // esi int v82; // edi int v83; // edx int v84; // esi int v85; // ecx int v86; // ecx int v87; // edx char v88; // dl int v89; // eax long double v90; // fst6 int v91; // edx int v92; // ecx int v93; // edi int v94; // esi int v95; // esi int v96; // ecx long double v97; // fst6 char v98; // cl int v99; // eax int v100; // ecx int *v101; // eax long double v102; // fst7 int *v103; // eax int v104; // edx unsigned int v105; // ecx bool v106; // zf int *v107; // eax long double v108; // fst6 long double v109; // fst5 long double v110; // fst6 int v111; // ebx int *v112; // eax int *v113; // esi int v116; // eax int *v117; // esi int *v118; // eax int v119; // eax int v120; // ecx int v121; // edx int v122; // edi int *v123; // edx int *v124; // eax int *v125; // ecx int *v127; // eax int v128; // ecx double Str; // [esp+0h] [ebp-CCh] int Size; // [esp+8h] [ebp-C4h] int v131; // [esp+Ch] [ebp-C0h] int v132; // [esp+20h] [ebp-ACh] double v133; // [esp+20h] [ebp-ACh] int *v134; // [esp+20h] [ebp-ACh] int v135; // [esp+2Ch] [ebp-A0h] int v136; // [esp+2Ch] [ebp-A0h] int *v137; // [esp+2Ch] [ebp-A0h] char *v138; // [esp+30h] [ebp-9Ch] int v139; // [esp+30h] [ebp-9Ch] int v140; // [esp+30h] [ebp-9Ch] int v141; // [esp+30h] [ebp-9Ch] int v142; // [esp+34h] [ebp-98h] int v143; // [esp+38h] [ebp-94h] int v144; // [esp+38h] [ebp-94h] unsigned __int8 *v145; // [esp+38h] [ebp-94h] int v146; // [esp+40h] [ebp-8Ch] int v147; // [esp+40h] [ebp-8Ch] double v148; // [esp+40h] [ebp-8Ch] int v149; // [esp+48h] [ebp-84h] int v150; // [esp+48h] [ebp-84h] unsigned __int8 *i; // [esp+4Ch] [ebp-80h] int *v152; // [esp+4Ch] [ebp-80h] BOOL v153; // [esp+4Ch] [ebp-80h] int v154; // [esp+50h] [ebp-7Ch] double v155; // [esp+50h] [ebp-7Ch] int v156; // [esp+58h] [ebp-74h] unsigned __int8 *v157; // [esp+58h] [ebp-74h] int v158; // [esp+58h] [ebp-74h] int v159; // [esp+58h] [ebp-74h] unsigned __int8 *v160; // [esp+5Ch] [ebp-70h] int v161; // [esp+5Ch] [ebp-70h] int v162; // [esp+60h] [ebp-6Ch] int v163; // [esp+64h] [ebp-68h] int v164; // [esp+68h] [ebp-64h] int v165; // [esp+6Ch] [ebp-60h] int v166; // [esp+70h] [ebp-5Ch] unsigned int v167; // [esp+74h] [ebp-58h] void *Src; // [esp+7Ch] [ebp-50h] int v169; // [esp+80h] [ebp-4Ch] int v170; // [esp+84h] [ebp-48h] int v171; // [esp+88h] [ebp-44h] int v172; // [esp+94h] [ebp-38h] BYREF int v173; // [esp+98h] [ebp-34h] BYREF int v174; // [esp+9Ch] [ebp-30h] BYREF int v175; // [esp+A0h] [ebp-2Ch] BYREF int v176; // [esp+A4h] [ebp-28h] BYREF unsigned __int8 *v177; // [esp+A8h] [ebp-24h] BYREF int *v178; // [esp+ACh] [ebp-20h] BYREF decimal_point = localeconv()->decimal_point; v174 = 0; v146 = strlen(decimal_point); v178 = 0; v142 = *a3; v6 = a1; v177 = a1; while ( 2 ) { v7 = *v6; v8 = v6; switch ( *v6 ) { case 0u: goto LABEL_13; case 9u: case 0xAu: case 0xBu: case 0xCu: case 0xDu: case 0x20u: v177 = ++v6; continue; case 0x2Bu: v164 = 0; goto LABEL_219; case 0x2Du: v164 = 1; LABEL_219: v177 = v6 + 1; v7 = v6[1]; if ( v7 ) { v8 = v6 + 1; LABEL_4: v132 = 0; if ( v7 == 48 ) { v22 = v8 + 1; if ( (v8[1] & 0xDF) == 88 ) { v174 = __gethex_D2A(&v177, a3, a4, &v178, v164); if ( v174 != 6 ) goto LABEL_78; v177 = a1; v15 = v178; if ( a2 ) *a2 = a1; goto LABEL_35; } do { v177 = v22; v8 = v22; v7 = *v22++; } while ( v7 == 48 ); v15 = 0; if ( !v7 ) goto LABEL_31; v132 = 1; } v170 = a3[4]; v9 = v7; if ( (unsigned int)(v7 - 48) > 9 ) { v135 = 0; v12 = v8; v10 = 0; v149 = 0; } else { v138 = decimal_point; v10 = 0; v135 = 0; v11 = 0; do { if ( v10 <= 8 ) { v11 = v9 + 10 * v11 - 48; } else if ( v10 <= 15 ) { v135 = v9 + 10 * v135 - 48; } v12 = &v8[++v10]; v177 = &v8[v10]; v9 = (char)v8[v10]; v7 = v8[v10]; } while ( (unsigned int)(v9 - 48) <= 9 ); v149 = v11; decimal_point = v138; } if ( *decimal_point == v7 ) { if ( !decimal_point[1] ) { v78 = 1; LABEL_178: v79 = &v12[v78]; v177 = v79; v9 = (char)*v79; if ( v10 ) { v80 = v9 - 48; v139 = v10; v14 = 0; for ( i = 0; (unsigned int)(v9 - 48) <= 9; v80 = v9 - 48 ) { v159 = v80; ++v14; v145 = v177; if ( v80 ) { i = &i[(_DWORD)v14]; if ( v14 == (unsigned __int8 *)1 ) { v121 = v139++; } else { v119 = v139; v120 = v149; v139 += (int)v14; v121 = v139 - 1; v122 = v135; do { if ( v119 <= 8 ) { ++v119; v120 *= 10; } else if ( ++v119 <= 16 ) { v122 *= 10; } } while ( v121 != v119 ); v135 = v122; v149 = v120; } if ( v121 <= 8 ) { LABEL_217: v14 = 0; v149 = v159 + 10 * v149; } else { v14 = 0; if ( v139 <= 16 ) v135 = v80 + 10 * v135; } } v177 = v145 + 1; v9 = (char)v145[1]; } } else { if ( v9 == 48 ) { v100 = 1 - (_DWORD)v79; do { v14 = &v79[v100]; v177 = ++v79; v9 = (char)*v79; } while ( v9 == 48 ); } else { v14 = 0; } if ( (unsigned int)(v9 - 49) <= 8 ) { v8 = v177; v139 = 1; v159 = v9 - 48; i = v14 + 1; v145 = v177; goto LABEL_217; } i = 0; v139 = 0; } v143 = 1; LABEL_20: if ( (v9 & 0xFFFFFFDF) != 69 ) { v156 = 0; goto LABEL_22; } if ( !(v132 | (unsigned int)v14 | v139) ) goto LABEL_30; a1 = v177++; v9 = (char)a1[1]; if ( (_BYTE)v9 == 43 ) { v154 = 0; } else { if ( (_BYTE)v9 != 45 ) { v154 = 0; goto LABEL_41; } v154 = 1; } v177 = a1 + 2; v9 = (char)a1[2]; LABEL_41: if ( (unsigned int)(v9 - 48) > 9 ) { v156 = 0; v177 = a1; } else { if ( v9 == 48 ) { v16 = v177 + 1; do { v177 = v16; v9 = (char)*v16++; } while ( v9 == 48 ); } v156 = 0; if ( (unsigned int)(v9 - 49) <= 8 ) { v17 = v177; v18 = v9 - 48; v157 = v177++; v9 = (char)v157[1]; if ( (unsigned int)(v9 - 48) > 9 ) goto LABEL_352; v160 = v14; v19 = v17 + 2; do { v177 = v19; v20 = v19++; v18 = v9 + 10 * v18 - 48; v9 = (char)*(v19 - 1); } while ( (unsigned int)(v9 - 48) <= 9 ); v21 = v20 - v157; v14 = v160; v156 = 19999; if ( v21 <= 8 ) { LABEL_352: v156 = v18; if ( v18 > 19999 ) v156 = 19999; } if ( v154 ) v156 = -v156; } } LABEL_22: if ( !v139 ) { if ( (unsigned int)v14 | v132 ) goto LABEL_78; if ( v143 ) goto LABEL_30; if ( v9 != 105 ) { if ( v9 > 105 ) { if ( v9 != 110 ) goto LABEL_30; LABEL_29: if ( !__match_D2A((char **)&v177, "an") ) goto LABEL_30; v174 = 4; *a4 = a3[2] + 1; if ( *v177 != 40 ) goto LABEL_78; v174 = __hexnan_D2A(&v177, a3, a5); LABEL_227: *a4 = a3[2] + 1; v15 = v178; goto LABEL_31; } if ( v9 != 73 ) { if ( v9 != 78 ) { LABEL_30: v174 = 6; v177 = a1; v15 = v178; goto LABEL_31; } goto LABEL_29; } } if ( !__match_D2A((char **)&v177, "nf") ) goto LABEL_30; --v177; if ( !__match_D2A((char **)&v177, "inity") ) ++v177; v174 = 3; goto LABEL_227; } v174 = 1; v166 = v156 - (_DWORD)i; v31 = a3[3] & 3; v163 = v31 - v164; if ( v31 != 2 ) { v163 = v164 + 1; if ( v31 != 3 ) v163 = v31 == 0; } if ( !v10 ) v10 = v139; v32 = v139; if ( v139 > 16 ) v32 = 16; v33 = (long double)(unsigned int)v149; v133 = v33; if ( v139 > 9 ) v133 = v33 * dbl_4EFDD8[v32] + (long double)(unsigned int)v135; if ( v142 > 53 || v139 > 15 ) { v38 = v156 - (_DWORD)i; goto LABEL_105; } if ( !v166 ) { v37 = sub_42B4C0(a3, a4, a5, v133, 1, v163, &v174); goto LABEL_97; } if ( v166 <= 0 ) { v38 = v156 - (_DWORD)i; if ( v166 < -22 ) goto LABEL_105; Str = v133 / __tens_D2A[(_DWORD)&i[-v156]]; } else { if ( v166 <= 22 ) { _EDX = LODWORD(v133); if ( LODWORD(v133) ) { __asm { tzcnt ecx, edx } v136 = 53 - _ECX; } else { _ECX = HIDWORD(v133) | 0x100000; __asm { tzcnt ecx, ecx } v136 = 21 - _ECX; } v131 = v163; Size = v136 + dword_4EFD80[v166] <= 53; Str = v133 * __tens_D2A[v166]; v133 = Str; goto LABEL_96; } v41 = v166 + v139 - v32; if ( 37 - v139 < v166 ) goto LABEL_106; Str = v133 * __tens_D2A[15 - v139] * __tens_D2A[v166 - (15 - v139)]; } Size = 0; v133 = Str; v131 = v163; LABEL_96: v37 = sub_42B4C0(a3, a4, a5, Str, Size, v131, &v174); LABEL_97: if ( v37 ) goto LABEL_78; v38 = 0; LABEL_105: v41 = v38 + v139 - v32; if ( v41 <= 0 ) { if ( v41 ) { v81 = -v41; if ( (v81 & 0xF) != 0 ) v133 = v133 / __tens_D2A[v81 & 0xF]; v41 = v81 & 0xFFFFFFF0; if ( v41 ) { v82 = v41 >> 4; if ( v41 <= 255 ) { v86 = 0; } else { v83 = v41 >> 4; v84 = 0; do { v83 -= 16; v85 = HIDWORD(v133) >> 20; HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; v86 = v84 + (v85 & 0x7FF) - 1023; v84 = v86; v133 = v133 * 1.0e-256; } while ( v83 > 15 ); v82 &= 0xFu; } v87 = (HIDWORD(v133) >> 20) & 0x7FF; HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; v41 = v86 + v87 - 1023; if ( v82 ) { v42 = v133; v88 = 0; v89 = 0; v90 = v133; do { if ( (v82 & 1) != 0 ) { v90 = v90 * __tinytens_D2A[v89]; v88 = 1; } ++v89; v82 >>= 1; } while ( v82 ); if ( v88 ) v42 = v90; goto LABEL_111; } } } goto LABEL_109; } LABEL_106: if ( (v41 & 0xF) != 0 ) v133 = v133 * __tens_D2A[v41 & 0xF]; v41 &= 0xFFFFFFF0; if ( v41 ) { v91 = v41 >> 4; if ( v41 <= 255 ) { v95 = 0; } else { v92 = v41 >> 4; v93 = 0; do { v92 -= 16; v94 = HIDWORD(v133) >> 20; HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; v95 = v93 + (v94 & 0x7FF) - 1023; v93 = v95; v133 = v133 * 1.0e256; } while ( v92 > 15 ); v91 &= 0xFu; } v96 = (HIDWORD(v133) >> 20) & 0x7FF; HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; v42 = v133; v41 = v95 + v96 - 1023; if ( v91 ) { v97 = v133; v98 = 0; v99 = 0; do { if ( (v91 & 1) != 0 ) { v97 = v97 * __bigtens_D2A[v99]; v98 = 1; } ++v99; v91 >>= 1; } while ( v91 ); if ( v98 ) v42 = v97; } goto LABEL_111; } LABEL_109: v42 = v133; LABEL_111: v43 = __d2b_D2A(v42, &v176, &v175); v44 = v175; v45 = v176 + v41; v178 = v43; v46 = v175 - v142; v176 = v45; if ( v175 - v142 > 0 ) { __rshift_D2A((int)v43, v175 - v142); v44 = v142; v176 += v46; v45 = v176; v175 = v142; } v171 = v45 + v44 - v142; if ( a3[2] + 1 < v171 ) { v144 = 0; goto LABEL_258; } v47 = a3[1]; v162 = v47; if ( v171 >= v47 ) { v144 = 0; } else { v48 = v45 - v47; if ( v45 - v47 > 0 ) { v101 = __lshift_D2A(v178, v48); v175 += v48; v178 = v101; } else if ( v45 != v47 ) { v49 = v48 + v44; v15 = v178; v175 = v49; if ( v49 > 0 ) { __rshift_D2A((int)v178, v162 - v45); } else { if ( v49 < -1 ) { v178[4] = 0; v15[5] = 0; *a4 = v162; if ( !v170 ) { v30 = 80; goto LABEL_77; } goto LABEL_254; } v175 = 1; v178[4] = 1; v15[5] = 1; } } v176 = v162; if ( v170 ) { v50 = v171; v144 = 1; v171 = v162; if ( v50 + 1 < v162 ) { v15 = v178; v178[4] = 0; v15[5] = 0; *a4 = v162; goto LABEL_254; } } else { v144 = 1; v171 = v162; } } v51 = __s2b_D2A((int)v8, v10, v139, v149, v146); v141 = 0; v167 = (unsigned int)v51; v150 = (v166 >> 31) & (unsigned int)&i[-v156]; v165 = v166 & ~(v166 >> 31); Src = v51 + 3; while ( 1 ) { v137 = __Balloc_D2A(*(_DWORD *)(v167 + 4)); memcpy(v137 + 3, Src, 4 * *(_DWORD *)(v167 + 16) + 8); v52 = __Balloc_D2A(v178[1]); memcpy(v52 + 3, v178 + 3, 4 * v178[4] + 8); v53 = v175; v54 = v176; v55 = v176 + v141; v147 = v175 - v141; v134 = __i2b_D2A(1); if ( v55 < 0 ) { v56 = v165 - v55; v57 = v150; } else { v56 = v166 & ~(v166 >> 31); v57 = v150 + v55; } v58 = v54 + v53 - v142; v59 = v142 + 1 - v147; if ( v162 > v58 ) v59 += v58 - v162; v60 = v57 + v59; v61 = v56 + v59; v62 = v57 + v59; if ( v57 + v59 > v61 ) v62 = v61; v63 = v57; if ( v57 > v62 ) v63 = v62; if ( v63 > 0 ) { v60 -= v63; v61 -= v63; v57 -= v63; } if ( v150 > 0 ) { v134 = (int *)__pow5mult_D2A(v134, v150); v152 = __mult_D2A((int)v134, (int)v52); __Bfree_D2A((unsigned int)v52); v52 = v152; } if ( v60 - v141 > 0 ) { v52 = __lshift_D2A(v52, v60 - v141); } else if ( v60 != v141 ) { __rshift_D2A((int)v52, v141 - v60); } if ( v166 > 0 ) v137 = (int *)__pow5mult_D2A(v137, v165); if ( v61 > 0 ) v137 = __lshift_D2A(v137, v61); if ( v57 > 0 ) v134 = __lshift_D2A(v134, v57); v64 = __diff_D2A((int)v52, (int)v137); v65 = v64; if ( v64[4] <= 1 && !v64[5] ) goto LABEL_61; v66 = v64[3]; v64[3] = 0; v67 = __cmp_D2A((int)v64, (int)v134); if ( v163 && v67 <= 0 ) { v68 = v163 & 1; v141 = v66 ^ v68; if ( v68 == v66 ) { v174 = v68 == 0 ? 33 : 17; goto LABEL_61; } if ( v66 ) { v174 = 33; v148 = 1.0; v158 = 0; v155 = 1.0; v169 = 32; v153 = 0; goto LABEL_158; } v174 = 17; if ( v171 != v162 ) { v69 = v142; v70 = v178; if ( v142 > 31 ) { while ( !v178[v66 + 5] ) { v69 -= 32; ++v66; if ( v69 <= 31 ) goto LABEL_260; } } else { v69 = v142; LABEL_260: if ( v69 <= 1 ) goto LABEL_262; v113 = &v178[v66 + 5]; _EBX = *v113; __asm { tzcnt ecx, ebx } *v113 = (unsigned int)*v113 >> _ECX; if ( v69 - 1 <= _ECX ) { LABEL_262: v176 = v171 - 1; v175 = v142; v178 = __set_ones_D2A((unsigned int)v70, v142); goto LABEL_61; } } } } else { if ( v67 < 0 ) { if ( v66 ) goto LABEL_335; v174 = 33; if ( v147 > 1 || v171 == v162 || (v144 & 1) != 0 ) goto LABEL_61; v65 = __lshift_D2A(v65, 1); if ( __cmp_D2A((int)v65, (int)v134) <= 0 ) goto LABEL_271; v174 = 17; v144 = 0; goto LABEL_293; } if ( !v67 ) { if ( v66 ) { if ( !v144 ) goto LABEL_340; v117 = v178; v118 = v178 + 5; while ( &v178[(v175 >> 5) + 5] > v118 ) { if ( *v118++ != -1 ) goto LABEL_340; } if ( (v175 & 0x1F) != 0 && (*v118 | (-1 << (v175 & 0x1F))) != -1 ) { LABEL_340: v174 = 17; goto LABEL_326; } v178[4] = 1; v117[5] = 1; v175 = 1; v176 = v142 + v162 - 1; v116 = v144; v174 = 33; LABEL_272: v144 = v142 - v116; if ( v142 != v116 ) { if ( v142 - v116 <= 0 ) __rshift_D2A((int)v178, v116 - v142); else v178 = __lshift_D2A(v178, v144); v23 = v176 - v144; v144 = 0; v176 = v23; LABEL_63: *a4 = v23; __Bfree_D2A((unsigned int)v52); __Bfree_D2A((unsigned int)v137); __Bfree_D2A((unsigned int)v134); __Bfree_D2A(v167); __Bfree_D2A((unsigned int)v65); if ( a3[2] >= v176 ) goto LABEL_259; v24 = a3[3] & 3; switch ( v24 ) { case 2: if ( !v164 ) goto LABEL_258; break; case 3: if ( v164 ) goto LABEL_258; break; case 1: LABEL_258: v174 = 163; v178[4] = 0; *_errno() = 34; *a4 = a3[2] + 1; LABEL_259: v15 = v178; LABEL_72: if ( !v144 ) goto LABEL_31; if ( !v170 ) { v29 = v174 & 0x30; v30 = v174 & 0xFFFFFFF8; if ( v15[4] > 0 ) v30 |= 2u; v174 = v30; if ( v29 ) { LABEL_77: v174 = v30 | 0x40; *_errno() = 34; } LABEL_78: v15 = v178; LABEL_31: if ( a2 ) *a2 = v177; if ( v164 ) v174 |= 8u; LABEL_35: if ( v15 ) { __copybits_D2A(a5, v142, (int)v15); __Bfree_D2A((unsigned int)v178); } return v174; } LABEL_254: v15[4] = 0; v174 = 80; *_errno() = 34; v15 = v178; goto LABEL_31; default: break; } __Bfree_D2A((unsigned int)v178); v178 = 0; v174 = 17; *a4 = a3[2]; v25 = *a3; v26 = &a5[(*a3 + 31) >> 5]; for ( j = a5; v26 > j; *(j - 1) = -1 ) ++j; v28 = v25 & 0x1F; if ( v28 ) *(v26 - 1) = (unsigned int)*(v26 - 1) >> (32 - v28); v15 = 0; goto LABEL_72; } LABEL_62: v23 = v176; goto LABEL_63; } if ( v147 != 1 ) { v174 = 33; LABEL_326: if ( v142 <= v147 || (v144 & 1) != 0 ) { v123 = v178; if ( (v178[5] & 1) != 0 ) { if ( v66 ) { v127 = __increment_D2A(v178); v128 = v127[4]; v178 = v127; _BitScanReverse((unsigned int *)&v127, v127[v128 + 4]); if ( (-v175 & 0x1F) != ((unsigned int)v127 ^ 0x1F) ) ++v175; v174 = 33; } else if ( v147 == 1 ) { LABEL_322: v123[4] = 0; v174 = 80; v176 = v162; } else { v124 = v178 + 5; v125 = &v178[v178[4] + 5]; while ( !*v124 ) { *v124++ = -1; if ( v125 <= v124 ) goto LABEL_335; } --*v124; LABEL_335: v174 = 17; } } LABEL_61: if ( v144 ) goto LABEL_62; } LABEL_271: v116 = v175; goto LABEL_272; } v174 = 1; if ( v171 == v162 ) { v174 = 33; if ( v178[4] == 1 && v178[5] == 1 ) v170 = 1; goto LABEL_61; } LABEL_293: v176 -= v142; v175 = v142; v178 = __set_ones_D2A((unsigned int)v178, v142); goto LABEL_61; } v102 = __ratio_D2A((int)v65, (int)v134); if ( v102 > 2.0 ) { v108 = v102 * 0.5; v169 = v66 == 0 ? 32 : 16; v153 = v66 == 0; v155 = v108; if ( v108 >= 2147483647.0 ) { v158 = 0; v148 = v108; goto LABEL_251; } v158 = (int)v108; v109 = (long double)(int)v108; v148 = v109; v110 = v108 - v109; v155 = v110; if ( v163 == 1 ) { if ( v66 ) goto LABEL_251; } else { if ( v163 != 2 ) { if ( v110 < 0.5 ) { LABEL_251: v141 = 0; goto LABEL_158; } LABEL_268: ++v158; v169 = 48 - v169; v148 = (double)v158; goto LABEL_251; } if ( !v66 ) goto LABEL_251; } if ( v155 <= 0.0 ) goto LABEL_251; goto LABEL_268; } if ( v66 ) { v158 = 0; v148 = 1.0; v169 = 32; v155 = 1.0; v141 = 0; v153 = 0; goto LABEL_158; } v141 = 0; } if ( v147 <= 1 && (v144 & 1) != 0 ) { v144 = 1; v123 = v178; goto LABEL_322; } v158 = 0; v148 = 1.0; v169 = 16; v155 = 1.0; v153 = 1; LABEL_158: v161 = v175 + v176; if ( (v144 & 1) == 0 && v175 < v142 ) { v111 = v142 - v175; v112 = __lshift_D2A(v178, v142 - v175); v176 -= v111; v178 = v112; v175 = v142; } v71 = __d2b_D2A(v148, &v172, &v173); if ( v172 < 0 ) { __rshift_D2A((int)v71, -v172); } else if ( v172 ) { v71 = __lshift_D2A(v71, v172); } v72 = v178; if ( v153 ) { v73 = __diff_D2A((int)v178, (int)v71); v178 = v73; if ( !v144 ) { v74 = v72[4]; if ( v73[4] <= v74 - 1 || (_BitScanReverse(&v75, v73[v74 + 4]), _BitScanReverse((unsigned int *)&v74, v72[v74 + 4]), (v74 ^ 0x1F) < (int)(v75 ^ 0x1F)) ) { if ( v171 != v162 ) { v107 = __lshift_D2A(v73, 1); --v176; --v171; v178 = v107; __Bfree_D2A((unsigned int)v71); __Bfree_D2A((unsigned int)v72); LABEL_245: v144 = 0; v141 = __trailz_D2A((int)v178); goto LABEL_176; } --v175; v144 = v153; } } } else { v103 = __sum_D2A(v178, v71); v104 = v103[4]; v178 = v103; if ( v72[4] <= v104 - 1 || (_BitScanReverse(&v105, v103[v104 + 4]), _BitScanReverse((unsigned int *)&v104, v72[v104 + 4]), (v104 ^ 0x1F) > (int)(v105 ^ 0x1F)) ) { if ( v144 ) { v106 = ++v175 == v142; v144 = !v106; } else { __rshift_D2A((int)v103, 1); ++v176; ++v171; v158 = 0; } } } __Bfree_D2A((unsigned int)v71); __Bfree_D2A((unsigned int)v72); if ( v141 ) goto LABEL_61; if ( v176 + v175 == v161 && v158 ) { v76 = v148 * 5.0e-16; v77 = v155 - 0.5; if ( -v76 <= v77 ) { if ( v77 > v76 && 1.0 - v76 > v155 ) { LABEL_60: v174 |= v169; goto LABEL_61; } } else if ( v155 > v76 ) { goto LABEL_60; } } if ( !v144 ) goto LABEL_245; LABEL_176: __Bfree_D2A((unsigned int)v52); __Bfree_D2A((unsigned int)v137); __Bfree_D2A((unsigned int)v134); __Bfree_D2A((unsigned int)v65); } } v140 = v9; v39 = 1; v40 = decimal_point[1]; while ( v12[v39] == v40 ) { v40 = decimal_point[++v39]; if ( !v40 ) { v78 = v39; goto LABEL_178; } } v9 = v140; } v139 = v10; v14 = 0; i = 0; v143 = 0; goto LABEL_20; } LABEL_13: result = 6; v174 = 6; if ( !a2 ) return result; *a2 = a1; return v174; default: v164 = 0; goto LABEL_4; } } } // 4EFD80: using guessed type int dword_4EFD80[22]; // 4EFDD8: using guessed type double dbl_4EFDD8[]; // 4EFE20: using guessed type double __tens_D2A[24]; // 4EFEE0: using guessed type double __tinytens_D2A[4]; // 4EFF20: using guessed type double __bigtens_D2A[4]; //----- (0042D5C0) -------------------------------------------------------- int __cdecl __hexnan_D2A(unsigned __int8 **a1, int *a2, int *a3) { int *v3; // edx unsigned __int8 *v4; // ebx unsigned int v5; // eax unsigned __int8 v6; // dl unsigned int v7; // edx unsigned __int8 *v8; // eax int *v9; // ebp int v10; // edi int *v11; // esi char v12; // cl int v13; // edx int *v14; // edx char v15; // bl int v16; // eax char v17; // di char v18; // bp unsigned int v19; // ebx int *v20; // edi int *v21; // esi unsigned int v22; // eax unsigned int v23; // eax int v24; // eax int *v25; // eax char i; // dl int v29; // edx int *v30; // ebx unsigned int v31; // eax int v32; // edx int v33; // eax int v34; // [esp+0h] [ebp-3Ch] int *v35; // [esp+4h] [ebp-38h] char v36; // [esp+4h] [ebp-38h] int v37; // [esp+8h] [ebp-34h] int *v38; // [esp+Ch] [ebp-30h] int *v39; // [esp+10h] [ebp-2Ch] unsigned __int8 *v40; // [esp+14h] [ebp-28h] int v41; // [esp+1Ch] [ebp-20h] if ( !byte_1541D50 ) hexdig_init_D2A(); v41 = *a2 & 0x1F; v3 = &a3[*a2 >> 5]; if ( v41 ) { v38 = &a3[*a2 >> 5]; v39 = v3 + 1; } else { v39 = &a3[*a2 >> 5]; v38 = v3 - 1; } *(v39 - 1) = 0; v4 = *a1; v5 = (*a1)[1]; v6 = (*a1)[1]; if ( !v6 ) return 4; while ( v5 <= 0x20 ) { v5 = v4[2]; ++v4; v6 = v5; if ( !v5 ) return 4; } if ( v6 == 48 && (v4[2] & 0xDF) == 88 && (v7 = v4[3], (unsigned __int8)v7 > 0x20u) ) { v8 = v4 + 3; v4 += 2; } else { v7 = v4[1]; v8 = v4 + 1; if ( !v4[1] ) return 4; } v9 = v38; v37 = 0; v10 = 0; v34 = 0; v11 = v38; do { while ( 1 ) { v12 = __hexdig_D2A[v7]; if ( v12 ) break; if ( v7 > 0x20 ) { if ( v7 == 41 && v34 ) { *a1 = v4 + 2; goto LABEL_25; } while ( 1 ) { ++v8; if ( v7 == 41 ) break; v7 = (char)*v8; if ( !*v8 ) return 4; } *a1 = v8; return 4; } if ( v34 <= v37 ) { LABEL_52: for ( i = v8[1]; (unsigned __int8)i <= 0x20u; ++v8 ) i = v8[2]; if ( i != 48 ) goto LABEL_23; if ( (v8[2] & 0xDF) != 88 ) goto LABEL_23; v7 = v8[3]; if ( (unsigned __int8)v7 <= 0x20u ) goto LABEL_23; v4 = v8 + 2; v8 += 3; } else { if ( v9 < v11 && v10 <= 7 ) { v40 = v8; v29 = *v9; v30 = v9; v36 = 4 * (8 - v10); do { v31 = v30[1]; ++v30; v32 = (v31 << (32 - v36)) | v29; v33 = v31 >> v36; *(v30 - 1) = v32; *v30 = v33; v29 = v33; } while ( v30 < v11 ); v8 = v40; } if ( v9 > a3 ) { v11 = v9 - 1; *--v9 = 0; v37 = v34; v10 = 0; goto LABEL_52; } v7 = v8[1]; v4 = v8; v10 = 8; ++v8; if ( !v7 ) goto LABEL_24; } } ++v10; ++v34; if ( v10 <= 8 ) { v13 = 16 * *v9; LABEL_22: *v9 = v13 | v12 & 0xF; goto LABEL_23; } if ( v9 > a3 ) { *(v9 - 1) = 0; v13 = 0; --v9; v10 = 1; goto LABEL_22; } LABEL_23: v7 = v8[1]; v4 = v8++; } while ( v7 ); LABEL_24: if ( !v34 ) return 4; LABEL_25: if ( v11 > v9 && v10 <= 7 ) { v14 = v9; v35 = v9; v15 = 4 * (8 - v10); v16 = *v9; v17 = 32 - v15; v18 = v15; do { v19 = v14[1]; *v14++ = (v19 << v17) | v16; v16 = v19 >> v18; *v14 = v19 >> v18; } while ( v14 < v11 ); v9 = v35; } if ( a3 >= v9 ) { v24 = *(v39 - 1); if ( v41 ) { v24 &= 0xFFFFFFFF >> (32 - v41); *(v39 - 1) = v24; } } else { v20 = a3; v21 = v9; do *v20++ = *v21++; while ( v38 >= v21 ); v22 = 4; if ( (char *)v38 + 1 >= (char *)v9 + 1 ) v22 = 4 * ((unsigned int)((char *)v38 - (char *)v9) >> 2) + 4; v23 = (unsigned int)a3 + v22; do { v23 += 4; *(_DWORD *)(v23 - 4) = 0; } while ( (unsigned int)v38 >= v23 ); v24 = *(v39 - 1); } if ( v24 ) return 5; if ( v38 != a3 ) { v25 = v38; while ( 1 ) { if ( *--v25 ) return 5; if ( a3 == v25 ) { v38 = v25; break; } } } *v38 = 1; return 5; } // 1541D50: using guessed type char byte_1541D50; //----- (0042D9B0) -------------------------------------------------------- void __usercall sub_42D9B0(int a1@) { LONG v2; // eax switch ( Target ) { case 2: LABEL_10: EnterCriticalSection((LPCRITICAL_SECTION)(24 * a1 + 22289536)); return; case 0: v2 = InterlockedExchange(&Target, 1); if ( v2 ) { if ( v2 != 2 ) goto LABEL_5; Target = 2; } else { InitializeCriticalSection(&stru_1541C80); InitializeCriticalSection(&stru_1541C98); atexit(sub_42DA80); Target = 2; } goto LABEL_10; case 1: do { Sleep(1u); LABEL_5: ; } while ( Target == 1 ); if ( Target == 2 ) goto LABEL_10; break; } } //----- (0042DA80) -------------------------------------------------------- void __cdecl sub_42DA80() { if ( InterlockedExchange(&Target, 3) == 2 ) { DeleteCriticalSection(&stru_1541C80); DeleteCriticalSection(&stru_1541C98); } } //----- (0042DAD0) -------------------------------------------------------- int *__cdecl __Balloc_D2A(int a1) { int v1; // esi int *result; // eax bool v3; // zf int *v4; // [esp+1Ch] [ebp-10h] sub_42D9B0(0); if ( a1 > 9 ) goto LABEL_2; result = (int *)dword_1541C40[a1]; if ( result ) { v3 = Target == 2; dword_1541C40[a1] = *result; if ( !v3 ) goto LABEL_4; LABEL_8: v4 = result; LeaveCriticalSection(&stru_1541C80); result = v4; goto LABEL_4; } result = (int *)off_4E8048; v1 = 1 << a1; if ( ((unsigned int)(4 * (1 << a1) + 27) >> 3) + (((_BYTE *)off_4E8048 - (_BYTE *)&unk_1541340) >> 3) > 0x120 ) { LABEL_2: v1 = 1 << a1; result = (int *)malloc((4 * (1 << a1) + 27) & 0xFFFFFFF8); if ( !result ) return result; } else { off_4E8048 = (char *)off_4E8048 + ((4 * (1 << a1) + 27) & 0xFFFFFFF8); } v3 = Target == 2; result[1] = a1; result[2] = v1; if ( v3 ) goto LABEL_8; LABEL_4: result[4] = 0; result[3] = 0; return result; } // 4E8048: using guessed type void *off_4E8048; // 1541C40: using guessed type int dword_1541C40[10]; //----- (0042DBC0) -------------------------------------------------------- void __cdecl __Bfree_D2A(unsigned int a1) { int v1; // eax bool v2; // zf int v3; // edx if ( a1 ) { if ( *(int *)(a1 + 4) <= 9 ) { sub_42D9B0(0); v1 = *(_DWORD *)(a1 + 4); v2 = Target == 2; v3 = dword_1541C40[v1]; dword_1541C40[v1] = a1; *(_DWORD *)a1 = v3; if ( v2 ) LeaveCriticalSection(&stru_1541C80); } else { __mingw_free(a1); } } } // 1541C40: using guessed type int dword_1541C40[10]; //----- (0042DC20) -------------------------------------------------------- int *__cdecl __multadd_D2A(int *a1, int a2, int a3) { int v3; // ecx __int64 v4; // rdi unsigned __int64 v5; // rax int *v6; // ebp int *v8; // eax __int64 v9; // [esp+10h] [ebp-2Ch] int v10; // [esp+1Ch] [ebp-20h] v3 = 0; HIDWORD(v4) = a3; LODWORD(v4) = a3 >> 31; v10 = a1[4]; LODWORD(v9) = a2; do { HIDWORD(v9) = a2 >> 31; v5 = __PAIR64__(v4, HIDWORD(v4)) + v9 * (unsigned int)a1[v3 + 5]; a1[v3++ + 5] = v5; HIDWORD(v4) = HIDWORD(v5); LODWORD(v4) = 0; } while ( v10 > v3 ); v6 = a1; if ( v4 ) { if ( a1[2] <= v10 ) { v8 = __Balloc_D2A(a1[1] + 1); v6 = v8; if ( v8 ) { memcpy(v8 + 3, a1 + 3, 4 * a1[4] + 8); __Bfree_D2A((unsigned int)a1); v6[v10 + 5] = HIDWORD(v4); v6[4] = v10 + 1; } } else { v6 = a1; a1[v10 + 5] = HIDWORD(v5); a1[4] = v10 + 1; } } return v6; } //----- (0042DD00) -------------------------------------------------------- int *__cdecl __i2b_D2A(int a1) { int *result; // eax result = __Balloc_D2A(1); if ( result ) { result[4] = 1; result[5] = a1; } return result; } //----- (0042DD30) -------------------------------------------------------- int *__cdecl __mult_D2A(int a1, int a2) { int v2; // ebp int v3; // ebx int v4; // esi int v5; // edi int *v6; // eax unsigned int *v7; // eax unsigned int *i; // edx unsigned int v9; // esi unsigned int *v10; // ebp unsigned __int64 v11; // rax int v12; // eax unsigned int v14; // [esp+14h] [ebp-48h] unsigned int v15; // [esp+18h] [ebp-44h] unsigned int v16; // [esp+1Ch] [ebp-40h] unsigned int v17; // [esp+20h] [ebp-3Ch] unsigned int *v18; // [esp+24h] [ebp-38h] unsigned int v19; // [esp+28h] [ebp-34h] int v20; // [esp+2Ch] [ebp-30h] unsigned int v21; // [esp+30h] [ebp-2Ch] int *v22; // [esp+38h] [ebp-24h] unsigned int *v23; // [esp+3Ch] [ebp-20h] v2 = a1; v3 = a2; v4 = *(_DWORD *)(a1 + 16); v5 = *(_DWORD *)(a2 + 16); if ( v4 >= v5 ) { v5 = *(_DWORD *)(a1 + 16); v4 = *(_DWORD *)(a2 + 16); v3 = a1; v2 = a2; } v20 = v5 + v4; v6 = __Balloc_D2A(*(_DWORD *)(v3 + 4) + (*(_DWORD *)(v3 + 8) < v5 + v4)); v22 = v6; if ( v6 ) { v7 = (unsigned int *)(v6 + 5); v23 = v7; for ( i = &v7[v20]; i > v7; ++v7 ) *v7 = 0; v17 = v3 + 20 + 4 * v5; v15 = v2 + 20; v19 = v2 + 20 + 4 * v4; if ( v2 + 20 < v19 ) { v21 = 4; if ( v17 >= v3 + 21 ) v21 = 4 * ((unsigned int)(4 * v5 - 1) >> 2) + 4; v18 = v23; do { while ( 1 ) { v15 += 4; if ( *(_DWORD *)(v15 - 4) ) break; ++v18; if ( v19 <= v15 ) goto LABEL_15; } v16 = *(_DWORD *)(v15 - 4); v9 = 0; v14 = v3 + 20; v10 = v18; do { v14 += 4; v11 = v9 + *v10++ + *(unsigned int *)(v14 - 4) * (unsigned __int64)v16; *(v10 - 1) = v11; v9 = HIDWORD(v11); } while ( v17 > v14 ); LODWORD(v11) = v18++; *(_DWORD *)(v11 + v21) = HIDWORD(v11); } while ( v19 > v15 ); } LABEL_15: if ( v20 > 0 ) { v12 = v20; do { if ( v23[v12 - 1] ) break; --v12; } while ( v12 ); v20 = v12; } v22[4] = v20; } return v22; } //----- (0042DED0) -------------------------------------------------------- int __cdecl __pow5mult_D2A(int *a1, int a2) { int *v2; // esi int v3; // ebx int v4; // ebp int **v5; // edi int *v6; // esi int *v7; // eax int *v9; // eax int *v10; // eax LPCRITICAL_SECTION lpCriticalSection; // [esp+0h] [ebp-2Ch] v2 = a1; if ( (a2 & 3) == 0 || (v2 = __multadd_D2A(a1, dword_4EFDFC[a2 & 3], 0)) != 0 ) { v3 = a2 >> 2; v4 = (int)v2; if ( a2 >> 2 ) { v5 = (int **)dword_1541320; if ( !dword_1541320 ) { sub_42D9B0(1); v5 = (int **)dword_1541320; if ( !dword_1541320 ) { v10 = __Balloc_D2A(1); v5 = (int **)v10; if ( !v10 ) { dword_1541320 = 0; return 0; } v10[5] = 625; v10[4] = 1; dword_1541320 = (int)v10; *v10 = 0; } if ( Target == 2 ) LeaveCriticalSection(&stru_1541C98); } v4 = (int)v2; if ( (v3 & 1) != 0 ) goto LABEL_9; LABEL_5: v3 >>= 1; if ( v3 ) { while ( 1 ) { v6 = *v5; if ( *v5 ) goto LABEL_7; sub_42D9B0(1); v6 = *v5; if ( !*v5 ) { v9 = __mult_D2A((int)v5, (int)v5); *v5 = v9; v6 = v9; if ( !v9 ) return 0; *v9 = 0; } if ( Target != 2 ) { LABEL_7: v5 = (int **)v6; } else { v5 = (int **)v6; LeaveCriticalSection(&stru_1541C98); } if ( (v3 & 1) == 0 ) goto LABEL_5; LABEL_9: v7 = __mult_D2A(v4, (int)v5); if ( !v7 ) return 0; lpCriticalSection = (LPCRITICAL_SECTION)v4; v4 = (int)v7; __Bfree_D2A((unsigned int)lpCriticalSection); v3 >>= 1; if ( !v3 ) return v4; } } } return v4; } return 0; } // 4EFDFC: using guessed type int dword_4EFDFC[7]; // 1541320: using guessed type int dword_1541320; //----- (0042E050) -------------------------------------------------------- int *__cdecl __lshift_D2A(_DWORD *a1, int a2) { int v2; // edx int v3; // esi int i; // eax int *v5; // eax int *v6; // edi int *v7; // edx int *v8; // eax int *v9; // esi unsigned int v10; // edx char v11; // cl int *v12; // ebx unsigned int v13; // eax int v14; // edi unsigned int v15; // ecx _DWORD *v17; // edi _DWORD *v18; // esi int *v19; // [esp+1Ch] [ebp-30h] int v20; // [esp+20h] [ebp-2Ch] int *v21; // [esp+28h] [ebp-24h] v2 = a1[1]; v3 = a2 >> 5; v20 = (a2 >> 5) + a1[4]; for ( i = a1[2]; v20 + 1 > i; ++v2 ) i *= 2; v5 = __Balloc_D2A(v2); v19 = v5; if ( v5 ) { v6 = v5 + 5; if ( v3 > 0 ) { v7 = &v5[v3 + 5]; v8 = v5 + 5; do *v8++ = 0; while ( v8 != v7 ); v6 += v3; } v9 = a1 + 5; v10 = (unsigned int)&a1[a1[4] + 5]; v11 = a2 & 0x1F; if ( (a2 & 0x1F) != 0 ) { v21 = v6; v12 = v6; v13 = 0; do { v14 = *v9; ++v12; ++v9; *(v12 - 1) = (v14 << v11) | v13; v13 = (unsigned int)*(v9 - 1) >> (32 - v11); } while ( v10 > (unsigned int)v9 ); v15 = 4; if ( v10 >= (unsigned int)a1 + 21 ) v15 = 4 * ((v10 - (unsigned int)a1 - 21) >> 2) + 4; *(int *)((char *)v21 + v15) = v13; if ( v13 ) ++v20; } else { do { *v6 = *v9; v18 = v9 + 1; v17 = v6 + 1; if ( v10 <= (unsigned int)v18 ) break; *v17 = *v18; v9 = v18 + 1; v6 = v17 + 1; } while ( v10 > (unsigned int)v9 ); } v19[4] = v20; __Bfree_D2A((unsigned int)a1); } return v19; } //----- (0042E190) -------------------------------------------------------- int __cdecl __cmp_D2A(int a1, int a2) { int v2; // eax int v3; // ebx int v4; // edx _DWORD *v5; // eax _DWORD *v6; // edx v2 = *(_DWORD *)(a2 + 16); v3 = *(_DWORD *)(a1 + 16) - v2; if ( !v3 ) { v4 = 4 * v2; v5 = (_DWORD *)(a1 + 20 + 4 * v2); v6 = (_DWORD *)(a2 + v4 + 20); while ( *--v5 == *--v6 ) { if ( a1 + 20 >= (unsigned int)v5 ) return v3; } return *v5 < *v6 ? -1 : 1; } return v3; } //----- (0042E1E0) -------------------------------------------------------- int *__cdecl __diff_D2A(int a1, int a2) { int v2; // esi int v3; // eax int v4; // ebx int v5; // edx _DWORD *v6; // eax _DWORD *v7; // edx int *v8; // eax int v9; // ebp int v10; // edx int v11; // esi unsigned int v12; // ebp __int64 v13; // rcx __int64 v14; // rax unsigned __int64 v15; // rax int v16; // edx int v17; // ebp unsigned int v18; // edi char *v19; // ecx int v20; // eax char *v21; // edi _DWORD *v22; // eax char *v23; // ebx unsigned int *v24; // ecx unsigned int v25; // eax unsigned __int64 v26; // rax char *v27; // ecx int v29; // [esp+18h] [ebp-44h] int *v30; // [esp+24h] [ebp-38h] char *v31; // [esp+24h] [ebp-38h] unsigned int v32; // [esp+28h] [ebp-34h] _DWORD *v33; // [esp+28h] [ebp-34h] int *v34; // [esp+2Ch] [ebp-30h] unsigned int v35; // [esp+30h] [ebp-2Ch] int *v36; // [esp+34h] [ebp-28h] int v37; // [esp+38h] [ebp-24h] int v38; // [esp+3Ch] [ebp-20h] v2 = a1; v3 = *(_DWORD *)(a2 + 16); v4 = *(_DWORD *)(a1 + 16) - v3; if ( v4 ) { v4 = 0; if ( *(_DWORD *)(a1 + 16) - v3 < 0 ) { LABEL_21: v4 = 1; v2 = a2; a2 = a1; } LABEL_6: v8 = __Balloc_D2A(*(_DWORD *)(v2 + 4)); v34 = v8; if ( v8 ) { v9 = *(_DWORD *)(v2 + 16); v10 = v2 + 20; v8[3] = v4; v11 = 0; v37 = v10; v29 = v10; v35 = v10 + 4 * v9; v38 = v9; v12 = a2 + 20; v32 = a2 + 20 + 4 * *(_DWORD *)(a2 + 16); v36 = v8 + 5; v30 = v8 + 5; do { v29 += 4; v12 += 4; v13 = *(unsigned int *)(v12 - 4); v14 = *(unsigned int *)(v29 - 4) - (unsigned __int64)(unsigned int)v11 - v13; LODWORD(v13) = *(_DWORD *)(v29 - 4) - v11 - v13; v15 = __PAIR64__(HIDWORD(v14), (unsigned int)++v30) & 0x1FFFFFFFFLL; v11 = HIDWORD(v15); *(_DWORD *)(v15 - 4) = v13; v16 = v13; } while ( v32 > v12 ); v17 = v38; v18 = v32 - a2 - 21; v19 = (char *)v36 + (v32 >= a2 + 21 ? v18 & 0xFFFFFFFC : 0); v20 = 4; if ( v32 >= a2 + 21 ) v20 = 4 * (v18 >> 2) + 4; v31 = (char *)v36 + v20; v21 = (char *)v36 + v20; v22 = (_DWORD *)(v20 + v37); v33 = v22; if ( v35 > (unsigned int)v22 ) { v23 = v21; v24 = v22; do { v25 = *v24++; v26 = v25 - (unsigned __int64)(unsigned int)v11; v23 += 4; v11 = BYTE4(v26) & 1; v16 = v26; *((_DWORD *)v23 - 1) = v26; } while ( v35 > (unsigned int)v24 ); v17 = v38; v19 = &v31[(v35 - 1 - (_DWORD)v33) & 0xFFFFFFFC]; } if ( !v16 ) { v27 = &v19[-4 * v17]; do --v17; while ( !*(_DWORD *)&v27[4 * v17] ); } v34[4] = v17; } return v34; } else { v5 = 4 * v3; v6 = (_DWORD *)(a1 + 20 + 4 * v3); v7 = (_DWORD *)(a2 + v5 + 20); do { if ( *--v6 != *--v7 ) { if ( *v6 < *v7 ) goto LABEL_21; goto LABEL_6; } } while ( a1 + 20 < (unsigned int)v6 ); v34 = __Balloc_D2A(0); if ( !v34 ) return v34; v34[4] = 1; v34[5] = 0; return v34; } } //----- (0042E420) -------------------------------------------------------- long double __cdecl __b2d_D2A(int a1, _DWORD *a2) { unsigned int v2; // esi int v3; // ebx unsigned int v4; // edx unsigned int v5; // ebp unsigned int v6; // eax signed int v7; // eax int v8; // eax unsigned int v9; // edi int v11; // edi int v12; // edx double v13; // [esp+0h] [ebp-1Ch] double v14; // [esp+0h] [ebp-1Ch] v2 = a1 + 20; v3 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); v4 = *(_DWORD *)(v3 - 4); v5 = v3 - 4; _BitScanReverse(&v6, v4); v7 = v6 ^ 0x1F; *a2 = 32 - v7; if ( v7 > 10 ) { v8 = v7 - 11; if ( v2 >= v5 ) { v9 = 0; if ( v8 ) { v9 = 0; HIDWORD(v13) = (v4 << v8) | 0x3FF00000; goto LABEL_5; } } else { v9 = *(_DWORD *)(v3 - 8); if ( v8 ) { v12 = (v9 >> (32 - v8)) | (v4 << v8); v9 <<= v8; HIDWORD(v13) = v12 | 0x3FF00000; if ( v2 < v3 - 8 ) v9 |= *(_DWORD *)(v3 - 12) >> (32 - v8); goto LABEL_5; } } HIDWORD(v13) = v4 | 0x3FF00000; LABEL_5: LODWORD(v13) = v9; return v13; } v11 = 0; if ( v2 < v5 ) v11 = *(_DWORD *)(v3 - 8) >> (11 - v7); LODWORD(v14) = v11 | (v4 << (v7 + 21)); HIDWORD(v14) = (v4 >> (11 - v7)) | 0x3FF00000; return v14; } //----- (0042E530) -------------------------------------------------------- int *__cdecl __d2b_D2A(double a1, _DWORD *a2, _DWORD *a3) { int *result; // eax int v5; // edi int v8; // edx int v9; // edx unsigned int v10; // ecx result = __Balloc_D2A(1); if ( result ) { _ESI = HIDWORD(a1) & 0xFFFFF; v5 = (HIDWORD(a1) >> 20) & 0x7FF; if ( v5 ) _ESI |= 0x100000u; _EDX = LODWORD(a1); if ( LODWORD(a1) ) { __asm { tzcnt ebx, edx } v8 = LODWORD(a1) >> _EBX; if ( _EBX ) { v8 |= _ESI << (32 - _EBX); _ESI >>= _EBX; } result[5] = v8; result[6] = _ESI; v9 = (_ESI != 0) + 1; result[4] = v9; if ( !v5 ) goto LABEL_8; } else { result[4] = 1; v9 = 1; __asm { tzcnt ecx, esi } _EBX = _ECX + 32; result[5] = _ESI >> _ECX; if ( !v5 ) { LABEL_8: *a2 = _EBX - 1074; _BitScanReverse(&v10, result[v9 + 4]); *a3 = 32 * v9 - (v10 ^ 0x1F); return result; } } *a2 = v5 + _EBX - 1075; *a3 = 53 - _EBX; } return result; } //----- (0042E620) -------------------------------------------------------- int __cdecl __strcp_D2A(__int64 a1) { __int64 v1; // rax char v2; // cl char v3; // cl v1 = a1 + 0x100000000LL; v2 = *(_BYTE *)HIDWORD(a1); *(_BYTE *)a1 = *(_BYTE *)HIDWORD(a1); if ( v2 ) { do { v3 = *(_BYTE *)HIDWORD(v1); LODWORD(v1) = v1 + 1; ++HIDWORD(v1); *(_BYTE *)v1 = v3; } while ( v3 ); } return v1; } //----- (0042E650) -------------------------------------------------------- float __cdecl strtof(const char *String, char **EndPtr) { char v2; // al float v3; // edx float v5; // [esp+38h] [ebp-14h] BYREF int v6[4]; // [esp+3Ch] [ebp-10h] BYREF v2 = __strtodg((unsigned __int8 *)String, (unsigned __int8 **)EndPtr, dword_4E804C, v6, (int *)&v5); switch ( v2 & 7 ) { case 1: case 5: LODWORD(v3) = (unsigned int)&unk_7FFFFF & LODWORD(v5) | ((v6[0] + 150) << 23); break; case 2: v3 = v5; break; case 3: v3 = INFINITY; break; case 4: v3 = NAN; break; default: v3 = 0.0; break; } if ( (v2 & 8) != 0 ) LODWORD(v3) |= 0x80000000; return v3; } // 4E804C: using guessed type int dword_4E804C[5]; // 42E650: using guessed type int var_10[4]; //----- (0042E6F0) -------------------------------------------------------- wint_t __cdecl btowc(int Ch) { WCHAR v2[7]; // [esp+1Eh] [ebp-Eh] BYREF if ( Ch != -1 && (__mingw_mbrtowc_codeset_init(), __mingw_mbtowc_convert((LPCCH)&Ch, 1, v2, 1) == 1) ) return v2[0]; else return -1; } // 42E6F0: using guessed type WCHAR var_E[7]; //----- (0042E750) -------------------------------------------------------- int __cdecl vsnprintf(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList) { int result; // eax int v5; // edx if ( !BufferCount ) return __mingw_pformat(0, (int)Buffer, 0, (char *)Format, (double *)ArgList); result = __mingw_pformat(0, (int)Buffer, BufferCount - 1, (char *)Format, (double *)ArgList); v5 = result; if ( result > BufferCount - 1 ) v5 = BufferCount - 1; Buffer[v5] = 0; return result; } //----- (0042E7D0) -------------------------------------------------------- void *__cdecl __mingw_realloc(unsigned int a1, size_t a2) { int v2; // ebx int v4[7]; // [esp+10h] [ebp-1Ch] BYREF v2 = a1; if ( !a1 || a1 == __mingw_memalign_base(a1, (unsigned int *)v4) ) return (void *)___msvcrt_realloc(v2, a2); if ( !a2 ) { v2 = v4[0]; return (void *)___msvcrt_realloc(v2, a2); } if ( v4[3] < a2 ) return __mingw_memalign_realloc(a1, v4, a2); *_errno() = 22; return 0; } // 1542418: using guessed type int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); //----- (0042E850) -------------------------------------------------------- int __cdecl __mingw_free(unsigned int a1) { unsigned int v1; // eax unsigned int v3[7]; // [esp+10h] [ebp-1Ch] BYREF v1 = __mingw_memalign_base(a1, v3); return ___msvcrt_free(v1); } // 1542414: using guessed type int __cdecl ___msvcrt_free(_DWORD); // 42E850: using guessed type unsigned int var_1C[7]; //----- (0042E880) -------------------------------------------------------- char *__usercall sub_42E880@(char *a1@, int a2@, __int16 a3@) { int v3; // ebp int v4; // ebx char *v5; // edx int v6; // eax char *v7; // ebp int v8; // edx int v9; // ebx char *v10; // edi int v11; // esi int v12; // esi int v13; // eax char v14; // cl char *i; // edx char *result; // eax char *v17; // esi char v18; // cl char *v19; // edi int v20; // ebp int v21; // edi int v22; // ebx int v23; // ebx char *v24; // edi char v25; // dl char *v26; // ebx int v27; // esi int v28; // ebx int v29; // ebx char *v30; // edi char v31; // dl char *v32; // ebx char *v33; // esi int C; // [esp+0h] [ebp-4Ch] int Ca; // [esp+0h] [ebp-4Ch] int v37; // [esp+24h] [ebp-28h] char *v38; // [esp+24h] [ebp-28h] char *v40; // [esp+2Ch] [ebp-20h] v3 = *a1; v4 = v3; if ( v3 != 45 ) { v5 = a1; if ( v3 != 93 ) goto LABEL_3; } v18 = a1[1]; v5 = a1 + 1; if ( v3 != a2 ) { v3 = v18; LABEL_3: v6 = v3; v7 = v5; v8 = v4; v9 = v6; while ( 1 ) { v10 = v7 + 1; v11 = v9; if ( v9 == 93 ) return 0; if ( v9 != 45 ) break; v9 = v7[1]; if ( (_BYTE)v9 != 93 ) { if ( !(_BYTE)v9 ) return 0; v19 = v7 + 2; v38 = v7; v20 = v8; v40 = v19; v21 = (char)v9; LABEL_30: while ( v20 < v21 ) { if ( (a3 & 0x4000) == 0 ) { C = v20++; v23 = tolower(C); if ( v23 != tolower(a2) ) goto LABEL_30; LABEL_33: v24 = v40; v25 = v38[2]; LABEL_34: result = v24 + 1; if ( v25 == 93 ) return result; if ( v25 == 127 ) goto LABEL_39; while ( 1 ) { do { if ( !v25 ) return 0; v25 = v24[1]; v24 = result++; if ( v25 == 93 ) return result; } while ( v25 != 127 ); LABEL_39: v25 = v24[1]; if ( (a3 & 0x20) != 0 ) { v24 = result; goto LABEL_34; } v26 = v24 + 2; v24 = result; result = v26; } } v22 = v20 - a2; ++v20; if ( !v22 ) goto LABEL_33; } v27 = v20; LABEL_43: while ( v27 > v21 ) { if ( (a3 & 0x4000) == 0 ) { Ca = v27--; v29 = tolower(Ca); if ( v29 != tolower(a2) ) goto LABEL_43; LABEL_46: v30 = v40; v31 = v38[2]; LABEL_47: result = v30 + 1; if ( v31 == 93 ) return result; if ( v31 == 127 ) goto LABEL_52; while ( 1 ) { do { if ( !v31 ) return 0; v31 = v30[1]; v30 = result++; if ( v31 == 93 ) return result; } while ( v31 != 127 ); LABEL_52: v31 = v30[1]; if ( (a3 & 0x20) != 0 ) { v30 = result; goto LABEL_47; } v32 = v30 + 2; v30 = result; result = v32; } } v28 = v27 - a2; --v27; if ( !v28 ) goto LABEL_46; } v11 = v21; v10 = v40; LABEL_8: if ( v11 == 47 || v11 == 92 ) return 0; v9 = *v10; v7 = v10; v8 = v11; goto LABEL_11; } ++v7; v8 = 45; LABEL_11: if ( (a3 & 0x4000) != 0 ) { if ( v8 == a2 ) goto LABEL_13; } else { v37 = v8; v12 = tolower(v8); v13 = tolower(a2); v8 = v37; if ( v12 == v13 ) { LABEL_13: v14 = v9; for ( i = v7; ; i = result ) { result = i + 1; if ( v14 == 93 ) return result; if ( v14 == 127 ) goto LABEL_19; while ( 1 ) { do { if ( !v14 ) return 0; v14 = i[1]; i = result++; if ( v14 == 93 ) return result; } while ( v14 != 127 ); LABEL_19: v14 = i[1]; if ( (a3 & 0x20) != 0 ) break; v17 = i + 2; i = result; result = v17; } } } } } if ( !v9 ) return 0; goto LABEL_8; } LABEL_55: result = v5 + 1; if ( v18 == 93 ) return result; if ( v18 == 127 ) goto LABEL_60; while ( v18 ) { v18 = v5[1]; v5 = result++; if ( v18 == 93 ) return result; if ( v18 == 127 ) { LABEL_60: v18 = v5[1]; if ( (a3 & 0x20) != 0 ) { v5 = result; goto LABEL_55; } v33 = v5 + 2; v5 = result; result = v33; } } return 0; } //----- (0042EBB0) -------------------------------------------------------- int __usercall sub_42EBB0@(char *a1@, _BYTE *a2@, int a3@) { char *i; // ebp _BYTE *v4; // esi char v5; // di int C; // edx char v7; // al char *v8; // ebx _BYTE *v9; // edi int v10; // eax int v11; // ebp int v12; // eax int v13; // ebp int v14; // esi int v15; // eax int v17; // edx char *v18; // eax char *v19; // ebx char *v20; // eax char *v21; // edx char *v22; // edx int v23; // [esp+10h] [ebp-2Ch] int v24; // [esp+10h] [ebp-2Ch] int v25; // [esp+10h] [ebp-2Ch] int v26; // [esp+14h] [ebp-28h] int v27; // [esp+18h] [ebp-24h] int v28; // [esp+1Ch] [ebp-20h] i = a1; v4 = a2; v5 = *a2; C = *a1; v7 = *a1; if ( v5 != 46 ) goto LABEL_2; if ( (_BYTE)C != 46 ) { if ( (a3 & 0x10000) == 0 ) { C -= 46; return C; } LABEL_2: v8 = i + 1; if ( !C ) return -v5; goto LABEL_3; } v8 = i + 1; LABEL_3: v26 = a3 & 0x20; while ( 1 ) { v9 = v4; if ( v7 == 63 ) { if ( !*v4 ) return 63; goto LABEL_30; } if ( v7 != 91 ) break; v17 = (char)*v4; if ( !*v4 ) return 91; if ( i[1] == 33 ) { v19 = i + 2; v25 = a3; v20 = sub_42E880(i + 2, v17, a3); a3 = v25; v21 = v20; v7 = i[2]; if ( v21 ) { i += 2; } else { if ( v7 == 93 ) { v7 = i[3]; v19 = i + 3; } LABEL_42: for ( i = v19 + 1; v7 != 93; v19 = i++ ) { if ( v7 == 127 ) { v7 = v19[1]; if ( v26 ) { v19 = i; goto LABEL_42; } v22 = v19 + 2; v19 = i; i = v22; } if ( !v7 ) return 93; v7 = v19[1]; } v7 = v19[1]; } } else { v24 = a3; v18 = sub_42E880(v8, v17, a3); i = v18; if ( !v18 ) return 93; v7 = *v18; a3 = v24; } LABEL_26: C = v7; v8 = i + 1; ++v4; if ( !v7 ) { v5 = v9[1]; return -v5; } } if ( v7 != 42 ) { if ( (a3 & 0x20) == 0 && C == 127 ) { C = i[1]; if ( i[1] ) v8 = i + 2; } v10 = (char)*v4; if ( !(_BYTE)v10 ) return C; v23 = (char)*v4; if ( (a3 & 0x4000) != 0 ) { v13 = C - v10; } else { v28 = a3; v27 = C; v11 = tolower(C); v12 = tolower(v23); a3 = v28; C = v27; v13 = v11 - v12; } if ( v13 ) { C -= v23; return C; } LABEL_30: v7 = *v8; i = v8; goto LABEL_26; } while ( *v8 == 42 ) ++v8; C = 0; if ( *v8 ) { v14 = a3 | 0x10000; do { v15 = sub_42EBB0(v14, v9); if ( !v15 ) break; ++v9; } while ( *(v9 - 1) ); return v15; } return C; } //----- (0042EDE0) -------------------------------------------------------- int __usercall sub_42EDE0@(char *a1@, unsigned int a2@) { char *v2; // ecx char *v3; // ebx int result; // eax int v5; // edi v2 = a1 + 1; v3 = a1; result = *a1; if ( result ) { v5 = 0; do { while ( result == 127 && (((unsigned __int8)(a2 >> 5) ^ 1) & 1) != 0 ) { v2 = v3 + 2; if ( !v3[1] ) return 0; if ( !v5 ) goto LABEL_5; LABEL_13: v3 = v2; ++v5; ++v2; result = *v3; if ( !*v3 ) return result; } if ( !v5 ) { if ( result == 42 || result == 63 ) return 1; LABEL_5: v3 = v2; v5 = result == 91; goto LABEL_6; } if ( v5 > 1 && result == 93 ) return 1; v3 = v2; if ( result != 33 ) goto LABEL_13; LABEL_6: result = *v3; ++v2; } while ( *v3 ); } return result; } //----- (0042EE80) -------------------------------------------------------- int __usercall sub_42EE80@(int a1@, _DWORD *a2@) { _DWORD *v4; // eax int v5; // ecx int v6; // edx v4 = __mingw_realloc(a2[2], 4 * (a2[1] + a2[3]) + 8); if ( !v4 ) return 1; v5 = a2[1]; v6 = a2[3]; a2[2] = v4; a2[1] = v5 + 1; v4[v6 + v5] = a1; v4[v5 + 1 + v6] = 0; return 0; } //----- (0042EEE0) -------------------------------------------------------- int __usercall sub_42EEE0@(_DWORD *a1@, _DWORD *a2@, int a3@) { int v5; // eax if ( *a1 ) ((void (*)(void))sub_42EEE0)(); v5 = a1[2]; if ( v5 && a2 ) sub_42EE80(v5, a2); if ( a1[1] ) sub_42EEE0(a3, a2); return __mingw_free((unsigned int)a1); } // 42EF08: variable 'a3' is possibly undefined //----- (0042EF30) -------------------------------------------------------- int __usercall sub_42EF30@(_DWORD *a1@) { int v2; // ebx _DWORD *v3; // eax v2 = a1[3] + 1; v3 = malloc(4 * v2); a1[2] = v3; if ( !v3 ) return 3; a1[1] = 0; if ( v2 > 0 ) { do v3[--v2] = 0; while ( v2 ); } return 0; } //----- (0042EF80) -------------------------------------------------------- int __usercall sub_42EF80@(char *a1@, unsigned int a2@, int a3@, _DWORD *a4) { size_t v4; // eax size_t v5; // edx int v6; // eax void *v7; // esp void *v8; // esp char *v9; // eax char *v10; // eax char *v11; // edi int v12; // eax void *v13; // esp void *v14; // esp char *v15; // edx char *v16; // ecx char v17; // al char v18; // al char *v19; // eax char *v20; // ebx char v21; // al char *v22; // esi int v23; // eax void *v24; // esp char v25; // bl void *v26; // esp char *v27; // edi int v28; // ecx char *v29; // eax char *v30; // edx char *v31; // esi int v32; // ecx char v33; // al bool i; // cc char *v35; // esi int v36; // ecx unsigned int v37; // edi char *v38; // eax int v39; // edx char *v40; // ecx char *v41; // edx int v42; // ebx char *v43; // eax char v44; // dl char v46; // bl char *v47; // eax char v48; // dl int v49; // eax char v50; // al char v51; // dl unsigned int v52; // edi char *v53; // eax char *v54; // ebx int (__cdecl *v55)(_DWORD, int); // edi int *v56; // eax const char *v57; // eax int v58; // eax int v59; // esi const void *v60; // edi int v61; // ecx int v62; // eax void *v63; // esp void *v64; // esp char *v65; // edx char *v66; // eax int v67; // eax void *v68; // esp char *v69; // esi void *v70; // esp char *v71; // edx char v72; // al char v73; // al char *v74; // esi int v75; // ecx char *v76; // eax size_t v77; // esi const char *v78; // eax char v79; // al size_t v80; // esi _DWORD *v81; // edi int v82; // ebx char *v83; // eax _DWORD *v84; // edx const char *v85; // eax _DWORD *v86; // eax char *v87; // edx char *v88; // edi int v89; // eax void *v90; // esp void *v91; // esp char *v92; // ecx char *v93; // edx char v94; // al _DWORD *v95; // eax char *v96; // [esp+0h] [ebp-78h] BYREF const char *v97; // [esp+4h] [ebp-74h] char String[4]; // [esp+Ch] [ebp-6Ch] BYREF int v100; // [esp+10h] [ebp-68h] char v101; // [esp+17h] [ebp-61h] size_t v102; // [esp+18h] [ebp-60h] char *v103; // [esp+1Ch] [ebp-5Ch] char *v104; // [esp+20h] [ebp-58h] const char **v105; // [esp+24h] [ebp-54h] _DWORD *v106; // [esp+28h] [ebp-50h] size_t Size; // [esp+2Ch] [ebp-4Ch] char *v108; // [esp+30h] [ebp-48h] char *v109; // [esp+34h] [ebp-44h] char *v110; // [esp+38h] [ebp-40h] char *Str; // [esp+3Ch] [ebp-3Ch] int (__cdecl *v112)(_DWORD, int); // [esp+40h] [ebp-38h] int v113; // [esp+44h] [ebp-34h] unsigned int v114; // [esp+48h] [ebp-30h] int v115; // [esp+4Ch] [ebp-2Ch] _DWORD v116[2]; // [esp+50h] [ebp-28h] BYREF char **v117; // [esp+58h] [ebp-20h] int v118; // [esp+5Ch] [ebp-1Ch] Str = a1; v114 = a2; v112 = (int (__cdecl *)(_DWORD, int))a3; if ( (a2 & 0x400) == 0 ) { LABEL_2: v109 = (char *)&v96; v4 = strlen(Str); v5 = v4 + 1; v6 = 16 * ((v4 + 16) >> 4); v7 = alloca(v6); v8 = alloca(v6); v9 = (char *)memcpy(String, Str, v5); v10 = __mingw_dirname(v9); v118 = 0; v110 = v10; v11 = v10; v115 = sub_42EF30(v116); if ( !v115 ) { if ( v11 && sub_42EDE0(v11, v114) ) { v115 = sub_42EF80(v116); } else { v12 = 16 * ((strlen(v110) + 16) >> 4); v13 = alloca(v12); v14 = alloca(v12); v15 = v110; v16 = String; do { while ( 1 ) { v17 = *v15; if ( *v15 == 127 ) break; ++v16; ++v15; *(v16 - 1) = v17; if ( !v17 ) goto LABEL_9; } v18 = v15[1]; ++v16; v15 += 2; *(v16 - 1) = v18; } while ( v18 ); LABEL_9: v19 = strdup(String); v115 = 1; if ( !v19 ) return v115; v115 = sub_42EE80((int)v19, v116); } if ( !v115 ) { v20 = Str; v21 = Str[1]; if ( v21 == 47 || v21 == 92 || *v110 != 46 || v110[1] ) { v20 = &Str[strlen(v110)]; v50 = *v20; if ( Str >= v20 ) { LABEL_87: if ( v50 != 47 && v50 != 92 ) { v101 = 92; goto LABEL_93; } } else { while ( v50 != 47 ) { if ( v50 != 92 ) { v50 = *--v20; if ( Str != v20 ) continue; } goto LABEL_87; } } do { do { ++v20; v51 = v50; v50 = *v20; } while ( *v20 == 47 ); } while ( v50 == 92 ); v101 = v51; } else { if ( (v114 & 0x10) != 0 ) { v88 = Str; v115 = sub_42EDE0(Str, v114); if ( !v115 ) { v89 = 16 * ((strlen(v88) + 16) >> 4); v90 = alloca(v89); v91 = alloca(v89); v92 = v88; v93 = String; do { v94 = *v92; if ( *v92 == 127 ) { v94 = v92[1]; v92 += 2; } else { ++v92; } *v93++ = v94; } while ( v94 ); v76 = strdup(String); if ( v76 && a4 ) { sub_42EE80((int)v76, a4); v52 = (unsigned int)v117; } else { LABEL_126: v52 = (unsigned int)v117; } goto LABEL_125; } v20 = Str; } v101 = 92; v110 = 0; } LABEL_93: v52 = (unsigned int)v117; v115 = 2; v53 = *v117; if ( *v117 ) { v108 = v20; v54 = (char *)v117; Str = (char *)(v114 & 0x8000); while ( 1 ) { if ( v115 == 1 ) goto LABEL_98; v113 = __mingw_opendir(v53); if ( v113 ) { Size = 0; if ( v110 ) Size = strlen(*(const char **)v54); v106 = 0; v102 = Size + 2; while ( 1 ) { v58 = __mingw_readdir(v113); v59 = v58; if ( !v58 ) break; if ( !Str || *(_DWORD *)(v58 + 8) == 16 ) { v60 = (const void *)(v58 + 12); if ( !sub_42EBB0(v108, (_BYTE *)(v58 + 12), v114) ) { v61 = *(unsigned __int16 *)(v59 + 6); v105 = (const char **)&v96; v62 = 16 * ((v61 + v102 + 15) >> 4); v63 = alloca(v62); v64 = alloca(v62); v65 = String; v104 = String; v66 = String; if ( Size ) { v77 = Size; v78 = *(const char **)v54; v100 = v61; v103 = String; memcpy(String, v78, Size); v79 = String[v77 - 1]; v65 = v103; v61 = v100; if ( v79 == 47 || v79 == 92 ) { v66 = &v103[Size]; } else { v80 = Size; v103[Size] = v101; v66 = &v65[v80 + 1]; } } v103 = v65; memcpy(v66, v60, v61 + 1); v67 = 16 * ((strlen(v103) + 16) >> 4); v68 = alloca(v67); v69 = v104; v70 = alloca(v67); v103 = String; v71 = String; do { while ( 1 ) { v72 = *v69; if ( *v69 == 127 ) break; ++v71; ++v69; *(v71 - 1) = v72; if ( !v72 ) goto LABEL_114; } v73 = v69[1]; ++v71; v69 += 2; *(v71 - 1) = v73; } while ( v73 ); LABEL_114: v74 = strdup(v103); if ( v74 ) { v115 = v115 == 2 ? 0 : v115; if ( (v114 & 0x40) != 0 ) { if ( a4 ) sub_42EE80((int)v74, a4); } else { v81 = v106; if ( v106 ) { v104 = v54; v82 = v114 & 0x4000; while ( 1 ) { v85 = (const char *)v81[2]; v96 = v74; v97 = v85; if ( v82 ) v83 = (char *)strcoll(v96, v97); else v83 = (char *)stricoll(v96, v97); v84 = (_DWORD *)v81[1]; if ( (int)v83 <= 0 ) v84 = (_DWORD *)*v81; if ( !v84 ) break; v81 = v84; } v54 = v104; v104 = v83; v86 = malloc(0xCu); v87 = v104; if ( v86 ) { v86[2] = v74; v86[1] = 0; *v86 = 0; if ( (int)v87 <= 0 ) *v81 = v86; else v81[1] = v86; } } else { v106 = malloc(0xCu); if ( v106 ) { v95 = v106; v106[2] = v74; v95[1] = 0; *v95 = 0; } } } } else { v115 = 3; } } } } __mingw_closedir(v113); if ( v106 ) sub_42EEE0(v106, a4, v75); goto LABEL_99; } if ( (v114 & 4) != 0 || (v55 = v112) != 0 && (v56 = _errno(), v55(*(_DWORD *)v54, *v56)) ) LABEL_98: v115 = 1; LABEL_99: v57 = *(const char **)v54; v54 += 4; __mingw_free((unsigned int)v57); v53 = *(char **)v54; if ( !*(_DWORD *)v54 ) goto LABEL_126; } } LABEL_125: __mingw_free(v52); return v115; } } return v115; } v108 = (char *)&v96; v22 = a1; v23 = 16 * ((strlen(a1) + 16) >> 4); v24 = alloca(v23); v25 = *v22; v26 = alloca(v23); v27 = String; v109 = String; while ( 1 ) { LABEL_19: v28 = (int)(v22 + 1); if ( v25 == 127 ) goto LABEL_23; while ( v25 != 123 ) { while ( 1 ) { *v27 = v25; if ( !v25 ) goto LABEL_2; v25 = v22[1]; v22 = (char *)v28; ++v27; ++v28; if ( v25 != 127 ) break; LABEL_23: v25 = v22[1]; *v27 = 127; if ( v25 ) { v27[1] = v25; v22 += 2; v25 = *v22; v27 += 2; goto LABEL_19; } v29 = v22 + 2; ++v27; v22 = (char *)v28; v28 = (int)v29; } } v25 = v22[1]; v30 = v22; v110 = v22; v115 = v28; v31 = v22 + 1; v32 = 1; v33 = v25; v113 = 44; for ( i = v25 <= 123; v33 == 123; i = v33 <= 123 ) { v33 = v30[2]; ++v32; v30 = v31; LABEL_33: v31 = v30 + 1; } if ( !i ) break; if ( v33 ) { if ( v33 != 44 || v32 != 1 ) { LABEL_31: v33 = v30[2]; LABEL_32: v30 = v31; goto LABEL_33; } v33 = v30[2]; v113 = 123; v30 = v31; goto LABEL_33; } v36 = v115; LABEL_57: *v27 = 123; v22 = (char *)v36; ++v27; } if ( v33 != 125 ) { if ( v33 != 127 ) goto LABEL_31; v33 = v30[2]; if ( !v33 ) goto LABEL_32; v33 = v30[3]; v30 += 2; goto LABEL_33; } if ( --v32 ) goto LABEL_31; v35 = v110; v36 = v115; if ( v113 != 123 ) goto LABEL_57; v115 = (int)v27; v37 = v114; while ( 2 ) { v38 = (char *)v115; v39 = 1; if ( v25 != 127 ) { LABEL_40: ++v35; v40 = v38; goto LABEL_41; } while ( 2 ) { v46 = v35[2]; *v38 = 127; v40 = v38 + 2; v38[1] = v46; if ( !v46 ) { v38[2] = 0; return 1; } v25 = v35[3]; v35 += 3; LABEL_41: if ( v25 != 125 ) { if ( v25 == 44 && v39 == 1 ) { v41 = v35; v42 = 1; while ( 1 ) { v43 = v41 + 1; v44 = v41[1]; if ( v44 == 127 ) break; LABEL_67: switch ( v44 ) { case 123: ++v42; v41 = v43; break; case 125: if ( !--v42 ) goto LABEL_72; v41 = v43; break; case 0: goto LABEL_49; default: v41 = v43; break; } } while ( v43[1] ) { v44 = v43[2]; v43 += 2; if ( v44 != 127 ) goto LABEL_67; } LABEL_49: *v40 = 0; return 1; } v38 = v40 + 1; if ( v25 == 123 ) { *v40 = 123; ++v39; goto LABEL_53; } *v40 = v25; if ( v25 ) { LABEL_53: v25 = v35[1]; if ( v25 != 127 ) goto LABEL_40; continue; } return 1; } break; } if ( --v39 ) { *v40 = 125; v38 = v40 + 1; goto LABEL_53; } v43 = v35; LABEL_72: v47 = v43 + 1; do { v48 = *v47; ++v40; ++v47; *(v40 - 1) = v48; } while ( v48 ); v37 |= 1u; v49 = sub_42EF80(a4); if ( v49 == 1 ) return 1; if ( *v35 == 44 ) { v25 = v35[1]; continue; } return v49; } } // 42F641: variable 'v75' is possibly undefined // 42EF80: using guessed type _DWORD var_28[2]; // 42EF80: using guessed type char String[4]; //----- (0042F820) -------------------------------------------------------- int *__cdecl __mingw_glob(char *Str, int a2, int a3, char **a4) { char *v4; // ebx int v5; // ecx int v7; // eax void *v8; // esp void *v9; // esp _BYTE *v10; // edx char v11; // al char v12; // al char *v13; // eax int v14; // [esp+0h] [ebp-38h] BYREF _BYTE v15[16]; // [esp+4h] [ebp-34h] BYREF int v16; // [esp+14h] [ebp-24h] char *String; // [esp+18h] [ebp-20h] int *v18; // [esp+1Ch] [ebp-1Ch] v4 = Str; if ( a4 && (a2 & 2) == 0 ) a4[3] = 0; if ( *a4 != "glob-1.0-mingw32" ) { sub_42EF30(a4); *a4 = "glob-1.0-mingw32"; } v5 = sub_42EF80(Str, a2, a3, a4); if ( v5 == 2 && (a2 & 0x10) != 0 ) { v16 = 2; v18 = &v14; v7 = 16 * ((strlen(Str) + 16) >> 4); v8 = alloca(v7); v9 = alloca(v7); String = v15; v10 = v15; do { while ( 1 ) { v11 = *v4; if ( *v4 == 127 ) break; ++v10; ++v4; *(v10 - 1) = v11; if ( !v11 ) goto LABEL_13; } v12 = v4[1]; ++v10; v4 += 2; *(v10 - 1) = v12; } while ( v12 ); LABEL_13: v16 = 2; v13 = strdup(String); v5 = v16; if ( v13 ) { v18 = (int *)v16; sub_42EE80((int)v13, a4); return v18; } } return (int *)v5; } //----- (0042F920) -------------------------------------------------------- int __cdecl __mingw_globfree(int a1) { int v1; // edi int v2; // ebx int v3; // edi unsigned int v4; // eax int result; // eax if ( *(char **)a1 == "glob-1.0-mingw32" ) { v1 = *(_DWORD *)(a1 + 4); v2 = *(_DWORD *)(a1 + 12); if ( v1 > 0 ) { v3 = v2 + v1; do { v4 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4 * v2++); __mingw_free(v4); } while ( v3 != v2 ); } return __mingw_free(*(_DWORD *)(a1 + 8)); } return result; } //----- (0042F980) -------------------------------------------------------- char *__cdecl __mingw_dirname(char *Source) { char *v1; // eax const char *v2; // ebx size_t v3; // esi char *v4; // esi size_t v6; // edx int v7; // eax void *v8; // esp void *v9; // esp size_t v10; // eax _WORD *v11; // eax wchar_t v12; // dx _WORD *v13; // ecx _WORD *v14; // esi __int16 v15; // dx _WORD *v16; // eax wchar_t v17; // ax wchar_t *p_Dest; // ecx wchar_t v19; // dx wchar_t *v20; // edx wchar_t v21; // bx size_t v22; // eax size_t v23; // eax __int16 v24; // dx int v25; // [esp+0h] [ebp-38h] BYREF wchar_t Dest; // [esp+Ch] [ebp-2Ch] BYREF __int16 v27; // [esp+Eh] [ebp-2Ah] size_t v28[2]; // [esp+10h] [ebp-28h] BYREF wchar_t v29; // [esp+1Ah] [ebp-1Eh] size_t MaxCount; // [esp+1Ch] [ebp-1Ch] v1 = setlocale(2, 0); v2 = v1; if ( v1 ) v2 = strdup(v1); setlocale(2, Locale); if ( !Source || !*Source ) goto LABEL_5; v28[1] = (size_t)&v25; v6 = mbstowcs(0, Source, 0); v7 = 16 * ((2 * v6 + 17) >> 4); v8 = alloca(v7); v9 = alloca(v7); v10 = mbstowcs(&Dest, Source, v6); v28[0] = v10; *(&Dest + v10) = 0; if ( v10 <= 1 ) { v29 = Dest; MaxCount = (size_t)&Dest; } else { v29 = Dest; MaxCount = (size_t)&Dest; if ( Dest == 47 || Dest == 92 ) { if ( v29 == v27 && !LOWORD(v28[0]) ) { setlocale(2, v2); __mingw_free((unsigned int)v2); return Source; } } else if ( v27 == 58 ) { MaxCount = (size_t)v28; v29 = v28[0]; } } if ( v29 ) { v11 = (_WORD *)MaxCount; v12 = v29; v13 = (_WORD *)MaxCount; while ( v12 != 47 ) { v14 = v11; if ( v12 == 92 ) goto LABEL_20; LABEL_16: v12 = v14[1]; ++v11; if ( !v12 ) goto LABEL_24; } v15 = *v11; if ( *v11 != 47 ) goto LABEL_21; do { do { ++v11; LABEL_20: v15 = *v11; } while ( *v11 == 47 ); LABEL_21: ; } while ( v15 == 92 ); v14 = v11; if ( v15 ) { v13 = v11; goto LABEL_16; } LABEL_24: if ( MaxCount >= (unsigned int)v13 ) { if ( v29 != 47 && v29 != 92 ) *(_WORD *)MaxCount = 46; *(_WORD *)(MaxCount + 2) = 0; MaxCount = wcstombs(0, &Dest, 0) + 1; dword_1541CC0 = (int)__mingw_realloc(dword_1541CC0, MaxCount); v4 = (char *)dword_1541CC0; wcstombs((char *)dword_1541CC0, &Dest, MaxCount); goto LABEL_29; } while ( 1 ) { v16 = v13--; if ( MaxCount >= (unsigned int)v13 ) break; if ( *v13 != 47 && *v13 != 92 ) goto LABEL_33; } if ( (_WORD *)MaxCount == v13 && (v29 == 47 || v29 == 92) && v13[1] == v29 ) { v24 = v13[2]; if ( v24 != 47 && v24 != 92 ) v13 = v16; } LABEL_33: v13[1] = 0; v17 = Dest; p_Dest = &Dest; if ( Dest == 47 || Dest == 92 ) { do { do { v19 = p_Dest[1]; ++p_Dest; } while ( v19 == 47 ); } while ( v19 == 92 ); if ( (char *)p_Dest - (char *)&Dest > 4 ) goto LABEL_38; } if ( v27 != Dest ) LABEL_38: p_Dest = &Dest; else v17 = *p_Dest; if ( v17 ) { MaxCount = (size_t)v2; v20 = p_Dest; while ( 1 ) { *p_Dest++ = v17; if ( v17 == 47 ) break; v21 = v20[1]; if ( v17 == 92 ) { ++v20; goto LABEL_46; } v17 = v20[1]; ++v20; LABEL_43: if ( !v17 ) { v2 = (const char *)MaxCount; goto LABEL_58; } } v21 = *v20; LABEL_46: if ( v21 == 92 || (v17 = v21, v21 == 47) ) { do { do { v17 = v20[1]; ++v20; } while ( v17 == 47 ); } while ( v17 == 92 ); } goto LABEL_43; } LABEL_58: v22 = v28[0]; *p_Dest = 0; v23 = wcstombs(Source, &Dest, v22); v4 = Source; if ( v23 != -1 ) Source[v23] = 0; LABEL_29: setlocale(2, v2); __mingw_free((unsigned int)v2); } else { LABEL_5: v3 = wcstombs(0, L".", 0) + 1; dword_1541CC0 = (int)__mingw_realloc(dword_1541CC0, v3); wcstombs((char *)dword_1541CC0, L".", v3); setlocale(2, v2); __mingw_free((unsigned int)v2); return (char *)dword_1541CC0; } return v4; } // 1541CC0: using guessed type int dword_1541CC0; //----- (0042FDA0) -------------------------------------------------------- HANDLE __usercall sub_42FDA0@(const CHAR *lpFileName@, int a2@) { HANDLE FirstFileA; // esi _BYTE *v4; // ecx CHAR v5; // al __int16 i; // ax unsigned __int16 v7; // ax bool v8; // cf DWORD dwFileAttributes; // eax int LastError; // ebx struct _WIN32_FIND_DATAA FindFileData; // [esp+10h] [ebp-14Ch] BYREF FirstFileA = FindFirstFileA(lpFileName, &FindFileData); if ( FirstFileA == (HANDLE)-1 ) { LastError = GetLastError(); *_errno() = LastError; if ( LastError == 3 ) { *_errno() = 2; } else if ( *_errno() == 267 ) { *_errno() = 20; } else if ( *_errno() != 2 ) { *_errno() = 22; } return FirstFileA; } v4 = (_BYTE *)(a2 + 12); *(_WORD *)(a2 + 6) = 0; v5 = FindFileData.cFileName[0]; *(_BYTE *)(a2 + 12) = FindFileData.cFileName[0]; if ( v5 ) { for ( i = 0; ; i = *(_WORD *)(a2 + 6) ) { v7 = i + 1; *(_WORD *)(a2 + 6) = v7; v8 = v7 < 0x104u; LOBYTE(v7) = FindFileData.cFileName[v7]; v4 += v8; *v4 = v7; if ( !(_BYTE)v7 ) break; } } dwFileAttributes = FindFileData.dwFileAttributes; LOBYTE(dwFileAttributes) = FindFileData.dwFileAttributes & 0x58; if ( dwFileAttributes <= 0x10 ) { *(_DWORD *)(a2 + 8) = dwFileAttributes; return FirstFileA; } *(_DWORD *)(a2 + 8) = 24; return FirstFileA; } //----- (0042FE90) -------------------------------------------------------- BOOL __usercall sub_42FE90@(void *hFindFile@, int a2@) { BOOL NextFileA; // esi _BYTE *v4; // ecx CHAR v5; // al __int16 i; // ax unsigned __int16 v7; // ax bool v8; // cf DWORD dwFileAttributes; // eax struct _WIN32_FIND_DATAA FindFileData; // [esp+10h] [ebp-14Ch] BYREF NextFileA = FindNextFileA(hFindFile, &FindFileData); if ( NextFileA ) { v4 = (_BYTE *)(a2 + 12); *(_WORD *)(a2 + 6) = 0; v5 = FindFileData.cFileName[0]; *(_BYTE *)(a2 + 12) = FindFileData.cFileName[0]; if ( v5 ) { for ( i = 0; ; i = *(_WORD *)(a2 + 6) ) { v7 = i + 1; *(_WORD *)(a2 + 6) = v7; v8 = v7 < 0x104u; LOBYTE(v7) = FindFileData.cFileName[v7]; v4 += v8; *v4 = v7; if ( !(_BYTE)v7 ) break; } } dwFileAttributes = FindFileData.dwFileAttributes; LOBYTE(dwFileAttributes) = FindFileData.dwFileAttributes & 0x58; if ( dwFileAttributes <= 0x10 ) { *(_DWORD *)(a2 + 8) = dwFileAttributes; return NextFileA; } *(_DWORD *)(a2 + 8) = 24; return NextFileA; } else { if ( GetLastError() == 18 ) return NextFileA; *_errno() = 2; return 0; } } //----- (0042FF50) -------------------------------------------------------- int __cdecl __mingw_opendir(char *Path) { char *v1; // edx int v2; // ecx unsigned int v3; // eax int v4; // edx char v5; // cl char *v6; // eax int v7; // ecx unsigned int v8; // eax unsigned int v9; // ebx char *v10; // eax int v11; // ebp unsigned int v12; // ecx _BYTE *v13; // eax HANDLE v14; // eax char *Buffer; // [esp+0h] [ebp-13Ch] _BYTE v17[4]; // [esp+18h] [ebp-124h] char v18[288]; // [esp+1Ch] [ebp-120h] BYREF if ( !Path ) { v11 = 0; *_errno() = 22; return v11; } if ( *Path ) { _fullpath(v18, Path, 0x104u); v1 = v18; if ( v18[0] ) { do { v2 = *(_DWORD *)v1; v1 += 4; v3 = ~v2 & (v2 - 16843009) & 0x80808080; } while ( !v3 ); if ( (~v2 & (v2 - 16843009) & 0x8080) == 0 ) { v3 >>= 16; v1 += 2; } v4 = &v1[-__CFADD__((_BYTE)v3, (_BYTE)v3) - 3] - v18; v5 = v17[v4 + 3]; v6 = &v18[v4]; if ( v5 != 47 && v5 != 92 ) { *(_WORD *)v6 = 92; v6 = &v18[v4 + 1]; } } else { do { v7 = *(_DWORD *)v1; v1 += 4; v8 = ~v7 & (v7 - 16843009) & 0x80808080; } while ( !v8 ); if ( (~v7 & (v7 - 16843009) & 0x8080) == 0 ) { v8 >>= 16; v1 += 2; } v6 = &v1[-__CFADD__((_BYTE)v8, (_BYTE)v8) - 3]; } *(_WORD *)v6 = 42; v9 = strlen(v18); v10 = (char *)malloc(v9 + 284); v11 = (int)v10; if ( v10 ) { v12 = v9 + 1; v13 = v10 + 280; if ( v9 + 1 < 4 ) { if ( v9 != -1 ) { *v13 = v18[0]; if ( (v12 & 2) != 0 ) *(_WORD *)&v13[v12 - 2] = *(_WORD *)&v17[v12 + 2]; } } else { *(_DWORD *)&v13[v12 - 4] = *(_DWORD *)&v17[v12]; qmemcpy(v13, v18, 4 * (v9 >> 2)); } v14 = sub_42FDA0(v13, v11); *(_DWORD *)(v11 + 272) = v14; if ( v14 == (HANDLE)-1 ) { Buffer = (char *)v11; v11 = 0; __mingw_free((unsigned int)Buffer); } else { *(_DWORD *)v11 = 0; *(_DWORD *)(v11 + 276) = 0; *(_WORD *)(v11 + 4) = 272; } } else { *_errno() = 12; } return v11; } *_errno() = 2; return 0; } // 42FF50: using guessed type char var_120[288]; //----- (00430150) -------------------------------------------------------- int __cdecl __mingw_readdir(int a1) { int v1; // edx int v2; // ebx if ( a1 ) { v1 = *(_DWORD *)(a1 + 276); v2 = a1; *(_DWORD *)(a1 + 276) = v1 + 1; if ( v1 > 0 ) return sub_42FE90(*(void **)(a1 + 272), a1) ? a1 : 0; } else { v2 = 0; *_errno() = 9; } return v2; } //----- (004301A0) -------------------------------------------------------- int __cdecl __mingw_closedir(unsigned int a1) { if ( a1 && FindClose(*(HANDLE *)(a1 + 272)) ) { __mingw_free(a1); return 0; } else { *_errno() = 9; return -1; } } //----- (004301F0) -------------------------------------------------------- _DWORD *__cdecl __mingw_rewinddir(int a1) { _DWORD *result; // eax if ( a1 && FindClose(*(HANDLE *)(a1 + 272)) ) { result = sub_42FDA0((const CHAR *)(a1 + 280), a1); *(_DWORD *)(a1 + 272) = result; if ( result != (_DWORD *)-1 ) *(_DWORD *)(a1 + 276) = 0; } else { result = _errno(); *result = 9; } return result; } //----- (00430250) -------------------------------------------------------- int __cdecl __mingw_telldir(int a1) { if ( a1 ) return *(_DWORD *)(a1 + 276); *_errno() = 9; return -1; } //----- (00430280) -------------------------------------------------------- int *__cdecl __mingw_seekdir(int a1, int a2) { int *result; // eax if ( a2 < 0 ) { result = _errno(); *result = 22; } else { result = __mingw_rewinddir(a1); if ( a2 && *(_DWORD *)(a1 + 272) != -1 ) { do { result = (int *)(*(_DWORD *)(a1 + 276) + 1); *(_DWORD *)(a1 + 276) = result; if ( (int)result >= a2 ) break; result = (int *)sub_42FE90(*(void **)(a1 + 272), a1); } while ( result ); } } return result; } //----- (00430300) -------------------------------------------------------- int __mingw_mbrtowc_codeset_init() { int v0; // ebx v0 = __mb_codeset_for_locale(); *__emutls_get_address(dword_4E8060) = v0; return v0; } // 4E8060: using guessed type size_t dword_4E8060[4]; //----- (00430320) -------------------------------------------------------- UINT __cdecl __mingw_mbrlen_cur_max_init(UINT a1) { UINT v1; // ebx v1 = __mb_cur_max_for_codeset(a1); *__emutls_get_address(dword_4E8070) = v1; return v1; } // 4E8070: using guessed type size_t dword_4E8070[4]; //----- (00430350) -------------------------------------------------------- int __mingw_mbrlen_cur_max() { return *__emutls_get_address(dword_4E8070); } // 4E8070: using guessed type size_t dword_4E8070[4]; //----- (00430370) -------------------------------------------------------- int __cdecl __mingw_mbtowc_convert(LPCCH lpMultiByteStr, int a2, LPWSTR lpWideCharStr, int cchWideChar) { DWORD dwFlags; // edi UINT *address; // esi int v6; // ebp dwFlags = 8; address = __emutls_get_address(dword_4E8060); do { SetLastError(0); v6 = MultiByteToWideChar(*address, dwFlags, lpMultiByteStr, a2 == 0 ? -1 : a2, lpWideCharStr, cchWideChar); if ( v6 ) break; dwFlags = 0; } while ( GetLastError() == 1004 ); return v6; } // 4E8060: using guessed type size_t dword_4E8060[4]; //----- (00430400) -------------------------------------------------------- int __cdecl __mingw_mbrscan_begin(_WORD **a1, int *a2, int *a3, unsigned int *a4) { unsigned int v4; // eax unsigned int v5; // esi int v6; // ebx unsigned int *address; // eax int v8; // edx unsigned int *v9; // edi CHAR v10; // al unsigned int v11; // ecx int v12; // eax _WORD *v13; // edx CHAR *v15; // ebx unsigned int v16; // edx _WORD *v17; // eax int v18; // [esp+14h] [ebp-38h] int v19; // [esp+18h] [ebp-34h] int v20; // [esp+1Ch] [ebp-30h] int v21; // [esp+1Ch] [ebp-30h] WCHAR v22[2]; // [esp+24h] [ebp-28h] BYREF CHAR v23[4]; // [esp+28h] [ebp-24h] BYREF int v24; // [esp+2Ch] [ebp-20h] v19 = 0; v4 = *a4; if ( !*a4 ) return v19; v24 = 0; *(_DWORD *)v23 = v4; *a4 = 0; if ( (v4 & 0xFC00) == 0xD800 ) { v16 = HIWORD(v4); if ( (HIWORD(v4) & 0xFC00) == 0xDC00 ) { if ( !a1 ) return 1; v17 = *a1; if ( !*a1 ) return 1; *a1 = v17 + 1; *v17 = v16; if ( !*a3 ) return 1; --*a3; return 1; } } v5 = 0; if ( (_BYTE)v4 ) { do ++v5; while ( v23[v5] ); } v6 = 0; v20 = *a2; address = __emutls_get_address(dword_4E8070); v18 = v5; v8 = v20; v19 = 0; v9 = address; while ( 1 ) { while ( 1 ) { v10 = *(_BYTE *)(v8 + v6); v11 = *v9; ++v6; if ( !v10 ) break; if ( v5 >= v11 ) goto LABEL_13; v23[v5++] = v10; } if ( v5 < v11 ) v23[v5] = 0; LABEL_13: while ( 1 ) { v12 = __mingw_mbtowc_convert(v23, v6, v22, 2); if ( v12 ) break; if ( v6 >= *v9 ) goto LABEL_32; ++v6; } if ( v12 > 1 && ((v22[0] & 0xFC00) != 0xD800 || (v22[1] & 0xFC00) != 0xDC00) ) break; if ( a1 ) { v13 = *a1; if ( *a1 ) { *a1 = v13 + 1; *v13 = v22[0]; v21 = *a3; if ( *a3 < (unsigned int)v12 ) { if ( v12 > 1 ) { *a4 = *(_DWORD *)v22; return 1; } } else { if ( v12 > 1 ) { *a1 = v13 + 2; v13[1] = v22[1]; } *a3 = v21 - v12; } } } v19 += v12; v8 = *a2; if ( v6 >= v18 ) { *a2 = v8 + v6 - v18; return v19; } v23[v18] = 0; if ( v23[0] ) { v5 = 0; v15 = &v23[v6]; do { v23[v5] = v15[v5]; ++v5; } while ( v23[v5] ); v18 = v5; v6 = 0; } else { v18 = 0; v6 = 0; v5 = 0; } } LABEL_32: *_errno() = 42; return -1; } // 4E8070: using guessed type size_t dword_4E8070[4]; //----- (00430690) -------------------------------------------------------- int __cdecl __mingw_mbtowc_copy(LPWSTR a1, LPCCH a2, unsigned int a3) { WCHAR *v5; // esi unsigned int v6; // ebx int v7; // eax int v9; // eax unsigned int v10; // edx unsigned int v11; // [esp+18h] [ebp-34h] __int16 v12[16]; // [esp+2Ch] [ebp-20h] BYREF v11 = 0; if ( a3 ) { while ( 1 ) { if ( !a1 || (v5 = a1, (int)(a3 - v11) <= 1) ) v5 = (WCHAR *)v12; v6 = 0; while ( 1 ) { v7 = __mingw_mbtowc_convert(a2, ++v6, v5, 2); if ( v7 ) break; if ( *__emutls_get_address(dword_4E8070) <= v6 ) { *_errno() = 42; return -1; } } if ( !*v5 ) break; if ( (int)(a3 - v11) >= v7 ) { v11 += v7; if ( a1 ) { if ( v5 == (WCHAR *)v12 ) { if ( v7 > 0 ) { v9 = 2 * v7; v10 = 0; do { a1[v10 / 2] = v12[v10 / 2]; v10 += 2; } while ( v9 != v10 ); a1 = (LPWSTR)((char *)a1 + v9); } } else { a1 += v7; } } a2 += v6; if ( a3 > v11 ) continue; } return v11; } if ( a1 ) *a1 = 0; } return v11; } // 4E8070: using guessed type size_t dword_4E8070[4]; //----- (004307B0) -------------------------------------------------------- size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State) { const char *v4; // eax mbstate_t *v7; // ebx v4 = SrcCh; v7 = State; if ( !SrcCh ) { SizeInBytes = 1; DstCh = 0; v4 = (const char *)&unk_4EFF94; } if ( !State ) v7 = (mbstate_t *)&unk_1541CC4; return __mingw_mbrtowc_handler(DstCh, (int)v4, SizeInBytes, v7); } //----- (00430800) -------------------------------------------------------- size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State) { mbstate_t *v3; // ebx int v4; // eax unsigned int Wchar; // eax size_t result; // eax int v7; // eax WCHAR *v8; // edx int v9; // [esp+Ch] [ebp-20h] WCHAR v10; // [esp+1Ah] [ebp-12h] BYREF __int16 v11[8]; // [esp+1Ch] [ebp-10h] BYREF v3 = State; v4 = __mingw_wctomb_codeset_init(); __mingw_wctomb_cur_max_init(v4); if ( !State ) v3 = (mbstate_t *)&unk_1541CC8; Wchar = v3->_Wchar; v10 = Source; if ( Wchar ) { if ( (Wchar & 0xFC00) != 55296 || (Source & 0xFC00) != 0xDC00 ) { v3->_Wchar = 0; *_errno() = 42; return -1; } v3->_Wchar = 0; v11[0] = Wchar; v11[1] = Source; v7 = __mingw_wctomb_cur_max(); v9 = 2; v8 = (WCHAR *)v11; return __mingw_wctomb_convert(Dest, v7, v8, v9); } if ( !Dest ) return 1; if ( (Source & 0xFC00) == 0xD800 ) { result = 0; v3->_Wchar = Source; } else { if ( (Source & 0xFC00) != 0xDC00 ) { v7 = __mingw_wctomb_cur_max(); v9 = 1; v8 = &v10; return __mingw_wctomb_convert(Dest, v7, v8, v9); } *_errno() = 42; return -1; } return result; } //----- (00430920) -------------------------------------------------------- int __cdecl wctob(wint_t WCh) { WCHAR v2[9]; // [esp+1Ch] [ebp-20h] BYREF CHAR v3[13]; // [esp+2Fh] [ebp-Dh] BYREF v2[0] = WCh; __mingw_wctomb_codeset_init(); if ( __mingw_wctomb_convert(v3, 1, v2, 1) == 1 ) return (unsigned __int8)v3[0]; else return -1; } // 430920: using guessed type WCHAR var_20[9]; // 430920: using guessed type CHAR var_D[13]; //----- (00430970) -------------------------------------------------------- wctype_t __cdecl wctype(const char *name) { const char *Str2; // eax int v2; // ebx Str2 = "alnum"; v2 = 0; while ( strcmp(name, Str2) ) { if ( ++v2 == 11 ) return 0; Str2 = (&off_4F0000)[2 * v2]; } return word_4F0004[4 * v2]; } // 4F0000: using guessed type char *off_4F0000; // 4F0004: using guessed type __int16 word_4F0004[]; //----- (004309C0) -------------------------------------------------------- wchar_t *__cdecl wmemchr(const wchar_t *S, wchar_t C, size_t N) { wchar_t *result; // eax size_t v4; // edx result = (wchar_t *)S; v4 = N; if ( !S || !N ) return 0; while ( *result != C ) { ++result; if ( !--v4 ) return 0; } return result; } //----- (00430A00) -------------------------------------------------------- int __cdecl wmemcmp(const wchar_t *S1, const wchar_t *S2, size_t N) { size_t v3; // edi const wchar_t *v4; // edx const wchar_t *v5; // eax int v6; // esi v3 = N; v4 = S1; v5 = S2; if ( !N || S1 == S2 ) return 0; if ( (S1 != 0) != (S2 != 0) ) return S2 == 0 ? 1 : -1; while ( 1 ) { v6 = *v5; if ( *v4 != (_WORD)v6 ) break; ++v4; ++v5; if ( !--v3 ) return 0; } return *v4 - v6; } //----- (00430A70) -------------------------------------------------------- wchar_t *__cdecl wmemcpy(wchar_t *S1, const wchar_t *S2, size_t N) { const wchar_t *v3; // esi size_t v4; // eax wchar_t *v5; // edi v3 = S2; v4 = N; if ( N != 0 && S2 != 0 && S1 ) { v5 = S1; do { *v5++ = *v3++; --v4; } while ( v4 ); } return S1; } //----- (00430AB0) -------------------------------------------------------- wchar_t *__cdecl wmemmove(wchar_t *S1, const wchar_t *S2, size_t N) { const wchar_t *v3; // esi size_t v4; // eax wchar_t *v5; // edi size_t v7; // eax v3 = S2; v4 = N; if ( N != 0 && S2 != 0 && S1 ) { if ( S1 > S2 ) { do { S1[v4 - 1] = S2[v4 - 1]; v7 = v4 - 1; if ( !v7 ) break; S1[v7 - 1] = S2[v7 - 1]; v4 = v7 - 1; } while ( v4 ); } else { v5 = S1; do { *v5++ = *v3++; --v4; } while ( v4 ); } } return S1; } //----- (00430B10) -------------------------------------------------------- wchar_t *__cdecl wmemset(wchar_t *S, wchar_t C, size_t N) { size_t v3; // eax wchar_t *v4; // edx v3 = N; if ( S && N ) { v4 = S; do { *v4++ = C; --v3; } while ( v3 ); } return S; } //----- (00430B40) -------------------------------------------------------- int __cdecl __gethex_D2A(unsigned __int8 **a1, int *a2, int *a3, int **a4, int a5) { char *decimal_point; // ebp unsigned __int8 *v6; // ebx unsigned __int8 v7; // dl unsigned __int8 *v8; // eax int v9; // ecx int v10; // edi unsigned __int8 *v11; // ebx char v12; // cl int v13; // eax unsigned __int8 v14; // di unsigned __int8 *v15; // esi int v16; // eax int v17; // esi int v18; // ebx int v19; // edi int v20; // edx int j; // eax int *v22; // eax int *v23; // edx int v24; // esi int v25; // edx unsigned __int8 v26; // al unsigned __int8 v27; // al int v28; // edx int i; // eax int v30; // eax unsigned int *v31; // edi int v32; // edx unsigned __int8 *v33; // ecx char v34; // cl int v35; // eax int v36; // eax unsigned int v37; // ebp int *v38; // ebx unsigned int v39; // eax int *v40; // edx int v41; // eax _BYTE *v42; // edx int v43; // eax int v44; // eax int v45; // ecx int v46; // ebx int v47; // edx unsigned int v49; // esi unsigned int v50; // eax unsigned int v51; // eax int v52; // esi signed int v53; // esi int v54; // edi int v55; // ebx int v56; // eax int v57; // esi int v58; // eax char v59; // dl int v60; // esi int v61; // edx int v62; // esi char v63; // dl int v64; // eax int v65; // ecx int v66; // esi int v67; // ecx int v68; // ebx unsigned int v69; // eax int v70; // edi unsigned __int8 *v71; // ecx int v72; // edx int v73; // eax int v74; // [esp+4h] [ebp-48h] int v75; // [esp+14h] [ebp-38h] unsigned int v76; // [esp+14h] [ebp-38h] char v77; // [esp+18h] [ebp-34h] unsigned __int8 *v78; // [esp+18h] [ebp-34h] unsigned int v79; // [esp+18h] [ebp-34h] int v80; // [esp+1Ch] [ebp-30h] BOOL v81; // [esp+1Ch] [ebp-30h] char *v82; // [esp+1Ch] [ebp-30h] int v83; // [esp+20h] [ebp-2Ch] int v84; // [esp+24h] [ebp-28h] int *v85; // [esp+24h] [ebp-28h] _DWORD *v86; // [esp+28h] [ebp-24h] unsigned __int8 *v87; // [esp+28h] [ebp-24h] int v88; // [esp+2Ch] [ebp-20h] decimal_point = localeconv()->decimal_point; if ( !byte_1541D50 ) hexdig_init_D2A(); *a4 = 0; v6 = *a1; v7 = (*a1)[2]; if ( v7 == 48 ) { v8 = v6 + 3; v9 = -2 - (_DWORD)v6; do { v10 = (int)&v8[v9]; v11 = v8; v7 = *v8++; } while ( v7 == 48 ); } else { v11 = v6 + 2; v10 = 0; } v12 = *decimal_point; v77 = *decimal_point; if ( __hexdig_D2A[v7] ) { v76 = (unsigned int)v11; ++v10; v15 = 0; v81 = 0; goto LABEL_32; } v77 = *decimal_point; if ( v12 ) { v80 = v10; v13 = 0; v14 = v7; do { if ( v12 != v7 ) { v7 = v14; v10 = v80; goto LABEL_12; } v12 = decimal_point[++v13]; v7 = v11[v13]; v15 = &v11[v13]; } while ( v12 ); v10 = v80; if ( __hexdig_D2A[v7] ) { if ( v7 == 48 ) { v11 += v13; do v26 = *++v11; while ( v26 == 48 ); v76 = (unsigned int)v11; v10 = 1; v59 = __hexdig_D2A[v26]; v81 = v59 == 0; if ( !v59 ) { LABEL_33: if ( v26 != v77 ) { v83 = 0; v27 = *v11; if ( v15 ) v83 = 4 * (v15 - v11); LABEL_36: if ( (v27 & 0xDF) != 80 ) goto LABEL_37; LABEL_53: v78 = v11; v11 = (unsigned __int8 *)v76; goto LABEL_54; } if ( v15 ) { v83 = 4 * (v15 - v11); if ( (*v11 & 0xDF) != 80 ) { LABEL_37: *a1 = v11; if ( !v81 ) goto LABEL_38; return 0; } goto LABEL_53; } v63 = decimal_point[1]; if ( v63 ) { v64 = 1; while ( v11[v64] == v63 ) { v63 = decimal_point[++v64]; v65 = v64; if ( !v63 ) goto LABEL_151; } v27 = *v11; } else { v65 = 1; LABEL_151: v71 = &v11[v65]; v11 = v71; v27 = *v71; if ( __hexdig_D2A[*v71] ) { do { v72 = *++v11; v27 = v72; } while ( __hexdig_D2A[v72] ); v83 = 4 * (v71 - v11); goto LABEL_36; } } v83 = 0; goto LABEL_36; } } else { v81 = 0; v11 += v13; v10 = 1; v76 = (unsigned int)v15; } do { LABEL_32: v25 = *++v11; v26 = v25; } while ( __hexdig_D2A[v25] ); goto LABEL_33; } } else { LABEL_12: v15 = v11; } v78 = v15; if ( (v7 & 0xDF) != 80 ) { v81 = 1; v83 = 0; v75 = 0; v84 = 0; goto LABEL_15; } v83 = 0; v81 = 1; LABEL_54: v41 = v78[1]; if ( (_BYTE)v41 == 43 ) { v75 = 0; } else { if ( (_BYTE)v41 != 45 ) { v75 = 0; v42 = v78 + 1; goto LABEL_57; } v75 = 1; } v42 = v78 + 2; v41 = v78[2]; LABEL_57: v43 = (unsigned __int8)__hexdig_D2A[v41]; v15 = v78; v84 = 0; if ( (unsigned __int8)(v43 - 1) > 0x18u ) { LABEL_15: if ( v10 ) goto LABEL_67; goto LABEL_16; } v15 = v42 + 1; v44 = v43 - 16; v45 = (unsigned __int8)__hexdig_D2A[(unsigned __int8)v42[1]]; if ( (unsigned __int8)(__hexdig_D2A[(unsigned __int8)v42[1]] - 1) <= 0x18u ) { v87 = v11; v46 = 0; do { if ( (v44 & 0xF8000000) != 0 ) v46 = 1; v47 = *++v15; v44 = v45 + 10 * v44 - 16; v45 = (unsigned __int8)__hexdig_D2A[v47]; } while ( (unsigned __int8)(__hexdig_D2A[v47] - 1) <= 0x18u ); v84 = v46; v11 = v87; } if ( v75 ) v44 = -v44; v83 += v44; if ( v10 ) { LABEL_67: *a1 = v15; if ( v81 ) return 0; goto LABEL_17; } LABEL_16: *a1 = v11 - 1; if ( v81 ) return 0; LABEL_17: if ( !v84 ) { v76 = (unsigned int)v11; v11 = v78; LABEL_38: v28 = 0; for ( i = (int)&v11[-v76 - 1]; i > 7; ++v28 ) i >>= 1; v85 = __Balloc_D2A(v28); v86 = v85 + 5; if ( decimal_point[1] ) { v30 = 0; do ++v30; while ( decimal_point[v30 + 1] ); v88 = v30; } else { v88 = 0; } if ( (unsigned int)v11 <= v76 ) { v31 = (unsigned int *)(v85 + 5); v49 = 0; v38 = v85 + 6; v51 = 32; } else { v31 = (unsigned int *)(v85 + 5); v32 = 0; v82 = &decimal_point[v88]; v33 = v11; v79 = 0; do { while ( 1 ) { v36 = *(v33 - 1); v37 = (unsigned int)(v33 - 1); v38 = (int *)(v31 + 1); if ( (_BYTE)v36 != *v82 ) break; v33 = (unsigned __int8 *)(v37 - v88); if ( v37 - v88 <= v76 ) goto LABEL_71; } if ( v32 == 32 ) { v39 = v79; v40 = (int *)(v31 + 2); v79 = 0; *v31++ = v39; v36 = *(v33 - 1); v38 = v40; v34 = 0; v32 = 4; } else { v34 = v32; v32 += 4; } v35 = (__hexdig_D2A[v36] & 0xF) << v34; v33 = (unsigned __int8 *)v37; v79 |= v35; } while ( v37 > v76 ); LABEL_71: v49 = v79; _BitScanReverse(&v50, v79); v51 = v50 ^ 0x1F; } *v31 = v49; v52 = v38 - v86; v85[4] = v52; v53 = 32 * v52 - v51; v54 = *a2; if ( v53 > *a2 ) { v66 = v53 - v54; v55 = __any_on_D2A((int)v85, v66); if ( v55 ) { v55 = 1; if ( ((1 << (v66 - 1)) & v86[(v66 - 1) >> 5]) != 0 ) { if ( v66 == 1 || (v55 = 3, !__any_on_D2A((int)v85, v66 - 1)) ) v55 = 2; } } __rshift_D2A((int)v85, v66); v83 += v66; } else { v55 = 0; if ( v53 < *a2 ) { v62 = v54 - v53; v83 -= v62; v85 = __lshift_D2A(v85, v62); v86 = v85 + 5; } } if ( a2[2] < v83 ) { LABEL_111: __Bfree_D2A((unsigned int)v85); goto LABEL_112; } v56 = a2[1]; if ( v56 <= v83 ) { v57 = 1; goto LABEL_78; } v60 = v56 - v83; if ( v54 > v56 - v83 ) { v67 = v60 - 1; if ( v55 ) { v55 = 1; } else if ( v60 != 1 ) { v73 = __any_on_D2A((int)v85, v60 - 1); v67 = v60 - 1; v55 = v73; } if ( ((1 << v67) & v86[v67 >> 5]) != 0 ) v55 |= 2u; v74 = v60; v54 -= v60; v57 = 2; __rshift_D2A((int)v85, v74); v83 = a2[1]; LABEL_78: if ( !v55 ) { LABEL_83: *a4 = v85; *a3 = v83; return v57; } v58 = a2[3]; if ( v58 == 2 ) { a5 = 1 - a5; } else if ( v58 != 3 ) { if ( v58 != 1 || (v55 & 2) == 0 || ((*v86 | v55) & 1) == 0 ) goto LABEL_82; LABEL_131: v68 = v85[4]; v85 = __increment_D2A(v85); v69 = (unsigned int)(v85 + 5); if ( v57 == 2 ) { v57 = 34; if ( *a2 - 1 == v54 ) v57 = (((1 << v54) & *(_DWORD *)(v69 + 4 * (v54 >> 5))) == 0) + 33; goto LABEL_83; } if ( v85[4] <= v68 && ((v70 = v54 & 0x1F) == 0 || (_BitScanReverse(&v69, *(_DWORD *)(v69 + 4 * v68 - 4)), 32 - v70 <= (int)(v69 ^ 0x1F))) || (__rshift_D2A((int)v85, 1), ++v83, a2[2] >= v83) ) { v57 = 33; goto LABEL_83; } goto LABEL_111; } if ( !a5 ) { LABEL_82: v57 |= 0x10u; goto LABEL_83; } goto LABEL_131; } v61 = a2[3]; if ( v61 == 2 ) { if ( !a5 ) goto LABEL_139; } else if ( v61 == 3 ) { if ( a5 ) goto LABEL_139; } else if ( v61 == 1 && v54 == v60 ) { if ( v54 != 1 ) { if ( __any_on_D2A((int)v85, v54 - 1) ) { v56 = a2[1]; goto LABEL_139; } goto LABEL_99; } LABEL_139: v85[4] = 1; *v86 = 1; goto LABEL_94; } LABEL_99: __Bfree_D2A((unsigned int)v85); LABEL_100: *_errno() = 34; return 80; } v16 = a2[3]; if ( v75 ) { if ( v16 == 2 ) { if ( a5 ) goto LABEL_100; } else if ( v16 != 3 || !a5 ) { goto LABEL_100; } v85 = __Balloc_D2A(0); v85[4] = 1; v85[5] = 1; v56 = a2[1]; LABEL_94: *a4 = v85; v24 = 98; *a3 = v56; *_errno() = 34; return v24; } if ( v16 == 2 ) { if ( !a5 ) goto LABEL_112; goto LABEL_22; } if ( v16 == 3 ) { if ( a5 ) goto LABEL_112; goto LABEL_22; } if ( v16 != 1 ) { LABEL_22: v17 = *a2 & 0x1F; v18 = *a2 >> 5; v19 = v18 - ((v17 == 0) - 1); v20 = 0; for ( j = v19 >> 1; j; j >>= 1 ) ++v20; v22 = __Balloc_D2A(v20); *a4 = v22; v22[4] = v19; if ( v18 > 0 ) { v23 = v22 + 5; do *v23++ = -1; while ( &v22[v18 + 5] != v23 ); v75 = v18; } if ( v19 > v18 ) v22[v75 + 5] = 32 >> (32 - v17); v24 = 17; *a3 = a2[1]; return v24; } LABEL_112: *_errno() = 34; return 163; } // 1541D50: using guessed type char byte_1541D50; //----- (00431540) -------------------------------------------------------- int __cdecl __rshift_D2A(int a1, int a2) { int v2; // ebx _DWORD *v3; // ebp unsigned int v4; // ebx _DWORD *v5; // esi char v6; // di int *v7; // edx int v8; // eax int v9; // esi int v10; // ebx _DWORD *v11; // edx int result; // eax _DWORD *v13; // edi unsigned int v14; // [esp+0h] [ebp-24h] int v15; // [esp+4h] [ebp-20h] int v16; // [esp+8h] [ebp-1Ch] v2 = *(_DWORD *)(a1 + 16); v16 = a2 >> 5; v15 = v2; if ( v2 <= a2 >> 5 ) goto LABEL_8; v3 = (_DWORD *)(a1 + 20); v4 = a1 + 20 + 4 * v2; v5 = (_DWORD *)(a1 + 20 + 4 * (a2 >> 5)); v6 = a2 & 0x1F; if ( (a2 & 0x1F) == 0 ) { v13 = (_DWORD *)(a1 + 20); if ( v4 > (unsigned int)v5 ) { do *v13++ = *v5++; while ( v4 > (unsigned int)v5 ); v11 = &v3[v15 - v16]; goto LABEL_13; } LABEL_8: *(_DWORD *)(a1 + 16) = 0; LABEL_9: result = a1; *(_DWORD *)(a1 + 20) = 0; return result; } v7 = v5 + 1; v8 = *v5 >> v6; if ( v4 <= (unsigned int)(v5 + 1) ) { *(_DWORD *)(a1 + 20) = v8; if ( v8 ) { v11 = (_DWORD *)(a1 + 20); LABEL_7: ++v11; goto LABEL_13; } goto LABEL_8; } v14 = v4; v9 = a1 + 20; do { v10 = *v7; v9 += 4; ++v7; *(_DWORD *)(v9 - 4) = (v10 << (32 - v6)) | v8; v8 = (unsigned int)*(v7 - 1) >> v6; } while ( v14 > (unsigned int)v7 ); v3 = (_DWORD *)(a1 + 20); v11 = (_DWORD *)(a1 + 20 + 4 * (v15 - v16) - 4); *v11 = v8; if ( v8 ) goto LABEL_7; LABEL_13: result = v11 - v3; *(_DWORD *)(a1 + 16) = result; if ( v11 == v3 ) goto LABEL_9; return result; } //----- (00431650) -------------------------------------------------------- int __cdecl __trailz_D2A(int a1) { int *v1; // eax unsigned int v2; // ebx int v3; // edx v1 = (int *)(a1 + 20); v2 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); v3 = 0; if ( a1 + 20 < v2 ) { while ( 1 ) { _ECX = *v1; if ( *v1 ) break; ++v1; v3 += 32; if ( v2 <= (unsigned int)v1 ) return v3; } if ( v2 > (unsigned int)v1 ) { __asm { tzcnt ecx, ecx } v3 += _ECX; } } return v3; } //----- (00431690) -------------------------------------------------------- int *__cdecl __s2b_D2A(int a1, int a2, int a3, int a4, int a5) { int v5; // esi int v6; // eax int v7; // ecx int *result; // eax char *v9; // ebp int v10; // ecx char *v11; // ebp char *v12; // ebx int v13; // edx v5 = a2; if ( a3 <= 9 ) { v7 = 0; } else { v6 = 1; v7 = 0; do { v6 *= 2; ++v7; } while ( (a3 + 8) / 9 > v6 ); } result = __Balloc_D2A(v7); result[4] = 1; result[5] = a4; if ( a2 <= 9 ) { v11 = (char *)(a1 + a5 + 9); v5 = 9; } else { v9 = (char *)(a1 + 9); do { v10 = *v9++; result = __multadd_D2A(result, 10, v10 - 48); } while ( v9 != (char *)(a2 + a1) ); v11 = (char *)(a1 + a2 + a5); } if ( a3 > v5 ) { v12 = &v11[a3 - v5]; do { v13 = *v11++; result = __multadd_D2A(result, 10, v13 - 48); } while ( v12 != v11 ); } return result; } //----- (00431790) -------------------------------------------------------- long double __cdecl __ratio_D2A(int a1, int a2) { int v2; // eax double v4; // [esp+10h] [ebp-3Ch] double v5; // [esp+18h] [ebp-34h] double v6; // [esp+20h] [ebp-2Ch] double v7; // [esp+28h] [ebp-24h] int v8; // [esp+38h] [ebp-14h] BYREF int v9[4]; // [esp+3Ch] [ebp-10h] BYREF v4 = __b2d_D2A(a1, &v8); v6 = v4; v5 = __b2d_D2A(a2, v9); v7 = v5; v2 = v8 + 32 * (*(_DWORD *)(a1 + 16) - *(_DWORD *)(a2 + 16)) - v9[0]; if ( v2 <= 0 ) { HIDWORD(v7) = HIDWORD(v5) - (v2 << 20); return v4 / v7; } else { HIDWORD(v6) = HIDWORD(v4) + (v2 << 20); return v6 / v5; } } // 431790: using guessed type int var_10[4]; //----- (00431850) -------------------------------------------------------- int __cdecl __match_D2A(char **a1, char *a2) { char *v3; // edx int v4; // ebx int v5; // eax v3 = *a1; while ( 1 ) { v4 = *a2++; ++v3; if ( !v4 ) break; v5 = *v3; if ( (unsigned int)(v5 - 65) > 0x19 ) { if ( v5 != v4 ) return 0; } else if ( v5 + 32 != v4 ) { return 0; } } *a1 = v3; return 1; } //----- (004318A0) -------------------------------------------------------- _DWORD *__cdecl __copybits_D2A(_DWORD *a1, int a2, int a3) { _DWORD *result; // eax _DWORD *v4; // esi unsigned int v5; // ecx unsigned int v6; // edx _DWORD *v7; // edi result = a1; v4 = (_DWORD *)(a3 + 20); v5 = (unsigned int)&a1[((a2 - 1) >> 5) + 1]; v6 = a3 + 20 + 4 * *(_DWORD *)(a3 + 16); if ( a3 + 20 >= v6 ) goto LABEL_6; v7 = a1; do *v7++ = *v4++; while ( v6 > (unsigned int)v4 ); result = &a1[((v6 - a3 - 21) >> 2) + 1]; while ( v5 > (unsigned int)result ) { *result++ = 0; LABEL_6: ; } return result; } //----- (00431900) -------------------------------------------------------- int __cdecl __any_on_D2A(int a1, int a2) { int v2; // esi unsigned int v3; // edx _DWORD *v4; // eax int v6; // ecx v2 = *(_DWORD *)(a1 + 16); v3 = a1 + 20; if ( v2 < a2 >> 5 ) { v4 = (_DWORD *)(v3 + 4 * v2); goto LABEL_4; } v4 = (_DWORD *)(v3 + 4 * (a2 >> 5)); if ( v2 > a2 >> 5 && (a2 & 0x1F) != 0 ) { v6 = 1; if ( *v4 != *v4 >> (a2 & 0x1F) << (a2 & 0x1F) ) return v6; } do { LABEL_4: if ( (unsigned int)v4 <= v3 ) return 0; } while ( !*--v4 ); return 1; } //----- (00431970) -------------------------------------------------------- int *__cdecl __sum_D2A(int *a1, int *a2) { int *v2; // esi int *v3; // ebx unsigned int *v4; // ebp int *v5; // eax int v6; // edi int *v7; // ecx unsigned int *v8; // edi unsigned int v9; // esi unsigned int v10; // eax unsigned int v11; // ebx unsigned int v12; // edx unsigned int v13; // eax unsigned int v14; // edx unsigned int *v15; // ebx unsigned int v16; // edi char *i; // edx unsigned int v18; // ecx unsigned int v19; // eax unsigned int v20; // ecx int *v22; // ebx unsigned int v23; // [esp+18h] [ebp-34h] int *v24; // [esp+1Ch] [ebp-30h] int v25; // [esp+20h] [ebp-2Ch] int v26; // [esp+24h] [ebp-28h] int *v27; // [esp+28h] [ebp-24h] int *v28; // [esp+2Ch] [ebp-20h] v2 = a2; v3 = a1; if ( a1[4] < a2[4] ) { v3 = a2; v2 = a1; } v4 = (unsigned int *)(v3 + 5); v5 = __Balloc_D2A(v3[1]); v6 = v3[4]; v27 = v3 + 5; v7 = v5 + 5; v24 = v5; v5[4] = v6; v28 = v5 + 5; v26 = v2[4]; v23 = (unsigned int)&v5[v26 + 5]; v25 = v6; v8 = (unsigned int *)(v2 + 5); v9 = 0; do { v10 = *v4; v11 = *v8; ++v4; ++v8; ++v7; v12 = v9 + (unsigned __int16)v10 + (unsigned __int16)v11; *((_WORD *)v7 - 2) = v12; v13 = HIWORD(v12) + HIWORD(v11) + HIWORD(v10); *((_WORD *)v7 - 1) = v13; v9 = HIWORD(v13); } while ( v23 > (unsigned int)v7 ); v14 = 4; if ( v23 >= (unsigned int)v24 + 21 ) v14 = 4 * ((v23 - (unsigned int)v24 - 21) >> 2) + 4; v15 = (unsigned int *)((char *)v27 + v14); v16 = v23 + 4 * (v25 - v26); for ( i = (char *)v28 + v14; v16 > (unsigned int)i; v9 = HIWORD(v20) ) { v18 = *v15; i += 4; ++v15; v19 = v9 + (unsigned __int16)v18; *((_WORD *)i - 2) = v19; v20 = HIWORD(v19) + HIWORD(v18); *((_WORD *)i - 1) = v20; } if ( v9 ) { if ( v25 == v24[2] ) { v22 = __Balloc_D2A(v24[1] + 1); memcpy(v22 + 3, v24 + 3, 4 * v24[4] + 8); __Bfree_D2A((unsigned int)v24); v24 = v22; v25 = v22[4]; } v24[4] = v25 + 1; v24[v25 + 5] = 1; } return v24; } //----- (00431B10) -------------------------------------------------------- int hexdig_init_D2A() { const char *v0; // edx int v1; // eax int v2; // ecx const char *v3; // edx int v4; // eax int v5; // ecx const char *v6; // edx int result; // eax int v8; // ecx v0 = "123456789"; v1 = 48; do { v2 = (int)&(v0++)[16 - (_DWORD)"123456789"]; __hexdig_D2A[v1] = v2; v1 = *((unsigned __int8 *)v0 - 1); } while ( (_BYTE)v1 ); v3 = "bcdef"; v4 = 97; do { v5 = (int)&(v3++)[26 - (_DWORD)"bcdef"]; __hexdig_D2A[v4] = v5; v4 = *((unsigned __int8 *)v3 - 1); } while ( (_BYTE)v4 ); v6 = "BCDEF"; result = 65; do { v8 = (int)&(v6++)[26 - (_DWORD)"BCDEF"]; __hexdig_D2A[result] = v8; result = *((unsigned __int8 *)v6 - 1); } while ( (_BYTE)result ); return result; } //----- (00431B90) -------------------------------------------------------- int __usercall sub_431B90@(int *a1@) { _BYTE *v1; // edx char v2; // bl int v3; // esi int v4; // edx v1 = (_BYTE *)*a1; v2 = *(_BYTE *)*a1; v3 = *a1 + 1; switch ( v2 ) { case 'I': if ( *v1 != 73 ) goto LABEL_3; if ( v1[1] == 51 && v1[2] == 50 ) { v3 = (int)(v1 + 3); v4 = 2; } else { if ( v1[1] != 54 || v1[2] != 52 ) { LABEL_3: v1 = (_BYTE *)(*a1 + 1); goto LABEL_4; } v3 = (int)(v1 + 3); LABEL_14: v4 = 3; } break; case 'L': *a1 = v3; return 76; case 'h': case 'l': if ( v2 == v1[1] ) { v3 = (int)(v1 + 2); v4 = 4; if ( v2 != 104 ) v4 = 3 * (v2 == 108); } else { v4 = 1; if ( v2 != 104 ) v4 = 2 * (v2 == 108); } break; case 'j': goto LABEL_14; case 't': case 'z': goto LABEL_5; default: LABEL_4: v3 = (int)v1; LABEL_5: v4 = 0; break; } *a1 = v3; return v4; } // 431BF9: conditional instruction was optimized away because ecx.4==49 //----- (00431C50) -------------------------------------------------------- int *__usercall sub_431C50@(int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7) { char v10; // c2 char v11; // c3 char v12; // c0 __int16 v13; // cx int v14; // ebx int v15; // eax long double v17; // [esp+20h] [ebp-2Ch] BYREF int v18; // [esp+2Ch] [ebp-20h] int v19; // [esp+38h] [ebp-14h] BYREF int *v20; // [esp+3Ch] [ebp-10h] BYREF *(_QWORD *)&v17 = a2; HIDWORD(v17) = a3; _FST7 = v17; v18 = a4; __asm { fxam } if ( v12 ) { if ( !v10 ) { v19 = 4; v14 = 0; v15 = 0; goto LABEL_7; } v19 = 3; v13 = WORD4(v17); v14 = 0; } else { v13 = WORD4(v17); if ( v10 ) { if ( v11 ) { v19 = 2; v14 = -16445; } else { v19 = 1; v14 = (WORD4(v17) & 0x7FFF) - 16446; } } else { v19 = 0; v14 = 0; } } v15 = v13 & 0x8000; LABEL_7: *a7 = v15; return __gdtoa(dword_4E8080, v14, (int *)&v17, &v19, a1, a5, a6, &v20); } // 431C84: variable 'v12' is possibly undefined // 431C89: variable 'v10' is possibly undefined // 431D0B: variable 'v11' is possibly undefined // 4E8080: using guessed type int dword_4E8080[5]; //----- (00431D50) -------------------------------------------------------- int __usercall sub_431D50@(int result@, int a2@) { int v3; // ecx int v4; // edx v3 = *(_DWORD *)(a2 + 4); if ( (v3 & 0x2000) == 0 ) { v4 = *(_DWORD *)(a2 + 24); if ( *(_DWORD *)(a2 + 28) <= v4 ) goto LABEL_5; } if ( (v3 & 0x1000) == 0 ) { *(_BYTE *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 24)) = result; v4 = *(_DWORD *)(a2 + 24); LABEL_5: *(_DWORD *)(a2 + 24) = v4 + 1; return result; } result = fputc((unsigned __int8)result, *(FILE **)a2); ++*(_DWORD *)(a2 + 24); return result; } //----- (00431DB0) -------------------------------------------------------- int __usercall sub_431DB0@(int a1@, int a2@, int a3@) { int v5; // eax int result; // eax signed int v7; // eax unsigned __int16 *v8; // ebx unsigned __int16 *p_Byte; // edi int v10; // eax int v11; // eax int v13; // [esp+1Ch] [ebp-14h] mbstate_t State; // [esp+2Ch] [ebp-4h] BYREF wcrtomb((char *)&State._Byte, 0, &State); v5 = *(_DWORD *)(a3 + 12); if ( v5 >= 0 && a2 > v5 ) a2 = *(_DWORD *)(a3 + 12); result = *(_DWORD *)(a3 + 8); if ( result <= a2 ) { *(_DWORD *)(a3 + 8) = -1; goto LABEL_6; } v11 = result - a2; *(_DWORD *)(a3 + 8) = v11; if ( (*(_BYTE *)(a3 + 5) & 4) == 0 ) { *(_DWORD *)(a3 + 8) = v11 - 1; do { sub_431D50(32, a3); result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; } while ( result ); LABEL_6: if ( a2 <= 0 ) { *(_DWORD *)(a3 + 8) = -2; return result; } goto LABEL_7; } if ( a2 <= 0 ) { *(_DWORD *)(a3 + 8) = v11 - 1; do { LABEL_13: sub_431D50(32, a3); LABEL_14: result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; } while ( result > 0 ); return result; } LABEL_7: v13 = a2; do { a1 += 2; v7 = wcrtomb((char *)&State._Byte, *(_WORD *)(a1 - 2), &State); if ( v7 <= 0 ) goto LABEL_14; v8 = (unsigned __int16 *)((char *)&State._Byte + v7); p_Byte = &State._Byte; do { v10 = *(char *)p_Byte; p_Byte = (unsigned __int16 *)((char *)p_Byte + 1); sub_431D50(v10, a3); } while ( p_Byte != v8 ); --v13; } while ( v13 ); result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; if ( result > 0 ) goto LABEL_13; return result; } //----- (00431EE0) -------------------------------------------------------- int __usercall sub_431EE0@(char *a1@, int a2@, int a3@) { int v3; // edi int v5; // eax int result; // eax char *v8; // edi int v9; // eax int v10; // eax v3 = a2; v5 = *(_DWORD *)(a3 + 12); if ( v5 >= 0 && a2 > v5 ) v3 = *(_DWORD *)(a3 + 12); result = *(_DWORD *)(a3 + 8); if ( result <= v3 ) { *(_DWORD *)(a3 + 8) = -1; if ( v3 ) goto LABEL_6; LABEL_18: *(_DWORD *)(a3 + 8) = -2; return result; } v10 = result - v3; *(_DWORD *)(a3 + 8) = v10; if ( (*(_BYTE *)(a3 + 5) & 4) != 0 ) { if ( !v3 ) { *(_DWORD *)(a3 + 8) = v10 - 1; do { LABEL_9: sub_431D50(32, a3); result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; } while ( result > 0 ); return result; } } else { *(_DWORD *)(a3 + 8) = v10 - 1; do { sub_431D50(32, a3); result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; } while ( result ); if ( !v3 ) goto LABEL_18; } LABEL_6: v8 = &a1[v3]; do { v9 = *a1++; sub_431D50(v9, a3); } while ( a1 != v8 ); result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; if ( result > 0 ) goto LABEL_9; return result; } //----- (00431FB0) -------------------------------------------------------- int __usercall sub_431FB0@(int a1@, int a2@, int a3@) { int v3; // edi char *v4; // esi char v5; // di int i; // ebx char v8; // [esp+Ch] [ebp-20h] BYREF char v9[31]; // [esp+Dh] [ebp-1Fh] BYREF *(_DWORD *)(a3 + 12) = -1; v3 = *(_DWORD *)(a3 + 4); if ( a1 ) { v8 = 45; v4 = v9; } else if ( (v3 & 0x100) != 0 ) { v8 = 43; v4 = v9; } else if ( (v3 & 0x40) != 0 ) { v8 = 32; v4 = v9; } else { v4 = &v8; } v5 = v3 & 0x20; for ( i = 0; i != 3; ++i ) v4[i] = v5 | *(_BYTE *)(a2 + i) & 0xDF; return sub_431EE0(&v8, v4 + 3 - &v8, a3); } //----- (00432050) -------------------------------------------------------- int __usercall sub_432050@(wchar_t a1@, int a2@, int a3@) { int v5; // eax void *v6; // esp void *v7; // esp char *v8; // edi signed int v9; // eax char *v10; // ebx int v11; // eax char *Dest; // [esp+0h] [ebp-4Ch] BYREF char v14[16]; // [esp+Ch] [ebp-40h] BYREF char **p_Dest; // [esp+1Ch] [ebp-30h] mbstate_t State; // [esp+2Ch] [ebp-20h] BYREF if ( !a1 ) return -1; v5 = 16 * ((unsigned int)(a2 + 15) >> 4); p_Dest = &Dest; v6 = alloca(v5); v7 = alloca(v5); State._Wchar = 0; v8 = v14; v9 = wcrtomb(v14, a1, &State); if ( v9 <= 0 ) return -1; v10 = &v14[v9]; do { v11 = *v8++; sub_431D50(v11, a3); } while ( v8 != v10 ); return 0; } // 432050: using guessed type char var_40[16]; //----- (004320D0) -------------------------------------------------------- int __usercall sub_4320D0@(int a1@) { int v1; // ebx struct lconv *v4; // eax char *v5; // eax char v6; // al wchar_t v7; // dx signed int v8; // eax struct lconv *v9; // eax wchar_t DstCh; // [esp+1Ah] [ebp-12h] BYREF mbstate_t State; // [esp+1Ch] [ebp-10h] BYREF v1 = *(_DWORD *)(a1 + 4) & 1; if ( v1 && *(_DWORD *)(a1 + 36) == -3 ) { v4 = localeconv(); v5 = strdup(v4->grouping); *(_DWORD *)(a1 + 44) = v5; if ( v5 && (v6 = *v5) != 0 ) { State._Wchar = 0; if ( v6 == 127 ) { v7 = *(_WORD *)(a1 + 40); v8 = 0; } else { v9 = localeconv(); v8 = mbrtowc(&DstCh, v9->thousands_sep, 0x10u, &State); if ( v8 <= 0 ) { v7 = *(_WORD *)(a1 + 40); } else { v7 = DstCh; if ( (DstCh & 0xF800) == 0xD800 ) { v7 = *(_WORD *)(a1 + 40); v8 = -1; } else { *(_WORD *)(a1 + 40) = DstCh; } } } *(_DWORD *)(a1 + 36) = v8; } else { v7 = *(_WORD *)(a1 + 40); } if ( !v7 ) { v1 = 0; __mingw_free(*(_DWORD *)(a1 + 44)); *(_DWORD *)(a1 + 4) &= ~1u; *(_DWORD *)(a1 + 44) = 0; } } return v1; } //----- (004321B0) -------------------------------------------------------- int __usercall sub_4321B0@(_DWORD *a1@) { int v1; // ebx int v2; // edx int result; // eax char *v5; // esi int v6; // ebx char *v7; // eax v1 = *(char *)*a1; v2 = v1 - 48; if ( (unsigned int)(v1 - 48) <= 9 ) { v5 = (char *)(*a1 + 1); v6 = 0; while ( 1 ) { result = v6 + v2; if ( v6 + v2 > 16 ) break; *a1 = v5; v1 = *v5; v2 = v1 - 48; if ( (unsigned int)(v1 - 48) > 9 ) goto LABEL_3; v6 = 0; if ( result > 0 ) v6 = 10 * result; ++v5; } v7 = (char *)*a1; do *a1 = ++v7; while ( (unsigned int)(*v7 - 48) <= 9 ); return 0; } result = 0; LABEL_3: if ( (_BYTE)v1 != 36 ) return 0; return result; } //----- (00432230) -------------------------------------------------------- int __usercall sub_432230@(int *a1@) { int result; // eax _BYTE *v3; // edx int v4; // ecx _BYTE *v5; // [esp+Ch] [ebp-8h] BYREF v5 = (_BYTE *)*a1; result = sub_4321B0(&v5); v3 = v5; v4 = (int)++v5; if ( *v3 == 36 ) *a1 = v4; return result; } //----- (00432260) -------------------------------------------------------- int __usercall sub_432260@(unsigned __int8 *a1@) { char *v2; // eax int v3; // eax int result; // eax int v5; // edx v2 = strchr("aAeEfFgGcCdiouxXnpsS", *a1); if ( !v2 ) return 4; v3 = (v2 - "aAeEfFgGcCdiouxXnpsS") / 8; if ( v3 ) { if ( v3 == 1 ) return 4 * (a1[1] == 3) + 4; return 4; } v5 = a1[1]; result = 12; if ( v5 != 76 && ((byte_1541CCD & 1) == 0 || v5 != 2) ) return 8; return result; } // 1541CCD: using guessed type char byte_1541CCD; //----- (004322E0) -------------------------------------------------------- int __usercall sub_4322E0@(int a1@) { int v2; // edx wchar_t v3; // ax int result; // eax struct lconv *v5; // eax wchar_t DstCh; // [esp+1Ah] [ebp-12h] BYREF mbstate_t State; // [esp+1Ch] [ebp-10h] BYREF v2 = *(_DWORD *)(a1 + 16); if ( v2 == -3 ) { State._Wchar = 0; v5 = localeconv(); v2 = mbrtowc(&DstCh, v5->decimal_point, 0x10u, &State); if ( v2 <= 0 ) { v3 = *(_WORD *)(a1 + 20); } else { v3 = DstCh; if ( (DstCh & 0xF800) == 0xD800 ) { v3 = *(_WORD *)(a1 + 20); v2 = -1; } else { *(_WORD *)(a1 + 20) = DstCh; } } *(_DWORD *)(a1 + 16) = v2; } else { v3 = *(_WORD *)(a1 + 20); } result = sub_432050(v3, v2, a1); if ( result ) return sub_431D50(46, a1); return result; } //----- (00432390) -------------------------------------------------------- int __usercall sub_432390@(int a1@, int a2@) { if ( a1 == 44 ) return sub_432050(*(_WORD *)(a2 + 40), *(_DWORD *)(a2 + 36), a2); if ( a1 == 46 ) return sub_4322E0(a2); return sub_431D50(a1, a2); } //----- (004323D0) -------------------------------------------------------- int __usercall sub_4323D0@(unsigned int a1@, unsigned int a2@, int a3@) { unsigned __int64 v3; // rdi _DWORD *v4; // ebx int v5; // eax int v6; // edx int v7; // eax int v8; // eax void *v9; // esp void *v10; // esp int v11; // eax char v12; // al int v13; // eax int *v14; // ebx int *v15; // ecx int v16; // eax int v17; // edi _BYTE *v18; // eax int v19; // ecx int v20; // eax int v21; // eax __int16 v22; // si int v23; // edi int v24; // eax unsigned int v25; // edi int v26; // esi int v27; // eax int result; // eax int v29; // eax int v30; // edx int v31; // eax int v32; // eax int v33; // edx _BYTE *v34; // ecx _BYTE *v35; // edx _DWORD *v37; // [esp+10h] [ebp-38h] BYREF int v38; // [esp+14h] [ebp-34h] int v39; // [esp+18h] [ebp-30h] int v40; // [esp+1Ch] [ebp-2Ch] int *v41; // [esp+20h] [ebp-28h] int v42; // [esp+24h] [ebp-24h] int *v43; // [esp+28h] [ebp-20h] int v44; // [esp+2Ch] [ebp-1Ch] v3 = __PAIR64__(a1, a2); v4 = (_DWORD *)a3; v44 = (*(_DWORD *)(a3 + 12) & ~(*(int *)(a3 + 12) >> 31)) + 23; v5 = sub_4320D0(a3); v6 = v44; if ( v5 ) v6 = 2 * v44; v7 = v4[2]; v39 = v7; if ( v7 < v6 ) v7 = v6; v8 = 16 * ((unsigned int)(v7 + 15) >> 4); v9 = alloca(v8); v10 = alloca(v8); v44 = v4[11]; v42 = 0; v41 = (int *)&v37; v11 = v4[1]; v40 = v11; if ( v44 ) { v42 = v11 & 1; if ( (v11 & 1) != 0 ) { v12 = *(_BYTE *)v44; v42 = *(char *)v44; v44 = (unsigned __int8)(v12 - 1) < 0x7Eu ? v44 : 0; } else { v44 = 0; } } v38 = v4[3]; if ( (v40 & 0x80u) != 0 ) { if ( (v3 & 0x80000000) != 0LL ) { HIDWORD(v3) = -HIDWORD(v3); LODWORD(v3) = (unsigned __int64)-__SPAIR64__(v3, HIDWORD(v3)) >> 32; LABEL_12: v37 = v4; v14 = v41; while ( 1 ) { v15 = v14; if ( v44 ) { if ( v42 ) { --v42; } else { v16 = *(char *)(v44 + 1); if ( (_BYTE)v16 ) ++v44; else v16 = *(char *)v44; *(_BYTE *)v14 = 44; v42 = v16 - 1; v15 = (int *)((char *)v14 + 1); v44 = v16 == 127 ? 0 : v44; } } v14 = (int *)((char *)v15 + 1); v43 = v15; *(_BYTE *)v15 = __PAIR64__(v3, HIDWORD(v3)) % 0xA + 48; if ( __PAIR64__(v3, HIDWORD(v3)) <= 9 ) break; v3 = __PAIR64__(__PAIR64__(v3, HIDWORD(v3)) / 0xA, (__PAIR64__(v3, HIDWORD(v3)) / 0xA) >> 32); } v44 = (int)v15 + 1; v4 = v37; if ( v38 > 0 ) { v17 = v38 - ((char *)v15 + 1 - (char *)v41); if ( v17 <= 0 ) goto LABEL_29; goto LABEL_24; } if ( v41 != (int *)v44 ) goto LABEL_30; LABEL_51: if ( !v38 ) { LOWORD(v21) = v40; if ( v39 <= 0 ) goto LABEL_36; if ( (v40 & 0x1C0) == 0 ) goto LABEL_35; goto LABEL_33; } goto LABEL_58; } v13 = v40; LOBYTE(v13) = v40 & 0x7F; v4[1] = v13; v40 = v13; } if ( v3 ) goto LABEL_12; v44 = (int)v41; v17 = v38; if ( v38 <= 0 ) goto LABEL_51; LABEL_24: v18 = (_BYTE *)v44; v19 = v44 + v17; do *v18++ = 48; while ( v19 - (int)v18 > 0 ); v20 = 1; if ( v17 > 0 ) v20 = v17; v44 += v20; LABEL_29: if ( v41 == (int *)v44 ) { LABEL_58: v32 = v44; *(_BYTE *)v44 = 48; v44 = v32 + 1; } LABEL_30: LOWORD(v21) = v40; if ( v39 <= 0 ) goto LABEL_36; v22 = v40; v39 -= v44 - (_DWORD)v41; v23 = v39; LOWORD(v21) = v40; v4[2] = v39; if ( v23 <= 0 ) goto LABEL_36; if ( (v22 & 0x1C0) != 0 ) LABEL_33: v4[2] = v39 - 1; if ( v38 < 0 && (v40 & 0x600) == 512 ) { v33 = v4[2]; v4[2] = v33 - 1; if ( v33 > 0 ) { v34 = (_BYTE *)v44; v35 = (_BYTE *)(v44 + v33); do *v34++ = 48; while ( v34 != v35 ); v44 = (int)v34; v4[2] = -1; } goto LABEL_36; } LABEL_35: if ( (v40 & 0x400) == 0 ) { v30 = v4[2]; v4[2] = v30 - 1; if ( v30 > 0 ) { do { sub_431D50(32, (int)v4); v31 = v4[2]; v4[2] = v31 - 1; } while ( v31 > 0 ); v21 = v4[1]; } } LABEL_36: if ( (v21 & 0x80u) == 0 ) { if ( (v21 & 0x100) != 0 ) { v29 = v44; *(_BYTE *)v44 = 43; v25 = v29 + 1; } else { v25 = v44; if ( (v21 & 0x40) != 0 ) { *(_BYTE *)v44 = 32; ++v25; } } } else { v24 = v44; *(_BYTE *)v44 = 45; v25 = v24 + 1; } v26 = (int)v41; if ( (unsigned int)v41 >= v25 ) goto LABEL_42; do { v27 = *(char *)--v25; sub_432390(v27, (int)v4); } while ( v26 != v25 ); result = v4[2]; for ( v4[2] = result - 1; result > 0; v4[2] = result - 1 ) { sub_431D50(32, (int)v4); LABEL_42: result = v4[2]; } return result; } //----- (004327A0) -------------------------------------------------------- int __usercall sub_4327A0@(int a1@, _BYTE *a2@, int a3@, int a4) { int v5; // esi int v6; // ebx int v7; // edx int v8; // ebp int v9; // eax int v10; // edx int v11; // eax int v12; // edx int v13; // eax int v14; // eax int v15; // ebx int v16; // eax char *v17; // eax char v18; // cl char *v19; // ebp char v20; // bl int v21; // eax int result; // eax char v23; // dl int v24; // eax int v25; // eax int v26; // ecx int v27; // edx char *v28; // edx int v29; // ecx int v30; // eax _BYTE *v32; // [esp+8h] [ebp-24h] int v33; // [esp+Ch] [ebp-20h] int v34; // [esp+Ch] [ebp-20h] v5 = a3; v6 = a4; if ( a3 > 0 ) { v8 = a3; v33 = sub_4320D0(a4); if ( v33 ) { v28 = *(char **)(a4 + 44); v29 = 0; v30 = *v28; do { if ( v30 >= v8 ) break; v8 -= v30; v30 = v28[1]; ++v29; if ( (_BYTE)v30 ) ++v28; else v30 = *v28; } while ( v30 != 127 ); v33 = v29; v5 += v29; } v27 = *(_DWORD *)(a4 + 8); if ( v27 <= v5 ) goto LABEL_17; v7 = v27 - v5; *(_DWORD *)(a4 + 8) = v7; } else { v7 = *(_DWORD *)(a4 + 8); if ( v7 > 0 ) { v33 = 0; --v7; v8 = a3; goto LABEL_4; } v33 = 0; v8 = a3; } if ( v7 < 0 ) goto LABEL_17; LABEL_4: v9 = *(_DWORD *)(a4 + 12); if ( v9 >= v7 ) { LABEL_17: *(_DWORD *)(a4 + 8) = -1; goto LABEL_18; } v10 = v7 - v9; *(_DWORD *)(a4 + 8) = v10; if ( v9 > 0 || (*(_BYTE *)(a4 + 5) & 8) != 0 ) { *(_DWORD *)(a4 + 8) = --v10; if ( !v10 ) { LABEL_18: if ( !a1 ) { LABEL_19: v11 = *(_DWORD *)(a4 + 4); goto LABEL_20; } goto LABEL_53; } } if ( a1 ) { v12 = v10 - 1; *(_DWORD *)(a4 + 8) = v12; if ( v12 && (*(_DWORD *)(a4 + 4) & 0x600) == 0 ) goto LABEL_11; LABEL_53: sub_431D50(45, a4); goto LABEL_23; } v11 = *(_DWORD *)(a4 + 4); if ( (v11 & 0x1C0) != 0 ) { v12 = v10 - 1; *(_DWORD *)(a4 + 8) = v12; if ( v12 && (v11 & 0x600) == 0 ) { LABEL_11: *(_DWORD *)(a4 + 8) = v12 - 1; do { LABEL_12: sub_431D50(32, a4); v13 = *(_DWORD *)(a4 + 8); *(_DWORD *)(a4 + 8) = v13 - 1; } while ( v13 > 0 ); if ( a1 ) goto LABEL_53; goto LABEL_19; } } else if ( (v11 & 0x600) == 0 ) { v26 = *(_DWORD *)(a4 + 8); *(_DWORD *)(a4 + 8) = v26 - 1; if ( v26 > 0 ) goto LABEL_12; } LABEL_20: if ( (v11 & 0x100) != 0 ) { sub_431D50(43, a4); } else if ( (v11 & 0x40) != 0 ) { sub_431D50(32, a4); } LABEL_23: v14 = *(_DWORD *)(a4 + 8); if ( v14 > 0 && (*(_DWORD *)(a4 + 4) & 0x600) == 512 ) { *(_DWORD *)(a4 + 8) = v14 - 1; do { sub_431D50(48, a4); v25 = *(_DWORD *)(a4 + 8); *(_DWORD *)(a4 + 8) = v25 - 1; } while ( v25 > 0 ); } if ( v5 <= 0 ) { sub_431D50(48, a4); } else { v32 = a2; v15 = v33; do { while ( 1 ) { v16 = 48; if ( *v32 ) v16 = (char)*v32++; sub_431D50(v16, a4); if ( !--v8 ) { if ( v15 ) break; } if ( --v5 <= 0 ) goto LABEL_37; } v17 = *(char **)(a4 + 44); v34 = v15 - 1; v18 = *v17; v19 = &v17[v15]; do { ++v17; v20 = v18; v18 = *v17; } while ( *v17 && v18 != 127 && v19 != v17 ); v8 = v20; sub_432390(44, a4); v5 -= 2; v15 = v34; } while ( v5 > 0 ); LABEL_37: v6 = a4; a2 = v32; } v21 = *(_DWORD *)(v6 + 12); if ( v21 > 0 || (*(_BYTE *)(v6 + 5) & 8) != 0 ) { sub_4322E0(v6); if ( !v5 ) goto LABEL_47; v21 = *(_DWORD *)(v6 + 12); } else if ( !v5 ) { result = v21 - 1; *(_DWORD *)(v6 + 12) = result; return result; } *(_DWORD *)(v6 + 12) = v5 + v21; do { sub_431D50(48, v6); ++v5; } while ( v5 ); result = *(_DWORD *)(v6 + 12); for ( *(_DWORD *)(v6 + 12) = result - 1; result > 0; *(_DWORD *)(v6 + 12) = result - 1 ) { v23 = *a2; v24 = 48; if ( *a2 ) { ++a2; v24 = v23; } sub_431D50(v24, v6); LABEL_47: result = *(_DWORD *)(v6 + 12); } return result; } //----- (00432B10) -------------------------------------------------------- int __usercall sub_432B10@(int a1@, _BYTE *a2@, int a3@, _DWORD *a4) { int v4; // ecx int i; // ebx int v6; // ebp int v7; // ecx int v8; // eax int v9; // edx __int64 v12; // [esp+18h] [ebp-24h] v12 = a3 - 1; a4[1] &= ~1u; v4 = (a3 - 1) / 10; for ( i = 1; v4; v4 /= 10 ) ++i; v6 = a4[8]; if ( v6 < i ) v6 = i; v7 = a4[2]; v8 = -1; if ( v7 > v6 + 2 ) v8 = v7 - (v6 + 2); a4[2] = v8; sub_4327A0(a1, a2, 1, (int)a4); a4[3] = a4[8]; v9 = a4[1]; a4[1] = v9 | 0x1C0; sub_431D50(v9 & 0x20 | 0x45, (int)a4); a4[2] += v6 + 1; return sub_4323D0(v12, HIDWORD(v12), (int)a4); } //----- (00432BE0) -------------------------------------------------------- void __usercall sub_432BE0(_DWORD *a1@, long double a2) { int v3; // eax int v4; // eax int *v5; // eax int *v6; // esi int v7; // [esp+28h] [ebp-24h] BYREF int v8; // [esp+2Ch] [ebp-20h] BYREF long double v9; // [esp+30h] [ebp-1Ch] int v10; // [esp+3Ch] [ebp-10h] v3 = a1[3]; if ( v3 < 0 ) { a1[3] = 6; v4 = 7; } else { v4 = v3 + 1; } v9 = a2; v5 = sub_431C50(2, *(__int64 *)&v9, SHIDWORD(v9), v10, v4, &v8, &v7); v6 = v5; if ( v8 == -32768 ) sub_431FB0(v7, (int)v5, (int)a1); else sub_432B10(v7, v5, v8, a1); __freedtoa(v6); } //----- (00432C90) -------------------------------------------------------- void __usercall sub_432C90(int a1@, long double a2) { int v3; // eax int *v4; // eax int *v5; // esi int v6; // eax int v7; // [esp+28h] [ebp-24h] BYREF int v8; // [esp+2Ch] [ebp-20h] BYREF long double v9; // [esp+30h] [ebp-1Ch] int v10; // [esp+3Ch] [ebp-10h] v3 = *(_DWORD *)(a1 + 12); if ( v3 < 0 ) { *(_DWORD *)(a1 + 12) = 6; v3 = 6; } v9 = a2; v4 = sub_431C50(3, *(__int64 *)&v9, SHIDWORD(v9), v10, v3, &v8, &v7); v5 = v4; if ( v8 == -32768 ) { sub_431FB0(v7, (int)v4, a1); __freedtoa(v5); } else { sub_4327A0(v7, v4, v8, a1); while ( 1 ) { v6 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v6 - 1; if ( v6 <= 0 ) break; sub_431D50(32, a1); } __freedtoa(v5); } } //----- (00432D60) -------------------------------------------------------- void __usercall sub_432D60(_DWORD *a1@, long double a2) { int v3; // eax int *v4; // eax int v5; // edi int *Str; // esi int v7; // eax int v8; // edx int v9; // eax int v10; // eax int v11; // eax int v12; // edx int v13; // [esp+28h] [ebp-24h] BYREF int v14; // [esp+2Ch] [ebp-20h] BYREF long double v15; // [esp+30h] [ebp-1Ch] int v16; // [esp+3Ch] [ebp-10h] v3 = a1[3]; if ( v3 < 0 ) { a1[3] = 6; v3 = 6; } else if ( !v3 ) { a1[3] = 1; v3 = 1; } v15 = a2; v4 = sub_431C50(2, *(__int64 *)&v15, SHIDWORD(v15), v16, v3, &v14, &v13); v5 = v14; Str = v4; if ( v14 == -32768 ) { sub_431FB0(v13, (int)v4, (int)a1); __freedtoa(Str); } else { v7 = a1[1] & 0x800; if ( v14 < -3 || (v8 = a1[3], v14 > v8) ) { if ( v7 ) v10 = a1[3] - 1; else v10 = strlen((const char *)Str) - 1; a1[3] = v10; sub_432B10(v13, Str, v5, a1); __freedtoa(Str); } else { if ( v7 ) { a1[3] = v8 - v14; } else { v11 = strlen((const char *)Str) - v14; a1[3] = v11; if ( v11 < 0 ) { v12 = a1[2]; if ( v12 > 0 ) a1[2] = v12 + v11; } } sub_4327A0(v13, Str, v5, (int)a1); while ( 1 ) { v9 = a1[2]; a1[2] = v9 - 1; if ( v9 <= 0 ) break; sub_431D50(32, (int)a1); } __freedtoa(Str); } } } //----- (00432EF0) -------------------------------------------------------- int __usercall sub_432EF0@(_DWORD *a1@, long double a2) { __int16 v4; // fps __int16 v5; // fps unsigned __int64 v9; // rdi int v10; // eax __int16 v11; // dx int v12; // ebp char *v13; // ebp char v14; // cl char v15; // al int v16; // eax int v17; // ecx char *v18; // eax int v19; // esi int v20; // eax int v21; // eax int v22; // eax int v23; // eax unsigned int v25; // edi unsigned int v26; // esi unsigned __int64 v27; // kr08_8 char v28; // cl int v29; // edx int v30; // eax int v31; // edi int v32; // ecx int v33; // eax int v34; // ecx __int16 v35; // ax int v36; // eax int v37; // eax signed int v38; // [esp+10h] [ebp-7Ch] int v39; // [esp+10h] [ebp-7Ch] __int16 v40; // [esp+18h] [ebp-74h] int v41; // [esp+1Ch] [ebp-70h] int v42; // [esp+20h] [ebp-6Ch] int v43; // [esp+24h] [ebp-68h] char v46; // [esp+5Eh] [ebp-2Eh] BYREF char v47; // [esp+5Fh] [ebp-2Dh] BYREF _FST7 = a2; __asm { fxam } if ( (v4 & 0x4500) == 256 ) return sub_431FB0(0, (int)&off_4F0159, (int)a1); if ( (SWORD4(a2) & 0x8000u) != 0 ) a1[1] |= 0x80u; __asm { fxam } if ( (v5 & 0x4500) == 1280 ) return sub_431FB0(WORD4(a2) & 0x8000, (int)&off_4F015D, (int)a1); v9 = __PAIR64__(LODWORD(a2), DWORD1(a2)); v40 = WORD4(a2) & 0x7FFF; if ( (WORD4(a2) & 0x7FFF) != 0 ) { v40 -= 0x3FFF; v12 = a1[3]; if ( *(_QWORD *)&a2 ) goto LABEL_11; LABEL_25: v43 = a1[1]; goto LABEL_26; } if ( !*(_QWORD *)&a2 ) { v12 = a1[3]; goto LABEL_25; } if ( (SDWORD1(a2) & 0x80000000) != 0 ) { v12 = a1[3]; v40 = -16382; } else { v10 = -16383; do { LODWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 31; v11 = v10; HIDWORD(v9) *= 2; --v10; } while ( (v9 & 0x80000000) == 0LL ); v40 = v11; v12 = a1[3]; } LABEL_11: if ( (unsigned int)v12 <= 0xE ) { while ( (v9 & 0x80000000) == 0LL ) { LODWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 31; HIDWORD(v9) *= 2; } v27 = (4LL << (4 * (14 - (unsigned __int8)v12))) + (__PAIR64__(v9, HIDWORD(v9)) >> 1); v25 = HIDWORD(v27); v26 = v27; if ( (v27 & 0x8000000000000000LL) != 0LL ) { ++v40; } else { v25 = v27 >> 31; v26 = 2 * v27; } v28 = 4 * (15 - v12); HIDWORD(v9) = __PAIR64__(v25, v26) >> v28; LODWORD(v9) = v25 >> v28; if ( (v28 & 0x20) != 0 ) { HIDWORD(v9) = v9; LODWORD(v9) = 0; } } v13 = &v46; v43 = a1[1]; LOWORD(v41) = v43; do { v16 = BYTE4(v9) & 0xF; if ( HIDWORD(v9) ^ v16 | (unsigned int)v9 ) { v17 = a1[3]; HIDWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 4; LODWORD(v9) = (unsigned int)v9 >> 4; if ( v17 > 0 ) a1[3] = v17 - 1; } else { if ( v13 > &v46 || (v43 & 0x800) != 0 || (int)a1[3] > 0 ) *v13++ = 46; if ( (unsigned int)v9 | HIDWORD(v9) ^ 1 ) { v34 = (unsigned __int16)(v40 - 1); v39 = BYTE4(v9) & 0xF; do { HIDWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 1; LODWORD(v9) = (unsigned int)v9 >> 1; v35 = v34--; } while ( HIDWORD(v9) ^ 1 | (unsigned int)v9 ); v40 = v35; v9 = 0LL; v16 = v39; } else { v9 = 0LL; } } if ( v16 ) { v14 = v16; if ( v16 <= 9 ) LABEL_15: v15 = v14 + 48; else v15 = v43 & 0x20 | (v16 + 55); *v13++ = v15; continue; } v14 = 0; if ( v13 > &v46 || (int)a1[3] >= 0 ) goto LABEL_15; } while ( v9 ); if ( v13 != &v46 ) { v42 = a1[2]; if ( v42 > 0 ) goto LABEL_51; LABEL_29: v19 = 2; v38 = v40; goto LABEL_30; } v12 = a1[3]; LABEL_26: LOWORD(v41) = v43; if ( v12 > 0 || (v18 = &v46, (v43 & 0x800) != 0) ) { v46 = 46; v18 = &v47; } *v18 = 48; v13 = v18 + 1; v42 = a1[2]; if ( v42 <= 0 ) goto LABEL_29; LABEL_51: v29 = a1[3]; v30 = v13 - &v46; v38 = v40; if ( v29 > 0 ) v30 += v29; v31 = v30 + ((v43 & 0x1C0) != 0) + 5; v32 = v40 / 10; if ( v32 ) { do { LOWORD(v19) = ++v31 + 2 - (v30 + ((v43 & 0x1C0) != 0) + 5); v32 /= 10; } while ( v32 ); v19 = (__int16)v19; } else { v31 = v30 + ((v43 & 0x1C0) != 0) + 5; v19 = 2; } if ( v42 <= v31 ) { a1[2] = -1; } else { v33 = v42 - v31; if ( (v43 & 0x600) != 0 ) { a1[2] = v33; } else { a1[2] = v33 - 1; if ( v33 > 0 ) { do { sub_431D50(32, (int)a1); v37 = a1[2]; a1[2] = v37 - 1; } while ( v37 > 0 ); v41 = a1[1]; } } } LABEL_30: if ( (v41 & 0x80u) != 0 ) { sub_431D50(45, (int)a1); } else if ( (v41 & 0x100) != 0 ) { sub_431D50(43, (int)a1); } else if ( (v41 & 0x40) != 0 ) { sub_431D50(32, (int)a1); } sub_431D50(48, (int)a1); sub_431D50(a1[1] & 0x20 | 0x58, (int)a1); v20 = a1[2]; if ( v20 > 0 && (a1[1] & 0x600) == 512 ) { a1[2] = v20 - 1; do { sub_431D50(48, (int)a1); v36 = a1[2]; a1[2] = v36 - 1; } while ( v36 > 0 ); } if ( v13 <= &v46 ) goto LABEL_40; do { v21 = *--v13; sub_432390(v21, (int)a1); } while ( v13 != &v46 ); v22 = a1[3]; a1[3] = v22 - 1; if ( v22 > 0 ) { do { sub_431D50(48, (int)a1); LABEL_40: v23 = a1[3]; a1[3] = v23 - 1; } while ( v23 > 0 ); } sub_431D50(a1[1] & 0x20 | 0x50, (int)a1); a1[2] += v19; a1[1] |= 0x1C0u; return sub_4323D0(v38, v38 >> 31, (int)a1); } // 4F0159: using guessed type void **off_4F0159; // 4F015D: using guessed type void *off_4F015D; //----- (004334A0) -------------------------------------------------------- int __usercall sub_4334A0@(int a1@, int a2@, int a3@, int a4) { unsigned __int64 v4; // rdi signed int v5; // ebx int v6; // eax char v7; // dl int v8; // eax int v9; // eax void *v10; // esp void *v11; // esp int *v12; // ebx int v13; // edx int v14; // eax int v15; // edi int result; // eax bool v17; // zf int v18; // edi int v19; // esi int *v20; // esi int v21; // ebx unsigned int v22; // edi int v23; // eax int v24; // esi int v25; // edi int v26; // eax char v27; // cl int v28; // eax int *v29; // eax int v30; // eax char v31; // al int *v32; // ecx int v33; // [esp+0h] [ebp-38h] BYREF int v34; // [esp+4h] [ebp-34h] int v35; // [esp+8h] [ebp-30h] int v36; // [esp+Ch] [ebp-2Ch] int v37; // [esp+10h] [ebp-28h] int v38; // [esp+14h] [ebp-24h] int *v39; // [esp+18h] [ebp-20h] int v40; // [esp+1Ch] [ebp-1Ch] v4 = __PAIR64__(a2, a3); v34 = a3; v37 = a1; v38 = a2; v33 = 8 * (a1 != 111) + 7; v39 = (int *)((a1 != 111) + 3); *(_DWORD *)(a4 + 4) &= ~1u; v40 = *(_DWORD *)(a4 + 12); v5 = (a1 == 111 ? 0 : 0xFFFFFFFA) + (*(_DWORD *)(a4 + 12) & ~(v40 >> 31)) + 24; v6 = sub_4320D0(a4); v7 = (char)v39; if ( v6 ) v5 *= 2; v8 = *(_DWORD *)(a4 + 8); v35 = v8; if ( v8 < v5 ) v8 = v5; v9 = 16 * ((unsigned int)(v8 + 15) >> 4); v10 = alloca(v9); v11 = alloca(v9); v39 = &v33; v36 = *(_DWORD *)(a4 + 12); if ( !(v38 | v34) ) { v12 = &v33; goto LABEL_30; } v12 = &v33; LOBYTE(v40) = v33; LOBYTE(v38) = v37 & 0x20; do { v12 = (int *)((char *)v12 + 1); if ( (unsigned __int8)((BYTE4(v4) & v40) + 48) <= 0x39u ) *((_BYTE *)v12 - 1) = (BYTE4(v4) & v40) + 48; else *((_BYTE *)v12 - 1) = v38 | ((BYTE4(v4) & v40) + 55); HIDWORD(v4) = __PAIR64__(v4, HIDWORD(v4)) >> v7; LODWORD(v4) = (unsigned int)v4 >> v7; if ( (v7 & 0x20) != 0 ) { HIDWORD(v4) = v4; LODWORD(v4) = 0; } } while ( v4 ); if ( v39 == v12 ) { LABEL_30: v25 = v36; *(_DWORD *)(a4 + 4) &= ~0x800u; v13 = v25 - ((char *)v12 - (char *)v39); if ( v25 <= 0 ) { if ( v37 != 111 ) goto LABEL_34; goto LABEL_32; } LABEL_47: v29 = v12; do { v29 = (int *)((char *)v29 + 1); *((_BYTE *)v29 - 1) = 48; } while ( (char *)v12 + v13 - (char *)v29 > 0 ); v30 = 1; if ( v13 > 0 ) v30 = v13; v12 = (int *)((char *)v12 + v30); if ( v39 == v12 ) goto LABEL_36; v14 = (char *)v12 - (char *)v39; goto LABEL_18; } if ( v36 > 0 ) { v13 = v36 - ((char *)v12 - (char *)v39); if ( v13 > 0 ) goto LABEL_47; } if ( v37 != 111 ) { LABEL_17: v14 = (char *)v12 - (char *)v39; goto LABEL_18; } LABEL_32: if ( (*(_BYTE *)(a4 + 5) & 8) != 0 ) { *(_BYTE *)v12 = 48; v12 = (int *)((char *)v12 + 1); } LABEL_34: if ( v12 != v39 ) goto LABEL_17; v14 = 0; if ( v36 ) { LABEL_36: v15 = v35; *(_BYTE *)v12 = 48; v14 = (char *)v12 + 1 - (char *)v39; v12 = (int *)((char *)v12 + 1); if ( v15 <= v14 ) goto LABEL_19; LABEL_37: v18 = v15 - v14; v17 = v37 == 111; *(_DWORD *)(a4 + 8) = v18; v26 = *(_DWORD *)(a4 + 4); if ( !v17 ) { if ( (v26 & 0x800) != 0 ) { v18 -= 2; if ( v18 <= 0 || v36 >= 0 ) goto LABEL_41; } else if ( v36 >= 0 ) { goto LABEL_58; } if ( (*(_DWORD *)(a4 + 4) & 0x600) != 512 ) { if ( (v26 & 0x800) == 0 ) { LABEL_58: v24 = v18 - 1; if ( (v26 & 0x400) == 0 ) goto LABEL_44; LABEL_59: if ( v39 < v12 ) goto LABEL_60; goto LABEL_27; } LABEL_41: v27 = v37; *((_BYTE *)v12 + 1) = 48; v12 = (int *)((char *)v12 + 2); *((_BYTE *)v12 - 2) = v27; goto LABEL_42; } v24 = v18 - 1; LABEL_62: v32 = (int *)((char *)v12 + v18); do { v12 = (int *)((char *)v12 + 1); *((_BYTE *)v12 - 1) = 48; } while ( v32 != v12 ); v18 = v24 - v18; if ( v37 == 111 || (v26 & 0x800) == 0 ) { LABEL_42: if ( v18 <= 0 ) { LABEL_22: result = (int)v39; if ( v39 >= v12 ) return result; v19 = v18 - 1; LABEL_24: v39 = (int *)v19; v20 = v12; v21 = a4; v40 = v18; v22 = result; goto LABEL_25; } v24 = v18 - 1; if ( (v26 & 0x400) == 0 ) { do { LABEL_44: sub_431D50(32, a4); v28 = v24--; } while ( v28 > 0 ); result = (int)v39; v19 = -2; v18 = -1; if ( v39 >= v12 ) return result; goto LABEL_24; } goto LABEL_59; } goto LABEL_41; } if ( v36 < 0 ) { v24 = v18 - 1; if ( (*(_DWORD *)(a4 + 4) & 0x600) == 512 ) goto LABEL_62; if ( (v26 & 0x400) == 0 ) goto LABEL_44; } else { v24 = v18 - 1; if ( (v26 & 0x400) == 0 ) goto LABEL_44; } if ( v12 > v39 ) goto LABEL_60; do { LABEL_27: sub_431D50(32, a4); result = v24--; } while ( result > 0 ); return result; } LABEL_18: v15 = v35; if ( v35 > v14 ) goto LABEL_37; LABEL_19: result = a4; v17 = v37 == 111; *(_DWORD *)(a4 + 8) = -1; if ( !v17 ) { v18 = -1; if ( (*(_BYTE *)(a4 + 5) & 8) != 0 ) { v31 = v37; *((_BYTE *)v12 + 1) = 48; v12 = (int *)((char *)v12 + 2); *((_BYTE *)v12 - 2) = v31; } goto LABEL_22; } v24 = -2; v18 = -1; if ( v12 <= v39 ) return result; LABEL_60: v40 = v18; v22 = (unsigned int)v39; v39 = (int *)v24; v20 = v12; v21 = a4; do { LABEL_25: v23 = *((char *)v20 - 1); v20 = (int *)((char *)v20 - 1); result = sub_431D50(v23, v21); } while ( v22 < (unsigned int)v20 ); v24 = (int)v39; if ( v40 > 0 ) goto LABEL_27; return result; } //----- (004338A0) -------------------------------------------------------- int __cdecl __mingw_pformat(__int16 a1, int a2, int a3, char *a4, double *a5) { char *v5; // eax int v6; // edx int v7; // eax char *v8; // esi char *v9; // ebx int v10; // edi int v11; // ebx char v12; // dl char v13; // si char v14; // dl int v15; // ecx int v16; // eax _BYTE *v17; // ebx char *v18; // eax char v19; // dl int v20; // eax void *v21; // esp void *v22; // esp int v23; // eax void *v24; // esp char *j; // ebx void *v26; // esp _WORD *v27; // eax _WORD *v28; // edx int v29; // edi char *v30; // eax char *k; // esi char v32; // dl char *v33; // ecx int v34; // eax int v35; // eax unsigned __int8 v36; // si int v37; // edx int v38; // eax char *v39; // eax int v40; // ecx unsigned __int8 v41; // di unsigned __int8 *v42; // esi _WORD *v43; // eax _WORD *v44; // eax char *i; // ebx char v46; // cl char *v47; // eax int v48; // edx int v49; // eax char *v50; // ebx char *v51; // eax char *v52; // eax int v53; // eax char v54; // dl int v55; // eax int v56; // eax _WORD *v57; // eax char *v58; // eax int v59; // edi char *v60; // esi int v61; // eax double *v62; // edi char *v63; // eax char *v64; // ecx int v65; // ebx int v66; // eax int v68; // eax int v69; // eax double **v70; // eax double *v71; // ecx double **v72; // esi _BYTE *v73; // edx char v74; // bl int v75; // ebx char *v76; // eax char *v77; // esi int v78; // edi char v79; // dl int v80; // ecx int v81; // eax int v82; // ebx int v83; // eax char *v84; // eax char *v85; // ecx double *v86; // edx double *v87; // eax const char **v88; // edx double *v89; // eax char *v90; // ebx int v91; // edx long double v92; // fst7 long double v93; // fst7 long double v94; // fst7 long double v95; // fst7 long double v96; // fst7 long double v97; // fst7 long double v98; // fst7 int *v99; // ebx int *v100; // eax int v101; // eax int v102; // ecx double *v103; // edx char *v104; // ebx bool v105; // zf int v106; // eax int *v107; // eax int v108; // eax long double v109; // fst7 double *v110; // edx int v111; // eax char *v112; // esi char *v113; // eax const wchar_t **v114; // edx const wchar_t *v115; // ebx int v116; // eax int v117; // eax int v118; // eax unsigned int v119; // ebx unsigned int v120; // eax __int64 v121; // rax char *v122; // eax double v123; // rax int v124; // eax int v125; // [esp+0h] [ebp-A8h] BYREF _WORD v126[8]; // [esp+Ch] [ebp-9Ch] BYREF int *v127; // [esp+1Ch] [ebp-8Ch] int v128; // [esp+20h] [ebp-88h] int v129; // [esp+24h] [ebp-84h] _WORD *v130; // [esp+28h] [ebp-80h] int *v131; // [esp+2Ch] [ebp-7Ch] _WORD *v132; // [esp+30h] [ebp-78h] unsigned __int8 *v133; // [esp+34h] [ebp-74h] _WORD *v134; // [esp+38h] [ebp-70h] int *v135; // [esp+3Ch] [ebp-6Ch] int v136; // [esp+40h] [ebp-68h] int v137; // [esp+44h] [ebp-64h] int v138; // [esp+48h] [ebp-60h] int v139; // [esp+4Ch] [ebp-5Ch] unsigned __int8 v140[4]; // [esp+54h] [ebp-54h] BYREF double v141; // [esp+58h] [ebp-50h] BYREF int v142; // [esp+60h] [ebp-48h] BYREF int v143; // [esp+64h] [ebp-44h] int v144; // [esp+68h] [ebp-40h] BYREF int v145[2]; // [esp+6Ch] [ebp-3Ch] BYREF __int16 v146; // [esp+74h] [ebp-34h] int v147; // [esp+78h] [ebp-30h] int v148; // [esp+7Ch] [ebp-2Ch] int v149; // [esp+80h] [ebp-28h] int v150; // [esp+84h] [ebp-24h] __int16 v151; // [esp+88h] [ebp-20h] unsigned int v152; // [esp+8Ch] [ebp-1Ch] v144 = -1; v145[0] = -1; v142 = a2; v145[1] = -3; v147 = 0; v136 = a1 & 0x3000; v143 = v136; v146 = 0; v148 = a3; v5 = getenv("PRINTF_EXPONENT_DIGITS"); if ( !v5 || (v6 = *v5, v7 = 2, (unsigned int)(v6 - 48) > 2) ) v7 = 3 - (__mingw_output_format_flags & 1); v8 = a4; v149 = v7; v150 = -3; v151 = 0; v152 = 0; LODWORD(v141) = a4; v138 = 0; do { while ( 1 ) { v10 = (int)(v8 + 1); if ( *v8 != 37 ) goto LABEL_5; LODWORD(v141) = v8 + 1; v139 = sub_4321B0(&v141); if ( !v139 ) { v11 = LODWORD(v141); v12 = *(_BYTE *)LODWORD(v141); if ( *(_BYTE *)LODWORD(v141) == 36 ) goto LABEL_206; v139 = (int)v8; v13 = v12; v137 = v10; while ( strchr("+-' 0#", v13) ) v13 = *(_BYTE *)++v11; v14 = v13; v15 = v13; v8 = (char *)v139; v10 = v137; if ( v14 == 42 ) { v54 = *(_BYTE *)++v11; if ( v54 != 46 ) goto LABEL_16; } else { if ( (unsigned int)(v15 - 48) <= 9 ) { do { v16 = *(char *)++v11; v14 = v16; } while ( (unsigned int)(v16 - 48) <= 9 ); } if ( v14 != 46 ) { LABEL_16: LODWORD(v141) = v11; sub_431B90((int *)&v141); v17 = (_BYTE *)LODWORD(v141); LOBYTE(v139) = *(_BYTE *)LODWORD(v141); v18 = strchr("aAeEfFgGcCdiouxXnpsS", (char)v139); v19 = v139; if ( v18 && (unsigned int)(v18 - 5177653) > 7 ) { LABEL_206: v133 = v140; goto LABEL_77; } goto LABEL_18; } } v55 = *(char *)(v11 + 1); if ( (_BYTE)v55 == 42 ) { v11 += 2; } else { ++v11; if ( (unsigned int)(v55 - 48) <= 9 ) { do v56 = *(char *)++v11; while ( (unsigned int)(v56 - 48) <= 9 ); } } goto LABEL_16; } for ( i = (char *)++LODWORD(v141); strchr("+-' 0#", *i); ++i ) ; LODWORD(v141) = i; v46 = *i; if ( *i == 42 ) { LODWORD(v141) = i + 1; v53 = sub_4321B0(&v141); if ( !v53 ) goto LABEL_206; if ( v139 < v53 ) v139 = v53; i = (char *)(LODWORD(v141) + 1); LODWORD(v141) = i; v46 = *i; } else { v47 = i + 1; if ( (unsigned int)(v46 - 48) <= 9 ) { do { LODWORD(v141) = v47; v48 = *v47; i = v47++; v46 = v48; } while ( (unsigned int)(v48 - 48) <= 9 ); } } if ( v46 == 46 ) { LODWORD(v141) = i + 1; v49 = i[1]; if ( (_BYTE)v49 == 42 ) { LODWORD(v141) = i + 2; v69 = sub_4321B0(&v141); if ( !v69 ) goto LABEL_206; ++LODWORD(v141); if ( v139 < v69 ) v139 = v69; } else { v50 = i + 2; if ( (unsigned int)(v49 - 48) <= 9 ) { do { v51 = v50; LODWORD(v141) = v50++; } while ( (unsigned int)(*v51 - 48) <= 9 ); } } } sub_431B90((int *)&v141); v17 = (_BYTE *)LODWORD(v141); LOBYTE(v137) = *(_BYTE *)LODWORD(v141); v52 = strchr("aAeEfFgGcCdiouxXnpsS", (char)v137); v19 = v137; if ( v52 ) { if ( (unsigned int)(v52 - 5177653) > 7 ) break; } LABEL_18: if ( v19 == 37 ) goto LABEL_19; LABEL_5: v9 = v8; v8 = (char *)v10; LODWORD(v141) = v10; if ( !*v9 ) goto LABEL_21; } if ( v138 >= v139 ) { LABEL_19: v8 = v17 + 1; goto LABEL_20; } v138 = v139; v8 = v17 + 1; LABEL_20: LODWORD(v141) = v8; } while ( *v17 ); LABEL_21: v20 = 16 * ((unsigned int)(4 * v138 + 15) >> 4); v21 = alloca(v20); v22 = alloca(v20); v137 = (int)v126; v133 = (unsigned __int8 *)v126; if ( v138 ) { v131 = &v125; v23 = 16 * ((unsigned int)(2 * v138 + 15) >> 4); v24 = alloca(v23); j = a4; v26 = alloca(v23); LODWORD(v141) = a4; v27 = v126; v28 = &v126[v138]; v130 = v126; v132 = v126; v134 = v28; do *v27++ = 0; while ( v28 != v27 ); v29 = (int)(j + 1); if ( *j == 37 ) goto LABEL_28; while ( 1 ) { LABEL_25: v30 = j; for ( j = (char *)v29; ; j = (char *)(LODWORD(v141) + 1) ) { LODWORD(v141) = j; if ( !*v30 ) { v57 = v132; do { if ( !*v57 ) goto LABEL_77; ++v57; } while ( v134 != v57 ); v70 = (double **)v137; v71 = a5; v59 = v138 - 1; v72 = (double **)(v137 + 4 * v138); v73 = (char *)v130 + 1; while ( 1 ) { v74 = *(v73 - 1); *v70 = v71; if ( v74 == 1 ) { v75 = (unsigned __int8)*v73; if ( v75 == 76 || (byte_1541CCD & 1) != 0 && v75 == 2 ) { v71 = (double *)((char *)v71 + 12); LABEL_104: ++v70; v73 += 2; if ( v72 == v70 ) goto LABEL_110; continue; } } else if ( v74 == 3 || *v73 != 3 ) { v71 = (double *)((char *)v71 + 4); goto LABEL_104; } ++v70; ++v71; v73 += 2; if ( v72 == v70 ) { LABEL_110: v76 = a4; v60 = ++a4; v61 = *v76; if ( !v61 ) goto LABEL_87; goto LABEL_78; } } } v29 = (int)(j + 1); if ( *j != 37 ) goto LABEL_25; LABEL_28: LODWORD(v141) = v29; v139 = sub_4321B0(&v141); if ( v139 > 0 ) break; v139 = (int)j; v77 = (char *)LODWORD(v141); v135 = (int *)v29; while ( 1 ) { v78 = *v77; if ( !strchr("+-' 0#", v78) ) break; ++v77; } v79 = v78; v80 = v78; j = (char *)v139; v29 = (int)v135; if ( v79 == 42 ) { v79 = *++v77; } else if ( (unsigned int)(v80 - 48) <= 9 ) { do { v81 = *++v77; v79 = v81; } while ( (unsigned int)(v81 - 48) <= 9 ); } if ( v79 == 46 ) { v117 = v77[1]; if ( (_BYTE)v117 == 42 ) { v77 += 2; } else { ++v77; if ( (unsigned int)(v117 - 48) <= 9 ) { do v118 = *++v77; while ( (unsigned int)(v118 - 48) <= 9 ); } } } LODWORD(v141) = v77; sub_431B90((int *)&v141); v30 = (char *)LODWORD(v141); if ( *(_BYTE *)LODWORD(v141) != 37 ) goto LABEL_25; } for ( k = (char *)++LODWORD(v141); strchr("+-' 0#", *k); ++k ) ; LODWORD(v141) = k; v32 = *k; if ( *k == 42 ) { LODWORD(v141) = k + 1; v129 = sub_4321B0(&v141); if ( v129 ) { k = (char *)(LODWORD(v141) + 1); LODWORD(v141) = k; v32 = *k; } else { k = (char *)LODWORD(v141); v139 = 0; v32 = *(_BYTE *)LODWORD(v141); } } else { v33 = k + 1; if ( (unsigned int)(v32 - 48) <= 9 ) { do { LODWORD(v141) = v33; v34 = *v33; k = v33++; v32 = v34; } while ( (unsigned int)(v34 - 48) <= 9 ); } v129 = 0; } if ( v32 != 46 ) { LABEL_37: v128 = 0; goto LABEL_38; } LODWORD(v141) = k + 1; v111 = k[1]; if ( (_BYTE)v111 != 42 ) { v112 = k + 2; if ( (unsigned int)(v111 - 48) <= 9 ) { do { v113 = v112; LODWORD(v141) = v112++; } while ( (unsigned int)(*v113 - 48) <= 9 ); } goto LABEL_37; } LODWORD(v141) = k + 2; v128 = sub_4321B0(&v141); if ( !v128 ) { sub_431B90((int *)&v141); v37 = LODWORD(v141); LOBYTE(v135) = *(_BYTE *)LODWORD(v141); goto LABEL_97; } ++LODWORD(v141); LABEL_38: v35 = sub_431B90((int *)&v141); if ( v35 == 1 ) v36 = 0; else v36 = v35 == 4 ? 0 : v35; v37 = LODWORD(v141); v38 = (char)*(_BYTE *)LODWORD(v141); LOBYTE(v135) = *(_BYTE *)LODWORD(v141); if ( v139 && (v127 = (int *)LODWORD(v141), v39 = strchr("aAeEfFgGcCdiouxXnpsS", v38), v37 = (int)v127, v39) && (v40 = (v39 - "aAeEfFgGcCdiouxXnpsS") / 8 + 1, v40 > 0) ) { v41 = v36; v140[0] = (unsigned __int8)v135; v140[1] = v36; v42 = (unsigned __int8 *)&v130[v139 - 1]; if ( !*(_WORD *)v42 || (v135 = v127, v139 = (v39 - "aAeEfFgGcCdiouxXnpsS") / 8 + 1, v119 = sub_432260(v140), v120 = sub_432260(v42), LOBYTE(v40) = v139, v37 = (int)v135, v119 > v120) ) { *v42 = v40; v42[1] = v41; } if ( v129 > 0 ) { v43 = &v130[v129 - 1]; if ( !*v43 ) *v43 = 100; } if ( v128 > 0 ) { v44 = &v130[v128 - 1]; if ( !*v44 ) *v44 = 100; } v29 = v37 + 1; j = (char *)v37; } else { LABEL_97: if ( (_BYTE)v135 == 37 ) { v29 = v37 + 1; j = (char *)v37; } } } } LABEL_77: v58 = a4; v59 = -1; v60 = ++a4; v61 = *v58; v138 = 0; if ( !v61 ) goto LABEL_88; LABEL_78: v134 = (_WORD *)v59; v62 = a5; LABEL_81: if ( v61 != 37 ) { sub_431D50(v61, (int)&v142); v63 = a4; goto LABEL_80; } if ( v138 ) { v68 = sub_432230((int *)&a4); if ( v68 > 0 ) v62 = *(double **)&v133[4 * v68 - 4]; } v64 = a4; v145[0] = -1; v144 = -1; v143 = v136; if ( !*a4 ) { LABEL_131: v63 = v64; goto LABEL_80; } v139 = 0; v135 = &v144; v137 = 0; while ( 2 ) { v63 = v64 + 1; a4 = v64 + 1; v65 = *v64; switch ( *v64 ) { case ' ': ++v64; if ( !v139 ) v143 |= 0x40u; goto LABEL_130; case '#': ++v64; if ( !v139 ) v143 |= 0x800u; goto LABEL_130; case '%': goto LABEL_156; case '\'': ++v64; if ( !v139 ) v143 |= 1u; goto LABEL_130; case '*': v99 = v135; if ( !v135 ) goto LABEL_174; if ( (v139 & 5) != 0 ) { v135 = 0; ++v64; LABEL_133: v139 = 4; } else { if ( v138 && (v124 = sub_432230((int *)&a4), v124 > 0) ) { v101 = **(_DWORD **)&v133[4 * v124 - 4]; *v99 = v101; } else { v100 = (int *)v62; v62 = (double *)((char *)v62 + 4); v101 = *v100; *v135 = v101; } if ( v101 >= 0 ) goto LABEL_190; if ( !v139 ) { v143 |= 0x400u; v144 = -v144; LABEL_190: v135 = 0; v64 = a4; goto LABEL_130; } v145[0] = -1; v64 = a4; v135 = 0; } goto LABEL_130; case '+': ++v64; if ( !v139 ) v143 |= 0x100u; goto LABEL_130; case '-': ++v64; if ( !v139 ) v143 |= 0x400u; goto LABEL_130; case '.': if ( (unsigned int)v139 <= 1 ) { ++v64; v145[0] = 0; v135 = v145; v139 = 2; } else { LABEL_174: v139 = 4; ++v64; } goto LABEL_130; case '0': if ( !v139 ) { v143 |= 0x200u; ++v64; goto LABEL_130; } if ( v139 != 4 ) { LABEL_219: if ( v139 == 2 ) v139 = 3; LABEL_126: ++v64; if ( v135 ) { v82 = v65 - 48; if ( *v135 > 0 ) v82 += 10 * *v135; *v135 = v82; v64 = v63; } LABEL_130: if ( !*v64 ) goto LABEL_131; continue; } LABEL_155: a4 = v60; LABEL_156: sub_431D50(37, (int)&v142); v63 = a4; LABEL_80: v60 = v63 + 1; a4 = v63 + 1; v61 = *v63; if ( v61 ) goto LABEL_81; v59 = (int)v134; if ( v138 ) { do LABEL_87: v66 = v59--; while ( v66 > 0 ); } LABEL_88: __mingw_free(v152); return v147; case 'A': if ( (v143 & 4) != 0 ) goto LABEL_160; goto LABEL_180; case 'C': v145[0] = -1; v87 = (double *)((char *)v62 + 4); goto LABEL_203; case 'E': if ( (v143 & 4) == 0 ) goto LABEL_172; goto LABEL_164; case 'F': if ( (v143 & 4) == 0 ) goto LABEL_168; goto LABEL_162; case 'G': if ( (v143 & 4) != 0 ) goto LABEL_170; goto LABEL_201; case 'I': case 'h': case 'j': case 'l': case 't': case 'z': a4 = v64; v83 = sub_431B90((int *)&a4); v64 = a4; v137 = v83; if ( v65 != 108 || (byte_1541CCD & 1) == 0 || v83 != 2 ) goto LABEL_133; v137 = 2; LABEL_205: v143 |= 4u; v139 = 4; goto LABEL_130; case 'L': ++v64; goto LABEL_205; case 'S': v89 = (double *)((char *)v62 + 4); goto LABEL_215; case 'X': case 'o': case 'u': case 'x': if ( v137 == 3 ) { v123 = *v62++; v141 = v123; } else { v84 = *(char **)v62; if ( v137 == 2 ) { LABEL_139: *(_QWORD *)&v141 = (unsigned int)v84; v62 = (double *)((char *)v62 + 4); goto LABEL_140; } if ( v137 != 1 ) { if ( v137 == 4 ) v84 = (char *)(unsigned __int8)v84; goto LABEL_139; } v62 = (double *)((char *)v62 + 4); *(_QWORD *)&v141 = (unsigned __int16)v84; } LABEL_140: if ( v65 != 117 ) { sub_4334A0(v65, SLODWORD(v141), SHIDWORD(v141), (int)&v142); v63 = a4; goto LABEL_80; } goto LABEL_147; case 'a': v143 |= 0x20u; if ( (v143 & 4) != 0 ) { LABEL_160: v92 = *(long double *)v62; v62 = (double *)((char *)v62 + 12); sub_432EF0(&v142, v92); v63 = a4; } else { LABEL_180: v98 = *v62++; sub_432EF0(&v142, v98); v63 = a4; } goto LABEL_80; case 'c': v145[0] = -1; v86 = v62; v87 = (double *)((char *)v62 + 4); if ( (unsigned int)(v137 - 2) <= 1 ) { LABEL_203: v110 = v62; v62 = v87; LOWORD(v141) = *(_DWORD *)v110; sub_431DB0((int)&v141, 1, (int)&v142); v63 = a4; } else { v62 = (double *)((char *)v62 + 4); LOBYTE(v141) = *(_DWORD *)v86; sub_431EE0((char *)&v141, 1, (int)&v142); v63 = a4; } goto LABEL_80; case 'd': case 'i': v143 |= 0x80u; if ( v137 == 3 ) { v121 = *(_QWORD *)v62++; v141 = *(double *)&v121; } else { v85 = *(char **)v62; v62 = (double *)((char *)v62 + 4); if ( v137 == 2 ) { LABEL_226: *(_QWORD *)&v141 = (int)v85; goto LABEL_147; } if ( v137 != 1 ) { if ( v137 == 4 ) { *(_QWORD *)&v141 = (char)v85; goto LABEL_147; } goto LABEL_226; } *(_QWORD *)&v141 = (__int16)v85; } LABEL_147: sub_4323D0(LODWORD(v141), HIDWORD(v141), (int)&v142); v63 = a4; goto LABEL_80; case 'e': v143 |= 0x20u; if ( (v143 & 4) != 0 ) { LABEL_164: v94 = *(long double *)v62; v62 = (double *)((char *)v62 + 12); sub_432BE0(&v142, v94); v63 = a4; } else { LABEL_172: v97 = *v62++; sub_432BE0(&v142, v97); v63 = a4; } goto LABEL_80; case 'f': v143 |= 0x20u; if ( (v143 & 4) != 0 ) { LABEL_162: v93 = *(long double *)v62; v62 = (double *)((char *)v62 + 12); sub_432C90((int)&v142, v93); v63 = a4; } else { LABEL_168: v95 = *v62++; sub_432C90((int)&v142, v95); v63 = a4; } goto LABEL_80; case 'g': v143 |= 0x20u; if ( (v143 & 4) != 0 ) { LABEL_170: v96 = *(long double *)v62; v62 = (double *)((char *)v62 + 12); sub_432D60(&v142, v96); v63 = a4; } else { LABEL_201: v109 = *v62++; sub_432D60(&v142, v109); v63 = a4; } goto LABEL_80; case 'n': v102 = v147; v103 = (double *)((char *)v62 + 4); if ( v137 == 4 ) { v122 = *(char **)v62; v62 = (double *)((char *)v62 + 4); *v122 = v147; v63 = a4; } else { v104 = *(char **)v62; if ( v137 == 1 ) { *(_WORD *)v104 = v147; v62 = (double *)((char *)v62 + 4); } else if ( v137 == 2 ) { *(_DWORD *)v104 = v147; v62 = (double *)((char *)v62 + 4); } else { v105 = v137 == 3; v62 = (double *)((char *)v62 + 4); *(_DWORD *)v104 = v147; if ( v105 ) { *((_DWORD *)v104 + 1) = v102 >> 31; v62 = v103; } } } goto LABEL_80; case 'p': if ( !v139 ) { v106 = v136; if ( v143 == v136 ) { BYTE1(v106) = BYTE1(v136) | 2; v145[0] = 8; v143 = v106; } } v107 = (int *)v62; v62 = (double *)((char *)v62 + 4); v108 = *v107; *(_QWORD *)&v141 = (unsigned int)v108; sub_4334A0(120, v108, 0, (int)&v142); v63 = a4; goto LABEL_80; case 's': v88 = (const char **)v62; v89 = (double *)((char *)v62 + 4); if ( (unsigned int)(v137 - 2) <= 1 ) { LABEL_215: v114 = (const wchar_t **)v62; v62 = v89; v115 = *v114; if ( !*v114 ) v115 = (const wchar_t *)&off_4F0162; v116 = wcslen(v115); sub_431DB0((int)v115, v116, (int)&v142); v63 = a4; } else { v90 = *(char **)v62; v62 = (double *)((char *)v62 + 4); if ( *v88 ) { v91 = strlen(*v88); } else { v91 = 6; v90 = "(null)"; } sub_431EE0(v90, v91, (int)&v142); v63 = a4; } goto LABEL_80; default: if ( v139 == 4 || (unsigned int)(v65 - 48) > 9 ) goto LABEL_155; if ( v139 ) goto LABEL_219; v139 = 1; goto LABEL_126; } } } // 4F0162: using guessed type void *off_4F0162; // 1541CCD: using guessed type char byte_1541CCD; //----- (004347D0) -------------------------------------------------------- unsigned int __cdecl __mingw_memalign_base(unsigned int a1, unsigned int *a2) { unsigned int result; // eax unsigned int v3; // esi int v4; // edx int v5; // ebx int *v6; // ecx int v7; // edi int v8; // esi int v9; // edx int v10; // [esp+0h] [ebp-18h] unsigned int v11; // [esp+4h] [ebp-14h] result = a1; if ( a1 ) { v3 = __mingw_memalign_lwm; if ( __mingw_memalign_lwm ) { if ( __mingw_memalign_lwm + 8 <= a1 ) { v4 = *(_DWORD *)((a1 - 4) & 0xFFFFFFFC); v5 = v4 & 3; v6 = (int *)(v4 & 0xFFFFFFFC); a2[1] = v5; *a2 = v4 & 0xFFFFFFFC; if ( v3 <= (v4 & 0xFFFFFFFC) && (unsigned int)v6 <= a1 - 8 ) { v11 = v4 & 0xFFFFFFFC; if ( (v4 & 1) != 0 ) { v7 = *v6; v8 = *v6 + 7; v10 = -*v6; } else { v10 = -8; v8 = 15; v7 = 8; } a2[2] = v7; v9 = v4 & 2; if ( v9 ) { v9 = v6[(unsigned int)(v5 + 1) >> 2]; v6 = (int *)((char *)v6 + v9); } a2[3] = v9; if ( v5 == 3 ) v8 = v7 + 11; if ( a1 == (((unsigned int)v6 + v8) & v10) - v9 ) return v11; } } } } return result; } // 1541CD0: using guessed type int __mingw_memalign_lwm; //----- (00434890) -------------------------------------------------------- void *__cdecl __mingw_memalign_realloc(int a1, int *a2, size_t a3) { size_t v3; // eax int v4; // edx size_t v5; // edi int v6; // ebx unsigned int v7; // eax int v8; // edx void *v9; // ebp unsigned int v10; // ebx int v11; // ebp const void *Src; // eax void *v13; // ebx size_t Size; // edi v3 = _msize((void *)*a2); v4 = a2[2]; v5 = v3; v6 = v4 + 7; if ( (a2[1] & 3) == 3 ) v6 = v4 + 11; v7 = ___msvcrt_realloc(*a2, v6 + a3); v8 = *a2; if ( *a2 == v7 ) return (void *)a1; v9 = 0; if ( v7 ) { if ( !__mingw_memalign_lwm || __mingw_memalign_lwm > v7 ) __mingw_memalign_lwm = v7; v10 = v7 + a2[3] + v6; v11 = v7 | a2[1]; Src = (const void *)(a1 - v8 + v7); *a2 = v11; v13 = (void *)((-a2[2] & v10) - a2[3]); v9 = v13; if ( v13 != Src ) { Size = v8 - a1 + v5; if ( Size > a3 ) Size = a3; memmove(v13, Src, Size); } *(_DWORD *)(((int)v13 - 4) & 0xFFFFFFFC) = *a2; } return v9; } // 1541CD0: using guessed type int __mingw_memalign_lwm; // 1542418: using guessed type int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); //----- (00434970) -------------------------------------------------------- int __mb_codeset_for_locale() { int v0; // edi char *v1; // eax char *v2; // esi size_t v3; // eax size_t v4; // edx int v5; // eax void *v6; // esp void *v7; // esp const char *v8; // esi char *v9; // eax char *v10; // eax char *v11; // eax char v13[16]; // [esp+Ch] [ebp-3Ch] BYREF struct _cpinfo CPInfo; // [esp+1Ch] [ebp-2Ch] BYREF v0 = 0; v1 = setlocale(2, 0); if ( v1 ) { v2 = v1; v3 = strlen(v1); v4 = v3 + 1; v5 = 16 * ((v3 + 16) >> 4); v6 = alloca(v5); v7 = alloca(v5); v8 = (const char *)memcpy(v13, v2, v4); v9 = setlocale(2, &byte_4F0304); if ( !strcmp(v8, v9) ) { v10 = getenv("LC_ALL"); if ( !v10 ) { v10 = getenv("LC_CTYPE"); if ( !v10 ) { v10 = getenv("LANG"); if ( !v10 ) v10 = (char *)v8; } } } else { setlocale(2, v8); v10 = (char *)v8; } v11 = strchr(v10, 46); if ( !v11 ) return 0; v0 = atoi(v11 + 1); if ( !GetCPInfo(v0, &CPInfo) || !CPInfo.MaxCharSize ) return 0; } return v0; } // 434970: using guessed type char var_3C[16]; //----- (00434AA0) -------------------------------------------------------- UINT __cdecl __mb_cur_max_for_codeset(UINT CodePage) { BOOL v1; // edx UINT result; // eax struct _cpinfo CPInfo; // [esp+1Ch] [ebp-20h] BYREF v1 = GetCPInfo(CodePage, &CPInfo); result = 0; if ( v1 ) return CPInfo.MaxCharSize; return result; } //----- (00434AD0) -------------------------------------------------------- int __cdecl __mingw_mbrtowc_handler(_WORD *a1, int a2, unsigned int a3, _DWORD *a4) { int v4; // eax unsigned int v5; // eax unsigned int v7; // esi unsigned int v8; // ebx unsigned int v9; // edx char v10; // cl unsigned int v11; // ebp WCHAR v12; // ax WCHAR v13[2]; // [esp+24h] [ebp-28h] BYREF CHAR v14[4]; // [esp+28h] [ebp-24h] BYREF int v15; // [esp+2Ch] [ebp-20h] v4 = __mingw_mbrtowc_codeset_init(); __mingw_mbrlen_cur_max_init(v4); v15 = 0; *(_DWORD *)v14 = *a4; v5 = __mingw_mbrlen_cur_max(); *a4 = 0; if ( !a3 ) { if ( (*(_WORD *)v14 & 0xFC00) != 0xD800 || (*(_WORD *)&v14[2] & 0xFC00) != 0xDC00 ) { *a4 = *(_DWORD *)v14; return -2; } if ( a1 ) *a1 = *(_WORD *)&v14[2]; return 0; } v7 = 0; if ( (*(_WORD *)v14 & 0xFC00) == 0xD800 && (*(_WORD *)&v14[2] & 0xFC00) == 0xDC00 ) { *_errno() = 22; return -1; } else { do { if ( !v14[v7] ) break; ++v7; } while ( v7 != 4 ); v8 = v7; v9 = 0; if ( v7 < v5 ) { do { v10 = *(_BYTE *)(a2 + v9); if ( !v10 ) goto LABEL_13; ++v8; ++v9; *((_BYTE *)&v13[1] + v8 + 1) = v10; } while ( v5 > v8 && a3 > v9 ); if ( v5 > v8 ) LABEL_13: v14[v8] = 0; } v11 = 1; do { if ( __mingw_mbtowc_convert(v14, v11, v13, 2) ) break; ++v11; } while ( v11 <= v8 ); if ( v7 >= v11 ) { *_errno() = 42; return -1; } else { v12 = v13[0]; if ( a1 && (*a1 = v13[0], (v12 & 0xFC00) == 0xD800) ) { *a4 = *(_DWORD *)v13; } else if ( !v12 ) { return 0; } return v11 - v7; } } } //----- (00434CC0) -------------------------------------------------------- int __mingw_wctomb_codeset_init() { int v0; // ebx v0 = __mb_codeset_for_locale(); *__emutls_get_address(dword_4E8094) = v0; return v0; } // 4E8094: using guessed type size_t dword_4E8094[4]; //----- (00434CE0) -------------------------------------------------------- UINT __cdecl __mingw_wctomb_cur_max_init(UINT a1) { UINT v1; // ebx v1 = __mb_cur_max_for_codeset(a1); *__emutls_get_address(dword_4E80A4) = v1; return v1; } // 4E80A4: using guessed type size_t dword_4E80A4[4]; //----- (00434D10) -------------------------------------------------------- int __mingw_wctomb_cur_max() { return *__emutls_get_address(dword_4E80A4); } // 4E80A4: using guessed type size_t dword_4E80A4[4]; //----- (00434D30) -------------------------------------------------------- UINT __cdecl __mingw_wctomb_convert(LPSTR lpMultiByteStr, int cbMultiByte, WCHAR *lpWideCharStr, int cchWideChar) { LPSTR v4; // ebx int v5; // esi UINT result; // eax WCHAR i; // dx WCHAR v8; // dx int v9; // ecx LPCWCH v10; // ebp WCHAR v11; // dx __int16 v12; // dx int v13; // eax BOOL *lpUsedDefaultChar; // edx __int16 v15; // dx UINT v16; // [esp+2Ch] [ebp-30h] int v17; // [esp+3Ch] [ebp-20h] BYREF v4 = lpMultiByteStr; v5 = cbMultiByte; v17 = 0; result = *__emutls_get_address(dword_4E8094); if ( !result ) { if ( cchWideChar == -1 ) { while ( 1 ) { v8 = lpWideCharStr[result]; if ( v8 > 0xFFu ) break; if ( v4 ) { if ( v5 <= 0 ) { LABEL_41: *_errno() = 12; return -1; } *v4 = v8; v8 = lpWideCharStr[result]; --v5; ++v4; } ++result; if ( !v8 ) return result; } } else { if ( cchWideChar <= 0 ) return result; for ( i = *lpWideCharStr; i <= 0xFFu; i = lpWideCharStr[result] ) { if ( v4 ) { if ( v5 <= 0 ) goto LABEL_41; *v4 = i; i = lpWideCharStr[result]; --v5; ++v4; } ++result; if ( !i || cchWideChar == result ) return result; } } LABEL_11: *_errno() = 42; return -1; } if ( result <= 0xFDE7 ) { lpUsedDefaultChar = &v17; } else { v9 = cchWideChar; if ( cchWideChar ) { v16 = result; v10 = lpWideCharStr; while ( 1 ) { v11 = *v10; if ( v9 == -1 ) break; v12 = v11 & 0xFC00; v13 = v9 - 1; if ( v12 == -10240 ) { if ( v9 == 1 || (v10[1] & 0xFC00) != 0xDC00 ) goto LABEL_11; v9 -= 2; v10 += 2; if ( !v9 ) { LABEL_26: result = v16; lpUsedDefaultChar = 0; goto LABEL_32; } } else { if ( v12 == -9216 ) goto LABEL_11; --v9; ++v10; if ( !v13 ) goto LABEL_26; } } result = v16; while ( v11 ) { v15 = v11 & 0xFC00; if ( v15 == -10240 ) { if ( (v10[1] & 0xFC00) != 0xDC00 ) goto LABEL_11; v11 = v10[2]; v10 += 2; } else { if ( v15 == -9216 ) goto LABEL_11; v11 = *++v10; } } } lpUsedDefaultChar = 0; } LABEL_32: result = WideCharToMultiByte(result, 0, lpWideCharStr, cchWideChar, lpMultiByteStr, cbMultiByte, 0, lpUsedDefaultChar); if ( v17 || !result ) goto LABEL_11; return result; } // 4E8094: using guessed type size_t dword_4E8094[4]; //----- (00434F60) -------------------------------------------------------- int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, int a5, int a6, int *a7, int **a8) { int v8; // ebp int v9; // eax int v10; // edi int v11; // edx int v12; // eax int *v13; // esi int *v14; // edx int *v15; // eax int v16; // edi int *v17; // ecx int v18; // ebx int v19; // ebx int v20; // ebx int v21; // eax unsigned int v22; // edx unsigned int v23; // eax double v24; // rax int v25; // ecx int v26; // edx signed int v27; // eax long double v28; // fst7 int v30; // eax signed int v31; // eax int *v32; // edi long double v33; // fst7 int *v34; // ebp long double v35; // fst6 bool i; // zf long double v37; // fst6 char v38; // cl long double v39; // fst7 double v40; // rax long double v41; // fst6 long double v42; // fst5 long double v43; // fst6 long double v44; // fst7 long double v45; // fst6 char v46; // al long double v47; // rt1 long double v48; // fst5 char v49; // dl int *v50; // eax char v51; // dl double v52; // rax long double v53; // fst6 int v54; // edx int v55; // ebp signed int v56; // eax int v57; // eax int *v58; // eax bool v59; // bl char v60; // bl int v61; // ebx signed int v62; // eax int v63; // eax bool v64; // dl unsigned int v65; // ebx int v66; // eax int v67; // edx int *v68; // eax int v69; // ebx int *v70; // ebx int *v71; // edi int v72; // eax int v73; // ebp int *v74; // eax int v75; // ecx int *v76; // ecx int v77; // eax int *v78; // eax unsigned int v79; // eax int v80; // edx char v81; // al int *v82; // edx int v83; // edx int v84; // eax int v85; // edx long double v86; // fst6 char v87; // bl long double v88; // fst5 int v89; // edx char v90; // al long double v91; // rt2 long double v92; // fst6 long double v93; // fst7 long double v94; // rtt double v95; // rax int v96; // eax bool v97; // zf bool v98; // cc int *v99; // edi int *v100; // eax int *v101; // ebx long double v102; // fst6 int v103; // eax int v104; // [esp+18h] [ebp-84h] int v105; // [esp+18h] [ebp-84h] int *v106; // [esp+18h] [ebp-84h] int *v107; // [esp+18h] [ebp-84h] int v108; // [esp+18h] [ebp-84h] int v109; // [esp+1Ch] [ebp-80h] int *v110; // [esp+1Ch] [ebp-80h] int v111; // [esp+20h] [ebp-7Ch] int v112; // [esp+20h] [ebp-7Ch] unsigned int v113; // [esp+20h] [ebp-7Ch] int *v114; // [esp+20h] [ebp-7Ch] double v115; // [esp+28h] [ebp-74h] int v116; // [esp+28h] [ebp-74h] int v117; // [esp+28h] [ebp-74h] int *v118; // [esp+28h] [ebp-74h] int v119; // [esp+30h] [ebp-6Ch] unsigned int v120; // [esp+30h] [ebp-6Ch] bool v121; // [esp+30h] [ebp-6Ch] int v122; // [esp+34h] [ebp-68h] unsigned int v123; // [esp+34h] [ebp-68h] int v124; // [esp+38h] [ebp-64h] double v125; // [esp+38h] [ebp-64h] int v126; // [esp+40h] [ebp-5Ch] int v127; // [esp+44h] [ebp-58h] int *v128; // [esp+44h] [ebp-58h] int v129; // [esp+44h] [ebp-58h] int *v130; // [esp+44h] [ebp-58h] int v131; // [esp+48h] [ebp-54h] unsigned int v132; // [esp+48h] [ebp-54h] int v133; // [esp+4Ch] [ebp-50h] int *v134; // [esp+4Ch] [ebp-50h] int v135; // [esp+50h] [ebp-4Ch] int v136; // [esp+54h] [ebp-48h] char v137; // [esp+58h] [ebp-44h] signed int v138; // [esp+58h] [ebp-44h] int v139; // [esp+5Ch] [ebp-40h] int v140; // [esp+60h] [ebp-3Ch] int v141; // [esp+64h] [ebp-38h] unsigned int v142[8]; // [esp+7Ch] [ebp-20h] BYREF v8 = *a4; *a4 &= 0xFFFFFFCF; v9 = v8 & 7; if ( v9 == 3 ) { *a7 = -32768; return __nrv_alloc_D2A("Infinity", a8, 8u); } v109 = v8 & 4; if ( (v8 & 4) != 0 ) { v10 = 0; if ( v9 == 4 ) { *a7 = -32768; return __nrv_alloc_D2A((char *)&off_4F0329, a8, 3u); } return (int *)v10; } if ( (v8 & 7) == 0 ) { LABEL_28: *a7 = 1; return __nrv_alloc_D2A("0", a8, 1u); } v10 = 0; if ( (unsigned int)(v9 - 1) > 1 ) return (int *)v10; v11 = 0; v104 = *a1; v12 = 32; if ( *a1 <= 32 ) { v11 = v8 & 4; } else { do { v12 *= 2; ++v11; } while ( v104 > v12 ); } v13 = __Balloc_D2A(v11); v14 = v13 + 5; v15 = a3; v16 = (v104 - 1) >> 5; v17 = &a3[v16]; do { v18 = *v15++; *v14++ = v18; } while ( v17 >= v15 ); v19 = 4; if ( (char *)v17 + 1 >= (char *)a3 + 1 ) v19 = v16 * 4 + 4; v20 = v19 >> 2; do { v21 = v20--; if ( v13[v20 + 5] ) { _BitScanReverse(&v22, v13[v20 + 5]); v13[4] = v21; v20 = 32 * v21 - (v22 ^ 0x1F); goto LABEL_15; } } while ( v20 ); v13[4] = 0; LABEL_15: v23 = __trailz_D2A((int)v13); v142[0] = v23; v127 = a2; if ( v23 ) { __rshift_D2A((int)v13, v23); v20 -= v142[0]; v127 = v142[0] + a2; } if ( !v13[4] ) { __Bfree_D2A((unsigned int)v13); goto LABEL_28; } v24 = __b2d_D2A((int)v13, v142); v25 = v127 + v20 - 1; LODWORD(v115) = LODWORD(v24); v26 = HIDWORD(v24) & 0xFFFFF | 0x3FF00000; HIDWORD(v115) = v26; v27 = abs32(v25) - 1077; v28 = (v115 - 1.5) * 0.289529654602168 + 0.1760912590558 + (long double)v25 * 0.301029995663981; if ( v27 > 0 ) v28 = v28 + (long double)v27 * 7.0e-17; v119 = (int)v28; if ( v28 < 0.0 && (long double)v119 != v28 ) --v119; HIDWORD(v115) = v26 + (v25 << 20); v122 = -v127; if ( (unsigned int)v119 > 0x16 ) { v136 = 1; LABEL_33: v131 = 0; if ( v127 <= 0 ) goto LABEL_34; goto LABEL_60; } if ( __tens_D2A[v119] > (long double)v115 ) { v136 = 0; --v119; goto LABEL_33; } v136 = 0; v131 = 0; if ( v127 <= 0 ) goto LABEL_47; LABEL_60: v122 = 0; v131 = v127; LABEL_34: if ( v119 < 0 ) { v30 = v119; v131 -= v119; v119 = 0; v126 = v30; v133 = -v30; goto LABEL_36; } LABEL_47: v133 = 0; v122 += v119; v126 = v119; LABEL_36: if ( (unsigned int)a5 > 9 ) { a5 = 0; goto LABEL_49; } v137 = 1; if ( a5 > 5 ) { a5 -= 4; v137 = 0; } switch ( a5 ) { case 4: v135 = 1; goto LABEL_64; case 5: v135 = 1; LABEL_44: v139 = a6 + v126; v31 = a6 + v126 + 1; v111 = v31; if ( v31 <= 0 ) { v142[0] = 1; v31 = 1; } else { v142[0] = a6 + v126 + 1; } goto LABEL_67; case 2: v135 = 0; LABEL_64: v31 = a6; if ( a6 <= 0 ) v31 = 1; v142[0] = v31; v139 = v31; v111 = v31; a6 = v31; LABEL_67: v32 = __rv_alloc_D2A(v31); v38 = v137 & ((unsigned int)v111 <= 0xE); v124 = a1[3] - 1; if ( a1[3] == 1 ) goto LABEL_72; goto LABEL_68; case 3: v135 = 0; goto LABEL_44; } LABEL_49: v142[0] = (int)((long double)v104 * 0.30103) + 3; v32 = __rv_alloc_D2A(v142[0]); v112 = a1[3]; v124 = v112 - 1; if ( v112 == 1 ) { if ( v126 <= 14 && v127 >= 0 ) { v111 = -1; v33 = __tens_D2A[v126]; goto LABEL_53; } a6 = 0; v111 = -1; v135 = 1; v139 = -1; goto LABEL_138; } a6 = 0; v38 = 0; v135 = 1; v139 = -1; v111 = -1; LABEL_68: if ( v124 < 0 ) v124 = 2; if ( (v8 & 8) == 0 ) { LABEL_97: if ( v127 >= 0 && v126 <= 14 ) { v33 = __tens_D2A[v126]; if ( a6 < 0 && v111 <= 0 ) { if ( !v111 && v33 * 5.0 < v115 ) { v106 = 0; v126 += 2; v128 = 0; LABEL_104: *(_BYTE *)v32 = 49; v34 = (int *)((char *)v32 + 1); v109 = 32; goto LABEL_105; } goto LABEL_132; } LABEL_53: ++v126; v34 = (int *)((char *)v32 + 1); v142[0] = 1; v105 = (int)(v115 / v33); *(_BYTE *)v32 = v105 + 48; v35 = v115 - (long double)v105 * v33; for ( i = v35 == 0.0; !i; i = v35 == 0.0 ) { if ( v142[0] == v111 ) { if ( v124 ) { v109 = 16; if ( v124 == 1 ) { v49 = *((_BYTE *)v34 - 1); goto LABEL_87; } } else { v102 = v35 + v35; v49 = *((_BYTE *)v34 - 1); if ( v102 <= v33 && (v102 != v33 || (v105 & 1) == 0) ) goto LABEL_241; while ( 1 ) { LABEL_87: v50 = (int *)((char *)v34 - 1); if ( v49 != 57 ) { v51 = v49 + 1; goto LABEL_89; } if ( v50 == v32 ) break; v49 = *((_BYTE *)v34 - 2); v34 = (int *)((char *)v34 - 1); } ++v126; v50 = v32; v51 = 49; *(_BYTE *)v32 = 48; LABEL_89: *(_BYTE *)v50 = v51; v109 = 32; } goto LABEL_57; } v37 = v35 * 10.0; v34 = (int *)((char *)v34 + 1); ++v142[0]; v105 = (int)(v37 / v33); *((_BYTE *)v34 - 1) = v105 + 48; v35 = v37 - (long double)v105 * v33; } goto LABEL_57; } if ( !v135 ) { v54 = v133; v55 = v131; v128 = 0; goto LABEL_109; } LABEL_138: if ( a5 <= 1 ) { v83 = a1[1]; v84 = v104 - v20 + 1; v142[0] = v84; if ( v127 - (v104 - v20) < v83 ) { v84 = v127 - v83 + 1; v142[0] = v84; } v122 += v84; v67 = v133; v55 = v131; v131 += v84; } else { v66 = v111 - 1; if ( v133 < v111 - 1 ) { v85 = v66 - v133; v133 = v111 - 1; v119 += v85; v67 = 0; } else { v67 = v133 - v66; } if ( v111 < 0 ) { v55 = v131 - v111; v142[0] = 0; } else { v122 += v111; v142[0] = v111; v55 = v131; v131 += v111; } } v108 = v67; v68 = __i2b_D2A(1); v54 = v108; v128 = v68; LABEL_109: if ( v55 > 0 && v122 > 0 ) { v56 = v55; if ( v55 > v122 ) v56 = v122; v131 -= v56; v55 -= v56; v122 -= v56; v142[0] = v56; } if ( v133 ) { if ( v135 ) { if ( v54 > 0 ) { v116 = v54; v128 = (int *)__pow5mult_D2A(v128, v54); v107 = __mult_D2A((int)v128, (int)v13); __Bfree_D2A((unsigned int)v13); v13 = v107; v54 = v116; } v57 = v133 - v54; if ( v133 == v54 ) goto LABEL_119; } else { v57 = v133; } v13 = (int *)__pow5mult_D2A(v13, v57); } LABEL_119: v58 = __i2b_D2A(1); v106 = v58; v59 = v20 == 1 && a5 <= 1; if ( v119 > 0 ) { v106 = (int *)__pow5mult_D2A(v58, v119); if ( !v59 || a2 <= a1[1] + 1 ) { v117 = 0; LABEL_136: _BitScanReverse(&v65, v106[v106[4] + 4]); v60 = v65 ^ 0x1F; LABEL_122: v61 = (v60 - (_BYTE)v122 - 4) & 0x1F; v142[0] = v61; v62 = v61; if ( v61 + v131 > 0 ) { v13 = __lshift_D2A(v13, v61 + v131); v62 = v142[0]; } v63 = v122 + v62; if ( v63 > 0 ) v106 = __lshift_D2A(v106, v63); v64 = a5 > 2; if ( v136 && (v121 = a5 > 2, v77 = __cmp_D2A((int)v13, (int)v106), v64 = a5 > 2, v77 < 0) ) { v13 = __multadd_D2A(v13, 10, 0); if ( !v135 ) { if ( v139 > 0 || !v121 ) { v111 = v139; LABEL_176: v34 = v32; v142[0] = 1; while ( 1 ) { v34 = (int *)((char *)v34 + 1); v79 = __quorem_D2A((int)v13, (int)v106) + 48; *((_BYTE *)v34 - 1) = v79; if ( (int)v142[0] >= v111 ) break; v78 = __multadd_D2A(v13, 10, 0); ++v142[0]; v13 = v78; } LOBYTE(v120) = v79; v76 = 0; LABEL_180: if ( v124 ) { v80 = v13[4]; v81 = *((_BYTE *)v34 - 1); if ( v124 != 2 ) { if ( v80 > 1 || v13[5] ) goto LABEL_190; goto LABEL_186; } } else { v114 = v76; v13 = __lshift_D2A(v13, 1); v96 = __cmp_D2A((int)v13, (int)v106); v76 = v114; v97 = v96 == 0; v98 = v96 <= 0; v81 = *((_BYTE *)v34 - 1); if ( !v98 || v97 && (v120 & 1) != 0 ) { while ( 1 ) { LABEL_190: v82 = (int *)((char *)v34 - 1); if ( v81 != 57 ) { v109 = 32; *(_BYTE *)v82 = v81 + 1; goto LABEL_167; } if ( v82 == v32 ) break; v81 = *((_BYTE *)v34 - 2); v34 = (int *)((char *)v34 - 1); } ++v126; *(_BYTE *)v32 = 49; v109 = 32; goto LABEL_167; } v80 = v13[4]; } if ( v80 > 1 || v13[5] ) v109 = 16; LABEL_186: while ( v81 == 48 ) { v81 = *((_BYTE *)v34 - 2); v34 = (int *)((char *)v34 - 1); } LABEL_167: v113 = (unsigned int)v76; __Bfree_D2A((unsigned int)v106); if ( !v128 ) goto LABEL_57; if ( v113 && (int *)v113 != v128 ) __Bfree_D2A(v113); goto LABEL_106; } goto LABEL_260; } v128 = __multadd_D2A(v128, 10, 0); if ( v139 <= 0 && v121 ) { LABEL_260: --v126; v111 = v139; goto LABEL_129; } v111 = v139; } else { if ( v111 <= 0 && v64 ) { LABEL_129: v34 = v32; if ( !v111 ) { v106 = __multadd_D2A(v106, 5, 0); if ( __cmp_D2A((int)v13, (int)v106) > 0 ) { v126 += 2; goto LABEL_104; } } LABEL_133: v109 = 16; v126 = -a6; LABEL_105: __Bfree_D2A((unsigned int)v106); if ( !v128 ) goto LABEL_57; LABEL_106: __Bfree_D2A((unsigned int)v128); goto LABEL_57; } ++v126; if ( !v135 ) goto LABEL_176; } v69 = v55 + v61; if ( v69 > 0 ) v128 = __lshift_D2A(v128, v69); v70 = v128; if ( v117 ) { v101 = __Balloc_D2A(v128[1]); memcpy(v101 + 3, v128 + 3, 4 * v128[4] + 8); v70 = __lshift_D2A(v101, 1); } v118 = v32; v134 = v32; v71 = v128; v142[0] = 1; while ( 1 ) { v123 = __quorem_D2A((int)v13, (int)v106); v120 = v123 + 48; v73 = __cmp_D2A((int)v13, (int)v71); v74 = __diff_D2A((int)v106, (int)v70); if ( v74[3] ) { __Bfree_D2A((unsigned int)v74); v72 = 1; } else { v132 = (unsigned int)v74; v129 = __cmp_D2A((int)v13, (int)v74); __Bfree_D2A(v132); v72 = a5 | v129; if ( a5 | v129 ) { v72 = v129; } else if ( !(v124 | *a3 & 1) ) { v130 = v71; v75 = v73; v32 = v134; v34 = (int *)((char *)v118 + 1); if ( v123 == 9 ) goto LABEL_259; if ( v75 <= 0 ) { if ( v13[4] > 1 || v13[5] ) v72 = 16; } else { LOBYTE(v120) = v123 + 49; v72 = 32; } v109 = v72; *(_BYTE *)v118 = v120; v76 = v130; v128 = v70; goto LABEL_167; } } if ( v73 < 0 || !(a5 | v73) && (*(_BYTE *)a3 & 1) == 0 ) break; v34 = (int *)((char *)v118 + 1); if ( v72 > 0 && v124 != 2 ) { v130 = v71; v32 = v134; if ( v123 == 9 ) goto LABEL_259; v109 = 32; v76 = v130; v128 = v70; *(_BYTE *)v118 = v123 + 49; goto LABEL_167; } *(_BYTE *)v118 = v120; if ( v142[0] == v111 ) { v76 = v71; v128 = v70; v32 = v134; goto LABEL_180; } v13 = __multadd_D2A(v13, 10, 0); if ( v71 == v70 ) { v71 = __multadd_D2A(v71, 10, 0); v70 = v71; } else { v71 = __multadd_D2A(v71, 10, 0); v70 = __multadd_D2A(v70, 10, 0); } ++v142[0]; v118 = (int *)((char *)v118 + 1); } v130 = v71; v32 = v134; v34 = (int *)((char *)v118 + 1); if ( v124 ) { if ( v13[4] <= 1 && !v13[5] ) { if ( v72 <= 0 ) { v76 = v130; v128 = v70; goto LABEL_257; } LABEL_252: v13 = __lshift_D2A(v13, 1); v103 = __cmp_D2A((int)v13, (int)v106); if ( v103 <= 0 && (v103 || (v120 & 1) == 0) ) { v124 = 32; goto LABEL_255; } if ( v123 != 9 ) { v124 = 32; LOBYTE(v120) = v123 + 49; goto LABEL_255; } LABEL_259: v76 = v130; v128 = v70; *(_BYTE *)v118 = 57; v81 = 57; goto LABEL_190; } if ( v124 != 2 ) { v99 = (int *)((char *)v118 + 1); while ( __cmp_D2A((int)v106, (int)v70) > 0 ) { *((_BYTE *)v99 - 1) = v120; v100 = __multadd_D2A(v70, 10, 0); if ( v130 == v70 ) v130 = v100; v110 = v100; v13 = __multadd_D2A(v13, 10, 0); v118 = v99; v99 = (int *)((char *)v99 + 1); v120 = __quorem_D2A((int)v13, (int)v106) + 48; v70 = v110; } v34 = v99; v32 = v134; if ( v120 != 57 ) { v76 = v130; v109 = 32; LOBYTE(v120) = v120 + 1; v128 = v70; goto LABEL_257; } goto LABEL_259; } LABEL_256: v76 = v130; v109 = 16; v128 = v70; goto LABEL_257; } if ( v72 > 0 ) goto LABEL_252; LABEL_255: if ( v13[4] > 1 ) goto LABEL_256; v76 = v130; v128 = v70; if ( v13[5] ) v109 = 16; else v109 = v124; LABEL_257: *(_BYTE *)v118 = v120; goto LABEL_167; } } else { v117 = 0; if ( !v59 || a1[1] + 1 >= a2 ) { LABEL_121: v60 = 31; if ( !v119 ) goto LABEL_122; goto LABEL_136; } } ++v131; ++v122; v117 = 1; goto LABEL_121; } v124 = 3 - v124; LABEL_72: if ( !v38 || v126 | v124 ) goto LABEL_97; v39 = v115; v142[0] = 0; if ( !v136 || v39 >= 1.0 ) { v40 = v39 + v39 + 7.0; LODWORD(v125) = LODWORD(v40); HIDWORD(v125) = HIDWORD(v40) - 54525952; if ( v111 ) { v140 = 0; v138 = v111; goto LABEL_78; } LABEL_94: v53 = v39 - 5.0; if ( v53 > v125 ) { v126 = 2; v106 = 0; v128 = 0; goto LABEL_104; } if ( -v125 > v53 ) { LABEL_132: v106 = 0; v34 = v32; v128 = 0; goto LABEL_133; } goto LABEL_96; } if ( !v111 ) { v52 = v39 + v39 + 7.0; LODWORD(v125) = LODWORD(v52); HIDWORD(v125) = HIDWORD(v52) - 54525952; goto LABEL_94; } if ( v139 <= 0 ) { LABEL_96: v124 = 0; goto LABEL_97; } v39 = v39 * 10.0; v138 = v139; v140 = -1; v95 = v39 * 3.0 + 7.0; LODWORD(v125) = LODWORD(v95); HIDWORD(v125) = HIDWORD(v95) - 54525952; LABEL_78: v41 = v125; v42 = dbl_4EFE18[v138]; if ( !v135 ) { v86 = v41 * v42; v141 = v20; v34 = v32; v87 = 0; v142[0] = 1; v88 = v39; while ( 1 ) { v89 = (int)v88; if ( (int)v88 ) { v87 = v38; v88 = v88 - (long double)(int)v88; } v34 = (int *)((char *)v34 + 1); v49 = v89 + 48; *((_BYTE *)v34 - 1) = v49; if ( v142[0] == v138 ) break; v88 = v88 * 10.0; v87 = v38; ++v142[0]; } v90 = v87; v20 = v141; if ( v90 ) { v94 = v86; v92 = v88; v93 = v94; } else { v91 = v86; v92 = v39; v93 = v91; } if ( v92 > v93 + 0.5 ) { v126 = v140 + 1; goto LABEL_87; } if ( 0.5 - v93 > v92 ) { v126 = v140 + 1; if ( v92 == 0.0 ) v109 = 0; else LABEL_241: v109 = 16; while ( v49 == 48 ) { v49 = *((_BYTE *)v34 - 2); v34 = (int *)((char *)v34 - 1); } goto LABEL_57; } goto LABEL_96; } v34 = (int *)((char *)v32 + 1); *(_BYTE *)v32 = (int)v39 + 48; v43 = 0.5 / v42 - v41; v44 = v39 - (long double)(int)v39; if ( v43 <= v44 ) { do { v48 = v43; if ( v43 > 1.0 - v44 ) { v49 = *((_BYTE *)v34 - 1); v126 = v140 + 1; goto LABEL_87; } if ( (int)++v142[0] >= v138 ) goto LABEL_96; v34 = (int *)((char *)v34 + 1); v45 = v44 * 10.0; v46 = (int)v45; v47 = v45 - (long double)(int)v45; v43 = v48 * 10.0; v44 = v47; *((_BYTE *)v34 - 1) = v46 + 48; } while ( v43 <= v47 ); } v126 = v140 + 1; if ( v44 == 0.0 ) v109 = 0; else v109 = 16; LABEL_57: __Bfree_D2A((unsigned int)v13); *(_BYTE *)v34 = 0; *a7 = v126; if ( a8 ) *a8 = v34; *a4 |= v109; return v32; } // 4EFE18: using guessed type double dbl_4EFE18[]; // 4EFE20: using guessed type double __tens_D2A[24]; // 4F0329: using guessed type void **off_4F0329; // 434F60: using guessed type unsigned int var_20[8]; //----- (004365D0) -------------------------------------------------------- int *__cdecl __rv_alloc_D2A(unsigned int a1) { int v1; // ebx int v2; // eax int *v3; // eax v1 = 0; if ( a1 > 0x13 ) { v2 = 4; do { v2 *= 2; ++v1; } while ( v2 + 16 <= a1 ); } v3 = __Balloc_D2A(v1); *v3 = v1; return v3 + 1; } //----- (00436610) -------------------------------------------------------- int *__cdecl __nrv_alloc_D2A(char *a1, _DWORD *a2, unsigned int a3) { int v3; // eax int v4; // edi int *v5; // eax char *v6; // edx char v7; // cl int *v8; // edi _BYTE *v9; // eax char v10; // cl if ( a3 <= 0x13 ) { v4 = 0; } else { v3 = 4; v4 = 0; do { v3 *= 2; ++v4; } while ( v3 + 16 <= a3 ); } v5 = __Balloc_D2A(v4); v6 = a1 + 1; *v5 = v4; v7 = *a1; v8 = v5 + 1; *((_BYTE *)v5 + 4) = *a1; v9 = v5 + 1; if ( v7 ) { do { v10 = *v6; ++v9; ++v6; *v9 = v10; } while ( v10 ); } if ( a2 ) *a2 = v9; return v8; } //----- (00436690) -------------------------------------------------------- void __cdecl __freedtoa(_DWORD *a1) { int v1; // ecx v1 = *(a1 - 1); *a1 = v1; a1[1] = 1 << v1; __Bfree_D2A((unsigned int)(a1 - 1)); } //----- (004366B0) -------------------------------------------------------- unsigned int __cdecl __quorem_D2A(int a1, int a2) { int v2; // ebx unsigned int result; // eax unsigned int *v4; // esi unsigned int v5; // edi int v6; // eax __int64 v7; // kr00_8 __int64 v8; // rcx int v9; // ecx unsigned int *v10; // ebp __int64 v11; // rcx __int64 v12; // rax _DWORD *v13; // edx unsigned int v14; // eax int v15; // edx unsigned int v16; // [esp+1Ch] [ebp-50h] __int64 v17; // [esp+20h] [ebp-4Ch] __int64 v18; // [esp+30h] [ebp-3Ch] _DWORD *v19; // [esp+38h] [ebp-34h] int v20; // [esp+3Ch] [ebp-30h] unsigned int v21; // [esp+40h] [ebp-2Ch] unsigned int v22; // [esp+44h] [ebp-28h] int v23; // [esp+48h] [ebp-24h] _DWORD *v24; // [esp+4Ch] [ebp-20h] v2 = *(_DWORD *)(a2 + 16); result = 0; v23 = v2; if ( *(_DWORD *)(a1 + 16) >= v2 ) { v4 = (unsigned int *)(a1 + 20); v22 = a1 + 20; v5 = a2 + 20; v20 = v2 - 1; v6 = 4 * (v2 - 1); v16 = a2 + 20; v24 = (_DWORD *)(a1 + 20 + v6); v19 = (_DWORD *)(a2 + 20 + v6); v21 = *v24 / (unsigned int)(*v19 + 1); if ( *v24 >= (unsigned int)(*v19 + 1) ) { v18 = 0LL; v17 = 0LL; do { v5 += 4; v7 = v18 + *(unsigned int *)(v5 - 4) * (unsigned __int64)v21; v18 = HIDWORD(v7); v8 = *v4++ - (v17 + (unsigned int)v7); *(v4 - 1) = v8; v17 = BYTE4(v8) & 1; } while ( (unsigned int)v19 >= v5 ); if ( !*v24 ) { if ( v22 < (unsigned int)(v24 - 1) ) { v9 = v20; do { if ( v24[v9 - v23] ) break; --v9; } while ( v23 - 2 - ((unsigned int)(v6 - 5) >> 2) != v9 ); v20 = v9; } *(_DWORD *)(a1 + 16) = v20; } } if ( __cmp_D2A(a1, a2) >= 0 ) { v10 = (unsigned int *)(a1 + 20); v11 = 0LL; ++v21; do { v16 += 4; v12 = *v10++ - (v11 + *(unsigned int *)(v16 - 4)); *(v10 - 1) = v12; v11 = BYTE4(v12) & 1; } while ( (unsigned int)v19 >= v16 ); v13 = (_DWORD *)(v22 + 4 * v20); if ( !*v13 ) { if ( v22 < (unsigned int)(v13 - 1) ) { v14 = v20 - 1 - (((unsigned int)v13 - a1 - 25) >> 2); v15 = v20; do { if ( *(_DWORD *)(v22 + 4 * v15 - 4) ) break; --v15; } while ( v15 != v14 ); v20 = v15; } *(_DWORD *)(a1 + 16) = v20; } } return v21; } return result; } //----- (00436B50) -------------------------------------------------------- int __cdecl __gthr_win32_once(__gthread_once_t *once, void (*func)(void)) { if ( !once || !func ) return 22; if ( once->done ) return 0; if ( InterlockedIncrement(&once->started) ) { while ( !once->done ) Sleep(0); return 0; } func(); once->done = 1; return 0; } //----- (00436BD0) -------------------------------------------------------- int __cdecl __gthr_win32_key_create(__gthread_key_t *key, void (*dtor)(void *)) { DWORD v2; // eax v2 = TlsAlloc(); if ( v2 == -1 ) return GetLastError(); *key = v2; return __mingwthr_key_dtor(v2, (int)dtor); } //----- (00436C10) -------------------------------------------------------- int __cdecl __gthr_win32_key_delete(__gthread_key_t key) { if ( TlsFree(key) ) return 0; else return GetLastError(); } //----- (00436C40) -------------------------------------------------------- void *__cdecl __gthr_win32_getspecific(__gthread_key_t key) { DWORD LastError; // esi void *Value; // ebx LastError = GetLastError(); Value = TlsGetValue(key); SetLastError(LastError); return Value; } //----- (00436C70) -------------------------------------------------------- int __cdecl __gthr_win32_setspecific(__gthread_key_t key, const void *ptr) { if ( TlsSetValue(key, (LPVOID)ptr) ) return 0; else return GetLastError(); } //----- (00436CA0) -------------------------------------------------------- void __cdecl __gthr_win32_mutex_init_function(__gthread_mutex_t *mutex) { mutex->counter = -1; mutex->sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); } //----- (00436CE0) -------------------------------------------------------- void __cdecl __gthr_win32_mutex_destroy(__gthread_mutex_t *mutex) { CloseHandle(mutex->sema); } //----- (00436D00) -------------------------------------------------------- int __cdecl __gthr_win32_mutex_lock(__gthread_mutex_t *mutex) { if ( !InterlockedIncrement(&mutex->counter) || !WaitForSingleObject(mutex->sema, 0xFFFFFFFF) ) return 0; InterlockedDecrement(&mutex->counter); return 1; } //----- (00436D50) -------------------------------------------------------- int __cdecl __gthr_win32_mutex_trylock(__gthread_mutex_t *mutex) { return _InterlockedCompareExchange(&mutex->counter, 0, -1) >= 0; } //----- (00436D70) -------------------------------------------------------- int __cdecl __gthr_win32_mutex_unlock(__gthread_mutex_t *mutex) { LONG v1; // edx int result; // eax v1 = InterlockedDecrement(&mutex->counter); result = 0; if ( v1 >= 0 ) return !ReleaseSemaphore(mutex->sema, 1, 0); return result; } //----- (00436DC0) -------------------------------------------------------- void __cdecl __gthr_win32_recursive_mutex_init_function(__gthread_recursive_mutex_t *mutex) { mutex->counter = -1; mutex->depth = 0; mutex->owner = 0; mutex->sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); } //----- (00436E10) -------------------------------------------------------- int __cdecl __gthr_win32_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex) { unsigned int CurrentThreadId; // esi int result; // eax CurrentThreadId = GetCurrentThreadId(); result = InterlockedIncrement(&mutex->counter); if ( !result ) goto LABEL_4; if ( mutex->owner == CurrentThreadId ) { InterlockedDecrement(&mutex->counter); ++mutex->depth; return 0; } else { result = WaitForSingleObject(mutex->sema, 0xFFFFFFFF); if ( !result ) { LABEL_4: mutex->depth = 1; mutex->owner = CurrentThreadId; return result; } InterlockedDecrement(&mutex->counter); return 1; } } //----- (00436EA0) -------------------------------------------------------- int __cdecl __gthr_win32_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex) { unsigned int CurrentThreadId; // edx int result; // eax CurrentThreadId = GetCurrentThreadId(); if ( _InterlockedCompareExchange(&mutex->counter, 0, -1) < 0 ) { mutex->depth = 1; result = 0; mutex->owner = CurrentThreadId; } else { result = 1; if ( mutex->owner == CurrentThreadId ) { ++mutex->depth; return 0; } } return result; } //----- (00436EF0) -------------------------------------------------------- int __cdecl __gthr_win32_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex) { bool v1; // zf v1 = mutex->depth-- == 1; if ( v1 && (mutex->owner = 0, InterlockedDecrement(&mutex->counter) >= 0) ) return !ReleaseSemaphore(mutex->sema, 1, 0); else return 0; } //----- (00436F50) -------------------------------------------------------- int __cdecl __gthr_win32_recursive_mutex_destroy(__gthread_recursive_mutex_t *mutex) { CloseHandle(mutex->sema); return 0; } //----- (00436F70) -------------------------------------------------------- char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4) { int v6; // edx char *result; // eax _DWORD *v8; // eax int v9; // edx int v10; // ecx int v11; // ebp char v12; // dl int v13; // edi unsigned int v14; // ecx int v15; // ebp char v16; // dl int v17; // edi char v18; // di if ( a1 == 80 ) { v8 = (_DWORD *)(((unsigned int)a3 + 3) & 0xFFFFFFFC); v9 = *v8; result = (char *)(v8 + 1); *a4 = v9; } else { switch ( a1 & 0xF ) { case 0: case 3: case 0xB: v6 = *a3; result = (char *)(a3 + 1); goto LABEL_4; case 1: result = (char *)a3; v10 = 0; v11 = 0; do { v12 = *result++; v13 = (v12 & 0x7F) << v10; v10 += 7; v11 |= v13; } while ( v12 < 0 ); v6 = v11; goto LABEL_4; case 2: v6 = *(unsigned __int16 *)a3; result = (char *)a3 + 2; goto LABEL_4; case 4: case 0xC: v6 = *a3; result = (char *)(a3 + 2); goto LABEL_4; case 9: result = (char *)a3; v14 = 0; v15 = 0; do { v16 = *result++; v17 = (v16 & 0x7F) << v14; v14 += 7; v15 |= v17; } while ( v16 < 0 ); v18 = v16; v6 = v15; if ( v14 > 0x1F || (v18 & 0x40) == 0 ) goto LABEL_4; v6 = (-1 << v14) | v15; goto LABEL_5; case 0xA: v6 = *(__int16 *)a3; result = (char *)a3 + 2; LABEL_4: if ( !v6 ) goto LABEL_8; LABEL_5: if ( (a1 & 0x70) == 16 ) a2 = a3; v6 += (int)a2; if ( a1 < 0 ) *a4 = *(_DWORD *)v6; else LABEL_8: *a4 = v6; break; default: abort(); } } return result; } //----- (004370B0) -------------------------------------------------------- int __usercall base_of_encoded_value@(char a1@, _DWORD *a2@) { unsigned __int8 v2; // cl if ( a1 == -1 ) return 0; v2 = a1 & 0x70; if ( (a1 & 0x70) != 48 ) { if ( v2 > 0x30u ) { if ( v2 == 64 ) return a2[23]; if ( v2 == 80 ) return 0; } else { if ( v2 == 32 ) return a2[21]; if ( v2 <= 0x20u && (a1 & 0x60) == 0 ) return 0; } base_of_encoded_value_cold(); } return a2[22]; } //----- (00437120) -------------------------------------------------------- unsigned int __usercall execute_cfa_program@( int *a1@, unsigned int a2@, _DWORD *a3@, unsigned int a4) { unsigned int result; // eax unsigned int v6; // edx int *encoded_value_with_base; // ebx char v8; // cl unsigned int v9; // eax int v10; // ecx char v11; // si int v12; // edx int v13; // edi int v14; // ecx unsigned int v15; // esi char v16; // al int v17; // edx int v18; // edi int v19; // ecx char v20; // si int v21; // edx unsigned int v22; // eax int v23; // ecx char v24; // si int v25; // edx int **v26; // eax int v27; // esi int v28; // ecx char v29; // dl unsigned int v30; // eax int v31; // ecx char v32; // si int v33; // edx int v34; // edi unsigned int v35; // ecx unsigned int v36; // esi char v37; // al int v38; // edx unsigned int v39; // edx char v40; // si unsigned int v41; // esi int v42; // edi unsigned int v43; // eax int v44; // ecx char v45; // si int v46; // edx int v47; // edi int v48; // ecx unsigned int v49; // esi char v50; // al int v51; // edx int v52; // eax unsigned int v53; // ecx char v54; // si int v55; // edx int v56; // eax int v57; // ecx char v58; // si int v59; // edx int v60; // esi unsigned int v61; // ecx char v62; // dl int v63; // eax int v64; // esi unsigned int v65; // eax int v66; // ecx char v67; // si int v68; // edx int v69; // edi unsigned int v70; // ecx unsigned int v71; // esi char v72; // al int v73; // edx unsigned int v74; // edx char v75; // si unsigned int v76; // esi int v77; // edi unsigned int v78; // eax int v79; // ecx char v80; // si int v81; // edx int **v82; // eax int v83; // esi int v84; // ecx char v85; // dl int v86; // ecx char v87; // si int v88; // edx int v89; // ecx char v90; // si int v91; // edx int v92; // eax int v93; // ecx char v94; // si int v95; // edx int v96; // esi int v97; // ecx char v98; // dl int v99; // eax unsigned int v100; // eax int v101; // ecx char v102; // si int v103; // edx int v104; // edi int v105; // ecx unsigned int v106; // esi char v107; // al int v108; // edx int v109; // ecx char v110; // si int v111; // edx int v112; // ecx char v113; // si int v114; // edx int v115; // ecx char v116; // si int v117; // edx unsigned int v118; // eax int v119; // ecx char v120; // si int v121; // edx int v122; // edi int v123; // ecx unsigned int v124; // esi char v125; // al int v126; // edx int v127; // esi int v128; // ecx int v129; // edi char v130; // dl int v131; // eax int v132; // esi int v133; // esi int v134; // ecx char v135; // dl char v136; // si int *v137; // eax int v138; // edi void *v139; // esp void *v140; // esp int v141; // [esp-A0h] [ebp-E8h] BYREF unsigned int v142; // [esp+10h] [ebp-38h] unsigned int v143; // [esp+14h] [ebp-34h] _DWORD *v144; // [esp+18h] [ebp-30h] unsigned int v145; // [esp+1Ch] [ebp-2Ch] unsigned int v146[7]; // [esp+2Ch] [ebp-1Ch] BYREF result = a4; v143 = a2; v144 = a3; *(_DWORD *)(a4 + 144) = 0; v142 = 0; if ( (unsigned int)a1 < a2 ) { while ( 1 ) { v6 = *(_DWORD *)(a4 + 164); v145 = v144[24]; result = v144[19] + (v145 >> 31); if ( v6 >= result ) break; result = *(unsigned __int8 *)a1; encoded_value_with_base = (int *)((char *)a1 + 1); v8 = *(_BYTE *)a1 & 0xC0; switch ( v8 ) { case 64: result = *(_DWORD *)(a4 + 176) * (result & 0x3F); *(_DWORD *)(a4 + 164) = result + v6; break; case -128: v127 = 0; v128 = 0; v129 = result & 0x3F; LOBYTE(v145) = result & 0x3F; do { v130 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v131 = (v130 & 0x7F) << v128; v128 += 7; v127 |= v131; } while ( v130 < 0 ); result = a4; v132 = *(_DWORD *)(a4 + 172) * v127; if ( (unsigned __int8)v145 <= 0x11u ) { result = a4 + 8 * v129; *(_DWORD *)(result + 4) = 1; *(_DWORD *)result = v132; } break; case -64: result &= 0x3Fu; if ( (*(_BYTE *)a1 & 0x3Fu) <= 0x11 ) LABEL_108: *(_DWORD *)(a4 + 8 * result + 4) = 0; break; default: switch ( (char)result ) { case 0: case 45: goto LABEL_13; case 1: v136 = *(_BYTE *)(a4 + 184); v137 = (int *)base_of_encoded_value(v136, v144); encoded_value_with_base = (int *)read_encoded_value_with_base( v136, v137, encoded_value_with_base, (int *)v146); result = v146[0]; *(_DWORD *)(a4 + 164) = v146[0]; goto LABEL_13; case 2: encoded_value_with_base = (int *)((char *)a1 + 2); result = *(_DWORD *)(a4 + 176) * *((unsigned __int8 *)a1 + 1); *(_DWORD *)(a4 + 164) = result + v6; goto LABEL_13; case 3: encoded_value_with_base = (int *)((char *)a1 + 3); result = *(_DWORD *)(a4 + 176) * *(unsigned __int16 *)((char *)a1 + 1); *(_DWORD *)(a4 + 164) = result + v6; goto LABEL_13; case 4: encoded_value_with_base = (int *)((char *)a1 + 5); result = a4; *(_DWORD *)(a4 + 164) = *(int *)((char *)a1 + 1) * *(_DWORD *)(a4 + 176) + v6; goto LABEL_13; case 5: v118 = 0; v119 = 0; do { v120 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v121 = (v120 & 0x7F) << v119; v119 += 7; v118 |= v121; } while ( v120 < 0 ); v122 = 0; v123 = 0; v124 = v118; do { v125 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v126 = (v125 & 0x7F) << v123; v123 += 7; v122 |= v126; } while ( v125 < 0 ); result = v124; v76 = a4; v77 = *(_DWORD *)(a4 + 172) * v122; if ( result <= 0x11 ) goto LABEL_105; goto LABEL_13; case 6: result = 0; v115 = 0; do { v116 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v117 = (v116 & 0x7F) << v115; v115 += 7; result |= v117; } while ( v116 < 0 ); if ( result > 0x11 ) goto LABEL_13; goto LABEL_108; case 7: result = 0; v112 = 0; do { v113 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v114 = (v113 & 0x7F) << v112; v112 += 7; result |= v114; } while ( v113 < 0 ); if ( result <= 0x11 ) *(_DWORD *)(a4 + 8 * result + 4) = 6; goto LABEL_13; case 8: result = 0; v109 = 0; do { v110 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v111 = (v110 & 0x7F) << v109; v109 += 7; result |= v111; } while ( v110 < 0 ); if ( result > 0x11 ) goto LABEL_13; goto LABEL_108; case 9: v100 = 0; v101 = 0; do { v102 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v103 = (v102 & 0x7F) << v101; v101 += 7; v100 |= v103; } while ( v102 < 0 ); v104 = 0; v105 = 0; v106 = v100; do { v107 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v108 = (v107 & 0x7F) << v105; v105 += 7; v104 |= v108; } while ( v107 < 0 ); result = v106; if ( v106 <= 0x11 ) { result = a4 + 8 * v106; *(_DWORD *)(result + 4) = 2; *(_DWORD *)result = v104; } goto LABEL_13; case 10: result = v142; if ( v142 ) { v142 = *(_DWORD *)(v142 + 144); } else { v139 = alloca(176); v140 = alloca(176); result = (unsigned int)&v141; } qmemcpy((void *)result, (const void *)a4, 0xA4u); *(_DWORD *)(a4 + 144) = result; goto LABEL_13; case 11: result = *(_DWORD *)(a4 + 144); qmemcpy((void *)a4, (const void *)result, 0xA4u); v138 = v142; v142 = result; *(_DWORD *)(result + 144) = v138; goto LABEL_13; case 12: v92 = 0; v93 = 0; do { v94 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v95 = (v94 & 0x7F) << v93; v93 += 7; v92 |= v95; } while ( v94 < 0 ); v96 = 0; v97 = 0; *(_DWORD *)(a4 + 152) = v92; do { v98 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v99 = (v98 & 0x7F) << v97; v97 += 7; v96 |= v99; } while ( v98 < 0 ); result = a4; *(_DWORD *)(a4 + 148) = v96; *(_DWORD *)(a4 + 160) = 1; goto LABEL_13; case 13: result = 0; v89 = 0; do { v90 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v91 = (v90 & 0x7F) << v89; v89 += 7; result |= v91; } while ( v90 < 0 ); *(_DWORD *)(a4 + 152) = result; *(_DWORD *)(a4 + 160) = 1; goto LABEL_13; case 14: result = 0; v86 = 0; do { v87 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v88 = (v87 & 0x7F) << v86; v86 += 7; result |= v88; } while ( v87 < 0 ); *(_DWORD *)(a4 + 148) = result; goto LABEL_13; case 15: v133 = 0; v134 = 0; *(_DWORD *)(a4 + 156) = encoded_value_with_base; *(_DWORD *)(a4 + 160) = 2; do { v135 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); result = (v135 & 0x7F) << v134; v134 += 7; v133 |= result; } while ( v135 < 0 ); encoded_value_with_base = (int *)((char *)encoded_value_with_base + v133); goto LABEL_13; case 16: v78 = 0; v79 = 0; do { v80 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v81 = (v80 & 0x7F) << v79; v79 += 7; v78 |= v81; } while ( v80 < 0 ); if ( v78 <= 0x11 ) { v82 = (int **)(a4 + 8 * v78); v82[1] = (int *)3; *v82 = encoded_value_with_base; } v83 = 0; v84 = 0; do { v85 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); result = (v85 & 0x7F) << v84; v84 += 7; v83 |= result; } while ( v85 < 0 ); encoded_value_with_base = (int *)((char *)encoded_value_with_base + v83); goto LABEL_13; case 17: v65 = 0; v66 = 0; do { v67 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v68 = (v67 & 0x7F) << v66; v66 += 7; v65 |= v68; } while ( v67 < 0 ); v69 = 0; v70 = 0; v71 = v65; do { v72 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v73 = (v72 & 0x7F) << v70; v70 += 7; v69 |= v73; } while ( v72 < 0 ); v74 = v71; v75 = v72; result = v74; if ( v70 <= 0x1F && (v75 & 0x40) != 0 ) v69 |= -(1 << v70); v76 = a4; v77 = *(_DWORD *)(a4 + 172) * v69; if ( v74 > 0x11 ) goto LABEL_13; LABEL_105: result = v76 + 8 * result; *(_DWORD *)(result + 4) = 1; *(_DWORD *)result = v77; goto LABEL_13; case 18: v56 = 0; v57 = 0; do { v58 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v59 = (v58 & 0x7F) << v57; v57 += 7; v56 |= v59; } while ( v58 < 0 ); v60 = 0; v61 = 0; *(_DWORD *)(a4 + 152) = v56; do { v62 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v63 = (v62 & 0x7F) << v61; v61 += 7; v60 |= v63; } while ( v62 < 0 ); if ( v61 <= 0x1F && (v62 & 0x40) != 0 ) v60 |= -(1 << v61); result = a4; v64 = *(_DWORD *)(a4 + 172) * v60; *(_DWORD *)(a4 + 160) = 1; *(_DWORD *)(a4 + 148) = v64; goto LABEL_13; case 19: v52 = 0; v53 = 0; do { v54 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v55 = (v54 & 0x7F) << v53; v53 += 7; v52 |= v55; } while ( v54 < 0 ); if ( v53 <= 0x1F && (v54 & 0x40) != 0 ) v52 |= -(1 << v53); result = *(_DWORD *)(a4 + 172) * v52; *(_DWORD *)(a4 + 148) = result; goto LABEL_13; case 20: v43 = 0; v44 = 0; do { v45 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v46 = (v45 & 0x7F) << v44; v44 += 7; v43 |= v46; } while ( v45 < 0 ); v47 = 0; v48 = 0; v49 = v43; do { v50 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v51 = (v50 & 0x7F) << v48; v48 += 7; v47 |= v51; } while ( v50 < 0 ); result = v49; v41 = a4; v42 = *(_DWORD *)(a4 + 172) * v47; if ( result <= 0x11 ) goto LABEL_40; goto LABEL_13; case 21: v30 = 0; v31 = 0; do { v32 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v33 = (v32 & 0x7F) << v31; v31 += 7; v30 |= v33; } while ( v32 < 0 ); v34 = 0; v35 = 0; v36 = v30; do { v37 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v38 = (v37 & 0x7F) << v35; v35 += 7; v34 |= v38; } while ( v37 < 0 ); v39 = v36; v40 = v37; result = v39; if ( v35 <= 0x1F && (v40 & 0x40) != 0 ) v34 |= -(1 << v35); v41 = a4; v42 = *(_DWORD *)(a4 + 172) * v34; if ( v39 > 0x11 ) goto LABEL_13; LABEL_40: result = v41 + 8 * result; *(_DWORD *)(result + 4) = 4; *(_DWORD *)result = v42; goto LABEL_13; case 22: v22 = 0; v23 = 0; do { v24 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v25 = (v24 & 0x7F) << v23; v23 += 7; v22 |= v25; } while ( v24 < 0 ); if ( v22 <= 0x11 ) { v26 = (int **)(a4 + 8 * v22); v26[1] = (int *)5; *v26 = encoded_value_with_base; } v27 = 0; v28 = 0; do { v29 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); result = (v29 & 0x7F) << v28; v28 += 7; v27 |= result; } while ( v29 < 0 ); encoded_value_with_base = (int *)((char *)encoded_value_with_base + v27); goto LABEL_13; case 46: result = 0; v19 = 0; do { v20 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v21 = (v20 & 0x7F) << v19; v19 += 7; result |= v21; } while ( v20 < 0 ); v144[26] = result; if ( v143 <= (unsigned int)encoded_value_with_base ) return result; goto LABEL_14; case 47: v9 = 0; v10 = 0; do { v11 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v12 = (v11 & 0x7F) << v10; v10 += 7; v9 |= v12; } while ( v11 < 0 ); v13 = 0; v14 = 0; v15 = v9; do { v16 = *(_BYTE *)encoded_value_with_base; encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); v17 = (v16 & 0x7F) << v14; v14 += 7; v13 |= v17; } while ( v16 < 0 ); result = v15; v18 = *(_DWORD *)(a4 + 172) * v13; if ( v15 <= 0x11 ) { result = a4 + 8 * v15; *(_DWORD *)(result + 4) = 1; *(_DWORD *)result = -v18; } goto LABEL_13; default: abort(); } } LABEL_13: if ( v143 <= (unsigned int)encoded_value_with_base ) break; LABEL_14: a1 = encoded_value_with_base; } } return result; } // 437120: using guessed type unsigned int var_1C[7]; //----- (004378C0) -------------------------------------------------------- void init_dwarf_reg_size_table() { dwarf_reg_size_table[0] = 4; dwarf_reg_size_table[2] = 4; dwarf_reg_size_table[1] = 4; dwarf_reg_size_table[3] = 4; dwarf_reg_size_table[6] = 4; dwarf_reg_size_table[7] = 4; dwarf_reg_size_table[5] = 4; dwarf_reg_size_table[4] = 4; dwarf_reg_size_table[11] = 12; dwarf_reg_size_table[12] = 12; dwarf_reg_size_table[13] = 12; dwarf_reg_size_table[14] = 12; dwarf_reg_size_table[15] = 12; dwarf_reg_size_table[16] = 12; dwarf_reg_size_table[9] = 4; dwarf_reg_size_table[8] = 4; } //----- (00437940) -------------------------------------------------------- int __usercall uw_frame_state_for@(dwarf_eh_bases *a1@, _DWORD *a2@) { char *dbase; // edx char *v5; // ebx char v6; // dl int v7; // edi int v8; // ecx int v9; // eax unsigned int v10; // ecx int v11; // edi char *v12; // esi char v13; // dl int v14; // eax int v15; // ecx int v16; // edi char v17; // dl int v18; // eax char v19; // al char *encoded_value_with_base; // ecx char *v21; // edi char v22; // al char v23; // al unsigned __int8 v24; // al int v25; // ebx int *v26; // ebx int v27; // edi int v28; // ecx char v29; // dl int v30; // eax int *v31; // edi int result; // eax int v33; // eax char v34; // al char v35; // bl int *v36; // eax char *v37; // edx _DWORD *tbase; // ecx char v39; // al int *v40; // eax int v41; // edi int v42; // ecx char v43; // dl int v44; // eax int *v45; // eax int v46; // eax int v47; // edx int v48; // ecx char v49; // al const fde *FDE; // [esp+18h] [ebp-44h] int v51; // [esp+1Ch] [ebp-40h] char v52; // [esp+1Ch] [ebp-40h] char *v53; // [esp+1Ch] [ebp-40h] int v54; // [esp+20h] [ebp-3Ch] unsigned __int8 v55; // [esp+24h] [ebp-38h] int *v56; // [esp+24h] [ebp-38h] unsigned int v57; // [esp+28h] [ebp-34h] int v58[8]; // [esp+3Ch] [ebp-20h] BYREF memset(a2, 0, 0xC0u); a1[8].func = 0; a1[6].func = 0; dbase = (char *)a1[6].dbase; if ( !dbase ) return 5; FDE = _Unwind_Find_FDE(&dbase[((unsigned int)a1[8].tbase >> 31) - 1], a1 + 7); if ( !FDE ) { v37 = (char *)a1[6].dbase; tbase = a1[6].tbase; v39 = *(v37 - 5); if ( *(v37 - 2) == -1 && *(v37 - 1) == -48 && *v37 == -125 && v37[1] == -8 ) goto LABEL_81; if ( v39 == -24 ) { v49 = *v37; if ( *(v37 - 4) == 104 && v49 == -61 ) { LABEL_81: v46 = *(_DWORD *)(*tbase + 4); goto LABEL_72; } if ( v49 == -125 ) { result = 5; if ( v37[1] != -60 || v37[3] != -72 ) return result; v46 = tbase[14]; LABEL_72: v47 = *(_DWORD *)(v46 + 196); a2[1] = 1; a2[40] = 1; a2[7] = 1; a2[38] = 4; a2[37] = v47 - (_DWORD)tbase; *a2 = v46 + 176 - v47; a2[3] = 1; a2[6] = v46 + 164 - v47; a2[5] = 1; a2[2] = v46 + 172 - v47; a2[13] = 1; a2[4] = v46 + 168 - v47; a2[15] = 1; a2[12] = v46 + 160 - v47; a2[11] = 1; a2[14] = v46 + 156 - v47; v48 = v46 + 180 - v47; a2[17] = 1; a2[16] = v46 + 184 - v47; result = 0; a2[10] = v48; a2[45] = 8; *((_BYTE *)a2 + 187) = 1; return result; } } else if ( v39 == -117 && *(v37 - 4) == 77 && *v37 == 100 ) { if ( v37[1] == -117 ) { v46 = tbase[2]; goto LABEL_72; } return 5; } if ( *(v37 - 1) == -125 && *v37 == 9 && !v37[1] && v37[2] == 45 && !v37[3] && v37[4] == 16 && !v37[5] ) { a2[40] = 1; result = 0; a2[38] = 4; a2[37] = 4; a2[3] = 1; a2[2] = -4; a2[45] = 8; a2[17] = 1; a2[16] = 0; *((_BYTE *)a2 + 187) = 1; return result; } return 5; } a2[41] = a1[7].func; v54 = (int)&FDE->CIE_delta - FDE->CIE_delta; v51 = v54 + 9; v5 = (char *)(v51 + strlen((const char *)v51) + 1); if ( *(_BYTE *)(v54 + 9) == 101 && *(_BYTE *)(v54 + 10) == 104 ) { v33 = *(_DWORD *)v5; v5 += 4; a2[47] = v33; v51 = v54 + 11; } v6 = *v5; v55 = *(_BYTE *)(v54 + 8); if ( v55 > 3u ) { if ( v6 != 4 || v5[1] ) return 3; v6 = v5[2]; v5 += 2; } v7 = 0; v8 = 0; while ( 1 ) { ++v5; v9 = (v6 & 0x7F) << v8; v8 += 7; v7 |= v9; if ( v6 >= 0 ) break; v6 = *v5; } v57 = (unsigned int)a2; v10 = 0; a2[44] = v7; v11 = 0; do { v12 = v5; v13 = *v5++; v14 = (v13 & 0x7F) << v10; v10 += 7; v11 |= v14; } while ( v13 < 0 ); if ( v10 <= 0x1F && (v13 & 0x40) != 0 ) v11 |= -1 << v10; v15 = 0; *(_DWORD *)(v57 + 172) = v11; v16 = 0; if ( v55 == 1 ) { *(_DWORD *)(v57 + 180) = (unsigned __int8)*v5; v5 = v12 + 2; } else { do { v17 = *v5++; v18 = (v17 & 0x7F) << v15; v15 += 7; v16 |= v18; } while ( v17 < 0 ); *(_DWORD *)(v57 + 180) = v16; } *(_BYTE *)(v57 + 185) = -1; v19 = *(_BYTE *)v51; if ( *(_BYTE *)v51 == 122 ) { v41 = 0; v42 = 0; do { v43 = *v5++; v44 = (v43 & 0x7F) << v42; v42 += 7; v41 |= v44; } while ( v43 < 0 ); *(_BYTE *)(v57 + 186) = 1; v56 = (int *)&v5[v41]; v19 = *(_BYTE *)(v51 + 1); if ( !v19 ) goto LABEL_27; ++v51; } else { v56 = 0; if ( !v19 ) { v56 = (int *)v5; goto LABEL_27; } } encoded_value_with_base = v5; v21 = (char *)(v51 + 1); do { while ( v19 == 76 ) { v22 = *encoded_value_with_base; ++v21; ++encoded_value_with_base; *(_BYTE *)(v57 + 185) = v22; v19 = *(v21 - 1); if ( !v19 ) goto LABEL_26; } switch ( v19 ) { case 'R': v34 = *encoded_value_with_base++; *(_BYTE *)(v57 + 184) = v34; break; case 'P': v35 = *encoded_value_with_base; v53 = encoded_value_with_base; v36 = (int *)base_of_encoded_value(*encoded_value_with_base, a1); encoded_value_with_base = read_encoded_value_with_base(v35, v36, (int *)(v53 + 1), v58); *(_DWORD *)(v57 + 168) = v58[0]; break; case 'S': *(_BYTE *)(v57 + 187) = 1; break; default: goto LABEL_55; } v19 = *v21++; } while ( v19 ); LABEL_26: if ( !v56 ) { v56 = (int *)encoded_value_with_base; LABEL_55: if ( !v56 ) return 3; } LABEL_27: execute_cfa_program(v56, v54 + *(_DWORD *)v54 + 4, a1, v57); v23 = *(_BYTE *)(v57 + 184); if ( v23 == -1 ) { v25 = 8; goto LABEL_33; } v24 = v23 & 7; if ( v24 == 2 ) { v25 = 12; goto LABEL_33; } if ( v24 <= 2u ) { if ( v24 ) goto LABEL_90; LABEL_46: v25 = 16; goto LABEL_33; } if ( v24 == 3 ) goto LABEL_46; if ( v24 != 4 ) LABEL_90: uw_frame_state_for_cold(); v25 = 24; LABEL_33: v26 = (int *)((char *)FDE + v25); v52 = *(_BYTE *)(v57 + 185); if ( *(_BYTE *)(v57 + 186) ) { v27 = 0; v28 = 0; do { v29 = *(_BYTE *)v26; v26 = (int *)((char *)v26 + 1); v30 = (v29 & 0x7F) << v28; v28 += 7; v27 |= v30; } while ( v29 < 0 ); v31 = (int *)((char *)v26 + v27); if ( v52 != -1 ) { v45 = (int *)base_of_encoded_value(v52, a1); read_encoded_value_with_base(v52, v45, v26, v58); a1[6].func = (void *)v58[0]; } } else { v31 = v26; if ( v52 != -1 ) { v40 = (int *)base_of_encoded_value(v52, a1); v31 = (int *)read_encoded_value_with_base(v52, v40, v26, v58); a1[6].func = (void *)v58[0]; } } execute_cfa_program(v31, (unsigned int)&FDE->CIE_delta + FDE->length, a1, v57); return 0; } //----- (00437FD0) -------------------------------------------------------- int __usercall uw_install_context_1@(int a1@, int a2@) { int v2; // eax int v3; // eax _DWORD *v4; // ecx _BYTE *v5; // esi int v6; // ebp int result; // eax _DWORD *v8; // eax int v10; // [esp+1Ch] [ebp-20h] BYREF v2 = *(_DWORD *)(a2 + 96); if ( ((v2 & 0x40000000) == 0 || !*(_BYTE *)(a2 + 112)) && !*(_DWORD *)(a2 + 16) ) { if ( dwarf_reg_size_table[4] != 4 ) goto LABEL_32; v10 = *(_DWORD *)(a2 + 72); if ( (v2 & 0x40000000) != 0 ) *(_BYTE *)(a2 + 112) = 0; *(_DWORD *)(a2 + 16) = &v10; } v3 = 0; do { while ( 1 ) { v4 = *(_DWORD **)(a1 + 4 * v3); v5 = *(_BYTE **)(a2 + 4 * v3); if ( *(_BYTE *)(a1 + v3 + 108) ) goto LABEL_32; if ( *(_BYTE *)(a2 + v3 + 108) ) { if ( v4 ) { if ( dwarf_reg_size_table[v3] != 4 ) goto LABEL_32; *v4 = v5; } goto LABEL_8; } if ( v4 != 0 && v5 != 0 && v4 != (_DWORD *)v5 ) break; LABEL_8: if ( ++v3 == 17 ) goto LABEL_18; } v6 = dwarf_reg_size_table[v3]; if ( (unsigned __int8)v6 <= 3u ) { if ( dwarf_reg_size_table[v3] ) { *(_BYTE *)v4 = *v5; if ( (v6 & 2) != 0 ) *(_WORD *)((char *)v4 + v6 - 2) = *(_WORD *)&v5[v6 - 2]; } goto LABEL_8; } ++v3; *v4 = *(_DWORD *)v5; *(_DWORD *)((char *)v4 + v6 - 4) = *(_DWORD *)&v5[v6 - 4]; qmemcpy( (void *)((unsigned int)(v4 + 1) & 0xFFFFFFFC), (const void *)(v5 - ((char *)v4 - ((unsigned int)(v4 + 1) & 0xFFFFFFFC))), 4 * (((unsigned int)v4 + v6 - ((unsigned int)(v4 + 1) & 0xFFFFFFFC)) >> 2)); } while ( v3 != 17 ); LABEL_18: if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 && *(_BYTE *)(a1 + 112) ) return 0; result = 0; if ( !*(_DWORD *)(a1 + 16) ) { v8 = *(_DWORD **)(a2 + 16); if ( (*(_BYTE *)(a2 + 99) & 0x40) != 0 && *(_BYTE *)(a2 + 112) ) return (int)v8 + *(_DWORD *)(a2 + 104) - *(_DWORD *)(a1 + 72); if ( dwarf_reg_size_table[4] == 4 ) { v8 = (_DWORD *)*v8; return (int)v8 + *(_DWORD *)(a2 + 104) - *(_DWORD *)(a1 + 72); } LABEL_32: uw_install_context_1_cold(); } return result; } //----- (00438160) -------------------------------------------------------- int __usercall execute_stack_op@(char *a1@, unsigned int a2@, int a3@, int a4) { int result; // eax int v6; // ebp int v7; // eax char v8; // dl char *v9; // esi int v10; // edi unsigned int v11; // ecx char v12; // bl int v13; // edx int v14; // eax _DWORD *v15; // esi int v16; // esi int v17; // edi int v18; // eax int v19; // ecx int v20; // esi int v21; // esi int v22; // eax int v23; // ecx int v24; // edx char v25; // si int *v26; // eax char *v27; // eax int v28; // ebx int v29; // esi int v30; // ecx int v31; // ecx unsigned __int8 v32; // al int v33; // edi int v34; // ecx char v35; // dl int v36; // eax int v37; // esi unsigned int v38; // ecx char v39; // al int v40; // edx _DWORD *v41; // eax unsigned int v42; // ecx char v43; // dl int v44; // eax int v45; // edi int v46; // ecx char v47; // dl int v48; // eax int v49; // ecx char v50; // dl int v51; // eax char *v52; // [esp+14h] [ebp-138h] char *v53; // [esp+14h] [ebp-138h] int v56; // [esp+28h] [ebp-124h] int v57; // [esp+2Ch] [ebp-120h] BYREF int v58[71]; // [esp+30h] [ebp-11Ch] result = a4; v58[0] = a4; if ( (unsigned int)a1 < a2 ) { v6 = 1; while ( 2 ) { v52 = a1 + 1; v7 = (unsigned __int8)*a1; v8 = *a1; switch ( (char)v7 ) { case 3: case 12: case 13: v16 = *(_DWORD *)(a1 + 1); v17 = v6; a1 += 5; goto LABEL_16; case 6: case 25: case 31: case 32: case 35: case -108: if ( !v6 ) goto LABEL_121; v17 = v6 - 1; v21 = v58[v6 - 1]; if ( (unsigned __int8)v7 <= 0x23u ) { switch ( v8 ) { case 6: v16 = *(_DWORD *)v21; ++a1; goto LABEL_16; case 25: ++a1; v16 = abs32(v21); goto LABEL_16; case 31: ++a1; v16 = -v21; goto LABEL_16; case 32: ++a1; v16 = ~v21; goto LABEL_16; case 35: v22 = 0; v23 = 0; do { v24 = (*v52++ & 0x7F) << v23; v23 += 7; v22 |= v24; } while ( *(v52 - 1) < 0 ); a1 = v52; v16 = v22 + v21; goto LABEL_16; default: goto _execute_stack_op_cold; } } if ( (_BYTE)v7 != 0x94 ) goto _execute_stack_op_cold; v32 = a1[1]; if ( v32 == 4 ) goto LABEL_116; if ( v32 > 4u ) { if ( v32 != 8 ) _execute_stack_op_cold: abort(); LABEL_116: v16 = *(_DWORD *)v21; a1 += 2; } else if ( v32 == 1 ) { v16 = *(unsigned __int8 *)v21; a1 += 2; } else { if ( v32 != 2 ) goto _execute_stack_op_cold; v16 = *(unsigned __int16 *)v21; a1 += 2; } LABEL_16: if ( v17 > 63 ) goto LABEL_121; v58[v17] = v16; v6 = v17 + 1; LABEL_18: if ( a2 > (unsigned int)a1 ) continue; if ( !v6 ) LABEL_121: abort(); result = v58[v6 - 1]; break; case 8: v16 = (unsigned __int8)a1[1]; v17 = v6; a1 += 2; goto LABEL_16; case 9: v16 = a1[1]; v17 = v6; a1 += 2; goto LABEL_16; case 10: v16 = *(unsigned __int16 *)(a1 + 1); v17 = v6; a1 += 3; goto LABEL_16; case 11: v16 = *(__int16 *)(a1 + 1); v17 = v6; a1 += 3; goto LABEL_16; case 14: case 15: v16 = *(_DWORD *)(a1 + 1); v17 = v6; a1 += 9; goto LABEL_16; case 16: ++a1; v16 = 0; v49 = 0; do { v50 = *a1++; v51 = (v50 & 0x7F) << v49; v49 += 7; v16 |= v51; } while ( v50 < 0 ); v17 = v6; goto LABEL_16; case 17: ++a1; v16 = 0; v42 = 0; do { v43 = *a1++; v44 = (v43 & 0x7F) << v42; v42 += 7; v16 |= v44; } while ( v43 < 0 ); v17 = v6; if ( v42 <= 0x1F && (v43 & 0x40) != 0 ) v16 |= -(1 << v42); goto LABEL_16; case 18: if ( !v6 ) goto LABEL_121; v16 = v58[v6 - 1]; ++a1; v17 = v6; goto LABEL_16; case 19: if ( !v6 ) goto LABEL_121; ++a1; --v6; goto LABEL_18; case 20: if ( v6 <= 1 ) goto LABEL_121; v16 = *(&v56 + v6); ++a1; v17 = v6; goto LABEL_16; case 21: v31 = (unsigned __int8)a1[1]; if ( v31 >= v6 - 1 ) goto LABEL_121; v17 = v6; a1 += 2; v16 = v58[v6 - 1 - v31]; goto LABEL_16; case 22: if ( v6 <= 1 ) goto LABEL_121; v30 = v58[v6 - 1]; v58[v6 - 1] = v58[v6 - 2]; ++a1; v58[v6 - 2] = v30; goto LABEL_18; case 23: if ( v6 <= 2 ) goto LABEL_121; v28 = v58[v6 - 1]; v29 = v58[v6 - 3]; v58[v6 - 1] = v58[v6 - 2]; v58[v6 - 2] = v29; v58[v6 - 3] = v28; a1 = v52; goto LABEL_18; case 26: case 27: case 28: case 29: case 30: case 33: case 34: case 36: case 37: case 38: case 39: case 41: case 42: case 43: case 44: case 45: case 46: if ( v6 > 1 ) { v17 = v6 - 2; v19 = v58[v6 - 1]; v20 = v58[v6 - 2]; switch ( v8 ) { case 26: ++a1; v16 = v19 & v20; goto LABEL_16; case 27: ++a1; v16 = v20 / v19; goto LABEL_16; case 28: ++a1; v16 = v20 - v19; goto LABEL_16; case 29: ++a1; v16 = v20 % (unsigned int)v19; goto LABEL_16; case 30: v16 = v19 * v20; ++a1; goto LABEL_16; case 33: ++a1; v16 = v19 | v20; goto LABEL_16; case 34: ++a1; v16 = v19 + v20; goto LABEL_16; case 36: ++a1; v16 = v20 << v19; goto LABEL_16; case 37: ++a1; v16 = (unsigned int)v20 >> v19; goto LABEL_16; case 38: ++a1; v16 = v20 >> v19; goto LABEL_16; case 39: ++a1; v16 = v19 ^ v20; goto LABEL_16; case 41: ++a1; v16 = v20 == v19; goto LABEL_16; case 42: ++a1; v16 = v20 >= v19; goto LABEL_16; case 43: ++a1; v16 = v20 > v19; goto LABEL_16; case 44: ++a1; v16 = v20 <= v19; goto LABEL_16; case 45: ++a1; v16 = v20 < v19; goto LABEL_16; case 46: ++a1; v16 = v20 != v19; goto LABEL_16; default: goto _execute_stack_op_cold; } } goto LABEL_121; case 40: if ( !v6 ) goto LABEL_121; if ( v58[--v6] ) a1 += *(__int16 *)(a1 + 1) + 3; else a1 += 3; goto LABEL_18; case 47: a1 += *(__int16 *)(a1 + 1) + 3; goto LABEL_18; case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 58: case 59: case 60: case 61: case 62: case 63: case 64: case 65: case 66: case 67: case 68: case 69: case 70: case 71: case 72: case 73: case 74: case 75: case 76: case 77: case 78: case 79: ++a1; v16 = v7 - 48; v17 = v6; goto LABEL_16; case 80: case 81: case 82: case 83: case 84: case 85: case 86: case 87: case 88: case 89: case 90: case 91: case 92: case 93: case 94: case 95: case 96: case 97: case 98: case 99: case 100: case 101: case 102: case 103: case 104: case 105: case 106: case 107: case 108: case 109: case 110: case 111: v18 = v7 - 80; if ( v18 > 17 ) goto LABEL_121; v16 = *(_DWORD *)(a3 + 4 * v18); if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v18 + 108) ) goto LABEL_28; if ( dwarf_reg_size_table[v18] != 4 ) goto LABEL_121; v16 = *(_DWORD *)v16; LABEL_28: ++a1; v17 = v6; goto LABEL_16; case 112: case 113: case 114: case 115: case 116: case 117: case 118: case 119: case 120: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case -128: case -127: case -126: case -125: case -124: case -123: case -122: case -121: case -120: case -119: case -118: case -117: case -116: case -115: case -114: case -113: v9 = a1 + 1; v10 = 0; v11 = 0; do { v12 = *v9++; v13 = (v12 & 0x7F) << v11; v11 += 7; v10 |= v13; } while ( v12 < 0 ); v53 = v9; if ( v11 <= 0x1F && (v12 & 0x40) != 0 ) v10 |= -(1 << v11); v14 = v7 - 112; if ( v14 > 17 ) goto LABEL_121; v15 = *(_DWORD **)(a3 + 4 * v14); if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v14 + 108) ) goto LABEL_14; if ( dwarf_reg_size_table[v14] != 4 ) goto LABEL_121; v15 = (_DWORD *)*v15; LABEL_14: v16 = (int)v15 + v10; a1 = v53; v17 = v6; goto LABEL_16; case -112: ++a1; v45 = 0; v46 = 0; do { v47 = *a1++; v48 = (v47 & 0x7F) << v46; v46 += 7; v45 |= v48; } while ( v47 < 0 ); if ( v45 > 17 ) goto LABEL_121; v16 = *(_DWORD *)(a3 + 4 * v45); if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v45 + 108) ) goto LABEL_95; if ( dwarf_reg_size_table[v45] != 4 ) goto LABEL_121; v16 = *(_DWORD *)v16; LABEL_95: v17 = v6; goto LABEL_16; case -110: ++a1; v33 = 0; v34 = 0; do { v35 = *a1++; v36 = (v35 & 0x7F) << v34; v34 += 7; v33 |= v36; } while ( v35 < 0 ); v37 = 0; v38 = 0; do { v39 = *a1++; v40 = (v39 & 0x7F) << v38; v38 += 7; v37 |= v40; } while ( v39 < 0 ); if ( v38 <= 0x1F && (v39 & 0x40) != 0 ) v37 |= -(1 << v38); if ( v33 > 17 ) goto LABEL_121; v41 = *(_DWORD **)(a3 + 4 * v33); if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v33 + 108) ) goto LABEL_81; if ( dwarf_reg_size_table[v33] != 4 ) goto LABEL_121; v41 = (_DWORD *)*v41; LABEL_81: v16 = (int)v41 + v37; v17 = v6; goto LABEL_16; case -106: ++a1; goto LABEL_18; case -15: v25 = a1[1]; v17 = v6; v26 = (int *)base_of_encoded_value(v25, (_DWORD *)a3); v27 = read_encoded_value_with_base(v25, v26, (int *)(a1 + 2), &v57); v16 = v57; a1 = v27; goto LABEL_16; default: goto _execute_stack_op_cold; } break; } } return result; } // 438160: using guessed type int var_11C[71]; //----- (00438790) -------------------------------------------------------- unsigned int __usercall uw_update_context_1@(int a1@, int a2@) { int v3; // edx int v4; // eax int v5; // eax _DWORD *v6; // ecx char *v7; // ebx int v8; // esi int v9; // ecx char v10; // dl int v11; // eax int v12; // ebx char *v13; // esi int v14; // edi int v15; // ecx char v16; // dl int v17; // eax int v18; // eax unsigned int result; // eax char *v20; // esi int v21; // edi int v22; // ecx char v23; // dl int v24; // eax int v25; // eax int v26; // eax int v27; // eax int v29; // [esp+1Ch] [ebp-B0h] int v30; // [esp+2Ch] [ebp-A0h] BYREF int v31[39]; // [esp+30h] [ebp-9Ch] BYREF qmemcpy(v31, (const void *)a1, 0x80u); v3 = v31[24]; if ( ((v31[24] & 0x40000000) == 0 || !LOBYTE(v31[28])) && !v31[4] ) { v27 = *(_DWORD *)(a1 + 72); if ( dwarf_reg_size_table[4] != 4 ) goto LABEL_23; v30 = v27; if ( (v31[24] & 0x40000000) != 0 ) LOBYTE(v31[28]) = 0; v31[4] = (int)&v30; } if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) *(_BYTE *)(a1 + 112) = 0; *(_DWORD *)(a1 + 16) = 0; v4 = *(_DWORD *)(a2 + 160); if ( v4 != 1 ) { if ( v4 != 2 ) abort(); v7 = *(char **)(a2 + 156); v8 = 0; v9 = 0; do { v10 = *v7++; v11 = (v10 & 0x7F) << v9; v9 += 7; v8 |= v11; } while ( v10 < 0 ); v29 = execute_stack_op(v7, (unsigned int)&v7[v8], (int)v31, 0); goto LABEL_17; } v5 = *(_DWORD *)(a2 + 152); if ( v5 > 17 ) goto LABEL_23; v6 = (_DWORD *)v31[v5]; if ( (v3 & 0x40000000) != 0 && *((_BYTE *)&v31[27] + v5) ) goto LABEL_12; if ( dwarf_reg_size_table[v5] != 4 ) LABEL_23: uw_update_context_1_cold(); v6 = (_DWORD *)*v6; LABEL_12: v29 = (int)v6 + *(_DWORD *)(a2 + 148); LABEL_17: *(_DWORD *)(a1 + 72) = v29; v12 = 0; while ( 2 ) { switch ( *(_DWORD *)(a2 + 8 * v12 + 4) ) { case 1: v25 = *(_DWORD *)(a2 + 8 * v12) + v29; if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) *(_BYTE *)(a1 + v12 + 108) = 0; goto LABEL_36; case 2: v26 = *(_DWORD *)(a2 + 8 * v12); if ( *((_BYTE *)&v31[27] + v26) ) { if ( v26 > 17 ) goto LABEL_23; if ( (v31[24] & 0x40000000) != 0 ) { v18 = v31[v26]; } else { if ( dwarf_reg_size_table[v26] != 4 ) goto LABEL_23; v18 = *(_DWORD *)v31[v26]; } LABEL_22: if ( dwarf_reg_size_table[v12] > 4u ) goto LABEL_23; LABEL_25: *(_BYTE *)(a1 + v12 + 108) = 1; *(_DWORD *)(a1 + 4 * v12) = v18; } else { v25 = v31[v26]; if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) *(_BYTE *)(a1 + v12 + 108) = 0; LABEL_36: *(_DWORD *)(a1 + 4 * v12) = v25; } LABEL_26: if ( ++v12 != 18 ) continue; result = *(_DWORD *)(a1 + 96) & 0x7FFFFFFF; if ( *(_BYTE *)(a2 + 187) ) result = *(_DWORD *)(a1 + 96) | 0x80000000; *(_DWORD *)(a1 + 96) = result; return result; case 3: v20 = *(char **)(a2 + 8 * v12); v21 = 0; v22 = 0; do { v23 = *v20++; v24 = (v23 & 0x7F) << v22; v22 += 7; v21 |= v24; } while ( v23 < 0 ); v25 = execute_stack_op(v20, (unsigned int)&v20[v21], (int)v31, v29); if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) *(_BYTE *)(a1 + v12 + 108) = 0; goto LABEL_36; case 4: v18 = *(_DWORD *)(a2 + 8 * v12) + v29; if ( dwarf_reg_size_table[v12] <= 4u ) goto LABEL_25; goto LABEL_23; case 5: v13 = *(char **)(a2 + 8 * v12); v14 = 0; v15 = 0; do { v16 = *v13++; v17 = (v16 & 0x7F) << v15; v15 += 7; v14 |= v17; } while ( v16 < 0 ); v18 = execute_stack_op(v13, (unsigned int)&v13[v14], (int)v31, v29); goto LABEL_22; default: goto LABEL_26; } } } //----- (00438A80) -------------------------------------------------------- unsigned int __usercall uw_init_context_1@(int a1@, int a2@, int a3@) { unsigned int result; // eax int v7; // [esp+1Ch] [ebp-E0h] BYREF _DWORD v8[55]; // [esp+20h] [ebp-DCh] BYREF void *retaddr; // [esp+FCh] [ebp+0h] memset((void *)a1, 0, 0x80u); *(_DWORD *)(a1 + 96) = 0x40000000; *(_DWORD *)(a1 + 76) = retaddr; if ( uw_frame_state_for((dwarf_eh_bases *)a1, v8) ) goto LABEL_15; if ( _CRT_MT ) { if ( !once_regsizes_22907 ) { if ( InterlockedIncrement(&Addend) ) { while ( !once_regsizes_22907 ) Sleep(0); } else { dwarf_reg_size_table[0] = 4; dwarf_reg_size_table[2] = 4; dwarf_reg_size_table[1] = 4; dwarf_reg_size_table[3] = 4; dwarf_reg_size_table[6] = 4; dwarf_reg_size_table[7] = 4; dwarf_reg_size_table[5] = 4; dwarf_reg_size_table[4] = 4; dwarf_reg_size_table[11] = 12; dwarf_reg_size_table[12] = 12; dwarf_reg_size_table[13] = 12; dwarf_reg_size_table[14] = 12; dwarf_reg_size_table[15] = 12; dwarf_reg_size_table[16] = 12; dwarf_reg_size_table[9] = 4; dwarf_reg_size_table[8] = 4; once_regsizes_22907 = 1; } } } else if ( !dwarf_reg_size_table[0] ) { dwarf_reg_size_table[0] = 4; dwarf_reg_size_table[2] = 4; dwarf_reg_size_table[1] = 4; dwarf_reg_size_table[3] = 4; dwarf_reg_size_table[6] = 4; dwarf_reg_size_table[7] = 4; dwarf_reg_size_table[5] = 4; dwarf_reg_size_table[4] = 4; dwarf_reg_size_table[11] = 12; dwarf_reg_size_table[12] = 12; dwarf_reg_size_table[13] = 12; dwarf_reg_size_table[14] = 12; dwarf_reg_size_table[15] = 12; dwarf_reg_size_table[16] = 12; dwarf_reg_size_table[9] = 4; dwarf_reg_size_table[8] = 4; } if ( dwarf_reg_size_table[4] != 4 ) LABEL_15: uw_init_context_1_cold(); v7 = a2; if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) *(_BYTE *)(a1 + 112) = 0; v8[40] = 1; *(_DWORD *)(a1 + 16) = &v7; v8[38] = 4; v8[37] = 0; result = uw_update_context_1(a1, (int)v8); *(_DWORD *)(a1 + 76) = a3; return result; } // 4E80B4: using guessed type int once_regsizes_22907; // 15412D0: using guessed type int _CRT_MT; //----- (00438C80) -------------------------------------------------------- int __usercall uw_update_context@(int a1@, int a2@) { int result; // eax _DWORD *v5; // edx uw_update_context_1(a1, a2); result = *(_DWORD *)(a2 + 180); if ( *(_DWORD *)(a2 + 8 * result + 4) == 6 ) { *(_DWORD *)(a1 + 76) = 0; return result; } if ( result > 17 ) goto LABEL_3; v5 = *(_DWORD **)(a1 + 4 * result); if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 && *(_BYTE *)(a1 + result + 108) ) goto LABEL_8; if ( dwarf_reg_size_table[result] != 4 ) LABEL_3: uw_update_context_cold(); v5 = (_DWORD *)*v5; LABEL_8: *(_DWORD *)(a1 + 76) = v5; return result; } //----- (00438CF0) -------------------------------------------------------- int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, dwarf_eh_bases *a2@, int *a3@) { int i; // edi int result; // eax int v7; // edx int v8; // ebp _DWORD v10[42]; // [esp+30h] [ebp-DCh] BYREF int (__cdecl *v11)(int, int, _DWORD, _DWORD, _DWORD *, dwarf_eh_bases *); // [esp+D8h] [ebp-34h] for ( i = 1; ; ++i ) { v7 = uw_frame_state_for(a2, v10); v8 = 4 * ((void *)a1[4] == (char *)a2[6].tbase - ((unsigned int)a2[8].tbase >> 31)); if ( v7 ) return 2; if ( v11 ) break; LABEL_5: if ( v8 ) _Unwind_RaiseException_Phase2_cold(); uw_update_context((int)a2, (int)v10); } result = v11(1, v8 | 2, *a1, a1[1], a1, a2); if ( result != 7 ) { if ( result != 8 ) return 2; goto LABEL_5; } *a3 = i; return result; } // 438CF0: using guessed type _DWORD var_DC[42]; //----- (00438DC0) -------------------------------------------------------- int __usercall _Unwind_ForcedUnwind_Phase2@( _Unwind_Exception *exc@, dwarf_eh_bases *context@, unsigned int *frames_p@) { unsigned int v3; // edi _Unwind_Word private_2; // ebp int v7; // eax int v8; // eax int exception_class_high; // edx int v10; // ebp _Unwind_Stop_Fn stop; // [esp+24h] [ebp-E8h] void *stop_argument; // [esp+28h] [ebp-E4h] _Unwind_FrameState fs_0; // [esp+30h] [ebp-DCh] BYREF v3 = 1; private_2 = exc->private_2; stop = (_Unwind_Stop_Fn)exc->private_1; stop_argument = (void *)private_2; while ( 1 ) { v8 = uw_frame_state_for(context, &fs_0); if ( v8 && v8 != 5 ) return 2; exception_class_high = HIDWORD(exc->exception_class); if ( v8 == 5 ) break; if ( ((int (__cdecl *)(int, int, _DWORD, int, _Unwind_Exception *, dwarf_eh_bases *, _Unwind_Word))stop)( 1, 10, exc->exception_class, exception_class_high, exc, context, private_2) ) { return 2; } if ( fs_0.personality ) { v7 = ((int (__cdecl *)(int, int, _DWORD, _DWORD, _Unwind_Exception *, dwarf_eh_bases *))fs_0.personality)( 1, 10, exc->exception_class, HIDWORD(exc->exception_class), exc, context); if ( v7 == 7 ) { v10 = 7; goto LABEL_13; } if ( v7 != 8 ) return 2; } ++v3; uw_update_context((int)context, (int)&fs_0); } v10 = 5; if ( ((int (__cdecl *)(int, int, _DWORD, int, _Unwind_Exception *, dwarf_eh_bases *, void *))stop)( 1, 26, exc->exception_class, exception_class_high, exc, context, stop_argument) ) { return 2; } LABEL_13: *frames_p = v3; return v10; } //----- (00438F00) -------------------------------------------------------- int __cdecl _Unwind_GetGR(int a1, int a2) { int result; // eax if ( a2 > 17 ) goto LABEL_7; result = *(_DWORD *)(a1 + 4 * a2); if ( (*(_BYTE *)(a1 + 99) & 0x40) == 0 || !*(_BYTE *)(a1 + a2 + 108) ) { if ( dwarf_reg_size_table[a2] == 4 ) return *(_DWORD *)result; LABEL_7: _Unwind_GetGR_cold(); } return result; } //----- (00438F40) -------------------------------------------------------- _Unwind_Word __cdecl _Unwind_GetCFA(_Unwind_Context *context) { return (_Unwind_Word)context->cfa; } //----- (00438F50) -------------------------------------------------------- _DWORD *__cdecl _Unwind_SetGR(int a1, int a2, int a3) { _DWORD *result; // eax result = (_DWORD *)a2; if ( a2 > 17 ) goto LABEL_7; if ( (*(_BYTE *)(a1 + 99) & 0x40) == 0 || !*(_BYTE *)(a1 + a2 + 108) ) { result = *(_DWORD **)(a1 + 4 * a2); if ( dwarf_reg_size_table[a2] == 4 ) { *result = a3; return result; } LABEL_7: _Unwind_SetGR_cold(); } *(_DWORD *)(a1 + 4 * a2) = a3; return result; } //----- (00438FA0) -------------------------------------------------------- _Unwind_Ptr __cdecl _Unwind_GetIP(_Unwind_Context *context) { return (_Unwind_Ptr)context->ra; } //----- (00438FB0) -------------------------------------------------------- _Unwind_Ptr __cdecl _Unwind_GetIPInfo(_Unwind_Context *context, int *ip_before_insn) { *ip_before_insn = context->flags >> 31; return (_Unwind_Ptr)context->ra; } //----- (00438FD0) -------------------------------------------------------- void __cdecl _Unwind_SetIP(_Unwind_Context *context, _Unwind_Ptr val) { context->ra = (void *)val; } //----- (00438FE0) -------------------------------------------------------- void *__cdecl _Unwind_GetLanguageSpecificData(_Unwind_Context *context) { return context->lsda; } //----- (00438FF0) -------------------------------------------------------- _Unwind_Ptr __cdecl _Unwind_GetRegionStart(_Unwind_Context *context) { return (_Unwind_Ptr)context->bases.func; } //----- (00439000) -------------------------------------------------------- void *__cdecl _Unwind_FindEnclosingFunction(void *pc) { void *result; // eax dwarf_eh_bases bases; // [esp+14h] [ebp-18h] BYREF result = (void *)_Unwind_Find_FDE((char *)pc - 1, &bases); if ( result ) return bases.func; return result; } //----- (00439030) -------------------------------------------------------- _Unwind_Ptr __cdecl _Unwind_GetDataRelBase(_Unwind_Context *context) { return (_Unwind_Ptr)context->bases.dbase; } //----- (00439040) -------------------------------------------------------- _Unwind_Ptr __cdecl _Unwind_GetTextRelBase(_Unwind_Context *context) { return (_Unwind_Ptr)context->bases.tbase; } //----- (00439050) -------------------------------------------------------- frame_state *__cdecl __frame_state_for(void *pc_target, frame_state *state_in) { int v2; // eax enum : __int32 {REG_UNSAVED = 0x0,REG_SAVED_OFFSET = 0x1,REG_SAVED_REG = 0x2,REG_SAVED_EXP = 0x3,REG_SAVED_VAL_OFFSET = 0x4,REG_SAVED_VAL_EXP = 0x5,REG_UNDEFINED = 0x6,} how; // edx _Unwind_Context context; // [esp+0h] [ebp-14Ch] BYREF _Unwind_FrameState fs_0; // [esp+80h] [ebp-CCh] BYREF memset(&context, 0, sizeof(context)); context.flags = 0x40000000; context.ra = (char *)pc_target + 1; v2 = uw_frame_state_for((dwarf_eh_bases *)&context, &fs_0); if ( v2 || fs_0.regs.cfa_how == 2 ) return 0; do { while ( 1 ) { how = fs_0.regs.reg[v2].how; state_in->saved[v2] = how; if ( (_BYTE)how == 1 || (_BYTE)how == 2 ) break; state_in->reg_or_offset[v2++] = 0; if ( v2 == 18 ) goto LABEL_8; } state_in->reg_or_offset[v2] = fs_0.regs.reg[v2].loc.offset; ++v2; } while ( v2 != 18 ); LABEL_8: state_in->cfa_offset = fs_0.regs.cfa_offset; state_in->cfa_reg = fs_0.regs.cfa_reg; state_in->retaddr_column = fs_0.retaddr_column; state_in->args_size = context.args_size; state_in->eh_ptr = fs_0.eh_ptr; return state_in; } //----- (00439140) -------------------------------------------------------- _Unwind_Reason_Code __cdecl _Unwind_RaiseException(_Unwind_Exception *exc) { _Unwind_Reason_Code v1; // eax int v2; // edx int v3; // eax _Unwind_Reason_Code result; // eax void *cfa; // esi _Unwind_Exception *v6; // edi _Unwind_Exception *v7; // eax void *ra; // ebx int v9; // edx _Unwind_Context this_context; // [esp+0h] [ebp-1D8h] BYREF _Unwind_Context cur_context; // [esp+80h] [ebp-158h] BYREF _Unwind_FrameState fs_0; // [esp+100h] [ebp-D8h] BYREF _Unwind_Reason_Code v13; // [esp+1C4h] [ebp-14h] int v14; // [esp+1C8h] [ebp-10h] int retaddr; // [esp+1DCh] [ebp+4h] v14 = v2; v13 = v1; uw_init_context_1((int)&this_context, (int)&exc, retaddr); qmemcpy(&cur_context, &this_context, sizeof(cur_context)); while ( 1 ) { result = uw_frame_state_for((dwarf_eh_bases *)&cur_context, &fs_0); if ( result == 5 ) break; if ( result ) return 3; if ( fs_0.personality ) { v3 = ((int (__cdecl *)(int, int, _DWORD, _DWORD, _Unwind_Exception *, _Unwind_Context *))fs_0.personality)( 1, 1, exc->exception_class, HIDWORD(exc->exception_class), exc, &cur_context); if ( v3 == 6 ) { cfa = cur_context.cfa; v6 = exc; exc->private_1 = 0; v7 = exc; v6->private_2 = (_Unwind_Word)cfa - (cur_context.flags >> 31); qmemcpy(&cur_context, &this_context, sizeof(cur_context)); result = _Unwind_RaiseException_Phase2(v7, (dwarf_eh_bases *)&cur_context, (int *)&fs_0); if ( result == 7 ) { uw_install_context_1((int)&this_context, (int)&cur_context); ra = cur_context.ra; _Unwind_DebugHook(cur_context.cfa, cur_context.ra); *(int *)((char *)&retaddr + v9) = (int)ra; return v13; } return result; } if ( v3 != 8 ) return 3; } uw_update_context((int)&cur_context, (int)&fs_0); } return result; } // 439152: variable 'v2' is possibly undefined // 439158: variable 'v1' is possibly undefined // 43926E: variable 'v9' is possibly undefined //----- (00439290) -------------------------------------------------------- _Unwind_Reason_Code __cdecl _Unwind_ForcedUnwind(_Unwind_Exception *exc, _Unwind_Stop_Fn stop, void *stop_argument) { _Unwind_Reason_Code v3; // eax int v4; // edx _Unwind_Exception *v5; // esi _Unwind_Reason_Code result; // eax void *ra; // ebx int v8; // edx unsigned int frames; // [esp+0h] [ebp-11Ch] BYREF _Unwind_Context this_context; // [esp+4h] [ebp-118h] BYREF _Unwind_Context cur_context; // [esp+84h] [ebp-98h] BYREF _Unwind_Reason_Code v12; // [esp+108h] [ebp-14h] int v13; // [esp+10Ch] [ebp-10h] int retaddr; // [esp+120h] [ebp+4h] v13 = v4; v12 = v3; uw_init_context_1((int)&this_context, (int)&exc, retaddr); qmemcpy(&cur_context, &this_context, sizeof(cur_context)); v5 = exc; exc->private_1 = (_Unwind_Word)stop; v5->private_2 = (_Unwind_Word)stop_argument; result = _Unwind_ForcedUnwind_Phase2(v5, (dwarf_eh_bases *)&cur_context, &frames); if ( result == 7 ) { uw_install_context_1((int)&this_context, (int)&cur_context); ra = cur_context.ra; _Unwind_DebugHook(cur_context.cfa, cur_context.ra); *(int *)((char *)&retaddr + v8) = (int)ra; return v12; } return result; } // 4392A2: variable 'v4' is possibly undefined // 4392A8: variable 'v3' is possibly undefined // 439315: variable 'v8' is possibly undefined //----- (00439340) -------------------------------------------------------- void __usercall __noreturn _Unwind_Resume(int a1@, int a2@, _Unwind_Exception *exc) { int v3; // eax int v4; // eax int v5; // edx unsigned int frames_p; // [esp+0h] [ebp-11Ch] BYREF char v7[128]; // [esp+4h] [ebp-118h] BYREF _Unwind_Context context; // [esp+84h] [ebp-98h] BYREF int v9; // [esp+108h] [ebp-14h] int v10; // [esp+10Ch] [ebp-10h] int retaddr; // [esp+120h] [ebp+4h] v10 = a2; v9 = a1; uw_init_context_1((int)v7, (int)&exc, retaddr); qmemcpy(&context, v7, sizeof(context)); if ( exc->private_1 ) v3 = _Unwind_ForcedUnwind_Phase2(exc, (dwarf_eh_bases *)&context, &frames_p); else v3 = _Unwind_RaiseException_Phase2(exc, (dwarf_eh_bases *)&context, (int *)&frames_p); if ( v3 != 7 ) _Unwind_Resume_cold(); uw_install_context_1((int)v7, (int)&context); _Unwind_DebugHook(context.cfa, context.ra); *(int *)((char *)&retaddr + v4) = v5; } // 4393B1: variable 'v5' is possibly undefined // 4393B1: variable 'v4' is possibly undefined //----- (004393E0) -------------------------------------------------------- void __usercall __noreturn _Unwind_Resume_or_Rethrow(int a1@, int a2@, _Unwind_Exception *exc) { _Unwind_Exception *v3; // ebx void *ra; // ebx int v5; // edx unsigned int frames_p; // [esp+0h] [ebp-11Ch] BYREF char v7[128]; // [esp+4h] [ebp-118h] BYREF _Unwind_Context context; // [esp+84h] [ebp-98h] BYREF int v9; // [esp+108h] [ebp-14h] int v10; // [esp+10Ch] [ebp-10h] int retaddr; // [esp+120h] [ebp+4h] v10 = a2; v9 = a1; v3 = exc; if ( exc->private_1 ) { uw_init_context_1((int)v7, (int)&exc, retaddr); qmemcpy(&context, v7, sizeof(context)); if ( _Unwind_ForcedUnwind_Phase2(v3, (dwarf_eh_bases *)&context, &frames_p) != 7 ) _Unwind_Resume_or_Rethrow_cold(); uw_install_context_1((int)v7, (int)&context); ra = context.ra; _Unwind_DebugHook(context.cfa, context.ra); *(int *)((char *)&retaddr + v5) = (int)ra; } else { _Unwind_RaiseException(exc); } } // 439472: variable 'v5' is possibly undefined //----- (00439490) -------------------------------------------------------- void __cdecl _Unwind_DeleteException(_Unwind_Exception *exc) { _Unwind_Exception_Cleanup_Fn exception_cleanup; // eax exception_cleanup = exc->exception_cleanup; if ( exception_cleanup ) exception_cleanup((_Unwind_Reason_Code)1, exc); } //----- (004394B0) -------------------------------------------------------- _Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn trace, void *trace_argument) { _Unwind_Trace_Fn v2; // edi void *v3; // esi int v4; // eax _Unwind_Reason_Code v5; // ebx _Unwind_Context context; // [esp+10h] [ebp-158h] BYREF _Unwind_FrameState fs_0; // [esp+90h] [ebp-D8h] BYREF int retaddr; // [esp+16Ch] [ebp+4h] v2 = trace; v3 = trace_argument; uw_init_context_1((int)&context, (int)&trace, retaddr); while ( 1 ) { v4 = uw_frame_state_for((dwarf_eh_bases *)&context, &fs_0); v5 = v4; if ( v4 ) { if ( v4 != 5 ) break; } if ( v2(&context, v3) ) break; if ( v5 == 5 ) return v5; uw_update_context((int)&context, (int)&fs_0); } return 3; } //----- (00439530) -------------------------------------------------------- int __cdecl fde_unencoded_compare(object *ob, const fde *x, const fde *y) { int result; // eax unsigned int v4; // edx result = 1; v4 = *(_DWORD *)y->pc_begin; if ( *(_DWORD *)x->pc_begin <= v4 ) return -(*(_DWORD *)x->pc_begin < v4); return result; } //----- (00439550) -------------------------------------------------------- void __usercall frame_downheap(object *ob@, fde_compare_t fde_compare@, const fde **a@, int lo, int hi) { int v6; // edx int v7; // ebx int v8; // eax const fde *v9; // eax int v10; // esi const fde **v11; // ebx const fde *v12; // eax const fde **v13; // edi const fde **v16; // [esp+1Ch] [ebp-20h] int i; // [esp+40h] [ebp+4h] v6 = lo; v7 = 2 * lo + 1; if ( v7 < hi ) { while ( 1 ) { v10 = v7 + 1; v13 = &a[v7]; v9 = *v13; if ( v7 + 1 < hi ) { i = v6; v16 = &a[v7 + 1]; v8 = fde_compare(ob, v9, *v16); v6 = i; if ( v8 < 0 ) { v9 = *v16; v13 = &a[v7 + 1]; } else { v9 = *v13; v10 = v7; } } else { v10 = v7; } v11 = &a[v6]; if ( fde_compare(ob, *v11, v9) >= 0 ) break; v12 = *v11; *v11 = *v13; v7 = 2 * v10 + 1; *v13 = v12; if ( hi <= v7 ) break; v6 = v10; } } } //----- (00439620) -------------------------------------------------------- void __usercall frame_heapsort(object *ob@, fde_compare_t fde_compare@, fde_vector *erratic@) { fde_vector *v5; // esi int v6; // ebx int hi; // ebx const dwarf_fde *v8; // eax int lo; // [esp+0h] [ebp-3Ch] unsigned int n; // [esp+14h] [ebp-28h] const dwarf_fde **a; // [esp+18h] [ebp-24h] v5 = erratic; a = erratic->array; n = erratic->count; if ( n >> 1 ) { v6 = (n >> 1) - 1; do { lo = v6--; frame_downheap(ob, fde_compare, a, lo, n); } while ( v6 != -1 ); v5 = erratic; } hi = n - 1; if ( (int)(n - 1) > 0 ) { do { v8 = v5->array[0]; v5->array[0] = v5->array[hi]; v5->array[hi] = v8; frame_downheap(ob, fde_compare, a, 0, hi--); } while ( hi ); } } //----- (004396C0) -------------------------------------------------------- void init_object_mutex() { object_mutex.counter = -1; object_mutex.sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); } //----- (00439700) -------------------------------------------------------- int __usercall size_of_encoded_value@(char a1@) { unsigned __int8 v1; // al if ( a1 == -1 ) return 0; v1 = a1 & 7; if ( v1 == 2 ) return 2; if ( v1 <= 2u ) { if ( v1 ) goto LABEL_12; return 4; } if ( v1 == 3 ) return 4; if ( v1 != 4 ) LABEL_12: size_of_encoded_value_cold(); return 8; } //----- (00439750) -------------------------------------------------------- int __usercall base_from_object@(char a1@, int a2@) { unsigned __int8 v2; // cl if ( a1 == -1 ) return 0; v2 = a1 & 0x70; if ( (a1 & 0x70) == 32 ) return *(_DWORD *)(a2 + 4); if ( v2 <= 0x20u ) { if ( (a1 & 0x60) == 0 ) return 0; goto LABEL_13; } if ( v2 != 48 ) { if ( v2 == 80 ) return 0; LABEL_13: base_from_object_cold(); } return *(_DWORD *)(a2 + 8); } //----- (004397A0) -------------------------------------------------------- char *__usercall read_encoded_value_with_base_0@(char a1@, int *a2@, int *a3@, int *a4) { int v6; // edx char *result; // eax _DWORD *v8; // eax int v9; // edx int v10; // ecx int v11; // ebp char v12; // dl int v13; // edi unsigned int v14; // ecx int v15; // ebp char v16; // dl int v17; // edi char v18; // di if ( a1 == 80 ) { v8 = (_DWORD *)(((unsigned int)a3 + 3) & 0xFFFFFFFC); v9 = *v8; result = (char *)(v8 + 1); *a4 = v9; } else { switch ( a1 & 0xF ) { case 0: case 3: case 0xB: v6 = *a3; result = (char *)(a3 + 1); goto LABEL_4; case 1: result = (char *)a3; v10 = 0; v11 = 0; do { v12 = *result++; v13 = (v12 & 0x7F) << v10; v10 += 7; v11 |= v13; } while ( v12 < 0 ); v6 = v11; goto LABEL_4; case 2: v6 = *(unsigned __int16 *)a3; result = (char *)a3 + 2; goto LABEL_4; case 4: case 0xC: v6 = *a3; result = (char *)(a3 + 2); goto LABEL_4; case 9: result = (char *)a3; v14 = 0; v15 = 0; do { v16 = *result++; v17 = (v16 & 0x7F) << v14; v14 += 7; v15 |= v17; } while ( v16 < 0 ); v18 = v16; v6 = v15; if ( v14 > 0x1F || (v18 & 0x40) == 0 ) goto LABEL_4; v6 = (-1 << v14) | v15; goto LABEL_5; case 0xA: v6 = *(__int16 *)a3; result = (char *)a3 + 2; LABEL_4: if ( !v6 ) goto LABEL_8; LABEL_5: if ( (a1 & 0x70) == 16 ) a2 = a3; v6 += (int)a2; if ( a1 < 0 ) *a4 = *(_DWORD *)v6; else LABEL_8: *a4 = v6; break; default: abort(); } } return result; } //----- (004398E0) -------------------------------------------------------- int __cdecl fde_single_encoding_compare(object *ob, const fde *x, const fde *y) { char v3; // bl int *v4; // esi int result; // eax _Unwind_Ptr x_ptr; // [esp+18h] [ebp-14h] BYREF _Unwind_Ptr y_ptr[4]; // [esp+1Ch] [ebp-10h] BYREF v3 = *(_WORD *)&ob->s.b >> 3; v4 = (int *)base_from_object(v3, (int)ob); read_encoded_value_with_base_0(v3, v4, (int *)x->pc_begin, (int *)&x_ptr); read_encoded_value_with_base_0(*(_WORD *)&ob->s.b >> 3, v4, (int *)y->pc_begin, (int *)y_ptr); result = 1; if ( x_ptr <= y_ptr[0] ) return -(x_ptr < y_ptr[0]); return result; } // 4398E0: using guessed type _Unwind_Ptr y_ptr[4]; //----- (00439950) -------------------------------------------------------- int __usercall get_cie_encoding@(const dwarf_cie *cie@) { ubyte *v2; // ebx size_t v3; // eax ubyte version; // cl char *encoded_value_with_base_0; // eax int v6; // edx char *v8; // edx ubyte *v9; // ebx ubyte i; // dl _Unwind_Ptr dummy[4]; // [esp+1Ch] [ebp-10h] BYREF v2 = &cie->version + 1; v3 = strlen((const char *)&cie->version + 1); version = cie->version; encoded_value_with_base_0 = (char *)&v2[v3 + 1]; if ( version > 3u ) { v6 = 255; if ( *encoded_value_with_base_0 != 4 || encoded_value_with_base_0[1] ) return v6; encoded_value_with_base_0 += 2; } if ( *(&cie->version + 1) != 122 ) return 0; do ++encoded_value_with_base_0; while ( *(encoded_value_with_base_0 - 1) < 0 ); do v8 = encoded_value_with_base_0++; while ( *(encoded_value_with_base_0 - 1) < 0 ); if ( version == 1 ) { encoded_value_with_base_0 = v8 + 2; } else { do ++encoded_value_with_base_0; while ( *(encoded_value_with_base_0 - 1) < 0 ); } v9 = &cie->version + 2; do ++encoded_value_with_base_0; while ( *(encoded_value_with_base_0 - 1) < 0 ); for ( i = *(&cie->version + 2); i != 82; ++encoded_value_with_base_0 ) { while ( i == 80 ) { ++v9; encoded_value_with_base_0 = read_encoded_value_with_base_0( *encoded_value_with_base_0 & 0x7F, 0, (int *)(encoded_value_with_base_0 + 1), (int *)dummy); i = *v9; if ( *v9 == 82 ) return (unsigned __int8)*encoded_value_with_base_0; } if ( i != 76 ) return 0; i = *++v9; } return (unsigned __int8)*encoded_value_with_base_0; } // 439950: using guessed type _Unwind_Ptr dummy[4]; //----- (00439A50) -------------------------------------------------------- size_t __usercall classify_object_over_fdes@(object *ob@, const fde *this_fde@) { const fde *v3; // ebx char *v4; // ecx sword CIE_delta; // eax char *v6; // esi char v7; // di unsigned __int16 i; // ax unsigned int v9; // eax int v10; // edx int encoding; // [esp+14h] [ebp-38h] int *base; // [esp+18h] [ebp-34h] uword count; // [esp+1Ch] [ebp-30h] _Unwind_Ptr pc_begin[8]; // [esp+2Ch] [ebp-20h] BYREF count = this_fde->length; if ( !this_fde->length ) return count; base = 0; v3 = this_fde; v4 = 0; LOBYTE(encoding) = 0; count = 0; while ( 1 ) { CIE_delta = v3->CIE_delta; if ( CIE_delta ) break; LABEL_15: v3 = (const fde *)((char *)v3 + v3->length + 4); if ( !v3->length ) return count; } v6 = (char *)&v3->CIE_delta - CIE_delta; if ( v6 == v4 ) { v7 = encoding; LABEL_9: read_encoded_value_with_base_0(v7, base, (int *)v3->pc_begin, (int *)pc_begin); v9 = size_of_encoded_value(v7); v10 = -1; if ( v9 <= 3 ) v10 = (1 << (8 * v9)) - 1; v4 = v6; if ( (v10 & pc_begin[0]) != 0 ) { ++count; if ( ob->pc_begin > (void *)pc_begin[0] ) ob->pc_begin = (void *)pc_begin[0]; v4 = v6; } goto LABEL_15; } encoding = get_cie_encoding((const dwarf_cie *)((char *)&v3->CIE_delta - CIE_delta)); if ( encoding != 255 ) { v7 = encoding; base = (int *)base_from_object(encoding, (int)ob); i = ob->s.i; if ( (i & 0x7F8) == 2040 ) { *(_WORD *)&ob->s.b = (8 * (unsigned __int8)encoding) | i & 0xF807; } else if ( (unsigned __int8)(i >> 3) != encoding ) { *(_BYTE *)&ob->s.b |= 4u; } goto LABEL_9; } return -1; } // 439A50: using guessed type _Unwind_Ptr pc_begin[8]; //----- (00439BB0) -------------------------------------------------------- void __usercall add_fdes(object *ob@, fde_accumulator *accu@, const fde *this_fde@) { __int16 v5; // ax int cie_encoding; // esi int v7; // eax int *v8; // edx fde_vector *linear; // eax size_t count; // ecx sword CIE_delta; // eax const dwarf_cie *v12; // ebp int v13; // ebp unsigned int v14; // eax const dwarf_cie *last_cie; // [esp+14h] [ebp-38h] _Unwind_Ptr base; // [esp+1Ch] [ebp-30h] _Unwind_Ptr pc_begin[8]; // [esp+2Ch] [ebp-20h] BYREF v5 = *(_WORD *)&ob->s.b >> 3; cie_encoding = (unsigned __int8)v5; v7 = base_from_object(v5, (int)ob); if ( this_fde->length ) { last_cie = 0; v8 = (int *)v7; while ( 1 ) { CIE_delta = this_fde->CIE_delta; if ( !CIE_delta ) goto LABEL_6; if ( (*(_BYTE *)&ob->s.b & 4) != 0 ) { v12 = (const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta); if ( v12 != last_cie ) { cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta)); last_cie = v12; v8 = (int *)base_from_object(cie_encoding, (int)ob); } } if ( cie_encoding ) { base = (_Unwind_Ptr)v8; read_encoded_value_with_base_0(cie_encoding, v8, (int *)this_fde->pc_begin, (int *)pc_begin); v13 = -1; v14 = size_of_encoded_value(cie_encoding); v8 = (int *)base; if ( v14 <= 3 ) v13 = (1 << (8 * v14)) - 1; if ( (v13 & pc_begin[0]) != 0 ) { LABEL_4: linear = accu->linear; if ( accu->linear ) { count = linear->count; linear->count = count + 1; linear->array[count] = this_fde; } goto LABEL_6; } this_fde = (const fde *)((char *)this_fde + this_fde->length + 4); if ( !this_fde->length ) return; } else { if ( *(_DWORD *)this_fde->pc_begin ) goto LABEL_4; LABEL_6: this_fde = (const fde *)((char *)this_fde + this_fde->length + 4); if ( !this_fde->length ) return; } } } } // 439BB0: using guessed type _Unwind_Ptr pc_begin[8]; //----- (00439CC0) -------------------------------------------------------- const fde *__usercall linear_search_fdes@(object *ob@, const fde *this_fde@, char *pc@) { __int16 v6; // ax int cie_encoding; // esi _Unwind_Ptr v8; // eax char *v9; // edx sword CIE_delta; // eax const dwarf_cie *v11; // ebp int *encoded_value_with_base_0; // eax unsigned int v13; // eax int v14; // edx const dwarf_cie *last_cie; // [esp+14h] [ebp-38h] int *base; // [esp+1Ch] [ebp-30h] _Unwind_Ptr pc_begin; // [esp+28h] [ebp-24h] BYREF _Unwind_Ptr pc_range[8]; // [esp+2Ch] [ebp-20h] BYREF v6 = *(_WORD *)&ob->s.b >> 3; cie_encoding = (unsigned __int8)v6; last_cie = 0; for ( base = (int *)base_from_object(v6, (int)ob); this_fde->length; this_fde = (const fde *)((char *)this_fde + this_fde->length + 4) ) { CIE_delta = this_fde->CIE_delta; if ( CIE_delta ) { if ( (*(_BYTE *)&ob->s.b & 4) != 0 ) { v11 = (const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta); if ( v11 != last_cie ) { cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta)); last_cie = v11; base = (int *)base_from_object(cie_encoding, (int)ob); } } if ( cie_encoding ) { encoded_value_with_base_0 = (int *)read_encoded_value_with_base_0( cie_encoding, base, (int *)this_fde->pc_begin, (int *)&pc_begin); read_encoded_value_with_base_0(cie_encoding & 0xF, 0, encoded_value_with_base_0, (int *)pc_range); v13 = size_of_encoded_value(cie_encoding); v14 = -1; if ( v13 <= 3 ) v14 = (1 << (8 * v13)) - 1; if ( (v14 & pc_begin) != 0 && (unsigned int)&pc[-pc_begin] < pc_range[0] ) return this_fde; } else { v8 = *(_DWORD *)this_fde->pc_begin; v9 = *(char **)&this_fde->pc_begin[4]; pc_begin = v8; pc_range[0] = (_Unwind_Ptr)v9; if ( v8 && &pc[-v8] < v9 ) return this_fde; } } } return 0; } // 439CC0: using guessed type _Unwind_Ptr pc_range[8]; //----- (00439DF0) -------------------------------------------------------- int __cdecl fde_mixed_encoding_compare(object *ob, const fde *x, const fde *y) { char cie_encoding; // di int *v4; // eax char v5; // si int *v6; // eax int result; // eax _Unwind_Ptr x_ptr; // [esp+18h] [ebp-24h] BYREF _Unwind_Ptr y_ptr[8]; // [esp+1Ch] [ebp-20h] BYREF cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&x->CIE_delta - x->CIE_delta)); v4 = (int *)base_from_object(cie_encoding, (int)ob); read_encoded_value_with_base_0(cie_encoding, v4, (int *)x->pc_begin, (int *)&x_ptr); v5 = get_cie_encoding((const dwarf_cie *)((char *)&y->CIE_delta - y->CIE_delta)); v6 = (int *)base_from_object(v5, (int)ob); read_encoded_value_with_base_0(v5, v6, (int *)y->pc_begin, (int *)y_ptr); result = 1; if ( x_ptr <= y_ptr[0] ) return -(x_ptr < y_ptr[0]); return result; } // 439DF0: using guessed type _Unwind_Ptr y_ptr[8]; //----- (00439E70) -------------------------------------------------------- const fde *__usercall search_object@(int a1@, char *a2@) { object *v2; // edi char b; // al union {const dwarf_fde *single;dwarf_fde **array;fde_vector *sort;} v4; // ebp unsigned __int16 v5; // ax unsigned int v6; // edx unsigned int v7; // ecx unsigned int v8; // eax int v9; // ebx unsigned int v10; // esi const fde *result; // eax size_t v12; // esi const fde **single; // ebx const fde *v14; // edx size_t v15; // eax unsigned int v16; // esi int v17; // edi char cie_encoding; // bl int *v19; // eax int *v20; // eax const fde **v21; // esi const fde *i; // edx char v23; // bl int v24; // eax unsigned int CIE_delta; // edi unsigned int v26; // ebp unsigned int v27; // esi int *encoded_value_with_base_0; // eax fde_vector *v29; // eax fde_vector *v30; // eax const fde **v31; // ebx const fde *v32; // ecx fde_vector *linear; // esi size_t count; // eax const fde **v35; // ebx int v36; // esi fde_vector *v37; // ebp fde_vector *v38; // eax int v39; // ebp fde_vector *v40; // esi char *v41; // eax fde_vector *v42; // eax fde_vector *v43; // eax fde_vector *v44; // esi size_t v45; // ebp size_t v46; // edx int v47; // eax const dwarf_fde *v48; // ecx fde_vector *v49; // ecx size_t v50; // eax fde_vector *v51; // ebp size_t v52; // edi const dwarf_fde **v53; // ebx int v54; // esi size_t v55; // ebx fde_vector *v56; // eax fde_compare_t fde_compare; // [esp+10h] [ebp-4Ch] char fde_comparea; // [esp+10h] [ebp-4Ch] int (*fde_compareb)(object *, const fde *, const fde *); // [esp+10h] [ebp-4Ch] unsigned int v61; // [esp+18h] [ebp-44h] int *v62; // [esp+18h] [ebp-44h] fde_vector *erratic; // [esp+18h] [ebp-44h] const dwarf_fde *v64; // [esp+18h] [ebp-44h] const dwarf_fde **ob; // [esp+1Ch] [ebp-40h] object *oba; // [esp+1Ch] [ebp-40h] size_t v67; // [esp+20h] [ebp-3Ch] size_t v68; // [esp+20h] [ebp-3Ch] char v69; // [esp+24h] [ebp-38h] int v70; // [esp+24h] [ebp-38h] fde_vector *v71; // [esp+24h] [ebp-38h] int v72; // [esp+28h] [ebp-34h] union {const dwarf_fde *single;dwarf_fde **array;fde_vector *sort;} v73; // [esp+28h] [ebp-34h] fde_vector *v74; // [esp+28h] [ebp-34h] size_t v75; // [esp+2Ch] [ebp-30h] unsigned int v76; // [esp+34h] [ebp-28h] BYREF fde_accumulator accu; // [esp+38h] [ebp-24h] BYREF v2 = (object *)a1; b = *(_BYTE *)(a1 + 16); if ( (b & 1) != 0 ) goto LABEL_2; v12 = v2->s.i >> 11; v67 = v12; if ( !v12 ) { single = (const fde **)v2->u.single; if ( (b & 2) != 0 ) { v14 = *single; if ( !*single ) goto LABEL_30; do { v15 = classify_object_over_fdes(v2, v14); if ( v15 == -1 ) goto LABEL_16; v14 = single[1]; ++single; v12 += v15; } while ( v14 ); v67 = v12; } else { v67 = classify_object_over_fdes(v2, v2->u.single); if ( v67 == -1 ) { LABEL_16: v2->s.i = 2040; v2->u.single = (const dwarf_fde *)&terminator_22562; goto LABEL_30; } } if ( (v67 & 0xFFE00000) != 0 ) v2->s.i &= 0x7FFu; else v2->s.i = (v67 << 11) | v2->s.i & 0x7FF; if ( !v67 ) goto LABEL_30; } v29 = (fde_vector *)malloc(4 * v67 + 8); accu.linear = v29; if ( !v29 ) goto LABEL_30; v29->count = 0; v30 = (fde_vector *)malloc(4 * v67 + 8); accu.erratic = v30; if ( v30 ) v30->count = 0; v31 = (const fde **)v2->u.single; if ( (*(_BYTE *)&v2->s.b & 2) != 0 ) { v32 = *v31; if ( !*v31 ) goto LABEL_96; do { ++v31; add_fdes(v2, &accu, v32); v32 = *v31; } while ( *v31 ); } else { add_fdes(v2, &accu, v2->u.single); } linear = accu.linear; v74 = accu.linear; if ( accu.linear && accu.linear->count != v67 ) goto LABEL_96; fde_compareb = fde_mixed_encoding_compare; if ( (*(_BYTE *)&v2->s.b & 4) == 0 ) { fde_compareb = fde_unencoded_compare; if ( (*(_WORD *)&v2->s.b & 0x7F8) != 0 ) fde_compareb = fde_single_encoding_compare; } erratic = accu.erratic; if ( !accu.erratic ) { frame_heapsort(v2, fde_compareb, accu.linear); goto LABEL_86; } count = accu.linear->count; v75 = count; if ( count ) { v35 = (const fde **)&marker_22456; v70 = 4 * count + 4; ob = accu.linear->array; v36 = 8; v37 = accu.linear; while ( 1 ) { *(const void **)((char *)&erratic->orig_data + v36) = v35; v35 = (const fde **)((char *)v37 + v36); if ( v70 == v36 ) break; if ( v35 != (const fde **)&marker_22456 ) { v38 = v37; v39 = v36; v40 = v38; do { if ( fde_compareb(v2, *(const fde **)((char *)&v40->count + v39), *v35) >= 0 ) { v42 = v40; v36 = v39; v37 = v42; goto LABEL_65; } v41 = (char *)erratic + (char *)v35 - (char *)ob; v35 = (const fde **)*((_DWORD *)v41 + 2); *((_DWORD *)v41 + 2) = 0; } while ( v35 != (const fde **)&marker_22456 ); v43 = v40; v36 = v39; v37 = v43; } v35 = (const fde **)&marker_22456; LABEL_65: v36 += 4; } v44 = v37; v45 = 0; v46 = 0; v47 = 0; do { v48 = v44->array[v47]; if ( erratic->array[v47] ) v44->array[v46++] = v48; else erratic->array[v45++] = v48; ++v47; } while ( v75 != v47 ); v49 = accu.erratic; linear = accu.linear; } else { v49 = accu.erratic; v45 = 0; v46 = 0; } v74->count = v46; erratic->count = v45; if ( linear->count + v49->count != v67 ) LABEL_96: search_object_cold(); frame_heapsort(v2, fde_compareb, v49); v71 = accu.erratic; v50 = accu.erratic->count; if ( !v50 ) goto LABEL_85; v51 = accu.linear; oba = v2; v52 = accu.linear->count; while ( 1 ) { v68 = v50 - 1; v53 = (const dwarf_fde **)(&v71->orig_data + v50); v64 = v53[1]; if ( !v52 ) break; v54 = v52 + v50 - 1; v55 = v52; while ( 1 ) { v52 = v55--; if ( fde_compareb(oba, v51->array[v55], v64) <= 0 ) break; v51->array[v54--] = v51->array[v55]; if ( !v55 ) { v54 = v68; v52 = 0; break; } } LABEL_81: v51->array[v54] = v64; if ( !v68 ) goto LABEL_84; v50 = v68; } v51->array[v50 - 1] = v64; if ( v50 != 1 ) { v54 = v50 - 2; v68 = v50 - 2; v64 = *v53; goto LABEL_81; } LABEL_84: v2 = oba; v51->count += v71->count; v71 = accu.erratic; LABEL_85: __mingw_free((unsigned int)v71); LABEL_86: v56 = accu.linear; accu.linear->orig_data = v2->u.single; *(_BYTE *)&v2->s.b |= 1u; v2->u.single = (const dwarf_fde *)v56; LABEL_30: if ( v2->pc_begin > a2 ) return 0; b = (char)v2->s.b; v21 = (const fde **)v2->u.single; if ( (b & 1) == 0 ) { if ( (b & 2) == 0 ) return linear_search_fdes(v2, v2->u.single, a2); for ( i = *v21; i; ++v21 ) { result = linear_search_fdes(v2, i, a2); if ( result ) return result; i = v21[1]; } return 0; } LABEL_2: v4.single = (const dwarf_fde *)v2->u; if ( (b & 4) == 0 ) { v5 = v2->s.i; if ( (v5 & 0x7F8) != 0 ) { v23 = v5 >> 3; fde_comparea = v23; v24 = base_from_object(v23, (int)v2); CIE_delta = v4.single->CIE_delta; v62 = (int *)v24; if ( CIE_delta ) { v73.single = v4.single; v26 = 0; v69 = v23 & 0xF; do { v27 = (CIE_delta + v26) >> 1; v9 = *(_DWORD *)&v73.single->pc_begin[4 * v27]; encoded_value_with_base_0 = (int *)read_encoded_value_with_base_0( fde_comparea, v62, (int *)(v9 + 8), (int *)&v76); read_encoded_value_with_base_0(v69, 0, encoded_value_with_base_0, (int *)&accu); if ( v76 <= (unsigned int)a2 ) { if ( (char *)accu.linear + v76 > a2 ) return (const fde *)v9; v26 = v27 + 1; } else { CIE_delta = (CIE_delta + v26) >> 1; } } while ( v26 < CIE_delta ); } } else { v6 = v4.single->CIE_delta; v7 = 0; while ( v6 > v7 ) { v8 = (v6 + v7) >> 1; v9 = *(_DWORD *)&v4.single->pc_begin[4 * v8]; v10 = *(_DWORD *)(v9 + 8); if ( (unsigned int)a2 >= v10 ) { if ( (unsigned int)a2 < *(_DWORD *)(v9 + 12) + v10 ) return (const fde *)v9; v7 = v8 + 1; } else { v6 = (v6 + v7) >> 1; } } } return 0; } fde_compare = (fde_compare_t)v4.single->CIE_delta; if ( !fde_compare ) return 0; v61 = 0; v72 = (int)v2; while ( 2 ) { v16 = ((unsigned int)fde_compare + v61) >> 1; v17 = *(_DWORD *)&v4.single->pc_begin[4 * v16]; cie_encoding = get_cie_encoding((const dwarf_cie *)(v17 + 4 - *(_DWORD *)(v17 + 4))); v19 = (int *)base_from_object(cie_encoding, v72); v20 = (int *)read_encoded_value_with_base_0(cie_encoding, v19, (int *)(v17 + 8), (int *)&v76); read_encoded_value_with_base_0(cie_encoding & 0xF, 0, v20, (int *)&accu); if ( v76 > (unsigned int)a2 ) { fde_compare = (fde_compare_t)(((unsigned int)fde_compare + v61) >> 1); LABEL_23: if ( v61 >= (unsigned int)fde_compare ) return 0; continue; } break; } if ( (char *)accu.linear + v76 <= a2 ) { v61 = v16 + 1; goto LABEL_23; } return (const fde *)v17; } //----- (0043A4F0) -------------------------------------------------------- void __usercall __register_frame_info_bases_part_0( const void *begin@, object *ob@, void *tbase@, void *dbase) { int v5; // eax LONG v6; // eax int v7; // edx object *v8; // eax object *v9; // eax ob->pc_begin = (void *)-1; ob->tbase = tbase; ob->u.single = (const dwarf_fde *)begin; v5 = _CRT_MT; ob->dbase = dbase; ob->s.i = 2040; if ( !v5 ) goto LABEL_9; if ( !once_22341 ) { if ( InterlockedIncrement(&dword_4E80C0) ) { while ( !once_22341 ) Sleep(0); if ( _CRT_MT ) goto LABEL_3; } else { init_object_mutex(); once_22341 = 1; if ( _CRT_MT ) goto LABEL_3; } LABEL_9: v9 = unseen_objects; unseen_objects = ob; ob->next = v9; return; } LABEL_3: v6 = InterlockedIncrement(&object_mutex.counter); v7 = _CRT_MT; if ( v6 ) { if ( WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) InterlockedDecrement(&object_mutex.counter); v7 = _CRT_MT; } v8 = unseen_objects; unseen_objects = ob; ob->next = v8; if ( v7 ) { if ( InterlockedDecrement(&object_mutex.counter) >= 0 ) ReleaseSemaphore(object_mutex.sema, 1, 0); } } // 4E80BC: using guessed type int once_22341; // 15412D0: using guessed type int _CRT_MT; //----- (0043A650) -------------------------------------------------------- void __cdecl __register_frame_info_bases(const void *begin, object *ob, void *tbase, void *dbase) { if ( begin ) { if ( *(_DWORD *)begin ) __register_frame_info_bases_part_0(begin, ob, tbase, dbase); } } //----- (0043A680) -------------------------------------------------------- void __cdecl __register_frame_info(const void *begin, object *ob) { if ( begin ) { if ( *(_DWORD *)begin ) __register_frame_info_bases_part_0(begin, ob, 0, 0); } } //----- (0043A6B0) -------------------------------------------------------- void __cdecl __register_frame(void *begin) { object *v1; // eax if ( *(_DWORD *)begin ) { v1 = (object *)malloc(0x18u); __register_frame_info_bases_part_0(begin, v1, 0, 0); } } //----- (0043A6F0) -------------------------------------------------------- void __cdecl __register_frame_info_table_bases(void *begin, object *ob, void *tbase, void *dbase) { LONG v4; // eax int v5; // edx object *v6; // eax object *v7; // eax ob->tbase = tbase; ob->pc_begin = (void *)-1; ob->dbase = dbase; ob->s.i = 2042; ob->u.single = (const dwarf_fde *)begin; if ( !_CRT_MT ) goto LABEL_9; if ( !once_22341 ) { if ( InterlockedIncrement(&dword_4E80C0) ) { while ( !once_22341 ) Sleep(0); if ( _CRT_MT ) goto LABEL_3; } else { init_object_mutex(); once_22341 = 1; if ( _CRT_MT ) goto LABEL_3; } LABEL_9: v7 = unseen_objects; unseen_objects = ob; ob->next = v7; return; } LABEL_3: v4 = InterlockedIncrement(&object_mutex.counter); v5 = _CRT_MT; if ( v4 ) { if ( WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) InterlockedDecrement(&object_mutex.counter); v5 = _CRT_MT; } v6 = unseen_objects; unseen_objects = ob; ob->next = v6; if ( v5 ) { if ( InterlockedDecrement(&object_mutex.counter) >= 0 ) ReleaseSemaphore(object_mutex.sema, 1, 0); } } // 4E80BC: using guessed type int once_22341; // 15412D0: using guessed type int _CRT_MT; //----- (0043A860) -------------------------------------------------------- void __cdecl __register_frame_info_table(void *begin, object *ob) { __register_frame_info_table_bases(begin, ob, 0, 0); } //----- (0043A890) -------------------------------------------------------- void __cdecl __register_frame_table(void *begin) { object *ob; // [esp+4h] [ebp-18h] ob = (object *)malloc(0x18u); __register_frame_info_table_bases(begin, ob, 0, 0); } //----- (0043A8D0) -------------------------------------------------------- void *__cdecl __deregister_frame_info_bases(const void *begin) { object *v1; // eax object **p_next; // ecx const void *single; // edx object *v4; // ebx object **v6; // edx const void **v7; // eax if ( !begin || !*(_DWORD *)begin ) return 0; if ( _CRT_MT ) { if ( once_22341 ) goto LABEL_39; if ( InterlockedIncrement(&dword_4E80C0) ) { while ( !once_22341 ) Sleep(0); } else { init_object_mutex(); once_22341 = 1; } if ( _CRT_MT ) { LABEL_39: if ( InterlockedIncrement(&object_mutex.counter) && WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) InterlockedDecrement(&object_mutex.counter); } } v1 = unseen_objects; if ( unseen_objects ) { p_next = &unseen_objects; do { single = v1->u.single; v4 = v1; v1 = v1->next; if ( begin == single ) { *p_next = v1; goto LABEL_11; } p_next = &v4->next; } while ( v1 ); } v4 = seen_objects; if ( !seen_objects ) { LABEL_30: if ( _CRT_MT && InterlockedDecrement(&object_mutex.counter) >= 0 ) ReleaseSemaphore(object_mutex.sema, 1, 0); abort(); } v6 = &seen_objects; while ( 1 ) { v7 = (const void **)v4->u.single; if ( (*(_BYTE *)&v4->s.b & 1) != 0 ) break; if ( begin == v7 ) { *v6 = v4->next; goto LABEL_11; } LABEL_17: v6 = &v4->next; v4 = v4->next; if ( !v4 ) goto LABEL_30; } if ( begin != *v7 ) goto LABEL_17; *v6 = v4->next; __mingw_free((unsigned int)v7); LABEL_11: if ( _CRT_MT ) { if ( InterlockedDecrement(&object_mutex.counter) >= 0 ) ReleaseSemaphore(object_mutex.sema, 1, 0); } return v4; } // 4E80BC: using guessed type int once_22341; // 15412D0: using guessed type int _CRT_MT; //----- (0043AAE0) -------------------------------------------------------- void __cdecl __deregister_frame(void *begin) { void *v1; // eax if ( *(_DWORD *)begin ) { v1 = __deregister_frame_info_bases(begin); __mingw_free((unsigned int)v1); } } //----- (0043AB10) -------------------------------------------------------- const fde *__cdecl _Unwind_Find_FDE(void *pc, dwarf_eh_bases *bases) { object *v2; // ebx const fde *v3; // esi char cie_encoding; // bp int *v5; // eax object **p_next; // edx object *v8; // eax _Unwind_Ptr func[8]; // [esp+1Ch] [ebp-20h] BYREF if ( _CRT_MT ) { if ( once_22341 ) goto LABEL_3; if ( InterlockedIncrement(&dword_4E80C0) ) { while ( !once_22341 ) Sleep(0); if ( _CRT_MT ) { LABEL_3: if ( InterlockedIncrement(&object_mutex.counter) && WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) InterlockedDecrement(&object_mutex.counter); } } else { init_object_mutex(); once_22341 = 1; if ( _CRT_MT ) goto LABEL_3; } } v2 = seen_objects; if ( !seen_objects ) goto LABEL_15; while ( v2->pc_begin > pc ) { v2 = v2->next; if ( !v2 ) goto LABEL_15; } v3 = search_object((int)v2, (char *)pc); if ( v3 ) { LABEL_9: if ( _CRT_MT && InterlockedDecrement(&object_mutex.counter) >= 0 ) ReleaseSemaphore(object_mutex.sema, 1, 0); bases->tbase = v2->tbase; bases->dbase = v2->dbase; if ( (*(_BYTE *)&v2->s.b & 4) != 0 ) cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&v3->CIE_delta - v3->CIE_delta)); else cie_encoding = *(_WORD *)&v2->s.b >> 3; v5 = (int *)base_from_object(cie_encoding, (int)v2); read_encoded_value_with_base_0(cie_encoding, v5, (int *)v3->pc_begin, (int *)func); bases->func = (void *)func[0]; return v3; } else { LABEL_15: while ( 1 ) { v2 = unseen_objects; if ( !unseen_objects ) break; unseen_objects = unseen_objects->next; v3 = search_object((int)v2, (char *)pc); v8 = seen_objects; if ( seen_objects ) { p_next = &seen_objects; while ( v8->pc_begin >= v2->pc_begin ) { p_next = &v8->next; v8 = v8->next; if ( !v8 ) goto LABEL_14; } v2->next = v8; *p_next = v2; if ( v3 ) goto LABEL_9; } else { p_next = &seen_objects; LABEL_14: v2->next = v8; *p_next = v2; if ( v3 ) goto LABEL_9; } } if ( _CRT_MT && InterlockedDecrement(&object_mutex.counter) >= 0 ) ReleaseSemaphore(object_mutex.sema, 1, 0); return 0; } } // 4E80BC: using guessed type int once_22341; // 15412D0: using guessed type int _CRT_MT; // 43AB10: using guessed type _Unwind_Ptr func[8]; //----- (0043AD90) -------------------------------------------------------- void __cdecl emutls_destroy(void *ptr) { int v1; // edi int v2; // ebx int v3; // eax v1 = *(_DWORD *)ptr; if ( *(_DWORD *)ptr ) { v2 = 0; do { v3 = *((_DWORD *)ptr + v2 + 1); if ( v3 ) __mingw_free(*(_DWORD *)(v3 - 4)); ++v2; } while ( v1 != v2 ); } __mingw_free((unsigned int)ptr); } //----- (0043ADE0) -------------------------------------------------------- _DWORD *__usercall emutls_alloc@(size_t *a1@) { unsigned int v2; // ebp size_t v3; // edi _DWORD *v4; // eax _DWORD *v5; // ebx const void *Src; // eax void *v8; // eax size_t v9; // [esp+8h] [ebp-24h] v2 = a1[1]; v3 = *a1; if ( v2 > 4 ) { v8 = malloc(v2 + v3 + 3); if ( v8 ) { v5 = (_DWORD *)(-v2 & ((unsigned int)v8 + v2 + 3)); *(v5 - 1) = v8; Src = (const void *)a1[3]; v9 = v3; if ( Src ) goto LABEL_4; goto LABEL_7; } LABEL_8: emutls_alloc_cold(); } v4 = malloc(v3 + 4); if ( !v4 ) goto LABEL_8; *v4 = v4; v5 = v4 + 1; Src = (const void *)a1[3]; v9 = v3; if ( Src ) { LABEL_4: memcpy(v5, Src, v9); return v5; } LABEL_7: memset(v5, 0, v9); return v5; } //----- (0043AE80) -------------------------------------------------------- DWORD emutls_init() { int v0; // eax DWORD result; // eax emutls_mutex.counter = -1; emutls_mutex.sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); v0 = TlsAlloc(); if ( v0 == -1 ) { result = GetLastError(); } else { emutls_key = v0; result = __mingwthr_key_dtor(v0, (int)emutls_destroy); } if ( result ) emutls_init_cold(); return result; } //----- (0043AEF0) -------------------------------------------------------- _DWORD *__cdecl __emutls_get_address(size_t *a1) { _DWORD *result; // eax pointer v2; // edi DWORD dwTlsIndex; // ebx DWORD LastError; // ebp pointer *Value; // ebx pointer v6; // ebp pointer *v7; // ebx pointer *v8; // eax int v9; // edx pointer *v10; // eax int v11; // [esp+1Ch] [ebp-20h] if ( !_CRT_MT ) { result = (_DWORD *)a1[2]; if ( !result ) { result = emutls_alloc(a1); a1[2] = (size_t)result; } return result; } v2 = a1[2]; if ( !v2 ) { if ( !_CRT_MT ) goto LABEL_28; if ( once_21263 ) goto LABEL_39; if ( InterlockedIncrement(&dword_4E80C8) ) { while ( !once_21263 ) Sleep(0); } else { emutls_init(); once_21263 = 1; } if ( _CRT_MT ) { LABEL_39: if ( InterlockedIncrement(&emutls_mutex.counter) && WaitForSingleObject(emutls_mutex.sema, 0xFFFFFFFF) ) InterlockedDecrement(&emutls_mutex.counter); v2 = a1[2]; if ( v2 ) goto LABEL_14; } else { LABEL_28: v2 = a1[2]; if ( v2 ) goto LABEL_5; } v2 = emutls_size + 1; emutls_size = v2; a1[2] = v2; LABEL_14: if ( _CRT_MT && InterlockedDecrement(&emutls_mutex.counter) >= 0 ) ReleaseSemaphore(emutls_mutex.sema, 1, 0); } LABEL_5: dwTlsIndex = emutls_key; LastError = GetLastError(); Value = (pointer *)TlsGetValue(dwTlsIndex); SetLastError(LastError); if ( !Value ) { v8 = (pointer *)calloc(v2 + 33, 4u); Value = v8; if ( v8 ) { *v8 = v2 + 32; goto LABEL_19; } LABEL_35: __emutls_get_address_cold(); } v6 = *Value; if ( *Value < v2 ) { v9 = 2 * v6; if ( v2 > 2 * v6 ) v9 = v2 + 32; v11 = v9; v10 = (pointer *)__mingw_realloc((unsigned int)Value, 4 * v9 + 4); Value = v10; if ( v10 ) { *v10 = v11; memset(&v10[v6 + 1], 0, 4 * (v11 - v6)); LABEL_19: if ( !TlsSetValue(emutls_key, Value) ) GetLastError(); goto LABEL_7; } goto LABEL_35; } LABEL_7: v7 = &Value[v2]; result = (_DWORD *)*v7; if ( !*v7 ) { result = emutls_alloc(a1); *v7 = (pointer)result; } return result; } // 4E80C4: using guessed type int once_21263; // 15412D0: using guessed type int _CRT_MT; //----- (0043B160) -------------------------------------------------------- void __cdecl __emutls_register_common(__emutls_object *obj, word size, word align, void *templ) { if ( obj->size < size ) { obj->size = size; obj->templ = 0; } if ( obj->align < align ) obj->align = align; if ( templ ) { if ( obj->size == size ) obj->templ = templ; } } //----- (0043B4F0) -------------------------------------------------------- int __cdecl __mingwthr_key_dtor(int a1, int a2) { if ( a2 ) return ___w64_mingwthr_add_key_dtor(a1, a2); else return 0; } //----- (0043B510) -------------------------------------------------------- int __cdecl _txnal_cow_string_D1() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0043B540) -------------------------------------------------------- void __cdecl __noreturn _txnal_cow_string_c_str() { JUMPOUT(0); } // 43B544: control flows out of bounds to 0 //----- (0043B550) -------------------------------------------------------- void __cdecl __noreturn _txnal_sso_string_c_str() { JUMPOUT(0); } // 43B554: control flows out of bounds to 0 //----- (0043B560) -------------------------------------------------------- char *__cdecl _txnal_logic_error_get_msg(char *a1) { return a1 + 4; } //----- (0043B570) -------------------------------------------------------- void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *a1) { int v1; // eax int v2[3]; // [esp+1Fh] [ebp-Dh] BYREF if ( a1 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) { v1 = _InterlockedExchangeAdd(a1 + 2, 0xFFFFFFFF); } else { v1 = *((_DWORD *)a1 + 2); *((_DWORD *)a1 + 2) = v1 - 1; } if ( v1 <= 0 ) std::string::_Rep::_M_destroy((void *)a1, (int)v2); } } // 15412D0: using guessed type int _CRT_MT; // 43B570: using guessed type int var_D[3]; //----- (0043B5C0) -------------------------------------------------------- char *__cdecl _txnal_runtime_error_get_msg(char *a1) { return a1 + 4; } //----- (0043B5D0) -------------------------------------------------------- _DWORD *__cdecl _txnal_cow_string_C1_for_exceptions(_DWORD *a1) { int v1; // ebx _DWORD *v2; // eax _DWORD *v3; // esi _DWORD *result; // eax v1 = 1; while ( (unsigned __int8)MEMORY[0]() ) ++v1; v2 = (_DWORD *)MEMORY[0](v1 + 12); v2[2] = 0; v3 = v2 + 3; v2[1] = v1 - 1; *v2 = v1 - 1; MEMORY[0](v1); result = a1; *a1 = v3; return result; } // 4DB784: using guessed type void __noreturn _txnal_cow_string_C1_for_exceptions(void); //----- (0043B640) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1) { JUMPOUT(0); } // 43B647: control flows out of bounds to 0 //----- (0043B660) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1) { JUMPOUT(0); } // 43B667: control flows out of bounds to 0 //----- (0043B680) -------------------------------------------------------- void __cdecl _ZGTtNSt11logic_errorC2EPKc(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::logic_error::~logic_error(v2); } // 43B693: variable 'v1' is possibly undefined // 43B680: using guessed type _DWORD var_14[5]; //----- (0043B6E0) -------------------------------------------------------- void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::logic_error::~logic_error(v2); } // 43B6F3: variable 'v1' is possibly undefined // 43B6E0: using guessed type _DWORD var_14[5]; //----- (0043B740) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 43B75B: control flows out of bounds to 0 //----- (0043B760) -------------------------------------------------------- int _ZGTtNSt11logic_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0043B770) -------------------------------------------------------- void __cdecl _ZGTtNSt11range_errorC2EPKc(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F5F94; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::range_error::~range_error(v2); } // 43B783: variable 'v1' is possibly undefined // 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); //----- (0043B7E0) -------------------------------------------------------- void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F5F94; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::range_error::~range_error(v2); } // 43B7F3: variable 'v1' is possibly undefined // 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); //----- (0043B850) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 43B86B: control flows out of bounds to 0 //----- (0043B870) -------------------------------------------------------- int _ZGTtNSt11range_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0043B880) -------------------------------------------------------- void __cdecl _ZGTtNSt12domain_errorC2EPKc(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F6018; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::domain_error::~domain_error(v2); } // 43B893: variable 'v1' is possibly undefined // 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); //----- (0043B8F0) -------------------------------------------------------- void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F6018; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::domain_error::~domain_error(v2); } // 43B903: variable 'v1' is possibly undefined // 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); //----- (0043B960) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 43B97B: control flows out of bounds to 0 //----- (0043B980) -------------------------------------------------------- int _ZGTtNSt12domain_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0043B990) -------------------------------------------------------- void __cdecl _ZGTtNSt12length_errorC2EPKc(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F602C; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::length_error::~length_error(v2); } // 43B9A3: variable 'v1' is possibly undefined // 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); //----- (0043BA00) -------------------------------------------------------- void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F602C; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::length_error::~length_error(v2); } // 43BA13: variable 'v1' is possibly undefined // 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); //----- (0043BA70) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 43BA8B: control flows out of bounds to 0 //----- (0043BA90) -------------------------------------------------------- int _ZGTtNSt12length_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0043BAA0) -------------------------------------------------------- void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F6040; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::out_of_range::~out_of_range(v2); } // 43BAB3: variable 'v1' is possibly undefined // 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); //----- (0043BB10) -------------------------------------------------------- void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F6040; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::out_of_range::~out_of_range(v2); } // 43BB23: variable 'v1' is possibly undefined // 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); //----- (0043BB80) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 43BB9B: control flows out of bounds to 0 //----- (0043BBA0) -------------------------------------------------------- int _ZGTtNSt12out_of_rangeD2Ev() { return _txnal_cow_string_D1(); } //----- (0043BBB0) -------------------------------------------------------- void __cdecl _ZGTtNSt13runtime_errorC2EPKc(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::runtime_error::~runtime_error(v2); } // 43BBC3: variable 'v1' is possibly undefined // 43BBB0: using guessed type _DWORD var_14[5]; //----- (0043BC10) -------------------------------------------------------- void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::runtime_error::~runtime_error(v2); } // 43BC23: variable 'v1' is possibly undefined // 43BC10: using guessed type _DWORD var_14[5]; //----- (0043BC70) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 43BC8B: control flows out of bounds to 0 //----- (0043BC90) -------------------------------------------------------- int _ZGTtNSt13runtime_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0043BCA0) -------------------------------------------------------- void __cdecl _ZGTtNSt14overflow_errorC2EPKc(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F6358; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::overflow_error::~overflow_error(v2); } // 43BCB3: variable 'v1' is possibly undefined // 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); //----- (0043BD10) -------------------------------------------------------- void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F6358; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::overflow_error::~overflow_error(v2); } // 43BD23: variable 'v1' is possibly undefined // 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); //----- (0043BD80) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 43BD9B: control flows out of bounds to 0 //----- (0043BDA0) -------------------------------------------------------- int _ZGTtNSt14overflow_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0043BDB0) -------------------------------------------------------- void __cdecl _ZGTtNSt15underflow_errorC2EPKc(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F658C; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::underflow_error::~underflow_error(v2); } // 43BDC3: variable 'v1' is possibly undefined // 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); //----- (0043BE20) -------------------------------------------------------- void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F658C; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::underflow_error::~underflow_error(v2); } // 43BE33: variable 'v1' is possibly undefined // 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); //----- (0043BE90) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 43BEAB: control flows out of bounds to 0 //----- (0043BEB0) -------------------------------------------------------- int _ZGTtNSt15underflow_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0043BEC0) -------------------------------------------------------- void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F65C0; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::invalid_argument::~invalid_argument(v2); } // 43BED3: variable 'v1' is possibly undefined // 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); //----- (0043BF30) -------------------------------------------------------- void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) { char *v1; // [esp+4h] [ebp-28h] int v2[5]; // [esp+18h] [ebp-14h] BYREF std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); v2[0] = (int)&off_4F65C0; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::invalid_argument::~invalid_argument(v2); } // 43BF43: variable 'v1' is possibly undefined // 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); //----- (0043BFA0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 43BFBB: control flows out of bounds to 0 //----- (0043BFC0) -------------------------------------------------------- int _ZGTtNSt16invalid_argumentD2Ev() { return _txnal_cow_string_D1(); } //----- (0043BFD0) -------------------------------------------------------- void __cdecl eh_globals_dtor(int *a1) { int v1; // ebx int v2; // eax if ( a1 ) { v1 = *a1; while ( v1 ) { v2 = v1; v1 = *(_DWORD *)(v1 + 16); _Unwind_DeleteException((_Unwind_Exception *)(v2 + 48)); } __mingw_free((unsigned int)a1); } } //----- (0043C020) -------------------------------------------------------- int __usercall get_ttype_entry@(int a1@, int a2@) { char v2; // bl unsigned __int8 v3; // cl int v4; // ecx int v6[4]; // [esp+1Ch] [ebp-10h] BYREF v2 = *(_BYTE *)(a1 + 20); if ( v2 == -1 ) { v4 = 0; goto LABEL_7; } v3 = v2 & 7; if ( (v2 & 7) == 2 ) { v4 = -2 * a2; goto LABEL_7; } if ( v3 <= 2u ) { if ( v3 ) goto LABEL_12; LABEL_9: v4 = -4 * a2; goto LABEL_7; } if ( v3 == 3 ) goto LABEL_9; if ( v3 != 4 ) LABEL_12: get_ttype_entry(); v4 = -8 * a2; LABEL_7: read_encoded_value_with_base(v2, *(int **)(a1 + 8), (int *)(*(_DWORD *)(a1 + 12) + v4), v6); return v6[0]; } // 43C020: using guessed type int var_10[4]; //----- (0043C0A0) -------------------------------------------------------- int __usercall get_adjusted_ptr@(int a1@, int a2@, int **a3@) { int result; // eax int *v7; // [esp+1Ch] [ebp-10h] BYREF v7 = *a3; if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2) ) v7 = (int *)*v7; result = (*(int (__thiscall **)(int, int, int **, int))(*(_DWORD *)a1 + 16))(a1, a2, &v7, 1); if ( (_BYTE)result ) *a3 = v7; return result; } //----- (0043C100) -------------------------------------------------------- char *__usercall parse_lsda_header@(_Unwind_Context *a1@, char *a2@, int a3@) { _Unwind_Ptr RegionStart; // eax char v7; // dl int *v8; // ebp char v9; // al char *v10; // esi int v11; // edi int v12; // ecx char v13; // dl int v14; // eax char *v15; // edx int v16; // edi int v17; // ecx char v18; // si int v19; // eax char *result; // eax char v21; // di int *v22; // eax char *encoded_value_with_base; // ebp char v24; // al RegionStart = 0; if ( a1 ) RegionStart = _Unwind_GetRegionStart(a1); *(_DWORD *)a3 = RegionStart; v7 = *a2; v8 = (int *)(a2 + 1); if ( *a2 == -1 ) { *(_DWORD *)(a3 + 4) = RegionStart; v9 = *(_BYTE *)v8; v10 = a2 + 2; *(_BYTE *)(a3 + 20) = *(_BYTE *)v8; if ( v9 != -1 ) goto LABEL_5; LABEL_12: *(_DWORD *)(a3 + 12) = 0; goto LABEL_8; } v21 = *a2; v22 = (int *)base_of_encoded_value(v7, a1); encoded_value_with_base = read_encoded_value_with_base(v21, v22, v8, (int *)(a3 + 4)); v24 = *encoded_value_with_base; v10 = encoded_value_with_base + 1; *(_BYTE *)(a3 + 20) = *encoded_value_with_base; if ( v24 == -1 ) goto LABEL_12; LABEL_5: v11 = 0; v12 = 0; do { v13 = *v10++; v14 = (v13 & 0x7F) << v12; v12 += 7; v11 |= v14; } while ( v13 < 0 ); *(_DWORD *)(a3 + 12) = &v10[v11]; LABEL_8: v15 = v10 + 1; v16 = 0; v17 = 0; *(_BYTE *)(a3 + 21) = *v10; do { v18 = *v15++; v19 = (v18 & 0x7F) << v17; v17 += 7; v16 |= v19; } while ( v18 < 0 ); result = v15; *(_DWORD *)(a3 + 16) = &v15[v16]; return result; } //----- (0043C1E0) -------------------------------------------------------- int __usercall check_exception_spec@(int a1@, int a2@, int *a3@, int a4) { char *v6; // ebx int v7; // ebp int v8; // ecx char v9; // dl int v10; // eax int ttype_entry; // eax int result; // eax int *v13; // [esp+Ch] [ebp-20h] BYREF v13 = a3; v6 = (char *)(*(_DWORD *)(a1 + 12) + ~a4); while ( 1 ) { v7 = 0; v8 = 0; do { v9 = *v6++; v10 = (v9 & 0x7F) << v8; v8 += 7; v7 |= v10; } while ( v9 < 0 ); if ( !v7 ) break; ttype_entry = get_ttype_entry(a1, v7); result = get_adjusted_ptr(ttype_entry, a2, &v13); if ( (_BYTE)result ) return result; } return 0; } //----- (0043C250) -------------------------------------------------------- _Unwind_Ptr __usercall base_of_encoded_value@(char a1@, _Unwind_Context *context@) { unsigned __int8 v2; // cl if ( a1 == -1 ) return 0; v2 = a1 & 0x70; if ( (a1 & 0x70) == 48 ) return _Unwind_GetDataRelBase(context); if ( v2 <= 0x30u ) { if ( v2 == 32 ) return _Unwind_GetTextRelBase(context); if ( v2 <= 0x20u && (a1 & 0x60) == 0 ) return 0; goto LABEL_13; } if ( v2 != 64 ) { if ( v2 == 80 ) return 0; LABEL_13: base_of_encoded_value(); } return _Unwind_GetRegionStart(context); } //----- (0043C2D0) -------------------------------------------------------- void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, _Unwind_Exception *a2) { void (__fastcall *v2)(_Unwind_Exception *); // edx if ( (unsigned int)a1 > 1 ) __cxxabiv1::__terminate(*((void (**)(void))&a2[-2].private_2 + 3)); if ( !_InterlockedSub((volatile signed __int32 *)&a2[-2], 1u) ) { v2 = (void (__fastcall *)(_Unwind_Exception *))*(&a2[-2].private_2 + 1); if ( v2 ) v2(a2 + 1); __cxa_free_exception(&a2[1]); } } //----- (0043C320) -------------------------------------------------------- char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4) { int v6; // edx char *result; // eax _DWORD *v8; // eax int v9; // edx int v10; // ecx int v11; // ebp char v12; // dl int v13; // edi unsigned int v14; // ecx int v15; // ebp char v16; // dl int v17; // edi char v18; // di if ( a1 == 80 ) { v8 = (_DWORD *)(((unsigned int)a3 + 3) & 0xFFFFFFFC); v9 = *v8; result = (char *)(v8 + 1); *a4 = v9; } else { switch ( a1 & 0xF ) { case 0: case 3: case 0xB: v6 = *a3; result = (char *)(a3 + 1); goto LABEL_4; case 1: result = (char *)a3; v10 = 0; v11 = 0; do { v12 = *result++; v13 = (v12 & 0x7F) << v10; v10 += 7; v11 |= v13; } while ( v12 < 0 ); v6 = v11; goto LABEL_4; case 2: v6 = *(unsigned __int16 *)a3; result = (char *)a3 + 2; goto LABEL_4; case 4: case 0xC: v6 = *a3; result = (char *)(a3 + 2); goto LABEL_4; case 9: result = (char *)a3; v14 = 0; v15 = 0; do { v16 = *result++; v17 = (v16 & 0x7F) << v14; v14 += 7; v15 |= v17; } while ( v16 < 0 ); v18 = v16; v6 = v15; if ( v14 > 0x1F || (v18 & 0x40) == 0 ) goto LABEL_4; v6 = (-1 << v14) | v15; goto LABEL_5; case 0xA: v6 = *(__int16 *)a3; result = (char *)a3 + 2; LABEL_4: if ( !v6 ) goto LABEL_8; LABEL_5: if ( (a1 & 0x70) == 16 ) a2 = a3; v6 += (int)a2; if ( a1 < 0 ) *a4 = *(_DWORD *)v6; else LABEL_8: *a4 = v6; break; default: abort(); } } return result; } //----- (0043C460) -------------------------------------------------------- void __cdecl __noreturn __cxxabiv1::__terminate(void (*a1)(void)) { a1(); JUMPOUT(0x4D9BB0); } // 43C467: control flows out of bounds to 4D9BB0 // 4D9BA8: using guessed type void __noreturn __cxxabiv1::__terminate(void); //----- (0043C480) -------------------------------------------------------- void __cdecl __noreturn __cxxabiv1::__unexpected(void (*a1)(void)) { a1(); std::terminate(); } //----- (0043C490) -------------------------------------------------------- void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *a1) { operator delete(a1, 4u); } //----- (0043C4C0) -------------------------------------------------------- void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1) { std::type_info *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F4F74; std::type_info::~type_info(v2); operator delete(a1, 8u); } // 43C4CC: variable 'v2' is possibly undefined // 4F4F74: using guessed type void (__cdecl *off_4F4F74)(__cxxabiv1::__class_type_info *__hidden this); //----- (0043C4F0) -------------------------------------------------------- void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *this) { _DWORD *v1; // ecx *v1 = &off_4F4F74; std::type_info::~type_info(this); } // 43C4F0: variable 'v1' is possibly undefined // 4F4F74: using guessed type void (__cdecl *off_4F4F74)(__cxxabiv1::__class_type_info *__hidden this); //----- (0043C500) -------------------------------------------------------- void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *a1) { operator delete(a1, 4u); } //----- (0043C530) -------------------------------------------------------- void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1) { __cxxabiv1::__class_type_info *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F4FB4; __cxxabiv1::__class_type_info::~__class_type_info(v2); operator delete(a1, 0xCu); } // 43C53C: variable 'v2' is possibly undefined // 4F4FB4: using guessed type void (__cdecl *off_4F4FB4)(__cxxabiv1::__si_class_type_info *__hidden this); //----- (0043C560) -------------------------------------------------------- void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *this) { _DWORD *v1; // ecx *v1 = &off_4F4FB4; __cxxabiv1::__class_type_info::~__class_type_info(this); } // 43C560: variable 'v1' is possibly undefined // 4F4FB4: using guessed type void (__cdecl *off_4F4FB4)(__cxxabiv1::__si_class_type_info *__hidden this); //----- (0043C570) -------------------------------------------------------- void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1) { __cxxabiv1::__class_type_info *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F4FE0; __cxxabiv1::__class_type_info::~__class_type_info(v2); operator delete(a1, 0x18u); } // 43C57C: variable 'v2' is possibly undefined // 4F4FE0: using guessed type void (__cdecl *off_4F4FE0)(__cxxabiv1::__vmi_class_type_info *__hidden this); //----- (0043C5A0) -------------------------------------------------------- void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *this) { _DWORD *v1; // ecx *v1 = &off_4F4FE0; __cxxabiv1::__class_type_info::~__class_type_info(this); } // 43C5A0: variable 'v1' is possibly undefined // 4F4FE0: using guessed type void (__cdecl *off_4F4FE0)(__cxxabiv1::__vmi_class_type_info *__hidden this); //----- (0043C5B0) -------------------------------------------------------- __gthread_mutex_t *`anonymous namespace'::get_locale_mutex() { if ( (_BYTE)`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex ) return &`anonymous namespace'::get_locale_mutex(void)::locale_mutex; if ( __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex) ) { if ( _CRT_MT ) __gthr_win32_mutex_init_function(&`anonymous namespace'::get_locale_mutex(void)::locale_mutex); __cxa_guard_release(&`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex); atexit(__tcf_0_3); } return &`anonymous namespace'::get_locale_mutex(void)::locale_mutex; } // 15412D0: using guessed type int _CRT_MT; //----- (0043C630) -------------------------------------------------------- void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1) { std::_V2::error_category *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F500C; std::_V2::error_category::~error_category(v2); operator delete(a1); } // 43C63C: variable 'v2' is possibly undefined // 4F500C: using guessed type void (__cdecl *off_4F500C)(_anonymous_namespace_::io_error_category *__hidden this); //----- (0043C650) -------------------------------------------------------- void __cdecl `anonymous namespace'::io_error_category::~io_error_category( _anonymous_namespace_::io_error_category *this) { _DWORD *v1; // ecx *v1 = &off_4F500C; std::_V2::error_category::~error_category(this); } // 43C650: variable 'v1' is possibly undefined // 4F500C: using guessed type void (__cdecl *off_4F500C)(_anonymous_namespace_::io_error_category *__hidden this); //----- (0043C660) -------------------------------------------------------- void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *a1) { operator delete(a1); } //----- (0043C680) -------------------------------------------------------- void (__cdecl ***`anonymous namespace'::__io_category_instance())(_anonymous_namespace_::io_error_category *__hidden this) { if ( (_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec ) return &`anonymous namespace'::__io_category_instance(void)::__ec; if ( __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) { __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); atexit((void (__cdecl *)())__tcf_0_5); } return &`anonymous namespace'::__io_category_instance(void)::__ec; } // 4E9B50: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); //----- (0043C6E0) -------------------------------------------------------- void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *a1) { operator delete(a1); } //----- (0043C700) -------------------------------------------------------- _DWORD *__usercall `anonymous namespace'::pool::free@( int a1@, struct type_info *a2, void (__cdecl *a3)(void *)) { int v4; // edi _DWORD *result; // eax _DWORD *v6; // ebp _DWORD *v7; // esi _DWORD *v8; // edx int *v9; // ebp int v10; // ecx int v11; // [esp+14h] [ebp-28h] int *v12; // [esp+18h] [ebp-24h] v4 = _CRT_MT; if ( _CRT_MT ) { if ( __gthr_win32_mutex_lock(&`anonymous namespace'::emergency_pool) ) __gnu_cxx::__throw_concurrence_lock_error(); v4 = _CRT_MT; } result = (_DWORD *)dword_4E8378; v6 = (_DWORD *)(a1 - 16); if ( !dword_4E8378 || (v11 = *(_DWORD *)(a1 - 16), v7 = (_DWORD *)((char *)v6 + v11), dword_4E8378 > (unsigned int)v6 + v11) ) { *(_DWORD *)(a1 - 12) = dword_4E8378; dword_4E8378 = a1 - 16; goto LABEL_18; } v8 = *(_DWORD **)(dword_4E8378 + 4); if ( (_DWORD *)dword_4E8378 == (_DWORD *)((char *)v6 + v11) ) { v10 = *(_DWORD *)dword_4E8378 + v11; *(_DWORD *)(a1 - 12) = v8; *(_DWORD *)(a1 - 16) = v10; dword_4E8378 = a1 - 16; goto LABEL_18; } if ( v8 ) { v9 = &dword_4E8378; while ( v7 < v8 ) { v9 = result + 1; if ( !v8[1] ) { v12 = result + 1; result = (_DWORD *)result[1]; v6 = (_DWORD *)(a1 - 16); goto LABEL_13; } result = v8; v8 = (_DWORD *)v8[1]; } v12 = v9; v6 = (_DWORD *)(a1 - 16); if ( v7 == v8 ) { v11 += *v7; result[1] = v7[1]; } result = (_DWORD *)*v12; } else { v12 = &dword_4E8378; } LABEL_13: if ( v6 == (_DWORD *)((char *)result + *result) ) { *result += v11; LABEL_18: if ( !v4 ) return result; goto LABEL_15; } *(_DWORD *)(a1 - 12) = result[1]; *(_DWORD *)(a1 - 16) = v11; result = (_DWORD *)*v12; *(_DWORD *)(*v12 + 4) = v6; if ( !v4 ) return result; LABEL_15: result = (_DWORD *)__gthr_win32_mutex_unlock(&`anonymous namespace'::emergency_pool); if ( result ) `anonymous namespace'::pool::free(a2, a3); return result; } // 4E8378: using guessed type int dword_4E8378; // 15412D0: using guessed type int _CRT_MT; //----- (0043C870) -------------------------------------------------------- unsigned int *__usercall `anonymous namespace'::pool::allocate@(int a1@) { unsigned int v2; // eax unsigned int *v3; // ebx unsigned int v4; // eax int *v5; // esi unsigned int v6; // edx unsigned int *v7; // ecx unsigned int v8; // edx unsigned int *v10; // edi int v11; // eax if ( _CRT_MT ) { if ( __gthr_win32_mutex_lock(&`anonymous namespace'::emergency_pool) ) `anonymous namespace'::pool::allocate(); v11 = a1 + 16; if ( (unsigned int)(a1 + 16) < 8 ) v11 = 8; v3 = (unsigned int *)dword_4E8378; v4 = (v11 + 15) & 0xFFFFFFF0; if ( !dword_4E8378 ) { LABEL_19: v3 = 0; LABEL_11: if ( _CRT_MT && __gthr_win32_mutex_unlock(&`anonymous namespace'::emergency_pool) ) JUMPOUT(0x4DAF89); return v3; } LABEL_5: v5 = &dword_4E8378; while ( 1 ) { v6 = *v3; v7 = v3; v3 = (unsigned int *)v3[1]; if ( v6 >= v4 ) break; v5 = (int *)(v7 + 1); if ( !v3 ) goto LABEL_19; } v8 = v6 - v4; if ( v8 > 7 ) { v10 = (unsigned int *)((char *)v7 + v4); v10[1] = (unsigned int)v3; v7 = (unsigned int *)*v5; *v10 = v8; *v7 = v4; *v5 = (int)v10; } else { *v5 = (int)v3; } v3 = v7 + 4; goto LABEL_11; } v2 = a1 + 16; if ( v2 < 8 ) v2 = 8; v3 = (unsigned int *)dword_4E8378; v4 = (v2 + 15) & 0xFFFFFFF0; if ( dword_4E8378 ) goto LABEL_5; return v3; } // 43C8E1: control flows out of bounds to 4DAF89 // 4E8378: using guessed type int dword_4E8378; // 15412D0: using guessed type int _CRT_MT; //----- (0043C960) -------------------------------------------------------- void `anonymous namespace'::init(void) { if ( _CRT_MT ) __gthr_win32_recursive_mutex_init_function(&`anonymous namespace'::fake_mutex); `anonymous namespace'::static_mutex = &`anonymous namespace'::fake_mutex; } // 15412D0: using guessed type int _CRT_MT; //----- (0043C9A0) -------------------------------------------------------- unsigned int __usercall `anonymous namespace'::xwrite@(int a1@, char *a2@, unsigned int a3@) { unsigned int MaxCharCount; // ebp int v7; // eax MaxCharCount = a3; while ( 1 ) { while ( 1 ) { v7 = write(a1, a2, MaxCharCount); if ( v7 != -1 ) break; if ( *_errno() != 4 ) return a3 - MaxCharCount; } MaxCharCount -= v7; if ( !MaxCharCount ) break; a2 += v7; } return a3; } //----- (0043CA00) -------------------------------------------------------- #error "43CA6E: call analysis failed (funcsize=38)" //----- (0043CAA0) -------------------------------------------------------- #error "43CB0E: call analysis failed (funcsize=38)" //----- (0043CB40) -------------------------------------------------------- int __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) { _DWORD *v3; // eax volatile signed __int32 *v4; // edx void (__cdecl *v6)(void *); // [esp+4h] [ebp-24h] volatile signed __int32 *v7; // [esp+1Ch] [ebp-Ch] BYREF *this = 0; this[1] = 0; v7 = 0; v3 = operator new((struct type_info *)0x10, v6); v3[3] = a2; v3[1] = 1; *this = a2; v4 = (volatile signed __int32 *)this[1]; v3[2] = 1; this[1] = v3; *v3 = &off_4F63A4; v7 = v4; return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v7); } // 43CB6B: variable 'v6' is possibly undefined // 4F63A4: using guessed type int (*off_4F63A4)(); //----- (0043CBD8) -------------------------------------------------------- void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) { _DWORD *v3; // eax volatile signed __int32 *v4; // edx void (__cdecl *v5)(void *); // [esp+4h] [ebp-24h] volatile signed __int32 *v6; // [esp+1Ch] [ebp-Ch] BYREF *this = 0; this[1] = 0; v6 = 0; v3 = operator new((struct type_info *)0x10, v5); v3[3] = a2; v3[1] = 1; *this = a2; v4 = (volatile signed __int32 *)this[1]; v3[2] = 1; this[1] = v3; *v3 = &off_4F63A4; v6 = v4; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v6); } // 43CC03: variable 'v5' is possibly undefined // 4F63A4: using guessed type int (*off_4F63A4)(); //----- (0043CC70) -------------------------------------------------------- int __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) { _DWORD *v3; // eax volatile signed __int32 *v4; // edx void (__cdecl *v6)(void *); // [esp+4h] [ebp-24h] volatile signed __int32 *v7; // [esp+1Ch] [ebp-Ch] BYREF *this = 0; this[1] = 0; v7 = 0; v3 = operator new((struct type_info *)0x10, v6); v3[3] = a2; v3[1] = 1; *this = a2; v4 = (volatile signed __int32 *)this[1]; v3[2] = 1; this[1] = v3; *v3 = &off_4F63C0; v7 = v4; return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v7); } // 43CC9B: variable 'v6' is possibly undefined // 4F63C0: using guessed type int (*off_4F63C0)(); //----- (0043CD08) -------------------------------------------------------- #error "43CD76: call analysis failed (funcsize=38)" //----- (0043CDA8) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::NonTerminal::~NonTerminal(void *a1) { operator delete(a1); } //----- (0043CDBC) -------------------------------------------------------- char __stdcall WXSS::CSSTreeLib::MarkHostRule::MarkGood( WXSS::CSSTreeLib::MarkHostRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2) { int *i; // ebx int **v3; // edi int v4; // eax int v5; // edi unsigned int v6; // ebx const char *Literal; // eax int v8; // ebx const char ***v9; // edi const char **v10; // ebx _DWORD *v11; // eax char *v12; // eax unsigned int *v13; // eax void (__cdecl *v15)(void *); // [esp+4h] [ebp-94h] int v16; // [esp+1Ch] [ebp-7Ch] int v17; // [esp+28h] [ebp-70h] BYREF volatile signed __int32 *v18; // [esp+2Ch] [ebp-6Ch] BYREF int v19; // [esp+30h] [ebp-68h] BYREF volatile signed __int32 *v20; // [esp+34h] [ebp-64h] BYREF void *v21[6]; // [esp+38h] [ebp-60h] BYREF void *v22[6]; // [esp+50h] [ebp-48h] BYREF void *v23; // [esp+68h] [ebp-30h] BYREF volatile signed __int32 *v24; // [esp+6Ch] [ebp-2Ch] BYREF for ( i = (int *)*((_DWORD *)this + 30); *((int **)this + 31) != i; i += 2 ) { if ( std::operator==(*i, "SELECTORS") ) { v3 = *(int ***)(*i + 120); if ( *(_DWORD *)(*i + 124) - (_DWORD)v3 == 8 ) { v4 = **v3; if ( *(_BYTE *)v4 == 70 && !strcmp((const char *)(v4 + 1), "_SELECTOR") ) { std::__shared_ptr::__shared_ptr(&v17, v3); v5 = *(_DWORD *)(v17 + 120); v6 = *(_DWORD *)(v17 + 124) - v5; if ( v6 > 0xF ) { v16 = *(_DWORD *)(v5 + 8); if ( !strcmp(*(const char **)v16, "$NAME") ) { Literal = WXSS::Token::GetLiteral((_DWORD *)(v16 + 24)); if ( !strncmp(Literal, "host", 4u) ) { *((_DWORD *)this + 43) = 1; if ( v6 == 40 ) { v8 = *(_DWORD *)(v5 + 24); if ( !strcmp(*(const char **)v8, "SELECTOR") ) { v9 = *(const char ****)(v8 + 120); if ( *(const char ****)(v8 + 124) != v9 ) { v10 = *v9; if ( !strcmp(**v9, "$NAME") && *WXSS::Token::GetLiteral(v10 + 6) == 46 ) { *((_DWORD *)this + 43) = 2; std::__shared_ptr::__shared_ptr( &v19, v9); if ( !*(_DWORD *)(v19 + 132) ) { v11 = operator new((struct type_info *)0x18, v15); v11[1] = 0; *v11 = v11 + 2; *((_BYTE *)v11 + 8) = 0; zcc::shared_ptr::shared_ptr(v11); std::__shared_ptr::operator=( (volatile signed __int32 **)(v19 + 132), (volatile signed __int32 **)&v23); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v24); } v12 = (char *)WXSS::Token::GetLiteral((_DWORD *)(v19 + 24)); std::string::basic_string(v21, v12); std::string::substr(v22, v21, 1u, 0xFFFFFFFF); v13 = std::string::insert((unsigned int *)v22, 0, ".%%HERESUFFIX%%"); std::string::basic_string(&v23, v13); std::string::operator=(*(_DWORD **)(v19 + 132), &v23); std::string::_M_dispose(&v23); std::string::_M_dispose(v22); std::string::_M_dispose(v21); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v20); } } } } } } } std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v18); return 1; } } } } return 1; } // 43CF27: variable 'v15' is possibly undefined // 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); //----- (0043D044) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::MarkHostRule::~MarkHostRule(void *a1) { operator delete(a1); } //----- (0043D058) -------------------------------------------------------- bool __stdcall WXSS::CSSTreeLib::AttrDebugRule::MarkGood( WXSS::CSSTreeLib::AttrDebugRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2) { void *v2; // eax int v3; // edx unsigned int v4; // esi int v5; // eax std::ostream::sentry *v6; // esi char *Literal; // eax std::ostream::sentry *v8; // eax std::ostream::sentry *v9; // esi char *v10; // eax std::ostream::sentry *v11; // eax void *v12; // esi unsigned int *v13; // edx void (__cdecl *v15)(void *); // [esp+4h] [ebp-124h] void (__cdecl *v16)(void *); // [esp+4h] [ebp-124h] int v17; // [esp+18h] [ebp-110h] bool v18; // [esp+1Eh] [ebp-10Ah] bool v19; // [esp+1Fh] [ebp-109h] bool v20; // [esp+1Fh] [ebp-109h] unsigned int *v21; // [esp+20h] [ebp-108h] BYREF volatile signed __int32 *v22; // [esp+24h] [ebp-104h] BYREF volatile signed __int32 *v23; // [esp+28h] [ebp-100h] BYREF volatile signed __int32 *v24; // [esp+2Ch] [ebp-FCh] BYREF volatile signed __int32 *v25; // [esp+30h] [ebp-F8h] BYREF volatile signed __int32 *v26; // [esp+34h] [ebp-F4h] BYREF volatile signed __int32 *v27; // [esp+38h] [ebp-F0h] BYREF volatile signed __int32 *v28; // [esp+3Ch] [ebp-ECh] BYREF char v29[8]; // [esp+40h] [ebp-E8h] BYREF char v30[4]; // [esp+48h] [ebp-E0h] BYREF int v31[55]; // [esp+4Ch] [ebp-DCh] BYREF v17 = *((_DWORD *)this + 42); v2 = operator new((struct type_info *)0xB0, v15); WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v2); zcc::shared_ptr::shared_ptr(v3); std::basic_stringstream,std::allocator>::basic_stringstream((int)v29); v23 = 0; v4 = 0; v24 = 0; v25 = 0; v26 = 0; v18 = 0; v19 = 0; while ( 1 ) { v5 = *((_DWORD *)this + 30); if ( (*((_DWORD *)this + 31) - v5) >> 3 <= v4 ) break; if ( !v19 ) { v19 = std::operator==(*(_DWORD *)(v5 + 8 * v4), "$NAME"); if ( v19 ) std::__shared_ptr::operator=( &v23, (volatile signed __int32 **)(*((_DWORD *)this + 30) + 8 * v4)); } if ( !v18 ) { v18 = std::operator==(*(_DWORD *)(*((_DWORD *)this + 30) + 8 * v4), "$ESV"); if ( v18 ) std::__shared_ptr::operator=( &v25, (volatile signed __int32 **)(*((_DWORD *)this + 30) + 8 * v4)); } ++v4; } v20 = v18 && v19; if ( v20 ) { v6 = std::operator<<>((std::ostream::sentry *)v30, ";wxcs_style_"); Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)v23 + 6); v8 = std::operator<<>(v6, Literal); v9 = std::operator<<>(v8, " : "); v10 = (char *)WXSS::Token::GetLiteral((_DWORD *)v25 + 6); v11 = std::operator<<>(v9, v10); std::operator<<>(v11, ";"); std::string::operator=(v21, "FAKE_ATTR"); v12 = operator new((struct type_info *)0x18, v16); std::stringbuf::str((int)v12, v31); zcc::shared_ptr::shared_ptr(v12); std::__shared_ptr::operator=((volatile signed __int32 **)v21 + 7, &v27); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v28); v13 = v21; v21[6] = 3; v13[41] = v17 + 1; v13[42] = v17 + 2; std::vector>::push_back((char **)this + 30, &v21); *((_BYTE *)this + 116) = 1; } else { *((_BYTE *)this + 116) = 0; } std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v26); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v24); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v29); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v22); return v20; } // 43D07A: variable 'v15' is possibly undefined // 43D091: variable 'v3' is possibly undefined // 43D219: variable 'v16' is possibly undefined // 43CA00: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 43D058: using guessed type char var_E0[4]; // 43D058: using guessed type int var_DC[55]; //----- (0043D324) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::AttrDebugRule::~AttrDebugRule(void *a1) { operator delete(a1); } //----- (0043D338) -------------------------------------------------------- char __userpurge WXSS::CSSTreeLib::BlackListRule::MarkGood@( int a1@, WXSS::CSSTreeLib::BlackListRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3) { unsigned int v4; // ebx const char *Literal; // edx int v6; // ecx int v7; // eax const char *v9; // [esp+1Ch] [ebp-1Ch] v4 = 0; Literal = WXSS::Token::GetLiteral((_DWORD *)this + 6); while ( 1 ) { v6 = *(_DWORD *)(a1 + 4); if ( -1431655765 * ((*(_DWORD *)(a1 + 8) - v6) >> 3) <= v4 ) break; v9 = Literal; v7 = _stricmp(*(const char **)(v6 + 24 * v4), Literal); Literal = v9; if ( !v7 ) { *((_BYTE *)this + 116) = 0; return v7; } ++v4; } LOBYTE(v7) = *((_BYTE *)this + 116); return v7; } //----- (0043D39C) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(void *a1, int a2) { WXSS::CSSTreeLib::BlackListRule::~BlackListRule((int)a1, a2); operator delete(a1); } //----- (0043D3B8) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(int a1, int a2) { *(_DWORD *)a1 = &off_4F50C8; std::vector::~vector((void ***)(a1 + 4), a2); } // 4F50C8: using guessed type void (__cdecl *off_4F50C8)(WXSS::CSSTreeLib::BlackListRule *__hidden this); //----- (0043D3C8) -------------------------------------------------------- void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(int this, WXSS::Token *a2, unsigned __int8 a3) { unsigned int v4; // esi char *Literal; // eax int v6; // ecx if ( *(_BYTE *)(this + 116) ) { v4 = *(_DWORD *)(this + 172); if ( !v4 ) { if ( *(_DWORD *)(this + 132) && a3 ) { std::string::operator+=(a2, *(_DWORD *)(this + 132)); } else { Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)(this + 24)); std::string::operator+=(a2, Literal); } while ( 1 ) { v6 = *(_DWORD *)(this + 120); if ( (*(_DWORD *)(this + 124) - v6) >> 3 <= v4 ) break; if ( v4 && *(_DWORD *)(*(_DWORD *)(v6 + 8 * v4) + 164) > *(_DWORD *)(*(_DWORD *)(v6 + 8 * v4 - 8) + 168) && *(_BYTE *)(*(_DWORD *)a2 + *((_DWORD *)a2 + 1) - 1) != 10 ) { std::string::operator+=(a2, " "); } ++v4; WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(a2, a3); } if ( std::operator==(this, "MEDIA_RULE") || std::operator==(this, "RULE") || std::operator==(this, "DIRECTIVE") ) { std::string::operator+=(a2, "\n"); } } } } //----- (0043D4F0) -------------------------------------------------------- unsigned int __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(int this, WXSS::Token *a2) { unsigned int v2; // edi int v4; // eax int v5; // edx unsigned int *v6; // eax _DWORD *v7; // eax int v8; // edx unsigned int result; // eax bool v10; // zf int v11; // eax unsigned int *v12; // eax _DWORD *v13; // eax void *v14[6]; // [esp+10h] [ebp-78h] BYREF void *v15[6]; // [esp+28h] [ebp-60h] BYREF void *v16[6]; // [esp+40h] [ebp-48h] BYREF void *v17[12]; // [esp+58h] [ebp-30h] BYREF v2 = 0; v4 = *(_DWORD *)(this + 172); if ( v4 == 1 ) { while ( 1 ) { v5 = *(_DWORD *)(this + 120); if ( (*(_DWORD *)(this + 124) - v5) >> 3 <= v2 ) break; if ( std::operator==(*(_DWORD *)(v5 + 8 * v2), "SELECTORS") ) { std::string::substr(v14, *(_DWORD **)(this + 148), 2u, *(_DWORD *)(*(_DWORD *)(this + 148) + 4) - 7); WXML::Rewrite::ToStringCode2((int)v15, (int *)v14); v6 = std::string::insert((unsigned int *)v15, 0, "[is=\""); std::string::basic_string(v16, v6); v7 = std::string::append(v16, "\"]"); std::string::basic_string(v17, v7); std::string::operator+=(a2, (int)v17); std::string::_M_dispose(v17); std::string::_M_dispose(v16); std::string::_M_dispose(v15); std::string::_M_dispose(v14); } else { WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(*(_DWORD *)(this + 120) + 8 * v2), a2, 1u); } ++v2; } return (unsigned int)std::string::operator+=(a2, "\n"); } if ( v4 == 2 ) { while ( 1 ) { v8 = *(_DWORD *)(this + 120); if ( (*(_DWORD *)(this + 124) - v8) >> 3 <= v2 ) break; v10 = !std::operator==(*(_DWORD *)(v8 + 8 * v2), "SELECTORS"); v11 = *(_DWORD *)(this + 120); if ( v10 ) { WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(v11 + 8 * v2), a2, 1u); } else { WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode( *(_DWORD *)(*(_DWORD *)(**(_DWORD **)(*(_DWORD *)(v11 + 8 * v2) + 120) + 120) + 24), a2, 1u); std::string::substr(v14, *(_DWORD **)(this + 148), 2u, *(_DWORD *)(*(_DWORD *)(this + 148) + 4) - 7); WXML::Rewrite::ToStringCode2((int)v15, (int *)v14); v12 = std::string::insert((unsigned int *)v15, 0, "[is=\""); std::string::basic_string(v16, v12); v13 = std::string::append(v16, "\"]"); std::string::basic_string(v17, v13); std::string::operator+=(a2, (int)v17); std::string::_M_dispose(v17); std::string::_M_dispose(v16); std::string::_M_dispose(v15); std::string::_M_dispose(v14); } ++v2; } return (unsigned int)std::string::operator+=(a2, "\n"); } while ( 1 ) { result = (*(_DWORD *)(this + 124) - *(_DWORD *)(this + 120)) >> 3; if ( result <= v2 ) break; ++v2; WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(a2); } return result; } //----- (0043D798) -------------------------------------------------------- unsigned int __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(int this, int a2, int a3) { int i; // esi std::ostream::sentry *v5; // eax std::ostream::sentry *v6; // eax std::ostream::sentry *v7; // esi unsigned int v8; // esi unsigned int result; // eax std::ostream::sentry *v10; // [esp+0h] [ebp-28h] std::ostream::sentry *v11; // [esp+0h] [ebp-28h] char *v12; // [esp+4h] [ebp-24h] char *Literal; // [esp+4h] [ebp-24h] for ( i = 0; i < a2; ++i ) { if ( *(_BYTE *)(this + 116) ) v12 = " "; else v12 = "- "; std::operator<<>((std::ostream::sentry *)(a3 + 8), v12); } v10 = (std::ostream::sentry *)(a3 + 8); if ( *(_DWORD *)(this + 132) ) { v5 = std::operator<<(v10, (int *)this); v11 = std::operator<<>(v5, ": "); std::operator<<>(v11, **(char ***)(this + 132)); } else { v6 = std::operator<<(v10, (int *)this); v7 = std::operator<<>(v6, ": "); Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)(this + 24)); std::operator<<>(v7, Literal); } v8 = 0; std::endl>((std::ostream::sentry *)(a3 + 8)); while ( 1 ) { result = (*(_DWORD *)(this + 124) - *(_DWORD *)(this + 120)) >> 3; if ( result <= v8 ) break; ++v8; WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(a2 + 1, a3); } return result; } //----- (0043D874) -------------------------------------------------------- int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int a1) { int result; // eax result = a1 + 8; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; *(_DWORD *)(a1 + 28) = 0; *(_DWORD *)(a1 + 32) = 0; *(_BYTE *)(a1 + 52) = 0; *(_DWORD *)(a1 + 24) = 1; *(_DWORD *)(a1 + 36) = 0; *(_DWORD *)(a1 + 40) = 0; *(_DWORD *)(a1 + 44) = 0; *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 120) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; *(_DWORD *)(a1 + 136) = 0; *(_DWORD *)(a1 + 140) = 0; *(_DWORD *)(a1 + 144) = 0; *(_DWORD *)(a1 + 148) = 0; *(_DWORD *)(a1 + 152) = 0; *(_DWORD *)(a1 + 156) = 0; *(_DWORD *)(a1 + 160) = 0; *(_BYTE *)(a1 + 116) = 1; *(_DWORD *)(a1 + 172) = 0; *(_DWORD *)(a1 + 168) = 0; *(_DWORD *)(a1 + 164) = 0; return result; } //----- (0043D944) -------------------------------------------------------- int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int a1) { int result; // eax result = a1 + 8; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; *(_DWORD *)(a1 + 28) = 0; *(_DWORD *)(a1 + 32) = 0; *(_BYTE *)(a1 + 52) = 0; *(_DWORD *)(a1 + 24) = 1; *(_DWORD *)(a1 + 36) = 0; *(_DWORD *)(a1 + 40) = 0; *(_DWORD *)(a1 + 44) = 0; *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 120) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; *(_DWORD *)(a1 + 136) = 0; *(_DWORD *)(a1 + 140) = 0; *(_DWORD *)(a1 + 144) = 0; *(_DWORD *)(a1 + 148) = 0; *(_DWORD *)(a1 + 152) = 0; *(_DWORD *)(a1 + 156) = 0; *(_DWORD *)(a1 + 160) = 0; *(_BYTE *)(a1 + 116) = 1; *(_DWORD *)(a1 + 172) = 0; *(_DWORD *)(a1 + 168) = 0; *(_DWORD *)(a1 + 164) = 0; return result; } //----- (0043DA14) -------------------------------------------------------- void __stdcall WXSS::CSSTreeLib::RuleDebugRule::InsertOriginSelectorInfo(int *a1, unsigned int a2, int a3) { int v3; // ecx std::ostream::sentry *v4; // eax std::ostream::sentry *v5; // eax void *v6; // eax int v7; // edx void *v8; // esi unsigned int *v9; // edx void (__cdecl *v10)(void *); // [esp+4h] [ebp-134h] void (__cdecl *v11)(void *); // [esp+4h] [ebp-134h] unsigned int *v12; // [esp+10h] [ebp-128h] BYREF volatile signed __int32 *v13; // [esp+14h] [ebp-124h] BYREF volatile signed __int32 *v14; // [esp+18h] [ebp-120h] BYREF volatile signed __int32 *v15; // [esp+1Ch] [ebp-11Ch] BYREF int v16[2]; // [esp+20h] [ebp-118h] BYREF char v17; // [esp+28h] [ebp-110h] BYREF void *v18[2]; // [esp+38h] [ebp-100h] BYREF char v19; // [esp+40h] [ebp-F8h] BYREF char v20[8]; // [esp+50h] [ebp-E8h] BYREF char v21[4]; // [esp+58h] [ebp-E0h] BYREF int v22[55]; // [esp+5Ch] [ebp-DCh] BYREF v16[0] = (int)&v17; v3 = *a1; v16[1] = 0; v17 = 0; v18[0] = &v19; v18[1] = 0; v19 = 0; WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(v3, (WXSS::Token *)v16, 0); WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*a1, (WXSS::Token *)v18, 1u); if ( !std::operator==((int)v16, (int)v18) ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)v20); v4 = std::operator<<>((std::ostream::sentry *)v21, ";wxcs_originclass: "); v5 = std::operator<<(v4, v16); std::operator<<>(v5, ";"); v6 = operator new((struct type_info *)0xB0, v10); WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v6); zcc::shared_ptr::shared_ptr(v7); std::string::operator=(v12, "FAKE_ATTR"); v8 = operator new((struct type_info *)0x18, v11); std::stringbuf::str((int)v8, v22); zcc::shared_ptr::shared_ptr(v8); std::__shared_ptr::operator=((volatile signed __int32 **)v12 + 7, &v14); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v15); v9 = v12; v12[41] = a2; v9[42] = a2 + 1; v9[6] = 3; std::vector>::push_back((char **)(*(_DWORD *)a3 + 120), &v12); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v13); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v20); } std::string::_M_dispose(v18); std::string::_M_dispose((void **)v16); } // 43DAEF: variable 'v10' is possibly undefined // 43DB06: variable 'v7' is possibly undefined // 43DB26: variable 'v11' is possibly undefined // 43CA00: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 43DA14: using guessed type char var_E0[4]; // 43DA14: using guessed type int var_DC[55]; //----- (0043DC18) -------------------------------------------------------- bool __stdcall WXSS::CSSTreeLib::RuleDebugRule::MarkGood( WXSS::CSSTreeLib::RuleDebugRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2) { unsigned int v2; // ebx int v3; // edx int v4; // esi bool v5; // al bool v6; // zf int v7; // eax int *v8; // esi int *v9; // ecx int *v10; // ebx std::ostream::sentry *v11; // eax std::ostream::sentry *v12; // eax std::ostream::sentry *v13; // eax std::ostream::sentry *v14; // eax void *v15; // eax int v16; // edx void *v17; // esi unsigned int *v18; // edx void (__cdecl *v20)(void *); // [esp+4h] [ebp-134h] void (__cdecl *v21)(void *); // [esp+4h] [ebp-134h] int v22; // [esp+18h] [ebp-120h] bool v23; // [esp+1Eh] [ebp-11Ah] bool v24; // [esp+1Eh] [ebp-11Ah] bool v25; // [esp+1Fh] [ebp-119h] bool v26; // [esp+1Fh] [ebp-119h] volatile signed __int32 *v27; // [esp+28h] [ebp-110h] BYREF volatile signed __int32 *v28; // [esp+2Ch] [ebp-10Ch] BYREF volatile signed __int32 *v29; // [esp+30h] [ebp-108h] BYREF volatile signed __int32 *v30; // [esp+34h] [ebp-104h] BYREF volatile signed __int32 *v31; // [esp+38h] [ebp-100h] BYREF volatile signed __int32 *v32; // [esp+3Ch] [ebp-FCh] BYREF unsigned int *v33; // [esp+40h] [ebp-F8h] BYREF volatile signed __int32 *v34; // [esp+44h] [ebp-F4h] BYREF volatile signed __int32 *v35; // [esp+48h] [ebp-F0h] BYREF volatile signed __int32 *v36; // [esp+4Ch] [ebp-ECh] BYREF int v37; // [esp+50h] [ebp-E8h] BYREF volatile signed __int32 *v38; // [esp+54h] [ebp-E4h] BYREF char v39[4]; // [esp+58h] [ebp-E0h] BYREF int v40[55]; // [esp+5Ch] [ebp-DCh] BYREF v2 = 0; v27 = 0; v28 = 0; v29 = 0; v30 = 0; v25 = 0; while ( 1 ) { v3 = *((_DWORD *)this + 30); if ( (*((_DWORD *)this + 31) - v3) >> 3 <= v2 ) break; v4 = 8 * v2; v5 = std::operator==(*(_DWORD *)(v3 + 8 * v2), "ATTRS"); v6 = !v5; v23 = v5; v7 = *((_DWORD *)this + 30); if ( v6 ) { if ( std::operator==(*(_DWORD *)(v7 + 8 * v2), "{") ) std::__shared_ptr::operator=( &v29, (volatile signed __int32 **)(*((_DWORD *)this + 30) + v4)); } else { std::__shared_ptr::operator=( &v27, (volatile signed __int32 **)(v7 + v4)); v25 = v23; } ++v2; } if ( !v25 ) std::__shared_ptr::operator=(&v27, &v29); v26 = 0; v31 = 0; v8 = (int *)*((_DWORD *)this + 30); v32 = 0; v22 = *((_DWORD *)v27 + 42); do { if ( *((int **)this + 31) == v8 ) break; v24 = std::operator==(*v8, "SELECTORS"); if ( v24 ) { std::__shared_ptr::__shared_ptr(&v37, &v27); std::__shared_ptr::__shared_ptr(&v35, v8); WXSS::CSSTreeLib::RuleDebugRule::InsertOriginSelectorInfo(v9, v22 + 1, (int)&v37); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v36); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v38); v10 = *(int **)(*v8 + 120); while ( !v26 ) { if ( *(int **)(*v8 + 124) == v10 ) goto LABEL_16; if ( std::operator==(*v10, "SELECTOR") || std::operator==(*v10, "U_SELECTOR") || (v26 = std::operator==(*v10, "F_SELECTOR")) ) { std::__shared_ptr::operator=( &v31, *(volatile signed __int32 ***)(*v10 + 120)); v26 = v24; } v10 += 2; } v24 = v26; } LABEL_16: v8 += 2; } while ( !v24 ); if ( v26 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v37); v11 = std::operator<<>((std::ostream::sentry *)v39, ";wxcs_fileinfo: "); v12 = std::operator<<(v11, *((int **)this + 37)); std::operator<<>(v12, " "); v13 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v31 + 11)); std::operator<<>(v13, " "); v14 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v31 + 12)); std::operator<<>(v14, ";"); v15 = operator new((struct type_info *)0xB0, v20); WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v15); zcc::shared_ptr::shared_ptr(v16); std::string::operator=(v33, "FAKE_ATTR"); v17 = operator new((struct type_info *)0x18, v21); std::stringbuf::str((int)v17, v40); zcc::shared_ptr::shared_ptr(v17); std::__shared_ptr::operator=((volatile signed __int32 **)v33 + 7, &v35); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v36); v18 = v33; v33[6] = 3; v18[41] = v22 + 2; v18[42] = v22 + 3; std::vector>::push_back((char **)v27 + 30, &v33); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v34); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v37); *((_BYTE *)this + 116) = 1; } else { *((_BYTE *)this + 116) = 0; } std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v32); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v28); return v26; } // 43DD93: variable 'v9' is possibly undefined // 43DF05: variable 'v20' is possibly undefined // 43DF1C: variable 'v16' is possibly undefined // 43DF3C: variable 'v21' is possibly undefined // 43CA00: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 43DC18: using guessed type char var_E0[4]; // 43DC18: using guessed type int var_DC[55]; //----- (0043E084) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::RuleDebugRule::~RuleDebugRule(void *a1) { operator delete(a1); } //----- (0043E098) -------------------------------------------------------- char *WXSS::CSSTreeLib::LexicalChecker::GetInstance() { bool v1; // [esp+4h] [ebp-14h] if ( !(_BYTE)`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc && __cxa_guard_acquire(&`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc) ) { dword_4E9B7C = 0; dword_4E9B80 = 0; WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; __cxa_guard_release(&`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc); atexit(__tcf_2); } WXSS::CSSTreeLib::LexicalChecker::Init((int)&WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc, 0, v1); return &WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; } // 43E0F6: variable 'v1' is possibly undefined // 4E9B78: using guessed type char WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; // 4E9B7C: using guessed type int dword_4E9B7C; // 4E9B80: using guessed type int dword_4E9B80; //----- (0043E104) -------------------------------------------------------- char *WXSS::CSSTreeLib::LexicalChecker::GetInstance() { bool v1; // [esp+4h] [ebp-14h] if ( !(_BYTE)`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc && __cxa_guard_acquire(&`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc) ) { dword_4E9B88 = 0; dword_4E9B8C = 0; WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; __cxa_guard_release(&`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc); atexit(__tcf_1_0); } WXSS::CSSTreeLib::LexicalChecker::Init( (int)&WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc, (WXSS::CSSTreeLib::LexicalChecker *)1, v1); return &WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; } // 43E162: variable 'v1' is possibly undefined // 4E9B84: using guessed type char WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; // 4E9B88: using guessed type int dword_4E9B88; // 4E9B8C: using guessed type int dword_4E9B8C; //----- (0043E170) -------------------------------------------------------- WXSS::CSSTreeLib::LexicalChecker *__userpurge WXSS::CSSTreeLib::LexicalChecker::Init@( int a1@, WXSS::CSSTreeLib::LexicalChecker *this, bool a3) { WXSS::CSSTreeLib::LexicalChecker *result; // eax _DWORD *v4; // eax _DWORD *v5; // eax _DWORD *v6; // eax char **v7; // ebx _DWORD *v8; // eax int v9; // edi _DWORD *v10; // eax _DWORD *v11; // eax char **v12; // esi _DWORD *v13; // eax _DWORD *v14; // eax _DWORD *v15; // eax int v16; // esi _DWORD *v17; // eax char **v18; // ebx _DWORD *v19; // eax int v20; // esi _DWORD *v21; // eax _DWORD *v22; // eax int v23; // ebx _DWORD *v24; // eax _DWORD *v25; // eax char **v26; // ebx _DWORD *v27; // eax int v28; // edi _DWORD *v29; // eax volatile signed __int32 **v30; // ecx _DWORD *v31; // eax void ***v32; // esi _DWORD *v33; // eax char **v34; // ebx _DWORD *v35; // eax int v36; // esi _DWORD *v37; // eax int v38; // ebx _DWORD *v39; // eax int v40; // esi _DWORD *v41; // eax int v42; // edi _DWORD *v43; // eax char **v44; // esi _DWORD *v45; // eax _DWORD *v46; // eax int v47; // edi _DWORD *v48; // eax void (__cdecl *v49)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v50)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v51)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v52)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v53)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v54)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v55)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v56)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v57)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v58)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v59)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v60)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v61)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v62)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v63)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v64)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v65)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v66)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v67)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v68)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v69)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v70)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v71)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v72)(void *); // [esp+4h] [ebp-104h] void (__cdecl *v73)(void *); // [esp+4h] [ebp-104h] int v74; // [esp+20h] [ebp-E8h] int v75; // [esp+24h] [ebp-E4h] int v77; // [esp+34h] [ebp-D4h] BYREF volatile signed __int32 *v78; // [esp+38h] [ebp-D0h] BYREF int v79; // [esp+3Ch] [ebp-CCh] BYREF volatile signed __int32 *v80; // [esp+40h] [ebp-C8h] BYREF int v81; // [esp+44h] [ebp-C4h] BYREF volatile signed __int32 *v82; // [esp+48h] [ebp-C0h] BYREF int v83; // [esp+4Ch] [ebp-BCh] BYREF volatile signed __int32 *v84; // [esp+50h] [ebp-B8h] BYREF int v85; // [esp+54h] [ebp-B4h] BYREF volatile signed __int32 *v86; // [esp+58h] [ebp-B0h] BYREF int v87; // [esp+5Ch] [ebp-ACh] BYREF volatile signed __int32 *v88; // [esp+60h] [ebp-A8h] BYREF int v89; // [esp+64h] [ebp-A4h] BYREF volatile signed __int32 *v90; // [esp+68h] [ebp-A0h] BYREF char **v91; // [esp+6Ch] [ebp-9Ch] BYREF volatile signed __int32 *v92; // [esp+70h] [ebp-98h] BYREF int v93; // [esp+74h] [ebp-94h] BYREF volatile signed __int32 *v94; // [esp+78h] [ebp-90h] BYREF int v95; // [esp+7Ch] [ebp-8Ch] BYREF volatile signed __int32 *v96; // [esp+80h] [ebp-88h] BYREF char **v97; // [esp+84h] [ebp-84h] BYREF volatile signed __int32 *v98; // [esp+88h] [ebp-80h] BYREF int v99; // [esp+8Ch] [ebp-7Ch] BYREF volatile signed __int32 *v100; // [esp+90h] [ebp-78h] BYREF int v101; // [esp+94h] [ebp-74h] BYREF volatile signed __int32 *v102; // [esp+98h] [ebp-70h] BYREF int v103; // [esp+9Ch] [ebp-6Ch] BYREF volatile signed __int32 *v104; // [esp+A0h] [ebp-68h] BYREF char **v105; // [esp+A4h] [ebp-64h] BYREF volatile signed __int32 *v106; // [esp+A8h] [ebp-60h] BYREF int v107; // [esp+ACh] [ebp-5Ch] BYREF volatile signed __int32 *v108; // [esp+B0h] [ebp-58h] BYREF int v109; // [esp+B4h] [ebp-54h] BYREF volatile signed __int32 *v110; // [esp+B8h] [ebp-50h] BYREF int v111; // [esp+BCh] [ebp-4Ch] BYREF volatile signed __int32 *v112; // [esp+C0h] [ebp-48h] BYREF const char *v113; // [esp+C4h] [ebp-44h] BYREF int v114; // [esp+C8h] [ebp-40h] BYREF volatile signed __int32 *v115; // [esp+CCh] [ebp-3Ch] BYREF void *v116; // [esp+D0h] [ebp-38h] BYREF volatile signed __int32 *v117[13]; // [esp+D4h] [ebp-34h] BYREF result = this; if ( !*(_BYTE *)a1 ) { v4 = operator new((struct type_info *)4, v49); *v4 = &off_4F51AC; zcc::shared_ptr::shared_ptr(&v77, (int)v4); v5 = operator new((struct type_info *)4, v50); *v5 = &off_4F51DC; zcc::shared_ptr::shared_ptr(&v79, (int)v5); v6 = operator new((struct type_info *)0x10, v51); *v6 = &off_4F51F4; v6[1] = 0; v6[2] = 0; v6[3] = 0; zcc::shared_ptr::shared_ptr(&v116, (int)v6); *(_DWORD *)(a1 + 4) = v116; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(a1 + 8), v117[0]); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v117); v7 = *(char ***)(a1 + 4); v8 = operator new((struct type_info *)0x10, v52); *v8 = &off_4F51C4; v8[1] = 0; v8[2] = 0; v8[3] = 0; zcc::shared_ptr::shared_ptr(&v81, (int)v8); ++v7; v9 = v81; std::vector>::push_back(v7, &v81); std::vector>::push_back(v7, &v77); v10 = operator new((struct type_info *)0x10, v53); *v10 = &off_4F51C4; v10[1] = 0; v10[2] = 0; v10[3] = 0; zcc::shared_ptr::shared_ptr(&v83, (int)v10); v75 = v83; v11 = operator new((struct type_info *)0x10, v54); *v11 = &off_4F5180; v11[1] = 0; v11[2] = 0; v11[3] = 0; zcc::shared_ptr::shared_ptr(&v85, (int)v11); v12 = (char **)(v85 + 4); std::vector>::push_back((char **)(v85 + 4), &v83); if ( (_BYTE)this ) { v13 = operator new((struct type_info *)4, v55); *v13 = &off_4F50E0; zcc::shared_ptr::shared_ptr(&v116, (int)v13); std::vector>::push_back(v12, &v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v117); } v14 = operator new((struct type_info *)4, v55); *v14 = &off_4F5098; zcc::shared_ptr::shared_ptr(&v87, (int)v14); std::vector>::push_back(v12, &v87); v113 = "RULE"; std::__shared_ptr::__shared_ptr(&v114, &v85); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v9 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); v15 = operator new((struct type_info *)0x10, v56); *v15 = &off_4F51C4; v15[1] = 0; v15[2] = 0; v15[3] = 0; zcc::shared_ptr::shared_ptr(&v89, (int)v15); v16 = v89; v113 = "MULTIRULE"; std::__shared_ptr::__shared_ptr(&v114, &v89); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v9 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); v113 = "RULES"; std::__shared_ptr::__shared_ptr(&v114, (_DWORD *)(a1 + 4)); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v16 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); v17 = operator new((struct type_info *)0x10, v57); *v17 = &off_4F51F4; v17[1] = 0; v17[2] = 0; v17[3] = 0; zcc::shared_ptr::shared_ptr(&v91, (int)v17); v18 = v91; v19 = operator new((struct type_info *)0x10, v58); *v19 = &off_4F51C4; v19[1] = 0; v19[2] = 0; v19[3] = 0; zcc::shared_ptr::shared_ptr(&v93, (int)v19); v20 = v93; v21 = operator new((struct type_info *)4, v59); *v21 = &off_4F5110; zcc::shared_ptr::shared_ptr(&v95, (int)v21); std::vector>::push_back(++v18, &v93); std::vector>::push_back(v18, &v95); v113 = "SELECTORS"; std::__shared_ptr::__shared_ptr(&v114, &v91); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v75 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); v22 = operator new((struct type_info *)0x10, v60); *v22 = &off_4F51C4; v22[1] = 0; v22[2] = 0; v22[3] = 0; zcc::shared_ptr::shared_ptr(&v101, (int)v22); v23 = v101; v113 = "SELECTOR"; std::__shared_ptr::__shared_ptr(&v114, &v101); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v20 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); v24 = operator new((struct type_info *)4, v61); *v24 = &off_4F5140; zcc::shared_ptr::shared_ptr(&v103, (int)v24); v74 = v23 + 4; v113 = "$NAME"; std::__shared_ptr::__shared_ptr(&v114, &v103); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v23 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); v25 = operator new((struct type_info *)0x10, v62); *v25 = &off_4F5180; v25[1] = 0; v25[2] = 0; v25[3] = 0; zcc::shared_ptr::shared_ptr(&v105, (int)v25); v26 = v105; v113 = "F_SELECTOR"; std::__shared_ptr::__shared_ptr(&v114, &v105); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v20 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); v27 = operator new((struct type_info *)0x10, v63); *v27 = &off_4F51C4; v27[1] = 0; v27[2] = 0; v27[3] = 0; zcc::shared_ptr::shared_ptr(&v107, (int)v27); v28 = v107; v29 = operator new((struct type_info *)0xC, v64); *v29 = &off_4F520C; v29[1] = 0; v29[2] = 0; zcc::shared_ptr::shared_ptr(&v109, (int)v29); ++v26; v30 = (volatile signed __int32 **)(v109 + 8); *(_DWORD *)(v109 + 4) = v101; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v30, v102); std::vector>::push_back(v26, &v107); std::vector>::push_back(v26, &v109); v31 = operator new((struct type_info *)0x10, v65); *v31 = &off_4F50C8; v31[1] = 0; v31[2] = 0; v31[3] = 0; zcc::shared_ptr::shared_ptr(&v111, (int)v31); v32 = (void ***)(v111 + 4); std::string::basic_string(&v116, "root"); std::vector::emplace_back(v32, &v116); std::string::_M_dispose(&v116); v113 = "$NAME"; std::__shared_ptr::__shared_ptr(&v114, &v111); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v28 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); v113 = "SELECTOR"; std::__shared_ptr::__shared_ptr(&v114, &v101); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v74, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v112); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v110); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v108); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v106); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v104); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v102); v33 = operator new((struct type_info *)0x10, v66); *v33 = &off_4F51F4; v33[1] = 0; v33[2] = 0; v33[3] = 0; zcc::shared_ptr::shared_ptr(&v97, (int)v33); v34 = v97; v113 = "ATTRS"; std::__shared_ptr::__shared_ptr(&v114, &v97); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v75 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); v35 = operator new((struct type_info *)0x10, v67); *v35 = &off_4F51C4; v35[1] = 0; v35[2] = 0; v35[3] = 0; zcc::shared_ptr::shared_ptr(&v99, (int)v35); ++v34; v36 = v99; std::vector>::push_back(v34, &v99); std::vector>::push_back(v34, &v77); v37 = operator new((struct type_info *)0x10, v68); *v37 = &off_4F51F4; v37[1] = 0; v37[2] = 0; v37[3] = 0; zcc::shared_ptr::shared_ptr(&v101, (int)v37); v38 = v101; v113 = "ATTR"; std::__shared_ptr::__shared_ptr(&v114, &v101); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v36 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); v39 = operator new((struct type_info *)0x10, v69); *v39 = &off_4F5180; v39[1] = 0; v39[2] = 0; v39[3] = 0; zcc::shared_ptr::shared_ptr(&v103, (int)v39); v40 = v103; v41 = operator new((struct type_info *)0x10, v70); *v41 = &off_4F51C4; v41[1] = 0; v41[2] = 0; v41[3] = 0; zcc::shared_ptr::shared_ptr(&v105, (int)v41); v42 = (int)v105; v43 = operator new((struct type_info *)4, v71); *v43 = &off_4F50F8; zcc::shared_ptr::shared_ptr(&v107, (int)v43); v113 = "$ESV"; std::__shared_ptr::__shared_ptr(&v114, &v107); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v42 + 4, &v116); v44 = (char **)(v40 + 4); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); std::vector>::push_back(v44, &v105); if ( (_BYTE)this ) { v45 = operator new((struct type_info *)4, v72); *v45 = &off_4F50B0; zcc::shared_ptr::shared_ptr(&v116, (int)v45); std::vector>::push_back(v44, &v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v117); } std::vector>::push_back((char **)(v38 + 4), &v103); v46 = operator new((struct type_info *)0x10, v72); *v46 = &off_4F51C4; v46[1] = 0; v46[2] = 0; v46[3] = 0; zcc::shared_ptr::shared_ptr(&v109, (int)v46); v47 = v109; v48 = operator new((struct type_info *)4, v73); *v48 = &off_4F5128; zcc::shared_ptr::shared_ptr(&v111, (int)v48); v113 = "$ESV"; std::__shared_ptr::__shared_ptr(&v114, &v111); std::pair>::pair,true>( (int)&v116, (int)&v113); std::vector>>::emplace_back>>( v47 + 4, &v116); std::pair>::~pair((int)&v116); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); std::vector>::push_back((char **)(v38 + 4), &v109); std::vector>::push_back((char **)(v38 + 4), &v77); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v112); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v110); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v108); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v106); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v104); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v102); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v100); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v98); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v96); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v94); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v92); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v90); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v88); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v86); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v84); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v82); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v80); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v78); result = (WXSS::CSSTreeLib::LexicalChecker *)a1; *(_BYTE *)a1 = 1; } return result; } // 43E19B: variable 'v49' is possibly undefined // 43E1BC: variable 'v50' is possibly undefined // 43E1DD: variable 'v51' is possibly undefined // 43E24B: variable 'v52' is possibly undefined // 43E2A8: variable 'v53' is possibly undefined // 43E2EA: variable 'v54' is possibly undefined // 43E343: variable 'v55' is possibly undefined // 43E3F5: variable 'v56' is possibly undefined // 43E4B7: variable 'v57' is possibly undefined // 43E4F3: variable 'v58' is possibly undefined // 43E52F: variable 'v59' is possibly undefined // 43E5C9: variable 'v60' is possibly undefined // 43E64A: variable 'v61' is possibly undefined // 43E6B3: variable 'v62' is possibly undefined // 43E72B: variable 'v63' is possibly undefined // 43E761: variable 'v64' is possibly undefined // 43E7C4: variable 'v65' is possibly undefined // 43E8D6: variable 'v66' is possibly undefined // 43E954: variable 'v67' is possibly undefined // 43E9AB: variable 'v68' is possibly undefined // 43EA2F: variable 'v69' is possibly undefined // 43EA65: variable 'v70' is possibly undefined // 43EA9B: variable 'v71' is possibly undefined // 43EB23: variable 'v72' is possibly undefined // 43EBA8: variable 'v73' is possibly undefined // 4F5098: using guessed type void (__cdecl *off_4F5098)(WXSS::CSSTreeLib::MarkHostRule *__hidden this); // 4F50B0: using guessed type void (__cdecl *off_4F50B0)(WXSS::CSSTreeLib::AttrDebugRule *__hidden this); // 4F50C8: using guessed type void (__cdecl *off_4F50C8)(WXSS::CSSTreeLib::BlackListRule *__hidden this); // 4F50E0: using guessed type void (__cdecl *off_4F50E0)(WXSS::CSSTreeLib::RuleDebugRule *__hidden this); // 4F50F8: using guessed type void (__cdecl *off_4F50F8)(WXSS::CSSTreeLib::ReWriteRpxRule *__hidden this); // 4F5110: using guessed type void (__cdecl *off_4F5110)(WXSS::CSSTreeLib::MarkSelectorRule *__hidden this); // 4F5128: using guessed type void (__cdecl *off_4F5128)(WXSS::CSSTreeLib::RewriteImgUrlRule *__hidden this); // 4F5140: using guessed type void (__cdecl *off_4F5140)(WXSS::CSSTreeLib::RewriteSelectorRule *__hidden this); // 4F5180: using guessed type void (__cdecl *off_4F5180)(WXSS::CSSTreeLib::AndRules *__hidden this); // 4F51AC: using guessed type void (__cdecl *off_4F51AC)(WXSS::CSSTreeLib::TrueRule *__hidden this); // 4F51C4: using guessed type void (__cdecl *off_4F51C4)(WXSS::CSSTreeLib::ChildRule *__hidden this); // 4F51DC: using guessed type void (__cdecl *off_4F51DC)(WXSS::CSSTreeLib::FalseRule *__hidden this); // 4F51F4: using guessed type void (__cdecl *off_4F51F4)(WXSS::CSSTreeLib::RuleChain *__hidden this); // 4F520C: using guessed type void (__cdecl *off_4F520C)(WXSS::CSSTreeLib::SPNotRule *__hidden this); //----- (0043EF4C) -------------------------------------------------------- int __thiscall WXSS::CSSTreeLib::LexicalChecker::Traval(_DWORD **this, _DWORD *a2) { if ( *(_BYTE *)this ) return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this[1] + 8))(this[1], *a2); else return 0; } //----- (0043EF70) -------------------------------------------------------- char __stdcall WXSS::CSSTreeLib::ReWriteRpxRule::MarkGood( WXSS::CSSTreeLib::ReWriteRpxRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2) { char *Literal; // eax BOOL v3; // edx char v4; // al _DWORD *v5; // ebx void (__cdecl *v7)(void *); // [esp+4h] [ebp-74h] char v8; // [esp+1Fh] [ebp-59h] volatile signed __int32 *v9; // [esp+28h] [ebp-50h] BYREF volatile signed __int32 *v10; // [esp+2Ch] [ebp-4Ch] BYREF void *v11[6]; // [esp+30h] [ebp-48h] BYREF void *v12[2]; // [esp+48h] [ebp-30h] BYREF char v13; // [esp+50h] [ebp-28h] BYREF Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)this + 6); std::string::basic_string(v11, Literal); v12[1] = 0; v12[0] = &v13; v13 = 0; v3 = WXML::Rewrite::RewriteRPX((int)v11, (unsigned int *)v12, "%%?", "?%%"); v4 = 0; if ( v3 ) { v5 = operator new((struct type_info *)0x18, v7); std::string::basic_string(v5, (int)v12); zcc::shared_ptr::shared_ptr(v5); std::__shared_ptr::operator=((volatile signed __int32 **)this + 33, &v9); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v10); v4 = 1; } v8 = v4; std::string::_M_dispose(v12); std::string::_M_dispose(v11); return v8; } // 43EFD1: variable 'v7' is possibly undefined // 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); //----- (0043F054) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::ReWriteRpxRule::~ReWriteRpxRule(void *a1) { operator delete(a1); } //----- (0043F068) -------------------------------------------------------- char __stdcall WXSS::CSSTreeLib::MarkSelectorRule::MarkGood( WXSS::CSSTreeLib::MarkSelectorRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2) { unsigned int i; // esi int v3; // eax int *v4; // edi int v5; // ecx int v6; // eax int v7; // eax volatile signed __int32 *v8; // edi const char *Literal; // eax _DWORD *v10; // ecx _DWORD *v11; // eax _BYTE *v12; // edi const char *v13; // edi const char *v14; // edx char v15; // al int v16; // eax _BYTE **v17; // eax int v18; // edi _DWORD *v19; // esi void (__cdecl *v21)(void *); // [esp+4h] [ebp-44h] const char *v22; // [esp+4h] [ebp-44h] const char *v23; // [esp+10h] [ebp-38h] _DWORD **v24; // [esp+14h] [ebp-34h] int v25; // [esp+18h] [ebp-30h] _DWORD **j; // [esp+18h] [ebp-30h] _DWORD **v27; // [esp+1Ch] [ebp-2Ch] _BYTE **v28; // [esp+1Ch] [ebp-2Ch] volatile signed __int32 *v29; // [esp+28h] [ebp-20h] BYREF volatile signed __int32 *v30[7]; // [esp+2Ch] [ebp-1Ch] BYREF for ( i = 0; ; ++i ) { v3 = *((_DWORD *)this + 30); if ( i >= (*((_DWORD *)this + 31) - v3) >> 3 ) goto LABEL_39; v4 = *(int **)(v3 + 8 * i); v5 = *v4; if ( i ) { if ( v4[41] <= *(_DWORD *)(*(_DWORD *)(v3 + 8 * i - 8) + 168) ) break; } if ( *(_BYTE *)v5 != 70 ) break; v25 = *v4; v6 = strcmp((const char *)(v5 + 1), "_SELECTOR"); v5 = v25; if ( v6 ) break; v7 = v4[30]; if ( (unsigned int)(v4[31] - v7) <= 0xF ) goto LABEL_14; std::__shared_ptr::__shared_ptr( &v29, (_DWORD *)(v7 + 8)); v8 = v29; if ( **(_BYTE **)v29 != 36 || strcmp((const char *)(*v29 + 1), "NAME") || (Literal = WXSS::Token::GetLiteral((_DWORD *)v8 + 6), *Literal != 104) || strcmp(Literal + 1, "ost") ) { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v30); LABEL_14: v10 = (_DWORD *)*((_DWORD *)this + 39); v11 = *(_DWORD **)(*(_DWORD *)(*((_DWORD *)this + 30) + 8 * i) + 120); goto LABEL_36; } std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v30); LABEL_38: ; } if ( *(_BYTE *)v5 == 70 ) { if ( strcmp((const char *)(v5 + 1), "_SELECTOR") ) goto LABEL_35; goto LABEL_38; } v27 = (_DWORD **)v4[30]; if ( *(_BYTE *)v5 == 83 && !strcmp((const char *)(v5 + 1), "ELECTOR") ) { v24 = (_DWORD **)v4[31]; for ( j = v27; ; j += 2 ) { if ( v24 == j ) goto LABEL_38; v12 = (_BYTE *)**j; v28 = (_BYTE **)*j; if ( *v12 == 36 ) { v13 = v12 + 1; if ( !strcmp(v13, "NAME") ) { v14 = WXSS::Token::GetLiteral(v28 + 6); v15 = *v14; if ( *v14 == 64 || v15 == 46 ) continue; if ( v15 == 102 ) { v22 = (const char *)&off_4EAFF9; LABEL_30: v23 = v14; v16 = strcmp(v14 + 1, v22); v14 = v23; if ( !v16 ) continue; } else if ( v15 == 116 ) { v22 = "o"; goto LABEL_30; } if ( v14[strlen(v14) - 1] != 37 ) goto LABEL_32; continue; } if ( !strcmp(v13, "ID") ) { LABEL_32: v10 = (_DWORD *)*((_DWORD *)this + 39); v17 = v28; goto LABEL_37; } } } } LABEL_35: v10 = (_DWORD *)*((_DWORD *)this + 39); v11 = (_DWORD *)v4[30]; LABEL_36: v17 = (_BYTE **)*v11; LABEL_37: WXSS::Token::operator=(v10, (int)(v17 + 6)); LABEL_39: v18 = *((_DWORD *)this + 37); v19 = operator new((struct type_info *)0x18, v21); std::string::basic_string(v19, v18); zcc::shared_ptr::shared_ptr(v19); std::__shared_ptr::operator=( (volatile signed __int32 **)(*((_DWORD *)this + 39) + 4), &v29); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v30); return 1; } // 43F29B: variable 'v21' is possibly undefined // 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 4EAFF9: using guessed type void *off_4EAFF9; //----- (0043F2F4) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::MarkSelectorRule::~MarkSelectorRule(void *a1) { operator delete(a1); } //----- (0043F308) -------------------------------------------------------- char __stdcall WXSS::CSSTreeLib::RewriteImgUrlRule::MarkGood( WXSS::CSSTreeLib::RewriteImgUrlRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2) { char *Literal; // eax int v3; // edi int v4; // eax int v5; // edi char v6; // al _DWORD *v7; // edi void (__cdecl *v9)(void *); // [esp+4h] [ebp-94h] int v10; // [esp+2Ch] [ebp-6Ch] char v11; // [esp+2Ch] [ebp-6Ch] void *v12[6]; // [esp+38h] [ebp-60h] BYREF void *v13[2]; // [esp+50h] [ebp-48h] BYREF char v14; // [esp+58h] [ebp-40h] BYREF void *v15; // [esp+68h] [ebp-30h] BYREF volatile signed __int32 *v16; // [esp+6Ch] [ebp-2Ch] BYREF Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)this + 6); std::string::basic_string(v12, Literal); v13[1] = 0; v3 = *((_DWORD *)this + 12); v13[0] = &v14; v4 = *((_DWORD *)this + 11); v14 = 0; v10 = v4; std::string::basic_string(&v15, *((_DWORD *)this + 37)); v5 = WXML::Rewrite::RewriteImg((int)v12, (unsigned int *)v13, (int *)&v15, v10, v3); std::string::_M_dispose(&v15); if ( !v5 ) goto LABEL_4; v6 = 0; if ( v5 == 1 ) { v7 = operator new((struct type_info *)0x18, v9); std::string::basic_string(v7, (int)v13); zcc::shared_ptr::shared_ptr(v7); std::__shared_ptr::operator=( (volatile signed __int32 **)this + 33, (volatile signed __int32 **)&v15); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v16); LABEL_4: v6 = 1; } v11 = v6; std::string::_M_dispose(v13); std::string::_M_dispose(v12); return v11; } // 43F395: variable 'v9' is possibly undefined // 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); //----- (0043F420) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::RewriteImgUrlRule::~RewriteImgUrlRule(void *a1) { operator delete(a1); } //----- (0043F434) -------------------------------------------------------- char __stdcall WXSS::CSSTreeLib::RewriteSelectorRule::MarkGood( WXSS::CSSTreeLib::RewriteSelectorRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2) { char *Literal; // eax unsigned int i; // ebx char v4; // dl int v5; // eax int v6; // eax _DWORD *v7; // ebx void **v8; // ebx int v9; // eax bool v11; // si _DWORD *v12; // ebx char v13; // al void (__cdecl *v15)(void *); // [esp+4h] [ebp-A4h] void (__cdecl *v16)(void *); // [esp+4h] [ebp-A4h] void (__cdecl *v17)(void *); // [esp+4h] [ebp-A4h] char v18; // [esp+1Fh] [ebp-89h] volatile signed __int32 *v19; // [esp+20h] [ebp-88h] BYREF volatile signed __int32 *v20; // [esp+24h] [ebp-84h] BYREF volatile signed __int32 *v21; // [esp+28h] [ebp-80h] BYREF volatile signed __int32 *v22; // [esp+2Ch] [ebp-7Ch] BYREF char *v23; // [esp+30h] [ebp-78h] BYREF int v24; // [esp+34h] [ebp-74h] char v25; // [esp+38h] [ebp-70h] BYREF _BYTE *v26; // [esp+48h] [ebp-60h] BYREF unsigned int v27; // [esp+4Ch] [ebp-5Ch] char *String1[6]; // [esp+60h] [ebp-48h] BYREF int v29; // [esp+78h] [ebp-30h] BYREF volatile signed __int32 *v30; // [esp+7Ch] [ebp-2Ch] BYREF v23 = &v25; v24 = 0; v25 = 0; Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)this + 6); if ( Literal ) { std::string::basic_string((void **)&v26, Literal); for ( i = 0; i < v27; ++i ) { v4 = v26[i]; if ( v4 != 46 || i + 1 >= v27 || ((v5 = (char)v26[i + 1], ___mb_cur_max != 1) ? (v6 = _isctype(v5, 4), v4 = 46) : (v6 = __pctype[v5] & 4), v6) ) { std::string::push_back(&v23, v4); } else { std::string::operator+=(&v23, ".%%HERESUFFIX%%"); } } if ( *((_DWORD *)this + 10) != v24 ) { v7 = operator new((struct type_info *)0x18, v15); std::string::basic_string(v7, (int)&v23); zcc::shared_ptr::shared_ptr(v7); std::__shared_ptr::operator=((volatile signed __int32 **)this + 33, &v19); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v20); } std::string::basic_string((void **)String1, v23); if ( !_stricmp(String1[0], "page") ) { v8 = (void **)operator new((struct type_info *)0x18, v16); std::string::basic_string(v8, "body"); zcc::shared_ptr::shared_ptr(v8); std::__shared_ptr::operator=( (volatile signed __int32 **)this + 33, (volatile signed __int32 **)&v29); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); } else if ( _stricmp(String1[0], asc_4EAFF8) && _stricmp(String1[0], "to") && _stricmp(String1[0], off_4EAF6E) && String1[1] ) { v9 = *String1[0]; if ( ___mb_cur_max == 1 ? __pctype[v9] & 0x103 : _isctype(v9, 259) ) { std::string::substr((void **)&v29, String1, 0, 3u); v11 = std::operator==((int)&v29, "wx-"); std::string::_M_dispose((void **)&v29); if ( !v11 ) { std::string::basic_string((void **)&v29, "wx-"); std::string::operator+=(&v29, (int)String1); v12 = operator new((struct type_info *)0x18, v17); std::string::basic_string(v12, (int)&v29); zcc::shared_ptr::shared_ptr(v12); std::__shared_ptr::operator=( (volatile signed __int32 **)this + 33, &v21); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v22); std::string::_M_dispose((void **)&v29); } } } *((_BYTE *)this + 116) = 1; std::string::_M_dispose((void **)String1); std::string::_M_dispose((void **)&v26); v13 = 1; } else { v13 = 0; } v18 = v13; std::string::_M_dispose((void **)&v23); return v18; } // 43F500: variable 'v15' is possibly undefined // 43F56D: variable 'v16' is possibly undefined // 43F6A9: variable 'v17' is possibly undefined // 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); //----- (0043F780) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::RewriteSelectorRule::~RewriteSelectorRule(void *a1) { operator delete(a1); } //----- (0043F794) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::EPS::~EPS(void *a1) { operator delete(a1); } //----- (0043F7A8) -------------------------------------------------------- int __fastcall WXSS::CSSTreeLib::Action::Action(int a1) { int result; // eax *(_DWORD *)a1 = &off_4F516C; *(_DWORD *)(a1 + 4) = a1 + 12; result = a1 + 44; *(_DWORD *)(a1 + 8) = 0; *(_BYTE *)(a1 + 12) = 0; *(_DWORD *)(a1 + 36) = a1 + 44; *(_DWORD *)(a1 + 40) = 0; *(_BYTE *)(a1 + 44) = 0; *(_DWORD *)(a1 + 28) = 0; return result; } // 4F516C: using guessed type void (__cdecl *off_4F516C)(WXSS::CSSTreeLib::Action *__hidden this); //----- (0043F7D8) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::Action::~Action(void **a1) { WXSS::CSSTreeLib::Action::~Action(a1); operator delete(a1); } //----- (0043F7F4) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::Action::~Action(void **a1) { WXSS::CSSTreeLib::Action::~Action(a1, (WXSS::CSSTreeLib::Action *)2); } //----- (0043F80C) -------------------------------------------------------- void __thiscall WXSS::CSSTreeLib::Action::~Action(void **ecx0, WXSS::CSSTreeLib::Action *this) { void **v3; // ecx v3 = ecx0 + 9; *(v3 - 9) = &off_4F516C; std::string::_M_dispose(v3); std::string::_M_dispose(ecx0 + 1); } // 4F516C: using guessed type void (__cdecl *off_4F516C)(WXSS::CSSTreeLib::Action *__hidden this); //----- (0043F830) -------------------------------------------------------- char *__fastcall WXSS::CSSTreeLib::Parser::Parser(_DWORD *a1) { char *v2; // eax int v3; // edx char *v4; // esi char *v5; // eax char *v6; // eax int v7; // edx char *v8; // esi char *result; // eax void (__cdecl *v10)(void *); // [esp+4h] [ebp-14h] void (__cdecl *v11)(void *); // [esp+4h] [ebp-14h] void (__cdecl *v12)(void *); // [esp+4h] [ebp-14h] void (__cdecl *v13)(void *); // [esp+4h] [ebp-14h] *a1 = 0; a1[1] = 0; a1[2] = 0; a1[4] = 0; a1[5] = 0; a1[6] = 0; a1[7] = 0; a1[8] = 0; a1[9] = 0; a1[10] = 0; a1[11] = 0; a1[3] = 8; v2 = (char *)operator new((struct type_info *)0x20, v10); v3 = a1[3]; a1[2] = v2; v4 = &v2[(2 * v3 - 2) & 0xFFFFFFFC]; v5 = (char *)operator new((struct type_info *)0x200, v11); *(_DWORD *)v4 = v5; a1[7] = v4; a1[5] = v5; a1[6] = v5 + 512; a1[11] = v4; a1[9] = v5; a1[10] = v5 + 512; a1[4] = v5; a1[8] = v5; a1[12] = 0; a1[14] = 0; a1[15] = 0; a1[16] = 0; a1[17] = 0; a1[18] = 0; a1[19] = 0; a1[20] = 0; a1[21] = 0; a1[13] = 8; v6 = (char *)operator new((struct type_info *)0x20, v12); v7 = a1[13]; a1[12] = v6; v8 = &v6[(2 * v7 - 2) & 0xFFFFFFFC]; result = (char *)operator new((struct type_info *)0x200, v13); *(_DWORD *)v8 = result; a1[17] = v8; a1[21] = v8; a1[15] = result; a1[16] = result + 512; a1[19] = result; a1[20] = result + 512; a1[14] = result; a1[18] = result; return result; } // 43F894: variable 'v10' is possibly undefined // 43F8AF: variable 'v11' is possibly undefined // 43F921: variable 'v12' is possibly undefined // 43F93C: variable 'v13' is possibly undefined //----- (0043FA0C) -------------------------------------------------------- char __userpurge WXSS::CSSTreeLib::AndRules::MarkGood@( int a1@, WXSS::CSSTreeLib::AndRules *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3) { unsigned int v4; // ebx int v5; // edx int v6; // ecx char result; // al v4 = 0; while ( 1 ) { v5 = *(_DWORD *)(a1 + 4); if ( (*(_DWORD *)(a1 + 8) - v5) >> 3 <= v4 ) break; v6 = *(_DWORD *)(v5 + 8 * v4++); result = (*(int (__thiscall **)(int, WXSS::CSSTreeLib::AndRules *))(*(_DWORD *)v6 + 8))(v6, this); if ( !result ) goto LABEL_6; } result = 1; LABEL_6: *((_BYTE *)this + 116) = result; return result; } //----- (0043FA50) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(void *a1) { WXSS::CSSTreeLib::AndRules::~AndRules((int)a1); operator delete(a1); } //----- (0043FA6C) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(int a1) { *(_DWORD *)a1 = &off_4F5180; std::vector>::~vector((void **)(a1 + 4)); } // 4F5180: using guessed type void (__cdecl *off_4F5180)(WXSS::CSSTreeLib::AndRules *__hidden this); //----- (0043FA7C) -------------------------------------------------------- int __fastcall WXSS::CSSTreeLib::Terminal::Terminal(int a1) { int result; // eax result = a1 + 12; *(_DWORD *)a1 = &off_4F5198; *(_DWORD *)(a1 + 4) = a1 + 12; *(_DWORD *)(a1 + 8) = 0; *(_BYTE *)(a1 + 12) = 0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; *(_BYTE *)(a1 + 56) = 0; *(_DWORD *)(a1 + 28) = 1; *(_DWORD *)(a1 + 40) = 0; *(_DWORD *)(a1 + 44) = 0; *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 52) = 0; return result; } // 4F5198: using guessed type void (__cdecl *off_4F5198)(WXSS::CSSTreeLib::Terminal *__hidden this); //----- (0043FACC) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **a1) { WXSS::CSSTreeLib::Terminal::~Terminal(a1); operator delete(a1); } //----- (0043FAE8) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **a1) { WXSS::CSSTreeLib::Terminal::~Terminal(a1, (WXSS::CSSTreeLib::Terminal *)2); } //----- (0043FB00) -------------------------------------------------------- void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this) { volatile signed __int32 **v3; // ecx v3 = (volatile signed __int32 **)(ecx0 + 9); *(v3 - 9) = (volatile signed __int32 *)&off_4F5198; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); std::string::_M_dispose(ecx0 + 1); } // 4F5198: using guessed type void (__cdecl *off_4F5198)(WXSS::CSSTreeLib::Terminal *__hidden this); //----- (0043FB24) -------------------------------------------------------- void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this) { volatile signed __int32 **v3; // ecx v3 = (volatile signed __int32 **)(ecx0 + 9); *(v3 - 9) = (volatile signed __int32 *)&off_4F5198; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); std::string::_M_dispose(ecx0 + 1); } // 4F5198: using guessed type void (__cdecl *off_4F5198)(WXSS::CSSTreeLib::Terminal *__hidden this); //----- (0043FB48) -------------------------------------------------------- char __stdcall WXSS::CSSTreeLib::TrueRule::MarkGood( WXSS::CSSTreeLib::TrueRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2) { *((_BYTE *)this + 116) = 1; return 1; } //----- (0043FB58) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::TrueRule::~TrueRule(void *a1) { operator delete(a1); } //----- (0043FB6C) -------------------------------------------------------- char __userpurge WXSS::CSSTreeLib::ChildRule::MarkGood@( int a1@, WXSS::CSSTreeLib::ChildRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3) { unsigned int v3; // edi int i; // ebx char result; // al int v6; // [esp+10h] [ebp-28h] char v8; // [esp+1Fh] [ebp-19h] v3 = 0; v8 = 1; while ( (*((_DWORD *)this + 31) - *((_DWORD *)this + 30)) >> 3 > v3 ) { for ( i = *(_DWORD *)(a1 + 4); *(_DWORD *)(a1 + 8) != i; i += 32 ) { v6 = *(_DWORD *)(*((_DWORD *)this + 30) + 8 * v3); if ( std::operator==(i, v6) ) v8 &= (*(int (__thiscall **)(_DWORD, int))(**(_DWORD **)(i + 24) + 8))(*(_DWORD *)(i + 24), v6); } ++v3; } result = v8; *((_BYTE *)this + 116) = v8; return result; } //----- (0043FBEC) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *a1) { WXSS::CSSTreeLib::ChildRule::~ChildRule(a1); operator delete(a1); } //----- (0043FC08) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *a1) { int v2; // edi int v3; // esi int v4; // ecx v2 = a1[2]; v3 = a1[1]; *a1 = &off_4F51C4; while ( v2 != v3 ) { v4 = v3; v3 += 32; std::pair>::~pair(v4); } if ( a1[1] ) operator delete((void *)a1[1]); } // 4F51C4: using guessed type void (__cdecl *off_4F51C4)(WXSS::CSSTreeLib::ChildRule *__hidden this); //----- (0043FC48) -------------------------------------------------------- int __stdcall WXSS::CSSTreeLib::FalseRule::MarkGood( WXSS::CSSTreeLib::FalseRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2) { *((_BYTE *)this + 116) = 0; return 0; } //----- (0043FC58) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::FalseRule::~FalseRule(void *a1) { operator delete(a1); } //----- (0043FC6C) -------------------------------------------------------- int __userpurge WXSS::CSSTreeLib::RuleChain::MarkGood@( int a1@, WXSS::CSSTreeLib::RuleChain *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3) { int result; // eax unsigned int i; // ebx int v6; // ecx int v7; // ecx result = 0; for ( i = 0; ; ++i ) { v6 = *(_DWORD *)(a1 + 4); if ( (*(_DWORD *)(a1 + 8) - v6) >> 3 <= i ) break; v7 = *(_DWORD *)(v6 + 8 * i); result = (*(int (__thiscall **)(int, WXSS::CSSTreeLib::RuleChain *))(*(_DWORD *)v7 + 8))(v7, this); } *((_BYTE *)this + 116) = result; return result; } //----- (0043FCAC) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(void *a1) { WXSS::CSSTreeLib::RuleChain::~RuleChain((int)a1); operator delete(a1); } //----- (0043FCC8) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(int a1) { *(_DWORD *)a1 = &off_4F51F4; std::vector>::~vector((void **)(a1 + 4)); } // 4F51F4: using guessed type void (__cdecl *off_4F51F4)(WXSS::CSSTreeLib::RuleChain *__hidden this); //----- (0043FCD8) -------------------------------------------------------- char __userpurge WXSS::CSSTreeLib::SPNotRule::MarkGood@( int a1@, WXSS::CSSTreeLib::SPNotRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3) { int v3; // edx const char *Literal; // eax v3 = *((_DWORD *)this + 30); if ( *((_DWORD *)this + 31) - v3 == 40 ) { Literal = WXSS::Token::GetLiteral((_DWORD *)(*(_DWORD *)(v3 + 8) + 24)); if ( !_stricmp(Literal, off_4EAF6E) && !_stricmp(**(const char ***)(*((_DWORD *)this + 30) + 24), "SELECTOR") ) (*(void (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(a1 + 4) + 8))( *(_DWORD *)(a1 + 4), *(_DWORD *)(*((_DWORD *)this + 30) + 24)); } return 1; } //----- (0043FD4C) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(void *a1) { WXSS::CSSTreeLib::SPNotRule::~SPNotRule((int)a1); operator delete(a1); } //----- (0043FD68) -------------------------------------------------------- void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(int a1) { *(_DWORD *)a1 = &off_4F520C; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 8)); } // 4F520C: using guessed type void (__cdecl *off_4F520C)(WXSS::CSSTreeLib::SPNotRule *__hidden this); //----- (0043FD78) -------------------------------------------------------- int __userpurge WXSS::Token::Token@(_DWORD *a1@, WXSS::Token *this, const WXSS::Token *a3) { int v3; // eax int result; // eax *a1 = *(_DWORD *)this; a1[1] = *((_DWORD *)this + 1); v3 = *((_DWORD *)this + 2); a1[2] = v3; if ( v3 ) { if ( _CRT_MT ) _InterlockedIncrement((volatile signed __int32 *)(v3 + 4)); else ++*(_DWORD *)(v3 + 4); } a1[3] = *((_DWORD *)this + 3); a1[4] = *((_DWORD *)this + 4); a1[5] = *((_DWORD *)this + 5); result = *((_DWORD *)this + 6); a1[6] = result; qmemcpy(a1 + 7, (char *)this + 28, 0x40u); return result; } // 15412D0: using guessed type int _CRT_MT; //----- (0043FDD4) -------------------------------------------------------- _DWORD *__thiscall WXSS::Token::operator=(_DWORD *this, int a2) { volatile signed __int32 **v3; // ecx int i; // eax v3 = (volatile signed __int32 **)(this + 1); *(v3 - 1) = *(volatile signed __int32 **)a2; std::__shared_ptr::operator=(v3, (volatile signed __int32 **)(a2 + 4)); this[3] = *(_DWORD *)(a2 + 12); this[4] = *(_DWORD *)(a2 + 16); this[5] = *(_DWORD *)(a2 + 20); this[6] = *(_DWORD *)(a2 + 24); for ( i = 28; i != 92; ++i ) *((_BYTE *)this + i) = *(_BYTE *)(a2 + i); return this; } //----- (0043FE2C) -------------------------------------------------------- int __thiscall WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(char *this, int a2, char *Source, int a4) { int result; // eax *(_DWORD *)this = a2; strcpy(this + 8, Source); *((_DWORD *)this + 1) = strlen(Source); result = a4; *((_DWORD *)this + 6) = a4; return result; } //----- (0043FE70) -------------------------------------------------------- void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(__gthread_mutex_t **a1) { _DWORD *exception; // eax if ( _CRT_MT ) { if ( __gthr_win32_mutex_unlock(*a1) ) { exception = __cxa_allocate_exception(4u); *exception = &off_4F534C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } } } // 4F1314: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 4F534C: using guessed type void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); // 15412D0: using guessed type int _CRT_MT; //----- (0043FEE0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) { return std::__basic_file::fd(a1 + 40); } //----- (0043FEF0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) { return std::__basic_file::file(a1 + 40); } //----- (0043FF10) -------------------------------------------------------- char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) { _BYTE *v5; // esi int v6; // eax v5 = this + 40; std::filebuf::basic_filebuf((int)this); *(_DWORD *)this = &off_4F5224; std::__basic_file::sys_open(v5, a2, a3); LOBYTE(v6) = std::__basic_file::is_open(v5); if ( (_BYTE)v6 ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::filebuf::_M_allocate_internal_buffer((int)this); *((_DWORD *)this + 5) = 0; *(_WORD *)(this + 73) = 0; v6 = *((_DWORD *)this + 16); *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 1) = v6; *((_DWORD *)this + 2) = v6; *((_DWORD *)this + 3) = v6; *((_DWORD *)this + 6) = 0; } return v6; } // 4F5224: using guessed type int (*off_4F5224)(); //----- (0043FFB0) -------------------------------------------------------- char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) { _BYTE *v5; // esi int v6; // eax v5 = this + 40; std::filebuf::basic_filebuf((int)this); *(_DWORD *)this = &off_4F5224; std::__basic_file::sys_open(v5, a2, a3); LOBYTE(v6) = std::__basic_file::is_open(v5); if ( (_BYTE)v6 ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::filebuf::_M_allocate_internal_buffer((int)this); *((_DWORD *)this + 5) = 0; *(_WORD *)(this + 73) = 0; v6 = *((_DWORD *)this + 16); *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 1) = v6; *((_DWORD *)this + 2) = v6; *((_DWORD *)this + 3) = v6; *((_DWORD *)this + 6) = 0; } return v6; } // 4F5224: using guessed type int (*off_4F5224)(); //----- (00440050) -------------------------------------------------------- void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { void *result; // eax result = std::filebuf::basic_filebuf((int)a1); *a1 = &off_4F5224; return result; } // 4F5224: using guessed type int (*off_4F5224)(); //----- (00440070) -------------------------------------------------------- char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) { _BYTE *v5; // esi int v6; // eax v5 = this + 40; std::filebuf::basic_filebuf((int)this); *(_DWORD *)this = &off_4F5224; std::__basic_file::sys_open(v5, a2, a3); LOBYTE(v6) = std::__basic_file::is_open(v5); if ( (_BYTE)v6 ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::filebuf::_M_allocate_internal_buffer((int)this); *((_DWORD *)this + 5) = 0; *(_WORD *)(this + 73) = 0; v6 = *((_DWORD *)this + 16); *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 1) = v6; *((_DWORD *)this + 2) = v6; *((_DWORD *)this + 3) = v6; *((_DWORD *)this + 6) = 0; } return v6; } // 4F5224: using guessed type int (*off_4F5224)(); //----- (00440110) -------------------------------------------------------- char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) { _BYTE *v5; // esi int v6; // eax v5 = this + 40; std::filebuf::basic_filebuf((int)this); *(_DWORD *)this = &off_4F5224; std::__basic_file::sys_open(v5, a2, a3); LOBYTE(v6) = std::__basic_file::is_open(v5); if ( (_BYTE)v6 ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::filebuf::_M_allocate_internal_buffer((int)this); *((_DWORD *)this + 5) = 0; *(_WORD *)(this + 73) = 0; v6 = *((_DWORD *)this + 16); *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 1) = v6; *((_DWORD *)this + 2) = v6; *((_DWORD *)this + 3) = v6; *((_DWORD *)this + 6) = 0; } return v6; } // 4F5224: using guessed type int (*off_4F5224)(); //----- (004401B0) -------------------------------------------------------- void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { void *result; // eax result = std::filebuf::basic_filebuf((int)a1); *a1 = &off_4F5224; return result; } // 4F5224: using guessed type int (*off_4F5224)(); //----- (004401D0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1) { *a1 = &off_4F6090; std::filebuf::close((int)a1); std::__basic_file::~__basic_file(a1 + 10); *a1 = &off_4F6414; std::locale::~locale(a1 + 7); operator delete(a1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (00440220) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) { *(_DWORD *)a1 = &off_4F6090; std::filebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (00440260) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) { *(_DWORD *)a1 = &off_4F6090; std::filebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004402A0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) { return std::__basic_file::fd(a1 + 40); } //----- (004402B0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) { return std::__basic_file::file(a1 + 40); } //----- (004402D0) -------------------------------------------------------- char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) { _BYTE *v5; // esi int v6; // eax v5 = this + 40; std::wfilebuf::basic_filebuf((int)this); *(_DWORD *)this = &off_4F5264; std::__basic_file::sys_open(v5, a2, a3); LOBYTE(v6) = std::__basic_file::is_open(v5); if ( (_BYTE)v6 ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::wfilebuf::_M_allocate_internal_buffer((int)this); *((_DWORD *)this + 5) = 0; *(_WORD *)(this + 73) = 0; v6 = *((_DWORD *)this + 16); *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 1) = v6; *((_DWORD *)this + 2) = v6; *((_DWORD *)this + 3) = v6; *((_DWORD *)this + 6) = 0; } return v6; } // 4F5264: using guessed type int (*off_4F5264)(); //----- (00440370) -------------------------------------------------------- char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) { _BYTE *v5; // esi int v6; // eax v5 = this + 40; std::wfilebuf::basic_filebuf((int)this); *(_DWORD *)this = &off_4F5264; std::__basic_file::sys_open(v5, a2, a3); LOBYTE(v6) = std::__basic_file::is_open(v5); if ( (_BYTE)v6 ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::wfilebuf::_M_allocate_internal_buffer((int)this); *((_DWORD *)this + 5) = 0; *(_WORD *)(this + 73) = 0; v6 = *((_DWORD *)this + 16); *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 1) = v6; *((_DWORD *)this + 2) = v6; *((_DWORD *)this + 3) = v6; *((_DWORD *)this + 6) = 0; } return v6; } // 4F5264: using guessed type int (*off_4F5264)(); //----- (00440410) -------------------------------------------------------- void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { void *result; // eax result = std::wfilebuf::basic_filebuf((int)a1); *a1 = &off_4F5264; return result; } // 4F5264: using guessed type int (*off_4F5264)(); //----- (00440430) -------------------------------------------------------- char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) { _BYTE *v5; // esi int v6; // eax v5 = this + 40; std::wfilebuf::basic_filebuf((int)this); *(_DWORD *)this = &off_4F5264; std::__basic_file::sys_open(v5, a2, a3); LOBYTE(v6) = std::__basic_file::is_open(v5); if ( (_BYTE)v6 ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::wfilebuf::_M_allocate_internal_buffer((int)this); *((_DWORD *)this + 5) = 0; *(_WORD *)(this + 73) = 0; v6 = *((_DWORD *)this + 16); *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 1) = v6; *((_DWORD *)this + 2) = v6; *((_DWORD *)this + 3) = v6; *((_DWORD *)this + 6) = 0; } return v6; } // 4F5264: using guessed type int (*off_4F5264)(); //----- (004404D0) -------------------------------------------------------- char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) { _BYTE *v5; // esi int v6; // eax v5 = this + 40; std::wfilebuf::basic_filebuf((int)this); *(_DWORD *)this = &off_4F5264; std::__basic_file::sys_open(v5, a2, a3); LOBYTE(v6) = std::__basic_file::is_open(v5); if ( (_BYTE)v6 ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::wfilebuf::_M_allocate_internal_buffer((int)this); *((_DWORD *)this + 5) = 0; *(_WORD *)(this + 73) = 0; v6 = *((_DWORD *)this + 16); *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 1) = v6; *((_DWORD *)this + 2) = v6; *((_DWORD *)this + 3) = v6; *((_DWORD *)this + 6) = 0; } return v6; } // 4F5264: using guessed type int (*off_4F5264)(); //----- (00440570) -------------------------------------------------------- void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { void *result; // eax result = std::wfilebuf::basic_filebuf((int)a1); *a1 = &off_4F5264; return result; } // 4F5264: using guessed type int (*off_4F5264)(); //----- (00440590) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1) { *a1 = &off_4F60D0; std::wfilebuf::close((int)a1); std::__basic_file::~__basic_file(a1 + 10); *a1 = &off_4F6454; std::locale::~locale(a1 + 7); operator delete(a1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004405E0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) { *(_DWORD *)a1 = &off_4F60D0; std::wfilebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (00440620) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) { *(_DWORD *)a1 = &off_4F60D0; std::wfilebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (00440660) -------------------------------------------------------- int __cdecl __gnu_cxx::__concat_size_t(char *a1, unsigned int a2, unsigned int a3) { void *v4; // esp void *v5; // esp _BYTE *v6; // ebx unsigned int v7; // eax int v8; // edi int v10; // [esp-10h] [ebp-48h] BYREF _BYTE v11[28]; // [esp-4h] [ebp-3Ch] BYREF int *v12; // [esp+18h] [ebp-20h] _BYTE *v13; // [esp+1Ch] [ebp-1Ch] v4 = alloca(32); v5 = alloca(32); v12 = &v10; v13 = v11; v6 = v11; do { *--v6 = byte_4ED4CD[a3 % 0xA]; v7 = a3; a3 /= 0xAu; } while ( v7 > 9 ); v8 = v13 - v6; if ( v13 - v6 > a2 ) return -1; memcpy(a1, (char *)v12 - v8 + 12, v13 - v6); return v8; } //----- (004406F0) -------------------------------------------------------- int __cdecl __gnu_cxx::__snprintf_lite(char *a1, unsigned int a2, const char *a3, char *a4) { const char *Src; // edx const char *v5; // esi const char *v7; // edi char *v8; // ebx char v9; // al char v10; // al char *v11; // ebp int v12; // eax int result; // eax char *v14; // ebp char *v15; // ecx char v16; // al char *v17; // [esp+30h] [ebp+4h] Src = a1; v5 = a3; v7 = &a1[a2 - 1]; v8 = a1; v9 = *a3; if ( !*a3 ) { result = 0; goto LABEL_17; } if ( a1 >= v7 ) LABEL_26: __gnu_cxx::__throw_insufficient_space(Src, v8); while ( 1 ) { if ( v9 != 37 ) goto LABEL_4; v10 = v5[1]; if ( v10 == 115 ) { v14 = a4 + 4; v15 = *(char **)a4; v16 = *v15; if ( *v15 ) { if ( v7 <= v8 ) { v7 = v8; LABEL_24: __gnu_cxx::__throw_insufficient_space(Src, v7); } while ( 1 ) { ++v15; *v8++ = v16; v16 = *v15; if ( !*v15 ) break; if ( v7 == v8 ) goto LABEL_24; } } v5 += 2; a4 = v14; goto LABEL_6; } if ( v10 != 122 ) { if ( v10 == 37 ) ++v5; else LABEL_4: v10 = *v5; *v8 = v10; ++v5; ++v8; LABEL_6: v9 = *v5; if ( !*v5 ) break; goto LABEL_7; } if ( v5[2] != 117 ) goto LABEL_4; v11 = a4 + 4; v17 = (char *)Src; v12 = __gnu_cxx::__concat_size_t(v8, v7 - v8, *(_DWORD *)a4); Src = v17; if ( v12 <= 0 ) goto LABEL_26; v5 += 3; v8 += v12; a4 = v11; v9 = *v5; if ( !*v5 ) break; LABEL_7: if ( v8 >= v7 ) goto LABEL_26; } result = v8 - Src; LABEL_17: *v8 = 0; return result; } //----- (00440810) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) { return *(_DWORD *)(a1 + 32); } //----- (00440820) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2) { int v3; // eax int v4; // edx int v5; // eax int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // edx int v11; // eax int v12; // edx int v13; // eax int v14; // eax int v15; // edx int result; // eax const std::locale *v17; // [esp+4h] [ebp-48h] volatile signed __int32 **v18; // [esp+1Ch] [ebp-30h] _DWORD *v19[8]; // [esp+2Ch] [ebp-20h] BYREF v3 = *(_DWORD *)(this + 4); *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = v3; v5 = *(_DWORD *)(this + 8); *(_DWORD *)(this + 8) = v4; v6 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a2 + 8) = v5; v7 = *(_DWORD *)(this + 12); *(_DWORD *)(this + 12) = v6; v8 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 12) = v7; v9 = *(_DWORD *)(this + 16); *(_DWORD *)(this + 16) = v8; v10 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 16) = v9; v11 = *(_DWORD *)(this + 20); *(_DWORD *)(this + 20) = v10; v12 = *(_DWORD *)(a2 + 24); *(_DWORD *)(a2 + 20) = v11; v13 = *(_DWORD *)(this + 24); *(_DWORD *)(this + 24) = v12; *(_DWORD *)(a2 + 24) = v13; v18 = (volatile signed __int32 **)(this + 28); std::locale::locale((volatile signed __int32 **)v19, (volatile signed __int32 **)(this + 28), v17); std::locale::operator=(v18, (volatile signed __int32 **)(a2 + 28)); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v19); std::locale::~locale(v19); v14 = *(_DWORD *)(this + 32); *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); v15 = *(_DWORD *)(a2 + 36); *(_DWORD *)(a2 + 32) = v14; result = *(_DWORD *)(this + 36); *(_DWORD *)(this + 36) = v15; *(_DWORD *)(a2 + 36) = result; return result; } // 440888: variable 'v17' is possibly undefined //----- (004408E0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) { return fflush(*(FILE **)(a1 + 32)); } //----- (00440900) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) { FILE *File; // edx char *v4; // eax int result; // eax File = *(FILE **)(a1 + 32); if ( --File->_cnt < 0 ) { result = _filbuf(File); } else { v4 = File->_ptr++; result = (unsigned __int8)*v4; } *(_DWORD *)(a1 + 36) = result; return result; } //----- (00440940) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, char *Buffer, size_t ElementCount) { int result; // eax int v5; // edx result = fread(Buffer, 1u, ElementCount, *(FILE **)(this + 32)); v5 = -1; if ( result > 0 ) v5 = (unsigned __int8)Buffer[result - 1]; *(_DWORD *)(this + 36) = v5; return result; } //----- (00440990) -------------------------------------------------------- size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount) { return fwrite(Buffer, 1u, ElementCount, this[8]); } //----- (004409C0) -------------------------------------------------------- _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff( _DWORD *this, int a2, int Offset, int a4, int a5, int a6) { int Origin; // eax int v9; // eax Origin = 0; *this = -1; this[1] = -1; this[2] = 0; if ( a5 ) Origin = (a5 != 1) + 1; if ( !fseek(*(FILE **)(a2 + 32), Offset, Origin) ) { v9 = ftell(*(FILE **)(a2 + 32)); this[2] = 0; *(_QWORD *)this = v9; } return this; } //----- (00440A50) -------------------------------------------------------- _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( _DWORD *this, FILE **a2, int Offset, int a4, int a5, int a6, int a7) { _DWORD *(__thiscall *file)(_DWORD *, int, int, int, int, int); // edx FILE *Stream; // eax int v11; // eax file = (_DWORD *(__thiscall *)(_DWORD *, int, int, int, int, int))(*a2)->_file; if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) { Stream = a2[8]; *this = -1; this[1] = -1; this[2] = 0; if ( !fseek(Stream, Offset, 0) ) { v11 = ftell(a2[8]); this[2] = 0; *(_QWORD *)this = v11; } return this; } else { file(this, (int)a2, Offset, a4, 0, a7); return this; } } //----- (00440B20) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(_DWORD *this, int a2) { FILE *Stream; // edx char *v4; // ecx Stream = (FILE *)this[8]; if ( a2 == -1 ) return -(fflush(Stream) != 0); if ( --Stream->_cnt < 0 ) return _flsbuf(a2, Stream); v4 = Stream->_ptr++; *v4 = a2; return (unsigned __int8)a2; } //----- (00440B90) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int a2) { int result; // eax result = a2; if ( a2 != -1 || (result = *(_DWORD *)(this + 36), result != -1) ) result = ungetc(result, *(FILE **)(this + 32)); *(_DWORD *)(this + 36) = -1; return result; } //----- (00440BD0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) { FILE *Stream; // edx char *v3; // eax int Character; // eax Stream = *(FILE **)(a1 + 32); if ( --Stream->_cnt < 0 ) { Character = _filbuf(Stream); Stream = *(FILE **)(a1 + 32); } else { v3 = Stream->_ptr++; Character = (unsigned __int8)*v3; } return ungetc(Character, Stream); } //----- (00440C10) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) { int v3; // eax int result; // eax const std::locale *v5; // [esp+4h] [ebp-18h] std::streambuf::basic_streambuf(this, a2, v5); v3 = *(_DWORD *)(a2 + 32); *this = &off_4F52A4; *(_DWORD *)(a2 + 32) = 0; this[8] = v3; result = *(_DWORD *)(a2 + 36); *(_DWORD *)(a2 + 36) = -1; this[9] = result; return result; } // 440C1E: variable 'v5' is possibly undefined // 4F52A4: using guessed type int (*off_4F52A4)(); //----- (00440C50) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) { _DWORD *v3; // ecx int result; // eax v3 = this + 7; *(v3 - 7) = &off_4F6414; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); result = a2; *this = &off_4F52A4; this[9] = -1; this[8] = a2; return result; } // 4F52A4: using guessed type int (*off_4F52A4)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (00440CB0) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) { int v3; // eax int result; // eax const std::locale *v5; // [esp+4h] [ebp-18h] std::streambuf::basic_streambuf(this, a2, v5); v3 = *(_DWORD *)(a2 + 32); *this = &off_4F52A4; *(_DWORD *)(a2 + 32) = 0; this[8] = v3; result = *(_DWORD *)(a2 + 36); *(_DWORD *)(a2 + 36) = -1; this[9] = result; return result; } // 440CBE: variable 'v5' is possibly undefined // 4F52A4: using guessed type int (*off_4F52A4)(); //----- (00440CF0) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) { _DWORD *v3; // ecx int result; // eax v3 = this + 7; *(v3 - 7) = &off_4F6414; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); result = a2; *this = &off_4F52A4; this[9] = -1; this[8] = a2; return result; } // 4F52A4: using guessed type int (*off_4F52A4)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (00440D50) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1) { _DWORD **v2; // ecx v2 = (_DWORD **)(a1 + 28); *(v2 - 7) = &off_4F6414; std::locale::~locale(v2); operator delete(a1); } // 4F6414: using guessed type int (*off_4F6414)(); //----- (00440D80) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) { *(_DWORD *)a1 = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4F6414: using guessed type int (*off_4F6414)(); //----- (00440D90) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2) { int v3; // eax int v4; // eax std::streambuf::operator=((volatile signed __int32 **)this, a2); v3 = *(_DWORD *)(a2 + 32); *(_DWORD *)(a2 + 32) = 0; *(_DWORD *)(this + 32) = v3; v4 = *(_DWORD *)(a2 + 36); *(_DWORD *)(a2 + 36) = -1; *(_DWORD *)(this + 36) = v4; return this; } //----- (00440DD0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) { return *(_DWORD *)(a1 + 32); } //----- (00440DE0) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2) { int v3; // eax int v4; // edx int v5; // eax int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // edx int v11; // eax int v12; // edx int v13; // eax int v14; // eax __int16 v15; // dx int result; // eax const std::locale *v17; // [esp+4h] [ebp-48h] volatile signed __int32 **v18; // [esp+1Ch] [ebp-30h] _DWORD *v19[8]; // [esp+2Ch] [ebp-20h] BYREF v3 = *(_DWORD *)(this + 4); *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = v3; v5 = *(_DWORD *)(this + 8); *(_DWORD *)(this + 8) = v4; v6 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a2 + 8) = v5; v7 = *(_DWORD *)(this + 12); *(_DWORD *)(this + 12) = v6; v8 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 12) = v7; v9 = *(_DWORD *)(this + 16); *(_DWORD *)(this + 16) = v8; v10 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 16) = v9; v11 = *(_DWORD *)(this + 20); *(_DWORD *)(this + 20) = v10; v12 = *(_DWORD *)(a2 + 24); *(_DWORD *)(a2 + 20) = v11; v13 = *(_DWORD *)(this + 24); *(_DWORD *)(this + 24) = v12; *(_DWORD *)(a2 + 24) = v13; v18 = (volatile signed __int32 **)(this + 28); std::locale::locale((volatile signed __int32 **)v19, (volatile signed __int32 **)(this + 28), v17); std::locale::operator=(v18, (volatile signed __int32 **)(a2 + 28)); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v19); std::locale::~locale(v19); v14 = *(_DWORD *)(this + 32); *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); v15 = *(_WORD *)(a2 + 36); *(_DWORD *)(a2 + 32) = v14; result = *(unsigned __int16 *)(this + 36); *(_WORD *)(this + 36) = v15; *(_WORD *)(a2 + 36) = result; return result; } // 440E48: variable 'v17' is possibly undefined //----- (00440EA0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) { return fflush(*(FILE **)(a1 + 32)); } //----- (00440EC0) -------------------------------------------------------- wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) { wint_t result; // ax result = getwc(*(FILE **)(a1 + 32)); *(_WORD *)(a1 + 36) = result; return result; } //----- (00440EE0) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, int a2, int a3) { int v4; // edi wint_t v5; // ax v4 = 0; if ( a3 ) { while ( 1 ) { v5 = getwc(*(FILE **)(this + 32)); if ( v5 == 0xFFFF ) break; *(_WORD *)(a2 + 2 * v4++) = v5; if ( a3 == v4 ) goto LABEL_7; } if ( !v4 ) goto LABEL_6; LABEL_7: *(_WORD *)(this + 36) = *(_WORD *)(a2 + 2 * v4 - 2); return v4; } else { LABEL_6: *(_WORD *)(this + 36) = -1; return 0; } } //----- (00440F60) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, int a2, int a3) { int i; // ebx if ( !a3 ) return 0; for ( i = 0; i != a3; ++i ) { if ( putwc(*(_WORD *)(a2 + 2 * i), this[8]) == 0xFFFF ) break; } return i; } //----- (00440FB0) -------------------------------------------------------- _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff( _DWORD *this, int a2, int Offset, int a4, int a5, int a6) { int Origin; // eax int v9; // eax Origin = 0; *this = -1; this[1] = -1; this[2] = 0; if ( a5 ) Origin = (a5 != 1) + 1; if ( !fseek(*(FILE **)(a2 + 32), Offset, Origin) ) { v9 = ftell(*(FILE **)(a2 + 32)); this[2] = 0; *(_QWORD *)this = v9; } return this; } //----- (00441040) -------------------------------------------------------- _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( _DWORD *this, FILE **a2, int Offset, int a4, int a5, int a6, int a7) { _DWORD *(__thiscall *file)(_DWORD *, int, int, int, int, int); // edx FILE *Stream; // eax int v11; // eax file = (_DWORD *(__thiscall *)(_DWORD *, int, int, int, int, int))(*a2)->_file; if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) { Stream = a2[8]; *this = -1; this[1] = -1; this[2] = 0; if ( !fseek(Stream, Offset, 0) ) { v11 = ftell(a2[8]); this[2] = 0; *(_QWORD *)this = v11; } return this; } else { file(this, (int)a2, Offset, a4, 0, a7); return this; } } //----- (00441110) -------------------------------------------------------- __int16 __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, wchar_t Character) { int v2; // eax if ( Character == 0xFFFF ) return -(fflush(this[8]) != 0); else LOWORD(v2) = putwc(Character, this[8]); return v2; } //----- (00441150) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, wint_t Character) { int result; // eax if ( Character == 0xFFFF ) { result = *(unsigned __int16 *)(this + 36); if ( (_WORD)result != 0xFFFF ) LOWORD(result) = ungetwc(*(_WORD *)(this + 36), *(FILE **)(this + 32)); *(_WORD *)(this + 36) = -1; } else { LOWORD(result) = ungetwc(Character, *(FILE **)(this + 32)); *(_WORD *)(this + 36) = -1; } return result; } //----- (004411C0) -------------------------------------------------------- wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) { wint_t v2; // ax v2 = getwc(*(FILE **)(a1 + 32)); return ungetwc(v2, *(FILE **)(a1 + 32)); } //----- (004411F0) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2) { int v3; // eax int result; // eax const std::locale *v5; // [esp+4h] [ebp-18h] std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v5); v3 = *(_DWORD *)(a2 + 32); *(_DWORD *)this = &off_4F52E4; *(_DWORD *)(a2 + 32) = 0; *(_DWORD *)(this + 32) = v3; *(_WORD *)(this + 36) = *(_WORD *)(a2 + 36); result = -1; *(_WORD *)(a2 + 36) = -1; return result; } // 4411FE: variable 'v5' is possibly undefined // 4F52E4: using guessed type int (*off_4F52E4)(); //----- (00441240) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) { _DWORD *v3; // ecx int result; // eax v3 = this + 7; *(v3 - 7) = &off_4F6454; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_4F52E4; this[8] = a2; result = -1; *((_WORD *)this + 18) = -1; return result; } // 4F52E4: using guessed type int (*off_4F52E4)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004412A0) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2) { int v3; // eax int result; // eax const std::locale *v5; // [esp+4h] [ebp-18h] std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v5); v3 = *(_DWORD *)(a2 + 32); *(_DWORD *)this = &off_4F52E4; *(_DWORD *)(a2 + 32) = 0; *(_DWORD *)(this + 32) = v3; *(_WORD *)(this + 36) = *(_WORD *)(a2 + 36); result = -1; *(_WORD *)(a2 + 36) = -1; return result; } // 4412AE: variable 'v5' is possibly undefined // 4F52E4: using guessed type int (*off_4F52E4)(); //----- (004412F0) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) { _DWORD *v3; // ecx int result; // eax v3 = this + 7; *(v3 - 7) = &off_4F6454; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_4F52E4; this[8] = a2; result = -1; *((_WORD *)this + 18) = -1; return result; } // 4F52E4: using guessed type int (*off_4F52E4)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (00441350) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1) { _DWORD **v2; // ecx v2 = (_DWORD **)(a1 + 28); *(v2 - 7) = &off_4F6454; std::locale::~locale(v2); operator delete(a1); } // 4F6454: using guessed type int (*off_4F6454)(); //----- (00441380) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) { *(_DWORD *)a1 = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4F6454: using guessed type int (*off_4F6454)(); //----- (00441390) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2) { int v3; // eax std::wstreambuf::operator=((volatile signed __int32 **)this, a2); v3 = *(_DWORD *)(a2 + 32); *(_DWORD *)(a2 + 32) = 0; *(_DWORD *)(this + 32) = v3; LOWORD(v3) = *(_WORD *)(a2 + 36); *(_WORD *)(a2 + 36) = -1; *(_WORD *)(this + 36) = v3; return this; } //----- (004413D0) -------------------------------------------------------- void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1) { *a1 = &off_4F5324; } // 4F5324: using guessed type void (__cdecl *off_4F5324)(__gnu_cxx::recursive_init_error *__hidden this); //----- (004413E0) -------------------------------------------------------- void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5324; std::exception::~exception(v2); operator delete(a1, 4u); } // 4413EC: variable 'v2' is possibly undefined // 4F5324: using guessed type void (__cdecl *off_4F5324)(__gnu_cxx::recursive_init_error *__hidden this); //----- (00441410) -------------------------------------------------------- void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_4F5324; std::exception::~exception(a1); } // 441410: variable 'v1' is possibly undefined // 4F5324: using guessed type void (__cdecl *off_4F5324)(__gnu_cxx::recursive_init_error *__hidden this); //----- (00441420) -------------------------------------------------------- void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5338; std::exception::~exception(v2); operator delete(a1, 4u); } // 44142C: variable 'v2' is possibly undefined // 4F5338: using guessed type void (__cdecl *off_4F5338)(__gnu_cxx::__concurrence_lock_error *__hidden this); //----- (00441450) -------------------------------------------------------- void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_4F5338; std::exception::~exception(a1); } // 441450: variable 'v1' is possibly undefined // 4F5338: using guessed type void (__cdecl *off_4F5338)(__gnu_cxx::__concurrence_lock_error *__hidden this); //----- (00441460) -------------------------------------------------------- void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F534C; std::exception::~exception(v2); operator delete(a1, 4u); } // 44146C: variable 'v2' is possibly undefined // 4F534C: using guessed type void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (00441490) -------------------------------------------------------- void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_4F534C; std::exception::~exception(a1); } // 441490: variable 'v1' is possibly undefined // 4F534C: using guessed type void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (004414A0) -------------------------------------------------------- void __cdecl __noreturn __gnu_cxx::__throw_insufficient_space(const char *Src, const char *a2) { void *v2; // esp void *v3; // esp int v4[38]; // [esp+10h] [ebp-98h] BYREF HIBYTE(v4[5]) = unk_4ED464; strcpy((char *)&v4[31], " "); strcpy( (char *)&v4[6], "ot enough space for format expansion (Please submit full bug report at https://gcc.gnu.org/bugs/):\n "); v2 = alloca(a2 - Src + 117); v3 = alloca(a2 - Src + 117); qmemcpy(v4, (char *)&v4[5] + 3, 0x68u); memcpy(&v4[26], Src, a2 - Src); *((_BYTE *)&v4[26] + v4[3]) = 0; std::__throw_logic_error((std::logic_error *)v4); } //----- (00441530) -------------------------------------------------------- void __cdecl __noreturn __gnu_cxx::__verbose_terminate_handler(size_t a1, size_t a2, FILE *a3) { struct type_info *v3; // eax const char *lpmangled; // ebx char *v5; // esi FILE *lpout; // [esp+4h] [ebp-38h] int status[8]; // [esp+1Ch] [ebp-20h] BYREF if ( !__gnu_cxx::__verbose_terminate_handler(void)::terminating ) { __gnu_cxx::__verbose_terminate_handler(void)::terminating = 1; v3 = __cxa_current_exception_type(); if ( v3 ) { lpmangled = (const char *)((**((_BYTE **)v3 + 1) == 42) + *((_DWORD *)v3 + 1)); status[0] = -1; v5 = __cxa_demangle(lpmangled, 0, 0, status); fwrite("terminate called after throwing an instance of '", 1u, 0x30u, &__iob[2]); lpout = &__iob[2]; if ( status[0] ) fputs(lpmangled, lpout); else fputs(v5, lpout); fwrite("'\n", 1u, 2u, &__iob[2]); if ( !status[0] ) __mingw_free((unsigned int)v5); __cxa_rethrow(); } fwrite("terminate called without an active exception\n", 1u, 0x2Du, &__iob[2]); abort(); } __gnu_cxx::__verbose_terminate_handler(a1, a2, a3); } // 4E9B90: using guessed type char __gnu_cxx::__verbose_terminate_handler(void)::terminating; // 441530: using guessed type int status[8]; //----- (00441620) -------------------------------------------------------- void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_4F5338; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); } // 4F1308: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; // 4F5338: using guessed type void (__cdecl *off_4F5338)(__gnu_cxx::__concurrence_lock_error *__hidden this); //----- (00441650) -------------------------------------------------------- void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_4F534C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } // 4F1314: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 4F534C: using guessed type void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (00441680) -------------------------------------------------------- int __gnu_cxx::__freeres(void) { int result; // eax result = dword_4E837C; if ( dword_4E837C ) { result = __mingw_free(dword_4E837C); dword_4E837C = 0; } return result; } // 4E837C: using guessed type int dword_4E837C; //----- (004416B0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (004416C0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (004416D0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (004416E0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (004416F0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00441700) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00441710) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00441720) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00441730) -------------------------------------------------------- char __userpurge __cxxabiv1::__class_type_info::__do_catch@( _DWORD *a1@, __cxxabiv1::__class_type_info *this, const std::type_info *a3, void **a4, unsigned int a5) { char result; // al result = std::type_info::operator==(a1, (int)this); if ( !result && (unsigned int)a4 <= 3 ) return (*(int (__thiscall **)(__cxxabiv1::__class_type_info *, _DWORD *, const std::type_info *))(*(_DWORD *)this + 20))( this, a1, a3); return result; } //----- (00441770) -------------------------------------------------------- bool __thiscall __cxxabiv1::__class_type_info::__do_upcast(_DWORD *this, int a2, int a3, _DWORD *a4) { bool result; // al result = std::type_info::operator==(this, a2); if ( result ) { a4[3] = 8; a4[1] = 6; *a4 = a3; } return result; } //----- (004417B0) -------------------------------------------------------- int __userpurge __cxxabiv1::__class_type_info::__do_upcast@( int *a1@, __cxxabiv1::__class_type_info *this, const __class_type_info *a3, void **a4) { int v4; // eax int v5; // edx int v6; // edx int v8; // [esp+10h] [ebp-1Ch] BYREF int v9; // [esp+14h] [ebp-18h] int v10; // [esp+18h] [ebp-14h] int v11; // [esp+1Ch] [ebp-10h] v4 = *a1; v8 = 0; v5 = *(_DWORD *)a3; v9 = 0; v10 = 16; v11 = 0; (*(void (__thiscall **)(int *, __cxxabiv1::__class_type_info *, int, int *))(v4 + 24))(a1, this, v5, &v8); v6 = 0; if ( (v9 & 6) == 6 ) { v6 = 1; *(_DWORD *)a3 = v8; } return v6; } //----- (00441820) -------------------------------------------------------- int __thiscall __cxxabiv1::__class_type_info::__do_dyncast( _DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7, _DWORD *a8) { bool v9; // al _DWORD *v10; // [esp+1Ch] [ebp-10h] if ( a5 == a7 && (v10 = this, v9 = std::type_info::operator==(this, a6), this = v10, v9) ) { a8[2] = a3; return 0; } else { if ( std::type_info::operator==(this, a4) ) { *a8 = a5; a8[3] = 1; a8[1] = a3; } return 0; } } //----- (00441890) -------------------------------------------------------- int __stdcall __cxxabiv1::__class_type_info::__do_find_public_src( __cxxabiv1::__class_type_info *this, const __cxxabiv1::__class_type_info *a2, const void *a3, const __cxxabiv1::__class_type_info *a4, const void *a5) { return 5 * (a4 == a2) + 1; } //----- (004418B0) -------------------------------------------------------- char __thiscall __cxxabiv1::__si_class_type_info::__do_upcast(int this, int a2, int a3, _DWORD *a4) { char result; // al result = __cxxabiv1::__class_type_info::__do_upcast((_DWORD *)this, a2, a3, a4); if ( !result ) return (*(int (__thiscall **)(_DWORD, int, int, _DWORD *))(**(_DWORD **)(this + 8) + 24))( *(_DWORD *)(this + 8), a2, a3, a4); return result; } //----- (00441910) -------------------------------------------------------- int __thiscall __cxxabiv1::__si_class_type_info::__do_dyncast( _DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7, _DWORD *a8) { bool v8; // al _DWORD *v9; // ecx int v10; // edx bool v12; // al v8 = std::type_info::operator==(this, a4); v9 = this; v10 = a7; if ( v8 ) { *a8 = a5; a8[1] = a3; if ( a2 < 0 ) { if ( a2 == -2 ) a8[3] = 1; } else { a8[3] = 5 * (a7 == a2 + a5) + 1; } } else { if ( a5 != a7 ) return (*(int (__thiscall **)(_DWORD, int, int, int, int, int, int, _DWORD *))(*(_DWORD *)v9[2] + 28))( v9[2], a2, a3, a4, a5, a6, v10, a8); v12 = std::type_info::operator==(this, a6); v9 = this; v10 = a7; if ( !v12 ) return (*(int (__thiscall **)(_DWORD, int, int, int, int, int, int, _DWORD *))(*(_DWORD *)v9[2] + 28))( v9[2], a2, a3, a4, a5, a6, v10, a8); a8[2] = a3; } return 0; } //----- (00441A10) -------------------------------------------------------- int __userpurge __cxxabiv1::__si_class_type_info::__do_find_public_src@( int a1@, __cxxabiv1::__si_class_type_info *this, const __cxxabiv1::__class_type_info *a3, const void *a4, const __cxxabiv1::__class_type_info *a5, const void *a6) { __cxxabiv1::__si_class_type_info *v7; // edx bool v9; // al v7 = this; if ( a5 == a3 && (v9 = std::type_info::operator==((_DWORD *)a1, (int)a4), v7 = this, v9) ) return 6; else return (*(int (__thiscall **)(_DWORD, __cxxabiv1::__si_class_type_info *, const __cxxabiv1::__class_type_info *, const void *, const __cxxabiv1::__class_type_info *))(**(_DWORD **)(a1 + 8) + 32))( *(_DWORD *)(a1 + 8), v7, a3, a4, a5); } //----- (00441A80) -------------------------------------------------------- int __thiscall __cxxabiv1::__vmi_class_type_info::__do_upcast(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4) { int v5; // eax int v6; // edx int v7; // eax int v8; // ebx int v9; // eax int v10; // esi char *v11; // edx int v12; // eax int v13; // eax int v14; // ecx int v15; // eax _DWORD *v16; // ecx int result; // eax bool v18; // al char v19; // [esp+13h] [ebp-39h] unsigned __int8 v20; // [esp+13h] [ebp-39h] int v21; // [esp+18h] [ebp-34h] int v22; // [esp+20h] [ebp-2Ch] BYREF int v23; // [esp+24h] [ebp-28h] int v24; // [esp+28h] [ebp-24h] _DWORD *v25; // [esp+2Ch] [ebp-20h] LOBYTE(v5) = __cxxabiv1::__class_type_info::__do_upcast(this, a2, (int)a3, a4); v6 = v5; if ( (_BYTE)v5 ) return v6; v21 = a4[2]; if ( (v21 & 0x10) != 0 ) v21 = this[2]; v7 = this[3]; v8 = v7 - 1; if ( !v7 ) { LABEL_34: LOBYTE(v6) = a4[1] != 0; return v6; } while ( 1 ) { while ( 1 ) { v22 = 0; v23 = 0; v24 = v21; v9 = this[2 * v8 + 5]; v25 = 0; v10 = v9 & 2; v6 = v9 & 1; v19 = v9 & 1; if ( !(v10 | v21 & 1) ) goto LABEL_9; v11 = 0; if ( a3 ) { v12 = v9 >> 8; if ( v19 ) v12 = *(_DWORD *)(*a3 + v12); v11 = (char *)a3 + v12; } v6 = (*(int (__thiscall **)(_DWORD, int, char *, int *))(*(_DWORD *)this[2 * v8 + 4] + 24))( this[2 * v8 + 4], a2, v11, &v22); if ( !(_BYTE)v6 ) goto LABEL_9; if ( v25 == (_DWORD *)8 && v19 ) v25 = (_DWORD *)this[2 * v8 + 4]; if ( !v10 && v23 > 3 ) v23 &= ~2u; v13 = a4[3]; if ( v13 ) break; v14 = v24; *a4 = v22; v15 = v23; a4[2] = v14; v16 = v25; a4[1] = v15; a4[3] = v16; if ( v15 <= 3 ) return v6; if ( (v15 & 2) != 0 ) { if ( (this[2] & 1) == 0 ) return v6; goto LABEL_9; } if ( (v15 & 1) == 0 || (this[2] & 2) == 0 ) return v6; if ( --v8 == -1 ) goto LABEL_34; } if ( *a4 != v22 ) break; if ( !*a4 ) { if ( v25 == (_DWORD *)8 || v13 == 8 || (v20 = v6, v18 = std::type_info::operator==(v25, a4[3]), v6 = v20, !v18) ) { a4[1] = 2; return v6; } } a4[1] |= v23; LABEL_9: if ( --v8 == -1 ) goto LABEL_34; } *a4 = 0; result = v6; a4[1] = 2; return result; } // 441AA8: variable 'v5' is possibly undefined //----- (00441CB0) -------------------------------------------------------- int __thiscall __cxxabiv1::__vmi_class_type_info::__do_dyncast( _DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, _DWORD *a7, int *a8) { int v8; // eax int v9; // edi int v10; // esi int v11; // ebx int v12; // edx int v13; // ecx int v14; // edx int v15; // eax int v16; // eax int v17; // ecx int v18; // eax int v19; // edx unsigned __int8 v20; // si int v21; // edx int v22; // ecx int v24; // edx int v25; // eax int v26; // eax int v28; // [esp+44h] [ebp-54h] int v29; // [esp+44h] [ebp-54h] int v30; // [esp+48h] [ebp-50h] char v31; // [esp+48h] [ebp-50h] unsigned int v32; // [esp+4Ch] [ebp-4Ch] int v33; // [esp+54h] [ebp-44h] unsigned __int8 v34; // [esp+59h] [ebp-3Fh] char i; // [esp+5Ah] [ebp-3Eh] char v36; // [esp+5Bh] [ebp-3Dh] int v37; // [esp+68h] [ebp-30h] BYREF int v38; // [esp+6Ch] [ebp-2Ch] int v39; // [esp+70h] [ebp-28h] int v40; // [esp+74h] [ebp-24h] int v41; // [esp+78h] [ebp-20h] if ( (a8[4] & 0x10) != 0 ) a8[4] = this[2]; if ( a5 == a7 && std::type_info::operator==(this, a6) ) { a8[2] = a3; return 0; } if ( !std::type_info::operator==(this, a4) ) { v32 = 0; if ( a2 >= 0 ) v32 = (unsigned int)a7 - a2; v34 = 0; v36 = 0; for ( i = 1; ; i = 0 ) { v8 = this[3]; v9 = v8 - 1; if ( v8 ) break; LABEL_57: v36 &= i; if ( !v36 ) return v34; } while ( 1 ) { while ( 1 ) { v16 = a8[4]; v37 = 0; v38 = 0; v17 = a3; v31 = v16; v41 = v16; v39 = 0; v18 = this[2 * v9 + 5]; v40 = 0; v19 = v18 >> 8; if ( (v18 & 1) != 0 ) { v17 = a3 | 1; v19 = *(_DWORD *)(*a5 + v19); } if ( v32 && i == v32 < (unsigned int)a5 + v19 ) { v36 = 1; goto LABEL_30; } if ( (v18 & 2) == 0 ) break; LABEL_38: v20 = (*(int (__thiscall **)(_DWORD, int, int, int, int, int, _DWORD *, int *))(*(_DWORD *)this[2 * v9 + 4] + 28))( this[2 * v9 + 4], a2, v17, a4, (int)a5 + v19, a6, a7, &v37); v11 = v40; v21 = v39 | a8[2]; v30 = v21; v22 = v40; a8[2] = v21; if ( (v22 & 0xFFFFFFFB) == 2 ) { v26 = v37; a8[3] = v11; *a8 = v26; a8[1] = v38; return v20; } v13 = v37; v28 = *a8; if ( !v34 ) { if ( !*a8 ) { v24 = v38; *a8 = v37; a8[1] = v24; if ( v13 && v30 ) { v34 = v20; if ( (this[2] & 1) == 0 ) return v34; } else { v34 = v20; } goto LABEL_29; } LABEL_11: if ( v28 == v37 ) { a8[1] |= v38; goto LABEL_29; } if ( !v37 && !v20 ) goto LABEL_29; v10 = a8[3]; if ( v21 <= 3 ) goto LABEL_43; goto LABEL_15; } if ( v28 ) goto LABEL_11; if ( !v37 ) goto LABEL_29; v10 = a8[3]; if ( v21 <= 3 ) goto LABEL_43; LABEL_15: if ( (v21 & 1) == 0 || (a8[4] & 2) == 0 ) { if ( !v10 ) v10 = 1; if ( !v11 ) v11 = 1; v33 = v11; v12 = v10; LABEL_22: if ( (v11 ^ v12) > 3 ) goto LABEL_23; goto LABEL_51; } LABEL_43: v33 = v11; v12 = v10; if ( v10 <= 0 ) { if ( v11 > 3 && ((v11 & 1) == 0 || (this[2] & 2) == 0) ) { if ( (v11 ^ 1) > 3 ) goto LABEL_24; goto LABEL_53; } if ( a2 >= 0 ) { if ( a7 != (_DWORD *)(a2 + v28) ) { if ( v11 > 0 ) goto LABEL_96; if ( a7 == (_DWORD *)(v37 + a2) ) goto LABEL_101; LABEL_75: v12 = 1; v11 = 1; LABEL_76: v25 = v12 ^ 1; goto LABEL_77; } v12 = 6; v10 = 6; if ( v11 <= 0 ) { v11 = 6; LABEL_78: v14 = v12 & 2; goto LABEL_26; } goto LABEL_22; } if ( a2 == -2 ) { if ( v11 > 0 ) { LABEL_96: if ( (v11 ^ 1) > 3 ) { v10 = 1; LABEL_23: v13 = v37; if ( v11 > 3 ) { LABEL_24: v14 = v11 & 2; goto LABEL_25; } v11 = v10; v14 = v10 & 2; LABEL_26: a8[3] = v11; if ( v14 || (v11 & 1) == 0 ) return 0; v30 = a8[2]; LABEL_29: if ( v30 == 4 ) return v34; goto LABEL_30; } goto LABEL_53; } goto LABEL_75; } v10 = (*(int (__thiscall **)(int, int, int, int, _DWORD *))(*(_DWORD *)a4 + 32))(a4, a2, v28, a6, a7); v12 = v10; } if ( v11 > 0 ) goto LABEL_22; if ( v10 > 3 && ((v10 & 1) == 0 || (this[2] & 2) == 0) ) { v11 = v10; v25 = v10 ^ 1; LABEL_77: if ( v25 > 3 ) goto LABEL_78; goto LABEL_52; } v13 = v37; if ( a2 >= 0 ) { if ( a7 != (_DWORD *)(v37 + a2) ) { LABEL_91: v11 = v10; goto LABEL_76; } if ( (v10 ^ 6) > 3 ) { LABEL_101: v14 = 2; v11 = 6; LABEL_25: v15 = v38; *a8 = v13; v34 = 0; a8[1] = v15; goto LABEL_26; } v33 = 6; } else { if ( a2 == -2 ) goto LABEL_91; v29 = v12; v11 = (*(int (__thiscall **)(int, int, int, int, _DWORD *))(*(_DWORD *)a4 + 32))(a4, a2, v37, a6, a7); v12 = v29; v33 = v11; if ( (v11 ^ v29) > 3 ) goto LABEL_23; } LABEL_51: if ( (v33 & v12) > 3 ) { *a8 = 0; a8[3] = 2; return 1; } LABEL_52: v30 = a8[2]; LABEL_53: *a8 = 0; a8[3] = 1; v34 = 1; if ( v30 == 4 ) return v34; LABEL_30: if ( --v9 == -1 ) goto LABEL_57; } if ( a2 != -2 || (v31 & 3) != 0 ) { v17 &= ~2u; goto LABEL_38; } if ( --v9 == -1 ) goto LABEL_57; } } *a8 = (int)a5; a8[1] = a3; if ( a2 < 0 ) { v34 = 0; if ( a2 == -2 ) a8[3] = 1; return v34; } else { a8[3] = 5 * (a7 == (_DWORD *)((char *)a5 + a2)) + 1; return 0; } } //----- (00442370) -------------------------------------------------------- int __userpurge __cxxabiv1::__vmi_class_type_info::__do_find_public_src@( _DWORD *a1@, __cxxabiv1::__vmi_class_type_info *this, const __cxxabiv1::__class_type_info *a3, const void *a4, const __cxxabiv1::__class_type_info *a5, const void *a6) { int v7; // eax int v8; // ebx int v9; // edx int v10; // eax int result; // eax bool v12; // dl char v13; // [esp+1Fh] [ebp-1Dh] if ( a3 != a5 || (v12 = std::type_info::operator==(a1, (int)a4), result = 6, !v12) ) { v7 = a1[3]; v8 = v7 - 1; if ( !v7 ) return 1; while ( 1 ) { v9 = a1[2 * v8 + 5]; if ( (v9 & 2) != 0 ) { v10 = v9 >> 8; v13 = v9 & 1; if ( (v9 & 1) != 0 ) { if ( this == (__cxxabiv1::__vmi_class_type_info *)-3 ) goto LABEL_8; v10 = *(_DWORD *)(*(_DWORD *)a3 + v10); } result = (*(int (__thiscall **)(_DWORD, __cxxabiv1::__vmi_class_type_info *, int, const void *, const __cxxabiv1::__class_type_info *))(*(_DWORD *)a1[2 * v8 + 4] + 32))( a1[2 * v8 + 4], this, (int)a3 + v10, a4, a5); if ( result > 3 ) { if ( v13 ) return result | 1; return result; } } LABEL_8: if ( --v8 == -1 ) return 1; } } return result; } //----- (00442450) -------------------------------------------------------- const char *`anonymous namespace'::io_error_category::name() { return "iostream"; } //----- (00442460) -------------------------------------------------------- int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int a2, int a3) { *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; if ( a3 == 1 ) std::string::_M_replace((unsigned int *)this, 0, 0, "iostream error", 0xEu); else std::string::_M_replace((unsigned int *)this, 0, 0, "Unknown error", 0xDu); return this; } //----- (00442500) -------------------------------------------------------- _anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition( _anonymous_namespace_::system_error_category *this, int a2) { return this; } //----- (00442540) -------------------------------------------------------- const char *`anonymous namespace'::system_error_category::name() { return "system"; } //----- (00442550) -------------------------------------------------------- const char *`anonymous namespace'::generic_error_category::name() { return "generic"; } //----- (00442560) -------------------------------------------------------- void **__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11]( void **this, int a2, int ErrorMessage) { char *v4; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v4 = strerror(ErrorMessage); *this = this + 2; Size = -1; if ( v4 ) Size = (size_t)&v4[strlen(v4)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)v4, Size, v7); return this; } // 44259B: variable 'v7' is possibly undefined //----- (004425B0) -------------------------------------------------------- int WXSS::CSSTreeLib::NonTerminal::GetClass() { return 2; } //----- (004425B8) -------------------------------------------------------- int WXSS::CSSTreeLib::EPS::GetClass() { return 4; } //----- (004425C0) -------------------------------------------------------- int WXSS::CSSTreeLib::Rule::GetClass() { return 0; } //----- (004425C4) -------------------------------------------------------- int WXSS::CSSTreeLib::Action::GetClass() { return 3; } //----- (004425CC) -------------------------------------------------------- int WXSS::CSSTreeLib::Terminal::GetClass() { return 1; } //----- (004425D4) -------------------------------------------------------- const char *__fastcall WXSS::Token::GetLiteral(_DWORD *a1) { const char *result; // eax int v2; // edx if ( *a1 == 1 ) return (const char *)(a1 + 7); result = "$"; if ( *a1 != 8 ) { v2 = a1[1]; result = "UNKNOWN"; if ( v2 ) return *(const char **)v2; } return result; } //----- (00442600) -------------------------------------------------------- const char *__gnu_cxx::__concurrence_lock_error::what() { return "__gnu_cxx::__concurrence_lock_error"; } //----- (00442610) -------------------------------------------------------- const char *__gnu_cxx::__concurrence_unlock_error::what() { return "__gnu_cxx::__concurrence_unlock_error"; } //----- (00442620) -------------------------------------------------------- int __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2) { unsigned int v2; // eax int v3; // edx v2 = *this; v3 = 1; if ( *this <= a2 ) { v3 = *(_DWORD *)(v2 - 12); LOBYTE(v3) = v2 + 2 * v3 < a2; } return v3; } //----- (00442650) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *String, int a3) { size_t v4; // eax v4 = wcslen(String); return std::wstring::find_last_of(this, String, a3, v4); } //----- (00442690) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *S, unsigned int a3, size_t N) { int v4; // eax int v5; // ebx unsigned int v7; // ebx v4 = *this; v5 = *(_DWORD *)(*this - 12); if ( !v5 || !N ) return -1; v7 = v5 - 1; if ( v7 > a3 ) v7 = a3; while ( !wmemchr(S, *(_WORD *)(v4 + 2 * v7), N) ) { if ( --v7 == -1 ) return -1; v4 = *this; } return v7; } //----- (00442710) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t **a2, int a3) { return std::wstring::find_last_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (00442740) -------------------------------------------------------- int __thiscall std::wstring::find_last_of(_DWORD *this, __int16 a2, unsigned int a3) { int result; // eax int v4; // ebx unsigned int v5; // ebx result = -1; v4 = *(_DWORD *)(*this - 12); if ( v4 ) { result = a3; v5 = v4 - 1; if ( a3 > v5 ) result = v5; do { if ( a2 == *(_WORD *)(*this + 2 * result) ) break; --result; } while ( result != -1 ); } return result; } //----- (00442790) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) { size_t v4; // eax v4 = wcslen(String); return std::wstring::find_first_of(this, String, a3, v4); } //----- (004427D0) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) { if ( N ) { while ( *(_DWORD *)(*this - 12) > a3 ) { if ( wmemchr(S, *(_WORD *)(*this + 2 * a3), N) ) return a3; ++a3; } } return -1; } //----- (00442840) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t **a2, int a3) { return std::wstring::find_first_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (00442870) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3) { return std::wstring::find(this, C, a3); } //----- (00442880) -------------------------------------------------------- void *__thiscall std::wstring::get_allocator(void *this, int a2) { return this; } //----- (00442890) -------------------------------------------------------- unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) { unsigned int result; // eax result = a2 + 536870910 - *(_DWORD *)(*this - 12); if ( result < a3 ) std::__throw_length_error(a4); return result; } //----- (004428C0) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *String, int a3) { size_t v4; // eax v4 = wcslen(String); return std::wstring::find_last_not_of(this, String, a3, v4); } //----- (00442900) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *S, unsigned int a3, size_t N) { int v4; // eax int v5; // ebx unsigned int v7; // ebx v4 = *this; v5 = *(_DWORD *)(*this - 12); if ( !v5 ) return -1; v7 = v5 - 1; if ( v7 > a3 ) v7 = a3; if ( N ) { while ( wmemchr(S, *(_WORD *)(v4 + 2 * v7), N) ) { if ( --v7 == -1 ) return -1; v4 = *this; } } return v7; } // 44294C: conditional instruction was optimized away because %arg_8.4!=0 //----- (00442990) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t **a2, int a3) { return std::wstring::find_last_not_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (004429C0) -------------------------------------------------------- int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3) { int v3; // edx int result; // eax int v5; // ebx v3 = *this; result = -1; v5 = *(_DWORD *)(*this - 12); if ( v5 ) { result = v5 - 1; if ( v5 - 1 <= a3 ) goto LABEL_5; result = a3; if ( *(_WORD *)(v3 + 2 * a3) == a2 ) { do { if ( --result == -1 ) break; LABEL_5: ; } while ( *(_WORD *)(v3 + 2 * result) == a2 ); } } return result; } //----- (00442A10) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3) { size_t v4; // eax v4 = wcslen(String); return std::wstring::find_first_not_of(this, String, a3, v4); } //----- (00442A50) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) { unsigned int v4; // ebx unsigned int v5; // edx wchar_t *i; // eax v4 = a3; if ( a3 >= *(_DWORD *)(*this - 12) ) return -1; v5 = a3; if ( N ) { for ( i = (wchar_t *)(*this + 2 * a3); wmemchr(S, *i, N); i = (wchar_t *)(*this + 2 * v4) ) { if ( *(_DWORD *)(*this - 12) <= ++v4 ) return -1; } return v4; } return v5; } //----- (00442AD0) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t **a2, int a3) { return std::wstring::find_first_not_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (00442B00) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3) { int v3; // edx int result; // eax unsigned int v5; // ecx v3 = *this; result = a3; v5 = *(_DWORD *)(*this - 12); if ( a3 >= v5 ) return -1; while ( *(_WORD *)(v3 + 2 * result) == a2 ) { if ( ++result == v5 ) return -1; } return result; } //----- (00442B40) -------------------------------------------------------- int __thiscall std::wstring::at(int *this, unsigned int a2) { int v2; // edx unsigned int v3; // ecx v2 = *this; v3 = *(_DWORD *)(*this - 12); if ( a2 >= v3 ) std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, v3); return v2 + 2 * a2; } //----- (00442B70) -------------------------------------------------------- int __fastcall std::wstring::end(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12); } //----- (00442B80) -------------------------------------------------------- int __fastcall std::wstring::_Rep::_M_is_leaked(int a1) { return *(_DWORD *)(a1 + 8) >> 31; } //----- (00442B90) -------------------------------------------------------- bool __fastcall std::wstring::_Rep::_M_is_shared(int a1) { return *(_DWORD *)(a1 + 8) > 0; } //----- (00442BA0) -------------------------------------------------------- int __fastcall std::wstring::back(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12) - 2; } //----- (00442BB0) -------------------------------------------------------- int __fastcall std::wstring::cend(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12); } //----- (00442BC0) -------------------------------------------------------- size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4) { unsigned int v4; // ebx size_t N; // ebx const wchar_t *S2; // eax v4 = *(_DWORD *)(*this - 12); if ( a4 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::copy", a4, *(_DWORD *)(*this - 12)); N = v4 - a4; if ( N > a3 ) { N = a3; if ( !a3 ) return N; } else if ( !N ) { return N; } S2 = (const wchar_t *)(*this + 2 * a4); if ( N != 1 ) { wmemcpy(S1, S2, N); return N; } *S1 = *S2; return 1; } //----- (00442C50) -------------------------------------------------------- int __fastcall std::wstring::data(int a1) { return *(_DWORD *)a1; } //----- (00442C60) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3) { size_t v4; // eax v4 = wcslen(S2); return std::wstring::find(this, S2, a3, v4); } //----- (00442CA0) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4) { int v4; // edi unsigned int v5; // eax size_t N; // ecx const wchar_t *S; // edx wchar_t C; // bp wchar_t *v9; // edi unsigned int v10; // ecx int v13; // [esp+18h] [ebp-24h] int v14; // [esp+1Ch] [ebp-20h] v4 = *this; v5 = *(_DWORD *)(*this - 12); if ( a4 ) { if ( v5 > a3 && a4 <= v5 - a3 ) { N = 1 - a4 + v5 - a3; if ( N ) { v14 = v4; S = (const wchar_t *)(v4 + 2 * a3); v13 = v4 + 2 * v5; C = *S2; while ( 1 ) { v9 = wmemchr(S, C, N); if ( !v9 ) break; if ( !wmemcmp(v9, S2, a4) ) return ((int)v9 - v14) >> 1; S = v9 + 1; v10 = (v13 - (int)(v9 + 1)) >> 1; if ( a4 <= v10 ) { N = 1 - a4 + v10; if ( N ) continue; } return -1; } } } } else if ( v5 >= a3 ) { return a3; } return -1; } //----- (00442D60) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, wchar_t **a2, int a3) { return std::wstring::find(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (00442D90) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3) { int v3; // ebx unsigned int v4; // eax wchar_t *v6; // eax v3 = *this; v4 = *(_DWORD *)(*this - 12); if ( v4 > a3 && (v6 = wmemchr((const wchar_t *)(v3 + 2 * a3), C, v4 - a3)) != 0 ) return ((int)v6 - v3) >> 1; else return -1; } //----- (00442DE0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00442DF0) -------------------------------------------------------- int __fastcall std::wstring::size(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (00442E00) -------------------------------------------------------- int __fastcall std::wstring::begin(int a1) { return *(_DWORD *)a1; } //----- (00442E10) -------------------------------------------------------- int __fastcall std::wstring::c_str(int a1) { return *(_DWORD *)a1; } //----- (00442E20) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00442E30) -------------------------------------------------------- bool __fastcall std::wstring::empty(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) == 0; } //----- (00442E40) -------------------------------------------------------- int __fastcall std::wstring::front(int a1) { return *(_DWORD *)a1; } //----- (00442E50) -------------------------------------------------------- unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3) { size_t v4; // eax v4 = wcslen(String); return std::wstring::rfind(this, String, a3, v4); } //----- (00442E90) -------------------------------------------------------- unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N) { int v4; // edi size_t v5; // ebx unsigned int v6; // ebx v4 = *this; v5 = *(_DWORD *)(*this - 12); if ( N > v5 ) return -1; v6 = v5 - N; if ( v6 > a3 ) v6 = a3; if ( N ) { while ( wmemcmp((const wchar_t *)(v4 + 2 * v6), S2, N) ) { if ( !v6 ) return -1; --v6; } } return v6; } // 442ED5: conditional instruction was optimized away because %arg_8.4!=0 //----- (00442F00) -------------------------------------------------------- unsigned int __thiscall std::wstring::rfind(int *this, wchar_t **a2, int a3) { return std::wstring::rfind(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (00442F30) -------------------------------------------------------- int __thiscall std::wstring::rfind(_DWORD *this, __int16 a2, unsigned int a3) { int result; // eax int v4; // ebx result = -1; v4 = *(_DWORD *)(*this - 12); if ( v4 ) { result = v4 - 1; if ( v4 - 1 > a3 ) result = a3; do { if ( *(_WORD *)(*this + 2 * result) == a2 ) break; --result; } while ( result != -1 ); } return result; } //----- (00442F70) -------------------------------------------------------- int __fastcall std::wstring::_M_rep(_DWORD *a1) { return *a1 - 12; } //----- (00442F80) -------------------------------------------------------- int __fastcall std::wstring::cbegin(int a1) { return *(_DWORD *)a1; } //----- (00442F90) -------------------------------------------------------- int __fastcall std::wstring::length(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (00442FA0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); return result; } //----- (00442FC0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::substr(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) { if ( a3 > *(_DWORD *)(*a2 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::substr", a3, *(_DWORD *)(*a2 - 12)); std::wstring::basic_string(this, a2, a3, a4); return this; } //----- (00443020) -------------------------------------------------------- int __fastcall std::wstring::_M_data(int a1) { return *(_DWORD *)a1; } //----- (00443030) -------------------------------------------------------- int __fastcall std::wstring::_M_iend(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12); } //----- (00443040) -------------------------------------------------------- int __thiscall std::wstring::compare(const wchar_t **this, wchar_t *String) { size_t v3; // edi size_t N; // eax size_t v5; // ebx int result; // eax v3 = *((_DWORD *)*this - 3); N = wcslen(String); v5 = N; if ( N > v3 ) N = v3; if ( !N ) return v3 - v5; result = wmemcmp(*this, String, N); if ( !result ) return v3 - v5; return result; } //----- (004430A0) -------------------------------------------------------- int __thiscall std::wstring::compare(const wchar_t **this, const wchar_t **a2) { size_t v2; // esi size_t N; // eax size_t v4; // ebx int result; // eax v2 = *((_DWORD *)*this - 3); N = v2; v4 = *((_DWORD *)*a2 - 3); if ( v4 <= v2 ) N = *((_DWORD *)*a2 - 3); if ( !N ) return v2 - v4; result = wmemcmp(*this, *a2, N); if ( !result ) return v2 - v4; return result; } //----- (004430F0) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) { unsigned int v4; // ebx unsigned int v5; // ebx size_t N; // eax size_t v8; // esi int result; // eax v4 = *(_DWORD *)(*this - 12); if ( a2 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, *(_DWORD *)(*this - 12)); v5 = v4 - a2; if ( v5 > a3 ) v5 = a3; N = wcslen(String); v8 = N; if ( N > v5 ) { N = v5; if ( !v5 ) return v5 - v8; } else if ( !N ) { return v5 - v8; } result = wmemcmp((const wchar_t *)(*this + 2 * a2), String, N); if ( !result ) return v5 - v8; return result; } //----- (00443190) -------------------------------------------------------- int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5) { int v5; // ecx size_t N; // edx unsigned int v7; // ebx unsigned int v8; // ebx int result; // eax v5 = *this; N = a3; v7 = *(_DWORD *)(v5 - 12); if ( a2 > v7 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, *(_DWORD *)(v5 - 12)); v8 = v7 - a2; if ( v8 <= a3 ) { N = v8; if ( v8 <= a5 ) goto LABEL_4; LABEL_6: N = a5; if ( !a5 ) return v8 - a5; goto LABEL_7; } v8 = a3; if ( a3 > a5 ) goto LABEL_6; LABEL_4: if ( !N ) return v8 - a5; LABEL_7: result = wmemcmp((const wchar_t *)(v5 + 2 * a2), S2, N); if ( !result ) return v8 - a5; return result; } //----- (00443230) -------------------------------------------------------- int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, const wchar_t **a4) { int v4; // ecx unsigned int v5; // ebx size_t v6; // ebx const wchar_t *S2; // edi size_t v8; // esi size_t N; // edx int result; // eax v4 = *this; v5 = *(_DWORD *)(v4 - 12); if ( a2 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, *(_DWORD *)(v4 - 12)); v6 = v5 - a2; if ( v6 <= a3 ) { S2 = *a4; v8 = *((_DWORD *)*a4 - 3); N = v8; if ( v8 <= v6 ) goto LABEL_4; LABEL_6: N = v6; if ( !v6 ) return v6 - v8; goto LABEL_7; } v6 = a3; S2 = *a4; v8 = *((_DWORD *)*a4 - 3); N = v8; if ( v8 > a3 ) goto LABEL_6; LABEL_4: if ( !N ) return v6 - v8; LABEL_7: result = wmemcmp((const wchar_t *)(v4 + 2 * a2), S2, N); if ( !result ) return v6 - v8; return result; } //----- (004432D0) -------------------------------------------------------- int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) { int v6; // ecx unsigned int v7; // esi unsigned int v8; // ebx size_t v9; // esi size_t v10; // ebx size_t N; // ebp int result; // eax v6 = *this; v7 = *(_DWORD *)(v6 - 12); if ( a2 > v7 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, *(_DWORD *)(v6 - 12)); v8 = *(_DWORD *)(*a4 - 12); if ( a5 > v8 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a5, *(_DWORD *)(*a4 - 12)); v9 = v7 - a2; if ( v9 > a3 ) { v9 = a3; v10 = v8 - a5; if ( v10 <= a6 ) { LABEL_5: N = v10; if ( v10 <= v9 ) goto LABEL_6; LABEL_8: N = v9; if ( !v9 ) return v9 - v10; goto LABEL_9; } } else { v10 = v8 - a5; if ( v10 <= a6 ) goto LABEL_5; } v10 = a6; N = a6; if ( a6 > v9 ) goto LABEL_8; LABEL_6: if ( !N ) return v9 - v10; LABEL_9: result = wmemcmp((const wchar_t *)(v6 + 2 * a2), (const wchar_t *)(*a4 + 2 * a5), N); if ( !result ) return v9 - v10; return result; } //----- (004433B0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); return result; } //----- (004433D0) -------------------------------------------------------- unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3) { unsigned int result; // eax unsigned int v4; // edx result = a2; v4 = *(_DWORD *)(*this - 12); if ( v4 < a2 ) std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v4); return result; } //----- (00443410) -------------------------------------------------------- unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3) { unsigned int result; // eax result = *(_DWORD *)(*this - 12) - a2; if ( result > a3 ) return a3; return result; } //----- (00443430) -------------------------------------------------------- int __fastcall std::wstring::capacity(_DWORD *a1) { return *(_DWORD *)(*a1 - 8); } //----- (00443440) -------------------------------------------------------- int std::wstring::max_size() { return 536870910; } //----- (00443450) -------------------------------------------------------- int __fastcall std::wstring::_M_ibegin(int a1) { return *(_DWORD *)a1; } //----- (00443460) -------------------------------------------------------- int __thiscall std::wstring::operator[](_DWORD *this, int a2) { return *this + 2 * a2; } //----- (00443470) -------------------------------------------------------- int __fastcall std::istream::gcount(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00443480) -------------------------------------------------------- int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (00443490) -------------------------------------------------------- int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (004434A0) -------------------------------------------------------- int __userpurge std::string::_M_disjunct@(_DWORD *a1@, std::string *this, const char *a3) { int v3; // edx v3 = 1; if ( *a1 <= (unsigned int)this ) LOBYTE(v3) = *(_DWORD *)(*a1 - 12) + *a1 < (unsigned int)this; return v3; } //----- (004434C0) -------------------------------------------------------- int __userpurge std::string::find_last_of@(int *a1@, std::string *this, char *a3, unsigned int a4) { size_t v5; // eax unsigned int v7; // [esp+Ch] [ebp-10h] v5 = strlen((const char *)this); return std::string::find_last_of(a1, this, a3, v5, v7); } // 4434E4: variable 'v7' is possibly undefined //----- (00443500) -------------------------------------------------------- int __userpurge std::string::find_last_of@( int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5) { int v5; // esi int v6; // ebx const char *v7; // ebx v5 = *a1; v6 = *(_DWORD *)(*a1 - 12); if ( !v6 || !MaxCount ) return -1; v7 = (const char *)(v6 - 1); if ( v7 > a3 ) v7 = a3; do { if ( memchr(this, v7[v5], MaxCount) ) break; --v7; } while ( v7 != (const char *)-1 ); return (int)v7; } //----- (00443580) -------------------------------------------------------- int __userpurge std::string::find_last_of@( int *a1@, std::string **this, const std::string *a3, unsigned int a4) { unsigned int v5; // [esp+Ch] [ebp-10h] return std::string::find_last_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); } // 44359B: variable 'v5' is possibly undefined //----- (004435B0) -------------------------------------------------------- int __userpurge std::string::find_last_of@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) { int result; // eax int v5; // ebx unsigned int v6; // ebx result = -1; v5 = *(_DWORD *)(*a1 - 12); if ( v5 ) { result = a3; v6 = v5 - 1; if ( a3 > v6 ) result = v6; do { if ( (_BYTE)this == *(_BYTE *)(*a1 + result) ) break; --result; } while ( result != -1 ); } return result; } //----- (00443600) -------------------------------------------------------- int __userpurge std::string::find_first_of@(int *a1@, std::string *this, char *a3, unsigned int a4) { size_t v5; // eax unsigned int v7; // [esp+Ch] [ebp-10h] v5 = strlen((const char *)this); return std::string::find_first_of(a1, this, a3, v5, v7); } // 443624: variable 'v7' is possibly undefined //----- (00443640) -------------------------------------------------------- int __userpurge std::string::find_first_of@( int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5) { int v6; // esi unsigned int v7; // edi if ( MaxCount ) { v6 = *a1; v7 = *(_DWORD *)(*a1 - 12); while ( v7 > (unsigned int)a3 ) { if ( memchr(this, a3[v6], MaxCount) ) return (int)a3; ++a3; } } return -1; } //----- (004436B0) -------------------------------------------------------- int __userpurge std::string::find_first_of@( int *a1@, std::string **this, const std::string *a3, unsigned int a4) { unsigned int v5; // [esp+Ch] [ebp-10h] return std::string::find_first_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); } // 4436CB: variable 'v5' is possibly undefined //----- (004436E0) -------------------------------------------------------- char *__userpurge std::string::find_first_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) { return std::string::find(a1, (std::string *)(char)this, a3, a4); } //----- (004436F0) -------------------------------------------------------- void *__thiscall std::string::get_allocator(void *ecx0, std::string *this) { return ecx0; } //----- (00443700) -------------------------------------------------------- char *__userpurge std::string::_M_check_length@( _DWORD *a1@, std::string *this, unsigned int a3, std::length_error *a4, const char *a5) { char *result; // eax result = (char *)this - *(_DWORD *)(*a1 - 12) + 1073741820; if ( (unsigned int)result < a3 ) std::__throw_length_error(a4); return result; } //----- (00443730) -------------------------------------------------------- int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4) { unsigned int v5; // eax unsigned int v7; // [esp+Ch] [ebp-10h] v5 = strlen((const char *)this); return std::string::find_last_not_of(a1, this, a3, v5, v7); } // 443754: variable 'v7' is possibly undefined //----- (00443770) -------------------------------------------------------- int __userpurge std::string::find_last_not_of@( int *a1@, std::string *this, const char *a3, unsigned int MaxCount, unsigned int a5) { int v5; // ebx int v6; // edi int v7; // eax v5 = -1; v6 = *a1; v7 = *(_DWORD *)(*a1 - 12); if ( v7 ) { v5 = v7 - 1; if ( v7 - 1 > (unsigned int)a3 ) v5 = (int)a3; do { if ( !MaxCount ) break; if ( !memchr(this, *(char *)(v6 + v5), MaxCount) ) break; --v5; } while ( v5 != -1 ); } return v5; } //----- (004437E0) -------------------------------------------------------- int __userpurge std::string::find_last_not_of@( int *a1@, std::string **this, const std::string *a3, unsigned int a4) { unsigned int v5; // [esp+Ch] [ebp-10h] return std::string::find_last_not_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); } // 4437FB: variable 'v5' is possibly undefined //----- (00443810) -------------------------------------------------------- int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) { int v4; // edx int result; // eax int v6; // ebx v4 = *a1; result = -1; v6 = *(_DWORD *)(*a1 - 12); if ( v6 ) { result = v6 - 1; if ( v6 - 1 <= a3 ) goto LABEL_5; result = a3; if ( *(_BYTE *)(v4 + a3) == (_BYTE)this ) { do { if ( --result == -1 ) break; LABEL_5: ; } while ( *(_BYTE *)(v4 + result) == (_BYTE)this ); } } return result; } //----- (00443860) -------------------------------------------------------- int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4) { size_t v5; // eax unsigned int v7; // [esp+Ch] [ebp-10h] v5 = strlen((const char *)this); return std::string::find_first_not_of(a1, this, a3, v5, v7); } // 443884: variable 'v7' is possibly undefined //----- (004438A0) -------------------------------------------------------- int __userpurge std::string::find_first_not_of@( int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5) { int v5; // ebx const char *v6; // ebp unsigned int v7; // edi v5 = *a1; v6 = a3; v7 = *(_DWORD *)(*a1 - 12); if ( (unsigned int)a3 >= v7 ) return -1; if ( MaxCount ) { while ( memchr(this, v6[v5], MaxCount) ) { if ( ++v6 == (const char *)v7 ) return -1; } } return (int)v6; } //----- (00443900) -------------------------------------------------------- int __userpurge std::string::find_first_not_of@( int *a1@, std::string **this, const std::string *a3, unsigned int a4) { unsigned int v5; // [esp+Ch] [ebp-10h] return std::string::find_first_not_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); } // 44391B: variable 'v5' is possibly undefined //----- (00443930) -------------------------------------------------------- int __userpurge std::string::find_first_not_of@( int *a1@, std::string *this, unsigned int a3, unsigned int a4) { int v4; // edx int result; // eax unsigned int v6; // ecx v4 = *a1; result = a3; v6 = *(_DWORD *)(*a1 - 12); if ( a3 >= v6 ) return -1; while ( *(_BYTE *)(v4 + result) == (_BYTE)this ) { if ( ++result == v6 ) return -1; } return result; } //----- (00443970) -------------------------------------------------------- char *__userpurge std::string::at@(int *a1@, std::string *this, unsigned int a3) { int v3; // eax unsigned int v4; // ecx v3 = *a1; v4 = *(_DWORD *)(*a1 - 12); if ( (unsigned int)this >= v4 ) std::__throw_out_of_range_fmt( "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", (size_t)this, v4); return (char *)this + v3; } //----- (004439A0) -------------------------------------------------------- int __fastcall std::string::end(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) + *a1; } //----- (004439B0) -------------------------------------------------------- int __fastcall std::string::_Rep::_M_is_leaked(int a1) { return *(_DWORD *)(a1 + 8) >> 31; } //----- (004439C0) -------------------------------------------------------- bool __fastcall std::string::_Rep::_M_is_shared(int a1) { return *(_DWORD *)(a1 + 8) > 0; } //----- (004439D0) -------------------------------------------------------- int __fastcall std::string::back(_DWORD *a1) { return *a1 + *(_DWORD *)(*a1 - 12) - 1; } //----- (004439E0) -------------------------------------------------------- int __fastcall std::string::cend(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) + *a1; } //----- (004439F0) -------------------------------------------------------- int __userpurge std::string::copy@( _DWORD *a1@, std::string *this, char *a3, unsigned int a4, unsigned int a5) { unsigned int v5; // ebx char *Size; // ebx _BYTE *Src; // eax v5 = *(_DWORD *)(*a1 - 12); if ( a4 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::copy", a4, *(_DWORD *)(*a1 - 12)); Size = (char *)(v5 - a4); if ( Size > a3 ) { Size = a3; if ( !a3 ) return (int)Size; } else if ( !Size ) { return (int)Size; } Src = (_BYTE *)(*a1 + a4); if ( Size != (char *)1 ) { memcpy(this, Src, (size_t)Size); return (int)Size; } *(_BYTE *)this = *Src; return 1; } //----- (00443A70) -------------------------------------------------------- int __fastcall std::string::data(int a1) { return *(_DWORD *)a1; } //----- (00443A80) -------------------------------------------------------- unsigned int __userpurge std::string::find@(int *a1@, std::string *this, char *a3, unsigned int a4) { size_t Size; // eax unsigned int v7; // [esp+Ch] [ebp-10h] Size = strlen((const char *)this); return std::string::find(a1, this, a3, Size, v7); } // 443AA4: variable 'v7' is possibly undefined //----- (00443AC0) -------------------------------------------------------- unsigned int __userpurge std::string::find@( int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5) { int v5; // edi unsigned int v6; // esi int v7; // ecx const char *Buf; // eax size_t MaxCount; // edx int Val; // ebp const char *v11; // edi int v13; // [esp+18h] [ebp-24h] int v14; // [esp+1Ch] [ebp-20h] v5 = *a1; v6 = *(_DWORD *)(*a1 - 12); if ( !Size ) return v6 < (unsigned int)a3 ? -1 : (unsigned int)a3; v7 = -1; if ( v6 > (unsigned int)a3 ) { Buf = &a3[v5]; v13 = v5 + v6; if ( Size <= v6 - (unsigned int)a3 ) { MaxCount = 1 - Size + v6 - (_DWORD)a3; if ( MaxCount ) { v14 = v5; Val = *(char *)this; while ( 1 ) { v11 = (const char *)memchr(Buf, Val, MaxCount); if ( !v11 ) return -1; if ( !memcmp(v11, this, Size) ) break; Buf = v11 + 1; if ( Size <= v13 - (int)(v11 + 1) ) { MaxCount = v13 - (_DWORD)v11 - Size; if ( MaxCount ) continue; } return -1; } return (unsigned int)&v11[-v14]; } } } return v7; } //----- (00443B90) -------------------------------------------------------- unsigned int __userpurge std::string::find@( int *a1@, std::string **this, const std::string *a3, unsigned int a4) { unsigned int v5; // [esp+Ch] [ebp-10h] return std::string::find(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); } // 443BAB: variable 'v5' is possibly undefined //----- (00443BC0) -------------------------------------------------------- char *__userpurge std::string::find@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) { int v4; // esi int v5; // ebx unsigned int v6; // edx char *v7; // eax v4 = -1; v5 = *a1; v6 = *(_DWORD *)(*a1 - 12); if ( a3 < v6 ) { v7 = (char *)memchr((const void *)(v5 + a3), (char)this, v6 - a3); if ( v7 ) return &v7[-v5]; } return (char *)v4; } //----- (00443C10) -------------------------------------------------------- _DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)this; return result; } //----- (00443C20) -------------------------------------------------------- int __fastcall std::string::size(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (00443C30) -------------------------------------------------------- int __fastcall std::string::begin(int a1) { return *(_DWORD *)a1; } //----- (00443C40) -------------------------------------------------------- int __fastcall std::string::c_str(int a1) { return *(_DWORD *)a1; } //----- (00443C50) -------------------------------------------------------- _DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)this; return result; } //----- (00443C60) -------------------------------------------------------- bool __fastcall std::string::empty(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) == 0; } //----- (00443C70) -------------------------------------------------------- int __fastcall std::string::front(int a1) { return *(_DWORD *)a1; } //----- (00443C80) -------------------------------------------------------- int __userpurge std::string::rfind@(int *a1@, std::string *this, char *a3, unsigned int a4) { size_t v5; // eax unsigned int v7; // [esp+Ch] [ebp-10h] v5 = strlen((const char *)this); return std::string::rfind(a1, this, a3, v5, v7); } // 443CA4: variable 'v7' is possibly undefined //----- (00443CC0) -------------------------------------------------------- int __userpurge std::string::rfind@( int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5) { int v5; // ebx int v6; // edi size_t v7; // eax v5 = -1; v6 = *a1; v7 = *(_DWORD *)(*a1 - 12); if ( Size <= v7 ) { v5 = v7 - Size; if ( v7 - Size > (unsigned int)a3 ) v5 = (int)a3; if ( Size ) { while ( memcmp((const void *)(v6 + v5), this, Size) ) { if ( !v5 ) return -1; --v5; } } } return v5; } // 443D0D: conditional instruction was optimized away because %arg_8.4!=0 //----- (00443D40) -------------------------------------------------------- int __userpurge std::string::rfind@(int *a1@, std::string **this, const std::string *a3, unsigned int a4) { unsigned int v5; // [esp+Ch] [ebp-10h] return std::string::rfind(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); } // 443D5B: variable 'v5' is possibly undefined //----- (00443D70) -------------------------------------------------------- int __userpurge std::string::rfind@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) { int result; // eax int v5; // ebx result = -1; v5 = *(_DWORD *)(*a1 - 12); if ( v5 ) { result = v5 - 1; if ( v5 - 1 > a3 ) result = a3; do { if ( *(_BYTE *)(*a1 + result) == (_BYTE)this ) break; --result; } while ( result != -1 ); } return result; } //----- (00443DB0) -------------------------------------------------------- int __fastcall std::string::_M_rep(_DWORD *a1) { return *a1 - 12; } //----- (00443DC0) -------------------------------------------------------- int __fastcall std::string::cbegin(int a1) { return *(_DWORD *)a1; } //----- (00443DD0) -------------------------------------------------------- int __fastcall std::string::length(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (00443DE0) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; return result; } //----- (00443DF0) -------------------------------------------------------- _DWORD *__thiscall std::string::substr(_DWORD *ecx0, std::string *this, std::string *a3, unsigned int a4) { unsigned int v6; // [esp+Ch] [ebp-10h] if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::substr", (size_t)a3, *(_DWORD *)(*(_DWORD *)this - 12)); std::string::string(ecx0, this, a3, a4, v6); return ecx0; } // 443E18: variable 'v6' is possibly undefined //----- (00443E50) -------------------------------------------------------- int __fastcall std::string::_M_data(int a1) { return *(_DWORD *)a1; } //----- (00443E60) -------------------------------------------------------- int __fastcall std::string::_M_iend(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) + *a1; } //----- (00443E70) -------------------------------------------------------- int __userpurge std::string::compare@(const void **a1@, std::string *this, const char *a3) { const void *v3; // ebp size_t v4; // esi size_t Size; // eax size_t v6; // ebx int result; // eax v3 = *a1; v4 = *((_DWORD *)*a1 - 3); Size = strlen((const char *)this); v6 = Size; if ( Size > v4 ) Size = v4; if ( !Size ) return v4 - v6; result = memcmp(v3, this, Size); if ( !result ) return v4 - v6; return result; } //----- (00443EC0) -------------------------------------------------------- int __userpurge std::string::compare@(const void **a1@, const void **this, const std::string *a3) { size_t v3; // esi size_t Size; // eax size_t v5; // ebx int result; // eax v3 = *((_DWORD *)*a1 - 3); Size = v3; v5 = *((_DWORD *)*this - 3); if ( v5 <= v3 ) Size = *((_DWORD *)*this - 3); if ( !Size ) return v3 - v5; result = memcmp(*a1, *this, Size); if ( !result ) return v3 - v5; return result; } //----- (00443F00) -------------------------------------------------------- int __userpurge std::string::compare@( int *a1@, std::string *this, unsigned int a3, char *Str, const char *a5) { int v5; // ebp unsigned int v6; // ebx unsigned int v7; // ebx size_t Size; // eax size_t v9; // esi int result; // eax v5 = *a1; v6 = *(_DWORD *)(*a1 - 12); if ( (unsigned int)this > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", (size_t)this, *(_DWORD *)(*a1 - 12)); v7 = v6 - (_DWORD)this; if ( v7 > a3 ) v7 = a3; Size = strlen(Str); v9 = Size; if ( Size > v7 ) Size = v7; if ( !Size ) return v7 - v9; result = memcmp((char *)this + v5, Str, Size); if ( !result ) return v7 - v9; return result; } //----- (00443F90) -------------------------------------------------------- int __userpurge std::string::compare@( int *a1@, std::string *this, const char *a3, void *Buf2, const char *a5, unsigned int a6) { int v6; // eax unsigned int v7; // ebx unsigned int v8; // ebx const char *Size; // ecx int result; // eax v6 = *a1; v7 = *(_DWORD *)(*a1 - 12); if ( (unsigned int)this > v7 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", (size_t)this, *(_DWORD *)(*a1 - 12)); v8 = v7 - (_DWORD)this; if ( v8 > (unsigned int)a3 ) { v8 = (unsigned int)a3; Size = a3; if ( a3 <= a5 ) goto LABEL_4; goto LABEL_8; } Size = (const char *)v8; if ( v8 > (unsigned int)a5 ) LABEL_8: Size = a5; LABEL_4: if ( !Size ) return v8 - (_DWORD)a5; result = memcmp((char *)this + v6, Buf2, (size_t)Size); if ( !result ) return v8 - (_DWORD)a5; return result; } //----- (00444020) -------------------------------------------------------- int __userpurge std::string::compare@( int *a1@, std::string *this, unsigned int a3, const void **a4, const std::string *a5) { int v5; // eax unsigned int v6; // ebx unsigned int v7; // ebx const void *Buf2; // edi unsigned int v9; // esi size_t Size; // ecx int result; // eax v5 = *a1; v6 = *(_DWORD *)(*a1 - 12); if ( (unsigned int)this > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", (size_t)this, *(_DWORD *)(*a1 - 12)); v7 = v6 - (_DWORD)this; if ( v7 > a3 ) { v7 = a3; Buf2 = *a4; v9 = *((_DWORD *)*a4 - 3); Size = v9; if ( v9 <= a3 ) goto LABEL_4; goto LABEL_8; } Buf2 = *a4; v9 = *((_DWORD *)*a4 - 3); Size = v9; if ( v9 > v7 ) LABEL_8: Size = v7; LABEL_4: if ( !Size ) return v7 - v9; result = memcmp((char *)this + v5, Buf2, Size); if ( !result ) return v7 - v9; return result; } //----- (004440B0) -------------------------------------------------------- int __userpurge std::string::compare@( int *a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, size_t a6, unsigned int a7) { int v7; // eax unsigned int v8; // esi unsigned int v9; // ebx unsigned int v10; // esi unsigned int v11; // ebx size_t Size; // ebp int result; // eax v7 = *a1; v8 = *(_DWORD *)(*a1 - 12); if ( (unsigned int)this > v8 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", (size_t)this, *(_DWORD *)(v7 - 12)); v9 = *(_DWORD *)(*a4 - 12); if ( (unsigned int)a5 > v9 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", (size_t)a5, *(_DWORD *)(*a4 - 12)); v10 = v8 - (_DWORD)this; if ( v10 <= a3 ) { v11 = v9 - (_DWORD)a5; if ( v11 <= a6 ) goto LABEL_5; LABEL_11: v11 = a6; Size = a6; if ( a6 <= v10 ) goto LABEL_6; goto LABEL_10; } v10 = a3; v11 = v9 - (_DWORD)a5; if ( v11 > a6 ) goto LABEL_11; LABEL_5: Size = v11; if ( v11 > v10 ) LABEL_10: Size = v10; LABEL_6: if ( !Size ) return v10 - v11; result = memcmp((char *)this + v7, (char *)a5 + *a4, Size); if ( !result ) return v10 - v11; return result; } //----- (00444180) -------------------------------------------------------- _DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; return result; } //----- (00444190) -------------------------------------------------------- std::string *__userpurge std::string::_M_check@( _DWORD *a1@, std::string *this, const char *a3, const char *a4) { std::string *result; // eax unsigned int v5; // edx result = this; v5 = *(_DWORD *)(*a1 - 12); if ( v5 < (unsigned int)this ) std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, (size_t)this, v5); return result; } //----- (004441D0) -------------------------------------------------------- unsigned int __userpurge std::string::_M_limit@( _DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) { unsigned int result; // eax result = *(_DWORD *)(*a1 - 12) - (_DWORD)this; if ( result > a3 ) return a3; return result; } //----- (004441F0) -------------------------------------------------------- int __fastcall std::string::capacity(_DWORD *a1) { return *(_DWORD *)(*a1 - 8); } //----- (00444200) -------------------------------------------------------- int std::string::max_size() { return 1073741820; } //----- (00444210) -------------------------------------------------------- int __fastcall std::string::_M_ibegin(int a1) { return *(_DWORD *)a1; } //----- (00444220) -------------------------------------------------------- int __thiscall std::string::operator[](_DWORD *this, int a2) { return a2 + *this; } //----- (00444230) -------------------------------------------------------- const char *std::bad_typeid::what() { return "std::bad_typeid"; } //----- (00444240) -------------------------------------------------------- int __fastcall std::error_code::default_error_condition(int a1) { return (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(a1 + 4) + 20))(*(_DWORD *)(a1 + 4), *(_DWORD *)a1); } //----- (00444260) -------------------------------------------------------- int __fastcall std::moneypunct::neg_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 40); if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) return *(_DWORD *)(a1[2] + 52); else return v1(); } //----- (00444280) -------------------------------------------------------- int __fastcall std::moneypunct::pos_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 36); if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) return *(_DWORD *)(a1[2] + 48); else return v1(); } //----- (004442A0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) std::string::string(this, *(char **)(a2[2] + 20), (int)v5); else v3(a2); return this; } // 4442A0: using guessed type int var_D[3]; //----- (00444300) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); return this; } // 444300: using guessed type int var_D[3]; //----- (00444330) -------------------------------------------------------- int __fastcall std::moneypunct::frac_digits(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 32); if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) return *(_DWORD *)(a1[2] + 44); else return v1(); } //----- (00444350) -------------------------------------------------------- int __fastcall std::moneypunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) return *(unsigned __int8 *)(a1[2] + 17); else return v1(); } //----- (00444370) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (00444380) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00444390) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) std::string::string(this, *(char **)(a2[2] + 36), (int)v5); else v3(a2); return this; } // 444390: using guessed type int var_D[3]; //----- (004443F0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) std::string::string(this, *(char **)(a2[2] + 28), (int)v5); else v3(a2); return this; } // 4443F0: using guessed type int var_D[3]; //----- (00444450) -------------------------------------------------------- int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) return *(unsigned __int8 *)(a1[2] + 18); else return v1(); } //----- (00444470) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); return this; } // 444470: using guessed type int var_D[3]; //----- (004444A0) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (004444B0) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (004444C0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 36), (int)v4); return this; } // 4444C0: using guessed type int var_D[3]; //----- (004444F0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); return this; } // 4444F0: using guessed type int var_D[3]; //----- (00444520) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00444530) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) std::string::string(this, *(char **)(a2[2] + 8), (int)v5); else v3(a2); return this; } // 444530: using guessed type int var_D[3]; //----- (00444590) -------------------------------------------------------- int __fastcall std::moneypunct::neg_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 40); if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) return *(_DWORD *)(a1[2] + 52); else return v1(); } //----- (004445B0) -------------------------------------------------------- int __fastcall std::moneypunct::pos_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 36); if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) return *(_DWORD *)(a1[2] + 48); else return v1(); } //----- (004445D0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) std::string::string(this, *(char **)(a2[2] + 20), (int)v5); else v3(a2); return this; } // 4445D0: using guessed type int var_D[3]; //----- (00444630) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); return this; } // 444630: using guessed type int var_D[3]; //----- (00444660) -------------------------------------------------------- int __fastcall std::moneypunct::frac_digits(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 32); if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) return *(_DWORD *)(a1[2] + 44); else return v1(); } //----- (00444680) -------------------------------------------------------- int __fastcall std::moneypunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) return *(unsigned __int8 *)(a1[2] + 17); else return v1(); } //----- (004446A0) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (004446B0) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (004446C0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) std::string::string(this, *(char **)(a2[2] + 36), (int)v5); else v3(a2); return this; } // 4446C0: using guessed type int var_D[3]; //----- (00444720) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) std::string::string(this, *(char **)(a2[2] + 28), (int)v5); else v3(a2); return this; } // 444720: using guessed type int var_D[3]; //----- (00444780) -------------------------------------------------------- int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) return *(unsigned __int8 *)(a1[2] + 18); else return v1(); } //----- (004447A0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); return this; } // 4447A0: using guessed type int var_D[3]; //----- (004447D0) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (004447E0) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (004447F0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 36), (int)v4); return this; } // 4447F0: using guessed type int var_D[3]; //----- (00444820) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); return this; } // 444820: using guessed type int var_D[3]; //----- (00444850) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00444860) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) std::string::string(this, *(char **)(a2[2] + 8), (int)v5); else v3(a2); return this; } // 444860: using guessed type int var_D[3]; //----- (004448C0) -------------------------------------------------------- int __fastcall std::moneypunct::neg_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 40); if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) return *(_DWORD *)(a1[2] + 56); else return v1(); } //----- (004448E0) -------------------------------------------------------- int __fastcall std::moneypunct::pos_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 36); if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) return *(_DWORD *)(a1[2] + 52); else return v1(); } //----- (00444900) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 24), (int)v5); else v3(a2); return this; } // 444900: using guessed type int var_D[3]; //----- (00444960) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); return this; } // 444960: using guessed type int var_D[3]; //----- (00444990) -------------------------------------------------------- int __fastcall std::moneypunct::frac_digits(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 32); if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) return *(_DWORD *)(a1[2] + 48); else return v1(); } //----- (004449B0) -------------------------------------------------------- int __fastcall std::moneypunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) return *(unsigned __int16 *)(a1[2] + 18); else return v1(); } //----- (004449D0) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (004449E0) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (004449F0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 40), (int)v5); else v3(a2); return this; } // 4449F0: using guessed type int var_D[3]; //----- (00444A50) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 32), (int)v5); else v3(a2); return this; } // 444A50: using guessed type int var_D[3]; //----- (00444AB0) -------------------------------------------------------- int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) return *(unsigned __int16 *)(a1[2] + 20); else return v1(); } //----- (00444AD0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24), (int)v4); return this; } // 444AD0: using guessed type int var_D[3]; //----- (00444B00) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00444B10) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00444B20) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40), (int)v4); return this; } // 444B20: using guessed type int var_D[3]; //----- (00444B50) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32), (int)v4); return this; } // 444B50: using guessed type int var_D[3]; //----- (00444B80) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (00444B90) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) std::string::string(this, *(char **)(a2[2] + 8), (int)v5); else v3(a2); return this; } // 444B90: using guessed type int var_D[3]; //----- (00444BF0) -------------------------------------------------------- int __fastcall std::moneypunct::neg_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 40); if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) return *(_DWORD *)(a1[2] + 56); else return v1(); } //----- (00444C10) -------------------------------------------------------- int __fastcall std::moneypunct::pos_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 36); if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) return *(_DWORD *)(a1[2] + 52); else return v1(); } //----- (00444C30) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 24), (int)v5); else v3(a2); return this; } // 444C30: using guessed type int var_D[3]; //----- (00444C90) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); return this; } // 444C90: using guessed type int var_D[3]; //----- (00444CC0) -------------------------------------------------------- int __fastcall std::moneypunct::frac_digits(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 32); if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) return *(_DWORD *)(a1[2] + 48); else return v1(); } //----- (00444CE0) -------------------------------------------------------- int __fastcall std::moneypunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) return *(unsigned __int16 *)(a1[2] + 18); else return v1(); } //----- (00444D00) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (00444D10) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (00444D20) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 40), (int)v5); else v3(a2); return this; } // 444D20: using guessed type int var_D[3]; //----- (00444D80) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 32), (int)v5); else v3(a2); return this; } // 444D80: using guessed type int var_D[3]; //----- (00444DE0) -------------------------------------------------------- int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) return *(unsigned __int16 *)(a1[2] + 20); else return v1(); } //----- (00444E00) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24), (int)v4); return this; } // 444E00: using guessed type int var_D[3]; //----- (00444E30) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00444E40) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00444E50) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40), (int)v4); return this; } // 444E50: using guessed type int var_D[3]; //----- (00444E80) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32), (int)v4); return this; } // 444E80: using guessed type int var_D[3]; //----- (00444EB0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (00444EC0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) std::string::string(this, *(char **)(a2[2] + 8), (int)v5); else v3(a2); return this; } // 444EC0: using guessed type int var_D[3]; //----- (00444F30) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2) { int v2; // edx _DWORD *result; // eax v2 = this[2]; result = a2; *a2 = *(_DWORD *)(v2 + 8); a2[1] = *(_DWORD *)(v2 + 12); return result; } //----- (00444F50) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2) { int v2; // edx _DWORD *result; // eax v2 = this[2]; result = a2; *a2 = *(_DWORD *)(v2 + 16); a2[1] = *(_DWORD *)(v2 + 20); return result; } //----- (00444F70) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2) { _DWORD *v2; // edx _DWORD *result; // eax v2 = (_DWORD *)this[2]; result = a2; *a2 = v2[18]; a2[1] = v2[19]; a2[2] = v2[20]; a2[3] = v2[21]; a2[4] = v2[22]; a2[5] = v2[23]; a2[6] = v2[24]; return result; } //----- (00444FB0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2) { int v2; // edx _DWORD *result; // eax v2 = this[2]; result = a2; *a2 = *(_DWORD *)(v2 + 24); a2[1] = *(_DWORD *)(v2 + 28); return result; } //----- (00444FD0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2) { _DWORD *v2; // edx _DWORD *result; // eax v2 = (_DWORD *)this[2]; result = a2; *a2 = v2[37]; a2[1] = v2[38]; a2[2] = v2[39]; a2[3] = v2[40]; a2[4] = v2[41]; a2[5] = v2[42]; a2[6] = v2[43]; a2[7] = v2[44]; a2[8] = v2[45]; a2[9] = v2[46]; a2[10] = v2[47]; a2[11] = v2[48]; return result; } //----- (00445050) -------------------------------------------------------- void __thiscall std::__timepunct::_M_put( const char **this, char *Buffer, size_t SizeInBytes, char *Format, struct tm *Tm) { char *v6; // ebx unsigned int Size; // esi void *Locale; // ebp size_t v9; // ebx v6 = setlocale(0, 0); Size = strlen(v6) + 1; Locale = (void *)operator new[](Size); memcpy(Locale, v6, Size); setlocale(0, this[4]); v9 = strftime(Buffer, SizeInBytes, Format, Tm); setlocale(0, (const char *)Locale); operator delete[](Locale); if ( !v9 ) *Buffer = 0; } //----- (00445100) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2) { _DWORD *v2; // edx _DWORD *result; // eax v2 = (_DWORD *)this[2]; result = a2; *a2 = v2[11]; a2[1] = v2[12]; a2[2] = v2[13]; a2[3] = v2[14]; a2[4] = v2[15]; a2[5] = v2[16]; a2[6] = v2[17]; return result; } //----- (00445140) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2) { int v2; // edx _DWORD *result; // eax v2 = this[2]; result = a2; *a2 = *(_DWORD *)(v2 + 32); a2[1] = *(_DWORD *)(v2 + 36); return result; } //----- (00445160) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2) { _DWORD *v2; // edx _DWORD *result; // eax v2 = (_DWORD *)this[2]; result = a2; *a2 = v2[25]; a2[1] = v2[26]; a2[2] = v2[27]; a2[3] = v2[28]; a2[4] = v2[29]; a2[5] = v2[30]; a2[6] = v2[31]; a2[7] = v2[32]; a2[8] = v2[33]; a2[9] = v2[34]; a2[10] = v2[35]; a2[11] = v2[36]; return result; } //----- (004451D0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2) { int v2; // edx _DWORD *result; // eax v2 = this[2]; result = a2; *a2 = *(_DWORD *)(v2 + 8); a2[1] = *(_DWORD *)(v2 + 12); return result; } //----- (004451F0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2) { int v2; // edx _DWORD *result; // eax v2 = this[2]; result = a2; *a2 = *(_DWORD *)(v2 + 16); a2[1] = *(_DWORD *)(v2 + 20); return result; } //----- (00445210) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2) { _DWORD *v2; // edx _DWORD *result; // eax v2 = (_DWORD *)this[2]; result = a2; *a2 = v2[18]; a2[1] = v2[19]; a2[2] = v2[20]; a2[3] = v2[21]; a2[4] = v2[22]; a2[5] = v2[23]; a2[6] = v2[24]; return result; } //----- (00445250) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2) { int v2; // edx _DWORD *result; // eax v2 = this[2]; result = a2; *a2 = *(_DWORD *)(v2 + 24); a2[1] = *(_DWORD *)(v2 + 28); return result; } //----- (00445270) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2) { _DWORD *v2; // edx _DWORD *result; // eax v2 = (_DWORD *)this[2]; result = a2; *a2 = v2[37]; a2[1] = v2[38]; a2[2] = v2[39]; a2[3] = v2[40]; a2[4] = v2[41]; a2[5] = v2[42]; a2[6] = v2[43]; a2[7] = v2[44]; a2[8] = v2[45]; a2[9] = v2[46]; a2[10] = v2[47]; a2[11] = v2[48]; return result; } //----- (004452F0) -------------------------------------------------------- void __thiscall std::__timepunct::_M_put( const char **this, wchar_t *Buffer, size_t SizeInWords, wchar_t *Format, struct tm *Tm) { char *v6; // ebx unsigned int Size; // esi void *Locale; // ebp size_t v9; // ebx v6 = setlocale(0, 0); Size = strlen(v6) + 1; Locale = (void *)operator new[](Size); memcpy(Locale, v6, Size); setlocale(0, this[4]); v9 = wcsftime(Buffer, SizeInWords, Format, Tm); setlocale(0, (const char *)Locale); operator delete[](Locale); if ( !v9 ) *Buffer = 0; } //----- (004453B0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2) { _DWORD *v2; // edx _DWORD *result; // eax v2 = (_DWORD *)this[2]; result = a2; *a2 = v2[11]; a2[1] = v2[12]; a2[2] = v2[13]; a2[3] = v2[14]; a2[4] = v2[15]; a2[5] = v2[16]; a2[6] = v2[17]; return result; } //----- (004453F0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2) { int v2; // edx _DWORD *result; // eax v2 = this[2]; result = a2; *a2 = *(_DWORD *)(v2 + 32); a2[1] = *(_DWORD *)(v2 + 36); return result; } //----- (00445410) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2) { _DWORD *v2; // edx _DWORD *result; // eax v2 = (_DWORD *)this[2]; result = a2; *a2 = v2[25]; a2[1] = v2[26]; a2[2] = v2[27]; a2[3] = v2[28]; a2[4] = v2[29]; a2[5] = v2[30]; a2[6] = v2[31]; a2[7] = v2[32]; a2[8] = v2[33]; a2[9] = v2[34]; a2[10] = v2[35]; a2[11] = v2[36]; return result; } //----- (00445470) -------------------------------------------------------- int __stdcall std::__use_cache>::operator()(int *a1) { int v1; // ebx int v2; // edi int result; // eax _DWORD *v4; // eax void (__cdecl *v5)(void *); // [esp+4h] [ebp-34h] unsigned int v6; // [esp+8h] [ebp-30h] std::locale::_Impl *v7; // [esp+1Ch] [ebp-1Ch] v1 = std::locale::id::_M_id(&std::numpunct::id); v2 = *(_DWORD *)(*a1 + 12) + 4 * v1; result = *(_DWORD *)v2; if ( !*(_DWORD *)v2 ) { v4 = operator new((struct type_info *)0x68, v5); v4[1] = 0; *v4 = &off_4F65A0; v4[2] = 0; v4[3] = 0; *((_BYTE *)v4 + 16) = 0; v4[5] = 0; v4[6] = 0; v4[7] = 0; v4[8] = 0; *((_WORD *)v4 + 18) = 0; *((_BYTE *)v4 + 100) = 0; v7 = (std::locale::_Impl *)v4; std::__numpunct_cache::_M_cache((int)v4, (int)a1); std::locale::_Impl::_M_install_cache(*a1, v7, (const std::locale::facet *)v1, v6); return *(_DWORD *)v2; } return result; } // 4454A7: variable 'v5' is possibly undefined // 44550D: variable 'v6' is possibly undefined // 4E9608: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (00445560) -------------------------------------------------------- int __stdcall std::__use_cache>::operator()(int *a1) { int v1; // ebx int v2; // edi int result; // eax _DWORD *v4; // eax void (__cdecl *v5)(void *); // [esp+4h] [ebp-34h] unsigned int v6; // [esp+8h] [ebp-30h] std::locale::_Impl *v7; // [esp+1Ch] [ebp-1Ch] v1 = std::locale::id::_M_id(&std::numpunct::id); v2 = *(_DWORD *)(*a1 + 12) + 4 * v1; result = *(_DWORD *)v2; if ( !*(_DWORD *)v2 ) { v4 = operator new((struct type_info *)0xA8, v5); v4[1] = 0; *v4 = &off_4F65B0; v4[2] = 0; v4[3] = 0; *((_BYTE *)v4 + 16) = 0; v4[5] = 0; v4[6] = 0; v4[7] = 0; v4[8] = 0; v4[9] = 0; *((_BYTE *)v4 + 164) = 0; v7 = (std::locale::_Impl *)v4; std::__numpunct_cache::_M_cache((int)v4, (int)a1); std::locale::_Impl::_M_install_cache(*a1, v7, (const std::locale::facet *)v1, v6); return *(_DWORD *)v2; } return result; } // 445597: variable 'v5' is possibly undefined // 445601: variable 'v6' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (00445650) -------------------------------------------------------- int __fastcall std::logic_error::what(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00445660) -------------------------------------------------------- bool __fastcall std::__basic_file::is_open(_DWORD *a1) { return *a1 != 0; } //----- (00445670) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( int *this, int a2, int a3, int a4, int a5) { int v6; // [esp+0h] [ebp-2Ch] LOBYTE(v6) = 0; return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); } // 44569E: variable 'v6' is possibly undefined //----- (004456B0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( int *this, int a2, int a3, int a4, int a5) { int v6; // [esp+0h] [ebp-2Ch] LOBYTE(v6) = 0; return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); } // 4456DE: variable 'v6' is possibly undefined //----- (004456F0) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( _DWORD *this, int a2, int a3, int a4) { int v6; // [esp+0h] [ebp-48h] char v7; // [esp+23h] [ebp-25h] BYREF _BYTE *v8[6]; // [esp+24h] [ebp-24h] BYREF void (__cdecl *v9)(_BYTE **); // [esp+3Ch] [ebp-Ch] v9 = 0; LOBYTE(v6) = 0; std::__facet_shims::__collate_transform(v6, *(_DWORD *)(a2 + 12), v8, a3, a4); if ( !v9 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); std::string::string(this, v8[0], (int)v8[1], (int)&v7); if ( v9 ) v9(v8); return this; } // 445724: variable 'v6' is possibly undefined //----- (00445780) -------------------------------------------------------- void **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( void **this, int a2, std::string *a3, int a4) { unsigned __int8 *v5; // eax int v7; // [esp+0h] [ebp-48h] int v8; // [esp+8h] [ebp-40h] int v9[6]; // [esp+24h] [ebp-24h] BYREF void (__cdecl *v10)(int *); // [esp+3Ch] [ebp-Ch] v10 = 0; LOBYTE(v7) = 0; std::__facet_shims::__collate_transform(v7, *(_DWORD *)(a2 + 12), (int)v9, a3, a4); if ( !v10 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); v5 = (unsigned __int8 *)v9[0]; *this = this + 2; LOBYTE(v8) = 0; std::string::_M_construct(this, v5, (size_t)&v5[v9[1]], v8); if ( v10 ) v10(v9); return this; } // 4457B4: variable 'v7' is possibly undefined // 4457DB: variable 'v8' is possibly undefined //----- (00445810) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( int *this, int a2, int a3, int a4, int a5) { int v6; // [esp+0h] [ebp-2Ch] LOBYTE(v6) = 0; return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); } // 44583E: variable 'v6' is possibly undefined //----- (00445850) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( int *this, int a2, int a3, int a4, int a5) { int v6; // [esp+0h] [ebp-2Ch] LOBYTE(v6) = 0; return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); } // 44587E: variable 'v6' is possibly undefined //----- (00445890) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( _DWORD *this, int a2, int a3, int a4) { int v6; // [esp+0h] [ebp-48h] char v7; // [esp+23h] [ebp-25h] BYREF const wchar_t *v8[6]; // [esp+24h] [ebp-24h] BYREF void (__cdecl *v9)(const wchar_t **); // [esp+3Ch] [ebp-Ch] v9 = 0; LOBYTE(v6) = 0; std::__facet_shims::__collate_transform(v6, *(_DWORD *)(a2 + 12), (int)v8, a3, a4); if ( !v9 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); std::wstring::basic_string(this, v8[0], (int)v8[1], (int)&v7); if ( v9 ) v9(v8); return this; } // 4458C4: variable 'v6' is possibly undefined //----- (00445920) -------------------------------------------------------- wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( wchar_t **this, int a2, int a3, int a4) { wchar_t *v5; // eax int v7; // [esp+0h] [ebp-48h] int v8; // [esp+8h] [ebp-40h] wchar_t *v9[6]; // [esp+24h] [ebp-24h] BYREF void (__cdecl *v10)(wchar_t **); // [esp+3Ch] [ebp-Ch] v10 = 0; LOBYTE(v7) = 0; std::__facet_shims::__collate_transform(v7, *(_DWORD *)(a2 + 12), v9, a3, a4); if ( !v10 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); v5 = v9[0]; *this = (wchar_t *)(this + 2); LOBYTE(v8) = 0; std::wstring::_M_construct(this, v5, (int)&v5[(int)v9[1]], v8); if ( v10 ) v10(v9); return this; } // 445954: variable 'v7' is possibly undefined // 44597C: variable 'v8' is possibly undefined //----- (004459B0) -------------------------------------------------------- void **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( void **this, int a2, std::string *a3, int a4, int a5, int a6) { unsigned __int8 *v7; // eax int v9; // [esp+0h] [ebp-48h] int v10; // [esp+8h] [ebp-40h] int v11[6]; // [esp+24h] [ebp-24h] BYREF void (__cdecl *v12)(int *); // [esp+3Ch] [ebp-Ch] v12 = 0; LOBYTE(v9) = 0; std::__facet_shims::__messages_get( v9, *(_DWORD *)(a2 + 16), (int)v11, a3, a4, a5, *(_BYTE **)a6, *(_DWORD *)(a6 + 4)); if ( !v12 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); v7 = (unsigned __int8 *)v11[0]; *this = this + 2; LOBYTE(v10) = 0; std::string::_M_construct(this, v7, (size_t)&v7[v11[1]], v10); if ( v12 ) v12(v11); return this; } // 4459FB: variable 'v9' is possibly undefined // 445A22: variable 'v10' is possibly undefined //----- (00445A60) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 **a6) { int v8; // [esp+0h] [ebp-48h] char v9; // [esp+23h] [ebp-25h] BYREF _BYTE *v10[6]; // [esp+24h] [ebp-24h] BYREF void (__cdecl *v11)(_BYTE **); // [esp+3Ch] [ebp-Ch] v11 = 0; LOBYTE(v8) = 0; std::__facet_shims::__messages_get(v8, *(_DWORD *)(a2 + 16), v10, a3, a4, a5, *a6, *((_DWORD *)*a6 - 3)); if ( !v11 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); std::string::string(this, v10[0], (int)v10[1], (int)&v9); if ( v11 ) v11(v10); return this; } // 445AAB: variable 'v8' is possibly undefined //----- (00445B00) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3) { int v4; // [esp+0h] [ebp-2Ch] LOBYTE(v4) = 0; return std::__facet_shims::__messages_open(v4, this[4], *(_BYTE **)a2, *(_DWORD *)(a2 + 4), a3); } // 445B27: variable 'v4' is possibly undefined //----- (00445B40) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( int *this, unsigned __int8 **a2, int a3) { int v4; // [esp+0h] [ebp-2Ch] LOBYTE(v4) = 0; return std::__facet_shims::__messages_open(v4, this[4], *a2, *((_DWORD *)*a2 - 3), a3); } // 445B67: variable 'v4' is possibly undefined //----- (00445B80) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) { int v3; // [esp+0h] [ebp-1Ch] LOBYTE(v3) = 0; return std::__facet_shims::__messages_close(v3, this[4], a2); } // 445B96: variable 'v3' is possibly undefined //----- (00445BB0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) { int v3; // [esp+0h] [ebp-1Ch] LOBYTE(v3) = 0; return std::__facet_shims::__messages_close(v3, this[4], a2); } // 445BC6: variable 'v3' is possibly undefined //----- (00445BE0) -------------------------------------------------------- wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( wchar_t **this, int a2, int a3, int a4, int a5, int a6) { wchar_t *v7; // eax int v9; // [esp+0h] [ebp-48h] int v10; // [esp+8h] [ebp-40h] wchar_t *v11[6]; // [esp+24h] [ebp-24h] BYREF void (__cdecl *v12)(wchar_t **); // [esp+3Ch] [ebp-Ch] v12 = 0; LOBYTE(v9) = 0; std::__facet_shims::__messages_get( v9, *(_DWORD *)(a2 + 16), v11, a3, a4, a5, *(const wchar_t **)a6, *(_DWORD *)(a6 + 4)); if ( !v12 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); v7 = v11[0]; *this = (wchar_t *)(this + 2); LOBYTE(v10) = 0; std::wstring::_M_construct(this, v7, (int)&v7[(int)v11[1]], v10); if ( v12 ) v12(v11); return this; } // 445C2B: variable 'v9' is possibly undefined // 445C53: variable 'v10' is possibly undefined //----- (00445C90) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, wchar_t **a6) { int v8; // [esp+0h] [ebp-48h] char v9; // [esp+23h] [ebp-25h] BYREF const wchar_t *v10[6]; // [esp+24h] [ebp-24h] BYREF void (__cdecl *v11)(const wchar_t **); // [esp+3Ch] [ebp-Ch] v11 = 0; LOBYTE(v8) = 0; std::__facet_shims::__messages_get(v8, *(_DWORD *)(a2 + 16), (int)v10, a3, a4, a5, *a6, *((_DWORD *)*a6 - 3)); if ( !v11 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); std::wstring::basic_string(this, v10[0], (int)v10[1], (int)&v9); if ( v11 ) v11(v10); return this; } // 445CDB: variable 'v8' is possibly undefined //----- (00445D30) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3) { int v4; // [esp+0h] [ebp-2Ch] LOBYTE(v4) = 0; return std::__facet_shims::__messages_open(v4, this[4], *(_BYTE **)a2, *(_DWORD *)(a2 + 4), a3); } // 445D57: variable 'v4' is possibly undefined //----- (00445D70) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( int *this, unsigned __int8 **a2, int a3) { int v4; // [esp+0h] [ebp-2Ch] LOBYTE(v4) = 0; return std::__facet_shims::__messages_open(v4, this[4], *a2, *((_DWORD *)*a2 - 3), a3); } // 445D97: variable 'v4' is possibly undefined //----- (00445DB0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) { int v3; // [esp+0h] [ebp-1Ch] LOBYTE(v3) = 0; return std::__facet_shims::__messages_close(v3, this[4], a2); } // 445DC6: variable 'v3' is possibly undefined //----- (00445DE0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) { int v3; // [esp+0h] [ebp-1Ch] LOBYTE(v3) = 0; return std::__facet_shims::__messages_close(v3, this[4], a2); } // 445DF6: variable 'v3' is possibly undefined //----- (00445E10) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); } // 445E5E: variable 'v9' is possibly undefined //----- (00445E70) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); } // 445EBE: variable 'v9' is possibly undefined //----- (00445ED0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); } // 445F1E: variable 'v9' is possibly undefined //----- (00445F30) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); } // 445F7E: variable 'v9' is possibly undefined //----- (00445F90) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); } // 445FDE: variable 'v9' is possibly undefined //----- (00445FF0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); } // 44603E: variable 'v9' is possibly undefined //----- (00446050) -------------------------------------------------------- int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) { int v2; // [esp+0h] [ebp-1Ch] LOBYTE(v2) = 0; return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); } // 44605E: variable 'v2' is possibly undefined //----- (00446070) -------------------------------------------------------- int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) { int v2; // [esp+0h] [ebp-1Ch] LOBYTE(v2) = 0; return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); } // 44607E: variable 'v2' is possibly undefined //----- (00446090) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); } // 4460DE: variable 'v9' is possibly undefined //----- (004460F0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); } // 44613E: variable 'v9' is possibly undefined //----- (00446150) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); } // 44619E: variable 'v9' is possibly undefined //----- (004461B0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); } // 4461FE: variable 'v9' is possibly undefined //----- (00446210) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); } // 44625E: variable 'v9' is possibly undefined //----- (00446270) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); } // 4462BE: variable 'v9' is possibly undefined //----- (004462D0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); } // 44631E: variable 'v9' is possibly undefined //----- (00446330) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); } // 44637E: variable 'v9' is possibly undefined //----- (00446390) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); } // 4463DE: variable 'v9' is possibly undefined //----- (004463F0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); } // 44643E: variable 'v9' is possibly undefined //----- (00446450) -------------------------------------------------------- int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) { int v2; // [esp+0h] [ebp-1Ch] LOBYTE(v2) = 0; return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); } // 44645E: variable 'v2' is possibly undefined //----- (00446470) -------------------------------------------------------- int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) { int v2; // [esp+0h] [ebp-1Ch] LOBYTE(v2) = 0; return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); } // 44647E: variable 'v2' is possibly undefined //----- (00446490) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); } // 4464DE: variable 'v9' is possibly undefined //----- (004464F0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); } // 44653E: variable 'v9' is possibly undefined //----- (00446550) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); } // 44659E: variable 'v9' is possibly undefined //----- (004465B0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { int v9; // [esp+0h] [ebp-3Ch] LOBYTE(v9) = 0; return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); } // 4465FE: variable 'v9' is possibly undefined //----- (00446610) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, int a2, std::string *a3, int a4, int a5, unsigned __int8 a6, int a7, int *a8, int a9) { int v9; // esi void (__cdecl *v10)(int *); // eax int *v12; // eax int v13; // [esp+0h] [ebp-98h] int *v14; // [esp+4h] [ebp-94h] int v15; // [esp+8h] [ebp-90h] int v16; // [esp+30h] [ebp-68h] int v17; // [esp+34h] [ebp-64h] size_t Size; // [esp+38h] [ebp-60h] int v19; // [esp+48h] [ebp-50h] BYREF void *v20; // [esp+4Ch] [ebp-4Ch] BYREF size_t v21; // [esp+50h] [ebp-48h] int v22[4]; // [esp+54h] [ebp-44h] BYREF int v23[6]; // [esp+64h] [ebp-34h] BYREF void (__cdecl *v24)(int *); // [esp+7Ch] [ebp-1Ch] v24 = 0; LOBYTE(v13) = 0; v14 = (int *)this[2]; v19 = 0; v9 = std::__facet_shims::__money_get(v13, v14, a2, a3, a4, a5, a6, a7, &v19, 0, (int)v23); v10 = v24; if ( v19 ) { *a8 = v19; goto LABEL_3; } if ( !v24 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); LOBYTE(v15) = 0; v20 = v22; std::string::_M_construct(&v20, (unsigned __int8 *)v23[0], v23[0] + v23[1], v15); Size = v21; v12 = *(int **)a9; if ( v20 == v22 ) { if ( v21 ) { if ( v21 == 1 ) *(_BYTE *)v12 = v22[0]; else memcpy(*(void **)a9, v22, v21); Size = v21; v12 = *(int **)a9; } *(_DWORD *)(a9 + 4) = Size; *((_BYTE *)v12 + Size) = 0; v12 = (int *)v20; goto LABEL_11; } v17 = v22[0]; if ( v12 == (int *)(a9 + 8) ) { *(_DWORD *)a9 = v20; *(_DWORD *)(a9 + 4) = Size; *(_DWORD *)(a9 + 8) = v17; goto LABEL_15; } v16 = *(_DWORD *)(a9 + 8); *(_DWORD *)a9 = v20; *(_DWORD *)(a9 + 4) = Size; *(_DWORD *)(a9 + 8) = v17; if ( !v12 ) { LABEL_15: v20 = v22; v12 = v22; goto LABEL_11; } v20 = v12; v22[0] = v16; LABEL_11: v21 = 0; *(_BYTE *)v12 = 0; if ( v20 != v22 ) operator delete(v20); v10 = v24; LABEL_3: if ( v10 ) v10(v23); return v9; } // 446676: variable 'v13' is possibly undefined // 4466D0: variable 'v15' is possibly undefined //----- (004467E0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int *a9) { int v9; // esi void (__cdecl *v10)(_BYTE **); // eax int v12; // edx int v13; // [esp+0h] [ebp-88h] int *v14; // [esp+4h] [ebp-84h] std::string *v15; // [esp+4h] [ebp-84h] volatile signed __int32 *v16; // [esp+3Ch] [ebp-4Ch] char v17[5]; // [esp+4Bh] [ebp-3Dh] BYREF volatile signed __int32 *v18; // [esp+50h] [ebp-38h] BYREF _BYTE *v19[6]; // [esp+54h] [ebp-34h] BYREF void (__cdecl *v20)(_BYTE **); // [esp+6Ch] [ebp-1Ch] v20 = 0; LOBYTE(v13) = 0; v14 = (int *)this[2]; *(_DWORD *)&v17[1] = 0; v9 = std::__facet_shims::__money_get(v13, v14, a2, a3, a4, a5, a6, a7, &v17[1], 0, v19); v10 = v20; if ( *(_DWORD *)&v17[1] ) { *a8 = *(_DWORD *)&v17[1]; } else { if ( !v20 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); std::string::string(&v18, v19[0], (int)v19[1], (int)v17); std::string::swap(a9, (std::string *)&v18, v15); v16 = v18 - 3; if ( v18 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd(v18 - 1, 0xFFFFFFFF); } else { v12 = *((_DWORD *)v18 - 1); *((_DWORD *)v18 - 1) = v12 - 1; } if ( v12 <= 0 ) std::string::_Rep::_M_destroy((void *)v16, (int)v17); } v10 = v20; } if ( v10 ) v10(v19); return v9; } // 446843: variable 'v13' is possibly undefined // 4468A8: variable 'v15' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (00446920) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9) { int result; // eax int v10; // [esp+0h] [ebp-5Ch] int *v11; // [esp+4h] [ebp-58h] int v12; // [esp+3Ch] [ebp-20h] BYREF long double v13[2]; // [esp+40h] [ebp-1Ch] BYREF LOBYTE(v10) = 0; v11 = (int *)this[2]; v12 = 0; result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); if ( v12 ) *a8 = v12; else *a9 = v13[0]; return result; } // 446981: variable 'v10' is possibly undefined // 446920: using guessed type long double var_1C[2]; //----- (004469B0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, int a2, std::string *a3, int a4, int a5, unsigned __int8 a6, int a7, int *a8, long double *a9) { int result; // eax int v10; // [esp+0h] [ebp-5Ch] int *v11; // [esp+4h] [ebp-58h] int v12; // [esp+3Ch] [ebp-20h] BYREF long double v13[2]; // [esp+40h] [ebp-1Ch] BYREF LOBYTE(v10) = 0; v11 = (int *)this[2]; v12 = 0; result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); if ( v12 ) *a8 = v12; else *a9 = v13[0]; return result; } // 446A11: variable 'v10' is possibly undefined // 4469B0: using guessed type long double var_1C[2]; //----- (00446A40) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9) { int v9; // esi void (__cdecl *v10)(wchar_t **); // eax size_t v12; // edi wchar_t *v13; // eax wchar_t *v14; // edx int v15; // [esp+0h] [ebp-98h] int *v16; // [esp+4h] [ebp-94h] int v17; // [esp+8h] [ebp-90h] int v18; // [esp+30h] [ebp-68h] int v19; // [esp+34h] [ebp-64h] int v20; // [esp+48h] [ebp-50h] BYREF wchar_t *v21; // [esp+4Ch] [ebp-4Ch] BYREF size_t N; // [esp+50h] [ebp-48h] wchar_t S2[2]; // [esp+54h] [ebp-44h] BYREF wchar_t *v24[6]; // [esp+64h] [ebp-34h] BYREF void (__cdecl *v25)(wchar_t **); // [esp+7Ch] [ebp-1Ch] v25 = 0; LOBYTE(v15) = 0; v16 = (int *)this[2]; v20 = 0; v9 = std::__facet_shims::__money_get(v15, v16, a2, a3, a4, a5, a6, a7, &v20, 0, v24); v10 = v25; if ( v20 ) { *a8 = v20; goto LABEL_3; } if ( !v25 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); LOBYTE(v17) = 0; v21 = S2; std::wstring::_M_construct(&v21, v24[0], (int)&v24[0][(int)v24[1]], v17); v12 = N; v13 = *(wchar_t **)a9; if ( v21 == S2 ) { v14 = S2; if ( N ) { if ( N == 1 ) { *v13 = S2[0]; v14 = S2; } else { wmemcpy(v13, S2, N); v14 = v21; v12 = N; v13 = *(wchar_t **)a9; } } *(_DWORD *)(a9 + 4) = v12; v13[v12] = 0; v13 = v14; goto LABEL_11; } v19 = *(_DWORD *)S2; if ( v13 == (wchar_t *)(a9 + 8) ) { *(_DWORD *)a9 = v21; *(_DWORD *)(a9 + 4) = v12; *(_DWORD *)(a9 + 8) = v19; } else { v18 = *(_DWORD *)(a9 + 8); *(_DWORD *)a9 = v21; *(_DWORD *)(a9 + 4) = v12; *(_DWORD *)(a9 + 8) = v19; if ( v13 ) { v21 = v13; *(_DWORD *)S2 = v18; LABEL_11: N = 0; *v13 = 0; if ( v13 != S2 ) operator delete(v13); } } v10 = v25; LABEL_3: if ( v10 ) v10(v24); return v9; } // 446AA6: variable 'v15' is possibly undefined // 446B16: variable 'v17' is possibly undefined //----- (00446C00) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int *a9) { int v9; // esi void (__cdecl *v10)(const wchar_t **); // eax int v12; // edx int v13; // [esp+0h] [ebp-88h] int *v14; // [esp+4h] [ebp-84h] volatile signed __int32 *v15; // [esp+30h] [ebp-58h] char v16[5]; // [esp+4Bh] [ebp-3Dh] BYREF volatile signed __int32 *v17; // [esp+50h] [ebp-38h] BYREF const wchar_t *v18[6]; // [esp+54h] [ebp-34h] BYREF void (__cdecl *v19)(const wchar_t **); // [esp+6Ch] [ebp-1Ch] v19 = 0; LOBYTE(v13) = 0; v14 = (int *)this[2]; *(_DWORD *)&v16[1] = 0; v9 = std::__facet_shims::__money_get(v13, v14, a2, a3, a4, a5, a6, a7, &v16[1], 0, (int)v18); v10 = v19; if ( *(_DWORD *)&v16[1] ) { *a8 = *(_DWORD *)&v16[1]; } else { if ( !v19 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); std::wstring::basic_string(&v17, v18[0], (int)v18[1], (int)v16); std::wstring::swap(a9, (int *)&v17); v15 = v17 - 3; if ( v17 != (volatile signed __int32 *)&unk_4E93EC ) { if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd(v17 - 1, 0xFFFFFFFF); } else { v12 = *((_DWORD *)v17 - 1); *((_DWORD *)v17 - 1) = v12 - 1; } if ( v12 <= 0 ) std::wstring::_Rep::_M_destroy((void *)v15, (int)v16); } v10 = v19; } if ( v10 ) v10(v18); return v9; } // 446C63: variable 'v13' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (00446D50) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9) { int result; // eax int v10; // [esp+0h] [ebp-6Ch] int *v11; // [esp+4h] [ebp-68h] int v12; // [esp+4Ch] [ebp-20h] BYREF long double v13[2]; // [esp+50h] [ebp-1Ch] BYREF LOBYTE(v10) = 0; v11 = (int *)this[2]; v12 = 0; result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); if ( v12 ) *a8 = v12; else *a9 = v13[0]; return result; } // 446DBB: variable 'v10' is possibly undefined // 446D50: using guessed type long double var_1C[2]; //----- (00446E10) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9) { int result; // eax int v10; // [esp+0h] [ebp-6Ch] int *v11; // [esp+4h] [ebp-68h] int v12; // [esp+4Ch] [ebp-20h] BYREF long double v13[2]; // [esp+50h] [ebp-1Ch] BYREF LOBYTE(v10) = 0; v11 = (int *)this[2]; v12 = 0; result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); if ( v12 ) *a8 = v12; else *a9 = v13[0]; return result; } // 446E7B: variable 'v10' is possibly undefined // 446E10: using guessed type long double var_1C[2]; //----- (00446ED0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( _DWORD *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, int a7) { int v8; // ebx int v10; // [esp+0h] [ebp-78h] int v11; // [esp+4h] [ebp-74h] int v12; // [esp+8h] [ebp-70h] int v13[2]; // [esp+44h] [ebp-34h] BYREF char v14; // [esp+4Ch] [ebp-2Ch] BYREF void (__cdecl *v15)(void **); // [esp+5Ch] [ebp-1Ch] v15 = 0; v13[0] = (int)&v14; LOBYTE(v12) = 0; std::string::_M_construct(v13, *(_BYTE **)a7, *(_DWORD *)a7 + *(_DWORD *)(a7 + 4), v12); LOBYTE(v10) = 0; v11 = this[2]; v15 = std::__facet_shims::`anonymous namespace'::__destroy_string; v8 = std::__facet_shims::__money_put(v10, v11, a2, a3, a4, a5, a6, 0.0, (int)v13); if ( v15 ) v15((void **)v13); return v8; } // 446F0C: variable 'v12' is possibly undefined // 446F56: variable 'v10' is possibly undefined //----- (00446F80) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, unsigned int **a7) { int v8; // ebx int v10; // [esp+0h] [ebp-78h] const std::string *v11; // [esp+4h] [ebp-74h] int v12[6]; // [esp+44h] [ebp-34h] BYREF void (__cdecl *v13)(volatile signed __int32 **); // [esp+5Ch] [ebp-1Ch] v13 = 0; std::string::string((unsigned int **)v12, a7, v11); v12[1] = *(*a7 - 3); v13 = std::__facet_shims::`anonymous namespace'::__destroy_string; LOBYTE(v10) = 0; v8 = std::__facet_shims::__money_put(v10, this[2], a2, a3, a4, a5, a6, 0.0, (int)v12); if ( v13 ) v13((volatile signed __int32 **)v12); return v8; } // 446FA6: variable 'v11' is possibly undefined // 446FFB: variable 'v10' is possibly undefined //----- (00447030) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, long double a7) { int v8; // [esp+0h] [ebp-3Ch] LOBYTE(v8) = 0; return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); } // 447078: variable 'v8' is possibly undefined //----- (00447090) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, long double a7) { int v8; // [esp+0h] [ebp-3Ch] LOBYTE(v8) = 0; return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); } // 4470D8: variable 'v8' is possibly undefined //----- (004470F0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( _DWORD *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6, int a7) { int v8; // ebx int v10; // [esp+0h] [ebp-78h] int v11; // [esp+4h] [ebp-74h] int v12; // [esp+8h] [ebp-70h] int v13[2]; // [esp+44h] [ebp-34h] BYREF char v14; // [esp+4Ch] [ebp-2Ch] BYREF void (__cdecl *v15)(void **); // [esp+5Ch] [ebp-1Ch] v15 = 0; v13[0] = (int)&v14; LOBYTE(v12) = 0; std::wstring::_M_construct((wchar_t **)v13, *(wchar_t **)a7, *(_DWORD *)a7 + 2 * *(_DWORD *)(a7 + 4), v12); LOBYTE(v10) = 0; v11 = this[2]; v15 = std::__facet_shims::`anonymous namespace'::__destroy_string; v8 = std::__facet_shims::__money_put(v10, v11, a2, a3, a4, a5, a6, 0.0, (int)v13); if ( v15 ) v15((void **)v13); return v8; } // 44712D: variable 'v12' is possibly undefined // 447177: variable 'v10' is possibly undefined //----- (004471B0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( int *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6, _DWORD *a7) { int v8; // ebx int v10; // [esp+0h] [ebp-78h] int v11[6]; // [esp+44h] [ebp-34h] BYREF void (__cdecl *v12)(volatile signed __int32 **); // [esp+5Ch] [ebp-1Ch] v12 = 0; std::wstring::basic_string(v11, a7); v11[1] = *(_DWORD *)(*a7 - 12); v12 = std::__facet_shims::`anonymous namespace'::__destroy_string; LOBYTE(v10) = 0; v8 = std::__facet_shims::__money_put(v10, this[2], a2, a3, a4, a5, a6, 0.0, (int)v11); if ( v12 ) v12((volatile signed __int32 **)v11); return v8; } // 447229: variable 'v10' is possibly undefined //----- (00447260) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( int *this, int a2, int a3, unsigned __int8 a4, int a5, __int16 a6, long double a7) { int v8; // [esp+0h] [ebp-3Ch] LOBYTE(v8) = 0; return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); } // 4472A8: variable 'v8' is possibly undefined //----- (004472C0) -------------------------------------------------------- int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( int *this, int a2, int a3, unsigned __int8 a4, int a5, __int16 a6, long double a7) { int v8; // [esp+0h] [ebp-3Ch] LOBYTE(v8) = 0; return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); } // 447308: variable 'v8' is possibly undefined //----- (00447320) -------------------------------------------------------- const char *_ZGTtNKSt13bad_exception4whatEv() { return "std::bad_exception"; } //----- (00447330) -------------------------------------------------------- bool __fastcall std::filebuf::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 40)); } //----- (00447340) -------------------------------------------------------- bool __fastcall std::wfilebuf::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 40)); } //----- (00447350) -------------------------------------------------------- int __fastcall std::fstream::rdbuf(int a1) { return a1 + 12; } //----- (00447360) -------------------------------------------------------- bool __fastcall std::fstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (00447370) -------------------------------------------------------- int __fastcall std::wfstream::rdbuf(int a1) { return a1 + 12; } //----- (00447380) -------------------------------------------------------- bool __fastcall std::wfstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (00447390) -------------------------------------------------------- int __fastcall std::wistream::gcount(int a1) { return *(_DWORD *)(a1 + 4); } //----- (004473A0) -------------------------------------------------------- int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (004473B0) -------------------------------------------------------- int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (004473C0) -------------------------------------------------------- int __fastcall std::runtime_error::what(int a1) { return *(_DWORD *)(a1 + 4); } //----- (004473D0) -------------------------------------------------------- int __fastcall std::ifstream::rdbuf(int a1) { return a1 + 8; } //----- (004473E0) -------------------------------------------------------- bool __fastcall std::ifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (004473F0) -------------------------------------------------------- int __fastcall std::wifstream::rdbuf(int a1) { return a1 + 8; } //----- (00447400) -------------------------------------------------------- bool __fastcall std::wifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (00447410) -------------------------------------------------------- int __fastcall std::ofstream::rdbuf(int a1) { return a1 + 4; } //----- (00447420) -------------------------------------------------------- bool __fastcall std::ofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (00447430) -------------------------------------------------------- int __fastcall std::wofstream::rdbuf(int a1) { return a1 + 4; } //----- (00447440) -------------------------------------------------------- bool __fastcall std::wofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (00447450) -------------------------------------------------------- int __fastcall std::streambuf::gptr(int a1) { return *(_DWORD *)(a1 + 8); } //----- (00447460) -------------------------------------------------------- int __fastcall std::streambuf::pptr(int a1) { return *(_DWORD *)(a1 + 20); } //----- (00447470) -------------------------------------------------------- int __fastcall std::streambuf::eback(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00447480) -------------------------------------------------------- int __fastcall std::streambuf::egptr(int a1) { return *(_DWORD *)(a1 + 12); } //----- (00447490) -------------------------------------------------------- int __fastcall std::streambuf::epptr(int a1) { return *(_DWORD *)(a1 + 24); } //----- (004474A0) -------------------------------------------------------- int __fastcall std::streambuf::pbase(int a1) { return *(_DWORD *)(a1 + 16); } //----- (004474B0) -------------------------------------------------------- volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int a2) { const std::locale *v4; // [esp+4h] [ebp-18h] std::locale::locale(this, (volatile signed __int32 **)(a2 + 28), v4); return this; } // 4474C0: variable 'v4' is possibly undefined //----- (004474E0) -------------------------------------------------------- int __fastcall std::wstreambuf::gptr(int a1) { return *(_DWORD *)(a1 + 8); } //----- (004474F0) -------------------------------------------------------- int __fastcall std::wstreambuf::pptr(int a1) { return *(_DWORD *)(a1 + 20); } //----- (00447500) -------------------------------------------------------- int __fastcall std::wstreambuf::eback(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00447510) -------------------------------------------------------- int __fastcall std::wstreambuf::egptr(int a1) { return *(_DWORD *)(a1 + 12); } //----- (00447520) -------------------------------------------------------- int __fastcall std::wstreambuf::epptr(int a1) { return *(_DWORD *)(a1 + 24); } //----- (00447530) -------------------------------------------------------- int __fastcall std::wstreambuf::pbase(int a1) { return *(_DWORD *)(a1 + 16); } //----- (00447540) -------------------------------------------------------- volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int a2) { const std::locale *v4; // [esp+4h] [ebp-18h] std::locale::locale(this, (volatile signed __int32 **)(a2 + 28), v4); return this; } // 447550: variable 'v4' is possibly undefined //----- (00447570) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; } //----- (00447590) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_in( unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8) { unsigned int v8; // edx int result; // eax int v10[2]; // [esp+4h] [ebp-10h] BYREF int v11[2]; // [esp+Ch] [ebp-8h] BYREF v8 = this[3]; v10[0] = a3; v10[1] = a4; v11[0] = a6; v11[1] = a7; result = std::`anonymous namespace'::ucs4_in(v10, v11, this[2], v8); *a5 = v10[0]; *a8 = v11[0]; return result; } //----- (004475F0) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_out( int this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8) { unsigned int v8; // edi unsigned int *v9; // ebx int result; // eax _BYTE *v11[5]; // [esp+8h] [ebp-14h] BYREF v8 = *(_DWORD *)(this + 8); v9 = a3; v11[0] = a6; v11[1] = a7; if ( (*(_BYTE *)(this + 12) & 2) != 0 && !(unsigned __int8)std::`anonymous namespace'::write_utf8_bom((int *)v11) ) { LABEL_10: result = 1; } else if ( a3 == a4 ) { LABEL_11: result = 0; } else { while ( v8 >= *v9 ) { if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v11, *v9) ) goto LABEL_10; if ( a4 == ++v9 ) goto LABEL_11; } result = 2; } *a5 = v9; *a8 = v11[0]; return result; } //----- (00447690) -------------------------------------------------------- unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5) { unsigned int v5; // edi int v6; // ebx bool v7; // dl bool v8; // al unsigned __int8 *v10[6]; // [esp+8h] [ebp-18h] BYREF v5 = *(_DWORD *)(this + 8); v10[0] = a3; v10[1] = a4; if ( (*(_BYTE *)(this + 12) & 4) != 0 ) std::`anonymous namespace'::read_bom((int *)v10); v6 = a5 - 1; if ( a5 ) { do { v7 = v5 >= std::`anonymous namespace'::read_utf8_code_point(v10, v5); v8 = v6-- != 0; } while ( v8 && v7 ); } return (unsigned __int8 *)(v10[0] - a3); } //----- (00447700) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 3 : 6; } //----- (00447720) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_in( _DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8) { int v8; // eax unsigned int v9; // ecx char v10; // al int result; // eax int v12[2]; // [esp+8h] [ebp-10h] BYREF int v13[2]; // [esp+10h] [ebp-8h] BYREF v12[0] = a3; v12[1] = a4; v13[0] = a6; v13[1] = a7; v8 = this[3]; v9 = this[2]; v10 = v8 & 6 | 1; if ( v9 > 0xFFFE ) v9 = 0xFFFF; result = std::`anonymous namespace'::utf16_in(v12, v13, v9, v10, 1); *a5 = v12[0]; *a8 = v13[0]; return result; } //----- (00447790) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_out( _DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8) { int v8; // eax unsigned int v9; // ecx int result; // eax unsigned __int16 *v11[2]; // [esp+8h] [ebp-10h] BYREF int v12[2]; // [esp+10h] [ebp-8h] BYREF v11[0] = a3; v11[1] = a4; v12[0] = a6; v12[1] = a7; v8 = this[3]; v9 = this[2]; if ( v9 > 0xFFFE ) v9 = 0xFFFF; result = std::`anonymous namespace'::utf16_out(v11, v12, v9, v8, 1); *a5 = v11[0]; *a8 = v12[0]; return result; } //----- (00447800) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_length( unsigned int *this, int a2, int a3, unsigned __int8 *a4, int a5) { std::`anonymous namespace'::ucs2_span(a5, a4, this[2], this[3]); return 0; } //----- (00447830) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 3 : 6; } //----- (00447850) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_in( _DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8) { unsigned int v8; // ecx int result; // eax int v10[2]; // [esp+8h] [ebp-10h] BYREF int v11[2]; // [esp+10h] [ebp-8h] BYREF v8 = this[3]; v10[0] = a3; v10[1] = a4; v11[0] = a6; v11[1] = a7; if ( v8 > 0xFFFE ) v8 = 0xFFFF; result = std::`anonymous namespace'::utf16_in(v10, v11, v8, 1, 1); *a5 = v10[0]; *a8 = v11[0]; return result; } //----- (004478C0) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_out( _DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8) { int v8; // eax unsigned int v9; // ecx int result; // eax int v11[2]; // [esp+8h] [ebp-10h] BYREF unsigned __int16 *v12[2]; // [esp+10h] [ebp-8h] BYREF v11[0] = a6; v11[1] = a7; v12[0] = a3; v12[1] = a4; v8 = this[4]; v9 = this[3]; if ( v9 > 0xFFFE ) v9 = 0xFFFF; result = std::`anonymous namespace'::utf16_out(v12, v11, v9, v8, 1); *a5 = v12[0]; *a8 = v11[0]; return result; } //----- (00447930) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_length( unsigned int *this, int a2, int a3, unsigned __int8 *a4, int a5) { std::`anonymous namespace'::ucs2_span(a5, a4, this[3], this[4]); return 0; } //----- (00447960) -------------------------------------------------------- char __userpurge std::__iosfail_type_info::__do_upcast@( int *a1@, std::__iosfail_type_info *this, const __cxxabiv1::__class_type_info *a3, void **a4) { char result; // al result = std::__is_ios_failure_handler(this); if ( !result ) return __cxxabiv1::__class_type_info::__do_upcast(a1, this, a3, a4); *(_DWORD *)a3 += 16; return result; } //----- (004479B0) -------------------------------------------------------- bool __thiscall std::istreambuf_iterator::equal(_DWORD *this, int a2) { _DWORD *v3; // ecx unsigned __int8 v4; // dl _DWORD *v5; // ecx char v6; // bl char v7; // di unsigned __int8 v9; // di int v10; // eax int v11; // eax unsigned __int8 v12; // [esp+Fh] [ebp-Dh] v3 = (_DWORD *)*this; v4 = this[1] == -1; if ( (v4 & (v3 != 0)) != 0 ) { v9 = v4 & (v3 != 0); v4 = 0; if ( v3[2] >= v3[3] ) { v10 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); v4 = 0; if ( v10 == -1 ) { *this = 0; v4 = v9; } } } v5 = *(_DWORD **)a2; v6 = *(_DWORD *)(a2 + 4) == -1; v7 = v6 & (*(_DWORD *)a2 != 0); if ( v7 ) { v6 = 0; if ( v5[2] >= v5[3] ) { v12 = v4; v11 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); v4 = v12; if ( v11 == -1 ) { *(_DWORD *)a2 = 0; v6 = v7; } } } return v6 == (char)v4; } //----- (00447A50) -------------------------------------------------------- int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@) { int result; // eax _DWORD *v4; // ecx unsigned __int8 *v5; // eax result = a2; v4 = *a1; if ( a2 == -1 && v4 ) { v5 = (unsigned __int8 *)v4[2]; if ( (unsigned int)v5 >= v4[3] ) { result = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); if ( result == -1 ) *a1 = 0; } else { return *v5; } } return result; } //----- (00447AA0) -------------------------------------------------------- bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2) { _DWORD *v3; // ecx char v4; // si char v5; // dl _DWORD *v6; // ecx char v7; // dl char v8; // bl __int16 *v10; // eax __int16 v11; // ax __int16 *v12; // eax __int16 v13; // ax char v14; // [esp+Fh] [ebp-Dh] v3 = *(_DWORD **)this; v4 = this[2] == 0xFFFF; v5 = v4 & (v3 != 0); if ( v5 ) { v10 = (__int16 *)v3[2]; if ( (unsigned int)v10 >= v3[3] ) { v14 = v4 & (v3 != 0); v11 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); v5 = v14; } else { v11 = *v10; } v4 = 0; if ( v11 == -1 ) { *(_DWORD *)this = 0; v4 = v5; } } v6 = *(_DWORD **)a2; v7 = *(_WORD *)(a2 + 4) == 0xFFFF; v8 = v7 & (*(_DWORD *)a2 != 0); if ( v8 ) { v12 = (__int16 *)v6[2]; if ( (unsigned int)v12 >= v6[3] ) v13 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); else v13 = *v12; v7 = 0; if ( v13 == -1 ) { *(_DWORD *)a2 = 0; v7 = v8; } } return v4 == v7; } //----- (00447B40) -------------------------------------------------------- int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@) { int result; // eax _DWORD *v4; // ecx unsigned __int16 *v5; // eax result = a2; v4 = *a1; if ( (_WORD)a2 == 0xFFFF && v4 ) { v5 = (unsigned __int16 *)v4[2]; if ( (unsigned int)v5 >= v4[3] ) result = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); else result = *v5; if ( (_WORD)result == 0xFFFF ) *a1 = 0; } return result; } //----- (00447B90) -------------------------------------------------------- int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 6; } //----- (00447BB0) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_in( _DWORD *this, int a2, int a3, int a4, int *a5, unsigned int *a6, unsigned int *a7, unsigned int **a8) { unsigned int v8; // esi int v10; // eax int v11; // edx unsigned int utf16_code; // eax int result; // eax int v14; // [esp+4h] [ebp-1Ch] BYREF int v15; // [esp+8h] [ebp-18h] BYREF int v16; // [esp+Ch] [ebp-14h] v8 = this[2]; v15 = a3; v10 = this[3]; v16 = a4; v14 = v10; std::`anonymous namespace'::read_utf16_bom((int)&v15, &v14); v11 = v15; if ( (unsigned int)(v16 - v15) >> 1 ) { while ( 1 ) { if ( a7 == a6 ) { *a5 = v15; *a8 = a7; return 1; } utf16_code = std::`anonymous namespace'::read_utf16_code_point((unsigned int)&v15, v8, v14); v11 = v15; if ( utf16_code == -2 ) { result = 1; goto LABEL_10; } if ( v8 < utf16_code ) break; *a6++ = utf16_code; if ( !((unsigned int)(v16 - v11) >> 1) ) goto LABEL_8; } result = 2; LABEL_10: *a5 = v15; *a8 = a6; } else { LABEL_8: *a5 = v11; *a8 = a6; return 2 * (a4 != v11); } return result; } //----- (00447CA0) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_out( _DWORD *this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, int a6, int a7, _DWORD *a8) { int v8; // ebp unsigned int v9; // esi unsigned int *v10; // edi bool v11; // zf _WORD *v12; // eax int v13; // ebp unsigned int v14; // edx unsigned int v15; // ecx int v16; // edx unsigned int v18; // ecx __int16 v19; // dx __int16 v20; // cx int v21; // eax __int16 v22; // cx _WORD *v23; // [esp+8h] [ebp-18h] BYREF int v24; // [esp+Ch] [ebp-14h] v8 = this[3]; v9 = this[2]; v10 = a3; v23 = (_WORD *)a6; v24 = a7; v11 = (unsigned __int8)std::`anonymous namespace'::write_utf16_bom((int)&v23, v8) == 0; v12 = v23; if ( v11 ) { LABEL_7: v16 = 1; } else if ( a3 == a4 ) { LABEL_14: v16 = 0; } else { v13 = v8 & 1; while ( 1 ) { v14 = *v10; if ( v9 < *v10 ) break; v15 = (unsigned int)(v24 - (_DWORD)v12) >> 1; if ( v14 > 0xFFFF ) { if ( v15 <= 1 ) goto LABEL_7; v18 = v14 >> 10; v19 = (v14 & 0x3FF) - 9216; v20 = v18 - 10304; if ( !v13 ) { v20 = __ROL2__(v20, 8); v19 = __ROL2__(v19, 8); } *v12 = v20; v21 = (int)v23++; *(_WORD *)(v21 + 2) = v19; v12 = ++v23; } else { if ( !v15 ) goto LABEL_7; v22 = __ROL2__(v14, 8); if ( v13 ) *v12 = v14; else *v12 = v22; v12 = ++v23; } if ( a4 == ++v10 ) goto LABEL_14; } v16 = 2; } *a5 = v10; *a8 = v12; return v16; } //----- (00447DE0) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) { unsigned int v5; // edi int v6; // eax int v7; // ebp unsigned int utf16_code; // eax bool v9; // dl int v11; // [esp+4h] [ebp-1Ch] BYREF int v12[6]; // [esp+8h] [ebp-18h] BYREF v5 = this[2]; v12[1] = a4; v6 = this[3]; v12[0] = a3; v11 = v6; std::`anonymous namespace'::read_utf16_bom((int)v12, &v11); if ( a5 ) { v7 = a5 - 1; do { utf16_code = std::`anonymous namespace'::read_utf16_code_point((unsigned int)v12, v5, v11); v9 = v7-- != 0; } while ( v5 >= utf16_code && v9 ); } return v12[0] - a3; } //----- (00447E50) -------------------------------------------------------- int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 2 : 4; } //----- (00447E70) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_in( unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, int *a8) { unsigned int v8; // edx int result; // eax int v10; // edx int v11; // esi int v12[2]; // [esp+4h] [ebp-18h] BYREF int v13[4]; // [esp+Ch] [ebp-10h] BYREF v8 = this[3]; v12[0] = a3; v12[1] = a4; v13[0] = a6; v13[1] = a7; result = std::`anonymous namespace'::ucs2_in(v12, v13, this[2], v8); v10 = v12[0]; v11 = v13[0]; *a5 = v12[0]; *a8 = v11; if ( !result && v10 != a4 ) return 2; return result; } //----- (00447EE0) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_out( _DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8) { int v8; // ebx unsigned int v9; // esi char v10; // dl int result; // eax unsigned __int16 *v12[2]; // [esp+4h] [ebp-18h] BYREF int v13[4]; // [esp+Ch] [ebp-10h] BYREF v8 = this[3]; v9 = this[2]; v12[0] = a3; v12[1] = a4; v13[0] = a6; v13[1] = a7; v10 = std::`anonymous namespace'::write_utf16_bom((int)v13, v8); result = 1; if ( v10 ) result = std::`anonymous namespace'::ucs2_out(v12, v13, v9, v8); *a5 = v12[0]; *a8 = v13[0]; return result; } //----- (00447F50) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) { int v5; // edx unsigned int v6; // ecx int v8[3]; // [esp+Ch] [ebp-Ch] BYREF v5 = this[3]; v8[1] = a4; v6 = this[2]; v8[0] = a3; return std::`anonymous namespace'::ucs2_span((unsigned int)v8, a5, v6, v5) - a3; } //----- (00447F90) -------------------------------------------------------- int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 2 : 4; } //----- (00447FB0) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_in( unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, int *a8) { unsigned int v8; // edx int result; // eax int v10; // edx int v11; // esi int v12[2]; // [esp+4h] [ebp-18h] BYREF int v13[4]; // [esp+Ch] [ebp-10h] BYREF v8 = this[4]; v12[0] = a3; v12[1] = a4; v13[0] = a6; v13[1] = a7; result = std::`anonymous namespace'::ucs2_in(v12, v13, this[3], v8); v10 = v12[0]; v11 = v13[0]; *a5 = v12[0]; *a8 = v11; if ( !result && v10 != a4 ) return 2; return result; } //----- (00448020) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_out( _DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8) { int v8; // ebx unsigned int v9; // esi char v10; // dl int result; // eax int v12[2]; // [esp+4h] [ebp-18h] BYREF unsigned __int16 *v13[4]; // [esp+Ch] [ebp-10h] BYREF v8 = this[4]; v9 = this[3]; v12[0] = a6; v12[1] = a7; v13[0] = a3; v13[1] = a4; v10 = std::`anonymous namespace'::write_utf16_bom((int)v12, v8); result = 1; if ( v10 ) result = std::`anonymous namespace'::ucs2_out(v13, v12, v9, v8); *a5 = v13[0]; *a8 = v12[0]; return result; } //----- (00448090) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) { int v5; // edx unsigned int v6; // ecx int v8[3]; // [esp+Ch] [ebp-Ch] BYREF v5 = this[4]; v8[1] = a4; v6 = this[3]; v8[0] = a3; return std::`anonymous namespace'::ucs2_span((unsigned int)v8, a5, v6, v5) - a3; } //----- (004480D0) -------------------------------------------------------- const char *std::bad_array_new_length::what() { return "std::bad_array_new_length"; } //----- (004480E0) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; } //----- (00448100) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_utf16_base::do_in( int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, unsigned int *a6, unsigned int *a7, unsigned int **a8) { unsigned int v8; // edi unsigned __int8 *v9; // ebp unsigned __int8 *v10; // eax unsigned int v12; // eax int result; // eax unsigned __int8 *v14; // [esp+8h] [ebp-18h] BYREF unsigned __int8 *v15; // [esp+Ch] [ebp-14h] v8 = *(_DWORD *)(this + 8); v9 = a3; v10 = a4; v14 = a3; v15 = a4; if ( (*(_BYTE *)(this + 12) & 4) != 0 ) { std::`anonymous namespace'::read_bom((int *)&v14); v9 = v14; v10 = v15; } if ( v10 == v9 ) { LABEL_14: result = 0; } else { while ( 1 ) { if ( a7 == a6 ) { v9 = v14; result = 0; goto LABEL_12; } v12 = std::`anonymous namespace'::read_utf8_code_point(&v14, v8); if ( v12 == -2 ) { v9 = v14; result = 1; goto LABEL_12; } if ( v8 < v12 ) break; if ( v12 <= 0xFFFF ) { *a6 = v12; v9 = v14; ++a6; if ( v14 == v15 ) goto LABEL_14; } else { if ( (char *)a7 - (char *)a6 == 4 ) { result = 1; goto LABEL_12; } v9 = v14; a6 += 2; *(a6 - 1) = (unsigned __int16)((v12 & 0x3FF) - 9216); *(a6 - 2) = (unsigned __int16)((v12 >> 10) - 10304); if ( v9 == v15 ) goto LABEL_14; } } v9 = v14; result = 2; } LABEL_12: *a5 = v9; *a8 = a6; return result; } //----- (00448220) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_utf16_base::do_out( int this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8) { unsigned int v8; // edi unsigned int *v9; // ebx unsigned int v10; // eax unsigned int v11; // eax int v12; // ebp unsigned int v13; // edx int result; // eax _BYTE *v15[6]; // [esp+8h] [ebp-18h] BYREF v8 = *(_DWORD *)(this + 8); v9 = a3; v15[0] = a6; v15[1] = a7; if ( (*(_BYTE *)(this + 12) & 2) != 0 && !(unsigned __int8)std::`anonymous namespace'::write_utf8_bom((int *)v15) ) { LABEL_14: result = 1; goto LABEL_15; } v10 = a4 - a3; if ( a3 == a4 ) { LABEL_16: result = 0; goto LABEL_15; } while ( 1 ) { v13 = *v9; if ( *v9 - 55296 <= 0x3FF ) break; if ( v13 - 56320 <= 0x3FF ) goto LABEL_13; v12 = 1; if ( v8 < v13 ) goto LABEL_13; LABEL_8: if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v15, v13) ) goto LABEL_14; v9 += v12; v10 = a4 - v9; if ( a4 == v9 ) goto LABEL_16; } if ( v10 <= 1 ) goto LABEL_16; v11 = v9[1]; if ( v11 - 56320 <= 0x3FF ) { v12 = 2; v13 = v11 + (v13 << 10) - 56613888; if ( v8 >= v13 ) goto LABEL_8; } LABEL_13: result = 2; LABEL_15: *a5 = v9; *a8 = v15[0]; return result; } //----- (00448320) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_utf16_base::do_length( unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5) { std::`anonymous namespace'::utf16_span(a5, a4, this[2], this[3]); return 0; } //----- (00448350) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; } //----- (00448370) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_utf16_base::do_in( _DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8) { unsigned int v8; // edx int result; // eax int v10[2]; // [esp+8h] [ebp-10h] BYREF int v11[2]; // [esp+10h] [ebp-8h] BYREF v8 = this[2]; v10[0] = a3; v10[1] = a4; v11[0] = a6; v11[1] = a7; result = std::`anonymous namespace'::utf16_in(v10, v11, v8, this[3] & 6 | 1, 0); *a5 = v10[0]; *a8 = v11[0]; return result; } //----- (004483E0) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_utf16_base::do_out( unsigned int *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8) { int result; // eax unsigned __int16 *v9[2]; // [esp+8h] [ebp-10h] BYREF int v10[2]; // [esp+10h] [ebp-8h] BYREF v9[0] = a3; v9[1] = a4; v10[0] = a6; v10[1] = a7; result = std::`anonymous namespace'::utf16_out(v9, v10, this[2], this[3], 0); *a5 = v9[0]; *a8 = v10[0]; return result; } //----- (00448440) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_utf16_base::do_length( unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5) { std::`anonymous namespace'::utf16_span(a5, a4, this[2], this[3]); return 0; } //----- (00448470) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 4 : 7; } //----- (00448490) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_utf16_base::do_in( int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8) { unsigned int v8; // edi unsigned __int8 *v9; // ebp unsigned __int8 *v10; // eax unsigned int v12; // eax int result; // eax unsigned __int8 *v14; // [esp+8h] [ebp-18h] BYREF unsigned __int8 *v15; // [esp+Ch] [ebp-14h] v8 = *(_DWORD *)(this + 12); v9 = a3; v10 = a4; v14 = a3; v15 = a4; if ( (*(_BYTE *)(this + 16) & 4) != 0 ) { std::`anonymous namespace'::read_bom((int *)&v14); v10 = v15; v9 = v14; } if ( v9 == v10 ) { LABEL_14: result = 0; } else { while ( 1 ) { if ( a7 == a6 ) { v9 = v14; result = 0; goto LABEL_12; } v12 = std::`anonymous namespace'::read_utf8_code_point(&v14, v8); if ( v12 == -2 ) { v9 = v14; result = 1; goto LABEL_12; } if ( v8 < v12 ) break; if ( v12 <= 0xFFFF ) { *(_WORD *)a6 = v12; v9 = v14; a6 += 2; if ( v14 == v15 ) goto LABEL_14; } else { if ( a7 - a6 == 2 ) { result = 1; goto LABEL_12; } v9 = v14; a6 += 4; *((_WORD *)a6 - 1) = (v12 & 0x3FF) - 9216; *((_WORD *)a6 - 2) = (v12 >> 10) - 10304; if ( v9 == v15 ) goto LABEL_14; } } v9 = v14; result = 2; } LABEL_12: *a5 = v9; *a8 = a6; return result; } //----- (004485B0) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_utf16_base::do_out( int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8) { unsigned int v8; // edi unsigned __int16 *v9; // ebx unsigned int v10; // eax int v11; // eax int v12; // ebp unsigned int v13; // edx int result; // eax _BYTE *v15[6]; // [esp+8h] [ebp-18h] BYREF v8 = *(_DWORD *)(this + 12); v9 = a3; v15[0] = a6; v15[1] = a7; if ( (*(_BYTE *)(this + 16) & 2) != 0 && !(unsigned __int8)std::`anonymous namespace'::write_utf8_bom((int *)v15) ) { LABEL_14: result = 1; goto LABEL_15; } v10 = a4 - a3; if ( a3 == a4 ) { LABEL_16: result = 0; goto LABEL_15; } while ( 1 ) { v13 = *v9; if ( v13 - 55296 <= 0x3FF ) break; if ( v13 - 56320 <= 0x3FF ) goto LABEL_13; v12 = 1; if ( v8 < v13 ) goto LABEL_13; LABEL_8: if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v15, v13) ) goto LABEL_14; v9 += v12; v10 = a4 - v9; if ( a4 == v9 ) goto LABEL_16; } if ( v10 <= 1 ) goto LABEL_16; v11 = v9[1]; if ( (unsigned int)(v11 - 56320) <= 0x3FF ) { v12 = 2; v13 = v11 + (v13 << 10) - 56613888; if ( v8 >= v13 ) goto LABEL_8; } LABEL_13: result = 2; LABEL_15: *a5 = v9; *a8 = v15[0]; return result; } //----- (004486B0) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_utf16_base::do_length( unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5) { std::`anonymous namespace'::utf16_span(a5, a4, this[3], this[4]); return 0; } //----- (004486E0) -------------------------------------------------------- _DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int a2, int a3) { unsigned int v5; // [esp+8h] [ebp-30h] std::__cow_string *v6[2]; // [esp+18h] [ebp-20h] BYREF char v7; // [esp+20h] [ebp-18h] BYREF (*(void (__thiscall **)(std::__cow_string **, int, int))(*(_DWORD *)a2 + 16))(v6, a2, a3); std::__cow_string::__cow_string(this, v6[0], (const char *)v6[1], v5); if ( (char *)v6[0] != &v7 ) operator delete(v6[0]); return this; } // 448710: variable 'v5' is possibly undefined //----- (00448740) -------------------------------------------------------- void **__thiscall std::_V2::error_category::_M_message(void **ecx0, std::_V2::error_category *this, int a3) { void *v4; // ecx int v6; // edx unsigned int v7; // [esp+8h] [ebp-20h] char v8[13]; // [esp+1Bh] [ebp-Dh] BYREF (*(void (__thiscall **)(char *, std::_V2::error_category *, int))(*(_DWORD *)this + 12))(&v8[1], this, a3); std::__sso_string::__sso_string(ecx0, *(std::__sso_string **)&v8[1], *(const char **)(*(_DWORD *)&v8[1] - 12), v7); v4 = (void *)(*(_DWORD *)&v8[1] - 12); if ( *(_UNKNOWN **)&v8[1] != &unk_4E93FC ) { if ( _CRT_MT ) { v6 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v8[1] - 4), 0xFFFFFFFF); } else { v6 = *(_DWORD *)(*(_DWORD *)&v8[1] - 4); *(_DWORD *)(*(_DWORD *)&v8[1] - 4) = v6 - 1; } if ( v6 <= 0 ) std::string::_Rep::_M_destroy(v4, (int)v8); } return ecx0; } // 448771: variable 'v7' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004487E0) -------------------------------------------------------- bool __userpurge std::_V2::error_category::equivalent@( int a1@, std::_V2::error_category *this, const std::error_code *a3, int a4) { bool result; // al result = 0; if ( *((_DWORD *)this + 1) == a1 ) return *(_DWORD *)this == (_DWORD)a3; return result; } //----- (00448800) -------------------------------------------------------- int __thiscall std::_V2::error_category::equivalent(void *this, int a2, _DWORD *a3) { int v3; // eax int v4; // edx int v5; // ecx int v6; // edx v3 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)this + 20))(this, a2); v5 = v4; v6 = 0; if ( a3[1] == v5 ) LOBYTE(v6) = *a3 == v3; return v6; } // 448814: variable 'v4' is possibly undefined //----- (00448840) -------------------------------------------------------- std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition( std::_V2::error_category *this, int a2) { return this; } //----- (00448850) -------------------------------------------------------- char *__thiscall std::ctype::do_tolower(_DWORD *this, char *a2, char *a3) { char *v3; // ebx int (__thiscall *v5)(_DWORD *, int); // eax int v7; // [esp+0h] [ebp-1Ch] v3 = a2; if ( a2 < a3 ) { do { while ( 1 ) { v5 = *(int (__thiscall **)(_DWORD *, int))(*this + 16); v7 = *v3; if ( v5 != std::ctype::do_tolower ) break; *v3++ = std::ctype::do_tolower(this, v7); if ( a3 == v3 ) return a3; } *v3++ = v5(this, v7); } while ( a3 != v3 ); } return a3; } //----- (004488B0) -------------------------------------------------------- int __thiscall std::ctype::do_tolower(_DWORD *this, int a2) { int v2; // edx v2 = a2 + 32; if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 1) == 0 ) return a2; return v2; } //----- (004488D0) -------------------------------------------------------- char *__thiscall std::ctype::do_toupper(_DWORD *this, char *a2, char *a3) { char *v3; // ebx int (__thiscall *v5)(_DWORD *, int); // eax int v7; // [esp+0h] [ebp-1Ch] v3 = a2; if ( a2 < a3 ) { do { while ( 1 ) { v5 = *(int (__thiscall **)(_DWORD *, int))(*this + 8); v7 = *v3; if ( v5 != std::ctype::do_toupper ) break; *v3++ = std::ctype::do_toupper(this, v7); if ( a3 == v3 ) return a3; } *v3++ = v5(this, v7); } while ( a3 != v3 ); } return a3; } //----- (00448930) -------------------------------------------------------- int __thiscall std::ctype::do_toupper(_DWORD *this, int a2) { int v2; // edx v2 = a2 - 32; if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 2) == 0 ) return a2; return v2; } //----- (00448950) -------------------------------------------------------- int __fastcall std::ctype::_M_widen_init(int a1) { int i; // eax char *Buf2; // edx void (__thiscall *v4)(int, _DWORD *, char *, int); // eax int result; // eax char *v6; // [esp+1Ch] [ebp-120h] _DWORD Buf1[64]; // [esp+20h] [ebp-11Ch] BYREF char v8[28]; // [esp+120h] [ebp-1Ch] BYREF for ( i = 0; i != 256; ++i ) *((_BYTE *)Buf1 + i) = i; Buf2 = (char *)(a1 + 29); v4 = *(void (__thiscall **)(int, _DWORD *, char *, int))(*(_DWORD *)a1 + 28); if ( (char *)v4 == (char *)std::ctype::do_widen ) { *(_DWORD *)(a1 + 29) = Buf1[0]; *(_DWORD *)(a1 + 281) = Buf1[63]; qmemcpy( (void *)((a1 + 33) & 0xFFFFFFFC), (const void *)((char *)Buf1 - &Buf2[-((a1 + 33) & 0xFFFFFFFC)]), 4 * ((unsigned int)&Buf2[-((a1 + 33) & 0xFFFFFFFC) + 256] >> 2)); } else { v6 = (char *)(a1 + 29); v4(a1, Buf1, v8, a1 + 29); Buf2 = v6; } *(_BYTE *)(a1 + 28) = 1; result = memcmp(Buf1, Buf2, 0x100u); if ( result ) *(_BYTE *)(a1 + 28) = 2; return result; } // 448950: using guessed type char var_1C[28]; //----- (00448A00) -------------------------------------------------------- int __fastcall std::ctype::_M_narrow_init(int a1) { int i; // eax char *Buf2; // edx void (__thiscall *v4)(int, _DWORD *, char *, _DWORD, int); // eax int result; // eax int (__thiscall *v6)(int, _DWORD *, char *, int, char *); // eax char *v7; // [esp+1Ch] [ebp-130h] char v8; // [esp+2Fh] [ebp-11Dh] BYREF _DWORD Buf1[64]; // [esp+30h] [ebp-11Ch] BYREF char v10[28]; // [esp+130h] [ebp-1Ch] BYREF for ( i = 0; i != 256; ++i ) *((_BYTE *)Buf1 + i) = i; Buf2 = (char *)(a1 + 285); v4 = *(void (__thiscall **)(int, _DWORD *, char *, _DWORD, int))(*(_DWORD *)a1 + 36); if ( (char *)v4 == (char *)std::ctype::do_narrow ) { *(_DWORD *)(a1 + 285) = Buf1[0]; *(_DWORD *)(a1 + 537) = Buf1[63]; qmemcpy( (void *)((a1 + 289) & 0xFFFFFFFC), (const void *)((char *)Buf1 - &Buf2[-((a1 + 289) & 0xFFFFFFFC)]), 4 * ((unsigned int)&Buf2[-((a1 + 289) & 0xFFFFFFFC) + 256] >> 2)); } else { v7 = (char *)(a1 + 285); v4(a1, Buf1, v10, 0, a1 + 285); Buf2 = v7; } *(_BYTE *)(a1 + 541) = 1; result = memcmp(Buf1, Buf2, 0x100u); if ( result || ((v6 = *(int (__thiscall **)(int, _DWORD *, char *, int, char *))(*(_DWORD *)a1 + 36), (char *)v6 != (char *)std::ctype::do_narrow) ? (result = v6(a1, Buf1, (char *)Buf1 + 1, 1, &v8)) : (result = LOBYTE(Buf1[0]), v8 = Buf1[0]), v8 == 1) ) { *(_BYTE *)(a1 + 541) = 2; } return result; } // 448A00: using guessed type char var_1C[28]; //----- (00448B10) -------------------------------------------------------- _BYTE *__thiscall std::ctype::widen(_BYTE *this, _BYTE *Src, _BYTE *a3, void *a4) { char v4; // al _BYTE *(__stdcall *v5)(_BYTE *, _BYTE *, void *); // eax v4 = this[28]; if ( v4 == 1 ) goto LABEL_4; if ( v4 ) { v5 = *(_BYTE *(__stdcall **)(_BYTE *, _BYTE *, void *))(*(_DWORD *)this + 28); if ( v5 == std::ctype::do_widen ) goto LABEL_4; return v5(Src, a3, a4); } std::ctype::_M_widen_init((int)this); v5 = *(_BYTE *(__stdcall **)(_BYTE *, _BYTE *, void *))(*(_DWORD *)this + 28); if ( v5 != std::ctype::do_widen ) return v5(Src, a3, a4); LABEL_4: if ( Src == a3 ) return Src; memcpy(a4, Src, a3 - Src); return a3; } //----- (00448BA0) -------------------------------------------------------- _BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3) { if ( a2 != Src ) memcpy(a3, Src, a2 - Src); return a2; } //----- (00448BE0) -------------------------------------------------------- int __stdcall std::ctype::do_widen(unsigned __int8 a1) { return a1; } //----- (00448BF0) -------------------------------------------------------- _BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4) { if ( a2 != Src ) memcpy(a4, Src, a2 - Src); return a2; } //----- (00448C30) -------------------------------------------------------- int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2) { return a1; } //----- (00448C40) -------------------------------------------------------- unsigned __int16 *__thiscall std::ctype::do_scan_is( void *this, unsigned __int16 a2, unsigned __int16 *a3, unsigned int a4) { unsigned __int16 *i; // ebx for ( i = a3; a4 > (unsigned int)i; ++i ) { if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, *i) ) break; } return i; } //----- (00448C90) -------------------------------------------------------- unsigned int __stdcall std::ctype::do_tolower(wint_t *a1, unsigned int a2) { wint_t *v2; // ebx wint_t C; // ax v2 = a1; if ( (unsigned int)a1 < a2 ) { do { C = *v2++; *(v2 - 1) = towlower(C); } while ( v2 != &a1[((a2 - 1 - (unsigned int)a1) >> 1) + 1] ); } return a2; } //----- (00448CE0) -------------------------------------------------------- wint_t __stdcall std::ctype::do_tolower(wint_t C) { return towlower(C); } //----- (00448D00) -------------------------------------------------------- unsigned int __stdcall std::ctype::do_toupper(wint_t *a1, unsigned int a2) { wint_t *v2; // ebx wint_t C; // ax v2 = a1; if ( (unsigned int)a1 < a2 ) { do { C = *v2++; *(v2 - 1) = towupper(C); } while ( v2 != &a1[((a2 - 1 - (unsigned int)a1) >> 1) + 1] ); } return a2; } //----- (00448D50) -------------------------------------------------------- wint_t __stdcall std::ctype::do_toupper(wint_t C) { return towupper(C); } //----- (00448D70) -------------------------------------------------------- unsigned __int16 *__thiscall std::ctype::do_scan_not( void *this, unsigned __int16 a2, unsigned __int16 *a3, unsigned int a4) { unsigned __int16 *i; // ebx for ( i = a3; a4 > (unsigned int)i; ++i ) { if ( !(*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, *i) ) break; } return i; } //----- (00448DC0) -------------------------------------------------------- wctype_t __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16 a1) { wctype_t result; // ax if ( a1 > 0x40u ) { switch ( a1 ) { case 0x200u: return wctype("punct"); case 0x20Cu: return wctype("graph"); case 0x100u: return wctype("cntrl"); case 0x400u: return wctype("blank"); default: return 0; } } else { result = 0; if ( a1 ) { switch ( a1 ) { case 1u: result = wctype("upper"); break; case 2u: result = wctype("lower"); break; case 4u: result = wctype("alpha"); break; case 8u: result = wctype("digit"); break; case 0xCu: result = wctype("alnum"); break; case 0x10u: result = wctype("xdigit"); break; case 0x20u: result = wctype("space"); break; case 0x40u: result = wctype("print"); break; default: return 0; } } } return result; } //----- (00448EE0) -------------------------------------------------------- unsigned int __thiscall std::ctype::do_is(char *this, wint_t *a2, unsigned int a3, _WORD *a4) { wint_t *v4; // ebx _WORD *v5; // edi _WORD *v6; // ebp __int16 v7; // si _WORD *v8; // eax unsigned int v10; // [esp+18h] [ebp-24h] _WORD *v11; // [esp+1Ch] [ebp-20h] v4 = a2; if ( (unsigned int)a2 < a3 ) { v5 = this + 686; v10 = (unsigned int)&a4[((a3 - 1 - (unsigned int)a2) >> 1) + 1]; v11 = this + 654; do { v6 = v11; v7 = 0; do { if ( iswctype(*v4, v6[16]) ) v7 |= *v6; ++v6; } while ( v6 != v5 ); v8 = a4; ++v4; ++a4; *v8 = v7; } while ( a4 != (_WORD *)v10 ); } return a3; } //----- (00448F80) -------------------------------------------------------- int __thiscall std::ctype::do_is(_WORD *this, unsigned __int16 a2, wint_t C) { _WORD *v3; // esi _WORD *v4; // ebx v3 = this + 343; v4 = this + 327; do { if ( (a2 & *v4) != 0 && iswctype(C, v4[16]) ) return 1; ++v4; } while ( v4 != v3 ); return 0; } //----- (00448FE0) -------------------------------------------------------- unsigned __int8 *__thiscall std::ctype::do_widen( _WORD *this, unsigned __int8 *a2, unsigned __int8 *a3, int a4) { unsigned __int8 *v4; // eax int v6; // ebx v4 = a2; if ( a2 < a3 ) { do { v6 = *v4++; a4 += 2; *(_WORD *)(a4 - 2) = this[v6 + 71]; } while ( a3 != v4 ); } return a3; } //----- (00449020) -------------------------------------------------------- int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2) { return this[a2 + 71]; } //----- (00449030) -------------------------------------------------------- unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *a2, unsigned int a3, char a4, char *a5) { wint_t *v5; // ebx char *v6; // esi unsigned int v8; // ebp int v9; // ecx int v10; // eax char v11; // cl int v13; // eax char v14; // dl v5 = a2; v6 = a5; if ( this[12] ) { if ( (unsigned int)a2 < a3 ) { v8 = (unsigned int)&a2[((a3 - 1 - (unsigned int)a2) >> 1) + 1]; do { while ( 1 ) { v9 = *v5; if ( (unsigned __int16)v9 > 0x7Fu ) break; ++v5; *v6++ = this[v9 + 13]; if ( (wint_t *)v8 == v5 ) return a3; } v10 = wctob(*v5); v11 = a4; if ( v10 != -1 ) v11 = v10; ++v5; *v6++ = v11; } while ( (wint_t *)v8 != v5 ); } return a3; } if ( (unsigned int)a2 >= a3 ) return a3; do { v13 = wctob(*v5); v14 = a4; if ( v13 != -1 ) v14 = v13; *v6++ = v14; ++v5; } while ( v6 != &a5[((a3 - 1 - (unsigned int)a2) >> 1) + 1] ); return a3; } //----- (00449110) -------------------------------------------------------- int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3) { int v3; // edx int result; // eax if ( WCh <= 0x7Fu && this[12] ) return (unsigned __int8)this[WCh + 13]; v3 = wctob(WCh); result = a3; if ( v3 != -1 ) return v3; return result; } //----- (00449160) -------------------------------------------------------- int __fastcall std::locale::id::_M_id(int *a1) { int v1; // eax v1 = *a1; if ( !*a1 ) { if ( _CRT_MT ) v1 = _InterlockedIncrement(&std::locale::id::_S_refcount); else v1 = ++std::locale::id::_S_refcount; *a1 = v1; } return v1 - 1; } // 4E956C: using guessed type int std::locale::id::_S_refcount; // 15412D0: using guessed type int _CRT_MT; //----- (004491A0) -------------------------------------------------------- int __thiscall std::locale::name[abi:cxx11](int this, int *a2) { int v3; // eax int v4; // edi unsigned int v5; // esi int v6; // eax unsigned int v7; // eax size_t v8; // esi int v9; // eax unsigned int v10; // edi unsigned int v11; // edx int v12; // eax unsigned int v13; // eax int i; // esi size_t v15; // edi int v16; // eax unsigned int v17; // edx unsigned int v18; // eax size_t v19; // edi int v20; // eax unsigned int v21; // edx unsigned int v22; // eax size_t v24; // eax const char *v25; // [esp+0h] [ebp-38h] char *Str; // [esp+14h] [ebp-24h] int v27; // [esp+18h] [ebp-20h] char *Str1; // [esp+1Ch] [ebp-1Ch] *(_DWORD *)this = this + 8; v27 = this + 8; *(_BYTE *)(this + 8) = 0; v3 = *a2; *(_DWORD *)(this + 4) = 0; v4 = *(_DWORD *)(v3 + 16); Str = *(char **)v4; if ( !*(_DWORD *)v4 ) { std::string::_M_replace_aux((_DWORD *)this, 0, 0, 1u, 42); return this; } if ( !*(_DWORD *)(v4 + 4) ) { LABEL_26: v24 = strlen(Str); std::string::_M_replace((unsigned int *)this, 0, 0, Str, v24); return this; } v5 = 0; Str1 = *(char **)v4; while ( 1 ) { ++v5; v25 = Str1; Str1 = *(char **)(v4 + 4 * v5); v6 = strcmp(v25, Str1); if ( v5 > 4 ) break; if ( v6 ) goto LABEL_6; } if ( !v6 ) goto LABEL_26; LABEL_6: std::string::reserve((_DWORD *)this, 0x80u); v7 = strlen(*std::locale::_S_categories); if ( v7 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)this, *std::locale::_S_categories, v7); v8 = *(_DWORD *)(this + 4); v9 = *(_DWORD *)this; v10 = v8 + 1; if ( v27 == *(_DWORD *)this ) v11 = 15; else v11 = *(_DWORD *)(this + 8); if ( v10 > v11 ) { std::string::_M_mutate(this, v8, 0, 0, 1u); v9 = *(_DWORD *)this; } *(_BYTE *)(v9 + v8) = 61; v12 = *(_DWORD *)this; *(_DWORD *)(this + 4) = v10; *(_BYTE *)(v12 + v8 + 1) = 0; v13 = strlen(**(const char ***)(*a2 + 16)); if ( v13 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)this, **(_BYTE ***)(*a2 + 16), v13); for ( i = 1; i != 6; ++i ) { v15 = *(_DWORD *)(this + 4); v16 = *(_DWORD *)this; if ( v27 == *(_DWORD *)this ) v17 = 15; else v17 = *(_DWORD *)(this + 8); if ( v15 + 1 > v17 ) { std::string::_M_mutate(this, v15, 0, 0, 1u); v16 = *(_DWORD *)this; } *(_BYTE *)(v16 + v15) = 59; *(_DWORD *)(this + 4) = v15 + 1; *(_BYTE *)(*(_DWORD *)this + v15 + 1) = 0; v18 = strlen(std::locale::_S_categories[i]); if ( v18 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)this, std::locale::_S_categories[i], v18); v19 = *(_DWORD *)(this + 4); v20 = *(_DWORD *)this; if ( v27 == *(_DWORD *)this ) v21 = 15; else v21 = *(_DWORD *)(this + 8); if ( v19 + 1 > v21 ) { std::string::_M_mutate(this, v19, 0, 0, 1u); v20 = *(_DWORD *)this; } *(_BYTE *)(v20 + v19) = 61; *(_DWORD *)(this + 4) = v19 + 1; *(_BYTE *)(*(_DWORD *)this + v19 + 1) = 0; v22 = strlen(*(const char **)(*(_DWORD *)(*a2 + 16) + i * 4)); if ( v22 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)this, *(_BYTE **)(*(_DWORD *)(*a2 + 16) + i * 4), v22); } return this; } // 4F0AF4: using guessed type char **std::locale::_S_categories; //----- (00449510) -------------------------------------------------------- unsigned int **__thiscall std::locale::name(unsigned int **ecx0, std::locale *this) { int v3; // edi unsigned int v4; // esi int v5; // eax size_t v6; // eax int v7; // edi unsigned int *v8; // eax size_t v9; // eax int i; // esi char *v11; // edx unsigned int v12; // edi unsigned int *v13; // eax int v14; // edx size_t v15; // eax char *v16; // edx unsigned int v17; // edi unsigned int *v18; // eax int v19; // edx size_t v20; // eax size_t v22; // eax const char *v23; // [esp+0h] [ebp-48h] unsigned int v24; // [esp+4h] [ebp-44h] unsigned int v25; // [esp+4h] [ebp-44h] unsigned int v26; // [esp+4h] [ebp-44h] unsigned int v27; // [esp+4h] [ebp-44h] unsigned int v28; // [esp+8h] [ebp-40h] unsigned int v29; // [esp+8h] [ebp-40h] unsigned int v30; // [esp+8h] [ebp-40h] unsigned int v31; // [esp+8h] [ebp-40h] char v32; // [esp+10h] [ebp-38h] char *Str; // [esp+18h] [ebp-30h] char *Str1; // [esp+1Ch] [ebp-2Ch] char *Str1a; // [esp+1Ch] [ebp-2Ch] char *Str1b; // [esp+1Ch] [ebp-2Ch] *ecx0 = (unsigned int *)&unk_4E93FC; v3 = *(_DWORD *)(*(_DWORD *)this + 16); Str = *(char **)v3; if ( *(_DWORD *)v3 ) { if ( *(_DWORD *)(v3 + 4) ) { v4 = 0; Str1 = *(char **)v3; while ( 1 ) { ++v4; v23 = Str1; Str1 = *(char **)(v3 + 4 * v4); v5 = strcmp(v23, Str1); if ( v4 > 4 ) break; if ( v5 ) goto LABEL_6; } if ( !v5 ) goto LABEL_25; LABEL_6: std::string::reserve(ecx0, (std::string *)0x80, v24); v6 = strlen(*std::locale::_S_categories); std::string::append(ecx0, (std::string *)*std::locale::_S_categories, v6, v28); v7 = *(*ecx0 - 3); if ( v7 + 1 > *(*ecx0 - 2) || (int)*(*ecx0 - 1) > 0 ) std::string::reserve(ecx0, (std::string *)(v7 + 1), v25); *((_BYTE *)*ecx0 + *(*ecx0 - 3)) = 61; v8 = *ecx0; if ( *ecx0 != (unsigned int *)&unk_4E93FC ) { *(v8 - 1) = 0; *(v8 - 3) = v7 + 1; *((_BYTE *)v8 + v7 + 1) = 0; } v9 = strlen(**(const char ***)(*(_DWORD *)this + 16)); std::string::append(ecx0, **(std::string ***)(*(_DWORD *)this + 16), v9, v29); for ( i = 1; i != 6; ++i ) { v11 = (char *)*(*ecx0 - 3); Str1a = v11; v12 = (unsigned int)(v11 + 1); if ( (unsigned int)(v11 + 1) > *(*ecx0 - 2) || (int)*(*ecx0 - 1) > 0 ) std::string::reserve(ecx0, (std::string *)(v11 + 1), v26); *((_BYTE *)*ecx0 + *(*ecx0 - 3)) = 59; v13 = *ecx0; v14 = (int)(*ecx0 - 3); if ( *ecx0 != (unsigned int *)&unk_4E93FC ) { *(v13 - 1) = 0; *(v13 - 3) = v12; Str1a[v14 + 13] = 0; } v15 = strlen(std::locale::_S_categories[i]); std::string::append(ecx0, (std::string *)std::locale::_S_categories[i], v15, v30); v16 = (char *)*(*ecx0 - 3); Str1b = v16; v17 = (unsigned int)(v16 + 1); if ( (unsigned int)(v16 + 1) > *(*ecx0 - 2) || (int)*(*ecx0 - 1) > 0 ) std::string::reserve(ecx0, (std::string *)(v16 + 1), v27); *((_BYTE *)*ecx0 + *(*ecx0 - 3)) = 61; v18 = *ecx0; v19 = (int)(*ecx0 - 3); if ( *ecx0 != (unsigned int *)&unk_4E93FC ) { *(v18 - 1) = 0; *(v18 - 3) = v17; Str1b[v19 + 13] = 0; } v20 = strlen(*(const char **)(*(_DWORD *)(*(_DWORD *)this + 16) + i * 4)); std::string::append(ecx0, *(std::string **)(*(_DWORD *)(*(_DWORD *)this + 16) + i * 4), v20, v31); } return ecx0; } else { LABEL_25: v22 = strlen(Str); std::string::assign((volatile signed __int32 **)ecx0, (std::string *)Str, v22, v28); return ecx0; } } else { std::string::_M_replace_aux( (volatile signed __int32 **)ecx0, 0, std::string::_Rep::_S_empty_rep_storage, 1u, 42, v32); return ecx0; } } // 44957E: variable 'v24' is possibly undefined // 44959E: variable 'v28' is possibly undefined // 4495BF: variable 'v25' is possibly undefined // 4495F8: variable 'v29' is possibly undefined // 449621: variable 'v26' is possibly undefined // 44965B: variable 'v30' is possibly undefined // 44967F: variable 'v27' is possibly undefined // 4496BC: variable 'v31' is possibly undefined // 449770: variable 'v32' is possibly undefined // 4F0AF4: using guessed type char **std::locale::_S_categories; //----- (004497B0) -------------------------------------------------------- _DWORD *__userpurge std::locale::facet::_M_cow_shim@( volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3) { void *v4; // eax _DWORD *v5; // esi int v7; // eax _WORD *v8; // eax int v9; // edi _DWORD *v10; // eax int v11; // ecx _DWORD *v12; // eax _DWORD *v13; // eax int v14; // eax _DWORD *v15; // eax int c_locale; // eax int v17; // edx _DWORD *v18; // eax _DWORD *v19; // eax _DWORD *v20; // eax int v21; // edi _DWORD *v22; // eax int v23; // eax _WORD *v24; // eax int v25; // edi _DWORD *v26; // eax int v27; // edx int v28; // eax _DWORD *v29; // eax int v30; // edi _DWORD *v31; // eax int v32; // eax _DWORD *v33; // eax _DWORD *v34; // eax _DWORD *v35; // eax int v36; // edi _DWORD *v37; // eax int v38; // edi _DWORD *v39; // eax int v40; // ecx _DWORD *v41; // eax int v42; // edi _DWORD *v43; // eax int v44; // edx int v45; // [esp+0h] [ebp-28h] int v46; // [esp+0h] [ebp-28h] int v47; // [esp+0h] [ebp-28h] int v48; // [esp+0h] [ebp-28h] int v49; // [esp+0h] [ebp-28h] int v50; // [esp+0h] [ebp-28h] void (__cdecl *v51)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v52)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v53)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v54)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v55)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v56)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v57)(void *); // [esp+4h] [ebp-24h] v4 = __dynamic_cast( (const void *)a1, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::locale::facet::__shim, -2); if ( v4 ) return *(_DWORD **)v4; if ( this == (std::locale::facet *)&std::numpunct::id ) { v8 = operator new((struct type_info *)0x68, v51); v8[18] = 0; v9 = (int)v8; *((_DWORD *)v8 + 1) = 0; *(_DWORD *)v8 = &off_4F65A0; *((_DWORD *)v8 + 2) = 0; *((_DWORD *)v8 + 3) = 0; *((_BYTE *)v8 + 16) = 0; *((_DWORD *)v8 + 5) = 0; *((_DWORD *)v8 + 6) = 0; *((_DWORD *)v8 + 7) = 0; *((_DWORD *)v8 + 8) = 0; *((_BYTE *)v8 + 100) = 0; v10 = operator new((struct type_info *)0x14, v52); v10[1] = 0; v5 = v10; *v10 = &off_4F6D3C; v10[2] = v9; std::numpunct::_M_initialize_numpunct(v10, 0); v11 = _CRT_MT; v5[3] = a1; if ( v11 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F5440; v5[4] = v9; LOBYTE(v45) = 0; std::__facet_shims::__numpunct_fill_cache(v45, (int *)a1, v9); } else if ( this == (std::locale::facet *)&std::collate::id ) { v15 = operator new((struct type_info *)0x10, v51); v15[1] = 0; v5 = v15; *v15 = &off_4F6BD0; c_locale = std::locale::facet::_S_get_c_locale(); v17 = _CRT_MT; v5[2] = c_locale; v5[3] = a1; if ( v17 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F5360; } else if ( this == (std::locale::facet *)&std::time_get>::id ) { v12 = operator new((struct type_info *)0xC, v51); v12[1] = 0; v5 = v12; *v12 = &off_4F6D84; v12[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v12 = &off_4F54D0; } else if ( this == (std::locale::facet *)&std::money_get>::id ) { v18 = operator new((struct type_info *)0xC, v51); v18[1] = 0; v5 = v18; *v18 = &off_4F6E44; v18[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v18 = &off_4F5578; } else if ( this == (std::locale::facet *)&std::money_put>::id ) { v19 = operator new((struct type_info *)0xC, v51); v19[1] = 0; v5 = v19; *v19 = &off_4F6E74; v19[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v19 = &off_4F55D8; } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v20 = operator new((struct type_info *)0x44, v51); *v20 = &off_4F66D4; v21 = (int)v20; v20[1] = 0; v20[2] = 0; v20[3] = 0; *((_WORD *)v20 + 8) = 0; *((_BYTE *)v20 + 18) = 0; v20[5] = 0; v20[6] = 0; v20[7] = 0; v20[8] = 0; v20[9] = 0; v20[10] = 0; v20[11] = 0; v20[12] = 0; v20[13] = 0; *((_BYTE *)v20 + 67) = 0; v22 = operator new((struct type_info *)0x14, v53); v22[1] = 0; v5 = v22; *v22 = &off_4F5EC4; v22[2] = v21; std::moneypunct::_M_initialize_moneypunct(v22, 0, 0); v23 = _CRT_MT; v5[3] = a1; if ( v23 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F56A0; v5[4] = v21; LOBYTE(v46) = 0; std::__facet_shims::__moneypunct_fill_cache(v46, (int *)a1, v21); } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v24 = operator new((struct type_info *)0x44, v51); v24[8] = 0; v25 = (int)v24; *(_DWORD *)v24 = &off_4F66C4; *((_DWORD *)v24 + 1) = 0; *((_DWORD *)v24 + 2) = 0; *((_DWORD *)v24 + 3) = 0; *((_BYTE *)v24 + 18) = 0; *((_DWORD *)v24 + 5) = 0; *((_DWORD *)v24 + 6) = 0; *((_DWORD *)v24 + 7) = 0; *((_DWORD *)v24 + 8) = 0; *((_DWORD *)v24 + 9) = 0; *((_DWORD *)v24 + 10) = 0; *((_DWORD *)v24 + 11) = 0; *((_DWORD *)v24 + 12) = 0; *((_DWORD *)v24 + 13) = 0; *((_BYTE *)v24 + 67) = 0; v26 = operator new((struct type_info *)0x14, v54); v26[1] = 0; v5 = v26; *v26 = &off_4F5E90; v26[2] = v25; std::moneypunct::_M_initialize_moneypunct(v26, 0, 0); v27 = _CRT_MT; v5[3] = a1; if ( v27 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F5638; v5[4] = v25; LOBYTE(v47) = 0; std::__facet_shims::__moneypunct_fill_cache(v47, (int *)a1, v25); } else if ( this == (std::locale::facet *)&std::messages::id ) { v5 = operator new((struct type_info *)0x14, v51); std::messages::messages(v5, 0); v28 = _CRT_MT; v5[4] = a1; if ( v28 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F53D0; } else if ( this == (std::locale::facet *)&std::numpunct::id ) { v29 = operator new((struct type_info *)0xA8, v51); v29[1] = 0; v30 = (int)v29; *v29 = &off_4F65B0; v29[2] = 0; v29[3] = 0; *((_BYTE *)v29 + 16) = 0; v29[5] = 0; v29[6] = 0; v29[7] = 0; v29[8] = 0; v29[9] = 0; *((_BYTE *)v29 + 164) = 0; v31 = operator new((struct type_info *)0x14, v55); v31[1] = 0; v5 = v31; *v31 = &off_4F6D60; v31[2] = v30; std::numpunct::_M_initialize_numpunct(v31, 0); v32 = _CRT_MT; v5[3] = a1; if ( v32 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F5488; v5[4] = v30; LOBYTE(v48) = 0; std::__facet_shims::__numpunct_fill_cache(v48, (int *)a1, v30); } else if ( this == (std::locale::facet *)&std::collate::id ) { v13 = operator new((struct type_info *)0x10, v51); v13[1] = 0; v5 = v13; *v13 = &off_4F6BEC; v13[2] = std::locale::facet::_S_get_c_locale(); v14 = _CRT_MT; v5[3] = a1; if ( v14 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F5398; } else if ( this == (std::locale::facet *)&std::time_get>::id ) { v33 = operator new((struct type_info *)0xC, v51); v33[1] = 0; v5 = v33; *v33 = &off_4F6DAC; v33[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v33 = &off_4F5524; } else if ( this == (std::locale::facet *)&std::money_get>::id ) { v34 = operator new((struct type_info *)0xC, v51); v34[1] = 0; v5 = v34; *v34 = &off_4F6E5C; v34[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v34 = &off_4F55A8; } else if ( this == (std::locale::facet *)std::money_put>::id ) { v35 = operator new((struct type_info *)0xC, v51); v36 = _CRT_MT; v35[1] = 0; v5 = v35; *v35 = &off_4F6E8C; v35[2] = a1; if ( v36 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v35 = &off_4F5608; } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v37 = operator new((struct type_info *)0x54, v51); v37[1] = 0; v38 = (int)v37; *v37 = &off_4F66F4; v37[2] = 0; v37[3] = 0; *((_BYTE *)v37 + 16) = 0; *(_DWORD *)((char *)v37 + 18) = 0; v37[6] = 0; v37[7] = 0; v37[8] = 0; v37[9] = 0; v37[10] = 0; v37[11] = 0; v37[12] = 0; v37[13] = 0; v37[14] = 0; *((_BYTE *)v37 + 82) = 0; v39 = operator new((struct type_info *)0x14, v56); v39[1] = 0; v5 = v39; *v39 = &off_4F5F2C; v39[2] = v38; std::moneypunct::_M_initialize_moneypunct(v39, 0, 0); v40 = _CRT_MT; v5[3] = a1; if ( v40 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F5770; v5[4] = v38; LOBYTE(v49) = 0; std::__facet_shims::__moneypunct_fill_cache(v49, (int *)a1, v38); } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v41 = operator new((struct type_info *)0x54, v51); v41[1] = 0; v42 = (int)v41; *v41 = &off_4F66E4; v41[2] = 0; v41[3] = 0; *((_BYTE *)v41 + 16) = 0; *(_DWORD *)((char *)v41 + 18) = 0; v41[6] = 0; v41[7] = 0; v41[8] = 0; v41[9] = 0; v41[10] = 0; v41[11] = 0; v41[12] = 0; v41[13] = 0; v41[14] = 0; *((_BYTE *)v41 + 82) = 0; v43 = operator new((struct type_info *)0x14, v57); v43[1] = 0; v5 = v43; *v43 = &off_4F5EF8; v43[2] = v42; std::moneypunct::_M_initialize_moneypunct(v43, 0, 0); v44 = _CRT_MT; v5[3] = a1; if ( v44 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F5708; v5[4] = v42; LOBYTE(v50) = 0; std::__facet_shims::__moneypunct_fill_cache(v50, (int *)a1, v42); } else { if ( this != (std::locale::facet *)&std::messages::id ) std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); v5 = operator new((struct type_info *)0x14, v51); std::messages::messages(v5, 0); v7 = _CRT_MT; v5[4] = a1; if ( v7 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F5408; } return v5; } // 4498B7: variable 'v51' is possibly undefined // 44994A: variable 'v52' is possibly undefined // 449998: variable 'v45' is possibly undefined // 449B7D: variable 'v53' is possibly undefined // 449BD6: variable 'v46' is possibly undefined // 449C5D: variable 'v54' is possibly undefined // 449CB7: variable 'v47' is possibly undefined // 449D8E: variable 'v55' is possibly undefined // 449DDF: variable 'v48' is possibly undefined // 449F52: variable 'v56' is possibly undefined // 449FAC: variable 'v49' is possibly undefined // 44A03E: variable 'v57' is possibly undefined // 44A094: variable 'v50' is possibly undefined // 4E940C: using guessed type int std::moneypunct::id; // 4E9410: using guessed type int std::moneypunct::id; // 4E9414: using guessed type int std::moneypunct::id; // 4E9418: using guessed type int std::moneypunct::id; // 4E95E0: using guessed type int std::collate::id; // 4E95E4: using guessed type int std::collate::id; // 4E9600: using guessed type int std::messages::id; // 4E9604: using guessed type int std::messages::id; // 4E9608: using guessed type int std::numpunct::id; // 4E960C: using guessed type int std::numpunct::id; // 4E9610: using guessed type int std::time_get>::id; // 4E9614: using guessed type int std::time_get>::id; // 4E9620: using guessed type int std::money_get>::id; // 4E9624: using guessed type int std::money_get>::id; // 4E9628: using guessed type int std::money_put>::id; // 4E962C: using guessed type int std::money_put>::id[5]; // 4F1728: using guessed type int *`typeinfo for'std::locale::facet::__shim; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F5360: using guessed type int (*off_4F5360)(); // 4F5398: using guessed type int (*off_4F5398)(); // 4F53D0: using guessed type int (*off_4F53D0)(); // 4F5408: using guessed type int (*off_4F5408)(); // 4F5440: using guessed type int (*off_4F5440)(); // 4F5488: using guessed type int (*off_4F5488)(); // 4F54D0: using guessed type int (*off_4F54D0)(); // 4F5524: using guessed type int (*off_4F5524)(); // 4F5578: using guessed type int (*off_4F5578)(); // 4F55A8: using guessed type int (*off_4F55A8)(); // 4F55D8: using guessed type int (*off_4F55D8)(); // 4F5608: using guessed type int (*off_4F5608)(); // 4F5638: using guessed type int (*off_4F5638)(); // 4F56A0: using guessed type int (*off_4F56A0)(); // 4F5708: using guessed type int (*off_4F5708)(); // 4F5770: using guessed type int (*off_4F5770)(); // 4F5E90: using guessed type int (*off_4F5E90)(); // 4F5EC4: using guessed type int (*off_4F5EC4)(); // 4F5EF8: using guessed type int (*off_4F5EF8)(); // 4F5F2C: using guessed type int (*off_4F5F2C)(); // 4F65A0: using guessed type int (*off_4F65A0)(); // 4F65B0: using guessed type int (*off_4F65B0)(); // 4F66C4: using guessed type int (*off_4F66C4)(); // 4F66D4: using guessed type int (*off_4F66D4)(); // 4F66E4: using guessed type int (*off_4F66E4)(); // 4F66F4: using guessed type int (*off_4F66F4)(); // 4F6BD0: using guessed type int (*off_4F6BD0)(); // 4F6BEC: using guessed type int (*off_4F6BEC)(); // 4F6D3C: using guessed type int (*off_4F6D3C)(); // 4F6D60: using guessed type int (*off_4F6D60)(); // 4F6D84: using guessed type int (*off_4F6D84)(); // 4F6DAC: using guessed type int (*off_4F6DAC)(); // 4F6E44: using guessed type int (*off_4F6E44)(); // 4F6E5C: using guessed type int (*off_4F6E5C)(); // 4F6E74: using guessed type int (*off_4F6E74)(); // 4F6E8C: using guessed type int (*off_4F6E8C)(); // 15412D0: using guessed type int _CRT_MT; //----- (0044A160) -------------------------------------------------------- _DWORD *__userpurge std::locale::facet::_M_sso_shim@( volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3) { void *v4; // eax _DWORD *v5; // esi int v7; // eax _WORD *v8; // eax int v9; // edi _DWORD *v10; // eax int v11; // ecx _DWORD *v12; // eax _DWORD *v13; // eax int v14; // eax _DWORD *v15; // eax int c_locale; // eax int v17; // edx _DWORD *v18; // eax _DWORD *v19; // eax _DWORD *v20; // eax int v21; // edi _DWORD *v22; // eax int v23; // eax _WORD *v24; // eax int v25; // edi _DWORD *v26; // eax int v27; // edx int v28; // eax _DWORD *v29; // eax int v30; // edi _DWORD *v31; // eax int v32; // eax _DWORD *v33; // eax _DWORD *v34; // eax _DWORD *v35; // eax int v36; // edi _DWORD *v37; // eax int v38; // edi _DWORD *v39; // eax int v40; // ecx _DWORD *v41; // eax int v42; // edi _DWORD *v43; // eax int v44; // edx int v45; // [esp+0h] [ebp-28h] int v46; // [esp+0h] [ebp-28h] int v47; // [esp+0h] [ebp-28h] int v48; // [esp+0h] [ebp-28h] int v49; // [esp+0h] [ebp-28h] int v50; // [esp+0h] [ebp-28h] void (__cdecl *v51)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v52)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v53)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v54)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v55)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v56)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v57)(void *); // [esp+4h] [ebp-24h] v4 = __dynamic_cast( (const void *)a1, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::locale::facet::__shim, -2); if ( v4 ) return *(_DWORD **)v4; if ( this == (std::locale::facet *)&std::numpunct::id ) { v8 = operator new((struct type_info *)0x68, v51); v8[18] = 0; v9 = (int)v8; *((_DWORD *)v8 + 1) = 0; *(_DWORD *)v8 = &off_4F65A0; *((_DWORD *)v8 + 2) = 0; *((_DWORD *)v8 + 3) = 0; *((_BYTE *)v8 + 16) = 0; *((_DWORD *)v8 + 5) = 0; *((_DWORD *)v8 + 6) = 0; *((_DWORD *)v8 + 7) = 0; *((_DWORD *)v8 + 8) = 0; *((_BYTE *)v8 + 100) = 0; v10 = operator new((struct type_info *)0x14, v52); v10[1] = 0; v5 = v10; *v10 = &off_4F5CC8; v10[2] = v9; std::numpunct::_M_initialize_numpunct(v10, 0); v11 = _CRT_MT; v5[3] = a1; if ( v11 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F5464; v5[4] = v9; LOBYTE(v45) = 0; std::__facet_shims::__numpunct_fill_cache(v45, (int *)a1, v9); } else if ( this == (std::locale::facet *)&std::collate::id ) { v15 = operator new((struct type_info *)0x10, v51); v15[1] = 0; v5 = v15; *v15 = &off_4F5C58; c_locale = std::locale::facet::_S_get_c_locale(); v17 = _CRT_MT; v5[2] = c_locale; v5[3] = a1; if ( v17 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F537C; } else if ( this == (std::locale::facet *)&std::time_get>::id ) { v12 = operator new((struct type_info *)0xC, v51); v12[1] = 0; v5 = v12; *v12 = &off_4F5D10; v12[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v12 = &off_4F54F8; } else if ( this == (std::locale::facet *)&std::money_get>::id ) { v18 = operator new((struct type_info *)0xC, v51); v18[1] = 0; v5 = v18; *v18 = &off_4F5D68; v18[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v18 = &off_4F5590; } else if ( this == (std::locale::facet *)&std::money_put>::id ) { v19 = operator new((struct type_info *)0xC, v51); v19[1] = 0; v5 = v19; *v19 = &off_4F5D98; v19[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v19 = &off_4F55F0; } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v20 = operator new((struct type_info *)0x44, v51); *v20 = &off_4F66D4; v21 = (int)v20; v20[1] = 0; v20[2] = 0; v20[3] = 0; *((_WORD *)v20 + 8) = 0; *((_BYTE *)v20 + 18) = 0; v20[5] = 0; v20[6] = 0; v20[7] = 0; v20[8] = 0; v20[9] = 0; v20[10] = 0; v20[11] = 0; v20[12] = 0; v20[13] = 0; *((_BYTE *)v20 + 67) = 0; v22 = operator new((struct type_info *)0x14, v53); v22[1] = 0; v5 = v22; *v22 = &off_4F5844; v22[2] = v21; std::moneypunct::_M_initialize_moneypunct(v22, 0, 0); v23 = _CRT_MT; v5[3] = a1; if ( v23 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F56D4; v5[4] = v21; LOBYTE(v46) = 0; std::__facet_shims::__moneypunct_fill_cache(v46, (int *)a1, v21); } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v24 = operator new((struct type_info *)0x44, v51); v24[8] = 0; v25 = (int)v24; *(_DWORD *)v24 = &off_4F66C4; *((_DWORD *)v24 + 1) = 0; *((_DWORD *)v24 + 2) = 0; *((_DWORD *)v24 + 3) = 0; *((_BYTE *)v24 + 18) = 0; *((_DWORD *)v24 + 5) = 0; *((_DWORD *)v24 + 6) = 0; *((_DWORD *)v24 + 7) = 0; *((_DWORD *)v24 + 8) = 0; *((_DWORD *)v24 + 9) = 0; *((_DWORD *)v24 + 10) = 0; *((_DWORD *)v24 + 11) = 0; *((_DWORD *)v24 + 12) = 0; *((_DWORD *)v24 + 13) = 0; *((_BYTE *)v24 + 67) = 0; v26 = operator new((struct type_info *)0x14, v54); v26[1] = 0; v5 = v26; *v26 = &off_4F5810; v26[2] = v25; std::moneypunct::_M_initialize_moneypunct(v26, 0, 0); v27 = _CRT_MT; v5[3] = a1; if ( v27 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F566C; v5[4] = v25; LOBYTE(v47) = 0; std::__facet_shims::__moneypunct_fill_cache(v47, (int *)a1, v25); } else if ( this == (std::locale::facet *)&std::messages::id ) { v5 = operator new((struct type_info *)0x14, v51); std::messages::messages(v5, 0); v28 = _CRT_MT; v5[4] = a1; if ( v28 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F53EC; } else if ( this == (std::locale::facet *)&std::numpunct::id ) { v29 = operator new((struct type_info *)0xA8, v51); v29[1] = 0; v30 = (int)v29; *v29 = &off_4F65B0; v29[2] = 0; v29[3] = 0; *((_BYTE *)v29 + 16) = 0; v29[5] = 0; v29[6] = 0; v29[7] = 0; v29[8] = 0; v29[9] = 0; *((_BYTE *)v29 + 164) = 0; v31 = operator new((struct type_info *)0x14, v55); v31[1] = 0; v5 = v31; *v31 = &off_4F5CEC; v31[2] = v30; std::numpunct::_M_initialize_numpunct(v31, 0); v32 = _CRT_MT; v5[3] = a1; if ( v32 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F54AC; v5[4] = v30; LOBYTE(v48) = 0; std::__facet_shims::__numpunct_fill_cache(v48, (int *)a1, v30); } else if ( this == (std::locale::facet *)&std::collate::id ) { v13 = operator new((struct type_info *)0x10, v51); v13[1] = 0; v5 = v13; *v13 = &off_4F5C74; v13[2] = std::locale::facet::_S_get_c_locale(); v14 = _CRT_MT; v5[3] = a1; if ( v14 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F53B4; } else if ( this == (std::locale::facet *)&std::time_get>::id ) { v33 = operator new((struct type_info *)0xC, v51); v33[1] = 0; v5 = v33; *v33 = &off_4F5D3C; v33[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v33 = &off_4F554C; } else if ( this == (std::locale::facet *)&std::money_get>::id ) { v34 = operator new((struct type_info *)0xC, v51); v34[1] = 0; v5 = v34; *v34 = &off_4F5D80; v34[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v34 = &off_4F55C0; } else if ( this == (std::locale::facet *)&std::money_put>::id ) { v35 = operator new((struct type_info *)0xC, v51); v36 = _CRT_MT; v35[1] = 0; v5 = v35; *v35 = &off_4F5DB0; v35[2] = a1; if ( v36 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v35 = &off_4F5620; } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v37 = operator new((struct type_info *)0x54, v51); v37[1] = 0; v38 = (int)v37; *v37 = &off_4F66F4; v37[2] = 0; v37[3] = 0; *((_BYTE *)v37 + 16) = 0; *(_DWORD *)((char *)v37 + 18) = 0; v37[6] = 0; v37[7] = 0; v37[8] = 0; v37[9] = 0; v37[10] = 0; v37[11] = 0; v37[12] = 0; v37[13] = 0; v37[14] = 0; *((_BYTE *)v37 + 82) = 0; v39 = operator new((struct type_info *)0x14, v56); v39[1] = 0; v5 = v39; *v39 = &off_4F58AC; v39[2] = v38; std::moneypunct::_M_initialize_moneypunct(v39, 0, 0); v40 = _CRT_MT; v5[3] = a1; if ( v40 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F57A4; v5[4] = v38; LOBYTE(v49) = 0; std::__facet_shims::__moneypunct_fill_cache(v49, (int *)a1, v38); } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v41 = operator new((struct type_info *)0x54, v51); v41[1] = 0; v42 = (int)v41; *v41 = &off_4F66E4; v41[2] = 0; v41[3] = 0; *((_BYTE *)v41 + 16) = 0; *(_DWORD *)((char *)v41 + 18) = 0; v41[6] = 0; v41[7] = 0; v41[8] = 0; v41[9] = 0; v41[10] = 0; v41[11] = 0; v41[12] = 0; v41[13] = 0; v41[14] = 0; *((_BYTE *)v41 + 82) = 0; v43 = operator new((struct type_info *)0x14, v57); v43[1] = 0; v5 = v43; *v43 = &off_4F5878; v43[2] = v42; std::moneypunct::_M_initialize_moneypunct(v43, 0, 0); v44 = _CRT_MT; v5[3] = a1; if ( v44 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F573C; v5[4] = v42; LOBYTE(v50) = 0; std::__facet_shims::__moneypunct_fill_cache(v50, (int *)a1, v42); } else { if ( this != (std::locale::facet *)&std::messages::id ) std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); v5 = operator new((struct type_info *)0x14, v51); std::messages::messages(v5, 0); v7 = _CRT_MT; v5[4] = a1; if ( v7 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v5 = &off_4F5424; } return v5; } // 44A267: variable 'v51' is possibly undefined // 44A2FA: variable 'v52' is possibly undefined // 44A348: variable 'v45' is possibly undefined // 44A52D: variable 'v53' is possibly undefined // 44A586: variable 'v46' is possibly undefined // 44A60D: variable 'v54' is possibly undefined // 44A667: variable 'v47' is possibly undefined // 44A73E: variable 'v55' is possibly undefined // 44A78F: variable 'v48' is possibly undefined // 44A902: variable 'v56' is possibly undefined // 44A95C: variable 'v49' is possibly undefined // 44A9EE: variable 'v57' is possibly undefined // 44AA44: variable 'v50' is possibly undefined // 4F1728: using guessed type int *`typeinfo for'std::locale::facet::__shim; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F537C: using guessed type int (*off_4F537C)(); // 4F53B4: using guessed type int (*off_4F53B4)(); // 4F53EC: using guessed type int (*off_4F53EC)(); // 4F5424: using guessed type int (*off_4F5424)(); // 4F5464: using guessed type int (*off_4F5464)(); // 4F54AC: using guessed type int (*off_4F54AC)(); // 4F54F8: using guessed type int (*off_4F54F8)(); // 4F554C: using guessed type int (*off_4F554C)(); // 4F5590: using guessed type int (*off_4F5590)(); // 4F55C0: using guessed type int (*off_4F55C0)(); // 4F55F0: using guessed type int (*off_4F55F0)(); // 4F5620: using guessed type int (*off_4F5620)(); // 4F566C: using guessed type int (*off_4F566C)(); // 4F56D4: using guessed type int (*off_4F56D4)(); // 4F573C: using guessed type int (*off_4F573C)(); // 4F57A4: using guessed type int (*off_4F57A4)(); // 4F5810: using guessed type int (*off_4F5810)(); // 4F5844: using guessed type int (*off_4F5844)(); // 4F5878: using guessed type int (*off_4F5878)(); // 4F58AC: using guessed type int (*off_4F58AC)(); // 4F5C58: using guessed type int (*off_4F5C58)(); // 4F5C74: using guessed type int (*off_4F5C74)(); // 4F5CC8: using guessed type int (*off_4F5CC8)(); // 4F5CEC: using guessed type int (*off_4F5CEC)(); // 4F5D10: using guessed type int (*off_4F5D10)(); // 4F5D3C: using guessed type int (*off_4F5D3C)(); // 4F5D68: using guessed type int (*off_4F5D68)(); // 4F5D80: using guessed type int (*off_4F5D80)(); // 4F5D98: using guessed type int (*off_4F5D98)(); // 4F5DB0: using guessed type int (*off_4F5DB0)(); // 4F65A0: using guessed type int (*off_4F65A0)(); // 4F65B0: using guessed type int (*off_4F65B0)(); // 4F66C4: using guessed type int (*off_4F66C4)(); // 4F66D4: using guessed type int (*off_4F66D4)(); // 4F66E4: using guessed type int (*off_4F66E4)(); // 4F66F4: using guessed type int (*off_4F66F4)(); // 15412D0: using guessed type int _CRT_MT; //----- (0044AB10) -------------------------------------------------------- int __fastcall std::locale::facet::_M_remove_reference(volatile signed __int32 *a1) { int result; // eax if ( _CRT_MT ) { result = _InterlockedExchangeAdd(a1 + 1, 0xFFFFFFFF); } else { result = *((_DWORD *)a1 + 1); *((_DWORD *)a1 + 1) = result - 1; } if ( result == 1 ) return (*(int (__fastcall **)(volatile signed __int32 *))(*a1 + 4))(a1); return result; } // 15412D0: using guessed type int _CRT_MT; //----- (0044AB50) -------------------------------------------------------- bool __thiscall std::locale::operator==(int *this, int *a2) { int v2; // edi const char **v4; // ecx char *v5; // ebx bool result; // al const char **v7; // [esp+1Ch] [ebp-4Ch] bool v8; // [esp+1Ch] [ebp-4Ch] bool v9; // [esp+1Ch] [ebp-4Ch] void *Buf1; // [esp+20h] [ebp-48h] BYREF size_t Size; // [esp+24h] [ebp-44h] char v12; // [esp+28h] [ebp-40h] BYREF void *Buf2[2]; // [esp+38h] [ebp-30h] BYREF char v14; // [esp+40h] [ebp-28h] BYREF if ( *this == *a2 ) return 1; v2 = *(_DWORD *)(*this + 16); if ( !*(_DWORD *)v2 ) return 0; v4 = *(const char ***)(*a2 + 16); v7 = v4; if ( !*v4 || strcmp(*(const char **)v2, *v4) ) return 0; if ( !*(_DWORD *)(v2 + 4) && !v7[1] ) return 1; std::locale::name[abi:cxx11]((int)Buf2, a2); std::locale::name[abi:cxx11]((int)&Buf1, this); v5 = (char *)Buf1; result = 0; if ( (void *)Size == Buf2[1] ) { result = 1; if ( Size ) result = memcmp(Buf1, Buf2[0], Size) == 0; } if ( v5 != &v12 ) { v8 = result; operator delete(v5); result = v8; } if ( Buf2[0] != &v14 ) { v9 = result; operator delete(Buf2[0]); return v9; } return result; } //----- (0044AC60) -------------------------------------------------------- int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3) { unsigned int v3; // eax int v4; // edx int v5; // ecx bool v6; // cf unsigned int v7; // eax v3 = -1431655765 * ((this[1] - *this) >> 3); if ( 89478485 - v3 < a2 ) std::__throw_length_error(a3); v4 = a2; if ( a2 < v3 ) v4 = -1431655765 * ((this[1] - *this) >> 3); v5 = 89478485; v6 = __CFADD__(v4, v3); v7 = v4 + v3; if ( !v6 ) { v5 = v7; if ( v7 > 0x5555555 ) return 89478485; } return v5; } //----- (0044ACC0) -------------------------------------------------------- int __fastcall std::moneypunct::neg_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 40); if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) return *(_DWORD *)(a1[2] + 52); else return v1(); } //----- (0044ACE0) -------------------------------------------------------- int __fastcall std::moneypunct::pos_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 36); if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) return *(_DWORD *)(a1[2] + 48); else return v1(); } //----- (0044AD00) -------------------------------------------------------- void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 20); if ( v3 == std::moneypunct::do_curr_symbol ) { Str = *(char **)(a2[2] + 20); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44AD44: variable 'v7' is possibly undefined //----- (0044AD80) -------------------------------------------------------- void **__thiscall std::moneypunct::do_grouping(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44ADB7: variable 'v6' is possibly undefined //----- (0044ADD0) -------------------------------------------------------- int __fastcall std::moneypunct::frac_digits(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 32); if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) return *(_DWORD *)(a1[2] + 44); else return v1(); } //----- (0044ADF0) -------------------------------------------------------- int __fastcall std::moneypunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) return *(unsigned __int8 *)(a1[2] + 17); else return v1(); } //----- (0044AE10) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (0044AE20) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (0044AE30) -------------------------------------------------------- void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 28); if ( v3 == std::moneypunct::do_negative_sign ) { Str = *(char **)(a2[2] + 36); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44AE74: variable 'v7' is possibly undefined //----- (0044AEB0) -------------------------------------------------------- void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 24); if ( v3 == std::moneypunct::do_positive_sign ) { Str = *(char **)(a2[2] + 28); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44AEF4: variable 'v7' is possibly undefined //----- (0044AF30) -------------------------------------------------------- int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) return *(unsigned __int8 *)(a1[2] + 18); else return v1(); } //----- (0044AF50) -------------------------------------------------------- void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 20); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44AF87: variable 'v6' is possibly undefined //----- (0044AFA0) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (0044AFB0) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (0044AFC0) -------------------------------------------------------- void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 36); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44AFF7: variable 'v6' is possibly undefined //----- (0044B010) -------------------------------------------------------- void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 28); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44B047: variable 'v6' is possibly undefined //----- (0044B060) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (0044B070) -------------------------------------------------------- void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); if ( v3 == std::moneypunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44B0B4: variable 'v7' is possibly undefined //----- (0044B0F0) -------------------------------------------------------- int __fastcall std::moneypunct::neg_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 40); if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) return *(_DWORD *)(a1[2] + 52); else return v1(); } //----- (0044B110) -------------------------------------------------------- int __fastcall std::moneypunct::pos_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 36); if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) return *(_DWORD *)(a1[2] + 48); else return v1(); } //----- (0044B130) -------------------------------------------------------- void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 20); if ( v3 == std::moneypunct::do_curr_symbol ) { Str = *(char **)(a2[2] + 20); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44B174: variable 'v7' is possibly undefined //----- (0044B1B0) -------------------------------------------------------- void **__thiscall std::moneypunct::do_grouping(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44B1E7: variable 'v6' is possibly undefined //----- (0044B200) -------------------------------------------------------- int __fastcall std::moneypunct::frac_digits(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 32); if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) return *(_DWORD *)(a1[2] + 44); else return v1(); } //----- (0044B220) -------------------------------------------------------- int __fastcall std::moneypunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) return *(unsigned __int8 *)(a1[2] + 17); else return v1(); } //----- (0044B240) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (0044B250) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (0044B260) -------------------------------------------------------- void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 28); if ( v3 == std::moneypunct::do_negative_sign ) { Str = *(char **)(a2[2] + 36); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44B2A4: variable 'v7' is possibly undefined //----- (0044B2E0) -------------------------------------------------------- void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 24); if ( v3 == std::moneypunct::do_positive_sign ) { Str = *(char **)(a2[2] + 28); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44B324: variable 'v7' is possibly undefined //----- (0044B360) -------------------------------------------------------- int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) return *(unsigned __int8 *)(a1[2] + 18); else return v1(); } //----- (0044B380) -------------------------------------------------------- void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 20); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44B3B7: variable 'v6' is possibly undefined //----- (0044B3D0) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (0044B3E0) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (0044B3F0) -------------------------------------------------------- void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 36); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44B427: variable 'v6' is possibly undefined //----- (0044B440) -------------------------------------------------------- void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 28); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44B477: variable 'v6' is possibly undefined //----- (0044B490) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (0044B4A0) -------------------------------------------------------- void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); if ( v3 == std::moneypunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44B4E4: variable 'v7' is possibly undefined //----- (0044B520) -------------------------------------------------------- int __fastcall std::moneypunct::neg_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 40); if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) return *(_DWORD *)(a1[2] + 56); else return v1(); } //----- (0044B540) -------------------------------------------------------- int __fastcall std::moneypunct::pos_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 36); if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) return *(_DWORD *)(a1[2] + 52); else return v1(); } //----- (0044B560) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2) { wchar_t **(__thiscall *v3)(wchar_t **, int); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 20); if ( v3 == std::moneypunct::do_curr_symbol ) { String = *(wchar_t **)(a2[2] + 24); *this = (wchar_t *)(this + 2); v5 = -2; if ( String ) v5 = (int)&String[wcslen(String)]; LOBYTE(v7) = 0; std::wstring::_M_construct(this, String, v5, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44B5A5: variable 'v7' is possibly undefined //----- (0044B5E0) -------------------------------------------------------- void **__thiscall std::moneypunct::do_grouping(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44B617: variable 'v6' is possibly undefined //----- (0044B630) -------------------------------------------------------- int __fastcall std::moneypunct::frac_digits(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 32); if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) return *(_DWORD *)(a1[2] + 48); else return v1(); } //----- (0044B650) -------------------------------------------------------- int __fastcall std::moneypunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) return *(unsigned __int16 *)(a1[2] + 18); else return v1(); } //----- (0044B670) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (0044B680) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (0044B690) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2) { wchar_t **(__thiscall *v3)(wchar_t **, int); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 28); if ( v3 == std::moneypunct::do_negative_sign ) { String = *(wchar_t **)(a2[2] + 40); *this = (wchar_t *)(this + 2); v5 = -2; if ( String ) v5 = (int)&String[wcslen(String)]; LOBYTE(v7) = 0; std::wstring::_M_construct(this, String, v5, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44B6D5: variable 'v7' is possibly undefined //----- (0044B710) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2) { wchar_t **(__thiscall *v3)(wchar_t **, int); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 24); if ( v3 == std::moneypunct::do_positive_sign ) { String = *(wchar_t **)(a2[2] + 32); *this = (wchar_t *)(this + 2); v5 = -2; if ( String ) v5 = (int)&String[wcslen(String)]; LOBYTE(v7) = 0; std::wstring::_M_construct(this, String, v5, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44B755: variable 'v7' is possibly undefined //----- (0044B790) -------------------------------------------------------- int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) return *(unsigned __int16 *)(a1[2] + 20); else return v1(); } //----- (0044B7B0) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); *this = (wchar_t *)(this + 2); v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 44B7E8: variable 'v6' is possibly undefined //----- (0044B800) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (0044B810) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (0044B820) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); *this = (wchar_t *)(this + 2); v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 44B858: variable 'v6' is possibly undefined //----- (0044B870) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); *this = (wchar_t *)(this + 2); v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 44B8A8: variable 'v6' is possibly undefined //----- (0044B8C0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (0044B8D0) -------------------------------------------------------- void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); if ( v3 == std::moneypunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44B914: variable 'v7' is possibly undefined //----- (0044B950) -------------------------------------------------------- int __fastcall std::moneypunct::neg_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 40); if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) return *(_DWORD *)(a1[2] + 56); else return v1(); } //----- (0044B970) -------------------------------------------------------- int __fastcall std::moneypunct::pos_format(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 36); if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) return *(_DWORD *)(a1[2] + 52); else return v1(); } //----- (0044B990) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2) { wchar_t **(__thiscall *v3)(wchar_t **, int); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 20); if ( v3 == std::moneypunct::do_curr_symbol ) { String = *(wchar_t **)(a2[2] + 24); *this = (wchar_t *)(this + 2); v5 = -2; if ( String ) v5 = (int)&String[wcslen(String)]; LOBYTE(v7) = 0; std::wstring::_M_construct(this, String, v5, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44B9D5: variable 'v7' is possibly undefined //----- (0044BA10) -------------------------------------------------------- void **__thiscall std::moneypunct::do_grouping(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44BA47: variable 'v6' is possibly undefined //----- (0044BA60) -------------------------------------------------------- int __fastcall std::moneypunct::frac_digits(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 32); if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) return *(_DWORD *)(a1[2] + 48); else return v1(); } //----- (0044BA80) -------------------------------------------------------- int __fastcall std::moneypunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) return *(unsigned __int16 *)(a1[2] + 18); else return v1(); } //----- (0044BAA0) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (0044BAB0) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (0044BAC0) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2) { wchar_t **(__thiscall *v3)(wchar_t **, int); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 28); if ( v3 == std::moneypunct::do_negative_sign ) { String = *(wchar_t **)(a2[2] + 40); *this = (wchar_t *)(this + 2); v5 = -2; if ( String ) v5 = (int)&String[wcslen(String)]; LOBYTE(v7) = 0; std::wstring::_M_construct(this, String, v5, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44BB05: variable 'v7' is possibly undefined //----- (0044BB40) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2) { wchar_t **(__thiscall *v3)(wchar_t **, int); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 24); if ( v3 == std::moneypunct::do_positive_sign ) { String = *(wchar_t **)(a2[2] + 32); *this = (wchar_t *)(this + 2); v5 = -2; if ( String ) v5 = (int)&String[wcslen(String)]; LOBYTE(v7) = 0; std::wstring::_M_construct(this, String, v5, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44BB85: variable 'v7' is possibly undefined //----- (0044BBC0) -------------------------------------------------------- int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) return *(unsigned __int16 *)(a1[2] + 20); else return v1(); } //----- (0044BBE0) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); *this = (wchar_t *)(this + 2); v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 44BC18: variable 'v6' is possibly undefined //----- (0044BC30) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (0044BC40) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (0044BC50) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); *this = (wchar_t *)(this + 2); v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 44BC88: variable 'v6' is possibly undefined //----- (0044BCA0) -------------------------------------------------------- wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); *this = (wchar_t *)(this + 2); v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 44BCD8: variable 'v6' is possibly undefined //----- (0044BCF0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (0044BD00) -------------------------------------------------------- void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); if ( v3 == std::moneypunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44BD44: variable 'v7' is possibly undefined //----- (0044BD80) -------------------------------------------------------- int __thiscall std::string::_M_disjunct(unsigned int *this, unsigned int a2) { int v2; // edx v2 = 1; if ( *this <= a2 ) LOBYTE(v2) = this[1] + *this < a2; return v2; } //----- (0044BDA0) -------------------------------------------------------- bool __fastcall std::string::_M_is_local(_DWORD *a1) { return a1 + 2 == (_DWORD *)*a1; } //----- (0044BDB0) -------------------------------------------------------- unsigned int __thiscall std::string::find_last_of(int *this, char *Str, int a3) { size_t v4; // eax v4 = strlen(Str); return std::string::find_last_of(this, Str, a3, v4); } //----- (0044BDF0) -------------------------------------------------------- unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) { int v4; // ebx unsigned int v5; // ebx int v6; // ebp v4 = this[1]; if ( !v4 || !MaxCount ) return -1; v5 = v4 - 1; if ( v5 > a3 ) v5 = a3; v6 = *this; do { if ( memchr(Buf, *(char *)(v6 + v5), MaxCount) ) break; --v5; } while ( v5 != -1 ); return v5; } //----- (0044BE80) -------------------------------------------------------- unsigned int __thiscall std::string::find_last_of(int *this, int a2, int a3) { return std::string::find_last_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044BEB0) -------------------------------------------------------- int __thiscall std::string::find_last_of(int *this, char a2, unsigned int a3) { int v3; // ebx int result; // eax unsigned int v5; // ebx int v6; // ecx v3 = this[1]; result = -1; if ( v3 ) { result = a3; v5 = v3 - 1; if ( a3 > v5 ) result = v5; v6 = *this; do { if ( a2 == *(_BYTE *)(v6 + result) ) break; --result; } while ( result != -1 ); } return result; } //----- (0044BEF0) -------------------------------------------------------- int __fastcall std::string::_M_local_data(int a1) { return a1 + 8; } //----- (0044BF00) -------------------------------------------------------- unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, int a3) { size_t v4; // eax v4 = strlen(Str); return std::string::find_first_of(this, Str, a3, v4); } //----- (0044BF40) -------------------------------------------------------- unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int a3, size_t MaxCount) { unsigned int v5; // edi if ( MaxCount ) { v5 = this[1]; while ( v5 > a3 ) { if ( memchr(Buf, *(char *)(*this + a3), MaxCount) ) return a3; ++a3; } } return -1; } //----- (0044BFB0) -------------------------------------------------------- unsigned int __thiscall std::string::find_first_of(_DWORD *this, int a2, int a3) { return std::string::find_first_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044BFE0) -------------------------------------------------------- char *__thiscall std::string::find_first_of(int *this, char a2, unsigned int a3) { return std::string::find(this, a2, a3); } //----- (0044BFF0) -------------------------------------------------------- void *__thiscall std::string::get_allocator(void *this, int a2) { return this; } //----- (0044C000) -------------------------------------------------------- unsigned int __thiscall std::string::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) { unsigned int result; // eax result = a2 + 0x3FFFFFFF - this[1]; if ( result < a3 ) std::__throw_length_error(a4); return result; } //----- (0044C030) -------------------------------------------------------- int __fastcall std::string::_M_get_allocator(int a1) { return a1; } //----- (0044C040) -------------------------------------------------------- unsigned int __thiscall std::string::find_last_not_of(int *this, char *Str, int a3) { size_t v4; // eax v4 = strlen(Str); return std::string::find_last_not_of(this, Str, a3, v4); } //----- (0044C080) -------------------------------------------------------- unsigned int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) { unsigned int v4; // ebx int v5; // eax int v6; // ebp v4 = -1; v5 = this[1]; if ( v5 ) { v4 = v5 - 1; if ( v5 - 1 > a3 ) v4 = a3; v6 = *this; do { if ( !MaxCount ) break; if ( !memchr(Buf, *(char *)(v6 + v4), MaxCount) ) break; --v4; } while ( v4 != -1 ); } return v4; } //----- (0044C0F0) -------------------------------------------------------- unsigned int __thiscall std::string::find_last_not_of(int *this, int a2, int a3) { return std::string::find_last_not_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044C120) -------------------------------------------------------- int __thiscall std::string::find_last_not_of(int *this, char a2, unsigned int a3) { int v3; // ebx int result; // eax int v5; // ecx v3 = this[1]; result = -1; if ( v3 ) { result = v3 - 1; if ( v3 - 1 > a3 ) result = a3; v5 = *this; do { if ( *(_BYTE *)(v5 + result) != a2 ) break; --result; } while ( result != -1 ); } return result; } //----- (0044C160) -------------------------------------------------------- unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, int a3) { size_t v4; // eax v4 = strlen(Str); return std::string::find_first_not_of(this, Str, a3, v4); } //----- (0044C1A0) -------------------------------------------------------- unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) { unsigned int v4; // esi unsigned int v5; // edi int v6; // ebp v4 = this[1]; v5 = a3; if ( a3 >= v4 ) return -1; v6 = *this; if ( MaxCount ) { while ( memchr(Buf, *(char *)(v6 + v5), MaxCount) ) { if ( v4 == ++v5 ) return -1; } } return v5; } //----- (0044C200) -------------------------------------------------------- unsigned int __thiscall std::string::find_first_not_of(int *this, int a2, int a3) { return std::string::find_first_not_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044C230) -------------------------------------------------------- int __thiscall std::string::find_first_not_of(int *this, char a2, unsigned int a3) { int result; // eax unsigned int v4; // edx int v5; // ecx result = a3; v4 = this[1]; if ( a3 >= v4 ) return -1; v5 = *this; while ( *(_BYTE *)(v5 + result) == a2 ) { if ( ++result == v4 ) return -1; } return result; } //----- (0044C270) -------------------------------------------------------- unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2) { if ( a2 >= this[1] ) std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); return *this + a2; } //----- (0044C2A0) -------------------------------------------------------- int __fastcall std::string::end(_DWORD *a1) { return a1[1] + *a1; } //----- (0044C2B0) -------------------------------------------------------- int __fastcall std::string::back(_DWORD *a1) { return *a1 + a1[1] - 1; } //----- (0044C2C0) -------------------------------------------------------- int __fastcall std::string::cend(_DWORD *a1) { return a1[1] + *a1; } //----- (0044C2D0) -------------------------------------------------------- size_t __thiscall std::string::copy(_DWORD *this, _BYTE *a2, unsigned int a3, unsigned int a4) { unsigned int v4; // ebx size_t Size; // ebx _BYTE *Src; // eax v4 = this[1]; if ( a4 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::copy", a4, this[1]); Size = v4 - a4; if ( Size > a3 ) { Size = a3; if ( !a3 ) return Size; } else if ( !Size ) { return Size; } Src = (_BYTE *)(*this + a4); if ( Size != 1 ) { memcpy(a2, Src, Size); return Size; } *a2 = *Src; return 1; } //----- (0044C350) -------------------------------------------------------- int __fastcall std::string::data(int a1) { return *(_DWORD *)a1; } //----- (0044C360) -------------------------------------------------------- int __thiscall std::string::find(int *this, char *Str, int a3) { size_t Size; // eax Size = strlen(Str); return std::string::find(this, Str, a3, Size); } //----- (0044C3A0) -------------------------------------------------------- int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size) { unsigned int v4; // esi int v5; // ebp int v6; // ecx const void *Buf; // eax size_t MaxCount; // edx int Val; // ebp char *v10; // edi int v12; // [esp+18h] [ebp-24h] int v13; // [esp+1Ch] [ebp-20h] v4 = this[1]; if ( !Size ) return v4 < a3 ? -1 : a3; v5 = -1; if ( v4 > a3 ) { v6 = *this; Buf = (const void *)(v6 + a3); v13 = v6; v12 = v6 + v4; if ( Size <= v4 - a3 ) { MaxCount = 1 - Size + v4 - a3; if ( MaxCount ) { Val = *Buf2; while ( 1 ) { v10 = (char *)memchr(Buf, Val, MaxCount); if ( !v10 ) return -1; if ( !memcmp(v10, Buf2, Size) ) break; Buf = v10 + 1; if ( Size <= v12 - (int)(v10 + 1) ) { MaxCount = v12 - (_DWORD)v10 - Size; if ( MaxCount ) continue; } return -1; } return (int)&v10[-v13]; } } } return v5; } //----- (0044C460) -------------------------------------------------------- int __thiscall std::string::find(int *this, int a2, int a3) { return std::string::find(this, *(char **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044C490) -------------------------------------------------------- char *__thiscall std::string::find(int *this, char a2, unsigned int a3) { int v3; // ebx unsigned int v4; // edx int v5; // esi char *v6; // eax v3 = -1; v4 = this[1]; if ( a3 < v4 ) { v5 = *this; v6 = (char *)memchr((const void *)(*this + a3), a2, v4 - a3); if ( v6 ) return &v6[-v5]; } return (char *)v3; } //----- (0044C4E0) -------------------------------------------------------- _DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (0044C4F0) -------------------------------------------------------- int __fastcall std::string::size(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0044C500) -------------------------------------------------------- int __fastcall std::string::begin(int a1) { return *(_DWORD *)a1; } //----- (0044C510) -------------------------------------------------------- int __fastcall std::string::c_str(int a1) { return *(_DWORD *)a1; } //----- (0044C520) -------------------------------------------------------- _DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (0044C530) -------------------------------------------------------- bool __fastcall std::string::empty(int a1) { return *(_DWORD *)(a1 + 4) == 0; } //----- (0044C540) -------------------------------------------------------- int __fastcall std::string::front(int a1) { return *(_DWORD *)a1; } //----- (0044C550) -------------------------------------------------------- unsigned int __thiscall std::string::rfind(int *this, char *Str, int a3) { size_t v4; // eax v4 = strlen(Str); return std::string::rfind(this, Str, a3, v4); } //----- (0044C590) -------------------------------------------------------- unsigned int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size) { unsigned int v4; // ebx size_t v5; // eax int v6; // ebp v4 = -1; v5 = this[1]; if ( Size <= v5 ) { v4 = v5 - Size; if ( v5 - Size > a3 ) v4 = a3; v6 = *this; if ( Size ) { while ( memcmp((const void *)(v6 + v4), Buf2, Size) ) { if ( !v4 ) return -1; --v4; } } } return v4; } // 44C5DE: conditional instruction was optimized away because %arg_8.4!=0 //----- (0044C610) -------------------------------------------------------- unsigned int __thiscall std::string::rfind(int *this, int a2, int a3) { return std::string::rfind(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044C640) -------------------------------------------------------- int __thiscall std::string::rfind(int *this, char a2, unsigned int a3) { int v3; // ebx int result; // eax int v5; // ecx v3 = this[1]; result = -1; if ( v3 ) { result = v3 - 1; if ( v3 - 1 > a3 ) result = a3; v5 = *this; do { if ( *(_BYTE *)(v5 + result) == a2 ) break; --result; } while ( result != -1 ); } return result; } //----- (0044C680) -------------------------------------------------------- int __fastcall std::string::cbegin(int a1) { return *(_DWORD *)a1; } //----- (0044C690) -------------------------------------------------------- int __fastcall std::string::length(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0044C6A0) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + a2[1]; return result; } //----- (0044C6B0) -------------------------------------------------------- void **__thiscall std::string::substr(void **this, _DWORD *a2, unsigned int a3, unsigned int a4) { unsigned int v5; // edx unsigned int v6; // edx int v8; // [esp+8h] [ebp-14h] v5 = a2[1]; if ( a3 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::substr", a3, a2[1]); v6 = v5 - a3; *this = this + 2; LOBYTE(v8) = 0; if ( v6 > a4 ) v6 = a4; std::string::_M_construct(this, (unsigned __int8 *)(a3 + *a2), a3 + *a2 + v6, v8); return this; } // 44C6EC: variable 'v8' is possibly undefined //----- (0044C720) -------------------------------------------------------- int __fastcall std::string::_M_data(int a1) { return *(_DWORD *)a1; } //----- (0044C730) -------------------------------------------------------- int __thiscall std::string::compare(int this, char *Str) { size_t v3; // edi size_t Size; // eax size_t v5; // ebx int result; // eax v3 = *(_DWORD *)(this + 4); Size = strlen(Str); v5 = Size; if ( Size > v3 ) Size = v3; if ( !Size ) return v3 - v5; result = memcmp(*(const void **)this, Str, Size); if ( !result ) return v3 - v5; return result; } //----- (0044C780) -------------------------------------------------------- int __thiscall std::string::compare(int this, int a2) { size_t v2; // esi size_t Size; // eax size_t v4; // ebx int result; // eax v2 = *(_DWORD *)(this + 4); Size = v2; v4 = *(_DWORD *)(a2 + 4); if ( v4 <= v2 ) Size = *(_DWORD *)(a2 + 4); if ( !Size ) return v2 - v4; result = memcmp(*(const void **)this, *(const void **)a2, Size); if ( !result ) return v2 - v4; return result; } //----- (0044C7C0) -------------------------------------------------------- int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, char *Str) { unsigned int v4; // ebx unsigned int v5; // ebx size_t Size; // eax size_t v8; // esi int result; // eax v4 = this[1]; if ( a2 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, this[1]); v5 = v4 - a2; if ( v5 > a3 ) v5 = a3; Size = strlen(Str); v8 = Size; if ( Size > v5 ) Size = v5; if ( !Size ) return v5 - v8; result = memcmp((const void *)(*this + a2), Str, Size); if ( !result ) return v5 - v8; return result; } //----- (0044C850) -------------------------------------------------------- int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, void *Buf2, unsigned int a5) { unsigned int v5; // ebx size_t Size; // edx unsigned int v7; // ebx int result; // eax v5 = this[1]; Size = a3; if ( a2 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, this[1]); v7 = v5 - a2; if ( v7 > a3 ) { v7 = a3; if ( a3 <= a5 ) goto LABEL_4; goto LABEL_8; } Size = v7; if ( v7 > a5 ) LABEL_8: Size = a5; LABEL_4: if ( !Size ) return v7 - a5; result = memcmp((const void *)(*this + a2), Buf2, Size); if ( !result ) return v7 - a5; return result; } //----- (0044C8D0) -------------------------------------------------------- int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, int a4) { unsigned int v4; // ebx size_t v5; // ebx size_t v6; // esi size_t Size; // edx int result; // eax v4 = this[1]; if ( a2 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, this[1]); v5 = v4 - a2; if ( v5 > a3 ) { v6 = *(_DWORD *)(a4 + 4); v5 = a3; Size = v6; if ( v6 <= a3 ) goto LABEL_4; goto LABEL_8; } v6 = *(_DWORD *)(a4 + 4); Size = v6; if ( v6 > v5 ) LABEL_8: Size = v5; LABEL_4: if ( !Size ) return v5 - v6; result = memcmp((const void *)(*this + a2), *(const void **)a4, Size); if ( !result ) return v5 - v6; return result; } //----- (0044C960) -------------------------------------------------------- int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) { unsigned int v6; // esi unsigned int v7; // ebx size_t v8; // esi size_t v9; // ebx size_t Size; // ebp int result; // eax v6 = this[1]; if ( a2 > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, this[1]); v7 = a4[1]; if ( a5 > v7 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a5, a4[1]); v8 = v6 - a2; if ( v8 <= a3 ) { v9 = v7 - a5; if ( v9 <= a6 ) goto LABEL_5; LABEL_11: v9 = a6; Size = a6; if ( a6 <= v8 ) goto LABEL_6; goto LABEL_10; } v8 = a3; v9 = v7 - a5; if ( v9 > a6 ) goto LABEL_11; LABEL_5: Size = v9; if ( v9 > v8 ) LABEL_10: Size = v8; LABEL_6: if ( !Size ) return v8 - v9; result = memcmp((const void *)(*this + a2), (const void *)(*a4 + a5), Size); if ( !result ) return v8 - v9; return result; } //----- (0044CA30) -------------------------------------------------------- _DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + a2[1]; return result; } //----- (0044CA40) -------------------------------------------------------- unsigned int __thiscall std::string::_M_check(_DWORD *this, unsigned int a2, const char *a3) { unsigned int v3; // edx unsigned int result; // eax v3 = this[1]; result = a2; if ( a2 > v3 ) std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v3); return result; } //----- (0044CA70) -------------------------------------------------------- unsigned int __thiscall std::string::_M_limit(_DWORD *this, int a2, unsigned int a3) { unsigned int result; // eax result = this[1] - a2; if ( result > a3 ) return a3; return result; } //----- (0044CA90) -------------------------------------------------------- int __fastcall std::string::capacity(_DWORD *a1) { if ( (_DWORD *)*a1 == a1 + 2 ) return 15; else return a1[2]; } //----- (0044CAB0) -------------------------------------------------------- int std::string::max_size() { return 0x3FFFFFFF; } //----- (0044CAC0) -------------------------------------------------------- int __thiscall std::string::operator[](_DWORD *this, int a2) { return a2 + *this; } //----- (0044CAD0) -------------------------------------------------------- bool __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2) { bool result; // al result = 1; if ( *this <= a2 ) return *this + 2 * this[1] < a2; return result; } //----- (0044CAF0) -------------------------------------------------------- bool __fastcall std::wstring::_M_is_local(_DWORD *a1) { return a1 + 2 == (_DWORD *)*a1; } //----- (0044CB00) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3) { size_t v4; // eax v4 = wcslen(String); return std::wstring::find_last_of(this, String, a3, v4); } //----- (0044CB40) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) { int v4; // ebx unsigned int v6; // ebx v4 = this[1]; if ( !v4 || !N ) return -1; v6 = v4 - 1; if ( v6 > a3 ) v6 = a3; while ( !wmemchr(S, *(_WORD *)(*this + 2 * v6), N) ) { if ( --v6 == -1 ) return -1; } return v6; } //----- (0044CBC0) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, int a3) { return std::wstring::find_last_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044CBF0) -------------------------------------------------------- int __thiscall std::wstring::find_last_of(int *this, __int16 a2, unsigned int a3) { int v3; // ebx int result; // eax unsigned int v5; // ebx int v6; // ecx v3 = this[1]; result = -1; if ( v3 ) { result = a3; v5 = v3 - 1; if ( a3 > v5 ) result = v5; v6 = *this; do { if ( a2 == *(_WORD *)(v6 + 2 * result) ) break; --result; } while ( result != -1 ); } return result; } //----- (0044CC30) -------------------------------------------------------- int __fastcall std::wstring::_M_local_data(int a1) { return a1 + 8; } //----- (0044CC40) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) { size_t v4; // eax v4 = wcslen(String); return std::wstring::find_first_of(this, String, a3, v4); } //----- (0044CC80) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) { if ( N ) { while ( this[1] > a3 ) { if ( wmemchr(S, *(_WORD *)(*this + 2 * a3), N) ) return a3; ++a3; } } return -1; } //----- (0044CCF0) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, int a3) { return std::wstring::find_first_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044CD20) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3) { return std::wstring::find(this, C, a3); } //----- (0044CD30) -------------------------------------------------------- void *__thiscall std::wstring::get_allocator(void *this, int a2) { return this; } //----- (0044CD40) -------------------------------------------------------- unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) { unsigned int result; // eax result = a2 + 0x1FFFFFFF - this[1]; if ( result < a3 ) std::__throw_length_error(a4); return result; } //----- (0044CD70) -------------------------------------------------------- int __fastcall std::wstring::_M_get_allocator(int a1) { return a1; } //----- (0044CD80) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3) { int v4; // eax v4 = wcslen(String); return std::wstring::find_last_not_of(this, String, a3, v4); } //----- (0044CDC0) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *S, unsigned int a3, int N) { int v4; // ebx unsigned int v6; // ebx v4 = this[1]; if ( !v4 ) return -1; v6 = v4 - 1; if ( v6 > a3 ) v6 = a3; while ( N && wmemchr(S, *(_WORD *)(*this + 2 * v6), N) ) { if ( --v6 == -1 ) return -1; } return v6; } //----- (0044CE30) -------------------------------------------------------- unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, int a3) { return std::wstring::find_last_not_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044CE60) -------------------------------------------------------- int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3) { int v3; // ebx int result; // eax int v5; // ecx v3 = this[1]; result = -1; if ( v3 ) { result = v3 - 1; if ( v3 - 1 > a3 ) result = a3; v5 = *this; do { if ( *(_WORD *)(v5 + 2 * result) != a2 ) break; --result; } while ( result != -1 ); } return result; } //----- (0044CEA0) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3) { size_t v4; // eax v4 = wcslen(String); return std::wstring::find_first_not_of(this, String, a3, v4); } //----- (0044CEE0) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) { unsigned int v4; // ebx int result; // eax wchar_t *i; // eax v4 = a3; if ( a3 >= this[1] ) return -1; result = a3; if ( N ) { for ( i = (wchar_t *)(*this + 2 * a3); wmemchr(S, *i, N); i = (wchar_t *)(*this + 2 * v4) ) { if ( this[1] <= ++v4 ) return -1; } return v4; } return result; } //----- (0044CF50) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(_DWORD *this, int a2, int a3) { return std::wstring::find_first_not_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044CF80) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3) { int result; // eax unsigned int v4; // edx int v5; // ecx result = a3; v4 = this[1]; if ( a3 >= v4 ) return -1; v5 = *this; while ( *(_WORD *)(v5 + 2 * result) == a2 ) { if ( ++result == v4 ) return -1; } return result; } //----- (0044CFC0) -------------------------------------------------------- int __thiscall std::wstring::at(_DWORD *this, unsigned int a2) { if ( a2 >= this[1] ) std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); return *this + 2 * a2; } //----- (0044CFF0) -------------------------------------------------------- int __fastcall std::wstring::end(_DWORD *a1) { return *a1 + 2 * a1[1]; } //----- (0044D000) -------------------------------------------------------- int __fastcall std::wstring::back(_DWORD *a1) { return *a1 + 2 * a1[1] - 2; } //----- (0044D010) -------------------------------------------------------- int __fastcall std::wstring::cend(_DWORD *a1) { return *a1 + 2 * a1[1]; } //----- (0044D020) -------------------------------------------------------- size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4) { unsigned int v4; // ebx size_t N; // ebx const wchar_t *S2; // eax v4 = this[1]; if ( a4 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::copy", a4, this[1]); N = v4 - a4; if ( N > a3 ) { N = a3; if ( !a3 ) return N; } else if ( !N ) { return N; } S2 = (const wchar_t *)(*this + 2 * a4); if ( N != 1 ) { wmemcpy(S1, S2, N); return N; } *S1 = *S2; return 1; } //----- (0044D0A0) -------------------------------------------------------- int __fastcall std::wstring::data(int a1) { return *(_DWORD *)a1; } //----- (0044D0B0) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3) { size_t v4; // eax v4 = wcslen(S2); return std::wstring::find(this, S2, a3, v4); } //----- (0044D0F0) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4) { unsigned int v4; // ebp size_t N; // eax const wchar_t *S; // edx wchar_t C; // di wchar_t *v8; // ebp unsigned int v9; // eax int result; // eax int v11; // [esp+18h] [ebp-24h] int v12; // [esp+1Ch] [ebp-20h] v4 = this[1]; if ( a4 ) { if ( v4 > a3 && a4 <= v4 - a3 ) { N = 1 - a4 + v4 - a3; if ( N ) { v12 = *this; S = (const wchar_t *)(*this + 2 * a3); C = *S2; v11 = *this + 2 * v4; while ( 1 ) { v8 = wmemchr(S, C, N); if ( !v8 ) break; if ( !wmemcmp(v8, S2, a4) ) return ((int)v8 - v12) >> 1; S = v8 + 1; v9 = (v11 - (int)(v8 + 1)) >> 1; if ( a4 <= v9 ) { N = 1 - a4 + v9; if ( N ) continue; } return -1; } } } return -1; } result = a3; if ( v4 < a3 ) return -1; return result; } //----- (0044D1B0) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, int a2, int a3) { return std::wstring::find(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044D1E0) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3) { unsigned int v3; // eax int v5; // ebx wchar_t *v6; // eax v3 = this[1]; if ( a3 < v3 && (v5 = *this, (v6 = wmemchr((const wchar_t *)(*this + 2 * a3), C, v3 - a3)) != 0) ) return ((int)v6 - v5) >> 1; else return -1; } //----- (0044D240) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (0044D250) -------------------------------------------------------- int __fastcall std::wstring::size(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0044D260) -------------------------------------------------------- int __fastcall std::wstring::begin(int a1) { return *(_DWORD *)a1; } //----- (0044D270) -------------------------------------------------------- int __fastcall std::wstring::c_str(int a1) { return *(_DWORD *)a1; } //----- (0044D280) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (0044D290) -------------------------------------------------------- bool __fastcall std::wstring::empty(int a1) { return *(_DWORD *)(a1 + 4) == 0; } //----- (0044D2A0) -------------------------------------------------------- int __fastcall std::wstring::front(int a1) { return *(_DWORD *)a1; } //----- (0044D2B0) -------------------------------------------------------- unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3) { size_t v4; // eax v4 = wcslen(String); return std::wstring::rfind(this, String, a3, v4); } //----- (0044D2F0) -------------------------------------------------------- unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N) { size_t v4; // ebx unsigned int v5; // ebx int v6; // edi v4 = this[1]; if ( N > v4 ) return -1; v5 = v4 - N; if ( v5 > a3 ) v5 = a3; v6 = *this; if ( N ) { while ( wmemcmp((const wchar_t *)(v6 + 2 * v5), S2, N) ) { if ( !v5 ) return -1; --v5; } } return v5; } // 44D335: conditional instruction was optimized away because %arg_8.4!=0 //----- (0044D360) -------------------------------------------------------- unsigned int __thiscall std::wstring::rfind(int *this, int a2, int a3) { return std::wstring::rfind(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (0044D390) -------------------------------------------------------- int __thiscall std::wstring::rfind(int *this, __int16 a2, unsigned int a3) { int v3; // ebx int result; // eax int v5; // ecx v3 = this[1]; result = -1; if ( v3 ) { result = v3 - 1; if ( v3 - 1 > a3 ) result = a3; v5 = *this; do { if ( *(_WORD *)(v5 + 2 * result) == a2 ) break; --result; } while ( result != -1 ); } return result; } //----- (0044D3D0) -------------------------------------------------------- int __fastcall std::wstring::cbegin(int a1) { return *(_DWORD *)a1; } //----- (0044D3E0) -------------------------------------------------------- int __fastcall std::wstring::length(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0044D3F0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * a2[1]; return result; } //----- (0044D410) -------------------------------------------------------- wchar_t **__thiscall std::wstring::substr(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4) { unsigned int v5; // eax unsigned int v6; // eax int v8; // [esp+8h] [ebp-14h] v5 = a2[1]; if ( a3 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::substr", a3, a2[1]); v6 = v5 - a3; *this = (wchar_t *)(this + 2); LOBYTE(v8) = 0; if ( v6 > a4 ) v6 = a4; std::wstring::_M_construct(this, (wchar_t *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); return this; } // 44D44C: variable 'v8' is possibly undefined //----- (0044D480) -------------------------------------------------------- int __fastcall std::wstring::_M_data(int a1) { return *(_DWORD *)a1; } //----- (0044D490) -------------------------------------------------------- int __thiscall std::wstring::compare(int this, wchar_t *String) { size_t v3; // edi size_t N; // eax size_t v5; // ebx int result; // eax v3 = *(_DWORD *)(this + 4); N = wcslen(String); v5 = N; if ( N > v3 ) N = v3; if ( !N ) return v3 - v5; result = wmemcmp(*(const wchar_t **)this, String, N); if ( !result ) return v3 - v5; return result; } //----- (0044D4F0) -------------------------------------------------------- int __thiscall std::wstring::compare(int this, int a2) { size_t v2; // esi size_t N; // eax size_t v4; // ebx int result; // eax v2 = *(_DWORD *)(this + 4); N = v2; v4 = *(_DWORD *)(a2 + 4); if ( v4 <= v2 ) N = *(_DWORD *)(a2 + 4); if ( !N ) return v2 - v4; result = wmemcmp(*(const wchar_t **)this, *(const wchar_t **)a2, N); if ( !result ) return v2 - v4; return result; } //----- (0044D540) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) { unsigned int v4; // ebx unsigned int v5; // ebx size_t N; // eax size_t v8; // esi int result; // eax v4 = this[1]; if ( a2 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, this[1]); v5 = v4 - a2; if ( v5 > a3 ) v5 = a3; N = wcslen(String); v8 = N; if ( N > v5 ) { N = v5; if ( !v5 ) return v5 - v8; } else if ( !N ) { return v5 - v8; } result = wmemcmp((const wchar_t *)(*this + 2 * a2), String, N); if ( !result ) return v5 - v8; return result; } //----- (0044D5E0) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5) { unsigned int v5; // ebx size_t N; // eax unsigned int v7; // ebx int result; // eax v5 = this[1]; N = a3; if ( a2 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, this[1]); v7 = v5 - a2; if ( v7 <= a3 ) { N = v7; if ( v7 <= a5 ) goto LABEL_4; LABEL_6: N = a5; if ( !a5 ) return v7 - a5; goto LABEL_7; } v7 = a3; if ( a3 > a5 ) goto LABEL_6; LABEL_4: if ( !N ) return v7 - a5; LABEL_7: result = wmemcmp((const wchar_t *)(*this + 2 * a2), S2, N); if ( !result ) return v7 - a5; return result; } //----- (0044D670) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, int a4) { unsigned int v4; // ebx size_t v5; // ebx size_t v6; // esi size_t N; // edx int result; // eax v4 = this[1]; if ( a2 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, this[1]); v5 = v4 - a2; if ( v5 <= a3 ) { v6 = *(_DWORD *)(a4 + 4); N = v6; if ( v6 <= v5 ) goto LABEL_4; LABEL_6: N = v5; if ( !v5 ) return v5 - v6; goto LABEL_7; } v6 = *(_DWORD *)(a4 + 4); v5 = a3; N = v6; if ( v6 > a3 ) goto LABEL_6; LABEL_4: if ( !N ) return v5 - v6; LABEL_7: result = wmemcmp((const wchar_t *)(*this + 2 * a2), *(const wchar_t **)a4, N); if ( !result ) return v5 - v6; return result; } //----- (0044D710) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) { unsigned int v6; // esi unsigned int v7; // ebx size_t v8; // esi size_t v9; // ebx size_t N; // ebp int result; // eax v6 = this[1]; if ( a2 > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, this[1]); v7 = a4[1]; if ( a5 > v7 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a5, a4[1]); v8 = v6 - a2; if ( v8 > a3 ) { v8 = a3; v9 = v7 - a5; if ( v9 <= a6 ) { LABEL_5: N = v9; if ( v9 <= v8 ) goto LABEL_6; LABEL_8: N = v8; if ( !v8 ) return v8 - v9; goto LABEL_9; } } else { v9 = v7 - a5; if ( v9 <= a6 ) goto LABEL_5; } v9 = a6; N = a6; if ( a6 > v8 ) goto LABEL_8; LABEL_6: if ( !N ) return v8 - v9; LABEL_9: result = wmemcmp((const wchar_t *)(*this + 2 * a2), (const wchar_t *)(*a4 + 2 * a5), N); if ( !result ) return v8 - v9; return result; } //----- (0044D7F0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * a2[1]; return result; } //----- (0044D810) -------------------------------------------------------- unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3) { unsigned int v3; // edx unsigned int result; // eax v3 = this[1]; result = a2; if ( a2 > v3 ) std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v3); return result; } //----- (0044D840) -------------------------------------------------------- unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3) { unsigned int result; // eax result = this[1] - a2; if ( result > a3 ) return a3; return result; } //----- (0044D860) -------------------------------------------------------- int __fastcall std::wstring::capacity(_DWORD *a1) { if ( (_DWORD *)*a1 == a1 + 2 ) return 7; else return a1[2]; } //----- (0044D880) -------------------------------------------------------- int std::wstring::max_size() { return 0x1FFFFFFF; } //----- (0044D890) -------------------------------------------------------- int __thiscall std::wstring::operator[](_DWORD *this, int a2) { return *this + 2 * a2; } //----- (0044D8A0) -------------------------------------------------------- int __thiscall std::stringbuf::str(int this, _DWORD *a2) { unsigned int v3; // edx unsigned int v4; // ecx char *v5; // eax *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v3 = a2[5]; *(_DWORD *)(this + 4) = 0; if ( v3 ) { v4 = a2[3]; v5 = (char *)a2[4]; if ( v3 > v4 ) std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); else std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); return this; } else { std::string::_M_assign(this, (int)(a2 + 9)); return this; } } //----- (0044D950) -------------------------------------------------------- _WORD *__thiscall std::wstringbuf::str(_WORD *this, _DWORD *a2) { unsigned int v3; // eax unsigned int v4; // ecx wchar_t *v5; // edx *(_DWORD *)this = this + 4; this[4] = 0; v3 = a2[5]; *((_DWORD *)this + 1) = 0; if ( v3 ) { v4 = a2[3]; v5 = (wchar_t *)a2[4]; if ( v3 > v4 ) std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); else std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); return this; } else { std::wstring::_M_assign((int)this, (int)(a2 + 9)); return this; } } //----- (0044DA00) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::str(int this, _DWORD *a2) { unsigned int v3; // edx unsigned int v4; // ecx char *v5; // eax *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v3 = a2[8]; *(_DWORD *)(this + 4) = 0; if ( v3 ) { v4 = a2[6]; v5 = (char *)a2[7]; if ( v3 > v4 ) std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); else std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); return this; } else { std::string::_M_assign(this, (int)(a2 + 12)); return this; } } //----- (0044DAB0) -------------------------------------------------------- int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) { return a1 + 12; } //----- (0044DAC0) -------------------------------------------------------- _WORD *__thiscall std::basic_stringstream,std::allocator>::str( _WORD *this, _DWORD *a2) { unsigned int v3; // eax unsigned int v4; // ecx wchar_t *v5; // edx *(_DWORD *)this = this + 4; this[4] = 0; v3 = a2[8]; *((_DWORD *)this + 1) = 0; if ( v3 ) { v4 = a2[6]; v5 = (wchar_t *)a2[7]; if ( v3 > v4 ) std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); else std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); return this; } else { std::wstring::_M_assign((int)this, (int)(a2 + 12)); return this; } } //----- (0044DB70) -------------------------------------------------------- int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) { return a1 + 12; } //----- (0044DB80) -------------------------------------------------------- int __thiscall std::istringstream::str(int this, _DWORD *a2) { unsigned int v3; // edx unsigned int v4; // ecx char *v5; // eax *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v3 = a2[7]; *(_DWORD *)(this + 4) = 0; if ( v3 ) { v4 = a2[5]; v5 = (char *)a2[6]; if ( v3 > v4 ) std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); else std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); return this; } else { std::string::_M_assign(this, (int)(a2 + 11)); return this; } } //----- (0044DC30) -------------------------------------------------------- int __fastcall std::istringstream::rdbuf(int a1) { return a1 + 8; } //----- (0044DC40) -------------------------------------------------------- _WORD *__thiscall std::wistringstream::str(_WORD *this, _DWORD *a2) { unsigned int v3; // eax unsigned int v4; // ecx wchar_t *v5; // edx *(_DWORD *)this = this + 4; this[4] = 0; v3 = a2[7]; *((_DWORD *)this + 1) = 0; if ( v3 ) { v4 = a2[5]; v5 = (wchar_t *)a2[6]; if ( v3 > v4 ) std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); else std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); return this; } else { std::wstring::_M_assign((int)this, (int)(a2 + 11)); return this; } } //----- (0044DCF0) -------------------------------------------------------- int __fastcall std::wistringstream::rdbuf(int a1) { return a1 + 8; } //----- (0044DD00) -------------------------------------------------------- int __thiscall std::ostringstream::str(int this, _DWORD *a2) { unsigned int v3; // edx unsigned int v4; // ecx char *v5; // eax *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v3 = a2[6]; *(_DWORD *)(this + 4) = 0; if ( v3 ) { v4 = a2[4]; v5 = (char *)a2[5]; if ( v3 > v4 ) std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); else std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); return this; } else { std::string::_M_assign(this, (int)(a2 + 10)); return this; } } //----- (0044DDB0) -------------------------------------------------------- int __fastcall std::ostringstream::rdbuf(int a1) { return a1 + 4; } //----- (0044DDC0) -------------------------------------------------------- _WORD *__thiscall std::wostringstream::str(_WORD *this, _DWORD *a2) { unsigned int v3; // eax unsigned int v4; // ecx wchar_t *v5; // edx *(_DWORD *)this = this + 4; this[4] = 0; v3 = a2[6]; *((_DWORD *)this + 1) = 0; if ( v3 ) { v4 = a2[4]; v5 = (wchar_t *)a2[5]; if ( v3 > v4 ) std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); else std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); return this; } else { std::wstring::_M_assign((int)this, (int)(a2 + 10)); return this; } } //----- (0044DE70) -------------------------------------------------------- int __fastcall std::wostringstream::rdbuf(int a1) { return a1 + 4; } //----- (0044DE80) -------------------------------------------------------- int __stdcall std::collate::_M_compare(char *String1, char *String2) { int v2; // eax v2 = strcoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (0044DEB0) -------------------------------------------------------- int __stdcall std::collate::do_compare(unsigned __int8 *a1, size_t Size, unsigned __int8 *a3, size_t a4) { char *v4; // ebx char *v5; // esi char *v6; // ebx char *v7; // esi int v8; // edi int v10; // [esp+8h] [ebp-60h] int v11; // [esp+8h] [ebp-60h] char *v12; // [esp+18h] [ebp-50h] char *v13; // [esp+1Ch] [ebp-4Ch] char *Str[2]; // [esp+20h] [ebp-48h] BYREF char v15[16]; // [esp+28h] [ebp-40h] BYREF char *v16[2]; // [esp+38h] [ebp-30h] BYREF char v17[40]; // [esp+40h] [ebp-28h] BYREF Str[0] = v15; LOBYTE(v10) = 0; std::string::_M_construct((void **)Str, a1, Size, v10); v16[0] = v17; LOBYTE(v11) = 0; std::string::_M_construct((void **)v16, a3, a4, v11); v4 = Str[0]; v5 = v16[0]; v13 = &Str[0][(unsigned int)Str[1]]; v12 = &v16[0][(unsigned int)v16[1]]; while ( 1 ) { v8 = std::collate::_M_compare(v4, v5); if ( v8 ) break; v6 = &v4[strlen(v4)]; v7 = &v5[strlen(v5)]; if ( v13 == v6 && v12 == v7 ) break; if ( v13 == v6 ) { v8 = -1; break; } if ( v12 == v7 ) { v8 = 1; break; } v4 = v6 + 1; v5 = v7 + 1; } if ( v16[0] != v17 ) operator delete(v16[0]); if ( Str[0] != v15 ) operator delete(Str[0]); return v8; } // 44DED8: variable 'v10' is possibly undefined // 44DEFD: variable 'v11' is possibly undefined //----- (0044DFE0) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) { return strxfrm(Destination, Source, MaxCount); } //----- (0044E010) -------------------------------------------------------- int __thiscall std::collate::do_transform(int this, int a2, unsigned __int8 *a3, size_t Size) { unsigned int v5; // edi char *v6; // esi unsigned int v7; // eax char *v8; // eax int v9; // eax unsigned int v10; // edx int v12; // [esp+8h] [ebp-60h] int v13; // [esp+1Ch] [ebp-4Ch] char *v14; // [esp+20h] [ebp-48h] size_t v15; // [esp+24h] [ebp-44h] unsigned int v16; // [esp+28h] [ebp-40h] char *Str; // [esp+2Ch] [ebp-3Ch] void *v18[2]; // [esp+38h] [ebp-30h] BYREF char v19[40]; // [esp+40h] [ebp-28h] BYREF *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; LOBYTE(v12) = 0; v13 = this + 8; v18[0] = v19; std::string::_M_construct(v18, a3, Size, v12); v5 = 2 * (Size - (_DWORD)a3); Str = (char *)v18[0]; v14 = (char *)v18[1] + (unsigned int)v18[0]; v6 = (char *)operator new[](v5); while ( 1 ) { v7 = std::collate::_M_transform(v6, Str, v5); if ( v5 <= v7 ) { v5 = v7 + 1; operator delete[](v6); v6 = (char *)operator new[](v5); v7 = std::collate::_M_transform(v6, Str, v5); } if ( v7 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)this, v6, v7); v8 = &Str[strlen(Str)]; if ( v14 == v8 ) break; Str = v8 + 1; v15 = *(_DWORD *)(this + 4); v16 = v15 + 1; v9 = *(_DWORD *)this; if ( v13 == *(_DWORD *)this ) v10 = 15; else v10 = *(_DWORD *)(this + 8); if ( v16 > v10 ) { std::string::_M_mutate(this, v15, 0, 0, 1u); v9 = *(_DWORD *)this; } *(_BYTE *)(v9 + v15) = 0; *(_DWORD *)(this + 4) = v16; *(_BYTE *)(*(_DWORD *)this + v15 + 1) = 0; } operator delete[](v6); if ( v18[0] != v19 ) operator delete(v18[0]); return this; } // 44E049: variable 'v12' is possibly undefined //----- (0044E200) -------------------------------------------------------- int __thiscall std::collate::hash(void *this, char *a1, char *a2) { int (__stdcall *v3)(char *, char *); // eax v3 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); if ( v3 == std::collate::do_hash ) return std::collate::do_hash(a1, a2); else return v3(a1, a2); } //----- (0044E220) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (0044E230) -------------------------------------------------------- int __stdcall std::collate::do_hash(char *a1, char *a2) { char *v2; // edx int result; // eax int v4; // ecx v2 = a1; result = 0; if ( a1 < a2 ) { do { v4 = *v2++; result = v4 + __ROL4__(result, 7); } while ( a2 != v2 ); } return result; } //----- (0044E260) -------------------------------------------------------- void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) { (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); return this; } //----- (0044E290) -------------------------------------------------------- int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) { int v2; // eax v2 = wcscoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (0044E2C0) -------------------------------------------------------- int __stdcall std::collate::do_compare(wchar_t *a1, int a2, wchar_t *a3, int a4) { wchar_t *v4; // ebx wchar_t *v5; // esi wchar_t *v6; // ebx wchar_t *v7; // esi int v8; // edi int v10; // [esp+8h] [ebp-60h] int v11; // [esp+8h] [ebp-60h] wchar_t *v12; // [esp+18h] [ebp-50h] wchar_t *v13; // [esp+1Ch] [ebp-4Ch] wchar_t *String[2]; // [esp+20h] [ebp-48h] BYREF char v15[16]; // [esp+28h] [ebp-40h] BYREF wchar_t *v16[2]; // [esp+38h] [ebp-30h] BYREF char v17[40]; // [esp+40h] [ebp-28h] BYREF String[0] = (wchar_t *)v15; LOBYTE(v10) = 0; std::wstring::_M_construct(String, a1, a2, v10); v16[0] = (wchar_t *)v17; LOBYTE(v11) = 0; std::wstring::_M_construct(v16, a3, a4, v11); v4 = String[0]; v5 = v16[0]; v13 = &String[0][(int)String[1]]; v12 = &v16[0][(int)v16[1]]; while ( 1 ) { v8 = std::collate::_M_compare(v4, v5); if ( v8 ) break; v6 = &v4[wcslen(v4)]; v7 = &v5[wcslen(v5)]; if ( v13 == v6 && v12 == v7 ) break; if ( v13 == v6 ) { v8 = -1; break; } if ( v12 == v7 ) { v8 = 1; break; } v4 = v6 + 1; v5 = v7 + 1; } if ( (char *)v16[0] != v17 ) operator delete(v16[0]); if ( (char *)String[0] != v15 ) operator delete(String[0]); return v8; } // 44E2E8: variable 'v10' is possibly undefined // 44E30D: variable 'v11' is possibly undefined //----- (0044E3F0) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) { return wcsxfrm(Destination, Source, MaxCount); } //----- (0044E420) -------------------------------------------------------- int __thiscall std::collate::do_transform(int this, int a2, wchar_t *a3, int a4) { size_t v5; // edi wchar_t *v6; // esi unsigned int v7; // eax wchar_t *v8; // eax const wchar_t *v9; // eax unsigned int v10; // edx int v12; // [esp+8h] [ebp-60h] int v13; // [esp+1Ch] [ebp-4Ch] char *v14; // [esp+20h] [ebp-48h] size_t v15; // [esp+24h] [ebp-44h] unsigned int v16; // [esp+28h] [ebp-40h] wchar_t *String; // [esp+2Ch] [ebp-3Ch] void *v18[2]; // [esp+38h] [ebp-30h] BYREF char v19[40]; // [esp+40h] [ebp-28h] BYREF *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_WORD *)(this + 8) = 0; LOBYTE(v12) = 0; v13 = this + 8; v18[0] = v19; std::wstring::_M_construct((wchar_t **)v18, a3, a4, v12); v5 = a4 - (_DWORD)a3; String = (wchar_t *)v18[0]; v14 = (char *)v18[0] + 2 * (int)v18[1]; if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v6 = (wchar_t *)operator new[](2 * v5); while ( 1 ) { v7 = std::collate::_M_transform(v6, String, v5); if ( v5 <= v7 ) { v5 = v7 + 1; operator delete[](v6); if ( v5 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v6 = (wchar_t *)operator new[](2 * v5); v7 = std::collate::_M_transform(v6, String, v5); } if ( v7 > 0x1FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(this, v6, v7); v8 = &String[wcslen(String)]; if ( v14 == (char *)v8 ) break; String = v8 + 1; v15 = *(_DWORD *)(this + 4); v16 = v15 + 1; v9 = *(const wchar_t **)this; if ( v13 == *(_DWORD *)this ) v10 = 7; else v10 = *(_DWORD *)(this + 8); if ( v16 > v10 ) { std::wstring::_M_mutate((const wchar_t **)this, v15, 0, 0, 1u); v9 = *(const wchar_t **)this; } v9[v15] = 0; *(_DWORD *)(this + 4) = v16; v9[v15 + 1] = 0; } operator delete[](v6); if ( v18[0] != v19 ) operator delete(v18[0]); return this; } // 44E45B: variable 'v12' is possibly undefined //----- (0044E640) -------------------------------------------------------- int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2) { int (__stdcall *v3)(unsigned __int16 *, unsigned int); // eax v3 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); if ( v3 == std::collate::do_hash ) return std::collate::do_hash(a1, a2); else return v3(a1, a2); } //----- (0044E660) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (0044E670) -------------------------------------------------------- int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2) { unsigned __int16 *v2; // edx int result; // eax int v4; // ecx v2 = a1; for ( result = 0; a2 > (unsigned int)v2; result = v4 + __ROL4__(result, 7) ) v4 = *v2++; return result; } //----- (0044E6A0) -------------------------------------------------------- void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) { (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); return this; } //----- (0044E6D0) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (0044E6E0) -------------------------------------------------------- _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) { _DWORD *result; // eax this[1] = 0; result = this; *this = this + 2; *((_BYTE *)this + 8) = 0; return result; } //----- (0044E700) -------------------------------------------------------- void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) { (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); return this; } //----- (0044E740) -------------------------------------------------------- int __thiscall std::messages::open(void *this, int a2, int a3) { int (__stdcall *v3)(int, int); // eax v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); if ( v3 == std::messages::do_open ) return 0; else return v3(a2, a3); } //----- (0044E760) -------------------------------------------------------- int __thiscall std::messages::open(void *this, int a2, int a3, int a4) { int (__stdcall *v4)(int, int); // edx v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); if ( v4 == std::messages::do_open ) return 0; else return v4(a2, a3); } //----- (0044E7A0) -------------------------------------------------------- int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) { int (__stdcall *result)(int); // eax result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); if ( result != std::messages::do_close ) return (int (__stdcall *)(int))result(a2); return result; } // 44E810: using guessed type int __stdcall std::messages::do_close(int); //----- (0044E7C0) -------------------------------------------------------- _DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6) { int v8; // [esp+8h] [ebp-14h] *this = this + 2; LOBYTE(v8) = 0; std::string::_M_construct(this, *(_BYTE **)a6, *(_DWORD *)a6 + *(_DWORD *)(a6 + 4), v8); return this; } // 44E7E4: variable 'v8' is possibly undefined //----- (0044E800) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (0044E820) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (0044E830) -------------------------------------------------------- _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) { _DWORD *result; // eax this[1] = 0; result = this; *this = this + 2; *((_WORD *)this + 4) = 0; return result; } //----- (0044E850) -------------------------------------------------------- void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) { (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); return this; } //----- (0044E890) -------------------------------------------------------- int __thiscall std::messages::open(void *this, int a2, int a3) { int (__stdcall *v3)(int, int); // eax v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); if ( v3 == std::messages::do_open ) return 0; else return v3(a2, a3); } //----- (0044E8B0) -------------------------------------------------------- int __thiscall std::messages::open(void *this, int a2, int a3, int a4) { int (__stdcall *v4)(int, int); // edx v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); if ( v4 == std::messages::do_open ) return 0; else return v4(a2, a3); } //----- (0044E8F0) -------------------------------------------------------- int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) { int (__stdcall *result)(int); // eax result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); if ( result != std::messages::do_close ) return (int (__stdcall *)(int))result(a2); return result; } // 44E960: using guessed type int __stdcall std::messages::do_close(int); //----- (0044E910) -------------------------------------------------------- wchar_t **__thiscall std::messages::do_get(wchar_t **this, int a2, int a3, int a4, int a5, int a6) { int v8; // [esp+8h] [ebp-14h] *this = (wchar_t *)(this + 2); LOBYTE(v8) = 0; std::wstring::_M_construct(this, *(wchar_t **)a6, *(_DWORD *)a6 + 2 * *(_DWORD *)(a6 + 4), v8); return this; } // 44E933: variable 'v8' is possibly undefined //----- (0044E950) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (0044E970) -------------------------------------------------------- void **__thiscall std::numpunct::do_grouping(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44E9A7: variable 'v6' is possibly undefined //----- (0044E9C0) -------------------------------------------------------- void **__thiscall std::numpunct::do_truename(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 20); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44E9F7: variable 'v6' is possibly undefined //----- (0044EA10) -------------------------------------------------------- void **__thiscall std::numpunct::do_falsename(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 28); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44EA47: variable 'v6' is possibly undefined //----- (0044EA60) -------------------------------------------------------- int __fastcall std::numpunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) return *(unsigned __int8 *)(a1[2] + 36); else return v1(); } //----- (0044EA80) -------------------------------------------------------- int __fastcall std::numpunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) return *(unsigned __int8 *)(a1[2] + 37); else return v1(); } //----- (0044EAA0) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (0044EAB0) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); } //----- (0044EAC0) -------------------------------------------------------- void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); if ( v3 == std::numpunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44EB04: variable 'v7' is possibly undefined //----- (0044EB40) -------------------------------------------------------- void **__thiscall std::numpunct::truename(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 20); if ( v3 == std::numpunct::do_truename ) { Str = *(char **)(a2[2] + 20); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44EB84: variable 'v7' is possibly undefined //----- (0044EBC0) -------------------------------------------------------- void **__thiscall std::numpunct::falsename(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 24); if ( v3 == std::numpunct::do_falsename ) { Str = *(char **)(a2[2] + 28); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44EC04: variable 'v7' is possibly undefined //----- (0044EC40) -------------------------------------------------------- void **__thiscall std::numpunct::do_grouping(void **this, int a2) { char *Str; // esi size_t Size; // eax int v6; // [esp+8h] [ebp-14h] Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); return this; } // 44EC77: variable 'v6' is possibly undefined //----- (0044EC90) -------------------------------------------------------- wchar_t **__thiscall std::numpunct::do_truename(wchar_t **this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20); *this = (wchar_t *)(this + 2); v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 44ECC8: variable 'v6' is possibly undefined //----- (0044ECE0) -------------------------------------------------------- wchar_t **__thiscall std::numpunct::do_falsename(wchar_t **this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28); *this = (wchar_t *)(this + 2); v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 44ED18: variable 'v6' is possibly undefined //----- (0044ED30) -------------------------------------------------------- int __fastcall std::numpunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) return *(unsigned __int16 *)(a1[2] + 36); else return v1(); } //----- (0044ED50) -------------------------------------------------------- int __fastcall std::numpunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) return *(unsigned __int16 *)(a1[2] + 38); else return v1(); } //----- (0044ED70) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (0044ED80) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); } //----- (0044ED90) -------------------------------------------------------- void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2) { void **(__thiscall *v3)(void **, int); // edx char *Str; // esi size_t Size; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); if ( v3 == std::numpunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44EDD4: variable 'v7' is possibly undefined //----- (0044EE10) -------------------------------------------------------- wchar_t **__thiscall std::numpunct::truename(wchar_t **this, _DWORD *a2) { wchar_t **(__thiscall *v3)(wchar_t **, int); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 20); if ( v3 == std::numpunct::do_truename ) { String = *(wchar_t **)(a2[2] + 20); *this = (wchar_t *)(this + 2); v5 = -2; if ( String ) v5 = (int)&String[wcslen(String)]; LOBYTE(v7) = 0; std::wstring::_M_construct(this, String, v5, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44EE55: variable 'v7' is possibly undefined //----- (0044EE90) -------------------------------------------------------- wchar_t **__thiscall std::numpunct::falsename(wchar_t **this, _DWORD *a2) { wchar_t **(__thiscall *v3)(wchar_t **, int); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 24); if ( v3 == std::numpunct::do_falsename ) { String = *(wchar_t **)(a2[2] + 28); *this = (wchar_t *)(this + 2); v5 = -2; if ( String ) v5 = (int)&String[wcslen(String)]; LOBYTE(v7) = 0; std::wstring::_M_construct(this, String, v5, v7); return this; } else { ((void (__stdcall *)(_DWORD *))v3)(a2); return this; } } // 44EED5: variable 'v7' is possibly undefined //----- (0044EF10) -------------------------------------------------------- int __fastcall std::time_get>::date_order(int a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); if ( v1 == std::time_get>::do_date_order ) return 0; else return v1(); } //----- (0044EF30) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_date( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { _DWORD *v7; // eax _DWORD *v8; // esi int v9; // edx char v10; // dl char v11; // al int v13; // eax int v14; // eax char v15; // [esp+2Ch] [ebp-20h] char v16; // [esp+2Ch] [ebp-20h] v7 = std::use_facet>(a5 + 108); v8 = std::time_get>::_M_extract_via_format( a1, a2, a3, a4, a5, a6, a7, *(char **)(v7[2] + 8)); v10 = v9 == -1; v15 = v10 & (v8 != 0); if ( v15 ) { v10 = 0; if ( v8[2] >= v8[3] ) { v14 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v8 + 36))(v8, 0); v10 = v14 != -1 ? 0 : v15; v8 = v14 == -1 ? 0 : v8; } } v11 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v11 = 0; if ( a3[2] >= a3[3] ) { v16 = v10; v13 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v16; v11 = v13 == -1; } } } if ( v10 == v11 ) *a6 |= 2u; return v8; } // 44EF99: variable 'v9' is possibly undefined //----- (0044F030) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_time( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { _DWORD *v7; // eax _DWORD *v8; // esi int v9; // edx char v10; // dl char v11; // al int v13; // eax int v14; // eax char v15; // [esp+2Ch] [ebp-20h] char v16; // [esp+2Ch] [ebp-20h] v7 = std::use_facet>(a5 + 108); v8 = std::time_get>::_M_extract_via_format( a1, a2, a3, a4, a5, a6, a7, *(char **)(v7[2] + 16)); v10 = v9 == -1; v15 = v10 & (v8 != 0); if ( v15 ) { v10 = 0; if ( v8[2] >= v8[3] ) { v14 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v8 + 36))(v8, 0); v10 = v14 != -1 ? 0 : v15; v8 = v14 == -1 ? 0 : v8; } } v11 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v11 = 0; if ( a3[2] >= a3[3] ) { v16 = v10; v13 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v16; v11 = v13 == -1; } } } if ( v10 == v11 ) *a6 |= 2u; return v8; } // 44F099: variable 'v9' is possibly undefined //----- (0044F130) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_year( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7) { int v7; // edx _DWORD *v8; // ecx _DWORD *v9; // ebp int v10; // ebx char v11; // bl char v12; // al int v14; // eax char v15; // [esp+34h] [ebp-38h] _DWORD *v16; // [esp+38h] [ebp-34h] int v17; // [esp+48h] [ebp-24h] BYREF int v18[8]; // [esp+4Ch] [ebp-20h] BYREF v18[0] = 0; v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v17, 0, 9999, 4u, a5, v18); v9 = v8; if ( v18[0] ) { *a6 |= 4u; } else { v10 = v17 - 1900; if ( v17 < 0 ) v10 = v17 + 100; *(_DWORD *)(a7 + 20) = v10; } v11 = v7 == -1; v15 = v11 & (v8 != 0); if ( v15 ) { v11 = 0; if ( v8[2] >= v8[3] ) { v16 = v8; v14 = (*(int (**)(void))(*v8 + 36))(); v11 = v14 != -1 ? 0 : v15; v9 = v14 == -1 ? 0 : v16; } } v12 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v12 = 0; if ( a3[2] >= a3[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; } } if ( v11 == v12 ) *a6 |= 2u; return v9; } // 44F1C1: variable 'v7' is possibly undefined // 44F130: using guessed type int var_20[8]; //----- (0044F290) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (0044F2A0) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (0044F2B0) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (0044F2C0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_num( _DWORD *a1, int a2, _DWORD *a3, int a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10) { int v10; // ebx unsigned int v12; // ebp int v13; // edi char v14; // bl _BYTE *v15; // eax int v16; // ebx int v17; // edx int (__stdcall *v18)(unsigned __int8, int); // edx unsigned int v19; // eax bool v20; // dl bool v21; // bl int v22; // eax int v24; // eax unsigned int v26; // [esp+20h] [ebp-2Ch] _BYTE *v27; // [esp+24h] [ebp-28h] bool v29; // [esp+2Fh] [ebp-1Dh] v10 = 10; v27 = std::use_facet>(a9 + 108); if ( a8 != 2 ) v10 = a8 == 4 ? 1000 : 1; v26 = 0; v12 = v10; v13 = 0; while ( 1 ) { v20 = a2 == -1; v21 = v20 && a1 != 0; if ( v21 ) { if ( a1[2] >= a1[3] ) { v24 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v20 = a2 == -1; v14 = v24 == -1 && v21; a1 = v24 == -1 ? 0 : a1; } else { v14 = 0; } } else { v14 = a2 == -1; } if ( a3 && a4 == -1 ) { if ( a3[2] >= a3[3] ) { v29 = v20; v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v20 = v29; if ( v22 == -1 ) { a3 = 0; v14 ^= 1u; } } } else { v14 ^= a4 == -1; } if ( v26 >= a8 || !v14 ) break; if ( a1 && v20 ) { v15 = (_BYTE *)a1[2]; if ( (unsigned int)v15 >= a1[3] ) { v15 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v15 == (_BYTE *)-1 ) { v16 = 255; LOBYTE(v15) = -1; a1 = 0; } else { v16 = (unsigned __int8)v15; } } else { v16 = (unsigned __int8)*v15; LOBYTE(v15) = *v15; } } else { LOBYTE(v15) = a2; v16 = (unsigned __int8)a2; } v17 = (char)v27[v16 + 285]; if ( !(_BYTE)v17 ) { v18 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v27 + 32); if ( v18 == std::ctype::do_narrow ) { if ( (_BYTE)v15 == 42 ) goto LABEL_32; } else { LOBYTE(v15) = v18((unsigned __int8)v15, 42); if ( (_BYTE)v15 == 42 ) goto LABEL_32; } v17 = (char)v15; v27[v16 + 285] = (_BYTE)v15; } if ( (unsigned __int8)(v17 - 48) > 9u ) goto LABEL_32; v13 = v17 + 10 * v13 - 48; if ( (int)(v13 * v12) > a7 || (int)(v12 + v13 * v12) <= a6 ) goto LABEL_32; v19 = a1[2]; v12 /= 0xAu; if ( v19 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v19 + 1; ++v26; a2 = -1; } if ( v26 == a8 ) { LABEL_35: *a5 = v13; return a1; } LABEL_32: if ( a8 == 4 && v26 == 2 ) { v13 -= 100; goto LABEL_35; } *a10 |= 4u; return a1; } //----- (0044F580) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_weekday( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7) { _DWORD *v7; // eax int v8; // edx int v9; // eax int v10; // edx _DWORD *v11; // ecx _DWORD *v12; // ebp char v13; // dl char v14; // al int v16; // eax int v17; // eax char v18; // [esp+38h] [ebp-64h] char v19; // [esp+38h] [ebp-64h] _DWORD *v20; // [esp+3Ch] [ebp-60h] unsigned int v21; // [esp+40h] [ebp-5Ch] BYREF int v22; // [esp+44h] [ebp-58h] BYREF int v23[21]; // [esp+48h] [ebp-54h] BYREF v22 = 0; v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); v23[0] = v7[18]; v23[1] = v7[19]; v23[2] = v7[20]; v23[3] = v7[21]; v23[4] = v7[22]; v23[5] = v7[23]; v23[6] = v7[24]; v23[7] = v7[11]; v23[8] = v7[12]; v23[9] = v7[13]; v23[10] = v7[14]; v23[11] = v7[15]; v8 = v7[16]; v9 = v7[17]; v23[12] = v8; v23[13] = v9; v11 = std::time_get>::_M_extract_wday_or_month( a1, a2, a3, a4, &v21, (int)v23, 7u, a5, &v22); v12 = v11; if ( v22 ) *a6 |= 4u; else *(_DWORD *)(a7 + 24) = v21; v13 = v10 == -1; v18 = v13 & (v11 != 0); if ( v18 ) { v13 = 0; if ( v11[2] >= v11[3] ) { v20 = v11; v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); v13 = v17 != -1 ? 0 : v18; v12 = v17 == -1 ? 0 : v20; } } v14 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v14 = 0; if ( a3[2] >= a3[3] ) { v19 = v13; v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v13 = v19; v14 = v16 == -1; } } } if ( v13 == v14 ) *a6 |= 2u; return v12; } // 44F68F: variable 'v10' is possibly undefined //----- (0044F750) -------------------------------------------------------- int __stdcall std::time_get>::_M_extract_name( unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, int a7, _DWORD *a8) { int v8; // eax void *v9; // esp void *v10; // esp char v11; // dl unsigned __int8 v12; // bl char v14; // dl _DWORD *v15; // esi int v16; // edx unsigned int v17; // ebx int v18; // edi char v19; // al int v20; // ecx _DWORD *v21; // edi _DWORD *v22; // edx void *v23; // edi size_t v24; // eax unsigned int v25; // ebx size_t v26; // eax void *v27; // edi unsigned int v28; // eax char v29; // si unsigned __int8 v30; // si unsigned int i; // esi char v32; // di char v33; // al char *v34; // eax unsigned int v35; // eax int v36; // eax const char *v37; // edi char *v38; // ebx size_t v39; // eax unsigned int v40; // esi _DWORD **v41; // edi unsigned __int8 v42; // bl char v43; // bl char v44; // al _BYTE *v45; // eax unsigned __int8 v46; // dl char v47; // bl int v48; // edx bool v49; // zf int v50; // eax int v51; // esi int v52; // eax int v53; // eax char *v54; // eax int v55; // eax int v56; // eax int v57; // eax int v58; // eax int v59; // edx int v60; // edx int v61; // eax _DWORD *v62; // [esp+10h] [ebp-38h] BYREF _DWORD *v63; // [esp+14h] [ebp-34h] void *v64; // [esp+18h] [ebp-30h] unsigned __int8 v65; // [esp+1Fh] [ebp-29h] unsigned __int64 v66; // [esp+20h] [ebp-28h] _DWORD **v67; // [esp+28h] [ebp-20h] unsigned int v68; // [esp+2Ch] [ebp-1Ch] v67 = (_DWORD **)HIDWORD(a1); v66 = a1; v62 = a2; v64 = std::use_facet>(a7 + 108); v8 = 16 * ((unsigned int)(4 * (_DWORD)a6 + 27) >> 4); v9 = alloca(v8); v10 = alloca(v8); LOBYTE(v68) = HIDWORD(a1) == -1; if ( ((unsigned __int8)v68 & ((_DWORD)a1 != 0)) != 0 ) { if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) { v65 = v68 & ((_DWORD)a1 != 0); v55 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); v11 = v55 != -1 ? 0 : v65; LODWORD(v66) = v55 == -1 ? 0 : v66; } else { v11 = 0; } } else { v11 = v68; } v65 = a3 == -1; if ( (v65 & (a2 != 0)) != 0 ) { if ( a2[2] >= a2[3] ) { v56 = *a2; LOBYTE(v63) = v11; v57 = (*(int (__fastcall **)(_DWORD *))(v56 + 36))(a2); v11 = (char)v63; v12 = v57 == -1 && v65 & (a2 != 0); v62 = v57 == -1 ? 0 : a2; } else { v12 = 0; } } else { v12 = v65; } if ( v11 == v12 || ((_DWORD)v66 && (_BYTE)v68 ? ((v54 = *(char **)(v66 + 8), (unsigned int)v54 >= *(_DWORD *)(v66 + 12)) ? (v58 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66), v14 = v58 != -1 ? v58 : -1, LODWORD(v66) = v58 == -1 ? 0 : v66) : (v14 = *v54)) : (v14 = (char)v67), !a6) ) { LABEL_6: *a8 |= 4u; return v66; } LOBYTE(v68) = v14; v15 = 0; v16 = a5; v17 = 0; v67 = &v62; v18 = (int)v64; do { while ( 1 ) { v20 = **(char **)(v16 + 4 * (_DWORD)v15); if ( (_BYTE)v20 == (_BYTE)v68 ) break; a5 = v16; v19 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v18 + 8))(v18, v20); v16 = a5; if ( v19 == (_BYTE)v68 ) break; v15 = (_DWORD *)((char *)v15 + 1); if ( a6 == v15 ) goto LABEL_16; } v67[v17++] = v15; v15 = (_DWORD *)((char *)v15 + 1); } while ( a6 != v15 ); LABEL_16: v21 = v67; v67 = 0; if ( v17 <= 1 ) goto LABEL_40; v22 = v21; do { v23 = (void *)*v22; v63 = v22; v24 = strlen(*(const char **)(a5 + 4 * (_DWORD)v23)); HIDWORD(v66) = v17; v25 = 1; v68 = v24; v64 = v23; do { v26 = strlen(*(const char **)(a5 + 4 * v63[v25])); if ( v68 > v26 ) v68 = v26; ++v25; } while ( v25 < HIDWORD(v66) ); v22 = v63; v17 = HIDWORD(v66); v27 = v64; v28 = *(_DWORD *)(v66 + 8); if ( v28 >= *(_DWORD *)(v66 + 12) ) { HIDWORD(v66) = v63; (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 40))(v66); v22 = (_DWORD *)HIDWORD(v66); } else { *(_DWORD *)(v66 + 8) = v28 + 1; } v67 = (_DWORD **)((char *)v67 + 1); if ( (unsigned int)v67 >= v68 ) goto LABEL_58; LOBYTE(v68) = 0; if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) { v51 = v66; v52 = *(_DWORD *)v66; HIDWORD(v66) = v22; v53 = (*(int (__fastcall **)(_DWORD))(v52 + 36))(v66); v22 = (_DWORD *)HIDWORD(v66); LOBYTE(v68) = v53 == -1; LODWORD(v66) = ((unsigned __int8)v68 - 1) & v51; } v29 = v65 & (v62 != 0); if ( v29 ) { if ( v62[2] < v62[3] ) { if ( !(_BYTE)v68 ) goto LABEL_58; goto LABEL_30; } HIDWORD(v66) = v22; v50 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); v22 = (_DWORD *)HIDWORD(v66); v30 = v50 != -1 ? 0 : v29; v62 = v50 == -1 ? 0 : v62; } else { v30 = v65; } if ( (_BYTE)v68 == v30 ) goto LABEL_58; LABEL_30: for ( i = 0; ; v27 = (void *)v22[i] ) { v32 = *((_BYTE *)v67 + *(_DWORD *)(a5 + 4 * (_DWORD)v27)); v33 = -1; if ( (_DWORD)v66 ) { v34 = *(char **)(v66 + 8); if ( (unsigned int)v34 >= *(_DWORD *)(v66 + 12) ) { v68 = (unsigned int)v22; v48 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); v33 = v48 != -1 ? v48 : -1; v49 = v48 == -1; v22 = (_DWORD *)v68; LODWORD(v66) = v49 ? 0 : v66; } else { v33 = *v34; } } if ( v32 == v33 ) break; v22[i] = v22[--v17]; if ( v17 <= i ) goto LABEL_38; LABEL_32: ; } if ( v17 > ++i ) goto LABEL_32; LABEL_38: ; } while ( v17 > 1 ); HIDWORD(v66) = -1; v21 = v22; LABEL_40: if ( v17 != 1 ) goto LABEL_6; v35 = *(_DWORD *)(v66 + 8); if ( v35 >= *(_DWORD *)(v66 + 12) ) (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 40))(v66); else *(_DWORD *)(v66 + 8) = v35 + 1; v36 = *v21; v37 = *(const char **)(a5 + 4 * *v21); HIDWORD(v66) = v36; v38 = (char *)v67 + 1; v39 = strlen(v37); v67 = (_DWORD **)v39; if ( (unsigned int)v38 < v39 ) { v68 = (unsigned int)v37; v40 = v66; v41 = (_DWORD **)v38; while ( 1 ) { while ( 1 ) { v46 = 0; if ( *(_DWORD *)(v40 + 8) >= *(_DWORD *)(v40 + 12) ) { v46 = (*(int (__fastcall **)(unsigned int, _DWORD))(*(_DWORD *)v40 + 36))(v40, 0) == -1; v40 &= v46 - 1; } v47 = v65 & (v62 != 0); if ( v47 ) { if ( v62[2] >= v62[3] ) { LOBYTE(v66) = v46; v61 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); v46 = v66; v42 = v61 != -1 ? 0 : v47; v62 = v61 == -1 ? 0 : v62; } else { v42 = 0; } } else { v42 = v65; } if ( v46 == v42 ) { LABEL_73: v66 = v40 | 0xFFFFFFFF00000000LL; goto LABEL_6; } v43 = *((_BYTE *)v41 + v68); v44 = -1; if ( v40 ) break; LABEL_48: if ( v43 != v44 ) goto LABEL_73; v45 = *(_BYTE **)(v40 + 8); if ( (unsigned int)v45 < *(_DWORD *)(v40 + 12) ) goto LABEL_50; v41 = (_DWORD **)((char *)v41 + 1); (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 40))(v40); if ( v41 == v67 ) { LABEL_75: LODWORD(v66) = v40; goto LABEL_76; } } v45 = *(_BYTE **)(v40 + 8); if ( (unsigned int)v45 >= *(_DWORD *)(v40 + 12) ) { v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 36))(v40); v44 = v60 != -1 ? v60 : -1; v40 &= (v60 == -1) - 1; goto LABEL_48; } if ( v43 != *v45 ) goto LABEL_73; LABEL_50: v41 = (_DWORD **)((char *)v41 + 1); *(_DWORD *)(v40 + 8) = v45 + 1; if ( v41 == v67 ) goto LABEL_75; } } if ( v38 != (char *)v39 ) { LABEL_58: HIDWORD(v66) = -1; goto LABEL_6; } LABEL_76: v59 = HIDWORD(v66); HIDWORD(v66) = -1; *a4 = v59; return v66; } //----- (0044FCD0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_monthname( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7) { _DWORD *v7; // eax int v8; // edx int v9; // edx int v10; // edx _DWORD *v11; // ecx _DWORD *v12; // ebp char v13; // dl char v14; // al int v16; // eax int v17; // eax char v18; // [esp+38h] [ebp-94h] char v19; // [esp+38h] [ebp-94h] _DWORD *v20; // [esp+3Ch] [ebp-90h] unsigned int v21; // [esp+48h] [ebp-84h] BYREF int v22; // [esp+4Ch] [ebp-80h] BYREF int v23[31]; // [esp+50h] [ebp-7Ch] BYREF v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); v23[0] = v7[37]; v23[1] = v7[38]; v23[2] = v7[39]; v23[3] = v7[40]; v23[4] = v7[41]; v23[5] = v7[42]; v23[6] = v7[43]; v23[7] = v7[44]; v23[8] = v7[45]; v23[9] = v7[46]; v23[10] = v7[47]; v23[11] = v7[48]; v23[12] = v7[25]; v23[13] = v7[26]; v23[14] = v7[27]; v23[15] = v7[28]; v8 = v7[29]; v22 = 0; v23[16] = v8; v23[17] = v7[30]; v23[18] = v7[31]; v23[19] = v7[32]; v23[20] = v7[33]; v23[21] = v7[34]; v9 = v7[35]; v23[23] = v7[36]; v23[22] = v9; v11 = std::time_get>::_M_extract_wday_or_month( a1, a2, a3, a4, &v21, (int)v23, 0xCu, a5, &v22); v12 = v11; if ( v22 ) *a6 |= 4u; else *(_DWORD *)(a7 + 16) = v21; v13 = v10 == -1; v18 = v13 & (v11 != 0); if ( v18 ) { v13 = 0; if ( v11[2] >= v11[3] ) { v20 = v11; v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); v13 = v17 != -1 ? 0 : v18; v12 = v17 == -1 ? 0 : v20; } } v14 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v14 = 0; if ( a3[2] >= a3[3] ) { v19 = v13; v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v13 = v19; v14 = v16 == -1; } } } if ( v13 == v14 ) *a6 |= 2u; return v12; } // 44FE7C: variable 'v10' is possibly undefined //----- (0044FF40) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_via_format( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char *a8) { size_t v8; // esi _BYTE *v9; // ebx _BYTE *v10; // edi char v12; // dl int v13; // edx char v14; // al char v15; // cl int (__stdcall *v16)(unsigned __int8, int); // eax int v17; // ebp char v18; // dl char v19; // al int (__stdcall *v20)(unsigned __int8, int); // edx char v21; // dl char v22; // dl int v23; // eax int v24; // eax int v25; // esi char v26; // al int (__stdcall *v27)(unsigned __int8, int); // edx _DWORD *v28; // edi _BYTE *v30; // eax int v31; // edx int v32; // edx _DWORD *v33; // eax int v34; // eax int v35; // edx _DWORD *v36; // eax int v37; // eax int v38; // edx int v39; // esi int v40; // edx char v41; // al int (__stdcall *v42)(unsigned __int8, int); // eax unsigned int v43; // eax int v44; // eax _DWORD *v45; // eax int v46; // edx char v47; // si char v48; // dl int v49; // esi char v50; // al int v51; // esi char v52; // al _DWORD *v53; // eax int v54; // edx int v55; // edx _DWORD *v56; // eax _DWORD *v57; // eax int v58; // edx char v59; // al void (__thiscall *v60)(_BYTE *, const char *, const char *, int *); // eax _DWORD *v61; // eax int v62; // edx int v63; // edx char v64; // al void (__thiscall *v65)(_BYTE *, const char *, const char *, int *); // eax int v66; // edx char v67; // al void (__thiscall *v68)(_BYTE *, const char *, void *, int *); // eax int v69; // esi char v70; // al int (__stdcall *v71)(unsigned __int8, int); // eax _DWORD *v72; // eax _DWORD *v73; // eax int v74; // edx int v75; // eax unsigned __int8 *v76; // eax int v77; // edx int v78; // eax unsigned __int8 *v79; // eax unsigned __int8 *v80; // eax unsigned __int8 *v81; // eax int v82; // eax int v83; // eax int v84; // eax char *v85; // edx _BYTE *v86; // eax _BYTE *v87; // eax char *Str; // [esp+0h] [ebp-BCh] int v89; // [esp+14h] [ebp-A8h] int v90; // [esp+20h] [ebp-9Ch] bool v91; // [esp+3Ah] [ebp-82h] bool v92; // [esp+3Ah] [ebp-82h] char v93; // [esp+3Ah] [ebp-82h] char v94; // [esp+3Bh] [ebp-81h] char v95; // [esp+3Bh] [ebp-81h] size_t v98; // [esp+44h] [ebp-78h] char v99; // [esp+44h] [ebp-78h] size_t v100; // [esp+4Ch] [ebp-70h] char *v101; // [esp+50h] [ebp-6Ch] bool v102; // [esp+50h] [ebp-6Ch] _DWORD *v103; // [esp+58h] [ebp-64h] int v104; // [esp+5Ch] [ebp-60h] int v105; // [esp+5Ch] [ebp-60h] int v106; // [esp+68h] [ebp-54h] BYREF int v107; // [esp+6Ch] [ebp-50h] BYREF int v108[3]; // [esp+70h] [ebp-4Ch] BYREF int v109; // [esp+7Ch] [ebp-40h] int v110; // [esp+80h] [ebp-3Ch] int v111; // [esp+84h] [ebp-38h] int v112; // [esp+88h] [ebp-34h] int v113; // [esp+8Ch] [ebp-30h] int v114; // [esp+90h] [ebp-2Ch] int v115; // [esp+94h] [ebp-28h] int v116; // [esp+98h] [ebp-24h] int v117; // [esp+9Ch] [ebp-20h] v8 = 0; v103 = std::use_facet>(a5 + 108); v9 = std::use_facet>(a5 + 108); v106 = 0; v100 = strlen(a8); v10 = v9; while ( 1 ) { v91 = a2 == -1; if ( v91 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v78 = (*(int (__thiscall **)(_DWORD *, char *))(*a1 + 36))(a1, Str); v12 = v78 == -1 && v91 && a1 != 0; a1 = v78 == -1 ? 0 : a1; } else { v12 = 0; } } else { v12 = a2 == -1; } v94 = a4 == -1; if ( a3 && a4 == -1 ) { if ( a3[2] >= a3[3] ) { v99 = v12; v24 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v12 = v99; if ( v24 == -1 ) { a3 = 0; v12 = v99 ^ 1; } } } else { v12 ^= v94; } if ( v8 >= v100 || !v12 ) break; if ( v106 ) { v28 = a1; LABEL_44: *a6 |= 4u; return v28; } v13 = (unsigned __int8)a8[v8]; v101 = &a8[v8]; v98 = v8 + 1; v14 = v10[v13 + 285]; v15 = a8[v8]; if ( v14 ) { LABEL_15: if ( v14 != 37 ) goto LABEL_25; v17 = (unsigned __int8)a8[v8 + 1]; v18 = v10[v17 + 285]; v19 = a8[v8 + 1]; if ( !v18 ) { v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v20 != std::ctype::do_narrow ) v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v10, v19, 0); if ( !v19 ) { LABEL_40: v106 |= 4u; goto LABEL_41; } v10[v17 + 285] = v19; v18 = v19; } v107 = 0; if ( (v18 == 69 || v18 == 79) && (v98 = v8 + 2, v25 = (unsigned __int8)a8[v8 + 2], v18 = v10[v25 + 285], v26 = v25, !v18) ) { v27 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v27 != std::ctype::do_narrow ) v26 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v27)(v10, (char)v25, 0); if ( !v26 ) goto LABEL_40; v10[v25 + 285] = v26; v21 = v26 - 65; if ( (unsigned __int8)(v26 - 65) > 0x38u ) goto LABEL_40; } else { v21 = v18 - 65; } switch ( v21 ) { case 0: v36 = (_DWORD *)v103[2]; v108[0] = v36[11]; v108[1] = v36[12]; v108[2] = v36[13]; v109 = v36[14]; v110 = v36[15]; v111 = v36[16]; v37 = v36[17]; goto LABEL_62; case 1: v72 = (_DWORD *)v103[2]; v108[0] = v72[25]; v108[1] = v72[26]; v108[2] = v72[27]; v109 = v72[28]; v110 = v72[29]; v111 = v72[30]; v112 = v72[31]; v113 = v72[32]; v114 = v72[33]; v115 = v72[34]; v116 = v72[35]; v34 = v72[36]; goto LABEL_59; case 2: case 24: case 56: a1 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v107, 0, 9999, 4u, a5, &v106); a2 = v31; if ( !v106 ) { v32 = v107 - 1900; if ( v107 < 0 ) v32 = v107 + 100; a7[5] = v32; } break; case 3: v59 = v10[28]; if ( v59 == 1 ) goto LABEL_102; if ( !v59 ) std::ctype::_M_widen_init((int)v10); v60 = *(void (__thiscall **)(_BYTE *, const char *, const char *, int *))(*(_DWORD *)v10 + 28); if ( (char *)v60 == (char *)std::ctype::do_widen ) LABEL_102: strcpy((char *)v108, "%m/%d/%y"); else v60(v10, "%m/%d/%y", "%H:%M", v108); goto LABEL_103; case 7: v61 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v107, 0, 23, 2u, a5, &v106); goto LABEL_105; case 8: v61 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v107, 1, 12, 2u, a5, &v106); LABEL_105: a1 = v61; a2 = v62; if ( !v106 ) a7[2] = v107; break; case 12: a1 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v107, 0, 59, 2u, a5, &v106); a2 = v63; if ( !v106 ) a7[1] = v107; break; case 17: v64 = v10[28]; if ( v64 == 1 ) goto LABEL_114; if ( !v64 ) std::ctype::_M_widen_init((int)v10); v65 = *(void (__thiscall **)(_BYTE *, const char *, const char *, int *))(*(_DWORD *)v10 + 28); if ( (char *)v65 == (char *)std::ctype::do_widen ) LABEL_114: strcpy((char *)v108, "%H:%M"); else v65(v10, "%H:%M", "%H:%M:%S", v108); goto LABEL_103; case 18: a1 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v107, 0, 61, 2u, a5, &v106); a2 = v66; if ( !v106 ) *a7 = v107; break; case 19: v67 = v10[28]; if ( v67 == 1 ) goto LABEL_121; if ( !v67 ) std::ctype::_M_widen_init((int)v10); v68 = *(void (__thiscall **)(_BYTE *, const char *, void *, int *))(*(_DWORD *)v10 + 28); if ( (char *)v68 == (char *)std::ctype::do_widen ) LABEL_121: strcpy((char *)v108, "%H:%M:%S"); else v68(v10, "%H:%M:%S", &unk_4ECD6E, v108); LABEL_103: v57 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, a2, (int)a3, a4, a5, (int)&v106, (int)a7, (char *)v108); goto LABEL_97; case 23: v57 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, a2, (int)a3, a4, a5, (int)&v106, (int)a7, *(char **)(v103[2] + 16)); goto LABEL_97; case 25: if ( a1 && a2 == -1 ) { v81 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v81 >= a1[3] ) { v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v44 == -1 ) { v44 = 255; a1 = 0; } else { v44 = (unsigned __int8)v44; } } else { v44 = *v81; } } else { v44 = (unsigned __int8)a2; } if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * v44) & 1) == 0 ) goto LABEL_40; v45 = (_DWORD *)std::time_get>::_M_extract_name( __PAIR64__(a2, (unsigned int)a1), a3, a4, v108, (int)std::__timepunct_cache::_S_timezones, (_DWORD *)0xE, a5, &v106); a1 = v45; v92 = v46 == -1; v105 = v46; a2 = v46; v47 = v92; v102 = v92 && v45 != 0; if ( v102 ) { v47 = 0; if ( v45[2] >= v45[3] && (*(int (__fastcall **)(_DWORD *))(*v45 + 36))(v45) == -1 ) { v47 = v102; a1 = 0; v102 = 0; } } v48 = v94 & (a3 != 0); if ( v48 ) { v94 = 0; if ( a3[2] >= a3[3] ) { v95 = v48; v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v94 = v82 != -1 ? 0 : v95; a3 = v82 == -1 ? 0 : a3; } } if ( v47 != v94 && !(v108[0] | v106) ) { LOBYTE(v49) = v105; if ( v102 ) { v86 = (_BYTE *)a1[2]; if ( (unsigned int)v86 >= a1[3] ) { v49 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); a1 = v49 == -1 ? 0 : a1; } else { LOBYTE(v49) = *v86; } } if ( v10[28] ) { v50 = v10[74]; } else { std::ctype::_M_widen_init((int)v10); v50 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 45); } if ( (_BYTE)v49 == v50 || (a1 && v92 ? ((v87 = (_BYTE *)a1[2], (unsigned int)v87 >= a1[3]) ? (v51 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1), a1 = v51 == -1 ? 0 : a1) : (_DWORD *)(LOBYTE(v51) = *v87)) : (_DWORD *)(LOBYTE(v51) = v105), !v10[28] ? (std::ctype::_M_widen_init((int)v10), v52 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 43), Str = v85) : (char *)(v52 = v10[72]), (_BYTE)v51 == v52) ) { v53 = std::time_get>::_M_extract_num( a1, v105, a3, a4, v108, 0, 23, 2u, a5, &v106); a1 = std::time_get>::_M_extract_num( v53, v54, a3, a4, v108, 0, 59, 2u, a5, &v106); a2 = v55; } } break; case 32: v56 = (_DWORD *)v103[2]; v108[0] = v56[18]; v108[1] = v56[19]; v108[2] = v56[20]; v109 = v56[21]; v110 = v56[22]; v111 = v56[23]; v37 = v56[24]; LABEL_62: v112 = v37; a1 = (_DWORD *)std::time_get>::_M_extract_name( __PAIR64__(a2, (unsigned int)a1), a3, a4, &v107, (int)v108, (_DWORD *)7, a5, &v106); a2 = v38; if ( !v106 ) a7[6] = v107; break; case 33: case 39: v33 = (_DWORD *)v103[2]; v108[0] = v33[37]; v108[1] = v33[38]; v108[2] = v33[39]; v109 = v33[40]; v110 = v33[41]; v111 = v33[42]; v112 = v33[43]; v113 = v33[44]; v114 = v33[45]; v115 = v33[46]; v116 = v33[47]; v34 = v33[48]; LABEL_59: v117 = v34; a1 = (_DWORD *)std::time_get>::_M_extract_name( __PAIR64__(a2, (unsigned int)a1), a3, a4, &v107, (int)v108, (_DWORD *)0xC, a5, &v106); a2 = v35; if ( !v106 ) a7[4] = v107; break; case 34: v57 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, a2, (int)a3, a4, a5, (int)&v106, (int)a7, *(char **)(v103[2] + 24)); goto LABEL_97; case 35: v90 = a5; v89 = 1; goto LABEL_136; case 36: if ( a1 && a2 == -1 ) { v76 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v76 < a1[3] ) { if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * *v76) & 0x20) != 0 ) goto LABEL_144; goto LABEL_151; } v75 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); a1 = v75 == -1 ? 0 : a1; } else { LOBYTE(v75) = a2; } if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)v75) & 0x20) != 0 ) { v76 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v76 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else LABEL_144: a1[2] = v76 + 1; v73 = std::time_get>::_M_extract_num( a1, -1, a3, a4, &v107, 1, 9, 1u, a5, &v106); goto LABEL_137; } LABEL_151: v90 = a5; v89 = 10; LABEL_136: v73 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v107, v89, 31, 2u, v90, &v106); LABEL_137: a1 = v73; a2 = v74; if ( !v106 ) a7[3] = v107; break; case 44: a1 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v107, 1, 12, 2u, a5, &v106); a2 = v77; if ( !v106 ) a7[4] = v107 - 1; break; case 45: if ( a1 && a2 == -1 ) { v79 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v79 >= a1[3] ) { v83 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v40 = v83; if ( v83 == -1 ) { v40 = -1; v39 = 255; a1 = 0; } else { v39 = (unsigned __int8)v83; } } else { v39 = *v79; v40 = v39; } } else { v39 = (unsigned __int8)a2; v40 = a2; } v41 = v10[v39 + 285]; if ( v41 ) goto LABEL_72; v42 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v42 != std::ctype::do_narrow ) v40 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v42)(v10, (char)v40, 0); if ( (_BYTE)v40 ) { v10[v39 + 285] = v40; v41 = v40; LABEL_72: if ( v41 == 10 ) goto LABEL_73; } goto LABEL_40; case 51: if ( a1 && a2 == -1 ) { v80 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v80 >= a1[3] ) { v84 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v84 == -1 ) { v69 = 255; v40 = -1; a1 = 0; } else { v40 = v84; v69 = (unsigned __int8)v84; } } else { v69 = *v80; v40 = v69; } } else { v40 = a2; v69 = (unsigned __int8)a2; } v70 = v10[v69 + 285]; if ( v70 ) goto LABEL_131; v71 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v71 != std::ctype::do_narrow ) v40 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v71)(v10, (char)v40, 0); if ( !(_BYTE)v40 ) goto LABEL_40; v10[v69 + 285] = v40; v70 = v40; LABEL_131: if ( v70 != 9 ) goto LABEL_40; LABEL_73: v43 = a1[2]; if ( v43 >= a1[3] ) (*(void (__fastcall **)(_DWORD *, int))(*a1 + 40))(a1, v40); else a1[2] = v43 + 1; a2 = -1; break; case 55: v57 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, a2, (int)a3, a4, a5, (int)&v106, (int)a7, *(char **)(v103[2] + 8)); LABEL_97: a1 = v57; a2 = v58; break; default: goto LABEL_40; } LABEL_41: v8 = v98 + 1; } else { v16 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v16 != std::ctype::do_narrow ) { v104 = (unsigned __int8)a8[v8]; v15 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v16)(v10, (char)v13, 0); v13 = v104; } if ( v15 ) { v10[v13 + 285] = v15; v14 = v15; goto LABEL_15; } LABEL_25: v22 = *v101; if ( !a1 || a2 != -1 ) { LOBYTE(v23) = a2; goto LABEL_28; } v30 = (_BYTE *)a1[2]; if ( (unsigned int)v30 >= a1[3] ) { v93 = *v101; v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v22 = v93; a1 = v23 == -1 ? 0 : a1; LABEL_28: if ( v22 != (_BYTE)v23 ) goto LABEL_29; v30 = (_BYTE *)a1[2]; if ( (unsigned int)v30 < a1[3] ) { LABEL_47: a1[2] = v30 + 1; goto LABEL_48; } (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); LABEL_48: a2 = -1; ++v8; } else { if ( v22 == *v30 ) goto LABEL_47; LABEL_29: v106 |= 4u; ++v8; } } } v28 = a1; if ( v106 || v8 != v100 ) goto LABEL_44; return v28; } // 4502F0: variable 'v31' is possibly undefined // 45041B: variable 'v35' is possibly undefined // 4504D7: variable 'v38' is possibly undefined // 4505D5: variable 'v46' is possibly undefined // 450716: variable 'v54' is possibly undefined // 450720: variable 'v55' is possibly undefined // 4507C7: variable 'v58' is possibly undefined // 450872: variable 'v62' is possibly undefined // 450921: variable 'v63' is possibly undefined // 4509DB: variable 'v66' is possibly undefined // 450B8F: variable 'v74' is possibly undefined // 450C96: variable 'v77' is possibly undefined // 450CE8: variable 'Str' is possibly undefined // 450FAF: variable 'v85' is possibly undefined // 4E94E0: using guessed type void *std::__timepunct_cache::_S_timezones[2]; //----- (00451040) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( _DWORD *a1, int a2, _DWORD *a3, int a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9) { int v9; // eax void *v10; // esp void *v11; // esp char v12; // dl bool v13; // bl char v14; // bl int v15; // edi unsigned int v16; // esi char v17; // dl bool v18; // bl char v19; // bl unsigned int v20; // edx unsigned int *v21; // ecx unsigned int v22; // edi unsigned int v23; // eax char *v25; // eax unsigned int v26; // eax int v27; // edx unsigned int v28; // ebx int v29; // edi char v30; // al int v31; // ecx unsigned int v32; // eax int v33; // eax void *v34; // esp int v35; // edi void *v36; // esp int v37; // ebx int v38; // eax int v39; // eax _DWORD *v40; // ebx int v41; // eax int v42; // eax int v43; // eax _DWORD *v44; // ebx int v45; // eax _BYTE *v46; // eax int v47; // eax int v48; // eax _DWORD *v49; // esi int v50; // eax _BYTE v51[8]; // [esp+10h] [ebp-48h] BYREF _BYTE *v52; // [esp+18h] [ebp-40h] _DWORD *v53; // [esp+1Ch] [ebp-3Ch] int v54; // [esp+20h] [ebp-38h] _DWORD *v55; // [esp+24h] [ebp-34h] bool v56; // [esp+2Ah] [ebp-2Eh] char v57; // [esp+2Bh] [ebp-2Dh] int v58; // [esp+2Ch] [ebp-2Ch] unsigned int *v59; // [esp+30h] [ebp-28h] unsigned int *v60; // [esp+34h] [ebp-24h] _BYTE *v61; // [esp+38h] [ebp-20h] unsigned int v62; // [esp+3Ch] [ebp-1Ch] v55 = a1; v54 = a2; v53 = a3; v60 = (unsigned int *)std::use_facet>(a8 + 108); v9 = 16 * ((8 * a7 + 27) >> 4); v10 = alloca(v9); v11 = alloca(v9); v59 = (unsigned int *)v51; v12 = a2 == -1; LOBYTE(v62) = v12 & (a1 != 0); if ( (_BYTE)v62 ) { v12 = 0; if ( v55[2] >= v55[3] ) { v38 = *v55; LOBYTE(v61) = 0; v39 = (*(int (__fastcall **)(_DWORD *))(v38 + 36))(v55); v12 = (char)v61; if ( v39 == -1 ) { v12 = v62; v55 = 0; LOBYTE(v62) = 0; } } } v56 = a4 == -1; v13 = v56 && a3 != 0; if ( v13 ) { if ( a3[2] >= a3[3] ) { v47 = *a3; LOBYTE(v61) = v12; v48 = (*(int (__fastcall **)(_DWORD *))(v47 + 36))(a3); v12 = (char)v61; v14 = v48 == -1 && v13; v53 = v48 == -1 ? 0 : a3; } else { v14 = 0; } } else { v14 = v56; } if ( v14 == v12 ) { v52 = 0; v15 = 0; v16 = 0; } else { if ( (_BYTE)v62 ) { v46 = (_BYTE *)v55[2]; if ( (unsigned int)v46 >= v55[3] ) { v49 = v55; v50 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); LOBYTE(v62) = v50 != -1 ? v50 : -1; v55 = v50 == -1 ? 0 : v49; } else { LOBYTE(v62) = *v46; } } else { LOBYTE(v62) = a2; } v15 = 2 * a7; if ( 2 * a7 ) { v61 = (_BYTE *)(2 * a7); v27 = a6; v28 = 0; v16 = 0; v29 = (int)v60; do { while ( 1 ) { v31 = **(char **)(v27 + 4 * v28); if ( (_BYTE)v31 == (_BYTE)v62 ) break; a6 = v27; v30 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v29 + 8))(v29, v31); v27 = a6; if ( v30 == (_BYTE)v62 ) break; if ( v61 == (_BYTE *)++v28 ) goto LABEL_50; } v59[v16++] = v28++; } while ( v61 != (_BYTE *)v28 ); LABEL_50: if ( v16 ) { v32 = v55[2]; if ( v32 >= v55[3] ) (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); else v55[2] = v32 + 1; v33 = 16 * ((4 * v16 + 27) >> 4); v34 = alloca(v33); v35 = 0; v36 = alloca(v33); v62 = v16; v52 = v51; v61 = v51; v37 = (int)v59; do { *(_DWORD *)&v61[4 * v35] = strlen(*(const char **)(a6 + 4 * *(_DWORD *)(v37 + 4 * v35))); ++v35; } while ( v62 != v35 ); v54 = -1; v16 = v62; v15 = 1; } else { v52 = 0; v15 = 0; } } else { v52 = 0; v16 = 0; } } while ( 2 ) { v17 = v54 == -1; LOBYTE(v62) = v17 & (v55 != 0); if ( (_BYTE)v62 ) { if ( v55[2] >= v55[3] ) { v40 = v55; v41 = *v55; LOBYTE(v61) = v54 == -1; v42 = (*(int (__fastcall **)(_DWORD *))(v41 + 36))(v55); v17 = (char)v61; LOBYTE(v62) = v42 != -1 ? 0 : v62; v55 = v42 == -1 ? 0 : v40; } else { LOBYTE(v62) = 0; } } else { LOBYTE(v62) = v54 == -1; } v18 = v56 && v53 != 0; if ( v18 ) { if ( v53[2] < v53[3] ) { if ( !(_BYTE)v62 ) break; goto LABEL_11; } LOBYTE(v61) = v17; v43 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); v17 = (char)v61; v19 = v43 == -1 && v18; v53 = v43 == -1 ? 0 : v53; } else { v19 = v56; } if ( v19 == (_BYTE)v62 ) break; LABEL_11: if ( v55 && v17 ) { v25 = (char *)v55[2]; if ( (unsigned int)v25 >= v55[3] ) { v44 = v55; v45 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); v57 = v45 != -1 ? v45 : -1; v55 = v45 == -1 ? 0 : v44; } else { v57 = *v25; } } else { v57 = v54; } if ( !v16 ) { LABEL_30: *a9 |= 4u; return v55; } v62 = v15; v20 = 0; v58 = 0; v61 = v52; do { while ( 1 ) { v21 = (unsigned int *)&v61[4 * v20]; if ( *v21 > v62 ) break; ++v58; ++v20; LABEL_17: if ( v20 >= v16 ) goto LABEL_21; } v22 = v59[v20]; v60 = &v59[v20]; if ( *(_BYTE *)(*(_DWORD *)(a6 + 4 * v22) + v62) == v57 ) { ++v20; goto LABEL_17; } *v60 = v59[--v16]; *v21 = *(_DWORD *)&v61[4 * v16]; } while ( v20 < v16 ); LABEL_21: v15 = v62; if ( v58 != v16 ) { v23 = v55[2]; if ( v23 >= v55[3] ) (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); else v55[2] = v23 + 1; v54 = -1; ++v15; continue; } break; } if ( v16 != 1 ) { if ( v16 == 2 && (*(_DWORD *)v52 == v15 || *((_DWORD *)v52 + 1) == v15) ) goto LABEL_39; goto LABEL_30; } if ( *(_DWORD *)v52 != v15 ) goto LABEL_30; LABEL_39: v26 = *v59; if ( *v59 >= a7 ) v26 -= a7; *a5 = v26; return v55; } //----- (00451500) -------------------------------------------------------- int __thiscall std::time_get>::get( void *this, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int8 *a9, unsigned __int8 *a10) { unsigned __int8 *v10; // esi _DWORD *v12; // ebp int v13; // edx char v14; // dl char v15; // bl char v16; // dl char v17; // bl unsigned int v18; // eax char v19; // dl char v20; // bl int v21; // edx char v22; // bl char v23; // al int (__stdcall *v24)(unsigned __int8, int); // ebx unsigned __int8 v25; // dl int (__stdcall *v26)(unsigned __int8, int); // eax int v27; // ecx __int64 (__thiscall *v28)(void *, int, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int); // eax _BYTE *v29; // eax char v30; // dl _BYTE *v31; // esi _DWORD *v32; // eax int v33; // edx char v34; // bl char v35; // dl char v36; // al unsigned __int8 *i; // esi int j; // ebp bool v40; // si char v41; // bl char v42; // dl int v43; // eax unsigned __int8 *v44; // eax int v45; // esi char v46; // al int (__stdcall *v47)(unsigned __int8, int); // eax int (__stdcall *v48)(unsigned __int8); // eax char *v49; // eax __int64 v50; // kr00_8 int v51; // eax int v52; // eax int v53; // eax char *v54; // eax int v55; // eax int v56; // eax signed __int8 v57; // al int v58; // eax int v59; // eax bool v60; // [esp+4Bh] [ebp-51h] bool v62; // [esp+50h] [ebp-4Ch] char v63; // [esp+50h] [ebp-4Ch] _DWORD *v64; // [esp+50h] [ebp-4Ch] char v65; // [esp+50h] [ebp-4Ch] unsigned __int8 *v67; // [esp+58h] [ebp-44h] int v68; // [esp+58h] [ebp-44h] char v69; // [esp+58h] [ebp-44h] int v71; // [esp+60h] [ebp-3Ch] unsigned __int8 v72; // [esp+60h] [ebp-3Ch] int v73; // [esp+68h] [ebp-34h] char v74; // [esp+7Ch] [ebp-20h] BYREF char v75; // [esp+7Dh] [ebp-1Fh] char v76; // [esp+7Eh] [ebp-1Eh] char v77; // [esp+7Fh] [ebp-1Dh] unsigned __int8 *v78; // [esp+BCh] [ebp+20h] v10 = a9; v12 = std::use_facet>(a6 + 108); *a7 = 0; if ( a9 == a10 ) return a2; v60 = a5 == -1; while ( 1 ) { v62 = a3 == -1; if ( v62 && a2 != 0 ) { if ( *(_DWORD *)(a2 + 8) >= *(_DWORD *)(a2 + 12) ) { v55 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); v19 = v55 == -1 && v62 && a2 != 0; a2 = v55 == -1 ? 0 : a2; } else { v19 = 0; } } else { v19 = a3 == -1; } if ( !v60 || a4 == 0 ) { v20 = a5 == -1; goto LABEL_21; } if ( a4[2] >= a4[3] ) { v69 = v19; v56 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v19 = v69; v20 = v56 == -1 && v60 && a4 != 0; a4 = v56 == -1 ? 0 : a4; LABEL_21: if ( v19 == v20 ) goto LABEL_77; goto LABEL_22; } if ( !v19 ) { LABEL_77: *a7 = 6; return a2; } LABEL_22: v21 = *v10; v22 = *((_BYTE *)v12 + v21 + 285); v23 = *v10; if ( !v22 ) { v24 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); if ( v24 != std::ctype::do_narrow ) { v68 = *v10; v23 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v24)(v12, (char)v21, 0); v21 = v68; } if ( !v23 ) goto LABEL_3; *((_BYTE *)v12 + v21 + 285) = v23; v22 = v23; } if ( v22 == 37 ) { v67 = v10 + 1; if ( a10 == v10 + 1 ) break; v71 = v10[1]; v25 = v10[1]; v63 = *((_BYTE *)v12 + v71 + 285); if ( !v63 ) { v26 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); if ( v26 != std::ctype::do_narrow ) v25 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v26)(v12, (char)v71, 0); if ( !v25 ) { v63 = 0; v27 = 0; v73 = 0; goto LABEL_37; } v63 = v25; *((_BYTE *)v12 + v71 + 285) = v25; } v25 = v63; if ( v63 == 69 || v63 == 79 ) { v67 = v10 + 2; if ( a10 == v10 + 2 ) break; v45 = v10[2]; v46 = *((_BYTE *)v12 + v45 + 285); v73 = v63; v25 = v45; if ( v46 ) { v27 = v46; v25 = *((_BYTE *)v12 + v45 + 285); } else { v27 = (char)v45; v47 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); if ( v47 != std::ctype::do_narrow ) { v57 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v47)(v12, (char)v45, 0); v27 = v57; v25 = v57; } if ( v25 ) *((_BYTE *)v12 + v45 + 285) = v25; } } else { v73 = 0; v27 = v63; v63 = 0; } LABEL_37: v72 = v25; v28 = *(__int64 (__thiscall **)(void *, int, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int))(*(_DWORD *)this + 32); if ( (char *)v28 == (char *)std::time_get>::do_get ) { v29 = std::use_facet>(a6 + 108); v30 = v72; v31 = v29; *a7 = 0; if ( v29[28] ) { v22 = v29[66]; } else { std::ctype::_M_widen_init((int)v29); v30 = v72; v48 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v31 + 24); if ( v48 != std::ctype::do_widen ) { v22 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v48)(v31, v72, 37); v30 = v72; } } v74 = v22; if ( v63 ) { v76 = v30; v77 = 0; v75 = v63; } else { v75 = v30; v76 = 0; } v32 = std::time_get>::_M_extract_via_format( (_DWORD *)a2, a3, a4, a5, a6, a7, a8, &v74); a2 = (int)v32; v34 = v33 == -1; a3 = v33; v35 = v34 & (v32 != 0); if ( v35 ) { v34 = 0; if ( v32[2] >= v32[3] ) { v65 = v35; v53 = (*(int (__fastcall **)(_DWORD *))(*v32 + 36))(v32); v34 = v53 != -1 ? 0 : v65; a2 = v53 == -1 ? 0 : a2; } } if ( a4 && a5 == -1 ) { v36 = 0; if ( a4[2] >= a4[3] ) v36 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4) == -1; } else { v36 = a5 == -1; } if ( v36 == v34 ) *a7 |= 2u; } else { v50 = v28(this, a2, a3, a4, a5, a6, a7, a8, v27, v73); a3 = HIDWORD(v50); a2 = v50; } v10 = v67 + 1; if ( a10 == v67 + 1 ) return a2; goto LABEL_16; } LABEL_3: v13 = v12[6]; if ( (*(_BYTE *)(v13 + 2 * *v10) & 0x20) != 0 ) { for ( i = v10 + 1; a10 != i; ++i ) { if ( (*(_BYTE *)(v13 + 2 * *i) & 0x20) == 0 ) break; } v78 = i; v64 = v12; for ( j = a3; ; j = -1 ) { v40 = j == -1; if ( v40 && a2 != 0 ) { if ( *(_DWORD *)(a2 + 8) >= *(_DWORD *)(a2 + 12) ) { v52 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); v41 = v52 == -1 && v40 && a2 != 0; a2 = v52 == -1 ? 0 : a2; } else { v41 = 0; } } else { v41 = j == -1; } if ( !v60 || a4 == 0 ) break; if ( a4[2] >= a4[3] ) { v51 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v42 = v51 == -1 && v60 && a4 != 0; a4 = v51 == -1 ? 0 : a4; LABEL_59: if ( v42 == v41 ) goto LABEL_72; goto LABEL_60; } if ( !v41 ) { LABEL_72: a3 = j; v10 = v78; v12 = v64; goto LABEL_15; } LABEL_60: if ( a2 && j == -1 ) { v44 = *(unsigned __int8 **)(a2 + 8); if ( (unsigned int)v44 < *(_DWORD *)(a2 + 12) ) { if ( (*(_BYTE *)(v64[6] + 2 * *v44) & 0x20) == 0 ) { v12 = v64; a3 = -1; v10 = v78; goto LABEL_15; } LABEL_65: *(_DWORD *)(a2 + 8) = v44 + 1; continue; } v43 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); a2 = v43 == -1 ? 0 : a2; } else { LOBYTE(v43) = j; } if ( (*(_BYTE *)(v64[6] + 2 * (unsigned __int8)v43) & 0x20) == 0 ) goto LABEL_72; v44 = *(unsigned __int8 **)(a2 + 8); if ( (unsigned int)v44 < *(_DWORD *)(a2 + 12) ) goto LABEL_65; (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); } v42 = a5 == -1; goto LABEL_59; } if ( a2 && a3 == -1 ) { v49 = *(char **)(a2 + 8); if ( (unsigned int)v49 >= *(_DWORD *)(a2 + 12) ) { v58 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); v14 = v58 != -1 ? v58 : -1; a2 = v58 == -1 ? 0 : a2; } else { v14 = *v49; } } else { v14 = a3; } v15 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v12 + 16))(v12, v14); if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v12 + 16))(v12, (char)*v10) != v15 ) { if ( a2 && a3 == -1 ) { v54 = *(char **)(a2 + 8); if ( (unsigned int)v54 >= *(_DWORD *)(a2 + 12) ) { v59 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); v16 = v59 != -1 ? v59 : -1; a2 = v59 == -1 ? 0 : a2; } else { v16 = *v54; } } else { v16 = a3; } v17 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v12 + 8))(v12, v16); if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v12 + 8))(v12, (char)*v10) != v17 ) break; } v18 = *(_DWORD *)(a2 + 8); if ( v18 >= *(_DWORD *)(a2 + 12) ) (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); else *(_DWORD *)(a2 + 8) = v18 + 1; a3 = -1; ++v10; LABEL_15: if ( a10 == v10 ) return a2; LABEL_16: if ( *a7 ) return a2; } *a7 = 4; return a2; } // 4517F0: variable 'v33' is possibly undefined //----- (00451D80) -------------------------------------------------------- int __thiscall std::time_get>::get( void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10) { _DWORD *(__stdcall *v10)(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // eax _BYTE *v11; // ecx char v12; // al _DWORD *v13; // esi int v14; // edx char v15; // dl char v16; // bp char v17; // al int (__stdcall *v19)(unsigned __int8); // edx int v20; // eax int v21; // eax char v22; // [esp+30h] [ebp-3Ch] _BYTE *v23; // [esp+3Ch] [ebp-30h] char v24; // [esp+4Ch] [ebp-20h] BYREF char v25; // [esp+4Dh] [ebp-1Fh] char v26; // [esp+4Eh] [ebp-1Eh] char v27; // [esp+4Fh] [ebp-1Dh] v10 = *(_DWORD *(__stdcall **)(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); if ( v10 != std::time_get>::do_get ) return ((int (__thiscall *)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, _DWORD, _DWORD))v10)( this, a2, a3, a4, a5, a6, a7, a8, a9, a10); v11 = std::use_facet>(a6 + 108); *a7 = 0; if ( v11[28] ) { v12 = v11[66]; } else { v23 = v11; std::ctype::_M_widen_init((int)v11); v19 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); v12 = 37; if ( v19 != std::ctype::do_widen ) v12 = v19(37u); } v24 = v12; if ( a10 ) { v25 = a10; v27 = 0; v26 = a9; } else { v26 = 0; v25 = a9; } v13 = std::time_get>::_M_extract_via_format(a2, a3, a4, a5, a6, a7, a8, &v24); v15 = v14 == -1; v16 = v15 & (v13 != 0); if ( v16 ) { v15 = 0; if ( v13[2] >= v13[3] ) { v21 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v13 + 36))(v13, 0); v15 = v21 != -1 ? 0 : v16; v13 = v21 == -1 ? 0 : v13; } } v17 = a5 == -1; if ( a4 ) { if ( a5 == -1 ) { v17 = 0; if ( a4[2] >= a4[3] ) { v22 = v15; v20 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v15 = v22; v17 = v20 == -1; } } } if ( v15 == v17 ) *a7 |= 2u; return (int)v13; } // 451E5A: variable 'v14' is possibly undefined //----- (00451FD0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9) { _BYTE *v9; // ebp char v10; // al _DWORD *v11; // esi int v12; // edx char v13; // dl char v14; // bp char v15; // al int v17; // eax int (__stdcall *v18)(unsigned __int8); // edx int v19; // eax char v20; // [esp+20h] [ebp-3Ch] char v21; // [esp+3Ch] [ebp-20h] BYREF char v22; // [esp+3Dh] [ebp-1Fh] char v23; // [esp+3Eh] [ebp-1Eh] char v24; // [esp+3Fh] [ebp-1Dh] v9 = std::use_facet>(a5 + 108); *a6 = 0; if ( v9[28] ) { v10 = v9[66]; } else { std::ctype::_M_widen_init((int)v9); v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v9 + 24); v10 = 37; if ( v18 != std::ctype::do_widen ) v10 = ((int (__thiscall *)(_BYTE *, int))v18)(v9, 37); } v21 = v10; if ( a9 ) { v24 = 0; v22 = a9; v23 = a8; } else { v23 = 0; v22 = a8; } v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, a7, &v21); v13 = v12 == -1; v14 = v13 & (v11 != 0); if ( v14 ) { v13 = 0; if ( v11[2] >= v11[3] ) { v19 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); v13 = v19 != -1 ? 0 : v14; v11 = v19 == -1 ? 0 : v11; } } v15 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v15 = 0; if ( a3[2] >= a3[3] ) { v20 = v13; v17 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v13 = v20; v15 = v17 == -1; } } } if ( v13 == v15 ) *a6 |= 2u; return v11; } // 45208D: variable 'v12' is possibly undefined //----- (00452190) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (004521A0) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (004521B0) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (004521C0) -------------------------------------------------------- int __fastcall std::time_get>::date_order(int a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); if ( v1 == std::time_get>::do_date_order ) return 0; else return v1(); } //----- (004521E0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_date( _DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7) { _DWORD *v7; // eax _DWORD *v8; // ecx __int16 v9; // dx _DWORD *v10; // ebp __int16 v11; // bx char v12; // cl __int16 *v14; // eax __int16 v15; // ax __int16 *v16; // eax __int16 v17; // ax char v18; // [esp+2Ch] [ebp-30h] _DWORD *v19; // [esp+30h] [ebp-2Ch] v7 = std::use_facet>(a5 + 108); v8 = std::time_get>::_M_extract_via_format( a1, a2, a3, a4, a5, a6, a7, *(wchar_t **)(v7[2] + 8)); v10 = v8; v11 = v9 == -1; v18 = v11 & (v8 != 0); if ( v18 ) { v16 = (__int16 *)v8[2]; if ( (unsigned int)v16 >= v8[3] ) { v19 = v8; v17 = (*(int (**)(void))(*v8 + 36))(); v8 = v19; } else { v17 = *v16; } LOBYTE(v11) = v17 != -1 ? 0 : v18; v10 = v17 == -1 ? 0 : v8; } v12 = (_WORD)a4 == 0xFFFF; if ( a3 && (_WORD)a4 == 0xFFFF ) { v14 = (__int16 *)a3[2]; if ( (unsigned int)v14 >= a3[3] ) v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v15 = *v14; v12 = v15 == -1; } if ( (_BYTE)v11 == v12 ) *a6 |= 2u; return v10; } // 452259: variable 'v9' is possibly undefined //----- (00452320) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_time( _DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7) { _DWORD *v7; // eax _DWORD *v8; // ecx __int16 v9; // dx _DWORD *v10; // ebp __int16 v11; // bx char v12; // cl __int16 *v14; // eax __int16 v15; // ax __int16 *v16; // eax __int16 v17; // ax char v18; // [esp+2Ch] [ebp-30h] _DWORD *v19; // [esp+30h] [ebp-2Ch] v7 = std::use_facet>(a5 + 108); v8 = std::time_get>::_M_extract_via_format( a1, a2, a3, a4, a5, a6, a7, *(wchar_t **)(v7[2] + 16)); v10 = v8; v11 = v9 == -1; v18 = v11 & (v8 != 0); if ( v18 ) { v16 = (__int16 *)v8[2]; if ( (unsigned int)v16 >= v8[3] ) { v19 = v8; v17 = (*(int (**)(void))(*v8 + 36))(); v8 = v19; } else { v17 = *v16; } LOBYTE(v11) = v17 != -1 ? 0 : v18; v10 = v17 == -1 ? 0 : v8; } v12 = (_WORD)a4 == 0xFFFF; if ( a3 && (_WORD)a4 == 0xFFFF ) { v14 = (__int16 *)a3[2]; if ( (unsigned int)v14 >= a3[3] ) v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v15 = *v14; v12 = v15 == -1; } if ( (_BYTE)v11 == v12 ) *a6 |= 2u; return v10; } // 452399: variable 'v9' is possibly undefined //----- (00452460) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_year( _DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7) { _DWORD *v7; // ecx __int16 v8; // dx __int16 v9; // ax _DWORD *v10; // ebp int v11; // edx char v12; // bl char v13; // cl __int16 *v15; // eax __int16 v16; // ax __int16 *v17; // eax __int16 v18; // ax char v19; // [esp+43h] [ebp-39h] _DWORD *v20; // [esp+44h] [ebp-38h] int v21; // [esp+58h] [ebp-24h] BYREF int v22[8]; // [esp+5Ch] [ebp-20h] BYREF v22[0] = 0; v7 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v21, 0, 9999, 4u, a5, v22); v9 = v8; v10 = v7; if ( v22[0] ) { *a6 |= 4u; } else { v11 = v21 - 1900; if ( v21 < 0 ) v11 = v21 + 100; *(_DWORD *)(a7 + 20) = v11; } v12 = v9 == -1; v19 = v12 & (v7 != 0); if ( v19 ) { v17 = (__int16 *)v7[2]; if ( (unsigned int)v17 >= v7[3] ) { v20 = v7; v18 = (*(int (**)(void))(*v7 + 36))(); v7 = v20; } else { v18 = *v17; } v12 = v18 != -1 ? 0 : v19; v10 = v18 == -1 ? 0 : v7; } v13 = a4 == -1; if ( a3 && a4 == -1 ) { v15 = (__int16 *)a3[2]; if ( (unsigned int)v15 >= a3[3] ) v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v16 = *v15; v13 = v16 == -1; } if ( v12 == v13 ) *a6 |= 2u; return v10; } // 4524DA: variable 'v8' is possibly undefined // 452460: using guessed type int var_20[8]; //----- (004525E0) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (004525F0) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (00452600) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (00452610) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_num( _DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10) { unsigned int v10; // ebp int v12; // edi unsigned int i; // esi unsigned __int8 v14; // dl unsigned __int16 v15; // ax char v16; // al unsigned int v17; // eax __int16 *v18; // eax __int16 v19; // ax __int16 *v20; // eax __int16 v21; // ax unsigned __int16 *v23; // eax char v24; // [esp+1Fh] [ebp-2Dh] bool v25; // [esp+1Fh] [ebp-2Dh] void *v27; // [esp+24h] [ebp-28h] char v29; // [esp+2Eh] [ebp-1Eh] unsigned __int8 v30; // [esp+2Fh] [ebp-1Dh] v10 = 10; v27 = std::use_facet>(a9 + 108); if ( a8 != 2 ) v10 = a8 == 4 ? 1000 : 1; v29 = a4 == -1; v12 = 0; for ( i = 0; ; ++i ) { v25 = a2 == -1 && a1 != 0; if ( v25 ) break; v24 = a2 == -1; v14 = v29 & (a3 != 0); if ( v14 ) goto LABEL_20; LABEL_5: if ( v24 == v29 ) goto LABEL_23; LABEL_6: if ( i >= a8 ) goto LABEL_23; if ( a1 && a2 == -1 ) { v23 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v23 >= a1[3] ) v15 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v15 = *v23; a1 = v15 == 0xFFFF ? 0 : a1; } else { v15 = a2; } v16 = (*(int (__thiscall **)(void *, _DWORD, int))(*(_DWORD *)v27 + 48))(v27, v15, 42); if ( (unsigned __int8)(v16 - 48) > 9u ) goto LABEL_24; v12 = v16 + 10 * v12 - 48; if ( (int)(v12 * v10) > a7 || (int)(v10 + v12 * v10) <= a6 ) goto LABEL_24; v17 = a1[2]; v10 /= 0xAu; if ( v17 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v17 + 2; a2 = -1; } v18 = (__int16 *)a1[2]; if ( (unsigned int)v18 >= a1[3] ) v19 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v19 = *v18; a1 = v19 == -1 ? 0 : a1; v24 = v19 == -1 && v25; v14 = v29 & (a3 != 0); if ( !v14 ) goto LABEL_5; LABEL_20: v20 = (__int16 *)a3[2]; if ( (unsigned int)v20 >= a3[3] ) { v30 = v14; v21 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v14 = v30; } else { v21 = *v20; } a3 = v21 == -1 ? 0 : a3; if ( v24 != ((unsigned __int8)((v21 != -1) - 1) & v14) ) goto LABEL_6; LABEL_23: if ( i == a8 ) { LABEL_27: *a5 = v12; return a1; } LABEL_24: if ( a8 == 4 && i == 2 ) { v12 -= 100; goto LABEL_27; } *a10 |= 4u; return a1; } //----- (004528A0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_weekday( _DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7) { _DWORD *v7; // eax int v8; // ecx int v9; // eax __int16 v10; // dx _DWORD *v11; // ecx _DWORD *v12; // ebp char v13; // bl char v14; // si char v15; // cl __int16 *v17; // eax __int16 v18; // ax __int16 *v19; // eax __int16 v20; // ax _DWORD *v21; // [esp+40h] [ebp-6Ch] int v22; // [esp+50h] [ebp-5Ch] BYREF int v23; // [esp+54h] [ebp-58h] BYREF int v24[21]; // [esp+58h] [ebp-54h] BYREF v23 = 0; v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); v24[0] = v7[18]; v24[1] = v7[19]; v24[2] = v7[20]; v24[3] = v7[21]; v24[4] = v7[22]; v24[5] = v7[23]; v24[6] = v7[24]; v24[7] = v7[11]; v24[8] = v7[12]; v24[9] = v7[13]; v24[10] = v7[14]; v24[11] = v7[15]; v8 = v7[16]; v9 = v7[17]; v24[12] = v8; v24[13] = v9; v11 = std::time_get>::_M_extract_wday_or_month( a1, a2, a3, a4, &v22, (int)v24, 7u, a5, &v23); v12 = v11; if ( v23 ) *a6 |= 4u; else *(_DWORD *)(a7 + 24) = v22; v13 = v10 == -1; v14 = v13 & (v11 != 0); if ( v14 ) { v19 = (__int16 *)v11[2]; if ( (unsigned int)v19 >= v11[3] ) { v21 = v11; v20 = (*(int (**)(void))(*v11 + 36))(); v11 = v21; } else { v20 = *v19; } v13 = v20 != -1 ? 0 : v14; v12 = v20 == -1 ? 0 : v11; } v15 = a4 == -1; if ( a3 && a4 == -1 ) { v17 = (__int16 *)a3[2]; if ( (unsigned int)v17 >= a3[3] ) v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v18 = *v17; v15 = v18 == -1; } if ( v15 == v13 ) *a6 |= 2u; return v12; } // 4529CD: variable 'v10' is possibly undefined //----- (00452AA0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_name( _DWORD *a1, int a2, _DWORD *a3, int *a4, _DWORD *a5, int a6, int a7, int a8, _DWORD *a9) { int v9; // eax void *v10; // esp void *v11; // esp char v12; // dl char v13; // dl char v14; // bl int v16; // edx int v17; // esi size_t v18; // ebx int v19; // edi __int16 v20; // ax int v21; // ecx int *v22; // edi size_t v23; // eax unsigned int v24; // ebx size_t v25; // eax unsigned int v26; // eax _WORD *v27; // eax __int16 v28; // dx char v29; // si char v30; // dl char v31; // dl unsigned int v32; // ecx size_t v33; // esi int i; // eax __int16 v35; // ax __int16 *v36; // eax unsigned int v37; // eax int *v38; // eax int *v39; // ebx const wchar_t *v40; // edi unsigned int v41; // ebx unsigned int v42; // esi unsigned int v43; // eax __int16 *v44; // eax __int16 v45; // ax unsigned __int8 v46; // di char v47; // dl char v48; // dl __int16 v49; // di __int16 *v50; // eax __int16 v51; // ax __int16 *v52; // eax __int16 v53; // cx int v54; // eax __int16 *v55; // eax __int16 v56; // ax __int16 *v57; // eax __int16 v58; // ax __int16 v59; // ax _WORD *v60; // eax int v61; // eax int v62; // eax __int16 *v63; // eax __int16 v64; // cx __int16 v65; // ax int v66; // [esp+10h] [ebp-38h] BYREF _DWORD *v67; // [esp+14h] [ebp-34h] bool v68; // [esp+1Bh] [ebp-2Dh] int v69; // [esp+1Ch] [ebp-2Ch] _DWORD *v70; // [esp+20h] [ebp-28h] int *v71; // [esp+24h] [ebp-24h] size_t v72; // [esp+28h] [ebp-20h] unsigned int v73; // [esp+2Ch] [ebp-1Ch] v71 = a4; v66 = a2; LOWORD(v72) = a2; v70 = a1; v67 = a3; v69 = (int)std::use_facet>(a8 + 108); v9 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); v10 = alloca(v9); v11 = alloca(v9); LOBYTE(v73) = (_WORD)a2 == 0xFFFF; v12 = v73 & (a1 != 0); if ( v12 ) { v57 = (__int16 *)a1[2]; if ( (unsigned int)v57 >= a1[3] ) { v61 = *a1; LOBYTE(v70) = v73 & (a1 != 0); v58 = (*(int (__fastcall **)(_DWORD *))(v61 + 36))(a1); v12 = (char)v70; } else { v58 = *v57; } v70 = v58 == -1 ? 0 : a1; v13 = v58 != -1 ? 0 : v12; } else { v13 = v73; } v68 = (_WORD)v71 == 0xFFFF; if ( v68 && a3 != 0 ) { v55 = (__int16 *)a3[2]; if ( (unsigned int)v55 >= a3[3] ) { v62 = *a3; LOBYTE(v71) = v13; v56 = (*(int (__fastcall **)(_DWORD *))(v62 + 36))(a3); v13 = (char)v71; } else { v56 = *v55; } v67 = v56 == -1 ? 0 : a3; v14 = v56 == -1 && v68 && a3 != 0; } else { v14 = v68; } if ( v14 == v13 ) goto LABEL_6; if ( v70 && (_BYTE)v73 ) { v60 = (_WORD *)v70[2]; LOWORD(v73) = (unsigned int)v60 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v60; v70 = (_WORD)v73 == 0xFFFF ? 0 : v70; } else { LOWORD(v73) = v72; } if ( !a7 ) goto LABEL_6; v71 = &v66; v16 = a6; v17 = 0; v18 = 0; v19 = v69; do { while ( 1 ) { v21 = **(unsigned __int16 **)(v16 + 4 * v17); if ( (_WORD)v21 == (_WORD)v73 ) break; a6 = v16; v20 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v19 + 24))(v19, v21); v16 = a6; if ( v20 == (_WORD)v73 ) break; if ( a7 == ++v17 ) goto LABEL_17; } v71[v18++] = v17++; } while ( a7 != v17 ); LABEL_17: v22 = v71; v71 = 0; if ( v18 <= 1 ) goto LABEL_41; do { v69 = *v22; v23 = wcslen(*(const wchar_t **)(a6 + 4 * v69)); v72 = v18; v24 = 1; v73 = v23; do { v25 = wcslen(*(const wchar_t **)(a6 + 4 * v22[v24])); if ( v73 > v25 ) v73 = v25; ++v24; } while ( v24 < v72 ); v18 = v72; v26 = v70[2]; if ( v26 >= v70[3] ) (*(void (__fastcall **)(_DWORD *))(*v70 + 40))(v70); else v70[2] = v26 + 2; v71 = (int *)((char *)v71 + 1); if ( (unsigned int)v71 >= v73 ) goto LABEL_59; v27 = (_WORD *)v70[2]; v28 = (unsigned int)v27 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v27; v70 = v28 == -1 ? 0 : v70; v29 = v28 == -1; v30 = v68 && v67 != 0; if ( v30 ) { v52 = (__int16 *)v67[2]; if ( (unsigned int)v52 >= v67[3] ) { LOBYTE(v73) = v68 && v67 != 0; v59 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); v30 = v73; v53 = v59; } else { v53 = *v52; } v67 = v53 == -1 ? 0 : v67; v31 = v53 != -1 ? 0 : v30; } else { v31 = v68; } if ( v29 == v31 ) goto LABEL_59; v32 = (unsigned int)v70; v33 = 0; v72 = 2 * (_DWORD)v71; for ( i = v69; ; i = v22[v33] ) { v16 = v72; LOWORD(v73) = *(_WORD *)(*(_DWORD *)(a6 + 4 * i) + v72); v35 = -1; if ( v32 ) { v36 = *(__int16 **)(v32 + 8); if ( (unsigned int)v36 >= *(_DWORD *)(v32 + 12) ) { v54 = *(_DWORD *)v32; v70 = (_DWORD *)v32; v35 = (*(int (**)(void))(v54 + 36))(); v32 = (unsigned int)v70; } else { v35 = *v36; } v16 = (v35 == -1) - 1; v32 &= v16; } if ( (_WORD)v73 == v35 ) break; v22[v33] = v22[--v18]; if ( v18 <= v33 ) goto LABEL_39; LABEL_32: ; } if ( v18 > ++v33 ) goto LABEL_32; LABEL_39: v70 = (_DWORD *)v32; } while ( v18 > 1 ); LOWORD(v72) = -1; LABEL_41: if ( v18 == 1 ) { v37 = v70[2]; if ( v37 >= v70[3] ) (*(void (__fastcall **)(_DWORD *, int))(*v70 + 40))(v70, v16); else v70[2] = v37 + 2; v38 = (int *)*v22; v39 = v71; v40 = *(const wchar_t **)(a6 + 4 * *v22); v71 = v38; v41 = (unsigned int)v39 + 1; v72 = wcslen(v40); if ( v41 < v72 ) { v73 = (unsigned int)v40; v42 = (unsigned int)v70; do { while ( 1 ) { v44 = *(__int16 **)(v42 + 8); if ( (unsigned int)v44 >= *(_DWORD *)(v42 + 12) ) v45 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); else v45 = *v44; v46 = v45 == -1; v42 &= v46 - 1; v47 = v68 && v67 != 0; if ( v47 ) { v63 = (__int16 *)v67[2]; if ( (unsigned int)v63 >= v67[3] ) { LOBYTE(v70) = v68 && v67 != 0; v65 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); v47 = (char)v70; v64 = v65; } else { v64 = *v63; } v67 = v64 == -1 ? 0 : v67; v48 = v64 != -1 ? 0 : v47; } else { v48 = v68; } if ( v48 == v46 ) { LABEL_58: v70 = (_DWORD *)v42; goto LABEL_59; } v49 = *(_WORD *)(v73 + 2 * v41); if ( v42 ) { v50 = *(__int16 **)(v42 + 8); if ( (unsigned int)v50 >= *(_DWORD *)(v42 + 12) ) v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); else v51 = *v50; v42 &= (v51 == -1) - 1; if ( v49 != v51 ) goto LABEL_58; } else if ( v49 != -1 ) { goto LABEL_58; } v43 = *(_DWORD *)(v42 + 8); if ( v43 >= *(_DWORD *)(v42 + 12) ) break; ++v41; *(_DWORD *)(v42 + 8) = v43 + 2; if ( v41 >= v72 ) goto LABEL_83; } ++v41; (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 40))(v42); } while ( v41 < v72 ); LABEL_83: v70 = (_DWORD *)v42; } if ( v72 == v41 ) { LOWORD(v72) = -1; *a5 = v71; goto LABEL_7; } LABEL_59: LOWORD(v72) = -1; } LABEL_6: *a9 |= 4u; LABEL_7: LOWORD(v66) = v72; return v70; } //----- (00452FE0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_monthname( _DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7) { _DWORD *v7; // eax int v8; // ecx int v9; // ecx __int16 v10; // dx _DWORD *v11; // ecx _DWORD *v12; // ebp char v13; // bl char v14; // si char v15; // cl __int16 *v17; // eax __int16 v18; // ax __int16 *v19; // eax __int16 v20; // ax _DWORD *v21; // [esp+40h] [ebp-9Ch] int v22; // [esp+58h] [ebp-84h] BYREF int v23; // [esp+5Ch] [ebp-80h] BYREF int v24[31]; // [esp+60h] [ebp-7Ch] BYREF v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); v24[0] = v7[37]; v24[1] = v7[38]; v24[2] = v7[39]; v24[3] = v7[40]; v24[4] = v7[41]; v24[5] = v7[42]; v24[6] = v7[43]; v24[7] = v7[44]; v24[8] = v7[45]; v24[9] = v7[46]; v24[10] = v7[47]; v24[11] = v7[48]; v24[12] = v7[25]; v24[13] = v7[26]; v24[14] = v7[27]; v24[15] = v7[28]; v8 = v7[29]; v23 = 0; v24[16] = v8; v24[17] = v7[30]; v24[18] = v7[31]; v24[19] = v7[32]; v24[20] = v7[33]; v24[21] = v7[34]; v9 = v7[35]; v24[23] = v7[36]; v24[22] = v9; v11 = std::time_get>::_M_extract_wday_or_month( a1, a2, a3, a4, &v22, (int)v24, 0xCu, a5, &v23); v12 = v11; if ( v23 ) *a6 |= 4u; else *(_DWORD *)(a7 + 16) = v22; v13 = v10 == -1; v14 = v13 & (v11 != 0); if ( v14 ) { v19 = (__int16 *)v11[2]; if ( (unsigned int)v19 >= v11[3] ) { v21 = v11; v20 = (*(int (**)(void))(*v11 + 36))(); v11 = v21; } else { v20 = *v19; } v13 = v20 != -1 ? 0 : v14; v12 = v20 == -1 ? 0 : v11; } v15 = a4 == -1; if ( a3 && a4 == -1 ) { v17 = (__int16 *)a3[2]; if ( (unsigned int)v17 >= a3[3] ) v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v18 = *v17; v15 = v18 == -1; } if ( v13 == v15 ) *a6 |= 2u; return v12; } // 4531AA: variable 'v10' is possibly undefined //----- (00453280) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_via_format( _DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7, wchar_t *String) { void *v9; // esi size_t v10; // edi bool v11; // dl char v12; // dl char v13; // bl int v14; // eax size_t v15; // ebx char v16; // al unsigned __int8 v17; // al wchar_t v18; // bx unsigned __int16 v19; // ax __int16 *v20; // eax __int16 v21; // ax char v22; // bl __int16 *v24; // eax __int16 v25; // ax unsigned int v26; // eax unsigned __int16 *v27; // eax unsigned __int16 v28; // dx int v29; // edx _DWORD *v30; // eax _DWORD *v31; // eax unsigned __int16 v32; // dx _DWORD *v33; // eax _DWORD *v34; // eax unsigned __int16 v35; // dx unsigned __int16 v36; // dx unsigned __int16 v37; // dx unsigned __int16 v38; // dx unsigned __int16 v39; // dx unsigned __int16 v40; // dx int v41; // edx _DWORD *v42; // eax __int16 v43; // dx unsigned __int16 v44; // di char v45; // dl char v46; // bl char v47; // bl unsigned __int16 v48; // bx unsigned __int16 v49; // bx _DWORD *v50; // eax __int16 v51; // dx unsigned __int16 v52; // dx _DWORD *v53; // eax unsigned __int16 v54; // dx _DWORD *v55; // eax _DWORD *v56; // eax unsigned __int16 v57; // dx int v58; // edx unsigned int v59; // eax unsigned __int16 v60; // dx unsigned __int16 v61; // dx int v62; // edx unsigned int v63; // eax unsigned __int16 v64; // dx int v65; // edx unsigned __int16 v66; // dx unsigned __int16 v67; // dx unsigned __int16 *v68; // eax unsigned __int16 *v69; // eax unsigned __int16 *v70; // eax unsigned __int16 *v71; // eax unsigned __int16 *v72; // eax unsigned __int16 v73; // dx __int16 *v74; // eax __int16 v75; // ax _WORD *v76; // edx __int16 v77; // ax unsigned __int16 *v78; // eax bool v79; // [esp+5Fh] [ebp-12Dh] bool v80; // [esp+5Fh] [ebp-12Dh] size_t v82; // [esp+64h] [ebp-128h] char v83; // [esp+64h] [ebp-128h] int v84; // [esp+68h] [ebp-124h] size_t v85; // [esp+6Ch] [ebp-120h] bool v86; // [esp+70h] [ebp-11Ch] _DWORD *v87; // [esp+7Ch] [ebp-110h] __int16 v88; // [esp+80h] [ebp-10Ch] unsigned __int16 v89; // [esp+84h] [ebp-108h] char v90; // [esp+86h] [ebp-106h] char v91; // [esp+87h] [ebp-105h] int v92; // [esp+138h] [ebp-54h] BYREF int v93; // [esp+13Ch] [ebp-50h] BYREF wchar_t v94[2]; // [esp+140h] [ebp-4Ch] BYREF int v95; // [esp+144h] [ebp-48h] int v96; // [esp+148h] [ebp-44h] int v97; // [esp+14Ch] [ebp-40h] int v98; // [esp+150h] [ebp-3Ch] int v99; // [esp+154h] [ebp-38h] int v100; // [esp+158h] [ebp-34h] int v101; // [esp+15Ch] [ebp-30h] int v102; // [esp+160h] [ebp-2Ch] int v103; // [esp+164h] [ebp-28h] int v104; // [esp+168h] [ebp-24h] int v105; // [esp+16Ch] [ebp-20h] HIWORD(v84) = HIWORD(a2); v89 = a2; v87 = std::use_facet>(a5 + 108); v9 = std::use_facet>(a5 + 108); v92 = 0; v85 = wcslen(String); v90 = (_WORD)a4 == 0xFFFF; v10 = 0; while ( 1 ) { v79 = v89 == 0xFFFF; v11 = v79 && a1 != 0; if ( v11 ) { v24 = (__int16 *)a1[2]; if ( (unsigned int)v24 >= a1[3] ) { v25 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v11 = v79 && a1 != 0; } else { v25 = *v24; } a1 = v25 == -1 ? 0 : a1; v12 = v25 == -1 && v11; } else { v12 = v89 == 0xFFFF; } v13 = v90 & (a3 != 0); if ( !v13 ) { v14 = v92; if ( v12 == v90 ) break; goto LABEL_6; } v20 = (__int16 *)a3[2]; if ( (unsigned int)v20 >= a3[3] ) { v83 = v12; v21 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v12 = v83; } else { v21 = *v20; } a3 = v21 == -1 ? 0 : a3; v22 = v21 != -1 ? 0 : v13; v14 = v92; if ( v12 == v22 ) break; LABEL_6: if ( v10 >= v85 ) break; if ( v14 ) goto LABEL_23; v15 = v10; v82 = v10 + 1; if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v10], 0) == 37 ) { v16 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v15 + 1], 0); v93 = 0; if ( v16 == 69 || v16 == 79 ) { v82 = v10 + 2; v17 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v15 + 2], 0) - 65; if ( v17 > 0x38u ) { LABEL_29: v92 |= 4u; goto LABEL_30; } } else { v17 = v16 - 65; } switch ( v17 ) { case 0u: v55 = (_DWORD *)v87[2]; *(_DWORD *)v94 = v55[11]; v95 = v55[12]; v96 = v55[13]; v97 = v55[14]; v98 = v55[15]; v99 = v55[16]; v100 = v55[17]; LOWORD(v84) = v89; v34 = std::time_get>::_M_extract_name( a1, v84, a3, a4, &v93, (int)v94, 7, a5, &v92); goto LABEL_45; case 1u: v56 = (_DWORD *)v87[2]; *(_DWORD *)v94 = v56[25]; v95 = v56[26]; v96 = v56[27]; v97 = v56[28]; v98 = v56[29]; v99 = v56[30]; v100 = v56[31]; v101 = v56[32]; v102 = v56[33]; v103 = v56[34]; v104 = v56[35]; v105 = v56[36]; LOWORD(v84) = v89; v31 = std::time_get>::_M_extract_name( a1, v84, a3, a4, &v93, (int)v94, 12, a5, &v92); goto LABEL_42; case 2u: case 0x18u: case 0x38u: a1 = std::time_get>::_M_extract_num( a1, v89, a3, (__int16)a4, &v93, 0, 9999, 4u, a5, &v92); v89 = v28; if ( !v92 ) { v29 = v93 - 1900; if ( v93 < 0 ) v29 = v93 + 100; a7[5] = v29; } break; case 3u: (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( v9, "%m/%d/%y", "%H:%M", v94); LOWORD(v84) = v89; a1 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, v84, (int)a3, (int)a4, a5, (int)&v92, (int)a7, v94); v89 = v57; break; case 7u: v53 = std::time_get>::_M_extract_num( a1, v89, a3, (__int16)a4, &v93, 0, 23, 2u, a5, &v92); goto LABEL_71; case 8u: v53 = std::time_get>::_M_extract_num( a1, v89, a3, (__int16)a4, &v93, 1, 12, 2u, a5, &v92); LABEL_71: a1 = v53; v89 = v54; if ( !v92 ) a7[2] = v93; break; case 0xCu: a1 = std::time_get>::_M_extract_num( a1, v89, a3, (__int16)a4, &v93, 0, 59, 2u, a5, &v92); v89 = v66; if ( !v92 ) a7[1] = v93; break; case 0x11u: (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( v9, "%H:%M", "%H:%M:%S", v94); LOWORD(v84) = v89; a1 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, v84, (int)a3, (int)a4, a5, (int)&v92, (int)a7, v94); v89 = v67; break; case 0x12u: a1 = std::time_get>::_M_extract_num( a1, v89, a3, (__int16)a4, &v93, 0, 61, 2u, a5, &v92); v89 = v38; if ( !v92 ) *a7 = v93; break; case 0x13u: (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v9 + 44))( v9, "%H:%M:%S", &unk_4ED02A, v94); LOWORD(v84) = v89; a1 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, v84, (int)a3, (int)a4, a5, (int)&v92, (int)a7, v94); v89 = v39; break; case 0x17u: LOWORD(v84) = v89; a1 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, v84, (int)a3, (int)a4, a5, (int)&v92, (int)a7, *(wchar_t **)(v87[2] + 16)); v89 = v40; break; case 0x19u: if ( a1 && v89 == 0xFFFF ) { v71 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v71 >= a1[3] ) v41 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v41 = *v71; a1 = (_WORD)v41 == 0xFFFF ? 0 : a1; } else { v41 = v89; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v9 + 8))(v9, 1, v41) ) goto LABEL_29; LOWORD(v84) = v89; v42 = std::time_get>::_M_extract_name( a1, v84, a3, a4, v94, (int)std::__timepunct_cache::_S_timezones, 14, a5, &v92); v44 = v43; a1 = v42; v80 = v43 == -1; v88 = v43; v45 = v80; v89 = v44; v86 = v80 && v42 != 0; if ( v86 ) { v76 = (_WORD *)v42[2]; v77 = (unsigned int)v76 >= v42[3] ? (*(int (__fastcall **)(_DWORD *))(*v42 + 36))(v42) : *v76; v45 = 0; if ( v77 == -1 ) { v45 = v86; a1 = 0; v86 = 0; } } v46 = v90 & (a3 != 0); if ( v46 ) { v74 = (__int16 *)a3[2]; if ( (unsigned int)v74 >= a3[3] ) { v91 = v45; v75 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v45 = v91; } else { v75 = *v74; } a3 = v75 == -1 ? 0 : a3; v47 = v75 != -1 ? 0 : v46; } else { v47 = (_WORD)a4 == 0xFFFF; } if ( v45 != v47 && !(*(_DWORD *)v94 | v92) ) { v48 = v44; if ( v86 ) { v78 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v78 >= a1[3] ) v48 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v48 = *v78; a1 = v48 == 0xFFFF ? 0 : a1; } if ( (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 45) == v48 || (a1 && v80 ? ((v72 = (unsigned __int16 *)a1[2], (unsigned int)v72 >= a1[3]) ? (v49 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1)) : (v49 = *v72), a1 = v49 == 0xFFFF ? 0 : a1) : (_DWORD *)(v49 = v44), (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 43) == v49) ) { v50 = std::time_get>::_M_extract_num( a1, v88, a3, (__int16)a4, (int *)v94, 0, 23, 2u, a5, &v92); a1 = std::time_get>::_M_extract_num( v50, v51, a3, (__int16)a4, (int *)v94, 0, 59, 2u, a5, &v92); v89 = v52; } } break; case 0x20u: v33 = (_DWORD *)v87[2]; *(_DWORD *)v94 = v33[18]; v95 = v33[19]; v96 = v33[20]; v97 = v33[21]; v98 = v33[22]; v99 = v33[23]; v100 = v33[24]; LOWORD(v84) = v89; v34 = std::time_get>::_M_extract_name( a1, v84, a3, a4, &v93, (int)v94, 7, a5, &v92); LABEL_45: a1 = v34; v89 = v35; if ( !v92 ) a7[6] = v93; break; case 0x21u: case 0x27u: v30 = (_DWORD *)v87[2]; *(_DWORD *)v94 = v30[37]; v95 = v30[38]; v96 = v30[39]; v97 = v30[40]; v98 = v30[41]; v99 = v30[42]; v100 = v30[43]; v101 = v30[44]; v102 = v30[45]; v103 = v30[46]; v104 = v30[47]; v105 = v30[48]; LOWORD(v84) = v89; v31 = std::time_get>::_M_extract_name( a1, v84, a3, a4, &v93, (int)v94, 12, a5, &v92); LABEL_42: a1 = v31; v89 = v32; if ( !v92 ) a7[4] = v93; break; case 0x22u: LOWORD(v84) = v89; a1 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, v84, (int)a3, (int)a4, a5, (int)&v92, (int)a7, *(wchar_t **)(v87[2] + 24)); v89 = v36; break; case 0x23u: a1 = std::time_get>::_M_extract_num( a1, v89, a3, (__int16)a4, &v93, 1, 31, 2u, a5, &v92); v89 = v37; if ( !v92 ) goto LABEL_49; break; case 0x24u: if ( a1 && v89 == 0xFFFF ) { v70 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v70 >= a1[3] ) v58 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v58 = *v70; a1 = (_WORD)v58 == 0xFFFF ? 0 : a1; } else { v58 = v89; } if ( (*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v9 + 8))(v9, 32, v58) ) { v59 = a1[2]; if ( v59 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v59 + 2; a1 = std::time_get>::_M_extract_num( a1, 0xFFFF, a3, (__int16)a4, &v93, 1, 9, 1u, a5, &v92); v89 = v60; } else { a1 = std::time_get>::_M_extract_num( a1, v89, a3, (__int16)a4, &v93, 10, 31, 2u, a5, &v92); v89 = v73; } if ( !v92 ) LABEL_49: a7[3] = v93; break; case 0x2Cu: a1 = std::time_get>::_M_extract_num( a1, v89, a3, (__int16)a4, &v93, 1, 12, 2u, a5, &v92); v89 = v61; if ( !v92 ) a7[4] = v93 - 1; break; case 0x2Du: if ( a1 && v89 == 0xFFFF ) { v68 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v68 >= a1[3] ) v65 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v65 = *v68; a1 = (_WORD)v65 == 0xFFFF ? 0 : a1; } else { v65 = v89; } if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 48))(v9, v65, 0) != 10 ) goto LABEL_29; goto LABEL_91; case 0x33u: if ( a1 && v89 == 0xFFFF ) { v69 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v69 >= a1[3] ) v62 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v62 = *v69; a1 = (_WORD)v62 == 0xFFFF ? 0 : a1; } else { v62 = v89; } if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 48))(v9, v62, 0) != 9 ) goto LABEL_29; LABEL_91: v63 = a1[2]; if ( v63 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v63 + 2; v89 = -1; break; case 0x37u: LOWORD(v84) = v89; a1 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, v84, (int)a3, (int)a4, a5, (int)&v92, (int)a7, *(wchar_t **)(v87[2] + 8)); v89 = v64; break; default: goto LABEL_29; } LABEL_30: v10 = v82 + 1; } else { v18 = String[v10]; if ( a1 && v89 == 0xFFFF ) { v27 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v27 >= a1[3] ) v19 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v19 = *v27; a1 = v19 == 0xFFFF ? 0 : a1; } else { v19 = v89; } if ( v18 == v19 ) { v26 = a1[2]; if ( v26 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v26 + 2; ++v10; v89 = -1; } else { v92 |= 4u; ++v10; } } } if ( v14 || v10 != v85 ) LABEL_23: *a6 |= 4u; return a1; } // 4535F0: variable 'v28' is possibly undefined // 453744: variable 'v32' is possibly undefined // 453835: variable 'v35' is possibly undefined // 4538CD: variable 'v36' is possibly undefined // 45394F: variable 'v37' is possibly undefined // 453A06: variable 'v38' is possibly undefined // 453AB7: variable 'v39' is possibly undefined // 453B36: variable 'v40' is possibly undefined // 453BD8: variable 'v43' is possibly undefined // 453D4E: variable 'v51' is possibly undefined // 453D65: variable 'v52' is possibly undefined // 453DF6: variable 'v54' is possibly undefined // 454073: variable 'v57' is possibly undefined // 45413C: variable 'v60' is possibly undefined // 4541DB: variable 'v61' is possibly undefined // 4542C8: variable 'v64' is possibly undefined // 45438E: variable 'v66' is possibly undefined // 4544BD: variable 'v67' is possibly undefined // 45465C: variable 'v73' is possibly undefined // 4E9520: using guessed type wchar_t *std::__timepunct_cache::_S_timezones[11]; //----- (00454780) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( _DWORD *a1, int a2, _DWORD *a3, __int16 a4, _DWORD *a5, int a6, unsigned int a7, int a8, _DWORD *a9) { void *v9; // edi int v10; // eax void *v11; // esp void *v12; // esp char v13; // dl char v14; // bl char v15; // bl int *v16; // edi unsigned int v17; // esi char v18; // dl char v19; // dl unsigned __int8 v20; // bl unsigned int v21; // edx unsigned int *v22; // ecx int v23; // ebx unsigned int v24; // eax __int16 *v25; // eax __int16 v26; // cx __int16 *v28; // eax __int16 v29; // cx __int16 *v30; // eax int v31; // eax int v32; // edx int v33; // ebx __int16 v34; // ax int v35; // ecx unsigned int v36; // eax int v37; // eax void *v38; // esp void *v39; // esp int v40; // esi int v41; // ebx __int16 *v42; // eax __int16 v43; // cx _WORD *v44; // eax __int16 v45; // ax __int16 v46; // ax __int16 v47; // ax _WORD *v48; // eax int v49; // eax __int16 v50; // ax int v51; // [esp+10h] [ebp-48h] BYREF int v52; // [esp+14h] [ebp-44h] _DWORD *v53; // [esp+18h] [ebp-40h] char v54; // [esp+1Fh] [ebp-39h] _DWORD *v55; // [esp+20h] [ebp-38h] unsigned int v56; // [esp+24h] [ebp-34h] __int16 v57; // [esp+28h] [ebp-30h] __int16 v58; // [esp+2Ah] [ebp-2Eh] int v59; // [esp+2Ch] [ebp-2Ch] int *v60; // [esp+30h] [ebp-28h] int *v61; // [esp+34h] [ebp-24h] unsigned int v62; // [esp+38h] [ebp-20h] unsigned int v63; // [esp+3Ch] [ebp-1Ch] v52 = a2; v57 = a2; v55 = a1; v53 = a3; v9 = std::use_facet>(a8 + 108); v10 = 16 * ((8 * a7 + 27) >> 4); v11 = alloca(v10); v12 = alloca(v10); v61 = &v51; v13 = (_WORD)a2 == 0xFFFF; LOBYTE(v62) = v13 & (a1 != 0); if ( (_BYTE)v62 ) { v44 = (_WORD *)v55[2]; v45 = (unsigned int)v44 >= v55[3] ? (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55) : *v44; v13 = 0; if ( v45 == -1 ) { v13 = v62; v55 = 0; LOBYTE(v62) = 0; } } v54 = a4 == -1; v14 = v54 & (a3 != 0); if ( v14 ) { v42 = (__int16 *)a3[2]; if ( (unsigned int)v42 >= a3[3] ) { v49 = *a3; LOBYTE(v63) = v13; v50 = (*(int (__fastcall **)(_DWORD *))(v49 + 36))(a3); v13 = v63; v43 = v50; } else { v43 = *v42; } v53 = v43 == -1 ? 0 : a3; v15 = v43 != -1 ? 0 : v14; } else { v15 = v54; } if ( v15 == v13 ) { v62 = 0; v16 = 0; v17 = 0; goto LABEL_6; } LOWORD(v63) = v57; if ( (_BYTE)v62 ) { v48 = (_WORD *)v55[2]; if ( (unsigned int)v48 >= v55[3] ) LOWORD(v63) = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); else LOWORD(v63) = *v48; v55 = (_WORD)v63 == 0xFFFF ? 0 : v55; } v62 = 2 * a7; if ( 2 * a7 ) { v32 = a6; v33 = 0; v17 = 0; while ( 1 ) { v35 = **(unsigned __int16 **)(v32 + 4 * v33); if ( (_WORD)v35 == (_WORD)v63 || (a6 = v32, v34 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v35), v32 = a6, v34 == (_WORD)v63) ) { v61[v17++] = v33; if ( ++v33 == v62 ) { LABEL_52: if ( v17 ) { v36 = v55[2]; if ( v36 >= v55[3] ) (*(void (__fastcall **)(_DWORD *, int))(*v55 + 40))(v55, v32); else v55[2] = v36 + 2; v37 = 16 * ((4 * v17 + 27) >> 4); v38 = alloca(v37); v39 = alloca(v37); v63 = v17; v62 = (unsigned int)&v51; v60 = &v51; v40 = 0; v41 = (int)v61; do { *(_DWORD *)(v62 + 4 * v40) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v41 + 4 * v40))); ++v40; } while ( v63 != v40 ); v17 = v63; v16 = v60; v62 = 1; v57 = -1; } else { v62 = 0; v16 = 0; } goto LABEL_6; } } else if ( ++v33 == v62 ) { goto LABEL_52; } } } v17 = 0; v16 = 0; LABEL_6: while ( 2 ) { LOBYTE(v63) = v57 == -1; v18 = v63 & (v55 != 0); if ( v18 ) { v28 = (__int16 *)v55[2]; if ( (unsigned int)v28 >= v55[3] ) { LOBYTE(v60) = v63 & (v55 != 0); v46 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); v18 = (char)v60; v29 = v46; } else { v29 = *v28; } v55 = v29 == -1 ? 0 : v55; v19 = v29 != -1 ? 0 : v18; } else { v19 = v63; } v20 = v54 & (v53 != 0); if ( v20 ) { v25 = (__int16 *)v53[2]; if ( (unsigned int)v25 >= v53[3] ) { LOBYTE(v60) = v19; v47 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); v19 = (char)v60; v26 = v47; } else { v26 = *v25; } v53 = v26 == -1 ? 0 : v53; if ( ((unsigned __int8)((v26 != -1) - 1) & v20) == v19 ) break; } else if ( v54 == v19 ) { break; } if ( v55 && (_BYTE)v63 ) { v30 = (__int16 *)v55[2]; if ( (unsigned int)v30 >= v55[3] ) v58 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); else v58 = *v30; v55 = v58 == -1 ? 0 : v55; } else { v58 = v57; } if ( !v17 ) { LABEL_30: *a9 |= 4u; goto LABEL_31; } v63 = (unsigned int)v16; v21 = 0; v59 = 0; v56 = 2 * v62; do { while ( 1 ) { v22 = (unsigned int *)(v63 + 4 * v21); if ( *v22 > v62 ) break; ++v59; ++v21; LABEL_16: if ( v21 >= v17 ) goto LABEL_20; } v23 = v61[v21]; v60 = &v61[v21]; if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v23) + v56) == v58 ) { ++v21; goto LABEL_16; } *v60 = v61[--v17]; *v22 = *(_DWORD *)(v63 + 4 * v17); } while ( v21 < v17 ); LABEL_20: v16 = (int *)v63; if ( v59 != v17 ) { v24 = v55[2]; if ( v24 >= v55[3] ) (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); else v55[2] = v24 + 2; ++v62; v57 = -1; continue; } break; } if ( v17 != 1 ) { if ( v17 == 2 && (*v16 == v62 || v16[1] == v62) ) goto LABEL_42; goto LABEL_30; } if ( *v16 != v62 ) goto LABEL_30; LABEL_42: v31 = *v61; if ( *v61 >= a7 ) v31 -= a7; *a5 = v31; LABEL_31: LOWORD(v52) = v57; return v55; } //----- (00454C60) -------------------------------------------------------- int __thiscall std::time_get>::get( void *this, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10) { void *v11; // ebp unsigned __int16 *v12; // edi int v13; // edx __int16 v14; // si int v15; // edx __int16 v16; // si unsigned int v17; // eax bool v18; // dl char v19; // dl unsigned __int8 v20; // si char v21; // si int v22; // eax int (__thiscall *v23)(void *, int, int, _DWORD *, int *, int, _DWORD *, _DWORD *, _DWORD, int); // edx int *v24; // eax int v25; // edx _DWORD *v26; // esi unsigned __int16 v27; // dx char v28; // dl char v29; // di char v30; // al unsigned __int16 *i; // edi char v33; // dl unsigned __int8 v34; // si unsigned __int16 v35; // ax unsigned int v36; // eax bool v37; // di bool v38; // dl __int16 *v39; // eax __int16 v40; // ax __int16 *v41; // eax __int16 v42; // ax _WORD *v43; // eax __int16 *v44; // eax __int16 v45; // ax __int16 *v46; // eax __int16 v47; // ax char v48; // dl unsigned __int16 *v49; // eax unsigned __int16 v50; // dx __int16 *v51; // eax __int16 v52; // ax __int16 *v53; // eax __int16 v54; // ax _WORD *v55; // eax unsigned __int16 v56; // [esp+66h] [ebp-52h] bool v58; // [esp+6Ch] [ebp-4Ch] unsigned __int16 *v59; // [esp+6Ch] [ebp-4Ch] char v60; // [esp+6Ch] [ebp-4Ch] int v61; // [esp+70h] [ebp-48h] int *v63; // [esp+78h] [ebp-40h] char v64; // [esp+7Ch] [ebp-3Ch] char v65; // [esp+7Dh] [ebp-3Bh] char v66; // [esp+7Dh] [ebp-3Bh] char v67; // [esp+7Dh] [ebp-3Bh] wchar_t v68; // [esp+94h] [ebp-24h] BYREF __int16 v69; // [esp+96h] [ebp-22h] __int16 v70; // [esp+98h] [ebp-20h] __int16 v71; // [esp+9Ah] [ebp-1Eh] unsigned __int16 *v72; // [esp+D8h] [ebp+20h] HIWORD(v61) = HIWORD(a3); v56 = a3; HIWORD(v63) = HIWORD(a5); v11 = std::use_facet>(a6 + 108); *a7 = 0; if ( a9 != a10 ) { v12 = a9; v64 = (_WORD)a5 == 0xFFFF; do { v58 = v56 == 0xFFFF; v18 = v58 && a2 != 0; if ( v18 ) { v46 = *(__int16 **)(a2 + 8); if ( (unsigned int)v46 >= *(_DWORD *)(a2 + 12) ) { v47 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); v18 = v58 && a2 != 0; } else { v47 = *v46; } a2 = v47 == -1 ? 0 : a2; v19 = v47 == -1 && v18; } else { v19 = v56 == 0xFFFF; } v20 = v64 & (a4 != 0); if ( v20 ) { v44 = (__int16 *)a4[2]; if ( (unsigned int)v44 >= a4[3] ) { v66 = v19; v45 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v19 = v66; } else { v45 = *v44; } a4 = v45 == -1 ? 0 : a4; if ( ((unsigned __int8)((v45 != -1) - 1) & v20) == v19 ) { LABEL_65: *a7 = 6; return a2; } } else if ( v64 == v19 ) { goto LABEL_65; } if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, *v12, 0) == 37 ) { v59 = v12 + 1; if ( a10 == v12 + 1 ) goto LABEL_92; v21 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v12[1], 0); if ( v21 == 69 || (v65 = 0, v22 = 0, v21 == 79) ) { v59 = v12 + 2; if ( a10 == v12 + 2 ) goto LABEL_92; v48 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v12[2], 0); v65 = v21; v22 = v21; v21 = v48; } v23 = *(int (__thiscall **)(void *, int, int, _DWORD *, int *, int, _DWORD *, _DWORD *, _DWORD, int))(*(_DWORD *)this + 32); if ( (char *)v23 == (char *)std::time_get>::do_get ) { LOWORD(v61) = v56; LOWORD(v63) = a5; v24 = (int *)std::use_facet>(a6 + 108); v25 = *v24; *a7 = 0; v68 = (*(int (__thiscall **)(int *, int))(v25 + 40))(v24, 37); if ( v65 ) { v70 = v21; v69 = v65; v71 = 0; } else { v69 = v21; v70 = 0; } v26 = std::time_get>::_M_extract_via_format( (_DWORD *)a2, v61, a4, v63, a6, a7, a8, &v68); a2 = (int)v26; v56 = v27; v28 = v27 == 0xFFFF; v29 = v28 & (v26 != 0); if ( v29 ) { v53 = (__int16 *)v26[2]; if ( (unsigned int)v53 >= v26[3] ) v54 = (*(int (__fastcall **)(_DWORD *))(*v26 + 36))(v26); else v54 = *v53; v28 = v54 != -1 ? 0 : v29; a2 = v54 == -1 ? 0 : (unsigned int)v26; } if ( a4 && (_WORD)a5 == 0xFFFF ) { v51 = (__int16 *)a4[2]; if ( (unsigned int)v51 >= a4[3] ) { v67 = v28; v52 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v28 = v67; } else { v52 = *v51; } v30 = v52 == -1; } else { v30 = (_WORD)a5 == 0xFFFF; } if ( v28 == v30 ) *a7 |= 2u; } else { LOWORD(v61) = v56; LOWORD(v63) = a5; a2 = v23(this, a2, v61, a4, v63, a6, a7, a8, v21, v22); v56 = v50; } v12 = v59 + 1; if ( a10 == v59 + 1 ) return a2; } else { if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v11 + 8))(v11, 32, *v12) ) { for ( i = v12 + 1; a10 != i; ++i ) { if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v11 + 8))(v11, 32, *i) ) break; } v72 = i; while ( 1 ) { v37 = v56 == 0xFFFF; v38 = v37 && a2 != 0; if ( v38 ) { v39 = *(__int16 **)(a2 + 8); if ( (unsigned int)v39 >= *(_DWORD *)(a2 + 12) ) { v40 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); v38 = v37 && a2 != 0; } else { v40 = *v39; } a2 = v40 == -1 ? 0 : a2; v33 = v40 == -1 && v38; } else { v33 = v56 == 0xFFFF; } v34 = v64 & (a4 != 0); if ( v34 ) { v41 = (__int16 *)a4[2]; if ( (unsigned int)v41 >= a4[3] ) { v60 = v33; v42 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v33 = v60; } else { v42 = *v41; } a4 = v42 == -1 ? 0 : a4; if ( ((unsigned __int8)((v42 != -1) - 1) & v34) == v33 ) break; } else if ( v64 == v33 ) { break; } if ( a2 && v56 == 0xFFFF ) { v43 = *(_WORD **)(a2 + 8); v35 = (unsigned int)v43 >= *(_DWORD *)(a2 + 12) ? (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2) : *v43; a2 = v35 == 0xFFFF ? 0 : a2; } else { v35 = v56; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v11 + 8))(v11, 32, v35) ) break; v36 = *(_DWORD *)(a2 + 8); if ( v36 >= *(_DWORD *)(a2 + 12) ) (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); else *(_DWORD *)(a2 + 8) = v36 + 2; v56 = -1; } v12 = v72; } else { if ( a2 && v56 == 0xFFFF ) { v49 = *(unsigned __int16 **)(a2 + 8); if ( (unsigned int)v49 >= *(_DWORD *)(a2 + 12) ) v13 = (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); else v13 = *v49; a2 = (_WORD)v13 == 0xFFFF ? 0 : a2; } else { v13 = v56; } v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v11 + 32))(v11, v13); if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v11 + 32))(v11, *v12) != v14 ) { if ( a2 && v56 == 0xFFFF ) { v55 = *(_WORD **)(a2 + 8); v15 = (unsigned int)v55 >= *(_DWORD *)(a2 + 12) ? (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2) : (unsigned __int16)*v55; a2 = (_WORD)v15 == 0xFFFF ? 0 : a2; } else { v15 = v56; } v16 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v11 + 24))(v11, v15); if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v11 + 24))(v11, *v12) != v16 ) { LABEL_92: *a7 = 4; return a2; } } v17 = *(_DWORD *)(a2 + 8); if ( v17 >= *(_DWORD *)(a2 + 12) ) (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); else *(_DWORD *)(a2 + 8) = v17 + 2; ++v12; v56 = -1; } if ( a10 == v12 ) return a2; } } while ( !*a7 ); } return a2; } // 454F44: variable 'v27' is possibly undefined // 4552D8: variable 'v50' is possibly undefined //----- (00455440) -------------------------------------------------------- int __thiscall std::time_get>::get( void *this, _DWORD *a2, int a3, _DWORD *a4, int *a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10) { _DWORD *(__stdcall *v10)(_DWORD *, int, _DWORD *, int *, int, _DWORD *, _DWORD *, char, char); // eax int *v11; // eax int v12; // edx _DWORD *v13; // ecx __int16 v14; // dx char v15; // dl _DWORD *v16; // ebx char v17; // si char v18; // cl __int16 *v20; // eax __int16 v21; // ax __int16 *v22; // eax __int16 v23; // ax char v24; // [esp+3Ch] [ebp-34h] _DWORD *v25; // [esp+40h] [ebp-30h] wchar_t v26; // [esp+4Ch] [ebp-24h] BYREF __int16 v27; // [esp+4Eh] [ebp-22h] __int16 v28; // [esp+50h] [ebp-20h] __int16 v29; // [esp+52h] [ebp-1Eh] v10 = *(_DWORD *(__stdcall **)(_DWORD *, int, _DWORD *, int *, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); if ( v10 != std::time_get>::do_get ) return ((int (__thiscall *)(void *, _DWORD *, int, _DWORD *, int *, int, _DWORD *, _DWORD *, _DWORD, _DWORD))v10)( this, a2, a3, a4, a5, a6, a7, a8, a9, a10); v11 = (int *)std::use_facet>(a6 + 108); v12 = *v11; *a7 = 0; v26 = (*(int (__thiscall **)(int *, int))(v12 + 40))(v11, 37); if ( a10 ) { v28 = a9; v27 = a10; v29 = 0; } else { v27 = a9; v28 = 0; } v13 = std::time_get>::_M_extract_via_format( a2, a3, a4, a5, a6, a7, a8, &v26); v15 = v14 == -1; v16 = v13; v17 = v15 & (v13 != 0); if ( v17 ) { v20 = (__int16 *)v13[2]; if ( (unsigned int)v20 >= v13[3] ) { v25 = v13; v21 = (*(int (**)(void))(*v13 + 36))(); v13 = v25; } else { v21 = *v20; } v15 = v21 != -1 ? 0 : v17; v16 = v21 == -1 ? 0 : v13; } v18 = (_WORD)a5 == 0xFFFF; if ( a4 && (_WORD)a5 == 0xFFFF ) { v22 = (__int16 *)a4[2]; if ( (unsigned int)v22 >= a4[3] ) { v24 = v15; v23 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v15 = v24; } else { v23 = *v22; } v18 = v23 == -1; } if ( v18 == v15 ) *a7 |= 2u; return (int)v16; } // 45551D: variable 'v14' is possibly undefined //----- (00455670) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get( _DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9) { void *v9; // eax _DWORD *v10; // ecx _DWORD *v11; // ebp __int16 v12; // dx __int16 v13; // bx char v14; // di char v15; // cl __int16 *v17; // eax __int16 v18; // ax __int16 *v19; // eax __int16 v20; // ax int v21; // [esp+34h] [ebp-3Ch] wchar_t v22; // [esp+4Ch] [ebp-24h] BYREF __int16 v23; // [esp+4Eh] [ebp-22h] __int16 v24; // [esp+50h] [ebp-20h] __int16 v25; // [esp+52h] [ebp-1Eh] v9 = std::use_facet>(a5 + 108); *a6 = 0; v22 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 37); if ( a9 ) { v24 = a8; v23 = a9; v25 = 0; } else { v23 = a8; v24 = 0; } v10 = std::time_get>::_M_extract_via_format( a1, a2, a3, a4, a5, a6, a7, &v22); v11 = v10; v13 = v12 == -1; v14 = v13 & (v10 != 0); if ( v14 ) { v19 = (__int16 *)v10[2]; if ( (unsigned int)v19 >= v10[3] ) { v21 = (int)v10; v20 = (*(int (**)(void))(*v10 + 36))(); v10 = (_DWORD *)v21; } else { v20 = *v19; } LOBYTE(v13) = v20 != -1 ? 0 : v14; v11 = v20 == -1 ? 0 : v10; } v15 = (_WORD)a4 == 0xFFFF; if ( a3 && (_WORD)a4 == 0xFFFF ) { v17 = (__int16 *)a3[2]; if ( (unsigned int)v17 >= a3[3] ) v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v18 = *v17; v15 = v18 == -1; } if ( (_BYTE)v13 == v15 ) *a6 |= 2u; return v11; } // 455752: variable 'v12' is possibly undefined //----- (00455830) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (00455840) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (00455850) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (00455860) -------------------------------------------------------- unsigned int __stdcall std::money_get>::_M_extract( unsigned int a1, int a2, unsigned int a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { unsigned int v8; // edx int v9; // eax size_t v10; // esi size_t v11; // edi _BYTE *v12; // eax unsigned int v13; // eax bool v14; // si char v15; // si unsigned __int8 v16; // si _BYTE *v17; // eax char v18; // al size_t v19; // esi _BYTE *v20; // eax size_t v21; // edi unsigned int v22; // edx char v23; // al _BYTE *v24; // eax unsigned int i; // edi char v26; // si char v27; // si int v28; // eax char v29; // si _BYTE *v30; // eax char v31; // si int v32; // eax unsigned __int8 *v33; // eax bool v34; // si int v35; // edi int v36; // esi int v37; // esi char v38; // al int v39; // eax unsigned __int8 *v40; // eax int v41; // eax char v42; // al unsigned int v43; // edi bool v44; // si char v45; // si int v46; // eax _BYTE *v47; // eax int v48; // eax int v49; // edx char v50; // al unsigned __int8 *v52; // eax int v53; // eax int v54; // edx char v55; // al int v56; // eax bool v57; // si char v58; // si char v59; // al bool v60; // al size_t v61; // esi _BYTE *v62; // eax size_t v63; // edx int v64; // eax int v65; // eax int v66; // eax int v67; // esi bool v68; // di char v69; // al unsigned int first_not_of; // eax int v71; // edx _BYTE *v72; // eax int v73; // eax std::locale::_Impl *v74; // eax std::locale::_Impl *v75; // esi int v76; // edx int v77; // eax int v78; // eax int v79; // eax int v80; // eax _BYTE *v81; // eax int v82; // eax int v83; // edx int v84; // edx int v85; // eax int v86; // eax void (__cdecl *v87)(void *); // [esp+4h] [ebp-A4h] unsigned int v88; // [esp+8h] [ebp-A0h] char v89; // [esp+18h] [ebp-90h] char v90; // [esp+1Ch] [ebp-8Ch] unsigned int v91; // [esp+1Ch] [ebp-8Ch] _DWORD *v92; // [esp+20h] [ebp-88h] unsigned int v93; // [esp+24h] [ebp-84h] int v94; // [esp+2Ch] [ebp-7Ch] bool v95; // [esp+31h] [ebp-77h] char v96; // [esp+32h] [ebp-76h] char v97; // [esp+33h] [ebp-75h] _BYTE *Buf; // [esp+34h] [ebp-74h] int *v99; // [esp+38h] [ebp-70h] int v100; // [esp+38h] [ebp-70h] int v101; // [esp+3Ch] [ebp-6Ch] std::locale::facet *v102; // [esp+40h] [ebp-68h] char v103; // [esp+40h] [ebp-68h] char v104; // [esp+40h] [ebp-68h] char v105; // [esp+40h] [ebp-68h] char v106; // [esp+40h] [ebp-68h] char v107; // [esp+40h] [ebp-68h] char v108; // [esp+40h] [ebp-68h] char v109; // [esp+40h] [ebp-68h] char v112; // [esp+4Ch] [ebp-5Ch] char v113; // [esp+4Ch] [ebp-5Ch] char v114; // [esp+5Bh] [ebp-4Dh] BYREF int v115; // [esp+5Ch] [ebp-4Ch] void *v116; // [esp+60h] [ebp-48h] BYREF size_t v117; // [esp+64h] [ebp-44h] int v118[4]; // [esp+68h] [ebp-40h] BYREF void *v119; // [esp+78h] [ebp-30h] BYREF size_t v120; // [esp+7Ch] [ebp-2Ch] int v121[10]; // [esp+80h] [ebp-28h] BYREF v92 = std::use_facet>(a5 + 108); v102 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v99 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v102); v101 = *v99; if ( !*v99 ) { v74 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v87); *(_DWORD *)v74 = &off_4F66C4; v75 = v74; *((_DWORD *)v74 + 1) = 0; *((_DWORD *)v74 + 2) = 0; *((_DWORD *)v74 + 3) = 0; *((_WORD *)v74 + 8) = 0; *((_BYTE *)v74 + 18) = 0; *((_DWORD *)v74 + 5) = 0; *((_DWORD *)v74 + 6) = 0; *((_DWORD *)v74 + 7) = 0; *((_DWORD *)v74 + 8) = 0; *((_DWORD *)v74 + 9) = 0; *((_DWORD *)v74 + 10) = 0; *((_DWORD *)v74 + 11) = 0; *((_DWORD *)v74 + 12) = 0; *((_DWORD *)v74 + 13) = 0; *((_BYTE *)v74 + 67) = 0; std::__moneypunct_cache::_M_cache((int)v74, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v75, v102, v88); v101 = *v99; } if ( *(_DWORD *)(v101 + 32) ) v95 = *(_DWORD *)(v101 + 40) != 0; else v95 = 0; v117 = 0; v116 = v118; LOBYTE(v118[0]) = 0; if ( *(_BYTE *)(v101 + 16) ) std::string::reserve(&v116, 0x20u); v119 = v121; v120 = 0; LOBYTE(v121[0]) = 0; std::string::reserve(&v119, 0x20u); v97 = 0; v94 = 1; v100 = 0; v115 = *(_DWORD *)(v101 + 52); v89 = 0; v93 = 0; v96 = 0; while ( 2 ) { v9 = (unsigned __int8)*(&v114 + v94); switch ( *(&v114 + v94) ) { case 0: v104 = 1; goto LABEL_37; case 1: LOBYTE(v9) = a2 == -1; v35 = v9; LOBYTE(v9) = v9 & (a1 != 0); v36 = v9; if ( (_BYTE)v9 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v86 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v86 == -1) - 1; LOBYTE(v86) = v86 != -1; v37 = (v86 - 1) & v36; } else { v37 = 0; } } else { v37 = v35; } v38 = a4 == -1; v106 = v38 & (a3 != 0); if ( v106 ) { v38 = 0; if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) { v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); v38 = v76 != -1 ? 0 : v106; a3 &= (v76 == -1) - 1; } } v8 = v37; v104 = 0; if ( v38 == (_BYTE)v37 ) goto LABEL_37; if ( a1 && (_BYTE)v35 ) { v40 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v40 < *(_DWORD *)(a1 + 12) ) { v8 = v92[6]; if ( (*(_BYTE *)(v8 + 2 * *v40) & 0x20) != 0 ) goto LABEL_77; a2 = -1; goto LABEL_37; } v39 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v39 == -1) - 1; } else { LOBYTE(v39) = a2; } v8 = v92[6]; if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v39) & 0x20) != 0 ) { v40 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_78; } LABEL_77: *(_DWORD *)(a1 + 8) = v40 + 1; LABEL_78: a2 = -1; v104 = 1; goto LABEL_37; } v104 = 0; LABEL_37: if ( v94 == 4 ) { v23 = v104 & (v93 > 1); LABEL_39: if ( v23 ) { if ( v96 ) v24 = *(_BYTE **)(v101 + 36); else v24 = *(_BYTE **)(v101 + 28); Buf = v24; for ( i = 1; ; ++i ) { v105 = a2 == -1; v26 = v105 & (a1 != 0); if ( v26 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v78 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v78 == -1) - 1; v27 = v78 != -1 ? 0 : v26; } else { v27 = 0; } } else { v27 = a2 == -1; } if ( a3 && a4 == -1 ) { if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) { v56 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); if ( v56 == -1 ) { a3 = 0; v27 ^= 1u; } } } else { v27 ^= a4 == -1; } if ( i >= v93 || !v27 ) { if ( i != v93 ) { LABEL_182: v29 = (a1 != 0) & v105; goto LABEL_108; } if ( v120 > 1 ) goto LABEL_198; goto LABEL_165; } LOBYTE(v28) = a2; v29 = v105 & (a1 != 0); if ( v29 ) { v30 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) { if ( Buf[i] != *v30 ) { v105 &= a1 != 0; goto LABEL_108; } LABEL_53: *(_DWORD *)(a1 + 8) = v30 + 1; goto LABEL_54; } v28 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v28 == -1) - 1; } if ( Buf[i] != (_BYTE)v28 ) goto LABEL_182; v30 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) goto LABEL_53; (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); LABEL_54: a2 = -1; } } if ( !v104 ) goto LABEL_107; if ( v120 > 1 ) { LABEL_198: first_not_of = std::string::find_first_not_of((int *)&v119, 48, 0); if ( first_not_of ) { v71 = v120; if ( first_not_of != -1 ) goto LABEL_200; first_not_of = v120 - 1; if ( !v120 ) { *(_BYTE *)v119 = 0; goto LABEL_165; } if ( v120 != 1 ) { LABEL_200: if ( v120 > first_not_of ) v71 = first_not_of; std::string::_M_erase((int *)&v119, 0, v71); } } } LABEL_165: if ( v96 && *(_BYTE *)v119 != 48 ) std::string::_M_replace_aux(&v119, 0, 0, 1u, 45); v61 = v117; if ( v117 ) { v108 = v100; if ( v97 ) v108 = v89; v62 = v116; if ( v116 == v118 ) v63 = 15; else v63 = v118[0]; if ( v117 + 1 > v63 ) { std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); v62 = v116; } v62[v61] = v108; v117 = v61 + 1; *((_BYTE *)v116 + v61 + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v101 + 8), *(_DWORD *)(v101 + 12), (int)&v116) ) *a6 |= 4u; } v105 = a2 == -1; v29 = (a1 != 0) & v105; if ( v97 && *(_DWORD *)(v101 + 44) != v100 ) goto LABEL_108; std::string::swap(a7, &v119); if ( !v29 ) goto LABEL_109; LABEL_180: v105 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); v105 = v64 != -1 ? 0 : v29; a1 &= (v64 == -1) - 1; } goto LABEL_109; } while ( 1 ) { v34 = a2 == -1 && a1 != 0; if ( v34 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v77 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); v8 = (v77 == -1) - 1; a1 &= v8; v31 = v77 == -1 && v34; } else { v31 = 0; } } else { v31 = a2 == -1; } LOBYTE(v8) = a4 == -1; v90 = v8 & (a3 != 0); if ( v90 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) { v53 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); LOBYTE(v54) = v53 != -1; v8 = v54 - 1; LOBYTE(v8) = v90 & v8; a3 &= (v53 == -1) - 1; if ( (_BYTE)v8 == v31 ) goto LABEL_125; } else if ( (_BYTE)v8 == v31 ) { goto LABEL_125; } if ( a1 && a2 == -1 ) { v33 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) { v8 = v92[6]; if ( (*(_BYTE *)(v8 + 2 * *v33) & 0x20) == 0 ) { a2 = -1; v42 = v104 ^ 1; goto LABEL_126; } LABEL_63: *(_DWORD *)(a1 + 8) = v33 + 1; goto LABEL_64; } v32 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v32 == -1) - 1; } else { LOBYTE(v32) = a2; } v8 = v92[6]; if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v32) & 0x20) == 0 ) goto LABEL_125; v33 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) goto LABEL_63; (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); LABEL_64: a2 = -1; } case 2: if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) goto LABEL_89; v8 = v94 - 1; v42 = v94 == 1 || v93 > 1; if ( v42 ) goto LABEL_89; if ( v94 != 2 ) { v104 = 1; if ( v94 == 3 ) { if ( HIBYTE(v115) == 4 || HIBYTE(v115) == 3 && v95 ) goto LABEL_89; } else { LABEL_126: if ( v94 > 3 || v42 ) { v23 = v104 & (v93 > 1); goto LABEL_39; } } LABEL_128: ++v94; continue; } if ( !v95 && (_BYTE)v115 != 3 && BYTE2(v115) != 1 ) goto LABEL_128; LABEL_89: v43 = 0; v91 = *(_DWORD *)(v101 + 24); while ( 2 ) { v44 = a2 == -1 && a1 != 0; if ( v44 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v79 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v8); a1 &= (v79 == -1) - 1; v45 = v79 == -1 && v44; } else { v45 = 0; } } else { v45 = a2 == -1; } v8 = a3; if ( a3 && a4 == -1 ) { v8 = *(_DWORD *)(a3 + 12); if ( *(_DWORD *)(a3 + 8) >= v8 ) { v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; v45 ^= v60; a3 &= v60 - 1; } } else { v45 ^= a4 == -1; } v42 = v45 & (v43 < v91); if ( !v42 ) { if ( v43 != v91 ) goto LABEL_159; LABEL_187: v104 = 1; goto LABEL_126; } if ( !a1 || a2 != -1 ) { LOBYTE(v46) = a2; goto LABEL_99; } v47 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) { v46 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v46 == -1) - 1; LABEL_99: v8 = *(_DWORD *)(v101 + 20); if ( *(_BYTE *)(v8 + v43) != (_BYTE)v46 ) goto LABEL_159; v47 = *(_BYTE **)(a1 + 8); if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v47 ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_102; } LABEL_101: *(_DWORD *)(a1 + 8) = v47 + 1; LABEL_102: a2 = -1; ++v43; continue; } break; } v8 = *(_DWORD *)(v101 + 20); if ( *v47 == *(_BYTE *)(v8 + v43) ) goto LABEL_101; a2 = -1; LABEL_159: if ( !v43 ) { v104 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; goto LABEL_126; } LABEL_107: v105 = a2 == -1; v29 = (a1 != 0) & v105; LABEL_108: *a6 |= 4u; if ( v29 ) goto LABEL_180; LABEL_109: v50 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v50 = 0; if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) v50 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; } } if ( v50 == v105 ) *a6 |= 2u; if ( v119 != v121 ) operator delete(v119); if ( v116 != v118 ) operator delete(v116); return a1; case 3: if ( !*(_DWORD *)(v101 + 32) ) { v41 = v101; if ( !*(_DWORD *)(v101 + 40) ) { LABEL_81: v42 = v95; v8 = !v95; v104 = !v95; goto LABEL_126; } LABEL_190: LOBYTE(v41) = a2 == -1; v67 = v41; if ( !a1 || a2 != -1 ) { v68 = a2 == -1; goto LABEL_193; } LABEL_210: v68 = 1; v67 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); LOBYTE(v73) = v73 == -1; v67 = v73; a1 &= (unsigned __int8)v73 - 1; } LABEL_193: v69 = a4 == -1; v109 = v69 & (a3 != 0); if ( v109 ) { v69 = 0; if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) { v84 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); v69 = v84 != -1 ? 0 : v109; a3 &= (v84 == -1) - 1; } } v8 = v67; if ( (_BYTE)v67 == v69 ) { LABEL_195: if ( !*(_DWORD *)(v101 + 32) || *(_DWORD *)(v101 + 40) ) goto LABEL_81; goto LABEL_146; } if ( a1 && v68 ) { v81 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v81 < *(_DWORD *)(a1 + 12) ) { v8 = *(_DWORD *)(v101 + 36); if ( *(_BYTE *)v8 != *v81 ) goto LABEL_195; v93 = *(_DWORD *)(v101 + 40); goto LABEL_244; } v82 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v82 == -1) - 1; } else { LOBYTE(v82) = a2; } v8 = *(_DWORD *)(v101 + 36); if ( *(_BYTE *)v8 != (_BYTE)v82 ) goto LABEL_195; v93 = *(_DWORD *)(v101 + 40); v81 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v81 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_245; } LABEL_244: *(_DWORD *)(a1 + 8) = v81 + 1; LABEL_245: a2 = -1; v42 = 0; v104 = 1; v96 = 1; goto LABEL_126; } v57 = a2 == -1 && a1 != 0; if ( v57 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v85 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v85 == -1) - 1; v58 = v85 == -1 && v57; } else { v58 = 0; } } else { v58 = a2 == -1; } v8 = a3; v59 = a4 == -1; LOBYTE(v8) = v59 & (a3 != 0); v107 = v8; if ( (_BYTE)v8 ) { v8 = a3; v59 = 0; if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) { v83 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); v59 = v83 != -1 ? 0 : v107; v8 = (v83 == -1) - 1; a3 &= v8; } } if ( v59 == v58 ) goto LABEL_144; if ( a1 && a2 == -1 ) { v72 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v72 < *(_DWORD *)(a1 + 12) ) { v8 = **(unsigned __int8 **)(v101 + 28); if ( *v72 != (_BYTE)v8 ) { if ( *(_DWORD *)(v101 + 40) ) goto LABEL_210; goto LABEL_145; } v93 = *(_DWORD *)(v101 + 32); goto LABEL_237; } v80 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v80 == -1) - 1; } else { LOBYTE(v80) = a2; } v8 = *(_DWORD *)(v101 + 28); if ( *(_BYTE *)v8 != (_BYTE)v80 ) { LABEL_144: v41 = v101; if ( *(_DWORD *)(v101 + 40) ) goto LABEL_190; LABEL_145: if ( !*(_DWORD *)(v101 + 32) ) goto LABEL_81; LABEL_146: v104 = 1; v42 = 0; v96 = 1; goto LABEL_126; } v93 = *(_DWORD *)(v101 + 32); v72 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_238; } LABEL_237: *(_DWORD *)(a1 + 8) = v72 + 1; LABEL_238: a2 = -1; v42 = 0; goto LABEL_187; case 4: while ( 2 ) { v14 = a2 == -1 && a1 != 0; if ( v14 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); v8 = (v65 == -1) - 1; a1 &= v8; v15 = v65 == -1 && v14; } else { v15 = 0; } } else { v15 = a2 == -1; } LOBYTE(v8) = a4 == -1; v103 = v8 & (a3 != 0); if ( v103 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) { v48 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); LOBYTE(v49) = v48 != -1; v8 = v49 - 1; LOBYTE(v8) = v103 & v8; a3 &= (v48 == -1) - 1; if ( v15 == (_BYTE)v8 ) goto LABEL_105; } else if ( v15 == (_BYTE)v8 ) { goto LABEL_105; } if ( a1 && a2 == -1 ) { v52 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ) { v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); v16 = v66 != -1 ? v66 : -1; a1 &= (v66 == -1) - 1; } else { v16 = *v52; } } else { v16 = a2; } v17 = memchr((const void *)(v101 + 57), (char)v16, 0xAu); if ( v17 ) { v10 = v120; v11 = v120 + 1; v112 = v17[(_DWORD)std::money_base::_S_atoms - 56 - v101]; v12 = v119; if ( v119 == v121 ) v8 = 15; else v8 = v121[0]; if ( v11 > v8 ) { std::string::_M_mutate((int)&v119, v120, 0, 0, 1u); v12 = v119; } ++v100; v12[v10] = v112; v120 = v11; *((_BYTE *)v119 + v10 + 1) = 0; LABEL_14: v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) { LABEL_15: *(_DWORD *)(a1 + 8) = v13 + 1; LABEL_16: a2 = -1; continue; } LABEL_35: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_16; } break; } v104 = v97 | (*(_BYTE *)(v101 + 17) != v16); if ( !v104 ) { if ( *(int *)(v101 + 44) > 0 ) { v55 = v100; v97 = 1; v100 = 0; v89 = v55; goto LABEL_14; } v97 = 0; LABEL_105: v104 = 1; LABEL_106: if ( !v120 ) goto LABEL_107; goto LABEL_125; } v18 = *(_BYTE *)(v101 + 16); if ( !v18 ) goto LABEL_106; if ( *(_BYTE *)(v101 + 18) == v16 ) { if ( !v97 ) { if ( v100 ) { v113 = v100; v19 = v117; v20 = v116; v21 = v117 + 1; if ( v116 == v118 ) v22 = 15; else v22 = v118[0]; if ( v21 > v22 ) { std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); v20 = v116; } v8 = (unsigned __int8)v100; v100 = 0; v20[v19] = v113; v117 = v21; *((_BYTE *)v116 + v19 + 1) = 0; v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) goto LABEL_15; goto LABEL_35; } v104 = 0; goto LABEL_106; } v18 = v97; } v104 = v18; if ( !v120 ) goto LABEL_107; LABEL_125: v42 = v104 ^ 1; goto LABEL_126; default: v104 = 1; v42 = 0; goto LABEL_126; } } } // 456577: variable 'v87' is possibly undefined // 456603: variable 'v88' is possibly undefined // 455E30: variable 'v49' is possibly undefined // 455FA0: variable 'v54' is possibly undefined // 45673D: variable 'v8' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4E9588: using guessed type int std::moneypunct::id; // 4F66C4: using guessed type int (*off_4F66C4)(); //----- (00456A90) -------------------------------------------------------- unsigned int __stdcall std::money_get>::_M_extract( unsigned int a1, int a2, unsigned int a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { unsigned int v8; // edx int v9; // eax size_t v10; // esi size_t v11; // edi _BYTE *v12; // eax unsigned int v13; // eax bool v14; // si char v15; // si unsigned __int8 v16; // si _BYTE *v17; // eax char v18; // al size_t v19; // esi _BYTE *v20; // eax size_t v21; // edi unsigned int v22; // edx char v23; // al _BYTE *v24; // eax unsigned int i; // edi char v26; // si char v27; // si int v28; // eax char v29; // si _BYTE *v30; // eax char v31; // si int v32; // eax unsigned __int8 *v33; // eax bool v34; // si int v35; // edi int v36; // esi int v37; // esi char v38; // al int v39; // eax unsigned __int8 *v40; // eax int v41; // eax char v42; // al unsigned int v43; // edi bool v44; // si char v45; // si int v46; // eax _BYTE *v47; // eax int v48; // eax int v49; // edx char v50; // al unsigned __int8 *v52; // eax int v53; // eax int v54; // edx char v55; // al int v56; // eax bool v57; // si char v58; // si char v59; // al bool v60; // al size_t v61; // esi _BYTE *v62; // eax size_t v63; // edx int v64; // eax int v65; // eax int v66; // eax int v67; // esi bool v68; // di char v69; // al unsigned int first_not_of; // eax int v71; // edx _BYTE *v72; // eax int v73; // eax std::locale::_Impl *v74; // eax std::locale::_Impl *v75; // esi int v76; // edx int v77; // eax int v78; // eax int v79; // eax int v80; // eax _BYTE *v81; // eax int v82; // eax int v83; // edx int v84; // edx int v85; // eax int v86; // eax void (__cdecl *v87)(void *); // [esp+4h] [ebp-A4h] unsigned int v88; // [esp+8h] [ebp-A0h] char v89; // [esp+18h] [ebp-90h] char v90; // [esp+1Ch] [ebp-8Ch] unsigned int v91; // [esp+1Ch] [ebp-8Ch] _DWORD *v92; // [esp+20h] [ebp-88h] unsigned int v93; // [esp+24h] [ebp-84h] int v94; // [esp+2Ch] [ebp-7Ch] bool v95; // [esp+31h] [ebp-77h] char v96; // [esp+32h] [ebp-76h] char v97; // [esp+33h] [ebp-75h] _BYTE *Buf; // [esp+34h] [ebp-74h] int *v99; // [esp+38h] [ebp-70h] int v100; // [esp+38h] [ebp-70h] int v101; // [esp+3Ch] [ebp-6Ch] std::locale::facet *v102; // [esp+40h] [ebp-68h] char v103; // [esp+40h] [ebp-68h] char v104; // [esp+40h] [ebp-68h] char v105; // [esp+40h] [ebp-68h] char v106; // [esp+40h] [ebp-68h] char v107; // [esp+40h] [ebp-68h] char v108; // [esp+40h] [ebp-68h] char v109; // [esp+40h] [ebp-68h] char v112; // [esp+4Ch] [ebp-5Ch] char v113; // [esp+4Ch] [ebp-5Ch] char v114; // [esp+5Bh] [ebp-4Dh] BYREF int v115; // [esp+5Ch] [ebp-4Ch] void *v116; // [esp+60h] [ebp-48h] BYREF size_t v117; // [esp+64h] [ebp-44h] int v118[4]; // [esp+68h] [ebp-40h] BYREF void *v119; // [esp+78h] [ebp-30h] BYREF size_t v120; // [esp+7Ch] [ebp-2Ch] int v121[10]; // [esp+80h] [ebp-28h] BYREF v92 = std::use_facet>(a5 + 108); v102 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v99 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v102); v101 = *v99; if ( !*v99 ) { v74 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v87); *(_DWORD *)v74 = &off_4F66D4; v75 = v74; *((_DWORD *)v74 + 1) = 0; *((_DWORD *)v74 + 2) = 0; *((_DWORD *)v74 + 3) = 0; *((_WORD *)v74 + 8) = 0; *((_BYTE *)v74 + 18) = 0; *((_DWORD *)v74 + 5) = 0; *((_DWORD *)v74 + 6) = 0; *((_DWORD *)v74 + 7) = 0; *((_DWORD *)v74 + 8) = 0; *((_DWORD *)v74 + 9) = 0; *((_DWORD *)v74 + 10) = 0; *((_DWORD *)v74 + 11) = 0; *((_DWORD *)v74 + 12) = 0; *((_DWORD *)v74 + 13) = 0; *((_BYTE *)v74 + 67) = 0; std::__moneypunct_cache::_M_cache((int)v74, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v75, v102, v88); v101 = *v99; } if ( *(_DWORD *)(v101 + 32) ) v95 = *(_DWORD *)(v101 + 40) != 0; else v95 = 0; v117 = 0; v116 = v118; LOBYTE(v118[0]) = 0; if ( *(_BYTE *)(v101 + 16) ) std::string::reserve(&v116, 0x20u); v119 = v121; v120 = 0; LOBYTE(v121[0]) = 0; std::string::reserve(&v119, 0x20u); v97 = 0; v94 = 1; v100 = 0; v115 = *(_DWORD *)(v101 + 52); v89 = 0; v93 = 0; v96 = 0; while ( 2 ) { v9 = (unsigned __int8)*(&v114 + v94); switch ( *(&v114 + v94) ) { case 0: v104 = 1; goto LABEL_37; case 1: LOBYTE(v9) = a2 == -1; v35 = v9; LOBYTE(v9) = v9 & (a1 != 0); v36 = v9; if ( (_BYTE)v9 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v86 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v86 == -1) - 1; LOBYTE(v86) = v86 != -1; v37 = (v86 - 1) & v36; } else { v37 = 0; } } else { v37 = v35; } v38 = a4 == -1; v106 = v38 & (a3 != 0); if ( v106 ) { v38 = 0; if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) { v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); v38 = v76 != -1 ? 0 : v106; a3 &= (v76 == -1) - 1; } } v8 = v37; v104 = 0; if ( v38 == (_BYTE)v37 ) goto LABEL_37; if ( a1 && (_BYTE)v35 ) { v40 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v40 < *(_DWORD *)(a1 + 12) ) { v8 = v92[6]; if ( (*(_BYTE *)(v8 + 2 * *v40) & 0x20) != 0 ) goto LABEL_77; a2 = -1; goto LABEL_37; } v39 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v39 == -1) - 1; } else { LOBYTE(v39) = a2; } v8 = v92[6]; if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v39) & 0x20) != 0 ) { v40 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_78; } LABEL_77: *(_DWORD *)(a1 + 8) = v40 + 1; LABEL_78: a2 = -1; v104 = 1; goto LABEL_37; } v104 = 0; LABEL_37: if ( v94 == 4 ) { v23 = v104 & (v93 > 1); LABEL_39: if ( v23 ) { if ( v96 ) v24 = *(_BYTE **)(v101 + 36); else v24 = *(_BYTE **)(v101 + 28); Buf = v24; for ( i = 1; ; ++i ) { v105 = a2 == -1; v26 = v105 & (a1 != 0); if ( v26 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v78 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v78 == -1) - 1; v27 = v78 != -1 ? 0 : v26; } else { v27 = 0; } } else { v27 = a2 == -1; } if ( a3 && a4 == -1 ) { if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) { v56 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); if ( v56 == -1 ) { a3 = 0; v27 ^= 1u; } } } else { v27 ^= a4 == -1; } if ( i >= v93 || !v27 ) { if ( i != v93 ) { LABEL_182: v29 = (a1 != 0) & v105; goto LABEL_108; } if ( v120 > 1 ) goto LABEL_198; goto LABEL_165; } LOBYTE(v28) = a2; v29 = v105 & (a1 != 0); if ( v29 ) { v30 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) { if ( Buf[i] != *v30 ) { v105 &= a1 != 0; goto LABEL_108; } LABEL_53: *(_DWORD *)(a1 + 8) = v30 + 1; goto LABEL_54; } v28 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v28 == -1) - 1; } if ( Buf[i] != (_BYTE)v28 ) goto LABEL_182; v30 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) goto LABEL_53; (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); LABEL_54: a2 = -1; } } if ( !v104 ) goto LABEL_107; if ( v120 > 1 ) { LABEL_198: first_not_of = std::string::find_first_not_of((int *)&v119, 48, 0); if ( first_not_of ) { v71 = v120; if ( first_not_of != -1 ) goto LABEL_200; first_not_of = v120 - 1; if ( !v120 ) { *(_BYTE *)v119 = 0; goto LABEL_165; } if ( v120 != 1 ) { LABEL_200: if ( v120 > first_not_of ) v71 = first_not_of; std::string::_M_erase((int *)&v119, 0, v71); } } } LABEL_165: if ( v96 && *(_BYTE *)v119 != 48 ) std::string::_M_replace_aux(&v119, 0, 0, 1u, 45); v61 = v117; if ( v117 ) { v108 = v100; if ( v97 ) v108 = v89; v62 = v116; if ( v116 == v118 ) v63 = 15; else v63 = v118[0]; if ( v117 + 1 > v63 ) { std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); v62 = v116; } v62[v61] = v108; v117 = v61 + 1; *((_BYTE *)v116 + v61 + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v101 + 8), *(_DWORD *)(v101 + 12), (int)&v116) ) *a6 |= 4u; } v105 = a2 == -1; v29 = (a1 != 0) & v105; if ( v97 && *(_DWORD *)(v101 + 44) != v100 ) goto LABEL_108; std::string::swap(a7, &v119); if ( !v29 ) goto LABEL_109; LABEL_180: v105 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); v105 = v64 != -1 ? 0 : v29; a1 &= (v64 == -1) - 1; } goto LABEL_109; } while ( 1 ) { v34 = a2 == -1 && a1 != 0; if ( v34 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v77 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); v8 = (v77 == -1) - 1; a1 &= v8; v31 = v77 == -1 && v34; } else { v31 = 0; } } else { v31 = a2 == -1; } LOBYTE(v8) = a4 == -1; v90 = v8 & (a3 != 0); if ( v90 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) { v53 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); LOBYTE(v54) = v53 != -1; v8 = v54 - 1; LOBYTE(v8) = v90 & v8; a3 &= (v53 == -1) - 1; if ( (_BYTE)v8 == v31 ) goto LABEL_125; } else if ( (_BYTE)v8 == v31 ) { goto LABEL_125; } if ( a1 && a2 == -1 ) { v33 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) { v8 = v92[6]; if ( (*(_BYTE *)(v8 + 2 * *v33) & 0x20) == 0 ) { a2 = -1; v42 = v104 ^ 1; goto LABEL_126; } LABEL_63: *(_DWORD *)(a1 + 8) = v33 + 1; goto LABEL_64; } v32 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v32 == -1) - 1; } else { LOBYTE(v32) = a2; } v8 = v92[6]; if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v32) & 0x20) == 0 ) goto LABEL_125; v33 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) goto LABEL_63; (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); LABEL_64: a2 = -1; } case 2: if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) goto LABEL_89; v8 = v94 - 1; v42 = v94 == 1 || v93 > 1; if ( v42 ) goto LABEL_89; if ( v94 != 2 ) { v104 = 1; if ( v94 == 3 ) { if ( HIBYTE(v115) == 4 || HIBYTE(v115) == 3 && v95 ) goto LABEL_89; } else { LABEL_126: if ( v94 > 3 || v42 ) { v23 = v104 & (v93 > 1); goto LABEL_39; } } LABEL_128: ++v94; continue; } if ( !v95 && (_BYTE)v115 != 3 && BYTE2(v115) != 1 ) goto LABEL_128; LABEL_89: v43 = 0; v91 = *(_DWORD *)(v101 + 24); while ( 2 ) { v44 = a2 == -1 && a1 != 0; if ( v44 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v79 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v8); a1 &= (v79 == -1) - 1; v45 = v79 == -1 && v44; } else { v45 = 0; } } else { v45 = a2 == -1; } v8 = a3; if ( a3 && a4 == -1 ) { v8 = *(_DWORD *)(a3 + 12); if ( *(_DWORD *)(a3 + 8) >= v8 ) { v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; v45 ^= v60; a3 &= v60 - 1; } } else { v45 ^= a4 == -1; } v42 = v45 & (v43 < v91); if ( !v42 ) { if ( v43 != v91 ) goto LABEL_159; LABEL_187: v104 = 1; goto LABEL_126; } if ( !a1 || a2 != -1 ) { LOBYTE(v46) = a2; goto LABEL_99; } v47 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) { v46 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v46 == -1) - 1; LABEL_99: v8 = *(_DWORD *)(v101 + 20); if ( *(_BYTE *)(v8 + v43) != (_BYTE)v46 ) goto LABEL_159; v47 = *(_BYTE **)(a1 + 8); if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v47 ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_102; } LABEL_101: *(_DWORD *)(a1 + 8) = v47 + 1; LABEL_102: a2 = -1; ++v43; continue; } break; } v8 = *(_DWORD *)(v101 + 20); if ( *v47 == *(_BYTE *)(v8 + v43) ) goto LABEL_101; a2 = -1; LABEL_159: if ( !v43 ) { v104 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; goto LABEL_126; } LABEL_107: v105 = a2 == -1; v29 = (a1 != 0) & v105; LABEL_108: *a6 |= 4u; if ( v29 ) goto LABEL_180; LABEL_109: v50 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v50 = 0; if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) v50 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; } } if ( v50 == v105 ) *a6 |= 2u; if ( v119 != v121 ) operator delete(v119); if ( v116 != v118 ) operator delete(v116); return a1; case 3: if ( !*(_DWORD *)(v101 + 32) ) { v41 = v101; if ( !*(_DWORD *)(v101 + 40) ) { LABEL_81: v42 = v95; v8 = !v95; v104 = !v95; goto LABEL_126; } LABEL_190: LOBYTE(v41) = a2 == -1; v67 = v41; if ( !a1 || a2 != -1 ) { v68 = a2 == -1; goto LABEL_193; } LABEL_210: v68 = 1; v67 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); LOBYTE(v73) = v73 == -1; v67 = v73; a1 &= (unsigned __int8)v73 - 1; } LABEL_193: v69 = a4 == -1; v109 = v69 & (a3 != 0); if ( v109 ) { v69 = 0; if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) { v84 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); v69 = v84 != -1 ? 0 : v109; a3 &= (v84 == -1) - 1; } } v8 = v67; if ( (_BYTE)v67 == v69 ) { LABEL_195: if ( !*(_DWORD *)(v101 + 32) || *(_DWORD *)(v101 + 40) ) goto LABEL_81; goto LABEL_146; } if ( a1 && v68 ) { v81 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v81 < *(_DWORD *)(a1 + 12) ) { v8 = *(_DWORD *)(v101 + 36); if ( *(_BYTE *)v8 != *v81 ) goto LABEL_195; v93 = *(_DWORD *)(v101 + 40); goto LABEL_244; } v82 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v82 == -1) - 1; } else { LOBYTE(v82) = a2; } v8 = *(_DWORD *)(v101 + 36); if ( *(_BYTE *)v8 != (_BYTE)v82 ) goto LABEL_195; v93 = *(_DWORD *)(v101 + 40); v81 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v81 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_245; } LABEL_244: *(_DWORD *)(a1 + 8) = v81 + 1; LABEL_245: a2 = -1; v42 = 0; v104 = 1; v96 = 1; goto LABEL_126; } v57 = a2 == -1 && a1 != 0; if ( v57 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v85 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v85 == -1) - 1; v58 = v85 == -1 && v57; } else { v58 = 0; } } else { v58 = a2 == -1; } v8 = a3; v59 = a4 == -1; LOBYTE(v8) = v59 & (a3 != 0); v107 = v8; if ( (_BYTE)v8 ) { v8 = a3; v59 = 0; if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) { v83 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); v59 = v83 != -1 ? 0 : v107; v8 = (v83 == -1) - 1; a3 &= v8; } } if ( v59 == v58 ) goto LABEL_144; if ( a1 && a2 == -1 ) { v72 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v72 < *(_DWORD *)(a1 + 12) ) { v8 = **(unsigned __int8 **)(v101 + 28); if ( *v72 != (_BYTE)v8 ) { if ( *(_DWORD *)(v101 + 40) ) goto LABEL_210; goto LABEL_145; } v93 = *(_DWORD *)(v101 + 32); goto LABEL_237; } v80 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); a1 &= (v80 == -1) - 1; } else { LOBYTE(v80) = a2; } v8 = *(_DWORD *)(v101 + 28); if ( *(_BYTE *)v8 != (_BYTE)v80 ) { LABEL_144: v41 = v101; if ( *(_DWORD *)(v101 + 40) ) goto LABEL_190; LABEL_145: if ( !*(_DWORD *)(v101 + 32) ) goto LABEL_81; LABEL_146: v104 = 1; v42 = 0; v96 = 1; goto LABEL_126; } v93 = *(_DWORD *)(v101 + 32); v72 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_238; } LABEL_237: *(_DWORD *)(a1 + 8) = v72 + 1; LABEL_238: a2 = -1; v42 = 0; goto LABEL_187; case 4: while ( 2 ) { v14 = a2 == -1 && a1 != 0; if ( v14 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); v8 = (v65 == -1) - 1; a1 &= v8; v15 = v65 == -1 && v14; } else { v15 = 0; } } else { v15 = a2 == -1; } LOBYTE(v8) = a4 == -1; v103 = v8 & (a3 != 0); if ( v103 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) { v48 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); LOBYTE(v49) = v48 != -1; v8 = v49 - 1; LOBYTE(v8) = v103 & v8; a3 &= (v48 == -1) - 1; if ( v15 == (_BYTE)v8 ) goto LABEL_105; } else if ( v15 == (_BYTE)v8 ) { goto LABEL_105; } if ( a1 && a2 == -1 ) { v52 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ) { v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); v16 = v66 != -1 ? v66 : -1; a1 &= (v66 == -1) - 1; } else { v16 = *v52; } } else { v16 = a2; } v17 = memchr((const void *)(v101 + 57), (char)v16, 0xAu); if ( v17 ) { v10 = v120; v11 = v120 + 1; v112 = v17[(_DWORD)std::money_base::_S_atoms - 56 - v101]; v12 = v119; if ( v119 == v121 ) v8 = 15; else v8 = v121[0]; if ( v11 > v8 ) { std::string::_M_mutate((int)&v119, v120, 0, 0, 1u); v12 = v119; } ++v100; v12[v10] = v112; v120 = v11; *((_BYTE *)v119 + v10 + 1) = 0; LABEL_14: v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) { LABEL_15: *(_DWORD *)(a1 + 8) = v13 + 1; LABEL_16: a2 = -1; continue; } LABEL_35: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_16; } break; } v104 = v97 | (*(_BYTE *)(v101 + 17) != v16); if ( !v104 ) { if ( *(int *)(v101 + 44) > 0 ) { v55 = v100; v97 = 1; v100 = 0; v89 = v55; goto LABEL_14; } v97 = 0; LABEL_105: v104 = 1; LABEL_106: if ( !v120 ) goto LABEL_107; goto LABEL_125; } v18 = *(_BYTE *)(v101 + 16); if ( !v18 ) goto LABEL_106; if ( *(_BYTE *)(v101 + 18) == v16 ) { if ( !v97 ) { if ( v100 ) { v113 = v100; v19 = v117; v20 = v116; v21 = v117 + 1; if ( v116 == v118 ) v22 = 15; else v22 = v118[0]; if ( v21 > v22 ) { std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); v20 = v116; } v8 = (unsigned __int8)v100; v100 = 0; v20[v19] = v113; v117 = v21; *((_BYTE *)v116 + v19 + 1) = 0; v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) goto LABEL_15; goto LABEL_35; } v104 = 0; goto LABEL_106; } v18 = v97; } v104 = v18; if ( !v120 ) goto LABEL_107; LABEL_125: v42 = v104 ^ 1; goto LABEL_126; default: v104 = 1; v42 = 0; goto LABEL_126; } } } // 4577A7: variable 'v87' is possibly undefined // 457833: variable 'v88' is possibly undefined // 457060: variable 'v49' is possibly undefined // 4571D0: variable 'v54' is possibly undefined // 45796D: variable 'v8' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4E958C: using guessed type int std::moneypunct::id; // 4F66D4: using guessed type int (*off_4F66D4)(); //----- (00457CC0) -------------------------------------------------------- int __thiscall std::money_get>::get( void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6) { return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); } //----- (00457CD0) -------------------------------------------------------- int __thiscall std::money_get>::get( void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6) { return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); } //----- (00457CE0) -------------------------------------------------------- unsigned int __stdcall std::money_get>::do_get( unsigned int a1, int a2, unsigned int a3, int a4, char a5, int a6, _DWORD *a7, int *a8) { unsigned int v8; // eax unsigned int v9; // esi char *v10; // ebx char v12; // al void (__thiscall *v13)(_BYTE *, char *, char *, void *); // eax void *v14; // [esp+20h] [ebp-48h] char *v15; // [esp+24h] [ebp-44h] _BYTE *v16; // [esp+28h] [ebp-40h] _DWORD *Size; // [esp+2Ch] [ebp-3Ch] void *Src; // [esp+38h] [ebp-30h] BYREF _DWORD *v19; // [esp+3Ch] [ebp-2Ch] char v20[40]; // [esp+40h] [ebp-28h] BYREF v20[0] = 0; v16 = std::use_facet>(a6 + 108); Src = v20; v19 = 0; if ( a5 ) v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &Src); else v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &Src); v9 = v8; Size = v19; if ( !v19 ) goto LABEL_4; std::string::resize(a8, v19, 0); v10 = (char *)Src; v15 = (char *)Size + (_DWORD)Src; v12 = v16[28]; v14 = (void *)*a8; if ( v12 != 1 ) { if ( !v12 ) std::ctype::_M_widen_init((int)v16); v13 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v16 + 28); if ( (char *)v13 == (char *)std::ctype::do_widen ) { if ( v15 != v10 ) { memcpy(v14, v10, (size_t)Size); v10 = (char *)Src; goto LABEL_5; } } else { v13(v16, v10, v15, v14); } LABEL_4: v10 = (char *)Src; goto LABEL_5; } if ( v15 != Src ) { memcpy((void *)*a8, Src, (size_t)Size); v10 = (char *)Src; } LABEL_5: if ( v10 != v20 ) operator delete(v10); return v9; } //----- (00457E80) -------------------------------------------------------- unsigned int __stdcall std::money_get>::do_get( std::locale::facet *a1, int a2, unsigned int a3, int a4, char a5, int a6, _DWORD *a7, long double *a8) { unsigned int v8; // eax unsigned int v9; // esi char *String[2]; // [esp+28h] [ebp-30h] BYREF char v12[40]; // [esp+30h] [ebp-28h] BYREF String[0] = v12; String[1] = 0; v12[0] = 0; if ( a5 ) v8 = std::money_get>::_M_extract( (unsigned int)a1, a2, a3, a4, a6, a7, String); else v8 = std::money_get>::_M_extract( (unsigned int)a1, a2, a3, a4, a6, a7, String); v9 = v8; std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String[0], a8, a7); if ( String[0] != v12 ) operator delete(String[0]); return v9; } //----- (00457F50) -------------------------------------------------------- unsigned int __stdcall std::money_get>::_M_extract( unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7) { int v8; // esi unsigned int v9; // edx size_t v10; // esi size_t v11; // edi _BYTE *v12; // eax unsigned int v13; // eax bool v14; // si char v15; // si wchar_t v16; // si wchar_t *v17; // eax char v18; // al size_t v19; // esi _BYTE *v20; // eax size_t v21; // edi char v22; // al int v23; // eax unsigned int i; // esi char v25; // dl __int16 v26; // ax unsigned int v27; // eax char v28; // di __int16 *v29; // eax __int16 v30; // ax char v31; // si unsigned __int16 v32; // ax unsigned int v33; // eax bool v34; // si _WORD *v35; // eax __int16 v36; // ax bool v37; // di char v38; // di char v39; // al unsigned __int16 v40; // ax unsigned int v41; // eax char v42; // al unsigned int v43; // edi bool v44; // si bool v45; // al unsigned int v46; // eax bool v47; // si __int16 *v48; // eax __int16 v49; // dx __int16 *v50; // eax __int16 v51; // ax int v52; // eax char v53; // si int v54; // edx __int16 *v56; // eax __int16 v57; // ax wchar_t *v58; // eax unsigned int v59; // edx __int16 *v60; // eax __int16 v61; // ax _WORD *v62; // eax char v63; // al bool v64; // si char v65; // si char v66; // al __int16 *v67; // eax __int16 v68; // ax size_t v69; // esi _BYTE *v70; // eax size_t v71; // edx __int16 *v72; // eax __int16 v73; // dx __int16 *v74; // eax __int16 *v75; // eax __int16 v76; // dx char v77; // al __int16 *v78; // eax __int16 v79; // ax __int16 *v80; // eax __int16 v81; // ax bool v82; // si char v83; // si char v84; // al unsigned int first_not_of; // eax __int16 *v86; // eax __int16 v87; // dx __int16 *v88; // eax __int16 v89; // ax _DWORD *v90; // eax std::locale::_Impl *v91; // edi __int16 *v92; // eax __int16 v93; // dx __int16 *v94; // eax __int16 v95; // dx _WORD *v96; // eax __int16 v97; // ax unsigned int v98; // eax __int16 *v99; // eax __int16 v100; // ax unsigned int v101; // eax _WORD *v102; // eax __int16 *v103; // eax __int16 v104; // dx __int16 *v105; // eax __int16 v106; // dx void (__cdecl *v107)(void *); // [esp+4h] [ebp-A4h] unsigned int v108; // [esp+8h] [ebp-A0h] char v109; // [esp+18h] [ebp-90h] unsigned int v110; // [esp+20h] [ebp-88h] void *v111; // [esp+24h] [ebp-84h] unsigned int v112; // [esp+28h] [ebp-80h] int v113; // [esp+30h] [ebp-78h] int v114; // [esp+30h] [ebp-78h] bool v115; // [esp+34h] [ebp-74h] char v116; // [esp+35h] [ebp-73h] char v117; // [esp+36h] [ebp-72h] bool v118; // [esp+36h] [ebp-72h] char v119; // [esp+37h] [ebp-71h] char S; // [esp+38h] [ebp-70h] int *v121; // [esp+3Ch] [ebp-6Ch] char v122; // [esp+3Ch] [ebp-6Ch] char v123; // [esp+3Ch] [ebp-6Ch] char v124; // [esp+3Ch] [ebp-6Ch] char v125; // [esp+3Ch] [ebp-6Ch] char v126; // [esp+3Ch] [ebp-6Ch] char v127; // [esp+3Ch] [ebp-6Ch] char v128; // [esp+3Ch] [ebp-6Ch] int v129; // [esp+40h] [ebp-68h] int v130; // [esp+44h] [ebp-64h] char v132; // [esp+4Ch] [ebp-5Ch] char v134; // [esp+4Eh] [ebp-5Ah] char v135; // [esp+4Eh] [ebp-5Ah] char v136; // [esp+5Bh] [ebp-4Dh] BYREF int v137; // [esp+5Ch] [ebp-4Ch] void *v138; // [esp+60h] [ebp-48h] BYREF size_t v139; // [esp+64h] [ebp-44h] int v140[4]; // [esp+68h] [ebp-40h] BYREF void *v141; // [esp+78h] [ebp-30h] BYREF size_t v142; // [esp+7Ch] [ebp-2Ch] int v143[10]; // [esp+80h] [ebp-28h] BYREF v111 = std::use_facet>(a5 + 108); v8 = std::locale::id::_M_id(&std::moneypunct::id); v121 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v8); v130 = *v121; if ( !*v121 ) { v90 = operator new((struct type_info *)0x54, v107); v90[1] = 0; v91 = (std::locale::_Impl *)v90; *v90 = &off_4F66E4; v90[2] = 0; v90[3] = 0; *((_BYTE *)v90 + 16) = 0; *(_DWORD *)((char *)v90 + 18) = 0; v90[6] = 0; v90[7] = 0; v90[8] = 0; v90[9] = 0; v90[10] = 0; v90[11] = 0; v90[12] = 0; v90[13] = 0; v90[14] = 0; *((_BYTE *)v90 + 82) = 0; std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v91, (const std::locale::facet *)v8, v108); v130 = *v121; } if ( *(_DWORD *)(v130 + 36) ) v115 = *(_DWORD *)(v130 + 44) != 0; else v115 = 0; v139 = 0; v138 = v140; LOBYTE(v140[0]) = 0; if ( *(_BYTE *)(v130 + 16) ) std::string::reserve(&v138, 0x20u); v141 = v143; v142 = 0; LOBYTE(v143[0]) = 0; std::string::reserve(&v141, 0x20u); v119 = 0; v113 = 1; v116 = 0; v137 = *(_DWORD *)(v130 + 56); v129 = 0; v109 = 0; v112 = 0; while ( 2 ) { switch ( *(&v136 + v113) ) { case 0: v123 = 1; goto LABEL_37; case 1: v37 = a2 == -1 && a1 != 0; if ( v37 ) { v94 = *(__int16 **)(a1 + 8); if ( (unsigned int)v94 >= *(_DWORD *)(a1 + 12) ) v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v95 = *v94; a1 &= (v95 == -1) - 1; v38 = v95 == -1 && v37; } else { v38 = a2 == -1; } v9 = a3; v39 = a4 == -1; v126 = v39 & (a3 != 0); if ( v126 ) { v92 = *(__int16 **)(a3 + 8); if ( (unsigned int)v92 >= *(_DWORD *)(a3 + 12) ) v93 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v93 = *v92; v39 = v93 != -1 ? 0 : v126; v9 = (v93 == -1) - 1; a3 &= v9; } v123 = 0; if ( v39 != v38 ) { if ( a1 && a2 == -1 ) { v102 = *(_WORD **)(a1 + 8); v40 = (unsigned int)v102 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) : *v102; a1 &= (v40 == 0xFFFF) - 1; } else { v40 = a2; } v123 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v40); if ( v123 ) { v41 = *(_DWORD *)(a1 + 8); if ( v41 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v41 + 2; a2 = -1; } } LABEL_37: if ( v113 == 4 ) { v22 = v123 & (v112 > 1); goto LABEL_39; } while ( 1 ) { v34 = a2 == -1 && a1 != 0; if ( v34 ) { v35 = *(_WORD **)(a1 + 8); v36 = (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) : *v35; v9 = (v36 == -1) - 1; a1 &= v9; v31 = v36 == -1 && v34; } else { v31 = a2 == -1; } LOBYTE(v9) = a4 == -1; v117 = v9 & (a3 != 0); if ( v117 ) { v59 = a3; v60 = *(__int16 **)(a3 + 8); if ( (unsigned int)v60 >= *(_DWORD *)(a3 + 12) ) v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v61 = *v60; LOBYTE(v59) = v61 != -1; v9 = v59 - 1; LOBYTE(v9) = v117 & v9; a3 &= (v61 == -1) - 1; if ( v31 == (_BYTE)v9 ) goto LABEL_133; } else if ( v31 == (_BYTE)v9 ) { goto LABEL_133; } if ( a1 && a2 == -1 ) { v62 = *(_WORD **)(a1 + 8); v32 = (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) : *v62; a1 &= (v32 == 0xFFFF) - 1; } else { v32 = a2; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v32) ) goto LABEL_133; v33 = *(_DWORD *)(a1 + 8); if ( v33 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v33 + 2; a2 = -1; } case 2: if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) goto LABEL_93; v9 = v113 - 1; v42 = v113 == 1 || v112 > 1; if ( v42 ) goto LABEL_93; if ( v113 == 2 ) { if ( v115 || (_BYTE)v137 == 3 || BYTE2(v137) == 1 ) { LABEL_93: v43 = 0; v110 = *(_DWORD *)(v130 + 28); while ( 1 ) { v47 = a2 == -1 && a1 != 0; if ( v47 ) { v48 = *(__int16 **)(a1 + 8); if ( (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ) v49 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v9); else v49 = *v48; a1 &= (v49 == -1) - 1; v44 = v49 == -1 && v47; } else { v44 = a2 == -1; } v9 = a3; v45 = a4 == -1; v118 = v45 && a3 != 0; if ( v118 ) { v75 = *(__int16 **)(a3 + 8); if ( (unsigned int)v75 >= *(_DWORD *)(a3 + 12) ) v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v76 = *v75; v77 = v44 ^ (v76 == -1 && v118); v9 = (v76 == -1) - 1; a3 &= v9; LOBYTE(v9) = v43 < v110; v42 = (v43 < v110) & v77; if ( !v42 ) { LABEL_181: if ( v43 == v110 ) goto LABEL_182; LABEL_186: if ( !v43 ) { v123 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; goto LABEL_134; } LABEL_112: v28 = a2 == -1; goto LABEL_113; } } else { LOBYTE(v9) = v43 < v110; v42 = (v43 < v110) & (v44 ^ v45); if ( !v42 ) goto LABEL_181; } if ( a1 && a2 == -1 ) { v78 = *(__int16 **)(a1 + 8); if ( (unsigned int)v78 >= *(_DWORD *)(a1 + 12) ) v79 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v79 = *v78; a1 &= (v79 == -1) - 1; v9 = *(_DWORD *)(v130 + 24); if ( *(_WORD *)(v9 + 2 * v43) != v79 ) goto LABEL_186; } else { v9 = *(_DWORD *)(v130 + 24); if ( *(_WORD *)(v9 + 2 * v43) != a2 ) goto LABEL_186; } v46 = *(_DWORD *)(a1 + 8); if ( v46 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v46 + 2; ++v43; a2 = -1; } } LABEL_136: ++v113; continue; } v123 = 1; if ( v113 == 3 ) { if ( HIBYTE(v137) == 4 || HIBYTE(v137) == 3 && v115 ) goto LABEL_93; goto LABEL_136; } LABEL_134: if ( v113 <= 3 && !v42 ) goto LABEL_136; v22 = v123 & (v112 > 1); LABEL_39: if ( v22 ) { if ( v116 ) v23 = *(_DWORD *)(v130 + 40); else v23 = *(_DWORD *)(v130 + 32); v114 = v23; for ( i = 1; ; ++i ) { v28 = a2 == -1; v125 = v28 & (a1 != 0); if ( v125 ) { v29 = *(__int16 **)(a1 + 8); if ( (unsigned int)v29 >= *(_DWORD *)(a1 + 12) ) v30 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v30 = *v29; a1 &= (v30 == -1) - 1; v124 = v30 != -1 ? 0 : v125; } else { v124 = a2 == -1; } v25 = a4 == -1; S = v25 & (a3 != 0); if ( S ) { v67 = *(__int16 **)(a3 + 8); if ( (unsigned int)v67 >= *(_DWORD *)(a3 + 12) ) v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v68 = *v67; v25 = v68 != -1 ? 0 : S; a3 &= (v68 == -1) - 1; if ( i >= v112 ) { LABEL_155: if ( i == v112 ) { if ( v142 <= 1 ) goto LABEL_157; goto LABEL_204; } goto LABEL_113; } } else if ( i >= v112 ) { goto LABEL_155; } if ( v25 == v124 ) goto LABEL_155; if ( a1 && a2 == -1 ) { v74 = *(__int16 **)(a1 + 8); if ( (unsigned int)v74 >= *(_DWORD *)(a1 + 12) ) v26 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v26 = *v74; a1 &= (v26 == -1) - 1; } else { v26 = a2; } if ( *(_WORD *)(v114 + 2 * i) != v26 ) goto LABEL_113; v27 = *(_DWORD *)(a1 + 8); if ( v27 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v27 + 2; a2 = -1; } } if ( !v123 ) goto LABEL_112; if ( v142 <= 1 ) goto LABEL_157; LABEL_204: first_not_of = std::string::find_first_not_of((int *)&v141, 48, 0); if ( first_not_of ) { if ( first_not_of != -1 ) goto LABEL_206; first_not_of = v142 - 1; if ( !v142 ) { *(_BYTE *)v141 = 0; goto LABEL_157; } if ( v142 != 1 ) { LABEL_206: if ( first_not_of > v142 ) first_not_of = v142; std::string::_M_erase((int *)&v141, 0, first_not_of); } } LABEL_157: if ( v116 && *(_BYTE *)v141 != 48 ) std::string::_M_replace_aux(&v141, 0, 0, 1u, 45); v69 = v139; if ( v139 ) { v132 = v129; if ( v119 ) v132 = v109; v70 = v138; if ( v138 == v140 ) v71 = 15; else v71 = v140[0]; if ( v139 + 1 > v71 ) { std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); v70 = v138; } v70[v69] = v132; v139 = v69 + 1; *((_BYTE *)v138 + v69 + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v130 + 8), *(_DWORD *)(v130 + 12), (int)&v138) ) *a6 |= 4u; } v28 = a2 == -1; if ( v119 && *(_DWORD *)(v130 + 48) != v129 ) { LABEL_113: v52 = (int)a6; *a6 |= 4u; v53 = v28 & (a1 != 0); if ( v53 ) goto LABEL_172; } else { v52 = (int)std::string::swap(a7, &v141); v53 = v28 & (a1 != 0); if ( v53 ) { LABEL_172: v72 = *(__int16 **)(a1 + 8); if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v73 = *v72; v28 = v73 != -1 ? 0 : v53; v52 = (v73 == -1) - 1; a1 &= v52; } } LOBYTE(v52) = a4 == -1; v54 = v52; if ( a3 && a4 == -1 ) { v80 = *(__int16 **)(a3 + 8); if ( (unsigned int)v80 >= *(_DWORD *)(a3 + 12) ) v81 = (*(int (__fastcall **)(unsigned int, int))(*(_DWORD *)a3 + 36))(a3, v54); else v81 = *v80; LOBYTE(v54) = v81 == -1; } if ( v28 == (_BYTE)v54 ) *a6 |= 2u; if ( v141 != v143 ) operator delete(v141); if ( v138 != v140 ) operator delete(v138); return a1; case 3: if ( *(_DWORD *)(v130 + 36) ) { v64 = a2 == -1 && a1 != 0; if ( v64 ) { v86 = *(__int16 **)(a1 + 8); if ( (unsigned int)v86 >= *(_DWORD *)(a1 + 12) ) v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v87 = *v86; a1 &= (v87 == -1) - 1; v65 = v87 == -1 && v64; } else { v65 = a2 == -1; } v66 = a4 == -1; v127 = v66 & (a3 != 0); if ( v127 ) { v103 = *(__int16 **)(a3 + 8); if ( (unsigned int)v103 >= *(_DWORD *)(a3 + 12) ) v104 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v104 = *v103; v66 = v104 != -1 ? 0 : v127; a3 &= (v104 == -1) - 1; } if ( v66 != v65 ) { if ( a1 && a2 == -1 ) { v96 = *(_WORD **)(a1 + 8); v97 = (unsigned int)v96 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) : *v96; a1 &= (v97 == -1) - 1; } else { v97 = a2; } v9 = *(_DWORD *)(v130 + 32); if ( *(_WORD *)v9 == v97 ) { v112 = *(_DWORD *)(v130 + 36); v98 = *(_DWORD *)(a1 + 8); if ( v98 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v98 + 2; v42 = 0; a2 = -1; LABEL_182: v123 = 1; goto LABEL_134; } } if ( !*(_DWORD *)(v130 + 44) ) { v9 = *(_DWORD *)(v130 + 36); if ( !v9 ) goto LABEL_85; LABEL_151: v123 = 1; v42 = 0; v116 = 1; goto LABEL_134; } } else if ( !*(_DWORD *)(v130 + 44) ) { goto LABEL_85; } v82 = a2 == -1 && a1 != 0; if ( v82 ) { v88 = *(__int16 **)(a1 + 8); if ( (unsigned int)v88 >= *(_DWORD *)(a1 + 12) ) v89 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v89 = *v88; a1 &= (v89 == -1) - 1; v83 = v89 == -1 && v82; } else { v83 = a2 == -1; } v9 = a3; v84 = a4 == -1; LOBYTE(v9) = v84 & (a3 != 0); v128 = v9; if ( (_BYTE)v9 ) { v105 = *(__int16 **)(a3 + 8); if ( (unsigned int)v105 >= *(_DWORD *)(a3 + 12) ) v106 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v106 = *v105; v84 = v106 != -1 ? 0 : v128; v9 = (v106 == -1) - 1; a3 &= v9; } if ( v83 == v84 || (!a1 || a2 != -1 ? (v100 = a2) : ((v99 = *(__int16 **)(a1 + 8), (unsigned int)v99 >= *(_DWORD *)(a1 + 12)) ? (v100 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1)) : (v100 = *v99), a1 &= (v100 == -1) - 1), v9 = *(_DWORD *)(v130 + 40), *(_WORD *)v9 != v100) ) { if ( !*(_DWORD *)(v130 + 36) || *(_DWORD *)(v130 + 44) ) { LABEL_85: v42 = v115; v123 = !v115; goto LABEL_134; } goto LABEL_151; } v112 = *(_DWORD *)(v130 + 44); v101 = *(_DWORD *)(a1 + 8); if ( v101 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v101 + 2; v9 = -1; v123 = 1; v42 = 0; a2 = -1; v116 = 1; goto LABEL_134; case 4: while ( 2 ) { v14 = a2 == -1 && a1 != 0; if ( v14 ) { v56 = *(__int16 **)(a1 + 8); if ( (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ) v57 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v57 = *v56; v9 = (v57 == -1) - 1; a1 &= v9; v15 = v57 == -1 && v14; } else { v15 = a2 == -1; } LOBYTE(v9) = a4 == -1; v122 = v9 & (a3 != 0); if ( v122 ) { v50 = *(__int16 **)(a3 + 8); if ( (unsigned int)v50 >= *(_DWORD *)(a3 + 12) ) v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v51 = *v50; LOBYTE(v9) = v51 != -1; --v9; LOBYTE(v9) = v122 & v9; a3 &= (v51 == -1) - 1; if ( v15 == (_BYTE)v9 ) goto LABEL_110; } else if ( v15 == (_BYTE)v9 ) { goto LABEL_110; } if ( a1 && a2 == -1 ) { v58 = *(wchar_t **)(a1 + 8); if ( (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ) v16 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v16 = *v58; a1 &= (v16 == 0xFFFF) - 1; } else { v16 = a2; } v17 = wmemchr((const wchar_t *)(v130 + 62), v16, 0xAu); if ( v17 ) { v10 = v142; v11 = v142 + 1; v134 = std::money_base::_S_atoms[((int)v17 - v130 - 60) >> 1]; v12 = v141; if ( v141 == v143 ) v9 = 15; else v9 = v143[0]; if ( v11 > v9 ) { std::string::_M_mutate((int)&v141, v142, 0, 0, 1u); v12 = v141; } ++v129; v12[v10] = v134; v142 = v11; *((_BYTE *)v141 + v10 + 1) = 0; LABEL_14: v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) { LABEL_15: *(_DWORD *)(a1 + 8) = v13 + 2; LABEL_16: a2 = -1; continue; } LABEL_35: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_16; } break; } v123 = v119 | (*(_WORD *)(v130 + 18) != v16); if ( !v123 ) { if ( *(int *)(v130 + 48) > 0 ) { v63 = v129; v119 = 1; v129 = 0; v109 = v63; goto LABEL_14; } v119 = 0; LABEL_110: v123 = 1; goto LABEL_111; } v18 = *(_BYTE *)(v130 + 16); if ( v18 ) { if ( *(_WORD *)(v130 + 20) != v16 ) goto LABEL_216; if ( v119 ) { v18 = v119; LABEL_216: v123 = v18; if ( !v142 ) goto LABEL_112; goto LABEL_133; } if ( v129 ) { v135 = v129; v19 = v139; v20 = v138; v21 = v139 + 1; if ( v138 == v140 ) v9 = 15; else v9 = v140[0]; if ( v21 > v9 ) { std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); v20 = v138; } v129 = 0; v20[v19] = v135; v139 = v21; *((_BYTE *)v138 + v19 + 1) = 0; v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) goto LABEL_15; goto LABEL_35; } v123 = 0; } LABEL_111: if ( !v142 ) goto LABEL_112; LABEL_133: v42 = v123 ^ 1; goto LABEL_134; default: v123 = 1; v42 = 0; goto LABEL_134; } } } // 458CC7: variable 'v107' is possibly undefined // 458D54: variable 'v108' is possibly undefined // 4585C9: variable 'v9' is possibly undefined // 458779: variable 'v59' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4E9590: using guessed type int std::moneypunct::id; // 4F66E4: using guessed type int (*off_4F66E4)(); //----- (00459190) -------------------------------------------------------- unsigned int __stdcall std::money_get>::_M_extract( unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7) { int v8; // esi unsigned int v9; // edx size_t v10; // esi size_t v11; // edi _BYTE *v12; // eax unsigned int v13; // eax bool v14; // si char v15; // si wchar_t v16; // si wchar_t *v17; // eax char v18; // al size_t v19; // esi _BYTE *v20; // eax size_t v21; // edi char v22; // al int v23; // eax unsigned int i; // esi char v25; // dl __int16 v26; // ax unsigned int v27; // eax char v28; // di __int16 *v29; // eax __int16 v30; // ax char v31; // si unsigned __int16 v32; // ax unsigned int v33; // eax bool v34; // si _WORD *v35; // eax __int16 v36; // ax bool v37; // di char v38; // di char v39; // al unsigned __int16 v40; // ax unsigned int v41; // eax char v42; // al unsigned int v43; // edi bool v44; // si bool v45; // al unsigned int v46; // eax bool v47; // si __int16 *v48; // eax __int16 v49; // dx __int16 *v50; // eax __int16 v51; // ax int v52; // eax char v53; // si int v54; // edx __int16 *v56; // eax __int16 v57; // ax wchar_t *v58; // eax unsigned int v59; // edx __int16 *v60; // eax __int16 v61; // ax _WORD *v62; // eax char v63; // al bool v64; // si char v65; // si char v66; // al __int16 *v67; // eax __int16 v68; // ax size_t v69; // esi _BYTE *v70; // eax size_t v71; // edx __int16 *v72; // eax __int16 v73; // dx __int16 *v74; // eax __int16 *v75; // eax __int16 v76; // dx char v77; // al __int16 *v78; // eax __int16 v79; // ax __int16 *v80; // eax __int16 v81; // ax bool v82; // si char v83; // si char v84; // al unsigned int first_not_of; // eax __int16 *v86; // eax __int16 v87; // dx __int16 *v88; // eax __int16 v89; // ax _DWORD *v90; // eax std::locale::_Impl *v91; // edi __int16 *v92; // eax __int16 v93; // dx __int16 *v94; // eax __int16 v95; // dx _WORD *v96; // eax __int16 v97; // ax unsigned int v98; // eax __int16 *v99; // eax __int16 v100; // ax unsigned int v101; // eax _WORD *v102; // eax __int16 *v103; // eax __int16 v104; // dx __int16 *v105; // eax __int16 v106; // dx void (__cdecl *v107)(void *); // [esp+4h] [ebp-A4h] unsigned int v108; // [esp+8h] [ebp-A0h] char v109; // [esp+18h] [ebp-90h] unsigned int v110; // [esp+20h] [ebp-88h] void *v111; // [esp+24h] [ebp-84h] unsigned int v112; // [esp+28h] [ebp-80h] int v113; // [esp+30h] [ebp-78h] int v114; // [esp+30h] [ebp-78h] bool v115; // [esp+34h] [ebp-74h] char v116; // [esp+35h] [ebp-73h] char v117; // [esp+36h] [ebp-72h] bool v118; // [esp+36h] [ebp-72h] char v119; // [esp+37h] [ebp-71h] char S; // [esp+38h] [ebp-70h] int *v121; // [esp+3Ch] [ebp-6Ch] char v122; // [esp+3Ch] [ebp-6Ch] char v123; // [esp+3Ch] [ebp-6Ch] char v124; // [esp+3Ch] [ebp-6Ch] char v125; // [esp+3Ch] [ebp-6Ch] char v126; // [esp+3Ch] [ebp-6Ch] char v127; // [esp+3Ch] [ebp-6Ch] char v128; // [esp+3Ch] [ebp-6Ch] int v129; // [esp+40h] [ebp-68h] int v130; // [esp+44h] [ebp-64h] char v132; // [esp+4Ch] [ebp-5Ch] char v134; // [esp+4Eh] [ebp-5Ah] char v135; // [esp+4Eh] [ebp-5Ah] char v136; // [esp+5Bh] [ebp-4Dh] BYREF int v137; // [esp+5Ch] [ebp-4Ch] void *v138; // [esp+60h] [ebp-48h] BYREF size_t v139; // [esp+64h] [ebp-44h] int v140[4]; // [esp+68h] [ebp-40h] BYREF void *v141; // [esp+78h] [ebp-30h] BYREF size_t v142; // [esp+7Ch] [ebp-2Ch] int v143[10]; // [esp+80h] [ebp-28h] BYREF v111 = std::use_facet>(a5 + 108); v8 = std::locale::id::_M_id(&std::moneypunct::id); v121 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v8); v130 = *v121; if ( !*v121 ) { v90 = operator new((struct type_info *)0x54, v107); v90[1] = 0; v91 = (std::locale::_Impl *)v90; *v90 = &off_4F66F4; v90[2] = 0; v90[3] = 0; *((_BYTE *)v90 + 16) = 0; *(_DWORD *)((char *)v90 + 18) = 0; v90[6] = 0; v90[7] = 0; v90[8] = 0; v90[9] = 0; v90[10] = 0; v90[11] = 0; v90[12] = 0; v90[13] = 0; v90[14] = 0; *((_BYTE *)v90 + 82) = 0; std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v91, (const std::locale::facet *)v8, v108); v130 = *v121; } if ( *(_DWORD *)(v130 + 36) ) v115 = *(_DWORD *)(v130 + 44) != 0; else v115 = 0; v139 = 0; v138 = v140; LOBYTE(v140[0]) = 0; if ( *(_BYTE *)(v130 + 16) ) std::string::reserve(&v138, 0x20u); v141 = v143; v142 = 0; LOBYTE(v143[0]) = 0; std::string::reserve(&v141, 0x20u); v119 = 0; v113 = 1; v116 = 0; v137 = *(_DWORD *)(v130 + 56); v129 = 0; v109 = 0; v112 = 0; while ( 2 ) { switch ( *(&v136 + v113) ) { case 0: v123 = 1; goto LABEL_37; case 1: v37 = a2 == -1 && a1 != 0; if ( v37 ) { v94 = *(__int16 **)(a1 + 8); if ( (unsigned int)v94 >= *(_DWORD *)(a1 + 12) ) v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v95 = *v94; a1 &= (v95 == -1) - 1; v38 = v95 == -1 && v37; } else { v38 = a2 == -1; } v9 = a3; v39 = a4 == -1; v126 = v39 & (a3 != 0); if ( v126 ) { v92 = *(__int16 **)(a3 + 8); if ( (unsigned int)v92 >= *(_DWORD *)(a3 + 12) ) v93 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v93 = *v92; v39 = v93 != -1 ? 0 : v126; v9 = (v93 == -1) - 1; a3 &= v9; } v123 = 0; if ( v39 != v38 ) { if ( a1 && a2 == -1 ) { v102 = *(_WORD **)(a1 + 8); v40 = (unsigned int)v102 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) : *v102; a1 &= (v40 == 0xFFFF) - 1; } else { v40 = a2; } v123 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v40); if ( v123 ) { v41 = *(_DWORD *)(a1 + 8); if ( v41 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v41 + 2; a2 = -1; } } LABEL_37: if ( v113 == 4 ) { v22 = v123 & (v112 > 1); goto LABEL_39; } while ( 1 ) { v34 = a2 == -1 && a1 != 0; if ( v34 ) { v35 = *(_WORD **)(a1 + 8); v36 = (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) : *v35; v9 = (v36 == -1) - 1; a1 &= v9; v31 = v36 == -1 && v34; } else { v31 = a2 == -1; } LOBYTE(v9) = a4 == -1; v117 = v9 & (a3 != 0); if ( v117 ) { v59 = a3; v60 = *(__int16 **)(a3 + 8); if ( (unsigned int)v60 >= *(_DWORD *)(a3 + 12) ) v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v61 = *v60; LOBYTE(v59) = v61 != -1; v9 = v59 - 1; LOBYTE(v9) = v117 & v9; a3 &= (v61 == -1) - 1; if ( v31 == (_BYTE)v9 ) goto LABEL_133; } else if ( v31 == (_BYTE)v9 ) { goto LABEL_133; } if ( a1 && a2 == -1 ) { v62 = *(_WORD **)(a1 + 8); v32 = (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) : *v62; a1 &= (v32 == 0xFFFF) - 1; } else { v32 = a2; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v32) ) goto LABEL_133; v33 = *(_DWORD *)(a1 + 8); if ( v33 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v33 + 2; a2 = -1; } case 2: if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) goto LABEL_93; v9 = v113 - 1; v42 = v113 == 1 || v112 > 1; if ( v42 ) goto LABEL_93; if ( v113 == 2 ) { if ( v115 || (_BYTE)v137 == 3 || BYTE2(v137) == 1 ) { LABEL_93: v43 = 0; v110 = *(_DWORD *)(v130 + 28); while ( 1 ) { v47 = a2 == -1 && a1 != 0; if ( v47 ) { v48 = *(__int16 **)(a1 + 8); if ( (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ) v49 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v9); else v49 = *v48; a1 &= (v49 == -1) - 1; v44 = v49 == -1 && v47; } else { v44 = a2 == -1; } v9 = a3; v45 = a4 == -1; v118 = v45 && a3 != 0; if ( v118 ) { v75 = *(__int16 **)(a3 + 8); if ( (unsigned int)v75 >= *(_DWORD *)(a3 + 12) ) v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v76 = *v75; v77 = v44 ^ (v76 == -1 && v118); v9 = (v76 == -1) - 1; a3 &= v9; LOBYTE(v9) = v43 < v110; v42 = (v43 < v110) & v77; if ( !v42 ) { LABEL_181: if ( v43 == v110 ) goto LABEL_182; LABEL_186: if ( !v43 ) { v123 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; goto LABEL_134; } LABEL_112: v28 = a2 == -1; goto LABEL_113; } } else { LOBYTE(v9) = v43 < v110; v42 = (v43 < v110) & (v44 ^ v45); if ( !v42 ) goto LABEL_181; } if ( a1 && a2 == -1 ) { v78 = *(__int16 **)(a1 + 8); if ( (unsigned int)v78 >= *(_DWORD *)(a1 + 12) ) v79 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v79 = *v78; a1 &= (v79 == -1) - 1; v9 = *(_DWORD *)(v130 + 24); if ( *(_WORD *)(v9 + 2 * v43) != v79 ) goto LABEL_186; } else { v9 = *(_DWORD *)(v130 + 24); if ( *(_WORD *)(v9 + 2 * v43) != a2 ) goto LABEL_186; } v46 = *(_DWORD *)(a1 + 8); if ( v46 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v46 + 2; ++v43; a2 = -1; } } LABEL_136: ++v113; continue; } v123 = 1; if ( v113 == 3 ) { if ( HIBYTE(v137) == 4 || HIBYTE(v137) == 3 && v115 ) goto LABEL_93; goto LABEL_136; } LABEL_134: if ( v113 <= 3 && !v42 ) goto LABEL_136; v22 = v123 & (v112 > 1); LABEL_39: if ( v22 ) { if ( v116 ) v23 = *(_DWORD *)(v130 + 40); else v23 = *(_DWORD *)(v130 + 32); v114 = v23; for ( i = 1; ; ++i ) { v28 = a2 == -1; v125 = v28 & (a1 != 0); if ( v125 ) { v29 = *(__int16 **)(a1 + 8); if ( (unsigned int)v29 >= *(_DWORD *)(a1 + 12) ) v30 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v30 = *v29; a1 &= (v30 == -1) - 1; v124 = v30 != -1 ? 0 : v125; } else { v124 = a2 == -1; } v25 = a4 == -1; S = v25 & (a3 != 0); if ( S ) { v67 = *(__int16 **)(a3 + 8); if ( (unsigned int)v67 >= *(_DWORD *)(a3 + 12) ) v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v68 = *v67; v25 = v68 != -1 ? 0 : S; a3 &= (v68 == -1) - 1; if ( i >= v112 ) { LABEL_155: if ( i == v112 ) { if ( v142 <= 1 ) goto LABEL_157; goto LABEL_204; } goto LABEL_113; } } else if ( i >= v112 ) { goto LABEL_155; } if ( v25 == v124 ) goto LABEL_155; if ( a1 && a2 == -1 ) { v74 = *(__int16 **)(a1 + 8); if ( (unsigned int)v74 >= *(_DWORD *)(a1 + 12) ) v26 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v26 = *v74; a1 &= (v26 == -1) - 1; } else { v26 = a2; } if ( *(_WORD *)(v114 + 2 * i) != v26 ) goto LABEL_113; v27 = *(_DWORD *)(a1 + 8); if ( v27 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v27 + 2; a2 = -1; } } if ( !v123 ) goto LABEL_112; if ( v142 <= 1 ) goto LABEL_157; LABEL_204: first_not_of = std::string::find_first_not_of((int *)&v141, 48, 0); if ( first_not_of ) { if ( first_not_of != -1 ) goto LABEL_206; first_not_of = v142 - 1; if ( !v142 ) { *(_BYTE *)v141 = 0; goto LABEL_157; } if ( v142 != 1 ) { LABEL_206: if ( first_not_of > v142 ) first_not_of = v142; std::string::_M_erase((int *)&v141, 0, first_not_of); } } LABEL_157: if ( v116 && *(_BYTE *)v141 != 48 ) std::string::_M_replace_aux(&v141, 0, 0, 1u, 45); v69 = v139; if ( v139 ) { v132 = v129; if ( v119 ) v132 = v109; v70 = v138; if ( v138 == v140 ) v71 = 15; else v71 = v140[0]; if ( v139 + 1 > v71 ) { std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); v70 = v138; } v70[v69] = v132; v139 = v69 + 1; *((_BYTE *)v138 + v69 + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v130 + 8), *(_DWORD *)(v130 + 12), (int)&v138) ) *a6 |= 4u; } v28 = a2 == -1; if ( v119 && *(_DWORD *)(v130 + 48) != v129 ) { LABEL_113: v52 = (int)a6; *a6 |= 4u; v53 = v28 & (a1 != 0); if ( v53 ) goto LABEL_172; } else { v52 = (int)std::string::swap(a7, &v141); v53 = v28 & (a1 != 0); if ( v53 ) { LABEL_172: v72 = *(__int16 **)(a1 + 8); if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v73 = *v72; v28 = v73 != -1 ? 0 : v53; v52 = (v73 == -1) - 1; a1 &= v52; } } LOBYTE(v52) = a4 == -1; v54 = v52; if ( a3 && a4 == -1 ) { v80 = *(__int16 **)(a3 + 8); if ( (unsigned int)v80 >= *(_DWORD *)(a3 + 12) ) v81 = (*(int (__fastcall **)(unsigned int, int))(*(_DWORD *)a3 + 36))(a3, v54); else v81 = *v80; LOBYTE(v54) = v81 == -1; } if ( v28 == (_BYTE)v54 ) *a6 |= 2u; if ( v141 != v143 ) operator delete(v141); if ( v138 != v140 ) operator delete(v138); return a1; case 3: if ( *(_DWORD *)(v130 + 36) ) { v64 = a2 == -1 && a1 != 0; if ( v64 ) { v86 = *(__int16 **)(a1 + 8); if ( (unsigned int)v86 >= *(_DWORD *)(a1 + 12) ) v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v87 = *v86; a1 &= (v87 == -1) - 1; v65 = v87 == -1 && v64; } else { v65 = a2 == -1; } v66 = a4 == -1; v127 = v66 & (a3 != 0); if ( v127 ) { v103 = *(__int16 **)(a3 + 8); if ( (unsigned int)v103 >= *(_DWORD *)(a3 + 12) ) v104 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v104 = *v103; v66 = v104 != -1 ? 0 : v127; a3 &= (v104 == -1) - 1; } if ( v66 != v65 ) { if ( a1 && a2 == -1 ) { v96 = *(_WORD **)(a1 + 8); v97 = (unsigned int)v96 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) : *v96; a1 &= (v97 == -1) - 1; } else { v97 = a2; } v9 = *(_DWORD *)(v130 + 32); if ( *(_WORD *)v9 == v97 ) { v112 = *(_DWORD *)(v130 + 36); v98 = *(_DWORD *)(a1 + 8); if ( v98 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v98 + 2; v42 = 0; a2 = -1; LABEL_182: v123 = 1; goto LABEL_134; } } if ( !*(_DWORD *)(v130 + 44) ) { v9 = *(_DWORD *)(v130 + 36); if ( !v9 ) goto LABEL_85; LABEL_151: v123 = 1; v42 = 0; v116 = 1; goto LABEL_134; } } else if ( !*(_DWORD *)(v130 + 44) ) { goto LABEL_85; } v82 = a2 == -1 && a1 != 0; if ( v82 ) { v88 = *(__int16 **)(a1 + 8); if ( (unsigned int)v88 >= *(_DWORD *)(a1 + 12) ) v89 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v89 = *v88; a1 &= (v89 == -1) - 1; v83 = v89 == -1 && v82; } else { v83 = a2 == -1; } v9 = a3; v84 = a4 == -1; LOBYTE(v9) = v84 & (a3 != 0); v128 = v9; if ( (_BYTE)v9 ) { v105 = *(__int16 **)(a3 + 8); if ( (unsigned int)v105 >= *(_DWORD *)(a3 + 12) ) v106 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v106 = *v105; v84 = v106 != -1 ? 0 : v128; v9 = (v106 == -1) - 1; a3 &= v9; } if ( v83 == v84 || (!a1 || a2 != -1 ? (v100 = a2) : ((v99 = *(__int16 **)(a1 + 8), (unsigned int)v99 >= *(_DWORD *)(a1 + 12)) ? (v100 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1)) : (v100 = *v99), a1 &= (v100 == -1) - 1), v9 = *(_DWORD *)(v130 + 40), *(_WORD *)v9 != v100) ) { if ( !*(_DWORD *)(v130 + 36) || *(_DWORD *)(v130 + 44) ) { LABEL_85: v42 = v115; v123 = !v115; goto LABEL_134; } goto LABEL_151; } v112 = *(_DWORD *)(v130 + 44); v101 = *(_DWORD *)(a1 + 8); if ( v101 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v101 + 2; v9 = -1; v123 = 1; v42 = 0; a2 = -1; v116 = 1; goto LABEL_134; case 4: while ( 2 ) { v14 = a2 == -1 && a1 != 0; if ( v14 ) { v56 = *(__int16 **)(a1 + 8); if ( (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ) v57 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v57 = *v56; v9 = (v57 == -1) - 1; a1 &= v9; v15 = v57 == -1 && v14; } else { v15 = a2 == -1; } LOBYTE(v9) = a4 == -1; v122 = v9 & (a3 != 0); if ( v122 ) { v50 = *(__int16 **)(a3 + 8); if ( (unsigned int)v50 >= *(_DWORD *)(a3 + 12) ) v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); else v51 = *v50; LOBYTE(v9) = v51 != -1; --v9; LOBYTE(v9) = v122 & v9; a3 &= (v51 == -1) - 1; if ( v15 == (_BYTE)v9 ) goto LABEL_110; } else if ( v15 == (_BYTE)v9 ) { goto LABEL_110; } if ( a1 && a2 == -1 ) { v58 = *(wchar_t **)(a1 + 8); if ( (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ) v16 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); else v16 = *v58; a1 &= (v16 == 0xFFFF) - 1; } else { v16 = a2; } v17 = wmemchr((const wchar_t *)(v130 + 62), v16, 0xAu); if ( v17 ) { v10 = v142; v11 = v142 + 1; v134 = std::money_base::_S_atoms[((int)v17 - v130 - 60) >> 1]; v12 = v141; if ( v141 == v143 ) v9 = 15; else v9 = v143[0]; if ( v11 > v9 ) { std::string::_M_mutate((int)&v141, v142, 0, 0, 1u); v12 = v141; } ++v129; v12[v10] = v134; v142 = v11; *((_BYTE *)v141 + v10 + 1) = 0; LABEL_14: v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) { LABEL_15: *(_DWORD *)(a1 + 8) = v13 + 2; LABEL_16: a2 = -1; continue; } LABEL_35: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); goto LABEL_16; } break; } v123 = v119 | (*(_WORD *)(v130 + 18) != v16); if ( !v123 ) { if ( *(int *)(v130 + 48) > 0 ) { v63 = v129; v119 = 1; v129 = 0; v109 = v63; goto LABEL_14; } v119 = 0; LABEL_110: v123 = 1; goto LABEL_111; } v18 = *(_BYTE *)(v130 + 16); if ( v18 ) { if ( *(_WORD *)(v130 + 20) != v16 ) goto LABEL_216; if ( v119 ) { v18 = v119; LABEL_216: v123 = v18; if ( !v142 ) goto LABEL_112; goto LABEL_133; } if ( v129 ) { v135 = v129; v19 = v139; v20 = v138; v21 = v139 + 1; if ( v138 == v140 ) v9 = 15; else v9 = v140[0]; if ( v21 > v9 ) { std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); v20 = v138; } v129 = 0; v20[v19] = v135; v139 = v21; *((_BYTE *)v138 + v19 + 1) = 0; v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) goto LABEL_15; goto LABEL_35; } v123 = 0; } LABEL_111: if ( !v142 ) goto LABEL_112; LABEL_133: v42 = v123 ^ 1; goto LABEL_134; default: v123 = 1; v42 = 0; goto LABEL_134; } } } // 459F07: variable 'v107' is possibly undefined // 459F94: variable 'v108' is possibly undefined // 459809: variable 'v9' is possibly undefined // 4599B9: variable 'v59' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4E9594: using guessed type int std::moneypunct::id; // 4F66F4: using guessed type int (*off_4F66F4)(); //----- (0045A3D0) -------------------------------------------------------- int __thiscall std::money_get>::get( void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6) { return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); } //----- (0045A3E0) -------------------------------------------------------- int __thiscall std::money_get>::get( void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6) { return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); } //----- (0045A3F0) -------------------------------------------------------- unsigned int __stdcall std::money_get>::do_get( unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, char a5, int a6, _DWORD *a7, int *a8) { unsigned int v8; // eax unsigned int v9; // esi unsigned int v10; // edi void *v12; // [esp+20h] [ebp-48h] void *v13; // [esp+38h] [ebp-30h] BYREF unsigned int v14; // [esp+3Ch] [ebp-2Ch] char v15[40]; // [esp+40h] [ebp-28h] BYREF v15[0] = 0; v12 = std::use_facet>(a6 + 108); v13 = v15; v14 = 0; if ( a5 ) v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &v13); else v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &v13); v9 = v8; v10 = v14; if ( v14 ) { std::wstring::resize(a8, v14, 0); (*(void (__thiscall **)(void *, void *, char *, int))(*(_DWORD *)v12 + 44))(v12, v13, (char *)v13 + v10, *a8); } if ( v13 != v15 ) operator delete(v13); return v9; } //----- (0045A510) -------------------------------------------------------- unsigned int __stdcall std::money_get>::do_get( std::locale::facet *a1, __int16 a2, unsigned int a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8) { unsigned int v8; // eax unsigned int v9; // esi char *String[2]; // [esp+38h] [ebp-30h] BYREF char v12[40]; // [esp+40h] [ebp-28h] BYREF String[0] = v12; String[1] = 0; v12[0] = 0; if ( a5 ) v8 = std::money_get>::_M_extract( (unsigned int)a1, a2, a3, a4, a6, a7, String); else v8 = std::money_get>::_M_extract( (unsigned int)a1, a2, a3, a4, a6, a7, String); v9 = v8; std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String[0], a8, a7); if ( String[0] != v12 ) operator delete(String[0]); return v9; } //----- (0045A5F0) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6) { return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); } //----- (0045A610) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6) { return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); } //----- (0045A630) -------------------------------------------------------- int __stdcall std::money_put>::do_put( int a1, char a2, char a3, int a4, char a5, int a6) { if ( a3 ) return std::money_put>::_M_insert(a1, a2, a4, a5, a6); else return std::money_put>::_M_insert(a1, a2, a4, a5, a6); } //----- (0045A6A0) -------------------------------------------------------- int __thiscall std::money_put>::do_put( void *this, int a2, char a3, int a4, int a5, int a6, long double a7) { void *v7; // esp void *v8; // esp int v9; // eax int v10; // ebx int v11; // eax void *v12; // esp void *v13; // esp char v14; // al void (__thiscall *v15)(_BYTE *, void *, size_t, void *); // eax int v16; // eax int v17; // ebx char v19[52]; // [esp-30h] [ebp-A8h] BYREF const std::locale *v20; // [esp+4h] [ebp-74h] void *v21; // [esp+24h] [ebp-54h] size_t BufferCount; // [esp+28h] [ebp-50h] int v23; // [esp+2Ch] [ebp-4Ch] int v24; // [esp+30h] [ebp-48h] void *v25; // [esp+34h] [ebp-44h] _BYTE *v26; // [esp+38h] [ebp-40h] void *Src; // [esp+3Ch] [ebp-3Ch] _DWORD *v28; // [esp+44h] [ebp-34h] BYREF std::locale *v29[2]; // [esp+48h] [ebp-30h] BYREF char v30[40]; // [esp+50h] [ebp-28h] BYREF v25 = this; v24 = a4; v23 = a6; std::locale::locale((volatile signed __int32 **)&v28, (volatile signed __int32 **)(a5 + 108), v20); v26 = std::use_facet>((int)&v28); v7 = alloca(80); v8 = alloca(80); Src = v19; v29[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); v9 = std::__convert_from_v((int *const *)v29, v19, 0x40u, "%.*Lf", 0, a7); v10 = v9; if ( v9 > 63 ) { BufferCount = v9 + 1; v11 = 16 * ((unsigned int)(v9 + 28) >> 4); v12 = alloca(v11); v13 = alloca(v11); Src = v19; v29[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); v10 = std::__convert_from_v((int *const *)v29, v19, BufferCount, "%.*Lf", 0, a7); } v29[0] = (std::locale *)v30; std::string::_M_construct(v29, v10, 0); v21 = v29[0]; BufferCount = (size_t)Src + v10; v14 = v26[28]; if ( v14 == 1 ) goto LABEL_6; if ( v14 ) { v15 = *(void (__thiscall **)(_BYTE *, void *, size_t, void *))(*(_DWORD *)v26 + 28); if ( (char *)v15 == (char *)std::ctype::do_widen ) goto LABEL_6; LABEL_15: v15(v26, Src, BufferCount, v21); goto LABEL_8; } std::ctype::_M_widen_init((int)v26); v15 = *(void (__thiscall **)(_BYTE *, void *, size_t, void *))(*(_DWORD *)v26 + 28); if ( (char *)v15 != (char *)std::ctype::do_widen ) goto LABEL_15; LABEL_6: if ( (void *)BufferCount != Src ) memcpy(v21, Src, v10); LABEL_8: if ( (_BYTE)v24 ) v16 = std::money_put>::_M_insert(a2, a3, a5, v23, (int)v29); else v16 = std::money_put>::_M_insert(a2, a3, a5, v23, (int)v29); v17 = v16; if ( (char *)v29[0] != v30 ) operator delete(v29[0]); std::locale::~locale(&v28); return v17; } //----- (0045A8D0) -------------------------------------------------------- int __stdcall std::money_put>::_M_insert( int a1, char a2, int a3, char a4, int a5) { int v5; // ebx int *v6; // edi int v7; // esi char *v8; // ebx int v9; // ecx unsigned __int8 *v10; // ecx unsigned __int8 *v11; // eax size_t v12; // edi int v14; // eax _BYTE *v15; // eax unsigned int v16; // edi void **v17; // ebx size_t v18; // edi _BYTE *v19; // eax size_t v20; // edx char v21; // cl size_t v22; // edx size_t v23; // edx size_t v24; // edx int *v25; // eax _BYTE *v26; // eax unsigned int v27; // edx char *v28; // ebx std::locale::_Impl *v29; // eax std::locale::_Impl *v30; // esi void (__cdecl *v31)(void *); // [esp+4h] [ebp-B4h] unsigned int v32; // [esp+8h] [ebp-B0h] size_t v33; // [esp+8h] [ebp-B0h] char v34; // [esp+30h] [ebp-88h] size_t v35; // [esp+34h] [ebp-84h] char v36; // [esp+38h] [ebp-80h] bool v37; // [esp+3Ch] [ebp-7Ch] size_t v38; // [esp+3Ch] [ebp-7Ch] int v39; // [esp+40h] [ebp-78h] int v40; // [esp+40h] [ebp-78h] char *v41; // [esp+44h] [ebp-74h] unsigned int v42; // [esp+4Ch] [ebp-6Ch] _DWORD *v43; // [esp+50h] [ebp-68h] size_t v44; // [esp+50h] [ebp-68h] size_t v45; // [esp+50h] [ebp-68h] int v46; // [esp+6Ch] [ebp-4Ch] BYREF void *v47; // [esp+70h] [ebp-48h] BYREF size_t v48; // [esp+74h] [ebp-44h] int v49[4]; // [esp+78h] [ebp-40h] BYREF void *v50; // [esp+88h] [ebp-30h] BYREF size_t v51; // [esp+8Ch] [ebp-2Ch] int v52[10]; // [esp+90h] [ebp-28h] BYREF v43 = std::use_facet>(a3 + 108); v5 = std::locale::id::_M_id(&std::moneypunct::id); v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); v7 = *v6; if ( !*v6 ) { v29 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v31); *(_DWORD *)v29 = &off_4F66C4; v30 = v29; *((_WORD *)v29 + 8) = 0; *((_DWORD *)v29 + 1) = 0; *((_DWORD *)v29 + 2) = 0; *((_DWORD *)v29 + 3) = 0; *((_BYTE *)v29 + 18) = 0; *((_DWORD *)v29 + 5) = 0; *((_DWORD *)v29 + 6) = 0; *((_DWORD *)v29 + 7) = 0; *((_DWORD *)v29 + 8) = 0; *((_DWORD *)v29 + 9) = 0; *((_DWORD *)v29 + 10) = 0; *((_DWORD *)v29 + 11) = 0; *((_DWORD *)v29 + 12) = 0; *((_DWORD *)v29 + 13) = 0; *((_BYTE *)v29 + 67) = 0; std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v5, v32); v7 = *v6; } v8 = *(char **)a5; v9 = *(_DWORD *)(a5 + 4); if ( **(_BYTE **)a5 == *(_BYTE *)(v7 + 56) ) { v46 = *(_DWORD *)(v7 + 52); if ( !v9 ) goto LABEL_10; ++v8; v41 = *(char **)(v7 + 36); v42 = *(_DWORD *)(v7 + 40); } else { v46 = *(_DWORD *)(v7 + 48); v41 = *(char **)(v7 + 28); v42 = *(_DWORD *)(v7 + 32); } v10 = (unsigned __int8 *)&v8[v9]; if ( v10 > (unsigned __int8 *)v8 ) { v11 = (unsigned __int8 *)v8; do { if ( (*(_BYTE *)(v43[6] + 2 * *v11) & 8) == 0 ) break; ++v11; } while ( v10 != v11 ); v12 = v11 - (unsigned __int8 *)v8; if ( v11 != (unsigned __int8 *)v8 ) { v48 = 0; v47 = v49; LOBYTE(v49[0]) = 0; std::string::reserve(&v47, 2 * v12); v14 = *(_DWORD *)(v7 + 44); v39 = v12 - v14; if ( (int)(v12 - v14) > 0 ) { if ( v14 < 0 ) v39 = v12; if ( *(_DWORD *)(v7 + 12) ) { std::string::_M_replace_aux(&v47, 0, v48, 2 * v39, 0); v15 = std::__add_grouping( v47, *(_BYTE *)(v7 + 18), *(char **)(v7 + 8), *(_DWORD *)(v7 + 12), v8, &v8[v39]); if ( v15 - (_BYTE *)v47 > v48 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v15 - (_BYTE *)v47, v48); v48 = v15 - (_BYTE *)v47; *v15 = 0; v14 = *(_DWORD *)(v7 + 44); } else { std::string::_M_replace((unsigned int *)&v47, 0, v48, v8, v39); v14 = *(_DWORD *)(v7 + 44); } } v44 = v48; if ( v14 > 0 ) { v36 = *(_BYTE *)(v7 + 17); v38 = v48 + 1; v26 = v47; if ( v47 == v49 ) v27 = 15; else v27 = v49[0]; if ( v38 > v27 ) { std::string::_M_mutate((int)&v47, v48, 0, 0, 1u); v26 = v47; } v26[v44] = v36; v48 = v38; *((_BYTE *)v47 + v38) = 0; if ( v39 < 0 ) { std::string::_M_replace_aux(&v47, v48, 0, -v39, *(_BYTE *)(v7 + 57)); if ( v12 > 0x3FFFFFFF - v48 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v47, v8, v12); } else { v28 = &v8[v39]; if ( *(_DWORD *)(v7 + 44) > 0x3FFFFFFF - v48 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v47, v28, *(_DWORD *)(v7 + 44)); } v44 = v48; } v16 = v42 + v44; v40 = *(_DWORD *)(a3 + 12) & 0xB0; if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) v16 += *(_DWORD *)(v7 + 24); v51 = 0; v50 = v52; LOBYTE(v52[0]) = 0; std::string::reserve(&v50, 2 * v16); v17 = (void **)&v46; v45 = *(_DWORD *)(a3 + 8); v35 = v45 - v16; v37 = v45 > v16 && v40 == 16; do { switch ( *(_BYTE *)v17 ) { case 0: if ( v37 ) goto LABEL_41; break; case 1: v18 = v51; if ( !v37 ) { v19 = v50; if ( v50 == v52 ) v23 = 15; else v23 = v52[0]; if ( v51 + 1 > v23 ) { std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); v19 = v50; } v21 = a4; goto LABEL_39; } LABEL_41: std::string::_M_replace_aux(&v50, v51, 0, v35, a4); break; case 2: if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) { v22 = *(_DWORD *)(v7 + 24); if ( v22 > 0x3FFFFFFF - v51 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v50, *(_BYTE **)(v7 + 20), v22); } break; case 3: if ( v42 ) { v18 = v51; v34 = *v41; v19 = v50; if ( v50 == v52 ) v20 = 15; else v20 = v52[0]; if ( v51 + 1 > v20 ) { std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); v19 = v50; } v21 = v34; LABEL_39: v19[v18] = v21; v51 = v18 + 1; *((_BYTE *)v50 + v18 + 1) = 0; } break; case 4: std::string::_M_append(&v50, v47, v48); break; default: break; } v17 = (void **)((char *)v17 + 1); } while ( &v47 != v17 ); v24 = v51; if ( v42 > 1 ) { if ( v42 - 1 > 0x3FFFFFFF - v51 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v50, v41 + 1, v42 - 1); v24 = v51; if ( v45 <= v51 ) goto LABEL_46; } else if ( v45 <= v51 ) { LABEL_46: v45 = v24; LABEL_47: v25 = (int *)v50; if ( !a2 ) { (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v45); v25 = (int *)v50; } if ( v25 != v52 ) operator delete(v25); if ( v47 != v49 ) operator delete(v47); goto LABEL_10; } v33 = v45 - v24; if ( v40 == 32 ) std::string::_M_replace_aux(&v50, v24, 0, v33, a4); else std::string::_M_replace_aux(&v50, 0, 0, v33, a4); goto LABEL_47; } } LABEL_10: *(_DWORD *)(a3 + 8) = 0; return a1; } // 45AE07: variable 'v31' is possibly undefined // 45AE93: variable 'v32' is possibly undefined // 4E9588: using guessed type int std::moneypunct::id; // 4F66C4: using guessed type int (*off_4F66C4)(); //----- (0045B0A0) -------------------------------------------------------- int __stdcall std::money_put>::_M_insert( int a1, char a2, int a3, char a4, int a5) { int v5; // ebx int *v6; // edi int v7; // esi char *v8; // ebx int v9; // ecx unsigned __int8 *v10; // ecx unsigned __int8 *v11; // eax size_t v12; // edi int v14; // eax _BYTE *v15; // eax unsigned int v16; // edi void **v17; // ebx size_t v18; // edi _BYTE *v19; // eax size_t v20; // edx char v21; // cl size_t v22; // edx size_t v23; // edx size_t v24; // edx int *v25; // eax _BYTE *v26; // eax unsigned int v27; // edx char *v28; // ebx std::locale::_Impl *v29; // eax std::locale::_Impl *v30; // esi void (__cdecl *v31)(void *); // [esp+4h] [ebp-B4h] unsigned int v32; // [esp+8h] [ebp-B0h] size_t v33; // [esp+8h] [ebp-B0h] char v34; // [esp+30h] [ebp-88h] size_t v35; // [esp+34h] [ebp-84h] char v36; // [esp+38h] [ebp-80h] bool v37; // [esp+3Ch] [ebp-7Ch] size_t v38; // [esp+3Ch] [ebp-7Ch] int v39; // [esp+40h] [ebp-78h] int v40; // [esp+40h] [ebp-78h] char *v41; // [esp+44h] [ebp-74h] unsigned int v42; // [esp+4Ch] [ebp-6Ch] _DWORD *v43; // [esp+50h] [ebp-68h] size_t v44; // [esp+50h] [ebp-68h] size_t v45; // [esp+50h] [ebp-68h] int v46; // [esp+6Ch] [ebp-4Ch] BYREF void *v47; // [esp+70h] [ebp-48h] BYREF size_t v48; // [esp+74h] [ebp-44h] int v49[4]; // [esp+78h] [ebp-40h] BYREF void *v50; // [esp+88h] [ebp-30h] BYREF size_t v51; // [esp+8Ch] [ebp-2Ch] int v52[10]; // [esp+90h] [ebp-28h] BYREF v43 = std::use_facet>(a3 + 108); v5 = std::locale::id::_M_id(&std::moneypunct::id); v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); v7 = *v6; if ( !*v6 ) { v29 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v31); *(_DWORD *)v29 = &off_4F66D4; v30 = v29; *((_WORD *)v29 + 8) = 0; *((_DWORD *)v29 + 1) = 0; *((_DWORD *)v29 + 2) = 0; *((_DWORD *)v29 + 3) = 0; *((_BYTE *)v29 + 18) = 0; *((_DWORD *)v29 + 5) = 0; *((_DWORD *)v29 + 6) = 0; *((_DWORD *)v29 + 7) = 0; *((_DWORD *)v29 + 8) = 0; *((_DWORD *)v29 + 9) = 0; *((_DWORD *)v29 + 10) = 0; *((_DWORD *)v29 + 11) = 0; *((_DWORD *)v29 + 12) = 0; *((_DWORD *)v29 + 13) = 0; *((_BYTE *)v29 + 67) = 0; std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v5, v32); v7 = *v6; } v8 = *(char **)a5; v9 = *(_DWORD *)(a5 + 4); if ( **(_BYTE **)a5 == *(_BYTE *)(v7 + 56) ) { v46 = *(_DWORD *)(v7 + 52); if ( !v9 ) goto LABEL_10; ++v8; v41 = *(char **)(v7 + 36); v42 = *(_DWORD *)(v7 + 40); } else { v46 = *(_DWORD *)(v7 + 48); v41 = *(char **)(v7 + 28); v42 = *(_DWORD *)(v7 + 32); } v10 = (unsigned __int8 *)&v8[v9]; if ( v10 > (unsigned __int8 *)v8 ) { v11 = (unsigned __int8 *)v8; do { if ( (*(_BYTE *)(v43[6] + 2 * *v11) & 8) == 0 ) break; ++v11; } while ( v10 != v11 ); v12 = v11 - (unsigned __int8 *)v8; if ( v11 != (unsigned __int8 *)v8 ) { v48 = 0; v47 = v49; LOBYTE(v49[0]) = 0; std::string::reserve(&v47, 2 * v12); v14 = *(_DWORD *)(v7 + 44); v39 = v12 - v14; if ( (int)(v12 - v14) > 0 ) { if ( v14 < 0 ) v39 = v12; if ( *(_DWORD *)(v7 + 12) ) { std::string::_M_replace_aux(&v47, 0, v48, 2 * v39, 0); v15 = std::__add_grouping( v47, *(_BYTE *)(v7 + 18), *(char **)(v7 + 8), *(_DWORD *)(v7 + 12), v8, &v8[v39]); if ( v15 - (_BYTE *)v47 > v48 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v15 - (_BYTE *)v47, v48); v48 = v15 - (_BYTE *)v47; *v15 = 0; v14 = *(_DWORD *)(v7 + 44); } else { std::string::_M_replace((unsigned int *)&v47, 0, v48, v8, v39); v14 = *(_DWORD *)(v7 + 44); } } v44 = v48; if ( v14 > 0 ) { v36 = *(_BYTE *)(v7 + 17); v38 = v48 + 1; v26 = v47; if ( v47 == v49 ) v27 = 15; else v27 = v49[0]; if ( v38 > v27 ) { std::string::_M_mutate((int)&v47, v48, 0, 0, 1u); v26 = v47; } v26[v44] = v36; v48 = v38; *((_BYTE *)v47 + v38) = 0; if ( v39 < 0 ) { std::string::_M_replace_aux(&v47, v48, 0, -v39, *(_BYTE *)(v7 + 57)); if ( v12 > 0x3FFFFFFF - v48 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v47, v8, v12); } else { v28 = &v8[v39]; if ( *(_DWORD *)(v7 + 44) > 0x3FFFFFFF - v48 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v47, v28, *(_DWORD *)(v7 + 44)); } v44 = v48; } v16 = v42 + v44; v40 = *(_DWORD *)(a3 + 12) & 0xB0; if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) v16 += *(_DWORD *)(v7 + 24); v51 = 0; v50 = v52; LOBYTE(v52[0]) = 0; std::string::reserve(&v50, 2 * v16); v17 = (void **)&v46; v45 = *(_DWORD *)(a3 + 8); v35 = v45 - v16; v37 = v45 > v16 && v40 == 16; do { switch ( *(_BYTE *)v17 ) { case 0: if ( v37 ) goto LABEL_41; break; case 1: v18 = v51; if ( !v37 ) { v19 = v50; if ( v50 == v52 ) v23 = 15; else v23 = v52[0]; if ( v51 + 1 > v23 ) { std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); v19 = v50; } v21 = a4; goto LABEL_39; } LABEL_41: std::string::_M_replace_aux(&v50, v51, 0, v35, a4); break; case 2: if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) { v22 = *(_DWORD *)(v7 + 24); if ( v22 > 0x3FFFFFFF - v51 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v50, *(_BYTE **)(v7 + 20), v22); } break; case 3: if ( v42 ) { v18 = v51; v34 = *v41; v19 = v50; if ( v50 == v52 ) v20 = 15; else v20 = v52[0]; if ( v51 + 1 > v20 ) { std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); v19 = v50; } v21 = v34; LABEL_39: v19[v18] = v21; v51 = v18 + 1; *((_BYTE *)v50 + v18 + 1) = 0; } break; case 4: std::string::_M_append(&v50, v47, v48); break; default: break; } v17 = (void **)((char *)v17 + 1); } while ( &v47 != v17 ); v24 = v51; if ( v42 > 1 ) { if ( v42 - 1 > 0x3FFFFFFF - v51 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v50, v41 + 1, v42 - 1); v24 = v51; if ( v45 <= v51 ) goto LABEL_46; } else if ( v45 <= v51 ) { LABEL_46: v45 = v24; LABEL_47: v25 = (int *)v50; if ( !a2 ) { (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v45); v25 = (int *)v50; } if ( v25 != v52 ) operator delete(v25); if ( v47 != v49 ) operator delete(v47); goto LABEL_10; } v33 = v45 - v24; if ( v40 == 32 ) std::string::_M_replace_aux(&v50, v24, 0, v33, a4); else std::string::_M_replace_aux(&v50, 0, 0, v33, a4); goto LABEL_47; } } LABEL_10: *(_DWORD *)(a3 + 8) = 0; return a1; } // 45B5D7: variable 'v31' is possibly undefined // 45B663: variable 'v32' is possibly undefined // 4E958C: using guessed type int std::moneypunct::id; // 4F66D4: using guessed type int (*off_4F66D4)(); //----- (0045B870) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6) { return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); } //----- (0045B890) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6) { return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); } //----- (0045B8B0) -------------------------------------------------------- int __stdcall std::money_put>::do_put( int a1, char a2, char a3, int a4, wchar_t a5, int a6) { if ( a3 ) return std::money_put>::_M_insert(a1, a2, a4, a5, a6); else return std::money_put>::_M_insert(a1, a2, a4, a5, a6); } //----- (0045B920) -------------------------------------------------------- int __thiscall std::money_put>::do_put( void *this, int a2, int a3, int a4, int a5, int a6, long double a7) { void *v7; // esp void *v8; // esp int v9; // eax int v10; // ebx int v11; // eax void *v12; // esp void *v13; // esp int v14; // eax int v15; // ebx int v17; // [esp-44h] [ebp-BCh] int v18; // [esp-40h] [ebp-B8h] int v19; // [esp-3Ch] [ebp-B4h] int v20; // [esp-38h] [ebp-B0h] int v21; // [esp-34h] [ebp-ACh] _DWORD v22[7]; // [esp-30h] [ebp-A8h] BYREF int v23; // [esp-14h] [ebp-8Ch] int v24; // [esp-10h] [ebp-88h] int v25; // [esp-Ch] [ebp-84h] int v26; // [esp-8h] [ebp-80h] std::locale **v27; // [esp-4h] [ebp-7Ch] const std::locale *v28; // [esp+4h] [ebp-74h] size_t BufferCount; // [esp+28h] [ebp-50h] int v30; // [esp+2Ch] [ebp-4Ch] int v31; // [esp+30h] [ebp-48h] void *v32; // [esp+34h] [ebp-44h] void *v33; // [esp+38h] [ebp-40h] _DWORD *v34; // [esp+3Ch] [ebp-3Ch] _DWORD *v35; // [esp+44h] [ebp-34h] BYREF std::locale *v36[2]; // [esp+48h] [ebp-30h] BYREF char v37[40]; // [esp+50h] [ebp-28h] BYREF v32 = this; v31 = a4; v30 = a6; std::locale::locale((volatile signed __int32 **)&v35, (volatile signed __int32 **)(a5 + 108), v28); v33 = std::use_facet>((int)&v35); v7 = alloca(80); v8 = alloca(80); v34 = v22; v36[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); v9 = std::__convert_from_v((int *const *)v36, (char *)v22, 0x40u, "%.*Lf", 0, a7); v10 = v9; if ( v9 > 63 ) { BufferCount = v9 + 1; v11 = 16 * ((unsigned int)(v9 + 28) >> 4); v12 = alloca(v11); v13 = alloca(v11); v34 = v22; v36[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); v10 = std::__convert_from_v((int *const *)v36, (char *)v22, BufferCount, "%.*Lf", 0, a7); } v36[0] = (std::locale *)v37; std::wstring::_M_construct((wchar_t **)v36, v10, 0); (*(void (__thiscall **)(void *, _DWORD *, int, std::locale *, int, int, int, int, int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, int, int, int))(*(_DWORD *)v33 + 44))( v33, v34, (int)v34 + v10, v36[0], v17, v18, v19, v20, v21, v22[0], v22[1], v22[2], v22[3], v22[4], v22[5], v22[6], v23, v24, v25); v27 = v36; v26 = (unsigned __int16)v30; v24 = a3; v25 = a5; v23 = a2; if ( (_BYTE)v31 ) v14 = std::money_put>::_M_insert(v23, v24, v25, v26, (int)v27); else v14 = std::money_put>::_M_insert(v23, v24, v25, v26, (int)v27); v15 = v14; if ( (char *)v36[0] != v37 ) operator delete(v36[0]); std::locale::~locale(&v35); return v15; } // 45BA33: variable 'v17' is possibly undefined // 45BA33: variable 'v18' is possibly undefined // 45BA33: variable 'v19' is possibly undefined // 45BA33: variable 'v20' is possibly undefined // 45BA33: variable 'v21' is possibly undefined //----- (0045BAD0) -------------------------------------------------------- int __stdcall std::money_put>::_M_insert( int a1, char a2, int a3, wchar_t a4, int a5) { void *v5; // edi int v6; // ebx int v7; // esi wchar_t *v8; // ebx int v9; // eax signed int v10; // eax int v12; // eax size_t v13; // edi _WORD *v14; // eax unsigned int v15; // edi wchar_t **v16; // ebx size_t v17; // edi _WORD *v18; // eax size_t v19; // edx size_t v20; // edx size_t v21; // edi _WORD *v22; // eax size_t v23; // edx size_t v24; // ecx int *v25; // eax wchar_t *v26; // eax unsigned int v27; // edx size_t v28; // edx _DWORD *v29; // eax std::locale::_Impl *v30; // esi size_t v31; // [esp-4h] [ebp-BCh] void (__cdecl *v32)(void *); // [esp+4h] [ebp-B4h] unsigned int v33; // [esp+8h] [ebp-B0h] __int16 v34; // [esp+30h] [ebp-88h] size_t v35; // [esp+34h] [ebp-84h] wchar_t v36; // [esp+38h] [ebp-80h] bool v37; // [esp+3Ch] [ebp-7Ch] unsigned int v38; // [esp+3Ch] [ebp-7Ch] int v39; // [esp+40h] [ebp-78h] int v40; // [esp+40h] [ebp-78h] _WORD *v41; // [esp+48h] [ebp-70h] int *v42; // [esp+4Ch] [ebp-6Ch] unsigned int v43; // [esp+4Ch] [ebp-6Ch] size_t v44; // [esp+4Ch] [ebp-6Ch] unsigned int v45; // [esp+50h] [ebp-68h] int v46; // [esp+6Ch] [ebp-4Ch] BYREF wchar_t *v47; // [esp+70h] [ebp-48h] BYREF size_t v48; // [esp+74h] [ebp-44h] int v49[4]; // [esp+78h] [ebp-40h] BYREF void *v50; // [esp+88h] [ebp-30h] BYREF size_t v51; // [esp+8Ch] [ebp-2Ch] int v52[10]; // [esp+90h] [ebp-28h] BYREF v5 = std::use_facet>(a3 + 108); v6 = std::locale::id::_M_id(&std::moneypunct::id); v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); v42 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); if ( !v7 ) { v29 = operator new((struct type_info *)0x54, v32); v29[1] = 0; v30 = (std::locale::_Impl *)v29; *v29 = &off_4F66E4; v29[2] = 0; v29[3] = 0; *((_BYTE *)v29 + 16) = 0; *(_DWORD *)((char *)v29 + 18) = 0; v29[6] = 0; v29[7] = 0; v29[8] = 0; v29[9] = 0; v29[10] = 0; v29[11] = 0; v29[12] = 0; v29[13] = 0; v29[14] = 0; *((_BYTE *)v29 + 82) = 0; std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v6, v33); v7 = *v42; } v8 = *(wchar_t **)a5; v9 = *(_DWORD *)(a5 + 4); if ( **(_WORD **)a5 == *(_WORD *)(v7 + 60) ) { v46 = *(_DWORD *)(v7 + 56); v41 = *(_WORD **)(v7 + 40); v45 = *(_DWORD *)(v7 + 44); if ( v9 ) ++v8; } else { v46 = *(_DWORD *)(v7 + 52); v41 = *(_WORD **)(v7 + 32); v45 = *(_DWORD *)(v7 + 36); } v10 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; v43 = v10 >> 1; if ( v10 >> 1 ) { LOWORD(v49[0]) = 0; v47 = (wchar_t *)v49; v48 = 0; std::wstring::reserve((int)&v47, v10); v12 = *(_DWORD *)(v7 + 48); v39 = v43 - v12; v13 = v48; if ( (int)(v43 - v12) > 0 ) { if ( v12 < 0 ) v39 = v43; if ( *(_DWORD *)(v7 + 12) ) { std::wstring::_M_replace_aux((int)&v47, 0, v48, 2 * v39, 0); v14 = std::__add_grouping( v47, *(_WORD *)(v7 + 20), *(char **)(v7 + 8), *(_DWORD *)(v7 + 12), v8, &v8[v39]); v13 = v14 - v47; if ( v13 > v48 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v14 - v47, v48); v48 = v14 - v47; *v14 = 0; v12 = *(_DWORD *)(v7 + 48); } else { std::wstring::_M_replace((int)&v47, 0, v48, v8, v39); v12 = *(_DWORD *)(v7 + 48); v13 = v48; } } if ( v12 > 0 ) { v36 = *(_WORD *)(v7 + 18); v38 = v13 + 1; v26 = v47; if ( v47 == (wchar_t *)v49 ) v27 = 7; else v27 = v49[0]; if ( v38 > v27 ) { std::wstring::_M_mutate((const wchar_t **)&v47, v13, 0, 0, 1u); v26 = v47; } v26[v13] = v36; v48 = v13 + 1; v26[v13 + 1] = 0; if ( v39 < 0 ) { std::wstring::_M_replace_aux((int)&v47, v38, 0, -v39, *(_WORD *)(v7 + 62)); if ( v43 > 0x1FFFFFFF - v48 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append((int)&v47, v8, v43); } else { v28 = *(_DWORD *)(v7 + 48); if ( v28 > 0x1FFFFFFF - v38 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append((int)&v47, &v8[v39], v28); } v13 = v48; } v15 = v45 + v13; v40 = *(_DWORD *)(a3 + 12) & 0xB0; if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) v15 += *(_DWORD *)(v7 + 28); v51 = 0; v50 = v52; LOWORD(v52[0]) = 0; std::wstring::reserve((int)&v50, 2 * v15); v16 = (wchar_t **)&v46; v44 = *(_DWORD *)(a3 + 8); v35 = v44 - v15; v37 = v44 > v15 && v40 == 16; do { switch ( *(_BYTE *)v16 ) { case 0: if ( v37 ) goto LABEL_36; break; case 1: v21 = v51; if ( v37 ) { LABEL_36: std::wstring::_M_replace_aux((int)&v50, v51, 0, v35, a4); } else { v22 = v50; if ( v50 == v52 ) v23 = 7; else v23 = v52[0]; if ( v51 + 1 > v23 ) { std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); v22 = v50; } v22[v21] = a4; v51 = v21 + 1; v22[v21 + 1] = 0; } break; case 2: if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) { v20 = *(_DWORD *)(v7 + 28); if ( v20 > 0x1FFFFFFF - v51 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append((int)&v50, *(wchar_t **)(v7 + 24), v20); } break; case 3: if ( v45 ) { v17 = v51; v34 = *v41; v18 = v50; if ( v50 == v52 ) v19 = 7; else v19 = v52[0]; if ( v51 + 1 > v19 ) { std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); v18 = v50; } v18[v17] = v34; v51 = v17 + 1; v18[v17 + 1] = 0; } break; case 4: std::wstring::_M_append((int)&v50, v47, v48); break; default: break; } v16 = (wchar_t **)((char *)v16 + 1); } while ( &v47 != v16 ); v24 = v51; if ( v45 > 1 ) { if ( v45 - 1 > 0x1FFFFFFF - v51 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append((int)&v50, v41 + 1, v45 - 1); v24 = v51; if ( v44 <= v51 ) goto LABEL_41; } else if ( v44 <= v51 ) { LABEL_41: v44 = v24; LABEL_42: v25 = (int *)v50; if ( !a2 ) { (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v44); v25 = (int *)v50; } if ( v25 != v52 ) operator delete(v25); if ( v47 != (wchar_t *)v49 ) operator delete(v47); goto LABEL_6; } v31 = v44 - v24; if ( v40 == 32 ) std::wstring::_M_replace_aux((int)&v50, v24, 0, v31, a4); else std::wstring::_M_replace_aux((int)&v50, 0, 0, v31, a4); goto LABEL_42; } LABEL_6: *(_DWORD *)(a3 + 8) = 0; return a1; } // 45C017: variable 'v32' is possibly undefined // 45C0A4: variable 'v33' is possibly undefined // 4E9590: using guessed type int std::moneypunct::id; // 4F66E4: using guessed type int (*off_4F66E4)(); //----- (0045C2E0) -------------------------------------------------------- int __stdcall std::money_put>::_M_insert( int a1, char a2, int a3, wchar_t a4, int a5) { void *v5; // edi int v6; // ebx int v7; // esi wchar_t *v8; // ebx int v9; // eax signed int v10; // eax int v12; // eax size_t v13; // edi _WORD *v14; // eax unsigned int v15; // edi wchar_t **v16; // ebx size_t v17; // edi _WORD *v18; // eax size_t v19; // edx size_t v20; // edx size_t v21; // edi _WORD *v22; // eax size_t v23; // edx size_t v24; // ecx int *v25; // eax wchar_t *v26; // eax unsigned int v27; // edx size_t v28; // edx _DWORD *v29; // eax std::locale::_Impl *v30; // esi size_t v31; // [esp-4h] [ebp-BCh] void (__cdecl *v32)(void *); // [esp+4h] [ebp-B4h] unsigned int v33; // [esp+8h] [ebp-B0h] __int16 v34; // [esp+30h] [ebp-88h] size_t v35; // [esp+34h] [ebp-84h] wchar_t v36; // [esp+38h] [ebp-80h] bool v37; // [esp+3Ch] [ebp-7Ch] unsigned int v38; // [esp+3Ch] [ebp-7Ch] int v39; // [esp+40h] [ebp-78h] int v40; // [esp+40h] [ebp-78h] _WORD *v41; // [esp+48h] [ebp-70h] int *v42; // [esp+4Ch] [ebp-6Ch] unsigned int v43; // [esp+4Ch] [ebp-6Ch] size_t v44; // [esp+4Ch] [ebp-6Ch] unsigned int v45; // [esp+50h] [ebp-68h] int v46; // [esp+6Ch] [ebp-4Ch] BYREF wchar_t *v47; // [esp+70h] [ebp-48h] BYREF size_t v48; // [esp+74h] [ebp-44h] int v49[4]; // [esp+78h] [ebp-40h] BYREF void *v50; // [esp+88h] [ebp-30h] BYREF size_t v51; // [esp+8Ch] [ebp-2Ch] int v52[10]; // [esp+90h] [ebp-28h] BYREF v5 = std::use_facet>(a3 + 108); v6 = std::locale::id::_M_id(&std::moneypunct::id); v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); v42 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); if ( !v7 ) { v29 = operator new((struct type_info *)0x54, v32); v29[1] = 0; v30 = (std::locale::_Impl *)v29; *v29 = &off_4F66F4; v29[2] = 0; v29[3] = 0; *((_BYTE *)v29 + 16) = 0; *(_DWORD *)((char *)v29 + 18) = 0; v29[6] = 0; v29[7] = 0; v29[8] = 0; v29[9] = 0; v29[10] = 0; v29[11] = 0; v29[12] = 0; v29[13] = 0; v29[14] = 0; *((_BYTE *)v29 + 82) = 0; std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v6, v33); v7 = *v42; } v8 = *(wchar_t **)a5; v9 = *(_DWORD *)(a5 + 4); if ( **(_WORD **)a5 == *(_WORD *)(v7 + 60) ) { v46 = *(_DWORD *)(v7 + 56); v41 = *(_WORD **)(v7 + 40); v45 = *(_DWORD *)(v7 + 44); if ( v9 ) ++v8; } else { v46 = *(_DWORD *)(v7 + 52); v41 = *(_WORD **)(v7 + 32); v45 = *(_DWORD *)(v7 + 36); } v10 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; v43 = v10 >> 1; if ( v10 >> 1 ) { LOWORD(v49[0]) = 0; v47 = (wchar_t *)v49; v48 = 0; std::wstring::reserve((int)&v47, v10); v12 = *(_DWORD *)(v7 + 48); v39 = v43 - v12; v13 = v48; if ( (int)(v43 - v12) > 0 ) { if ( v12 < 0 ) v39 = v43; if ( *(_DWORD *)(v7 + 12) ) { std::wstring::_M_replace_aux((int)&v47, 0, v48, 2 * v39, 0); v14 = std::__add_grouping( v47, *(_WORD *)(v7 + 20), *(char **)(v7 + 8), *(_DWORD *)(v7 + 12), v8, &v8[v39]); v13 = v14 - v47; if ( v13 > v48 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v14 - v47, v48); v48 = v14 - v47; *v14 = 0; v12 = *(_DWORD *)(v7 + 48); } else { std::wstring::_M_replace((int)&v47, 0, v48, v8, v39); v12 = *(_DWORD *)(v7 + 48); v13 = v48; } } if ( v12 > 0 ) { v36 = *(_WORD *)(v7 + 18); v38 = v13 + 1; v26 = v47; if ( v47 == (wchar_t *)v49 ) v27 = 7; else v27 = v49[0]; if ( v38 > v27 ) { std::wstring::_M_mutate((const wchar_t **)&v47, v13, 0, 0, 1u); v26 = v47; } v26[v13] = v36; v48 = v13 + 1; v26[v13 + 1] = 0; if ( v39 < 0 ) { std::wstring::_M_replace_aux((int)&v47, v38, 0, -v39, *(_WORD *)(v7 + 62)); if ( v43 > 0x1FFFFFFF - v48 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append((int)&v47, v8, v43); } else { v28 = *(_DWORD *)(v7 + 48); if ( v28 > 0x1FFFFFFF - v38 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append((int)&v47, &v8[v39], v28); } v13 = v48; } v15 = v45 + v13; v40 = *(_DWORD *)(a3 + 12) & 0xB0; if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) v15 += *(_DWORD *)(v7 + 28); v51 = 0; v50 = v52; LOWORD(v52[0]) = 0; std::wstring::reserve((int)&v50, 2 * v15); v16 = (wchar_t **)&v46; v44 = *(_DWORD *)(a3 + 8); v35 = v44 - v15; v37 = v44 > v15 && v40 == 16; do { switch ( *(_BYTE *)v16 ) { case 0: if ( v37 ) goto LABEL_36; break; case 1: v21 = v51; if ( v37 ) { LABEL_36: std::wstring::_M_replace_aux((int)&v50, v51, 0, v35, a4); } else { v22 = v50; if ( v50 == v52 ) v23 = 7; else v23 = v52[0]; if ( v51 + 1 > v23 ) { std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); v22 = v50; } v22[v21] = a4; v51 = v21 + 1; v22[v21 + 1] = 0; } break; case 2: if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) { v20 = *(_DWORD *)(v7 + 28); if ( v20 > 0x1FFFFFFF - v51 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append((int)&v50, *(wchar_t **)(v7 + 24), v20); } break; case 3: if ( v45 ) { v17 = v51; v34 = *v41; v18 = v50; if ( v50 == v52 ) v19 = 7; else v19 = v52[0]; if ( v51 + 1 > v19 ) { std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); v18 = v50; } v18[v17] = v34; v51 = v17 + 1; v18[v17 + 1] = 0; } break; case 4: std::wstring::_M_append((int)&v50, v47, v48); break; default: break; } v16 = (wchar_t **)((char *)v16 + 1); } while ( &v47 != v16 ); v24 = v51; if ( v45 > 1 ) { if ( v45 - 1 > 0x1FFFFFFF - v51 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append((int)&v50, v41 + 1, v45 - 1); v24 = v51; if ( v44 <= v51 ) goto LABEL_41; } else if ( v44 <= v51 ) { LABEL_41: v44 = v24; LABEL_42: v25 = (int *)v50; if ( !a2 ) { (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v44); v25 = (int *)v50; } if ( v25 != v52 ) operator delete(v25); if ( v47 != (wchar_t *)v49 ) operator delete(v47); goto LABEL_6; } v31 = v44 - v24; if ( v40 == 32 ) std::wstring::_M_replace_aux((int)&v50, v24, 0, v31, a4); else std::wstring::_M_replace_aux((int)&v50, 0, 0, v31, a4); goto LABEL_42; } LABEL_6: *(_DWORD *)(a3 + 8) = 0; return a1; } // 45C827: variable 'v32' is possibly undefined // 45C8B4: variable 'v33' is possibly undefined // 4E9594: using guessed type int std::moneypunct::id; // 4F66F4: using guessed type int (*off_4F66F4)(); //----- (0045CAF0) -------------------------------------------------------- int __stdcall std::codecvt::do_in( int a1, unsigned __int8 *a2, int a3, unsigned __int8 **a4, int a5, int a6, _DWORD *a7) { unsigned __int8 *v7; // edx unsigned int v9; // eax int result; // eax unsigned __int8 *v11; // [esp+8h] [ebp-Ch] BYREF unsigned __int8 *v12; // [esp+Ch] [ebp-8h] v7 = (unsigned __int8 *)a3; v11 = a2; v12 = (unsigned __int8 *)a3; if ( a2 == (unsigned __int8 *)a3 ) { LABEL_9: result = 0; } else { while ( 1 ) { if ( a6 == a5 ) { v7 = v11; result = 1; goto LABEL_8; } v9 = std::`anonymous namespace'::read_utf8_code_point(&v11, 0x10FFFFu); v7 = v11; if ( v9 == -2 ) { result = 1; goto LABEL_8; } if ( v9 > 0x10FFFF ) break; a5 += 4; *(_DWORD *)(a5 - 4) = v9; if ( v12 == v7 ) goto LABEL_9; } result = 2; } LABEL_8: *a4 = v7; *a7 = a5; return result; } //----- (0045CB80) -------------------------------------------------------- int __stdcall std::codecvt::do_out( int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, int a5, int a6, int *a7) { int v7; // eax unsigned int *v8; // ebx int v10; // ecx int v11[4]; // [esp+8h] [ebp-10h] BYREF v7 = a5; v8 = a2; v11[0] = a5; v11[1] = a6; if ( a2 == a3 ) { v10 = 0; } else { do { if ( *v8 > 0x10FFFF ) { v7 = v11[0]; v10 = 2; goto LABEL_7; } if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)v11, *v8) ) { v7 = v11[0]; v10 = 1; goto LABEL_7; } ++v8; } while ( a3 != v8 ); v7 = v11[0]; v10 = 0; } LABEL_7: *a4 = v8; *a7 = v7; return v10; } //----- (0045CC10) -------------------------------------------------------- unsigned __int8 *__stdcall std::codecvt::do_length( int a1, unsigned __int8 *a2, unsigned __int8 *a3, int a4) { int v4; // ebx bool v5; // dl bool v6; // al unsigned __int8 *v8[4]; // [esp+8h] [ebp-10h] BYREF v8[0] = a2; v8[1] = a3; if ( !a4 ) return 0; v4 = a4 - 1; do { v5 = (unsigned int)std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu) <= 0x10FFFF; v6 = v4-- != 0; } while ( v6 && v5 ); return (unsigned __int8 *)(v8[0] - a2); } //----- (0045CC70) -------------------------------------------------------- int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) { int result; // eax int v8[2]; // [esp+4h] [ebp-10h] BYREF int v9[2]; // [esp+Ch] [ebp-8h] BYREF v8[0] = a2; v8[1] = a3; v9[0] = a5; v9[1] = a6; result = std::`anonymous namespace'::ucs4_in(v8, v9, 0x10FFFFu, 0); *a4 = v8[0]; *a7 = v9[0]; return result; } //----- (0045CCD0) -------------------------------------------------------- int __stdcall std::codecvt::do_out( int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, _BYTE *a5, _BYTE *a6, _DWORD *a7) { _BYTE *v7; // eax unsigned int *v8; // ebx int v10; // ecx _BYTE *v11[4]; // [esp+8h] [ebp-10h] BYREF v7 = a5; v8 = a2; v11[0] = a5; v11[1] = a6; if ( a2 == a3 ) { v10 = 0; } else { do { if ( *v8 > 0x10FFFF ) { v7 = v11[0]; v10 = 2; goto LABEL_7; } if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v11, *v8) ) { v7 = v11[0]; v10 = 1; goto LABEL_7; } ++v8; } while ( a3 != v8 ); v7 = v11[0]; v10 = 0; } LABEL_7: *a4 = v8; *a7 = v7; return v10; } //----- (0045CD60) -------------------------------------------------------- unsigned __int8 *__stdcall std::codecvt::do_length( int a1, unsigned __int8 *a2, unsigned __int8 *a3, int a4) { int v4; // ebx bool v5; // dl bool v6; // al unsigned __int8 *v8[4]; // [esp+8h] [ebp-10h] BYREF v8[0] = a2; v8[1] = a3; if ( !a4 ) return 0; v4 = a4 - 1; do { v5 = (unsigned int)std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu) <= 0x10FFFF; v6 = v4-- != 0; } while ( v6 && v5 ); return (unsigned __int8 *)(v8[0] - a2); } //----- (0045CDC0) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0045CDE0) -------------------------------------------------------- int __stdcall std::codecvt::do_in( int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, int a5, int a6, int *a7) { unsigned __int8 *v7; // ebx unsigned __int8 *v8; // eax int v9; // ecx int v10; // edx _WORD *v11; // eax unsigned int v12; // eax __int16 v13; // dx char v14; // al int v15; // ebx unsigned __int8 *v17; // [esp+0h] [ebp-14h] BYREF unsigned __int8 *v18; // [esp+4h] [ebp-10h] _WORD *v19; // [esp+8h] [ebp-Ch] BYREF _WORD *v20; // [esp+Ch] [ebp-8h] v7 = a2; v8 = a3; v9 = a5; v10 = a6; v17 = a2; v18 = a3; v19 = (_WORD *)a5; v20 = (_WORD *)a6; if ( a2 == a3 ) { LABEL_13: v15 = 0; } else { while ( 1 ) { if ( v10 == v9 ) { v8 = v17; v15 = 0; goto LABEL_14; } v12 = std::`anonymous namespace'::read_utf8_code_point(&v17, 0x10FFFFu); v13 = v12; if ( v12 == -2 ) { v8 = v17; v9 = (int)v19; v15 = 1; goto LABEL_14; } if ( v12 > 0x10FFFF ) break; if ( v12 <= 0xFFFF ) { v11 = v19; v9 = (int)v20; if ( v19 == v20 ) goto LABEL_12; v9 = (int)++v19; *v11 = v13; } else { v14 = std::`anonymous namespace'::write_utf16_code_point((int)&v19, v12, 1); v9 = (int)v19; if ( !v14 ) { LABEL_12: v8 = v7; v15 = 1; goto LABEL_14; } } v7 = v17; v8 = v18; if ( v17 == v18 ) goto LABEL_13; v10 = (int)v20; } v8 = v17; v9 = (int)v19; v15 = 2; } LABEL_14: *a4 = v8; *a7 = v9; return v15; } //----- (0045CED0) -------------------------------------------------------- int __stdcall std::codecvt::do_out( int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, int a5, int a6, int *a7) { unsigned __int16 *v7; // ebx int v8; // edx unsigned int v9; // eax int v10; // eax int v11; // edi unsigned int v12; // edx int result; // eax int v14[5]; // [esp+8h] [ebp-14h] BYREF v7 = a2; v8 = a5; v14[1] = a6; v14[0] = a5; v9 = a3 - a2; if ( a2 != a3 ) { while ( 1 ) { v12 = *v7; if ( v12 - 55296 <= 0x3FF ) { if ( v9 <= 1 ) goto LABEL_11; v10 = v7[1]; if ( (unsigned int)(v10 - 56320) > 0x3FF ) { LABEL_13: v8 = v14[0]; result = 2; goto LABEL_12; } v11 = 2; if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point( (int)v14, v10 + (v12 << 10) - 56613888) ) goto LABEL_10; } else { if ( v12 - 56320 <= 0x3FF ) goto LABEL_13; v11 = 1; if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)v14, v12) ) { LABEL_10: v8 = v14[0]; result = 1; goto LABEL_12; } } v7 += v11; v9 = a3 - v7; if ( a3 == v7 ) { LABEL_11: v8 = v14[0]; result = 0; goto LABEL_12; } } } result = 0; LABEL_12: *a4 = v7; *a7 = v8; return result; } //----- (0045CFC0) -------------------------------------------------------- unsigned __int8 *__stdcall std::codecvt::do_length( int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned int a4) { int v4; // ebp int i; // ebx unsigned int utf8_code; // eax unsigned __int8 *v8[6]; // [esp+8h] [ebp-18h] BYREF v4 = 1; v8[0] = a2; v8[1] = a3; if ( a4 > 1 ) { for ( i = 0; ; ++i ) { utf8_code = std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu); if ( utf8_code > 0x10FFFF ) break; if ( utf8_code > 0xFFFF ) i = v4; v4 = i + 2; if ( a4 <= i + 2 ) goto LABEL_9; } return (unsigned __int8 *)(v8[0] - a2); } LABEL_9: if ( a4 != v4 ) return (unsigned __int8 *)(v8[0] - a2); std::`anonymous namespace'::read_utf8_code_point(v8, 0xFFFFu); return (unsigned __int8 *)(v8[0] - a2); } //----- (0045D060) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0045D080) -------------------------------------------------------- int std::codecvt::do_encoding() { return 0; } //----- (0045D090) -------------------------------------------------------- int std::codecvt::do_max_length() { return 4; } //----- (0045D0A0) -------------------------------------------------------- int std::codecvt::do_always_noconv() { return 0; } //----- (0045D0B0) -------------------------------------------------------- int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) { int result; // eax int v8[2]; // [esp+8h] [ebp-10h] BYREF int v9[2]; // [esp+10h] [ebp-8h] BYREF v8[0] = a2; v8[1] = a3; v9[0] = a5; v9[1] = a6; result = std::`anonymous namespace'::utf16_in(v8, v9, 0x10FFFFu, 1, 0); *a4 = v8[0]; *a7 = v9[0]; return result; } //----- (0045D110) -------------------------------------------------------- int __stdcall std::codecvt::do_out( int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, _BYTE *a5, _BYTE *a6, _BYTE **a7) { int result; // eax unsigned __int16 *v8[2]; // [esp+4h] [ebp-10h] BYREF _BYTE *v9[2]; // [esp+Ch] [ebp-8h] BYREF v8[0] = a2; v8[1] = a3; v9[0] = a5; v9[1] = a6; result = std::`anonymous namespace'::utf16_out(v8, v9, 0x10FFFFu, 0); *a4 = v8[0]; *a7 = v9[0]; return result; } //----- (0045D170) -------------------------------------------------------- int __stdcall std::codecvt::do_length(int a1, int a2, unsigned __int8 *a3, unsigned int a4) { std::`anonymous namespace'::utf16_span(a4, a3, 0x10FFFFu, 0); return 0; } //----- (0045D1A0) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0045D1C0) -------------------------------------------------------- int std::codecvt::do_max_length() { return 1; } //----- (0045D1D0) -------------------------------------------------------- int std::codecvt::do_always_noconv() { return 1; } //----- (0045D1E0) -------------------------------------------------------- int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) { *a4 = a2; *a7 = a5; return 3; } //----- (0045D200) -------------------------------------------------------- unsigned int __stdcall std::codecvt::do_length(int a1, int a2, int a3, unsigned int a4) { unsigned int result; // eax result = a3 - a2; if ( a3 - a2 > a4 ) return a4; return result; } //----- (0045D220) -------------------------------------------------------- BOOL std::codecvt::do_encoding() { return ___mb_cur_max == 1; } //----- (0045D230) -------------------------------------------------------- int std::codecvt::do_max_length() { return ___mb_cur_max; } //----- (0045D240) -------------------------------------------------------- int std::codecvt::do_always_noconv() { return 0; } //----- (0045D250) -------------------------------------------------------- int __stdcall std::codecvt::do_in( unsigned int *a1, char *a2, unsigned int a3, char **a4, wchar_t *a5, unsigned int a6, wchar_t **a7) { char *v7; // esi wchar_t *v8; // edi const char *SrcCh; // edi wchar_t *DstCh; // esi size_t v11; // eax int result; // eax mbstate_t State; // [esp+1Ch] [ebp-20h] BYREF wchar_t *v14; // [esp+50h] [ebp+14h] wchar_t *v15; // [esp+50h] [ebp+14h] wchar_t *v16; // [esp+50h] [ebp+14h] v7 = a2; v8 = a5; State._Wchar = *a1; if ( (unsigned int)a5 >= a6 || (unsigned int)a2 >= a3 ) { LABEL_12: result = (unsigned int)v7 < a3; } else { SrcCh = a2; DstCh = a5; while ( 1 ) { v11 = mbrtowc(DstCh, SrcCh, a3 - (_DWORD)SrcCh, &State); if ( v11 == -1 ) { v14 = DstCh; result = 2; v7 = (char *)SrcCh; v8 = v14; goto LABEL_13; } if ( v11 == -2 ) break; if ( !v11 ) { *DstCh = 0; v11 = 1; } SrcCh += v11; ++DstCh; *a1 = State._Wchar; if ( a3 <= (unsigned int)SrcCh || a6 <= (unsigned int)DstCh ) { v15 = DstCh; v7 = (char *)SrcCh; v8 = v15; goto LABEL_12; } } v16 = DstCh; result = 1; v7 = (char *)SrcCh; v8 = v16; } LABEL_13: *a4 = v7; *a7 = v8; return result; } //----- (0045D340) -------------------------------------------------------- int __stdcall std::codecvt::do_out( unsigned int *a1, wchar_t *a2, unsigned int a3, wchar_t **a4, char *a5, unsigned int a6, char **a7) { wchar_t *v7; // edi char *v8; // ebx unsigned int Size; // eax int result; // eax size_t v11; // eax char *Dest; // [esp+0h] [ebp-4Ch] mbstate_t Src; // [esp+24h] [ebp-28h] BYREF v7 = a2; v8 = a5; Src._Wchar = *a1; if ( (int)(___mb_cur_max * ((int)(a3 - (_DWORD)a2) >> 1) - (a6 - (_DWORD)a5)) <= 0 ) { if ( a3 <= (unsigned int)a2 ) { LABEL_18: result = 0; goto LABEL_12; } while ( 1 ) { v11 = wcrtomb(v8, *v7, &Src); if ( v11 == -1 ) break; v8 += v11; ++v7; *a1 = Src._Wchar; if ( a3 <= (unsigned int)v7 ) goto LABEL_18; } } else { if ( a3 <= (unsigned int)a2 || a6 <= (unsigned int)a5 ) { LABEL_11: result = (unsigned int)v7 < a3; goto LABEL_12; } for ( Size = wcrtomb((char *)&Src._State + 1, *a2, &Src); Size != -1; Size = wcrtomb( (char *)&Src._State + 1, *v7, &Src) ) { if ( a6 - (unsigned int)v8 < Size ) { result = 1; goto LABEL_12; } Dest = v8; ++v7; v8 += Size; memcpy(Dest, (char *)&Src._State + 1, Size); *a1 = Src._Wchar; if ( a3 <= (unsigned int)v7 || a6 <= (unsigned int)v8 ) goto LABEL_11; } } result = 2; LABEL_12: *a4 = v7; *a7 = v8; return result; } //----- (0045D470) -------------------------------------------------------- int __stdcall std::codecvt::do_length(unsigned int *a1, char *a2, unsigned int a3, int a4) { int v4; // esi const char *SrcCh; // ebp int v6; // edi size_t v7; // eax mbstate_t State; // [esp+1Ch] [ebp-20h] BYREF v4 = 0; State._Wchar = *a1; if ( a4 && (unsigned int)a2 < a3 ) { SrcCh = a2; v6 = a4; do { v7 = mbrtowc(0, SrcCh, a3 - (_DWORD)SrcCh, &State); if ( v7 > 0xFFFFFFFD ) break; if ( !v7 ) v7 = 1; SrcCh += v7; v4 += v7; --v6; *a1 = State._Wchar; if ( a3 <= (unsigned int)SrcCh ) break; } while ( v6 ); } return v4; } //----- (0045D500) -------------------------------------------------------- int __stdcall std::collate::_M_compare(char *String1, char *String2) { int v2; // eax v2 = strcoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (0045D530) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __stdcall std::collate::do_compare(int a1, _BYTE *a2, int a3, int a4) { char *v4; // ebx char *v5; // esi char *v6; // ebx char *v7; // esi int v8; // edi char *v9; // eax char *v10; // ecx int v12; // eax int v13; // eax char *v14; // [esp+Ch] [ebp-40h] char *v15; // [esp+10h] [ebp-3Ch] char *v16; // [esp+14h] [ebp-38h] char *v17; // [esp+18h] [ebp-34h] char v18; // [esp+2Bh] [ebp-21h] BYREF _BYTE *retaddr; // [esp+4Ch] [ebp+0h] v16 = (char *)std::string::_S_construct(retaddr, a1); v4 = v16; v17 = (char *)std::string::_S_construct(a2, a3); v5 = v17; v14 = &v4[*((_DWORD *)v4 - 3)]; v15 = &v17[*((_DWORD *)v17 - 3)]; while ( 1 ) { v8 = std::collate::_M_compare(v4, v5); if ( v8 ) goto LABEL_8; v6 = &v4[strlen(v4)]; v7 = &v5[strlen(v5)]; if ( v14 == v6 && v15 == v7 ) goto LABEL_8; if ( v14 == v6 ) break; if ( v15 == v7 ) { v8 = 1; LABEL_8: v9 = v17; v10 = v17 - 12; if ( v17 == (char *)&unk_4E93FC ) goto LABEL_9; goto LABEL_12; } v4 = v6 + 1; v5 = v7 + 1; } v9 = v17; v8 = -1; v10 = v17 - 12; if ( v17 == (char *)&unk_4E93FC ) goto LABEL_9; LABEL_12: if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd((volatile signed __int32 *)v9 - 1, 0xFFFFFFFF); } else { v12 = *((_DWORD *)v17 - 1); *((_DWORD *)v17 - 1) = v12 - 1; } if ( v12 <= 0 ) std::string::_Rep::_M_destroy(v10, (int)&v18); LABEL_9: if ( v16 != (char *)&unk_4E93FC ) { if ( _CRT_MT ) { v13 = _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF); } else { v13 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v13 - 1; } if ( v13 <= 0 ) std::string::_Rep::_M_destroy(v16 - 12, (int)&v18); } return v8; } // 45D6DB: positive sp value 4 has been found // 15412D0: using guessed type int _CRT_MT; //----- (0045D6F0) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) { return strxfrm(Destination, Source, MaxCount); } //----- (0045D720) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! unsigned int **__thiscall std::collate::do_transform(unsigned int **this, int a2, _BYTE *a3, int a4) { unsigned int v5; // edi char *v6; // esi size_t i; // eax unsigned int *v8; // eax int v9; // edx char *v10; // esi int v12; // eax unsigned int v13; // [esp+0h] [ebp-58h] unsigned int v14; // [esp+4h] [ebp-54h] char *Str; // [esp+1Ch] [ebp-3Ch] int v16; // [esp+20h] [ebp-38h] char *v17; // [esp+24h] [ebp-34h] std::string *v18; // [esp+28h] [ebp-30h] char *v19; // [esp+2Ch] [ebp-2Ch] int v20[6]; // [esp+3Fh] [ebp-19h] BYREF *this = (unsigned int *)&unk_4E93FC; Str = (char *)std::string::_S_construct(a3, a4); v5 = 2 * (a4 - (_DWORD)a3); v17 = &Str[*((_DWORD *)Str - 3)]; v19 = (char *)operator new[](v5); v6 = Str; for ( i = std::collate::_M_transform(v19, Str, v5); ; i = std::collate::_M_transform(v19, v6, v5) ) { if ( v5 <= i ) { v5 = i + 1; operator delete[](v19); v19 = (char *)operator new[](v5); i = std::collate::_M_transform(v19, v6, v5); } std::string::append(this, (std::string *)v19, i, v14); v10 = &v6[strlen(v6)]; if ( v17 == v10 ) break; v6 = v10 + 1; v16 = *(*this - 3); v18 = (std::string *)(v16 + 1); if ( v16 + 1 > *(*this - 2) || (int)*(*this - 1) > 0 ) std::string::reserve(this, v18, v13); *((_BYTE *)*this + *(*this - 3)) = 0; v8 = *this; v9 = (int)(*this - 3); if ( *this != (unsigned int *)&unk_4E93FC ) { *(v8 - 1) = 0; *(v8 - 3) = (unsigned int)v18; *(_BYTE *)(v9 + v16 + 13) = 0; } } operator delete[](v19); if ( Str != (char *)&unk_4E93FC ) { if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd((volatile signed __int32 *)Str - 1, 0xFFFFFFFF); } else { v12 = *((_DWORD *)Str - 1); *((_DWORD *)Str - 1) = v12 - 1; } if ( v12 <= 0 ) std::string::_Rep::_M_destroy(Str - 12, (int)v20); } return this; } // 45D8F7: positive sp value 4 has been found // 45D795: variable 'v13' is possibly undefined // 45D80E: variable 'v14' is possibly undefined // 15412D0: using guessed type int _CRT_MT; // 45D720: using guessed type int var_19[6]; //----- (0045D920) -------------------------------------------------------- int __thiscall std::collate::hash(void *this, char *a1, char *a2) { int (__stdcall *v3)(char *, char *); // eax v3 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); if ( v3 == std::collate::do_hash ) return std::collate::do_hash(a1, a2); else return v3(a1, a2); } //----- (0045D940) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (0045D950) -------------------------------------------------------- int __stdcall std::collate::do_hash(char *a1, char *a2) { char *v2; // edx int result; // eax int v4; // ecx v2 = a1; result = 0; if ( a1 < a2 ) { do { v4 = *v2++; result = v4 + __ROL4__(result, 7); } while ( a2 != v2 ); } return result; } //----- (0045D980) -------------------------------------------------------- void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) { (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); return this; } //----- (0045D9B0) -------------------------------------------------------- int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) { int v2; // eax v2 = wcscoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (0045D9E0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __stdcall std::collate::do_compare(int a1, const wchar_t *a2, int a3, int a4) { wchar_t *v4; // ebx wchar_t *v5; // esi wchar_t *v6; // ebx wchar_t *v7; // esi int v8; // edi wchar_t *v9; // eax wchar_t *v10; // ecx int v12; // eax int v13; // eax wchar_t *v14; // [esp+Ch] [ebp-40h] wchar_t *v15; // [esp+10h] [ebp-3Ch] wchar_t *v16; // [esp+14h] [ebp-38h] wchar_t *v17; // [esp+18h] [ebp-34h] char v18; // [esp+2Bh] [ebp-21h] BYREF const wchar_t *retaddr; // [esp+4Ch] [ebp+0h] v16 = (wchar_t *)std::wstring::_S_construct(retaddr, a1); v4 = v16; v5 = (wchar_t *)std::wstring::_S_construct(a2, a3); v17 = v5; v14 = &v4[*((_DWORD *)v4 - 3)]; v15 = &v5[*((_DWORD *)v5 - 3)]; while ( 1 ) { v8 = std::collate::_M_compare(v4, v5); if ( v8 ) goto LABEL_8; v6 = &v4[wcslen(v4)]; v7 = &v5[wcslen(v5)]; if ( v14 == v6 && v15 == v7 ) goto LABEL_8; if ( v14 == v6 ) break; if ( v15 == v7 ) { v8 = 1; LABEL_8: v9 = v17; v10 = v17 - 6; if ( v17 == (wchar_t *)&unk_4E93EC ) goto LABEL_9; goto LABEL_12; } v4 = v6 + 1; v5 = v7 + 1; } v9 = v17; v8 = -1; v10 = v17 - 6; if ( v17 == (wchar_t *)&unk_4E93EC ) goto LABEL_9; LABEL_12: if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd((volatile signed __int32 *)v9 - 1, 0xFFFFFFFF); } else { v12 = *((_DWORD *)v17 - 1); *((_DWORD *)v17 - 1) = v12 - 1; } if ( v12 <= 0 ) std::wstring::_Rep::_M_destroy(v10, (int)&v18); LABEL_9: if ( v16 != (wchar_t *)&unk_4E93EC ) { if ( _CRT_MT ) { v13 = _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF); } else { v13 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v13 - 1; } if ( v13 <= 0 ) std::wstring::_Rep::_M_destroy(v16 - 6, (int)&v18); } return v8; } // 45DB87: positive sp value 4 has been found // 15412D0: using guessed type int _CRT_MT; //----- (0045DB90) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) { return wcsxfrm(Destination, Source, MaxCount); } //----- (0045DBC0) -------------------------------------------------------- void **__thiscall std::collate::do_transform(void **this, int a2, const wchar_t *a3, int a4) { size_t v4; // edi wchar_t *v5; // ebx wchar_t *v6; // esi _WORD *v7; // eax size_t v8; // eax wchar_t *v9; // ebx int v11; // eax wchar_t *String; // [esp+10h] [ebp-38h] wchar_t *v13; // [esp+14h] [ebp-34h] char *v14; // [esp+18h] [ebp-30h] int v16[6]; // [esp+2Fh] [ebp-19h] BYREF *this = &unk_4E93EC; v4 = a4 - (_DWORD)a3; String = (wchar_t *)std::wstring::_S_construct(a3, a4); v13 = &String[*((_DWORD *)String - 3)]; if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v5 = String; v6 = (wchar_t *)operator new[](2 * v4); while ( 1 ) { v8 = std::collate::_M_transform(v6, v5, v4); if ( v4 <= v8 ) { v4 = v8 + 1; operator delete[](v6); if ( v4 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v6 = (wchar_t *)operator new[](2 * v4); v8 = std::collate::_M_transform(v6, v5, v4); } std::wstring::append(this, v6, v8); v9 = &v5[wcslen(v5)]; if ( v13 == v9 ) break; v5 = v9 + 1; v14 = (char *)(*((_DWORD *)*this - 3) + 1); if ( (unsigned int)v14 > *((_DWORD *)*this - 2) || *((int *)*this - 1) > 0 ) std::wstring::reserve(this, v14); v7 = *this; v7[*((_DWORD *)*this - 3)] = 0; if ( v7 != (_WORD *)&unk_4E93EC ) { *((_DWORD *)v7 - 1) = 0; *((_DWORD *)v7 - 3) = v14; v7[(_DWORD)v14] = 0; } } operator delete[](v6); if ( String != (wchar_t *)&unk_4E93EC ) { if ( _CRT_MT ) { v11 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); } else { v11 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v11 - 1; } if ( v11 <= 0 ) std::wstring::_Rep::_M_destroy(String - 6, (int)v16); } return this; } // 15412D0: using guessed type int _CRT_MT; // 45DBC0: using guessed type int var_19[6]; //----- (0045DDE0) -------------------------------------------------------- int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2) { int (__stdcall *v3)(unsigned __int16 *, unsigned int); // eax v3 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); if ( v3 == std::collate::do_hash ) return std::collate::do_hash(a1, a2); else return v3(a1, a2); } //----- (0045DE00) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (0045DE10) -------------------------------------------------------- int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2) { unsigned __int16 *v2; // edx int result; // eax int v4; // ecx v2 = a1; for ( result = 0; a2 > (unsigned int)v2; result = v4 + __ROL4__(result, 7) ) v4 = *v2++; return result; } //----- (0045DE40) -------------------------------------------------------- void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) { (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); return this; } //----- (0045DE70) -------------------------------------------------------- unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned int *a7) { unsigned int v7; // ebx int v8; // esi int v9; // eax char v10; // dl char v11; // di char v12; // dl char v13; // al unsigned int v14; // eax unsigned int v15; // edx unsigned int v16; // eax char v17; // dl unsigned int v18; // eax _DWORD *v19; // ecx char v20; // bl unsigned int v21; // edi unsigned int v22; // eax unsigned int v23; // edx unsigned int v24; // eax bool v25; // dl char v26; // dl _DWORD *v27; // eax bool v28; // zf int v29; // eax unsigned int v30; // eax unsigned int v31; // edx unsigned int v32; // eax bool v33; // di char v34; // di size_t v35; // edi int *v36; // eax bool v38; // al char *v39; // eax char *v40; // eax unsigned int v41; // edx _DWORD *v42; // eax _BYTE *v43; // eax int v44; // eax unsigned int v45; // eax unsigned int v46; // edx unsigned int v47; // eax bool v48; // di char v49; // di char *v50; // eax unsigned int v51; // edx char v52; // cl int v53; // eax char *v54; // eax char *v55; // eax std::locale::_Impl *v56; // eax std::locale::_Impl *v57; // esi int v58; // eax _DWORD *v59; // eax _DWORD *v60; // eax int v61; // eax _DWORD *v62; // eax int v63; // eax int v64; // eax int v65; // eax int v66; // eax int v67; // eax int v68; // eax int v69; // eax int v70; // eax char v71; // cl int v72; // eax void (__cdecl *v73)(void *); // [esp+4h] [ebp-84h] unsigned int v74; // [esp+8h] [ebp-80h] size_t MaxCount; // [esp+1Ch] [ebp-6Ch] bool v76; // [esp+22h] [ebp-66h] char v77; // [esp+23h] [ebp-65h] int Buf; // [esp+24h] [ebp-64h] void *Bufa; // [esp+24h] [ebp-64h] unsigned int v80; // [esp+28h] [ebp-60h] char v81; // [esp+2Ch] [ebp-5Ch] char v82; // [esp+30h] [ebp-58h] bool v83; // [esp+30h] [ebp-58h] int v84; // [esp+34h] [ebp-54h] unsigned int v85; // [esp+34h] [ebp-54h] int v86; // [esp+38h] [ebp-50h] unsigned __int8 v87; // [esp+3Ch] [ebp-4Ch] unsigned __int8 v88; // [esp+3Ch] [ebp-4Ch] char v89; // [esp+3Ch] [ebp-4Ch] size_t v90; // [esp+3Ch] [ebp-4Ch] _DWORD *v91; // [esp+40h] [ebp-48h] int *v92; // [esp+44h] [ebp-44h] bool v93; // [esp+44h] [ebp-44h] char v94; // [esp+44h] [ebp-44h] unsigned __int8 v95; // [esp+44h] [ebp-44h] bool v96; // [esp+44h] [ebp-44h] std::locale::facet *v97; // [esp+48h] [ebp-40h] unsigned int v98; // [esp+48h] [ebp-40h] bool v99; // [esp+4Ch] [ebp-3Ch] unsigned int v100; // [esp+4Ch] [ebp-3Ch] void *v101; // [esp+58h] [ebp-30h] BYREF size_t v102; // [esp+5Ch] [ebp-2Ch] int v103[10]; // [esp+60h] [ebp-28h] BYREF v7 = (unsigned int)a1; v91 = a3; v97 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); v92 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); if ( !v8 ) { v56 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v73); *((_DWORD *)v56 + 1) = 0; v57 = v56; *(_DWORD *)v56 = &off_4F65A0; *((_DWORD *)v56 + 2) = 0; *((_DWORD *)v56 + 3) = 0; *((_BYTE *)v56 + 16) = 0; *((_DWORD *)v56 + 5) = 0; *((_DWORD *)v56 + 6) = 0; *((_DWORD *)v56 + 7) = 0; *((_DWORD *)v56 + 8) = 0; *((_WORD *)v56 + 18) = 0; *((_BYTE *)v56 + 100) = 0; std::__numpunct_cache::_M_cache((int)v56, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v57, v97, v74); v8 = *v92; } v98 = 8; v9 = *(_DWORD *)(a5 + 12) & 0x4A; v84 = v9; if ( v9 != 64 ) v98 = v9 == 8 ? 16 : 10; v93 = a2 == -1 && a1 != 0; if ( v93 ) { if ( a1[2] >= a1[3] ) { v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v94 = v69 == -1 && v93; v7 = v69 == -1 ? 0 : (unsigned int)a1; } else { v94 = 0; } } else { v94 = a2 == -1; } v99 = a4 == -1; if ( v99 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v68 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v68 == -1 && v99 && a3 != 0; v91 = v68 == -1 ? 0 : a3; } else { v10 = 0; } } else { v10 = a4 == -1; } if ( v94 == v10 ) { v76 = 0; v11 = 0; v82 = 1; v86 = 0; v96 = 0; goto LABEL_43; } if ( v7 && a2 == -1 ) { v54 = *(char **)(v7 + 8); if ( (unsigned int)v54 >= *(_DWORD *)(v7 + 12) ) { v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v70 != -1 ? v70 : -1; v7 &= (v70 == -1) - 1; } else { v11 = *v54; } } else { v11 = a2; } v12 = *(_BYTE *)(v8 + 74); v13 = *(_BYTE *)(v8 + 16); v76 = v12 == v11; if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) { if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) { v14 = *(_DWORD *)(v7 + 8); v15 = *(_DWORD *)(v7 + 12); if ( v14 >= v15 ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v16 = *(_DWORD *)(v7 + 8); v15 = *(_DWORD *)(v7 + 12); } else { v16 = v14 + 1; *(_DWORD *)(v7 + 8) = v16; } v95 = 0; if ( v16 >= v15 ) { v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; v7 &= v95 - 1; } if ( v99 && v91 != 0 ) { if ( v91[2] >= v91[3] ) { v72 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v17 = v72 == -1 && v99 && v91 != 0; v91 = v72 == -1 ? 0 : v91; } else { v17 = 0; } } else { v17 = a4 == -1; } if ( v95 == v17 ) { v18 = v98; v82 = 1; v86 = 0; v96 = 0; if ( v98 != 16 ) goto LABEL_44; goto LABEL_25; } v11 = -1; if ( v7 ) { v55 = *(char **)(v7 + 8); if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) { v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v64 != -1 ? v64 : -1; v7 &= (v64 == -1) - 1; } else { v11 = *v55; } } v13 = *(_BYTE *)(v8 + 16); } } else { v76 = 0; } v86 = 0; v19 = (_DWORD *)v7; v20 = v11; v96 = 0; v21 = (unsigned int)v19; while ( 1 ) { if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) { LABEL_111: v42 = (_DWORD *)v21; v82 = 0; v11 = v20; v7 = (unsigned int)v42; goto LABEL_43; } if ( *(_BYTE *)(v8 + 78) != v20 ) { if ( !v96 ) goto LABEL_111; LABEL_33: if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) { v59 = (_DWORD *)v21; v82 = 0; v11 = v20; v96 = 1; v7 = (unsigned int)v59; goto LABEL_43; } if ( v84 != 0 && v98 != 16 ) { v82 = 0; v60 = (_DWORD *)v21; v11 = v20; v7 = (unsigned int)v60; v96 = 1; MaxCount = v98; Buf = v98; goto LABEL_45; } v86 = 0; v96 = 0; v98 = 16; LABEL_37: v22 = *(_DWORD *)(v21 + 8); v23 = *(_DWORD *)(v21 + 12); if ( v22 < v23 ) goto LABEL_38; goto LABEL_73; } v38 = !v96 || v98 == 10; if ( !v38 ) goto LABEL_33; v96 = v84 == 0 || v98 == 8; if ( !v96 ) { ++v86; v96 = v38; goto LABEL_37; } v22 = *(_DWORD *)(v21 + 8); v23 = *(_DWORD *)(v21 + 12); v86 = 0; v98 = 8; if ( v22 < v23 ) { LABEL_38: v24 = v22 + 1; v87 = 0; *(_DWORD *)(v21 + 8) = v24; if ( v24 < v23 ) goto LABEL_39; goto LABEL_74; } LABEL_73: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); v87 = 0; if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) { LABEL_39: v25 = v99 && v91 != 0; if ( !v25 ) goto LABEL_40; goto LABEL_75; } LABEL_74: v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; v21 &= v87 - 1; v25 = v99 && v91 != 0; if ( !v25 ) { LABEL_40: v26 = a4 == -1; goto LABEL_41; } LABEL_75: if ( v91[2] >= v91[3] ) { v83 = v25; v53 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v26 = v53 == -1 && v83; v91 = v53 == -1 ? 0 : v91; LABEL_41: if ( v26 == v87 ) goto LABEL_42; goto LABEL_77; } if ( !v87 ) { LABEL_42: v27 = (_DWORD *)v21; v11 = v20; v82 = 1; v7 = (unsigned int)v27; goto LABEL_43; } LABEL_77: v20 = -1; if ( v21 ) { v39 = *(char **)(v21 + 8); if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) { v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); v20 = v61 != -1 ? v61 : -1; v21 &= (v61 == -1) - 1; } else { v20 = *v39; } } if ( !v96 ) break; v13 = *(_BYTE *)(v8 + 16); } v62 = (_DWORD *)v21; v82 = 0; v11 = v20; v7 = (unsigned int)v62; LABEL_43: v18 = v98; if ( v98 == 16 ) { LABEL_25: MaxCount = 22; Buf = 22; goto LABEL_45; } LABEL_44: MaxCount = v18; Buf = v18; LABEL_45: v28 = *(_BYTE *)(v8 + 16) == 0; v102 = 0; v101 = v103; LOBYTE(v103[0]) = 0; if ( !v28 ) std::string::reserve(&v101, 0x20u); v80 = 0xFFFFFFFF / v98; v77 = *(_BYTE *)(v8 + 100); if ( !v77 ) { if ( v82 ) { v71 = v82; v35 = v102; v81 = 0; v82 = 0; v36 = (int *)v101; v77 = v71; v85 = 0; goto LABEL_61; } v81 = 0; v85 = 0; while ( 2 ) { if ( Buf > 10 ) { if ( (unsigned __int8)(v11 - 48) <= 9u ) goto LABEL_53; if ( (unsigned __int8)(v11 - 97) > 5u ) { if ( (unsigned __int8)(v11 - 65) > 5u ) goto LABEL_110; v29 = v11 - 55; goto LABEL_54; } v29 = v11 - 87; if ( v80 >= v85 ) goto LABEL_85; LABEL_55: v30 = *(_DWORD *)(v7 + 8); v31 = *(_DWORD *)(v7 + 12); v81 = 1; if ( v30 < v31 ) goto LABEL_56; LABEL_86: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v88 = 0; if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) goto LABEL_87; LABEL_57: v33 = v99 && v91 != 0; if ( !v33 ) goto LABEL_58; LABEL_88: if ( v91[2] >= v91[3] ) { v58 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v91 = v58 == -1 ? 0 : v91; v34 = v58 == -1 && v33; goto LABEL_59; } if ( !v88 ) { LABEL_60: v35 = v102; v36 = (int *)v101; v77 = 1; goto LABEL_61; } } else { if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) goto LABEL_110; LABEL_53: v29 = v11 - 48; LABEL_54: if ( v80 < v85 ) goto LABEL_55; LABEL_85: v31 = *(_DWORD *)(v7 + 12); v81 |= ~v29 < v98 * v85; v85 = v98 * v85 + v29; v30 = *(_DWORD *)(v7 + 8); ++v86; if ( v30 >= v31 ) goto LABEL_86; LABEL_56: v32 = v30 + 1; v88 = 0; *(_DWORD *)(v7 + 8) = v32; if ( v31 > v32 ) goto LABEL_57; LABEL_87: v88 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; v7 &= v88 - 1; v33 = v99 && v91 != 0; if ( v33 ) goto LABEL_88; LABEL_58: v34 = a4 == -1; LABEL_59: if ( v34 == v88 ) goto LABEL_60; } if ( v7 ) { v40 = *(char **)(v7 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) { v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v65 != -1 ? v65 : -1; v7 &= (v65 == -1) - 1; } else { v11 = *v40; } } else { v11 = -1; } continue; } } if ( v82 ) { v35 = v102; v85 = 0; v81 = 0; v36 = (int *)v101; v77 = v82; v82 = 0; goto LABEL_61; } v81 = 0; Bufa = (void *)(v8 + 78); v85 = 0; while ( 2 ) { if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) { if ( v11 == *(_BYTE *)(v8 + 36) || (v43 = memchr(Bufa, v11, MaxCount)) == 0 ) { LABEL_110: v35 = v102; v36 = (int *)v101; v77 = 0; goto LABEL_61; } v44 = v43 - (_BYTE *)Bufa; if ( v44 > 15 ) v44 -= 6; if ( v80 >= v85 ) { v81 |= ~v44 < v98 * v85; ++v86; v85 = v98 * v85 + v44; goto LABEL_122; } v46 = *(_DWORD *)(v7 + 12); v81 = v77; v45 = *(_DWORD *)(v7 + 8); if ( v45 >= v46 ) { LABEL_131: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v47 = *(_DWORD *)(v7 + 8); v46 = *(_DWORD *)(v7 + 12); goto LABEL_124; } LABEL_123: v47 = v45 + 1; *(_DWORD *)(v7 + 8) = v47; LABEL_124: v89 = 0; if ( v46 <= v47 ) { v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v89 = v67 != -1 ? 0 : v77; v7 &= (v67 == -1) - 1; } v48 = v99 && v91 != 0; if ( v48 ) { if ( v91[2] >= v91[3] ) { v66 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v91 = v66 == -1 ? 0 : v91; v49 = v66 == -1 && v48; } else { v49 = 0; } } else { v49 = a4 == -1; } if ( v89 == v49 ) { v35 = v102; v36 = (int *)v101; goto LABEL_61; } if ( v7 ) { v50 = *(char **)(v7 + 8); if ( (unsigned int)v50 >= *(_DWORD *)(v7 + 12) ) { v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v63 != -1 ? v63 : -1; v7 &= (v63 == -1) - 1; } else { v11 = *v50; } } else { v11 = -1; } continue; } break; } v35 = v102; v36 = (int *)v101; if ( v86 ) { v90 = v102 + 1; if ( v101 == v103 ) v51 = 15; else v51 = v103[0]; if ( v90 > v51 ) { std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); v36 = (int *)v101; } v52 = v86; v86 = 0; *((_BYTE *)v36 + v35) = v52; v102 = v90; *((_BYTE *)v101 + v90) = 0; LABEL_122: v45 = *(_DWORD *)(v7 + 8); v46 = *(_DWORD *)(v7 + 12); if ( v45 >= v46 ) goto LABEL_131; goto LABEL_123; } v77 = 0; v82 = *(_BYTE *)(v8 + 16); LABEL_61: if ( v35 ) { v100 = v35 + 1; if ( v36 == v103 ) v41 = 15; else v41 = v103[0]; if ( v100 > v41 ) { std::string::_M_mutate((int)&v101, v35, 0, 0, 1u); v36 = (int *)v101; } *((_BYTE *)v36 + v35) = v86; v102 = v35 + 1; *((_BYTE *)v101 + v100) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) *a6 = 4; v36 = (int *)v101; if ( v96 || v102 | v86 ) goto LABEL_103; LABEL_64: *a7 = 0; *a6 = 4; } else { if ( !v86 && !v96 ) goto LABEL_64; LABEL_103: if ( v82 ) goto LABEL_64; if ( v81 ) { *a7 = -1; *a6 = 4; } else { if ( v76 ) v85 = -v85; *a7 = v85; } } if ( v77 ) *a6 |= 2u; if ( v36 != v103 ) operator delete(v36); return v7; } // 45E7A7: variable 'v73' is possibly undefined // 45E810: variable 'v74' is possibly undefined // 4E95A8: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (0045EB90) -------------------------------------------------------- unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { unsigned int v7; // ebx int v8; // esi int v9; // eax char v10; // dl char v11; // di char v12; // dl char v13; // al unsigned int v14; // eax unsigned int v15; // edx unsigned int v16; // eax char v17; // dl unsigned int v18; // eax _DWORD *v19; // ecx char v20; // bl unsigned int v21; // edi unsigned int v22; // eax unsigned int v23; // edx unsigned int v24; // eax bool v25; // dl char v26; // dl _DWORD *v27; // eax bool v28; // zf int v29; // eax unsigned int v30; // eax unsigned int v31; // edx unsigned int v32; // eax bool v33; // di char v34; // di size_t v35; // edi int *v36; // eax bool v38; // al char *v39; // eax char *v40; // eax unsigned int v41; // edx int v42; // edx _DWORD *v43; // eax _BYTE *v44; // eax int v45; // eax unsigned int v46; // eax unsigned int v47; // edx unsigned int v48; // eax bool v49; // di char v50; // di char *v51; // eax unsigned int v52; // edx char v53; // cl int v54; // eax char *v55; // eax char *v56; // eax std::locale::_Impl *v57; // eax std::locale::_Impl *v58; // esi int v59; // eax _DWORD *v60; // eax _DWORD *v61; // eax int v62; // eax _DWORD *v63; // eax int v64; // eax int v65; // eax int v66; // eax int v67; // eax int v68; // eax int v69; // eax int v70; // eax int v71; // eax char v72; // cl int v73; // eax void (__cdecl *v74)(void *); // [esp+4h] [ebp-84h] unsigned int v75; // [esp+8h] [ebp-80h] bool v76; // [esp+14h] [ebp-74h] size_t MaxCount; // [esp+18h] [ebp-70h] unsigned int v78; // [esp+1Ch] [ebp-6Ch] char v79; // [esp+23h] [ebp-65h] int Buf; // [esp+24h] [ebp-64h] void *Bufa; // [esp+24h] [ebp-64h] unsigned int v82; // [esp+28h] [ebp-60h] char v83; // [esp+2Ch] [ebp-5Ch] char v84; // [esp+30h] [ebp-58h] bool v85; // [esp+30h] [ebp-58h] int v86; // [esp+34h] [ebp-54h] unsigned int v87; // [esp+34h] [ebp-54h] int v88; // [esp+38h] [ebp-50h] unsigned __int8 v89; // [esp+3Ch] [ebp-4Ch] unsigned __int8 v90; // [esp+3Ch] [ebp-4Ch] char v91; // [esp+3Ch] [ebp-4Ch] size_t v92; // [esp+3Ch] [ebp-4Ch] _DWORD *v93; // [esp+40h] [ebp-48h] int *v94; // [esp+44h] [ebp-44h] bool v95; // [esp+44h] [ebp-44h] char v96; // [esp+44h] [ebp-44h] unsigned __int8 v97; // [esp+44h] [ebp-44h] bool v98; // [esp+44h] [ebp-44h] std::locale::facet *v99; // [esp+48h] [ebp-40h] unsigned int v100; // [esp+48h] [ebp-40h] bool v101; // [esp+4Ch] [ebp-3Ch] unsigned int v102; // [esp+4Ch] [ebp-3Ch] void *v103; // [esp+58h] [ebp-30h] BYREF size_t v104; // [esp+5Ch] [ebp-2Ch] int v105[10]; // [esp+60h] [ebp-28h] BYREF v7 = (unsigned int)a1; v93 = a3; v99 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); if ( !v8 ) { v57 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v74); *((_DWORD *)v57 + 1) = 0; v58 = v57; *(_DWORD *)v57 = &off_4F65A0; *((_DWORD *)v57 + 2) = 0; *((_DWORD *)v57 + 3) = 0; *((_BYTE *)v57 + 16) = 0; *((_DWORD *)v57 + 5) = 0; *((_DWORD *)v57 + 6) = 0; *((_DWORD *)v57 + 7) = 0; *((_DWORD *)v57 + 8) = 0; *((_WORD *)v57 + 18) = 0; *((_BYTE *)v57 + 100) = 0; std::__numpunct_cache::_M_cache((int)v57, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v58, v99, v75); v8 = *v94; } v100 = 8; v9 = *(_DWORD *)(a5 + 12) & 0x4A; v86 = v9; if ( v9 != 64 ) v100 = v9 == 8 ? 16 : 10; v95 = a2 == -1 && a1 != 0; if ( v95 ) { if ( a1[2] >= a1[3] ) { v70 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v96 = v70 == -1 && v95; v7 = v70 == -1 ? 0 : (unsigned int)a1; } else { v96 = 0; } } else { v96 = a2 == -1; } v101 = a4 == -1; if ( v101 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v69 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v69 == -1 && v101 && a3 != 0; v93 = v69 == -1 ? 0 : a3; } else { v10 = 0; } } else { v10 = a4 == -1; } if ( v96 == v10 ) { v76 = 0; v11 = 0; v84 = 1; v88 = 0; v98 = 0; goto LABEL_43; } if ( v7 && a2 == -1 ) { v55 = *(char **)(v7 + 8); if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) { v71 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v71 != -1 ? v71 : -1; v7 &= (v71 == -1) - 1; } else { v11 = *v55; } } else { v11 = a2; } v12 = *(_BYTE *)(v8 + 74); v13 = *(_BYTE *)(v8 + 16); v76 = v12 == v11; if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) { if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) { v14 = *(_DWORD *)(v7 + 8); v15 = *(_DWORD *)(v7 + 12); if ( v14 >= v15 ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v16 = *(_DWORD *)(v7 + 8); v15 = *(_DWORD *)(v7 + 12); } else { v16 = v14 + 1; *(_DWORD *)(v7 + 8) = v16; } v97 = 0; if ( v16 >= v15 ) { v97 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; v7 &= v97 - 1; } if ( v101 && v93 != 0 ) { if ( v93[2] >= v93[3] ) { v73 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); v17 = v73 == -1 && v101 && v93 != 0; v93 = v73 == -1 ? 0 : v93; } else { v17 = 0; } } else { v17 = a4 == -1; } if ( v17 == v97 ) { v18 = v100; v84 = 1; v88 = 0; v98 = 0; if ( v100 != 16 ) goto LABEL_44; goto LABEL_25; } v11 = -1; if ( v7 ) { v56 = *(char **)(v7 + 8); if ( (unsigned int)v56 >= *(_DWORD *)(v7 + 12) ) { v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v65 != -1 ? v65 : -1; v7 &= (v65 == -1) - 1; } else { v11 = *v56; } } v13 = *(_BYTE *)(v8 + 16); } } else { v76 = 0; } v88 = 0; v19 = (_DWORD *)v7; v20 = v11; v98 = 0; v21 = (unsigned int)v19; while ( 1 ) { if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) { LABEL_111: v43 = (_DWORD *)v21; v84 = 0; v11 = v20; v7 = (unsigned int)v43; goto LABEL_43; } if ( *(_BYTE *)(v8 + 78) != v20 ) { if ( !v98 ) goto LABEL_111; LABEL_33: if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) { v60 = (_DWORD *)v21; v84 = 0; v11 = v20; v98 = 1; v7 = (unsigned int)v60; goto LABEL_43; } if ( v86 != 0 && v100 != 16 ) { v84 = 0; v61 = (_DWORD *)v21; v11 = v20; v7 = (unsigned int)v61; v98 = 1; MaxCount = v100; Buf = v100; goto LABEL_45; } v88 = 0; v98 = 0; v100 = 16; LABEL_37: v22 = *(_DWORD *)(v21 + 8); v23 = *(_DWORD *)(v21 + 12); if ( v22 < v23 ) goto LABEL_38; goto LABEL_73; } v38 = !v98 || v100 == 10; if ( !v38 ) goto LABEL_33; v98 = v86 == 0 || v100 == 8; if ( !v98 ) { ++v88; v98 = v38; goto LABEL_37; } v22 = *(_DWORD *)(v21 + 8); v23 = *(_DWORD *)(v21 + 12); v88 = 0; v100 = 8; if ( v22 < v23 ) { LABEL_38: v24 = v22 + 1; v89 = 0; *(_DWORD *)(v21 + 8) = v24; if ( v24 < v23 ) goto LABEL_39; goto LABEL_74; } LABEL_73: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); v89 = 0; if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) { LABEL_39: v25 = v101 && v93 != 0; if ( !v25 ) goto LABEL_40; goto LABEL_75; } LABEL_74: v89 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; v21 &= v89 - 1; v25 = v101 && v93 != 0; if ( !v25 ) { LABEL_40: v26 = a4 == -1; goto LABEL_41; } LABEL_75: if ( v93[2] >= v93[3] ) { v85 = v25; v54 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); v26 = v54 == -1 && v85; v93 = v54 == -1 ? 0 : v93; LABEL_41: if ( v26 == v89 ) goto LABEL_42; goto LABEL_77; } if ( !v89 ) { LABEL_42: v27 = (_DWORD *)v21; v11 = v20; v84 = 1; v7 = (unsigned int)v27; goto LABEL_43; } LABEL_77: v20 = -1; if ( v21 ) { v39 = *(char **)(v21 + 8); if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) { v62 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); v20 = v62 != -1 ? v62 : -1; v21 &= (v62 == -1) - 1; } else { v20 = *v39; } } if ( !v98 ) break; v13 = *(_BYTE *)(v8 + 16); } v63 = (_DWORD *)v21; v84 = 0; v11 = v20; v7 = (unsigned int)v63; LABEL_43: v18 = v100; if ( v100 == 16 ) { LABEL_25: MaxCount = 22; Buf = 22; goto LABEL_45; } LABEL_44: MaxCount = v18; Buf = v18; LABEL_45: v28 = *(_BYTE *)(v8 + 16) == 0; v104 = 0; v103 = v105; LOBYTE(v105[0]) = 0; if ( !v28 ) std::string::reserve(&v103, 0x20u); v78 = v76 + 0x7FFFFFFF; v82 = v78 / v100; v79 = *(_BYTE *)(v8 + 100); if ( !v79 ) { if ( v84 ) { v72 = v84; v35 = v104; v83 = 0; v84 = 0; v36 = (int *)v103; v79 = v72; v87 = 0; goto LABEL_61; } v83 = 0; v87 = 0; while ( 2 ) { if ( Buf > 10 ) { if ( (unsigned __int8)(v11 - 48) <= 9u ) goto LABEL_53; if ( (unsigned __int8)(v11 - 97) > 5u ) { if ( (unsigned __int8)(v11 - 65) > 5u ) goto LABEL_110; v29 = v11 - 55; goto LABEL_54; } v29 = v11 - 87; if ( v82 >= v87 ) goto LABEL_85; LABEL_55: v30 = *(_DWORD *)(v7 + 8); v31 = *(_DWORD *)(v7 + 12); v83 = 1; if ( v30 < v31 ) goto LABEL_56; LABEL_86: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v90 = 0; if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) goto LABEL_87; LABEL_57: v33 = v101 && v93 != 0; if ( !v33 ) goto LABEL_58; LABEL_88: if ( v93[2] >= v93[3] ) { v59 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); v93 = v59 == -1 ? 0 : v93; v34 = v59 == -1 && v33; goto LABEL_59; } if ( !v90 ) { LABEL_60: v35 = v104; v36 = (int *)v103; v79 = 1; goto LABEL_61; } } else { if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) goto LABEL_110; LABEL_53: v29 = v11 - 48; LABEL_54: if ( v82 < v87 ) goto LABEL_55; LABEL_85: v31 = *(_DWORD *)(v7 + 12); v83 |= v78 - v29 < v100 * v87; v87 = v100 * v87 + v29; v30 = *(_DWORD *)(v7 + 8); ++v88; if ( v30 >= v31 ) goto LABEL_86; LABEL_56: v32 = v30 + 1; v90 = 0; *(_DWORD *)(v7 + 8) = v32; if ( v32 < v31 ) goto LABEL_57; LABEL_87: v90 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; v7 &= v90 - 1; v33 = v101 && v93 != 0; if ( v33 ) goto LABEL_88; LABEL_58: v34 = a4 == -1; LABEL_59: if ( v34 == v90 ) goto LABEL_60; } if ( v7 ) { v40 = *(char **)(v7 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) { v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v66 != -1 ? v66 : -1; v7 &= (v66 == -1) - 1; } else { v11 = *v40; } } else { v11 = -1; } continue; } } if ( v84 ) { v35 = v104; v87 = 0; v83 = 0; v36 = (int *)v103; v79 = v84; v84 = 0; goto LABEL_61; } v83 = 0; Bufa = (void *)(v8 + 78); v87 = 0; while ( 2 ) { if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) { if ( v11 == *(_BYTE *)(v8 + 36) || (v44 = memchr(Bufa, v11, MaxCount)) == 0 ) { LABEL_110: v35 = v104; v36 = (int *)v103; v79 = 0; goto LABEL_61; } v45 = v44 - (_BYTE *)Bufa; if ( v45 > 15 ) v45 -= 6; if ( v82 >= v87 ) { v83 |= v78 - v45 < v100 * v87; ++v88; v87 = v100 * v87 + v45; goto LABEL_122; } v47 = *(_DWORD *)(v7 + 12); v83 = v79; v46 = *(_DWORD *)(v7 + 8); if ( v46 >= v47 ) { LABEL_131: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v48 = *(_DWORD *)(v7 + 8); v47 = *(_DWORD *)(v7 + 12); goto LABEL_124; } LABEL_123: v48 = v46 + 1; *(_DWORD *)(v7 + 8) = v48; LABEL_124: v91 = 0; if ( v47 <= v48 ) { v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v91 = v68 != -1 ? 0 : v79; v7 &= (v68 == -1) - 1; } v49 = v101 && v93 != 0; if ( v49 ) { if ( v93[2] >= v93[3] ) { v67 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); v93 = v67 == -1 ? 0 : v93; v50 = v67 == -1 && v49; } else { v50 = 0; } } else { v50 = a4 == -1; } if ( v91 == v50 ) { v35 = v104; v36 = (int *)v103; goto LABEL_61; } if ( v7 ) { v51 = *(char **)(v7 + 8); if ( (unsigned int)v51 >= *(_DWORD *)(v7 + 12) ) { v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v64 != -1 ? v64 : -1; v7 &= (v64 == -1) - 1; } else { v11 = *v51; } } else { v11 = -1; } continue; } break; } v35 = v104; v36 = (int *)v103; if ( v88 ) { v92 = v104 + 1; if ( v103 == v105 ) v52 = 15; else v52 = v105[0]; if ( v92 > v52 ) { std::string::_M_mutate((int)&v103, v104, 0, 0, 1u); v36 = (int *)v103; } v53 = v88; v88 = 0; *((_BYTE *)v36 + v35) = v53; v104 = v92; *((_BYTE *)v103 + v92) = 0; LABEL_122: v46 = *(_DWORD *)(v7 + 8); v47 = *(_DWORD *)(v7 + 12); if ( v46 >= v47 ) goto LABEL_131; goto LABEL_123; } v79 = 0; v84 = *(_BYTE *)(v8 + 16); LABEL_61: if ( v35 ) { v102 = v35 + 1; if ( v36 == v105 ) v41 = 15; else v41 = v105[0]; if ( v102 > v41 ) { std::string::_M_mutate((int)&v103, v35, 0, 0, 1u); v36 = (int *)v103; } *((_BYTE *)v36 + v35) = v88; v104 = v35 + 1; *((_BYTE *)v103 + v102) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v103) ) *a6 = 4; v36 = (int *)v103; if ( v98 || v104 | v88 ) goto LABEL_103; LABEL_64: *a7 = 0; *a6 = 4; } else { if ( !v88 && !v98 ) goto LABEL_64; LABEL_103: if ( v84 ) goto LABEL_64; if ( v83 ) { *a7 = v76 + 0x7FFFFFFF; *a6 = 4; } else { v42 = v87; if ( v76 ) v42 = -v87; *a7 = v42; } } if ( v79 ) *a6 |= 2u; if ( v36 != v105 ) operator delete(v36); return v7; } // 45F4E7: variable 'v74' is possibly undefined // 45F550: variable 'v75' is possibly undefined // 4E95A8: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (0045F8D0) -------------------------------------------------------- unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned int *a7) { unsigned int v7; // ebx int v8; // esi int v9; // eax char v10; // dl char v11; // di char v12; // dl char v13; // al unsigned int v14; // eax unsigned int v15; // edx unsigned int v16; // eax char v17; // dl unsigned int v18; // eax _DWORD *v19; // ecx char v20; // bl unsigned int v21; // edi unsigned int v22; // eax unsigned int v23; // edx unsigned int v24; // eax bool v25; // dl char v26; // dl _DWORD *v27; // eax bool v28; // zf int v29; // eax unsigned int v30; // eax unsigned int v31; // edx unsigned int v32; // eax bool v33; // di char v34; // di size_t v35; // edi int *v36; // eax bool v38; // al char *v39; // eax char *v40; // eax unsigned int v41; // edx _DWORD *v42; // eax _BYTE *v43; // eax int v44; // eax unsigned int v45; // eax unsigned int v46; // edx unsigned int v47; // eax bool v48; // di char v49; // di char *v50; // eax unsigned int v51; // edx char v52; // cl int v53; // eax char *v54; // eax char *v55; // eax std::locale::_Impl *v56; // eax std::locale::_Impl *v57; // esi int v58; // eax _DWORD *v59; // eax _DWORD *v60; // eax int v61; // eax _DWORD *v62; // eax int v63; // eax int v64; // eax int v65; // eax int v66; // eax int v67; // eax int v68; // eax int v69; // eax int v70; // eax char v71; // cl int v72; // eax void (__cdecl *v73)(void *); // [esp+4h] [ebp-84h] unsigned int v74; // [esp+8h] [ebp-80h] size_t MaxCount; // [esp+1Ch] [ebp-6Ch] bool v76; // [esp+22h] [ebp-66h] char v77; // [esp+23h] [ebp-65h] int Buf; // [esp+24h] [ebp-64h] void *Bufa; // [esp+24h] [ebp-64h] unsigned int v80; // [esp+28h] [ebp-60h] char v81; // [esp+2Ch] [ebp-5Ch] char v82; // [esp+30h] [ebp-58h] bool v83; // [esp+30h] [ebp-58h] int v84; // [esp+34h] [ebp-54h] unsigned int v85; // [esp+34h] [ebp-54h] int v86; // [esp+38h] [ebp-50h] unsigned __int8 v87; // [esp+3Ch] [ebp-4Ch] unsigned __int8 v88; // [esp+3Ch] [ebp-4Ch] char v89; // [esp+3Ch] [ebp-4Ch] size_t v90; // [esp+3Ch] [ebp-4Ch] _DWORD *v91; // [esp+40h] [ebp-48h] int *v92; // [esp+44h] [ebp-44h] bool v93; // [esp+44h] [ebp-44h] char v94; // [esp+44h] [ebp-44h] unsigned __int8 v95; // [esp+44h] [ebp-44h] bool v96; // [esp+44h] [ebp-44h] std::locale::facet *v97; // [esp+48h] [ebp-40h] unsigned int v98; // [esp+48h] [ebp-40h] bool v99; // [esp+4Ch] [ebp-3Ch] unsigned int v100; // [esp+4Ch] [ebp-3Ch] void *v101; // [esp+58h] [ebp-30h] BYREF size_t v102; // [esp+5Ch] [ebp-2Ch] int v103[10]; // [esp+60h] [ebp-28h] BYREF v7 = (unsigned int)a1; v91 = a3; v97 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); v92 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); if ( !v8 ) { v56 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v73); *((_DWORD *)v56 + 1) = 0; v57 = v56; *(_DWORD *)v56 = &off_4F65A0; *((_DWORD *)v56 + 2) = 0; *((_DWORD *)v56 + 3) = 0; *((_BYTE *)v56 + 16) = 0; *((_DWORD *)v56 + 5) = 0; *((_DWORD *)v56 + 6) = 0; *((_DWORD *)v56 + 7) = 0; *((_DWORD *)v56 + 8) = 0; *((_WORD *)v56 + 18) = 0; *((_BYTE *)v56 + 100) = 0; std::__numpunct_cache::_M_cache((int)v56, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v57, v97, v74); v8 = *v92; } v98 = 8; v9 = *(_DWORD *)(a5 + 12) & 0x4A; v84 = v9; if ( v9 != 64 ) v98 = v9 == 8 ? 16 : 10; v93 = a2 == -1 && a1 != 0; if ( v93 ) { if ( a1[2] >= a1[3] ) { v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v94 = v69 == -1 && v93; v7 = v69 == -1 ? 0 : (unsigned int)a1; } else { v94 = 0; } } else { v94 = a2 == -1; } v99 = a4 == -1; if ( v99 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v68 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v68 == -1 && v99 && a3 != 0; v91 = v68 == -1 ? 0 : a3; } else { v10 = 0; } } else { v10 = a4 == -1; } if ( v94 == v10 ) { v76 = 0; v11 = 0; v82 = 1; v86 = 0; v96 = 0; goto LABEL_43; } if ( v7 && a2 == -1 ) { v54 = *(char **)(v7 + 8); if ( (unsigned int)v54 >= *(_DWORD *)(v7 + 12) ) { v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v70 != -1 ? v70 : -1; v7 &= (v70 == -1) - 1; } else { v11 = *v54; } } else { v11 = a2; } v12 = *(_BYTE *)(v8 + 74); v13 = *(_BYTE *)(v8 + 16); v76 = v12 == v11; if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) { if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) { v14 = *(_DWORD *)(v7 + 8); v15 = *(_DWORD *)(v7 + 12); if ( v14 >= v15 ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v16 = *(_DWORD *)(v7 + 8); v15 = *(_DWORD *)(v7 + 12); } else { v16 = v14 + 1; *(_DWORD *)(v7 + 8) = v16; } v95 = 0; if ( v16 >= v15 ) { v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; v7 &= v95 - 1; } if ( v99 && v91 != 0 ) { if ( v91[2] >= v91[3] ) { v72 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v17 = v72 == -1 && v99 && v91 != 0; v91 = v72 == -1 ? 0 : v91; } else { v17 = 0; } } else { v17 = a4 == -1; } if ( v95 == v17 ) { v18 = v98; v82 = 1; v86 = 0; v96 = 0; if ( v98 != 16 ) goto LABEL_44; goto LABEL_25; } v11 = -1; if ( v7 ) { v55 = *(char **)(v7 + 8); if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) { v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v64 != -1 ? v64 : -1; v7 &= (v64 == -1) - 1; } else { v11 = *v55; } } v13 = *(_BYTE *)(v8 + 16); } } else { v76 = 0; } v86 = 0; v19 = (_DWORD *)v7; v20 = v11; v96 = 0; v21 = (unsigned int)v19; while ( 1 ) { if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) { LABEL_111: v42 = (_DWORD *)v21; v82 = 0; v11 = v20; v7 = (unsigned int)v42; goto LABEL_43; } if ( *(_BYTE *)(v8 + 78) != v20 ) { if ( !v96 ) goto LABEL_111; LABEL_33: if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) { v59 = (_DWORD *)v21; v82 = 0; v11 = v20; v96 = 1; v7 = (unsigned int)v59; goto LABEL_43; } if ( v84 != 0 && v98 != 16 ) { v82 = 0; v60 = (_DWORD *)v21; v11 = v20; v7 = (unsigned int)v60; v96 = 1; MaxCount = v98; Buf = v98; goto LABEL_45; } v86 = 0; v96 = 0; v98 = 16; LABEL_37: v22 = *(_DWORD *)(v21 + 8); v23 = *(_DWORD *)(v21 + 12); if ( v22 < v23 ) goto LABEL_38; goto LABEL_73; } v38 = !v96 || v98 == 10; if ( !v38 ) goto LABEL_33; v96 = v84 == 0 || v98 == 8; if ( !v96 ) { ++v86; v96 = v38; goto LABEL_37; } v22 = *(_DWORD *)(v21 + 8); v23 = *(_DWORD *)(v21 + 12); v86 = 0; v98 = 8; if ( v22 < v23 ) { LABEL_38: v24 = v22 + 1; v87 = 0; *(_DWORD *)(v21 + 8) = v24; if ( v24 < v23 ) goto LABEL_39; goto LABEL_74; } LABEL_73: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); v87 = 0; if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) { LABEL_39: v25 = v99 && v91 != 0; if ( !v25 ) goto LABEL_40; goto LABEL_75; } LABEL_74: v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; v21 &= v87 - 1; v25 = v99 && v91 != 0; if ( !v25 ) { LABEL_40: v26 = a4 == -1; goto LABEL_41; } LABEL_75: if ( v91[2] >= v91[3] ) { v83 = v25; v53 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v26 = v53 == -1 && v83; v91 = v53 == -1 ? 0 : v91; LABEL_41: if ( v26 == v87 ) goto LABEL_42; goto LABEL_77; } if ( !v87 ) { LABEL_42: v27 = (_DWORD *)v21; v11 = v20; v82 = 1; v7 = (unsigned int)v27; goto LABEL_43; } LABEL_77: v20 = -1; if ( v21 ) { v39 = *(char **)(v21 + 8); if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) { v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); v20 = v61 != -1 ? v61 : -1; v21 &= (v61 == -1) - 1; } else { v20 = *v39; } } if ( !v96 ) break; v13 = *(_BYTE *)(v8 + 16); } v62 = (_DWORD *)v21; v82 = 0; v11 = v20; v7 = (unsigned int)v62; LABEL_43: v18 = v98; if ( v98 == 16 ) { LABEL_25: MaxCount = 22; Buf = 22; goto LABEL_45; } LABEL_44: MaxCount = v18; Buf = v18; LABEL_45: v28 = *(_BYTE *)(v8 + 16) == 0; v102 = 0; v101 = v103; LOBYTE(v103[0]) = 0; if ( !v28 ) std::string::reserve(&v101, 0x20u); v80 = 0xFFFFFFFF / v98; v77 = *(_BYTE *)(v8 + 100); if ( !v77 ) { if ( v82 ) { v71 = v82; v35 = v102; v81 = 0; v82 = 0; v36 = (int *)v101; v77 = v71; v85 = 0; goto LABEL_61; } v81 = 0; v85 = 0; while ( 2 ) { if ( Buf > 10 ) { if ( (unsigned __int8)(v11 - 48) <= 9u ) goto LABEL_53; if ( (unsigned __int8)(v11 - 97) > 5u ) { if ( (unsigned __int8)(v11 - 65) > 5u ) goto LABEL_110; v29 = v11 - 55; goto LABEL_54; } v29 = v11 - 87; if ( v80 >= v85 ) goto LABEL_85; LABEL_55: v30 = *(_DWORD *)(v7 + 8); v31 = *(_DWORD *)(v7 + 12); v81 = 1; if ( v30 < v31 ) goto LABEL_56; LABEL_86: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v88 = 0; if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) goto LABEL_87; LABEL_57: v33 = v99 && v91 != 0; if ( !v33 ) goto LABEL_58; LABEL_88: if ( v91[2] >= v91[3] ) { v58 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v91 = v58 == -1 ? 0 : v91; v34 = v58 == -1 && v33; goto LABEL_59; } if ( !v88 ) { LABEL_60: v35 = v102; v36 = (int *)v101; v77 = 1; goto LABEL_61; } } else { if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) goto LABEL_110; LABEL_53: v29 = v11 - 48; LABEL_54: if ( v80 < v85 ) goto LABEL_55; LABEL_85: v31 = *(_DWORD *)(v7 + 12); v81 |= ~v29 < v98 * v85; v85 = v98 * v85 + v29; v30 = *(_DWORD *)(v7 + 8); ++v86; if ( v30 >= v31 ) goto LABEL_86; LABEL_56: v32 = v30 + 1; v88 = 0; *(_DWORD *)(v7 + 8) = v32; if ( v31 > v32 ) goto LABEL_57; LABEL_87: v88 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; v7 &= v88 - 1; v33 = v99 && v91 != 0; if ( v33 ) goto LABEL_88; LABEL_58: v34 = a4 == -1; LABEL_59: if ( v34 == v88 ) goto LABEL_60; } if ( v7 ) { v40 = *(char **)(v7 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) { v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v65 != -1 ? v65 : -1; v7 &= (v65 == -1) - 1; } else { v11 = *v40; } } else { v11 = -1; } continue; } } if ( v82 ) { v35 = v102; v85 = 0; v81 = 0; v36 = (int *)v101; v77 = v82; v82 = 0; goto LABEL_61; } v81 = 0; Bufa = (void *)(v8 + 78); v85 = 0; while ( 2 ) { if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) { if ( v11 == *(_BYTE *)(v8 + 36) || (v43 = memchr(Bufa, v11, MaxCount)) == 0 ) { LABEL_110: v35 = v102; v36 = (int *)v101; v77 = 0; goto LABEL_61; } v44 = v43 - (_BYTE *)Bufa; if ( v44 > 15 ) v44 -= 6; if ( v80 >= v85 ) { v81 |= ~v44 < v98 * v85; ++v86; v85 = v98 * v85 + v44; goto LABEL_122; } v46 = *(_DWORD *)(v7 + 12); v81 = v77; v45 = *(_DWORD *)(v7 + 8); if ( v45 >= v46 ) { LABEL_131: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v47 = *(_DWORD *)(v7 + 8); v46 = *(_DWORD *)(v7 + 12); goto LABEL_124; } LABEL_123: v47 = v45 + 1; *(_DWORD *)(v7 + 8) = v47; LABEL_124: v89 = 0; if ( v46 <= v47 ) { v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v89 = v67 != -1 ? 0 : v77; v7 &= (v67 == -1) - 1; } v48 = v99 && v91 != 0; if ( v48 ) { if ( v91[2] >= v91[3] ) { v66 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v91 = v66 == -1 ? 0 : v91; v49 = v66 == -1 && v48; } else { v49 = 0; } } else { v49 = a4 == -1; } if ( v89 == v49 ) { v35 = v102; v36 = (int *)v101; goto LABEL_61; } if ( v7 ) { v50 = *(char **)(v7 + 8); if ( (unsigned int)v50 >= *(_DWORD *)(v7 + 12) ) { v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v63 != -1 ? v63 : -1; v7 &= (v63 == -1) - 1; } else { v11 = *v50; } } else { v11 = -1; } continue; } break; } v35 = v102; v36 = (int *)v101; if ( v86 ) { v90 = v102 + 1; if ( v101 == v103 ) v51 = 15; else v51 = v103[0]; if ( v90 > v51 ) { std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); v36 = (int *)v101; } v52 = v86; v86 = 0; *((_BYTE *)v36 + v35) = v52; v102 = v90; *((_BYTE *)v101 + v90) = 0; LABEL_122: v45 = *(_DWORD *)(v7 + 8); v46 = *(_DWORD *)(v7 + 12); if ( v45 >= v46 ) goto LABEL_131; goto LABEL_123; } v77 = 0; v82 = *(_BYTE *)(v8 + 16); LABEL_61: if ( v35 ) { v100 = v35 + 1; if ( v36 == v103 ) v41 = 15; else v41 = v103[0]; if ( v100 > v41 ) { std::string::_M_mutate((int)&v101, v35, 0, 0, 1u); v36 = (int *)v101; } *((_BYTE *)v36 + v35) = v86; v102 = v35 + 1; *((_BYTE *)v101 + v100) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) *a6 = 4; v36 = (int *)v101; if ( v96 || v102 | v86 ) goto LABEL_103; LABEL_64: *a7 = 0; *a6 = 4; } else { if ( !v86 && !v96 ) goto LABEL_64; LABEL_103: if ( v82 ) goto LABEL_64; if ( v81 ) { *a7 = -1; *a6 = 4; } else { if ( v76 ) v85 = -v85; *a7 = v85; } } if ( v77 ) *a6 |= 2u; if ( v36 != v103 ) operator delete(v36); return v7; } // 460207: variable 'v73' is possibly undefined // 460270: variable 'v74' is possibly undefined // 4E95A8: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (004605F0) -------------------------------------------------------- unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned __int16 *a7) { unsigned int v7; // ebx int v8; // esi int v9; // eax char v10; // dl char v11; // di char v12; // dl char v13; // al unsigned int v14; // eax unsigned int v15; // edx unsigned int v16; // eax char v17; // dl int v18; // eax _DWORD *v19; // ecx char v20; // bl unsigned int v21; // edi unsigned int v22; // eax unsigned int v23; // edx unsigned int v24; // eax bool v25; // dl char v26; // dl _DWORD *v27; // eax bool v28; // zf int v29; // eax unsigned int v30; // eax unsigned int v31; // edx unsigned int v32; // eax bool v33; // di char v34; // di size_t v35; // edi int *v36; // eax bool v38; // al char *v39; // eax char *v40; // eax unsigned int v41; // edx _DWORD *v42; // eax _BYTE *v43; // eax int v44; // eax unsigned int v45; // eax unsigned int v46; // edx unsigned int v47; // eax bool v48; // di char v49; // di char *v50; // eax unsigned int v51; // edx char v52; // cl int v53; // eax char *v54; // eax char *v55; // eax std::locale::_Impl *v56; // eax std::locale::_Impl *v57; // esi int v58; // eax _DWORD *v59; // eax _DWORD *v60; // eax int v61; // eax _DWORD *v62; // eax int v63; // eax int v64; // eax int v65; // eax int v66; // eax int v67; // eax int v68; // eax int v69; // eax int v70; // eax char v71; // cl int v72; // eax void (__cdecl *v73)(void *); // [esp+4h] [ebp-84h] unsigned int v74; // [esp+8h] [ebp-80h] size_t MaxCount; // [esp+1Ch] [ebp-6Ch] bool v76; // [esp+22h] [ebp-66h] char v77; // [esp+23h] [ebp-65h] int Buf; // [esp+24h] [ebp-64h] void *Bufa; // [esp+24h] [ebp-64h] int v80; // [esp+28h] [ebp-60h] char v81; // [esp+2Ch] [ebp-5Ch] char v82; // [esp+30h] [ebp-58h] bool v83; // [esp+30h] [ebp-58h] int v84; // [esp+34h] [ebp-54h] unsigned __int16 v85; // [esp+34h] [ebp-54h] int v86; // [esp+38h] [ebp-50h] unsigned __int8 v87; // [esp+3Ch] [ebp-4Ch] unsigned __int8 v88; // [esp+3Ch] [ebp-4Ch] char v89; // [esp+3Ch] [ebp-4Ch] size_t v90; // [esp+3Ch] [ebp-4Ch] _DWORD *v91; // [esp+40h] [ebp-48h] int *v92; // [esp+44h] [ebp-44h] bool v93; // [esp+44h] [ebp-44h] char v94; // [esp+44h] [ebp-44h] unsigned __int8 v95; // [esp+44h] [ebp-44h] bool v96; // [esp+44h] [ebp-44h] std::locale::facet *v97; // [esp+48h] [ebp-40h] int v98; // [esp+48h] [ebp-40h] bool v99; // [esp+4Ch] [ebp-3Ch] unsigned int v100; // [esp+4Ch] [ebp-3Ch] void *v101; // [esp+58h] [ebp-30h] BYREF size_t v102; // [esp+5Ch] [ebp-2Ch] int v103[10]; // [esp+60h] [ebp-28h] BYREF v7 = (unsigned int)a1; v91 = a3; v97 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); v92 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); if ( !v8 ) { v56 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v73); *((_DWORD *)v56 + 1) = 0; v57 = v56; *(_DWORD *)v56 = &off_4F65A0; *((_DWORD *)v56 + 2) = 0; *((_DWORD *)v56 + 3) = 0; *((_BYTE *)v56 + 16) = 0; *((_DWORD *)v56 + 5) = 0; *((_DWORD *)v56 + 6) = 0; *((_DWORD *)v56 + 7) = 0; *((_DWORD *)v56 + 8) = 0; *((_WORD *)v56 + 18) = 0; *((_BYTE *)v56 + 100) = 0; std::__numpunct_cache::_M_cache((int)v56, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v57, v97, v74); v8 = *v92; } v98 = 8; v9 = *(_DWORD *)(a5 + 12) & 0x4A; v84 = v9; if ( v9 != 64 ) v98 = v9 == 8 ? 16 : 10; v93 = a2 == -1 && a1 != 0; if ( v93 ) { if ( a1[2] >= a1[3] ) { v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v94 = v69 == -1 && v93; v7 = v69 == -1 ? 0 : (unsigned int)a1; } else { v94 = 0; } } else { v94 = a2 == -1; } v99 = a4 == -1; if ( v99 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v68 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v68 == -1 && v99 && a3 != 0; v91 = v68 == -1 ? 0 : a3; } else { v10 = 0; } } else { v10 = a4 == -1; } if ( v94 == v10 ) { v76 = 0; v11 = 0; v82 = 1; v86 = 0; v96 = 0; goto LABEL_43; } if ( v7 && a2 == -1 ) { v54 = *(char **)(v7 + 8); if ( (unsigned int)v54 >= *(_DWORD *)(v7 + 12) ) { v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v70 != -1 ? v70 : -1; v7 &= (v70 == -1) - 1; } else { v11 = *v54; } } else { v11 = a2; } v12 = *(_BYTE *)(v8 + 74); v13 = *(_BYTE *)(v8 + 16); v76 = v12 == v11; if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) { if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) { v14 = *(_DWORD *)(v7 + 8); v15 = *(_DWORD *)(v7 + 12); if ( v14 >= v15 ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v16 = *(_DWORD *)(v7 + 8); v15 = *(_DWORD *)(v7 + 12); } else { v16 = v14 + 1; *(_DWORD *)(v7 + 8) = v16; } v95 = 0; if ( v16 >= v15 ) { v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; v7 &= v95 - 1; } if ( v99 && v91 != 0 ) { if ( v91[2] >= v91[3] ) { v72 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v17 = v72 == -1 && v99 && v91 != 0; v91 = v72 == -1 ? 0 : v91; } else { v17 = 0; } } else { v17 = a4 == -1; } if ( v95 == v17 ) { v18 = v98; v82 = 1; v86 = 0; v96 = 0; if ( v98 != 16 ) goto LABEL_44; goto LABEL_25; } v11 = -1; if ( v7 ) { v55 = *(char **)(v7 + 8); if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) { v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v64 != -1 ? v64 : -1; v7 &= (v64 == -1) - 1; } else { v11 = *v55; } } v13 = *(_BYTE *)(v8 + 16); } } else { v76 = 0; } v86 = 0; v19 = (_DWORD *)v7; v20 = v11; v96 = 0; v21 = (unsigned int)v19; while ( 1 ) { if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) { LABEL_111: v42 = (_DWORD *)v21; v82 = 0; v11 = v20; v7 = (unsigned int)v42; goto LABEL_43; } if ( *(_BYTE *)(v8 + 78) != v20 ) { if ( !v96 ) goto LABEL_111; LABEL_33: if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) { v59 = (_DWORD *)v21; v82 = 0; v11 = v20; v96 = 1; v7 = (unsigned int)v59; goto LABEL_43; } if ( v84 != 0 && v98 != 16 ) { v82 = 0; v60 = (_DWORD *)v21; v11 = v20; v7 = (unsigned int)v60; v96 = 1; MaxCount = v98; Buf = v98; goto LABEL_45; } v86 = 0; v96 = 0; v98 = 16; LABEL_37: v22 = *(_DWORD *)(v21 + 8); v23 = *(_DWORD *)(v21 + 12); if ( v22 < v23 ) goto LABEL_38; goto LABEL_73; } v38 = !v96 || v98 == 10; if ( !v38 ) goto LABEL_33; v96 = v84 == 0 || v98 == 8; if ( !v96 ) { ++v86; v96 = v38; goto LABEL_37; } v22 = *(_DWORD *)(v21 + 8); v23 = *(_DWORD *)(v21 + 12); v86 = 0; v98 = 8; if ( v22 < v23 ) { LABEL_38: v24 = v22 + 1; v87 = 0; *(_DWORD *)(v21 + 8) = v24; if ( v24 < v23 ) goto LABEL_39; goto LABEL_74; } LABEL_73: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); v87 = 0; if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) { LABEL_39: v25 = v99 && v91 != 0; if ( !v25 ) goto LABEL_40; goto LABEL_75; } LABEL_74: v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; v21 &= v87 - 1; v25 = v99 && v91 != 0; if ( !v25 ) { LABEL_40: v26 = a4 == -1; goto LABEL_41; } LABEL_75: if ( v91[2] >= v91[3] ) { v83 = v25; v53 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v26 = v53 == -1 && v83; v91 = v53 == -1 ? 0 : v91; LABEL_41: if ( v26 == v87 ) goto LABEL_42; goto LABEL_77; } if ( !v87 ) { LABEL_42: v27 = (_DWORD *)v21; v11 = v20; v82 = 1; v7 = (unsigned int)v27; goto LABEL_43; } LABEL_77: v20 = -1; if ( v21 ) { v39 = *(char **)(v21 + 8); if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) { v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); v20 = v61 != -1 ? v61 : -1; v21 &= (v61 == -1) - 1; } else { v20 = *v39; } } if ( !v96 ) break; v13 = *(_BYTE *)(v8 + 16); } v62 = (_DWORD *)v21; v82 = 0; v11 = v20; v7 = (unsigned int)v62; LABEL_43: v18 = v98; if ( v98 == 16 ) { LABEL_25: MaxCount = 22; Buf = 22; goto LABEL_45; } LABEL_44: MaxCount = v18; Buf = v18; LABEL_45: v28 = *(_BYTE *)(v8 + 16) == 0; v102 = 0; v101 = v103; LOBYTE(v103[0]) = 0; if ( !v28 ) std::string::reserve(&v101, 0x20u); v80 = 0xFFFF / v98; v77 = *(_BYTE *)(v8 + 100); if ( !v77 ) { if ( v82 ) { v71 = v82; v35 = v102; v81 = 0; v82 = 0; v36 = (int *)v101; v77 = v71; v85 = 0; goto LABEL_61; } v81 = 0; v85 = 0; while ( 2 ) { if ( Buf > 10 ) { if ( (unsigned __int8)(v11 - 48) <= 9u ) goto LABEL_53; if ( (unsigned __int8)(v11 - 97) > 5u ) { if ( (unsigned __int8)(v11 - 65) > 5u ) goto LABEL_110; v29 = v11 - 55; goto LABEL_54; } v29 = v11 - 87; if ( (unsigned __int16)v80 >= v85 ) goto LABEL_85; LABEL_55: v30 = *(_DWORD *)(v7 + 8); v31 = *(_DWORD *)(v7 + 12); v81 = 1; if ( v30 < v31 ) goto LABEL_56; LABEL_86: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v88 = 0; if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) goto LABEL_87; LABEL_57: v33 = v99 && v91 != 0; if ( !v33 ) goto LABEL_58; LABEL_88: if ( v91[2] >= v91[3] ) { v58 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v91 = v58 == -1 ? 0 : v91; v34 = v58 == -1 && v33; goto LABEL_59; } if ( !v88 ) { LABEL_60: v35 = v102; v36 = (int *)v101; v77 = 1; goto LABEL_61; } } else { if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) goto LABEL_110; LABEL_53: v29 = v11 - 48; LABEL_54: if ( (unsigned __int16)v80 < v85 ) goto LABEL_55; LABEL_85: v31 = *(_DWORD *)(v7 + 12); v81 |= (unsigned __int16)(v98 * v85) > 0xFFFF - v29; v85 = v98 * v85 + v29; v30 = *(_DWORD *)(v7 + 8); ++v86; if ( v30 >= v31 ) goto LABEL_86; LABEL_56: v32 = v30 + 1; v88 = 0; *(_DWORD *)(v7 + 8) = v32; if ( v31 > v32 ) goto LABEL_57; LABEL_87: v88 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; v7 &= v88 - 1; v33 = v99 && v91 != 0; if ( v33 ) goto LABEL_88; LABEL_58: v34 = a4 == -1; LABEL_59: if ( v34 == v88 ) goto LABEL_60; } if ( v7 ) { v40 = *(char **)(v7 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) { v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v65 != -1 ? v65 : -1; v7 &= (v65 == -1) - 1; } else { v11 = *v40; } } else { v11 = -1; } continue; } } if ( v82 ) { v35 = v102; v81 = 0; v85 = 0; v36 = (int *)v101; v77 = v82; v82 = 0; goto LABEL_61; } v81 = 0; Bufa = (void *)(v8 + 78); v85 = 0; while ( 2 ) { if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) { if ( v11 == *(_BYTE *)(v8 + 36) || (v43 = memchr(Bufa, v11, MaxCount)) == 0 ) { LABEL_110: v35 = v102; v36 = (int *)v101; v77 = 0; goto LABEL_61; } v44 = v43 - (_BYTE *)Bufa; if ( v44 > 15 ) v44 -= 6; if ( (unsigned __int16)v80 >= v85 ) { v81 |= (unsigned __int16)(v98 * v85) > 0xFFFF - v44; ++v86; v85 = v98 * v85 + v44; goto LABEL_122; } v46 = *(_DWORD *)(v7 + 12); v81 = v77; v45 = *(_DWORD *)(v7 + 8); if ( v45 >= v46 ) { LABEL_131: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v47 = *(_DWORD *)(v7 + 8); v46 = *(_DWORD *)(v7 + 12); goto LABEL_124; } LABEL_123: v47 = v45 + 1; *(_DWORD *)(v7 + 8) = v47; LABEL_124: v89 = 0; if ( v46 <= v47 ) { v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v89 = v67 != -1 ? 0 : v77; v7 &= (v67 == -1) - 1; } v48 = v99 && v91 != 0; if ( v48 ) { if ( v91[2] >= v91[3] ) { v66 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); v91 = v66 == -1 ? 0 : v91; v49 = v66 == -1 && v48; } else { v49 = 0; } } else { v49 = a4 == -1; } if ( v89 == v49 ) { v35 = v102; v36 = (int *)v101; goto LABEL_61; } if ( v7 ) { v50 = *(char **)(v7 + 8); if ( (unsigned int)v50 >= *(_DWORD *)(v7 + 12) ) { v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v11 = v63 != -1 ? v63 : -1; v7 &= (v63 == -1) - 1; } else { v11 = *v50; } } else { v11 = -1; } continue; } break; } v35 = v102; v36 = (int *)v101; if ( v86 ) { v90 = v102 + 1; if ( v101 == v103 ) v51 = 15; else v51 = v103[0]; if ( v90 > v51 ) { std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); v36 = (int *)v101; } v52 = v86; v86 = 0; *((_BYTE *)v36 + v35) = v52; v102 = v90; *((_BYTE *)v101 + v90) = 0; LABEL_122: v45 = *(_DWORD *)(v7 + 8); v46 = *(_DWORD *)(v7 + 12); if ( v45 >= v46 ) goto LABEL_131; goto LABEL_123; } v77 = 0; v82 = *(_BYTE *)(v8 + 16); LABEL_61: if ( v35 ) { v100 = v35 + 1; if ( v36 == v103 ) v41 = 15; else v41 = v103[0]; if ( v100 > v41 ) { std::string::_M_mutate((int)&v101, v35, 0, 0, 1u); v36 = (int *)v101; } *((_BYTE *)v36 + v35) = v86; v102 = v35 + 1; *((_BYTE *)v101 + v100) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) *a6 = 4; v36 = (int *)v101; if ( v96 || v102 | v86 ) goto LABEL_103; LABEL_64: *a7 = 0; *a6 = 4; } else { if ( !v86 && !v96 ) goto LABEL_64; LABEL_103: if ( v82 ) goto LABEL_64; if ( v81 ) { *a7 = -1; *a6 = 4; } else { if ( v76 ) v85 = -v85; *a7 = v85; } } if ( v77 ) *a6 |= 2u; if ( v36 != v103 ) operator delete(v36); return v7; } // 460F4F: variable 'v73' is possibly undefined // 460FB8: variable 'v74' is possibly undefined // 4E95A8: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (00461330) -------------------------------------------------------- unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { int v7; // edi bool v8; // dl char v9; // bl char v10; // bl char v11; // dl char v12; // al unsigned int v13; // eax unsigned int v14; // edx unsigned int v15; // eax unsigned __int8 v16; // si char v17; // dl int v18; // eax unsigned int v19; // ecx unsigned int v20; // eax unsigned int v21; // edx unsigned int v22; // eax unsigned __int8 v23; // si bool v24; // dl char v25; // dl bool v26; // zf unsigned __int64 v27; // kr00_8 int v28; // ecx unsigned int v29; // esi unsigned int v30; // eax unsigned int v31; // edx unsigned int v32; // eax unsigned __int8 v33; // si bool v34; // bl char v35; // bl size_t v36; // ebx int *v37; // ecx bool v39; // al char *v40; // eax int v41; // ebx int v42; // esi char *v43; // eax unsigned int v44; // eax int v45; // eax unsigned int v46; // edx _BYTE *v47; // eax int v48; // eax int v49; // ecx UDItype v50; // rax unsigned int v51; // esi unsigned int v52; // eax unsigned int v53; // edx unsigned int v54; // eax char v55; // si bool v56; // bl char v57; // bl char *v58; // eax size_t v59; // esi unsigned int v60; // eax char v61; // al int v62; // eax char *v63; // eax char *v64; // eax std::locale::_Impl *v65; // eax std::locale::_Impl *v66; // edi int v67; // eax int v68; // eax int v69; // eax int v70; // eax int v71; // eax int v72; // eax int v73; // eax int v74; // eax int v75; // eax int v76; // eax char v77; // al int v78; // eax void (__cdecl *v79)(void *); // [esp+4h] [ebp-94h] unsigned int v80; // [esp+8h] [ebp-90h] size_t MaxCount; // [esp+1Ch] [ebp-7Ch] UDItype n; // [esp+20h] [ebp-78h] int Buf; // [esp+28h] [ebp-70h] void *Bufa; // [esp+28h] [ebp-70h] bool v85; // [esp+35h] [ebp-63h] char v86; // [esp+36h] [ebp-62h] char v87; // [esp+37h] [ebp-61h] bool v88; // [esp+37h] [ebp-61h] int v89; // [esp+38h] [ebp-60h] __int64 v90; // [esp+38h] [ebp-60h] char v91; // [esp+40h] [ebp-58h] bool v92; // [esp+40h] [ebp-58h] int v93; // [esp+44h] [ebp-54h] int *d; // [esp+48h] [ebp-50h] int da; // [esp+48h] [ebp-50h] UDItype db; // [esp+48h] [ebp-50h] UDItype dc; // [esp+48h] [ebp-50h] UDItype dd; // [esp+48h] [ebp-50h] unsigned int v99; // [esp+50h] [ebp-48h] _DWORD *v100; // [esp+54h] [ebp-44h] std::locale::facet *v101; // [esp+58h] [ebp-40h] bool v102; // [esp+58h] [ebp-40h] char v103; // [esp+58h] [ebp-40h] bool v104; // [esp+58h] [ebp-40h] bool v105; // [esp+5Ch] [ebp-3Ch] unsigned int v106; // [esp+5Ch] [ebp-3Ch] void *v107; // [esp+68h] [ebp-30h] BYREF size_t v108; // [esp+6Ch] [ebp-2Ch] int v109[10]; // [esp+70h] [ebp-28h] BYREF v99 = (unsigned int)a1; v100 = a3; v101 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); d = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); if ( !v7 ) { v65 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v79); *((_DWORD *)v65 + 1) = 0; v66 = v65; *(_DWORD *)v65 = &off_4F65A0; *((_DWORD *)v65 + 2) = 0; *((_DWORD *)v65 + 3) = 0; *((_BYTE *)v65 + 16) = 0; *((_DWORD *)v65 + 5) = 0; *((_DWORD *)v65 + 6) = 0; *((_DWORD *)v65 + 7) = 0; *((_DWORD *)v65 + 8) = 0; *((_WORD *)v65 + 18) = 0; *((_BYTE *)v65 + 100) = 0; std::__numpunct_cache::_M_cache((int)v65, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v66, v101, v80); v7 = *d; } da = 8; v89 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v89 != 64 ) da = v89 == 8 ? 16 : 10; v8 = a2 == -1; v102 = v8 && a1 != 0; if ( v102 ) { if ( a1[2] >= a1[3] ) { v75 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v8 = a2 == -1; v103 = v75 == -1 && v102; v99 = v75 == -1 ? 0 : (unsigned int)a1; } else { v103 = 0; } } else { v103 = a2 == -1; } v105 = a4 == -1; if ( v105 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v88 = v8; v74 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v8 = v88; v9 = v74 == -1 && v105 && a3 != 0; v100 = v74 == -1 ? 0 : a3; } else { v9 = 0; } } else { v9 = a4 == -1; } if ( v103 == v9 ) { v85 = 0; v10 = 0; v91 = 1; v93 = 0; v104 = 0; goto LABEL_43; } if ( v99 && v8 ) { v63 = *(char **)(v99 + 8); if ( (unsigned int)v63 >= *(_DWORD *)(v99 + 12) ) { v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); v10 = v76 != -1 ? v76 : -1; v99 &= (v76 == -1) - 1; } else { v10 = *v63; } } else { v10 = a2; } v11 = *(_BYTE *)(v7 + 74); v12 = *(_BYTE *)(v7 + 16); v85 = v11 == v10; if ( v11 == v10 || *(_BYTE *)(v7 + 75) == v10 ) { if ( (!v12 || *(_BYTE *)(v7 + 37) != v10) && *(_BYTE *)(v7 + 36) != v10 ) { v13 = *(_DWORD *)(v99 + 8); v14 = *(_DWORD *)(v99 + 12); if ( v13 >= v14 ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); v15 = *(_DWORD *)(v99 + 8); v14 = *(_DWORD *)(v99 + 12); } else { v15 = v13 + 1; *(_DWORD *)(v99 + 8) = v15; } v16 = 0; if ( v15 >= v14 ) { v16 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99) == -1; v99 &= v16 - 1; } if ( v105 && v100 != 0 ) { if ( v100[2] >= v100[3] ) { v78 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); v17 = v78 == -1 && v105 && v100 != 0; v100 = v78 == -1 ? 0 : v100; } else { v17 = 0; } } else { v17 = a4 == -1; } if ( v17 == v16 ) { v18 = da; v91 = 1; v93 = 0; v104 = 0; if ( da != 16 ) goto LABEL_44; goto LABEL_25; } v10 = -1; if ( v99 ) { v64 = *(char **)(v99 + 8); if ( (unsigned int)v64 >= *(_DWORD *)(v99 + 12) ) { v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); v10 = v70 != -1 ? v70 : -1; v99 &= (v70 == -1) - 1; } else { v10 = *v64; } } v12 = *(_BYTE *)(v7 + 16); } } else { v85 = 0; } v93 = 0; v104 = 0; while ( 1 ) { if ( v12 && *(_BYTE *)(v7 + 37) == v10 || *(_BYTE *)(v7 + 36) == v10 ) { LABEL_112: v91 = 0; goto LABEL_43; } if ( *(_BYTE *)(v7 + 78) != v10 ) { if ( !v104 ) goto LABEL_112; LABEL_33: if ( *(_BYTE *)(v7 + 76) != v10 && *(_BYTE *)(v7 + 77) != v10 ) { v91 = 0; v104 = 1; goto LABEL_43; } if ( v89 != 0 && da != 16 ) { v91 = 0; v104 = 1; MaxCount = da; Buf = da; goto LABEL_45; } v93 = 0; v104 = 0; da = 16; LABEL_37: v19 = v99; v20 = *(_DWORD *)(v99 + 8); v21 = *(_DWORD *)(v99 + 12); if ( v20 < v21 ) goto LABEL_38; goto LABEL_75; } v39 = !v104 || da == 10; if ( !v39 ) goto LABEL_33; v104 = v89 == 0 || da == 8; if ( !v104 ) { ++v93; v104 = v39; goto LABEL_37; } v19 = v99; v93 = 0; da = 8; v20 = *(_DWORD *)(v99 + 8); v21 = *(_DWORD *)(v99 + 12); if ( v20 < v21 ) { LABEL_38: v22 = v20 + 1; v23 = 0; *(_DWORD *)(v19 + 8) = v22; if ( v22 < v21 ) goto LABEL_39; goto LABEL_76; } LABEL_75: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); v23 = 0; if ( *(_DWORD *)(v99 + 8) < *(_DWORD *)(v99 + 12) ) { LABEL_39: v24 = v105 && v100 != 0; if ( !v24 ) goto LABEL_40; goto LABEL_77; } LABEL_76: v23 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99) == -1; v99 &= v23 - 1; v24 = v105 && v100 != 0; if ( !v24 ) { LABEL_40: v25 = a4 == -1; goto LABEL_41; } LABEL_77: if ( v100[2] >= v100[3] ) { v92 = v24; v62 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); v25 = v62 == -1 && v92; v100 = v62 == -1 ? 0 : v100; LABEL_41: if ( v25 == v23 ) goto LABEL_42; goto LABEL_79; } if ( !v23 ) { LABEL_42: v91 = 1; goto LABEL_43; } LABEL_79: v10 = -1; if ( v99 ) { v40 = *(char **)(v99 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(v99 + 12) ) { v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); v10 = v68 != -1 ? v68 : -1; v99 &= (v68 == -1) - 1; } else { v10 = *v40; } } if ( !v104 ) break; v12 = *(_BYTE *)(v7 + 16); } v91 = 0; LABEL_43: v18 = da; if ( da == 16 ) { LABEL_25: MaxCount = 22; Buf = 22; goto LABEL_45; } LABEL_44: MaxCount = v18; Buf = v18; LABEL_45: v26 = *(_BYTE *)(v7 + 16) == 0; v108 = 0; v107 = v109; LOBYTE(v109[0]) = 0; if ( !v26 ) std::string::reserve(&v107, 0x20u); n = 0x8000000000000000LL; if ( !v85 ) n = 0x7FFFFFFFFFFFFFFFLL; v90 = da; v27 = n / da; v86 = *(_BYTE *)(v7 + 100); if ( !v86 ) { if ( v91 ) { v77 = v91; v36 = v108; v87 = 0; v91 = 0; v37 = (int *)v107; v86 = v77; db = 0LL; goto LABEL_63; } v87 = 0; db = 0LL; while ( 2 ) { if ( Buf <= 10 ) { if ( v10 <= 47 || (char)(Buf + 48) <= v10 ) goto LABEL_111; LABEL_55: v28 = v10 - 48; goto LABEL_56; } if ( (unsigned __int8)(v10 - 48) <= 9u ) goto LABEL_55; v28 = v10 - 87; if ( (unsigned __int8)(v10 - 97) <= 5u ) { LABEL_56: if ( v27 >= db ) goto LABEL_88; } else { if ( (unsigned __int8)(v10 - 65) > 5u ) goto LABEL_111; v28 = v10 - 55; if ( v27 >= db ) { LABEL_88: v41 = HIDWORD(v90) * db; v42 = v90 * HIDWORD(db); dc = (unsigned int)v90 * (unsigned __int64)(unsigned int)db; HIDWORD(dc) += v42 + v41; v87 |= n - v28 < dc; db = dc + v28; v29 = v99; ++v93; v30 = *(_DWORD *)(v99 + 8); v31 = *(_DWORD *)(v99 + 12); if ( v30 >= v31 ) { LABEL_89: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); v33 = 0; if ( *(_DWORD *)(v99 + 8) >= *(_DWORD *)(v99 + 12) ) { LABEL_90: v33 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99) == -1; v99 &= v33 - 1; v34 = v105 && v100 != 0; if ( v34 ) { LABEL_91: if ( v100[2] < v100[3] ) { if ( !v33 ) { LABEL_62: v36 = v108; v37 = (int *)v107; v86 = 1; goto LABEL_63; } goto LABEL_93; } v67 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); v100 = v67 == -1 ? 0 : v100; v35 = v67 == -1 && v34; LABEL_61: if ( v35 == v33 ) goto LABEL_62; LABEL_93: if ( v99 ) { v43 = *(char **)(v99 + 8); if ( (unsigned int)v43 >= *(_DWORD *)(v99 + 12) ) { v71 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); v10 = v71 != -1 ? v71 : -1; v99 &= (v71 == -1) - 1; } else { v10 = *v43; } } else { v10 = -1; } continue; } LABEL_60: v35 = a4 == -1; goto LABEL_61; } LABEL_59: v34 = v105 && v100 != 0; if ( v34 ) goto LABEL_91; goto LABEL_60; } LABEL_58: v32 = v30 + 1; *(_DWORD *)(v29 + 8) = v32; v33 = 0; if ( v32 >= v31 ) goto LABEL_90; goto LABEL_59; } } break; } v29 = v99; v87 = 1; v30 = *(_DWORD *)(v99 + 8); v31 = *(_DWORD *)(v99 + 12); if ( v30 >= v31 ) goto LABEL_89; goto LABEL_58; } if ( v91 ) { v36 = v108; db = 0LL; v37 = (int *)v107; v86 = v91; v87 = 0; v91 = 0; goto LABEL_63; } v87 = 0; Bufa = (void *)(v7 + 78); db = 0LL; while ( 2 ) { if ( !*(_BYTE *)(v7 + 16) || *(_BYTE *)(v7 + 37) != v10 ) { if ( v10 == *(_BYTE *)(v7 + 36) || (v47 = memchr(Bufa, v10, MaxCount)) == 0 ) { LABEL_111: v36 = v108; v37 = (int *)v107; v86 = 0; goto LABEL_63; } v48 = v47 - (_BYTE *)Bufa; v49 = v48; if ( v48 > 15 ) v49 = v48 - 6; v50 = db; if ( v27 >= db ) { dd = (unsigned int)v90 * (unsigned __int64)(unsigned int)db; HIDWORD(dd) += HIDWORD(v50) * v90 + v50 * HIDWORD(v90); v87 |= n - v49 < dd; ++v93; db = dd + v49; goto LABEL_123; } v51 = v99; v87 = v86; v53 = *(_DWORD *)(v99 + 12); v52 = *(_DWORD *)(v99 + 8); if ( v52 >= v53 ) { LABEL_132: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); v54 = *(_DWORD *)(v99 + 8); v53 = *(_DWORD *)(v99 + 12); goto LABEL_125; } LABEL_124: v54 = v52 + 1; *(_DWORD *)(v51 + 8) = v54; LABEL_125: v55 = 0; if ( v53 <= v54 ) { v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); v55 = v73 != -1 ? 0 : v86; v99 &= (v73 == -1) - 1; } v56 = v105 && v100 != 0; if ( v56 ) { if ( v100[2] >= v100[3] ) { v72 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); v100 = v72 == -1 ? 0 : v100; v57 = v72 == -1 && v56; } else { v57 = 0; } } else { v57 = a4 == -1; } if ( v55 == v57 ) { v36 = v108; v37 = (int *)v107; goto LABEL_63; } if ( v99 ) { v58 = *(char **)(v99 + 8); if ( (unsigned int)v58 >= *(_DWORD *)(v99 + 12) ) { v69 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); v10 = v69 != -1 ? v69 : -1; v99 &= (v69 == -1) - 1; } else { v10 = *v58; } } else { v10 = -1; } continue; } break; } v36 = v108; v37 = (int *)v107; if ( v93 ) { v59 = v108 + 1; if ( v107 == v109 ) v60 = 15; else v60 = v109[0]; if ( v59 > v60 ) { std::string::_M_mutate((int)&v107, v108, 0, 0, 1u); v37 = (int *)v107; } v61 = v93; v93 = 0; *((_BYTE *)v37 + v36) = v61; v108 = v36 + 1; *((_BYTE *)v107 + v59) = 0; LABEL_123: v51 = v99; v52 = *(_DWORD *)(v99 + 8); v53 = *(_DWORD *)(v99 + 12); if ( v52 >= v53 ) goto LABEL_132; goto LABEL_124; } v86 = 0; v91 = *(_BYTE *)(v7 + 16); LABEL_63: if ( v36 ) { v106 = v36 + 1; if ( v37 == v109 ) v44 = 15; else v44 = v109[0]; if ( v106 > v44 ) { std::string::_M_mutate((int)&v107, v36, 0, 0, 1u); v37 = (int *)v107; } *((_BYTE *)v37 + v36) = v93; v108 = v36 + 1; *((_BYTE *)v107 + v106) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v7 + 8), *(_DWORD *)(v7 + 12), (int)&v107) ) *a6 = 4; v37 = (int *)v107; if ( v104 || v108 | v93 ) goto LABEL_104; LABEL_66: *a7 = 0; a7[1] = 0; *a6 = 4; } else { if ( !v93 && !v104 ) goto LABEL_66; LABEL_104: if ( v91 ) goto LABEL_66; if ( v87 ) { v45 = 0; v46 = 0x80000000; if ( !v85 ) { v45 = -1; v46 = 0x7FFFFFFF; } *a7 = v45; a7[1] = v46; *a6 = 4; } else { if ( v85 ) db = -(__int64)db; *(_QWORD *)a7 = db; } } if ( v86 ) *a6 |= 2u; if ( v37 != v109 ) operator delete(v37); return v99; } // 461D4F: variable 'v79' is possibly undefined // 461DBE: variable 'v80' is possibly undefined // 4E95A8: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (00462160) -------------------------------------------------------- unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { unsigned int v7; // ebx std::locale::_Impl **v8; // edi int v9; // edi int v10; // eax char v11; // dl char v12; // si char v13; // dl char v14; // al unsigned int v15; // eax unsigned int v16; // edx unsigned int v17; // eax char v18; // dl _DWORD *v19; // edx char v20; // bl unsigned int v21; // esi unsigned int v22; // eax unsigned int v23; // edx unsigned int v24; // eax bool v25; // dl char v26; // dl _DWORD *v27; // eax unsigned __int64 v28; // kr00_8 int v29; // ecx unsigned int v30; // eax unsigned int v31; // edx unsigned int v32; // eax unsigned __int8 v33; // di bool v34; // si char v35; // si size_t v36; // esi int *v37; // eax bool v39; // al char *v40; // eax char *v41; // eax unsigned int v42; // edi unsigned int v43; // edx _DWORD *v44; // eax _BYTE *v45; // eax int v46; // ecx unsigned int v47; // eax unsigned int v48; // edx unsigned int v49; // eax char v50; // di bool v51; // si char v52; // si char *v53; // eax size_t v54; // edi unsigned int v55; // edx int v56; // eax char *v57; // eax char *v58; // eax _DWORD *v59; // eax int v60; // eax _DWORD *v61; // eax _DWORD *v62; // eax int v63; // eax _DWORD *v64; // eax int v65; // eax int v66; // eax int v67; // eax int v68; // eax int v69; // eax int v70; // eax int v71; // eax int v72; // eax char v73; // cl int v74; // eax void (__cdecl *v75)(void *); // [esp+4h] [ebp-84h] unsigned int v76; // [esp+8h] [ebp-80h] size_t MaxCount; // [esp+10h] [ebp-78h] int Buf; // [esp+14h] [ebp-74h] void *Bufa; // [esp+14h] [ebp-74h] bool v80; // [esp+21h] [ebp-67h] char v81; // [esp+22h] [ebp-66h] char v82; // [esp+23h] [ebp-65h] char v83; // [esp+24h] [ebp-64h] int v84; // [esp+28h] [ebp-60h] __int64 v85; // [esp+28h] [ebp-60h] int v86; // [esp+30h] [ebp-58h] char v87; // [esp+34h] [ebp-54h] bool v88; // [esp+34h] [ebp-54h] std::locale::_Impl *v89; // [esp+38h] [ebp-50h] unsigned __int8 v90; // [esp+38h] [ebp-50h] std::locale::_Impl *v91; // [esp+38h] [ebp-50h] _DWORD *v92; // [esp+3Ch] [ebp-4Ch] int v93; // [esp+40h] [ebp-48h] bool v94; // [esp+40h] [ebp-48h] char v95; // [esp+40h] [ebp-48h] unsigned __int8 v96; // [esp+40h] [ebp-48h] std::locale::_Impl *i; // [esp+40h] [ebp-48h] unsigned __int64 v98; // [esp+40h] [ebp-48h] bool v99; // [esp+48h] [ebp-40h] bool v100; // [esp+4Ch] [ebp-3Ch] void *v101; // [esp+58h] [ebp-30h] BYREF size_t v102; // [esp+5Ch] [ebp-2Ch] int v103[10]; // [esp+60h] [ebp-28h] BYREF v7 = (unsigned int)a1; v92 = a3; v93 = std::locale::id::_M_id(&std::numpunct::id); v8 = (std::locale::_Impl **)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v93); v89 = *v8; if ( !*v8 ) { v59 = operator new((struct type_info *)0x68, v75); v59[1] = 0; *v59 = &off_4F65A0; v59[2] = 0; v59[3] = 0; *((_BYTE *)v59 + 16) = 0; v59[5] = 0; v59[6] = 0; v59[7] = 0; v59[8] = 0; *((_WORD *)v59 + 18) = 0; *((_BYTE *)v59 + 100) = 0; v91 = (std::locale::_Impl *)v59; std::__numpunct_cache::_M_cache((int)v59, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v91, (const std::locale::facet *)v93, v76); v89 = *v8; } v9 = 8; v10 = *(_DWORD *)(a5 + 12) & 0x4A; v84 = v10; if ( v10 != 64 ) v9 = v10 == 8 ? 16 : 10; v94 = a2 == -1 && a1 != 0; if ( v94 ) { if ( a1[2] >= a1[3] ) { v71 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v95 = v71 == -1 && v94; v7 = v71 == -1 ? 0 : (unsigned int)a1; } else { v95 = 0; } } else { v95 = a2 == -1; } v100 = a4 == -1; if ( v100 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v70 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v11 = v70 == -1 && v100 && a3 != 0; v92 = v70 == -1 ? 0 : a3; } else { v11 = 0; } } else { v11 = a4 == -1; } if ( v95 == v11 ) { v80 = 0; v12 = 0; v83 = 1; v86 = 0; v99 = 0; goto LABEL_43; } if ( v7 && a2 == -1 ) { v57 = *(char **)(v7 + 8); if ( (unsigned int)v57 >= *(_DWORD *)(v7 + 12) ) { v72 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v12 = v72 != -1 ? v72 : -1; v7 &= (v72 == -1) - 1; } else { v12 = *v57; } } else { v12 = a2; } v13 = *((_BYTE *)v89 + 74); v14 = *((_BYTE *)v89 + 16); v80 = v13 == v12; if ( v13 == v12 || *((_BYTE *)v89 + 75) == v12 ) { if ( (!v14 || *((_BYTE *)v89 + 37) != v12) && *((_BYTE *)v89 + 36) != v12 ) { v15 = *(_DWORD *)(v7 + 8); v16 = *(_DWORD *)(v7 + 12); if ( v15 >= v16 ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v17 = *(_DWORD *)(v7 + 8); v16 = *(_DWORD *)(v7 + 12); } else { v17 = v15 + 1; *(_DWORD *)(v7 + 8) = v17; } v96 = 0; if ( v17 >= v16 ) { v96 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; v7 &= v96 - 1; } if ( v100 && v92 != 0 ) { if ( v92[2] >= v92[3] ) { v74 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); v18 = v74 == -1 && v100 && v92 != 0; v92 = v74 == -1 ? 0 : v92; } else { v18 = 0; } } else { v18 = a4 == -1; } if ( v96 == v18 ) { v83 = 1; v86 = 0; v99 = 0; if ( v9 != 16 ) goto LABEL_44; goto LABEL_25; } v12 = -1; if ( v7 ) { v58 = *(char **)(v7 + 8); if ( (unsigned int)v58 >= *(_DWORD *)(v7 + 12) ) { v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v12 = v66 != -1 ? v66 : -1; v7 &= (v66 == -1) - 1; } else { v12 = *v58; } } v14 = *((_BYTE *)v89 + 16); } } else { v80 = 0; } v86 = 0; v19 = (_DWORD *)v7; v20 = v12; v99 = 0; v21 = (unsigned int)v19; for ( i = v89; ; v14 = *((_BYTE *)i + 16) ) { if ( v14 && *((_BYTE *)i + 37) == v20 || *((_BYTE *)i + 36) == v20 ) { LABEL_111: v83 = 0; v89 = i; v44 = (_DWORD *)v21; v12 = v20; v7 = (unsigned int)v44; goto LABEL_43; } if ( *((_BYTE *)i + 78) != v20 ) { if ( !v99 ) goto LABEL_111; LABEL_33: if ( *((_BYTE *)i + 76) != v20 && *((_BYTE *)i + 77) != v20 ) { v83 = 0; v89 = i; v61 = (_DWORD *)v21; v12 = v20; v99 = 1; v7 = (unsigned int)v61; goto LABEL_43; } if ( v84 != 0 && v9 != 16 ) { v83 = 0; v89 = i; v62 = (_DWORD *)v21; v12 = v20; MaxCount = v9; v7 = (unsigned int)v62; Buf = v9; v99 = 1; goto LABEL_45; } v86 = 0; v9 = 16; v99 = 0; LABEL_37: v22 = *(_DWORD *)(v21 + 8); v23 = *(_DWORD *)(v21 + 12); if ( v22 < v23 ) goto LABEL_38; goto LABEL_73; } v39 = !v99 || v9 == 10; if ( !v39 ) goto LABEL_33; v99 = v84 == 0 || v9 == 8; if ( !v99 ) { ++v86; v99 = v39; goto LABEL_37; } v22 = *(_DWORD *)(v21 + 8); v23 = *(_DWORD *)(v21 + 12); v9 = 8; v86 = 0; if ( v22 < v23 ) { LABEL_38: v24 = v22 + 1; v90 = 0; *(_DWORD *)(v21 + 8) = v24; if ( v24 < v23 ) goto LABEL_39; goto LABEL_74; } LABEL_73: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); v90 = 0; if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) { LABEL_39: v25 = v100 && v92 != 0; if ( !v25 ) goto LABEL_40; goto LABEL_75; } LABEL_74: v90 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; v21 &= v90 - 1; v25 = v100 && v92 != 0; if ( !v25 ) { LABEL_40: v26 = a4 == -1; goto LABEL_41; } LABEL_75: if ( v92[2] >= v92[3] ) { v88 = v25; v56 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); v26 = v56 == -1 && v88; v92 = v56 == -1 ? 0 : v92; LABEL_41: if ( v26 == v90 ) goto LABEL_42; goto LABEL_77; } if ( !v90 ) { LABEL_42: v83 = 1; v89 = i; v27 = (_DWORD *)v21; v12 = v20; v7 = (unsigned int)v27; goto LABEL_43; } LABEL_77: v20 = -1; if ( v21 ) { v40 = *(char **)(v21 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(v21 + 12) ) { v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); v20 = v63 != -1 ? v63 : -1; v21 &= (v63 == -1) - 1; } else { v20 = *v40; } } if ( !v99 ) break; } v89 = i; v64 = (_DWORD *)v21; v12 = v20; v83 = 0; v7 = (unsigned int)v64; LABEL_43: if ( v9 == 16 ) { LABEL_25: MaxCount = 22; Buf = 22; goto LABEL_45; } LABEL_44: MaxCount = v9; Buf = v9; LABEL_45: v102 = 0; v101 = v103; LOBYTE(v103[0]) = 0; if ( *((_BYTE *)v89 + 16) ) std::string::reserve(&v101, 0x20u); v85 = v9; v28 = 0xFFFFFFFFFFFFFFFFLL / v9; v81 = *((_BYTE *)v89 + 100); if ( !v81 ) { if ( v83 ) { v73 = v83; v36 = v102; v82 = 0; v83 = 0; v37 = (int *)v101; v81 = v73; v98 = 0LL; goto LABEL_61; } v82 = 0; v98 = 0LL; while ( 2 ) { if ( Buf > 10 ) { if ( (unsigned __int8)(v12 - 48) <= 9u ) goto LABEL_53; if ( (unsigned __int8)(v12 - 97) > 5u ) { if ( (unsigned __int8)(v12 - 65) > 5u ) goto LABEL_110; v29 = v12 - 55; goto LABEL_54; } v29 = v12 - 87; if ( v28 >= v98 ) goto LABEL_85; LABEL_55: v30 = *(_DWORD *)(v7 + 8); v31 = *(_DWORD *)(v7 + 12); v82 = 1; if ( v30 < v31 ) goto LABEL_56; LABEL_86: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v33 = 0; if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) goto LABEL_87; LABEL_57: v34 = v100 && v92 != 0; if ( !v34 ) goto LABEL_58; LABEL_88: if ( v92[2] >= v92[3] ) { v60 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); v92 = v60 == -1 ? 0 : v92; v35 = v60 == -1 && v34; goto LABEL_59; } if ( !v33 ) { LABEL_60: v36 = v102; v37 = (int *)v101; v81 = 1; goto LABEL_61; } } else { if ( v12 <= 47 || (char)(Buf + 48) <= v12 ) goto LABEL_110; LABEL_53: v29 = v12 - 48; LABEL_54: if ( v28 < v98 ) goto LABEL_55; LABEL_85: v82 |= __PAIR64__(~(v29 >> 31), ~v29) < v85 * v98; v30 = *(_DWORD *)(v7 + 8); v31 = *(_DWORD *)(v7 + 12); ++v86; v98 = v85 * v98 + v29; if ( v30 >= v31 ) goto LABEL_86; LABEL_56: v32 = v30 + 1; v33 = 0; *(_DWORD *)(v7 + 8) = v32; if ( v31 > v32 ) goto LABEL_57; LABEL_87: v33 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; v7 &= v33 - 1; v34 = v100 && v92 != 0; if ( v34 ) goto LABEL_88; LABEL_58: v35 = a4 == -1; LABEL_59: if ( v35 == v33 ) goto LABEL_60; } if ( v7 ) { v41 = *(char **)(v7 + 8); if ( (unsigned int)v41 >= *(_DWORD *)(v7 + 12) ) { v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v12 = v67 != -1 ? v67 : -1; v7 &= (v67 == -1) - 1; } else { v12 = *v41; } } else { v12 = -1; } continue; } } if ( v83 ) { v36 = v102; v98 = 0LL; v37 = (int *)v101; v81 = v83; v82 = 0; v83 = 0; goto LABEL_61; } v82 = 0; v98 = 0LL; Bufa = (char *)v89 + 78; while ( 2 ) { if ( !*((_BYTE *)v89 + 16) || *((_BYTE *)v89 + 37) != v12 ) { if ( v12 == *((_BYTE *)v89 + 36) || (v45 = memchr(Bufa, v12, MaxCount)) == 0 ) { LABEL_110: v36 = v102; v37 = (int *)v101; v81 = 0; goto LABEL_61; } v46 = v45 - (_BYTE *)Bufa; if ( v45 - (_BYTE *)Bufa > 15 ) v46 -= 6; if ( v28 >= v98 ) { v82 |= __PAIR64__(~(v46 >> 31), ~v46) < v85 * v98; ++v86; v98 = v85 * v98 + v46; goto LABEL_122; } v48 = *(_DWORD *)(v7 + 12); v82 = v81; v47 = *(_DWORD *)(v7 + 8); if ( v47 >= v48 ) { LABEL_131: (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); v49 = *(_DWORD *)(v7 + 8); v48 = *(_DWORD *)(v7 + 12); goto LABEL_124; } LABEL_123: v49 = v47 + 1; *(_DWORD *)(v7 + 8) = v49; LABEL_124: v50 = 0; if ( v48 <= v49 ) { v69 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v50 = v69 != -1 ? 0 : v81; v7 &= (v69 == -1) - 1; } v51 = v100 && v92 != 0; if ( v51 ) { if ( v92[2] >= v92[3] ) { v68 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); v92 = v68 == -1 ? 0 : v92; v52 = v68 == -1 && v51; } else { v52 = 0; } } else { v52 = a4 == -1; } if ( v50 == v52 ) { v36 = v102; v37 = (int *)v101; goto LABEL_61; } if ( v7 ) { v53 = *(char **)(v7 + 8); if ( (unsigned int)v53 >= *(_DWORD *)(v7 + 12) ) { v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); v12 = v65 != -1 ? v65 : -1; v7 &= (v65 == -1) - 1; } else { v12 = *v53; } } else { v12 = -1; } continue; } break; } v36 = v102; v37 = (int *)v101; if ( v86 ) { v54 = v102 + 1; v87 = v86; if ( v101 == v103 ) v55 = 15; else v55 = v103[0]; if ( v54 > v55 ) { std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); v37 = (int *)v101; } v86 = 0; *((_BYTE *)v37 + v36) = v87; v102 = v36 + 1; *((_BYTE *)v101 + v54) = 0; LABEL_122: v47 = *(_DWORD *)(v7 + 8); v48 = *(_DWORD *)(v7 + 12); if ( v47 >= v48 ) goto LABEL_131; goto LABEL_123; } v81 = 0; v83 = *((_BYTE *)v89 + 16); LABEL_61: if ( v36 ) { v42 = v36 + 1; if ( v37 == v103 ) v43 = 15; else v43 = v103[0]; if ( v42 > v43 ) { std::string::_M_mutate((int)&v101, v36, 0, 0, 1u); v37 = (int *)v101; } *((_BYTE *)v37 + v36) = v86; v102 = v36 + 1; *((_BYTE *)v101 + v42) = 0; if ( !(unsigned __int8)std::__verify_grouping(*((char **)v89 + 2), *((_DWORD *)v89 + 3), (int)&v101) ) *a6 = 4; v37 = (int *)v101; if ( v99 || v102 | v86 ) goto LABEL_103; LABEL_64: *a7 = 0; a7[1] = 0; *a6 = 4; } else { if ( !v86 && !v99 ) goto LABEL_64; LABEL_103: if ( v83 ) goto LABEL_64; if ( v82 ) { *a7 = -1; a7[1] = -1; *a6 = 4; } else { if ( v80 ) v98 = -(__int64)v98; *(_QWORD *)a7 = v98; } } if ( v81 ) *a6 |= 2u; if ( v37 != v103 ) operator delete(v37); return v7; } // 462B57: variable 'v75' is possibly undefined // 462BC4: variable 'v76' is possibly undefined // 4E95A8: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (00462F60) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6) { int v6; // edi int v7; // ebx int v8; // esi int v9; // eax unsigned int v10; // edi char v11; // dl char v12; // bl char v13; // bl int v14; // ebx char v15; // al char v16; // cl unsigned int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax char v20; // dl int v21; // edx int v22; // edx _DWORD *v23; // ecx unsigned int v24; // eax char v25; // al char v26; // bl unsigned int *v27; // ecx int v28; // ebx volatile signed __int32 *v29; // ecx unsigned __int64 result; // rax bool v31; // al int v32; // eax _BYTE *v33; // eax int v34; // edx _BYTE *v35; // eax unsigned int *v36; // edi unsigned int *v37; // ecx char v38; // al _BYTE *v39; // eax int v40; // eax _DWORD *v41; // ecx unsigned int v42; // eax char v43; // al char v44; // bl _BYTE *v45; // eax int v46; // edx char v47; // cl unsigned int *v48; // eax int v49; // eax int v50; // eax _BYTE *v51; // eax char v52; // al char v53; // al std::locale::_Impl *v54; // eax std::locale::_Impl *v55; // esi int v56; // eax char v57; // al void (__cdecl *v58)(void *); // [esp+4h] [ebp-64h] unsigned int v59; // [esp+8h] [ebp-60h] size_t MaxCount; // [esp+18h] [ebp-50h] char v61; // [esp+1Ch] [ebp-4Ch] std::string *v62; // [esp+1Ch] [ebp-4Ch] int Buf; // [esp+20h] [ebp-48h] std::string *Bufa; // [esp+20h] [ebp-48h] unsigned int *Bufc; // [esp+20h] [ebp-48h] void *Bufb; // [esp+20h] [ebp-48h] unsigned int v67; // [esp+24h] [ebp-44h] bool v68; // [esp+29h] [ebp-3Fh] char v69; // [esp+2Ah] [ebp-3Eh] char v70; // [esp+2Bh] [ebp-3Dh] char v71; // [esp+2Bh] [ebp-3Dh] char v72; // [esp+2Bh] [ebp-3Dh] char v73; // [esp+2Ch] [ebp-3Ch] int v74; // [esp+2Ch] [ebp-3Ch] int v75; // [esp+30h] [ebp-38h] char v76; // [esp+30h] [ebp-38h] unsigned int v77; // [esp+30h] [ebp-38h] int v78; // [esp+34h] [ebp-34h] char v79; // [esp+34h] [ebp-34h] int *v80; // [esp+38h] [ebp-30h] char v81; // [esp+38h] [ebp-30h] bool v82; // [esp+38h] [ebp-30h] unsigned __int64 v83; // [esp+38h] [ebp-30h] char v84; // [esp+4Bh] [ebp-1Dh] BYREF unsigned int *v85[7]; // [esp+4Ch] [ebp-1Ch] BYREF v6 = a4; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); v80 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); if ( !v8 ) { v54 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v58); *((_DWORD *)v54 + 1) = 0; v55 = v54; *((_WORD *)v54 + 18) = 0; *(_DWORD *)v54 = &off_4F65A0; *((_DWORD *)v54 + 2) = 0; *((_DWORD *)v54 + 3) = 0; *((_BYTE *)v54 + 16) = 0; *((_DWORD *)v54 + 5) = 0; *((_DWORD *)v54 + 6) = 0; *((_DWORD *)v54 + 7) = 0; *((_DWORD *)v54 + 8) = 0; *((_BYTE *)v54 + 100) = 0; std::__numpunct_cache::_M_cache((int)v54, v6 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v55, (const std::locale::facet *)v7, v59); v8 = *v80; } v9 = *(_DWORD *)(v6 + 12); v10 = 8; v75 = v9 & 0x4A; if ( v75 != 64 ) v10 = v75 == 8 ? 16 : 10; v11 = HIDWORD(a1) == -1; v12 = v11 & ((_DWORD)a1 != 0); if ( v12 ) { v11 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v50 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v11 = 0; if ( v50 == -1 ) { LODWORD(a1) = 0; v11 = v12; } } } v13 = a3 == -1; v81 = v13 & (a2 != 0); if ( v81 ) { v13 = 0; if ( a2[2] >= a2[3] ) { v79 = v11; v49 = (*(int (**)(void))(*a2 + 36))(); v11 = v79; if ( v49 == -1 ) { a2 = 0; v13 = v81; } } } if ( v11 == v13 ) { v68 = 0; v16 = *(_BYTE *)(v8 + 16); LOBYTE(v14) = 0; v73 = 1; v78 = 0; v82 = 0; LABEL_36: if ( v10 == 16 ) { LABEL_17: MaxCount = 22; Buf = 22; v85[0] = (unsigned int *)&unk_4E93FC; if ( !v16 ) goto LABEL_39; goto LABEL_18; } LABEL_37: MaxCount = v10; Buf = v10; goto LABEL_38; } LOBYTE(v14) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) { LABEL_9: v15 = *(_BYTE *)(v8 + 74); v16 = *(_BYTE *)(v8 + 16); v68 = v15 == (char)v14; if ( v15 == (_BYTE)v14 ) goto LABEL_11; goto LABEL_10; } v51 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ) { v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v14 == -1 ) LODWORD(a1) = 0; goto LABEL_9; } LOBYTE(v14) = *v51; v52 = *(_BYTE *)(v8 + 74); v16 = *(_BYTE *)(v8 + 16); v68 = v52 == (char)v14; if ( v52 == (_BYTE)v14 ) { LABEL_11: if ( (!v16 || *(_BYTE *)(v8 + 37) != (_BYTE)v14) && *(_BYTE *)(v8 + 36) != (_BYTE)v14 ) { v17 = *(_DWORD *)(a1 + 8); if ( v17 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v17 + 1; HIDWORD(a1) = -1; v73 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v73 ) { v78 = 0; v16 = *(_BYTE *)(v8 + 16); v82 = 0; if ( v10 == 16 ) goto LABEL_17; goto LABEL_37; } v53 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); v16 = *(_BYTE *)(v8 + 16); LOBYTE(v14) = v53; } goto LABEL_20; } LABEL_10: if ( *(_BYTE *)(v8 + 75) == (_BYTE)v14 ) goto LABEL_11; v68 = 0; LABEL_20: v78 = 0; v82 = 0; v74 = v75; while ( 1 ) { if ( v16 && *(_BYTE *)(v8 + 37) == (_BYTE)v14 || *(_BYTE *)(v8 + 36) == (_BYTE)v14 ) { LABEL_68: v73 = 0; goto LABEL_36; } if ( *(_BYTE *)(v8 + 78) != (_BYTE)v14 ) break; v31 = !v82 || v10 == 10; if ( !v31 ) goto LABEL_26; v82 = v74 == 0 || v10 == 8; if ( !v82 ) { ++v78; v82 = v31; LABEL_30: v18 = (_DWORD *)a1; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) goto LABEL_31; goto LABEL_64; } v18 = (_DWORD *)a1; v78 = 0; v10 = 8; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) { LABEL_31: HIDWORD(a1) = -1; v18[2] = v19 + 1; LABEL_32: v76 = 0; if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) { LODWORD(a1) = 0; v76 = 1; } goto LABEL_33; } LABEL_64: (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); v18 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_32; v76 = 1; LABEL_33: v20 = a3 == -1; v70 = v20 & (a2 != 0); if ( v70 ) { v20 = 0; if ( a2[2] >= a2[3] ) { v32 = (*(int (**)(void))(*a2 + 36))(); v20 = 0; if ( v32 == -1 ) { a2 = 0; v20 = v70; } } } if ( v20 == v76 ) { v73 = 1; v16 = *(_BYTE *)(v8 + 16); goto LABEL_36; } LOBYTE(v14) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v35 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) { v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v14 == -1 ) LODWORD(a1) = 0; } else { LOBYTE(v14) = *v35; } } v16 = *(_BYTE *)(v8 + 16); if ( !v82 ) goto LABEL_68; } if ( !v82 ) goto LABEL_68; LABEL_26: if ( *(_BYTE *)(v8 + 76) != (_BYTE)v14 && *(_BYTE *)(v8 + 77) != (_BYTE)v14 ) { v73 = 0; v82 = 1; goto LABEL_36; } if ( v10 == 16 || v74 == 0 ) { v78 = 0; v10 = 16; v82 = 0; goto LABEL_30; } v73 = 0; MaxCount = v10; Buf = v10; v82 = 1; LABEL_38: v85[0] = (unsigned int *)&unk_4E93FC; if ( v16 ) LABEL_18: std::string::reserve(v85, (std::string *)0x20, (unsigned int)v58); LABEL_39: v67 = 0xFFFFFFFF / v10; v71 = *(_BYTE *)(v8 + 100); if ( v71 ) { if ( v73 ) { v27 = v85[0]; v77 = 0; v69 = 0; v71 = v73; v28 = *(v85[0] - 3); v73 = 0; goto LABEL_53; } v69 = 0; Bufb = (void *)(v8 + 78); v77 = 0; while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v14 ) { if ( (_BYTE)v14 == *(_BYTE *)(v8 + 36) ) goto LABEL_103; v39 = memchr(Bufb, (char)v14, MaxCount); if ( !v39 ) goto LABEL_103; v40 = v39 - (_BYTE *)Bufb; if ( v40 > 15 ) v40 -= 6; if ( v67 >= v77 ) { v69 |= ~v40 < v10 * v77; ++v78; v77 = v10 * v77 + v40; goto LABEL_114; } v41 = (_DWORD *)a1; v69 = v71; v42 = *(_DWORD *)(a1 + 8); if ( v42 < *(_DWORD *)(a1 + 12) ) { LABEL_115: HIDWORD(a1) = -1; v41[2] = v42 + 1; goto LABEL_116; } LABEL_121: (*(void (__fastcall **)(_DWORD *))(*v41 + 40))(v41); v41 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v61 = v71; goto LABEL_117; } LABEL_116: v61 = 0; if ( v41[2] >= v41[3] ) { v61 = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v41 + 36))(v41) == -1 ) { LODWORD(a1) = 0; v61 = v71; } } LABEL_117: v43 = a3 == -1; v44 = v43 & (a2 != 0); if ( v44 ) { v43 = 0; if ( a2[2] >= a2[3] ) { v46 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v43 = 0; if ( v46 == -1 ) { a2 = 0; v43 = v44; } } } if ( v61 == v43 ) { v27 = v85[0]; v28 = *(v85[0] - 3); goto LABEL_53; } LOBYTE(v14) = BYTE4(a1); if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) { v45 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) { v56 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); LOBYTE(v14) = v56; if ( v56 == -1 ) { LODWORD(a1) = 0; LOBYTE(v14) = -1; } } else { LOBYTE(v14) = *v45; } } } v27 = v85[0]; v28 = *(v85[0] - 3); if ( !v78 ) { v71 = 0; v73 = *(_BYTE *)(v8 + 16); goto LABEL_53; } v62 = (std::string *)(v28 + 1); if ( v28 + 1 > *(v85[0] - 2) || *((int *)v85[0] - 1) > 0 ) std::string::reserve(v85, v62, (unsigned int)v58); v47 = v78; v78 = 0; *((_BYTE *)v85[0] + *(v85[0] - 3)) = v47; v48 = v85[0]; if ( (_UNKNOWN *)v85[0] != &unk_4E93FC ) { *(v85[0] - 1) = 0; *(v48 - 3) = (unsigned int)v62; *((_BYTE *)v48 + v28 + 1) = 0; } LABEL_114: v41 = (_DWORD *)a1; v42 = *(_DWORD *)(a1 + 8); if ( v42 < *(_DWORD *)(a1 + 12) ) goto LABEL_115; goto LABEL_121; } if ( v73 ) { v57 = v73; v27 = v85[0]; v69 = 0; v73 = 0; v71 = v57; v28 = *(v85[0] - 3); v77 = 0; } else { v69 = 0; v77 = 0; LABEL_42: v21 = (char)v14; if ( Buf > 10 ) { if ( (unsigned __int8)(v14 - 48) <= 9u ) goto LABEL_45; while ( (unsigned __int8)(v14 - 97) <= 5u ) { v22 = v21 - 87; if ( v67 < v77 ) goto LABEL_47; LABEL_72: v69 |= ~v22 < v10 * v77; v23 = (_DWORD *)a1; v77 = v22 + v10 * v77; ++v78; v24 = *(_DWORD *)(a1 + 8); if ( v24 < *(_DWORD *)(a1 + 12) ) goto LABEL_48; LABEL_73: (*(void (__fastcall **)(_DWORD *, int))(*v23 + 40))(v23, v22); v23 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_49; v72 = 1; LABEL_50: v25 = a3 == -1; v26 = v25 & (a2 != 0); if ( v26 ) { v25 = 0; if ( a2[2] >= a2[3] ) { v34 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v25 = 0; if ( v34 == -1 ) { a2 = 0; v25 = v26; } } } if ( v72 == v25 ) { v27 = v85[0]; v71 = 1; v28 = *(v85[0] - 3); goto LABEL_53; } LOBYTE(v14) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_42; v33 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v14) = *v33; goto LABEL_42; } v21 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); LOBYTE(v14) = v21; if ( v21 != -1 ) goto LABEL_42; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_103; LOBYTE(v14) = -1; } if ( (unsigned __int8)(v14 - 65) <= 5u ) { v22 = v21 - 55; goto LABEL_46; } } else if ( (char)v14 > 47 && (char)(Buf + 48) > (char)v14 ) { LABEL_45: v22 = (char)v14 - 48; LABEL_46: if ( v67 >= v77 ) goto LABEL_72; LABEL_47: v23 = (_DWORD *)a1; v69 = 1; v24 = *(_DWORD *)(a1 + 8); if ( v24 >= *(_DWORD *)(a1 + 12) ) goto LABEL_73; LABEL_48: HIDWORD(a1) = -1; v23[2] = v24 + 1; LABEL_49: v72 = 0; if ( v23[2] >= v23[3] ) { v72 = 0; if ( (*(int (__fastcall **)(_DWORD *, int))(*v23 + 36))(v23, v22) == -1 ) { LODWORD(a1) = 0; v72 = 1; } } goto LABEL_50; } LABEL_103: v27 = v85[0]; v28 = *(v85[0] - 3); v71 = 0; } LABEL_53: if ( v28 ) { Bufa = (std::string *)(v28 + 1); if ( v28 + 1 > *(v27 - 2) || (int)*(v27 - 1) > 0 ) std::string::reserve(v85, Bufa, (unsigned int)v58); *((_BYTE *)v85[0] + *(v85[0] - 3)) = v78; v36 = v85[0]; v37 = v85[0] - 3; if ( (_UNKNOWN *)v85[0] != &unk_4E93FC ) { *(v85[0] - 1) = 0; *(v36 - 3) = (unsigned int)Bufa; *((_BYTE *)v37 + v28 + 13) = 0; v36 = v85[0]; v37 = v85[0] - 3; } Bufc = v37; v38 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v85); v29 = (volatile signed __int32 *)Bufc; if ( !v38 ) *a5 = 4; if ( v78 || v82 || *(v36 - 3) ) goto LABEL_97; LABEL_56: *a6 = 0; *a5 = 4; } else { v29 = (volatile signed __int32 *)(v27 - 3); if ( !v78 && !v82 ) goto LABEL_56; LABEL_97: if ( v73 ) goto LABEL_56; if ( v69 ) { *a6 = -1; *a5 = 4; } else { if ( v68 ) v77 = -v77; *a6 = v77; } } if ( v71 ) *a5 |= 2u; result = a1; if ( v29 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) { v83 = a1; std::string::_Rep::_M_dispose(v29, (int)&v84); return v83; } return result; } // 4638B7: variable 'v58' is possibly undefined // 46391D: variable 'v59' is possibly undefined // 463932: variable 'v22' is possibly undefined // 4E9608: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (00463B20) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { unsigned int v6; // edi int v7; // ebx int v8; // esi int v9; // eax char v10; // bl char v11; // dl char v12; // dl int v13; // ebx char v14; // al char v15; // cl unsigned int v16; // eax _DWORD *v17; // ecx unsigned int v18; // eax char v19; // dl int v20; // edx int v21; // edx _DWORD *v22; // ecx unsigned int v23; // eax char v24; // al char v25; // bl unsigned int *v26; // edx int v27; // ebx unsigned __int64 v28; // kr00_8 bool v30; // al int v31; // eax _BYTE *v32; // eax int v33; // edx _BYTE *v34; // eax int v35; // eax _BYTE *v36; // eax int v37; // eax _DWORD *v38; // ecx unsigned int v39; // eax char v40; // al char v41; // bl _BYTE *v42; // eax int v43; // edx char v44; // cl unsigned int *v45; // eax int v46; // eax _BYTE *v47; // eax char v48; // al char v49; // al int v50; // eax char v51; // al unsigned int v52; // [esp+4h] [ebp-64h] bool v53; // [esp+18h] [ebp-50h] size_t MaxCount; // [esp+1Ch] [ebp-4Ch] char v55; // [esp+20h] [ebp-48h] std::string *v56; // [esp+20h] [ebp-48h] unsigned int v57; // [esp+24h] [ebp-44h] int Buf; // [esp+28h] [ebp-40h] void *Bufa; // [esp+28h] [ebp-40h] unsigned int v60; // [esp+2Ch] [ebp-3Ch] char v61; // [esp+30h] [ebp-38h] int v62; // [esp+30h] [ebp-38h] int v63; // [esp+34h] [ebp-34h] char v64; // [esp+34h] [ebp-34h] unsigned int v65; // [esp+34h] [ebp-34h] int v66; // [esp+38h] [ebp-30h] char v67; // [esp+3Dh] [ebp-2Bh] char v68; // [esp+3Eh] [ebp-2Ah] char v69; // [esp+3Eh] [ebp-2Ah] char v70; // [esp+3Eh] [ebp-2Ah] char v71; // [esp+3Fh] [ebp-29h] bool v72; // [esp+3Fh] [ebp-29h] char v73; // [esp+3Fh] [ebp-29h] char v74; // [esp+4Bh] [ebp-1Dh] BYREF unsigned int *v75[7]; // [esp+4Ch] [ebp-1Ch] BYREF v6 = 8; v7 = a4; v8 = std::__use_cache>::operator()((int *)(a4 + 108)); v9 = *(_DWORD *)(v7 + 12) & 0x4A; v63 = v9; if ( v9 != 64 ) v6 = v9 == 8 ? 16 : 10; v10 = HIDWORD(a1) == -1; v11 = v10 & ((_DWORD)a1 != 0); if ( v11 ) { v10 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v73 = v11; if ( (*(int (**)(void))(*(_DWORD *)a1 + 36))() == -1 ) { LODWORD(a1) = 0; v10 = v73; } } } v12 = a3 == -1; v71 = v12 & (a2 != 0); if ( v71 ) { v12 = 0; if ( a2[2] >= a2[3] ) { v46 = (*(int (**)(void))(*a2 + 36))(); v12 = 0; if ( v46 == -1 ) { a2 = 0; v12 = v71; } } } if ( v12 == v10 ) { v53 = 0; v15 = *(_BYTE *)(v8 + 16); LOBYTE(v13) = 0; v61 = 1; v66 = 0; v72 = 0; LABEL_34: if ( v6 == 16 ) { LABEL_15: MaxCount = 22; Buf = 22; v75[0] = (unsigned int *)&unk_4E93FC; if ( !v15 ) goto LABEL_37; goto LABEL_16; } LABEL_35: MaxCount = v6; Buf = v6; goto LABEL_36; } LOBYTE(v13) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) { LABEL_7: v14 = *(_BYTE *)(v8 + 74); v15 = *(_BYTE *)(v8 + 16); v53 = v14 == (char)v13; if ( v14 == (_BYTE)v13 ) goto LABEL_9; goto LABEL_8; } v47 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) { v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v13 == -1 ) LODWORD(a1) = 0; goto LABEL_7; } LOBYTE(v13) = *v47; v48 = *(_BYTE *)(v8 + 74); v15 = *(_BYTE *)(v8 + 16); v53 = v48 == (char)v13; if ( v48 == (_BYTE)v13 ) { LABEL_9: if ( (!v15 || *(_BYTE *)(v8 + 37) != (_BYTE)v13) && *(_BYTE *)(v8 + 36) != (_BYTE)v13 ) { v16 = *(_DWORD *)(a1 + 8); if ( v16 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v16 + 1; HIDWORD(a1) = -1; v61 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v61 ) { v66 = 0; v15 = *(_BYTE *)(v8 + 16); v72 = 0; if ( v6 == 16 ) goto LABEL_15; goto LABEL_35; } v49 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); v15 = *(_BYTE *)(v8 + 16); LOBYTE(v13) = v49; } goto LABEL_18; } LABEL_8: if ( *(_BYTE *)(v8 + 75) == (_BYTE)v13 ) goto LABEL_9; v53 = 0; LABEL_18: v66 = 0; v72 = 0; v62 = v63; while ( 1 ) { if ( v15 && *(_BYTE *)(v8 + 37) == (_BYTE)v13 || *(_BYTE *)(v8 + 36) == (_BYTE)v13 ) { LABEL_66: v61 = 0; goto LABEL_34; } if ( *(_BYTE *)(v8 + 78) != (_BYTE)v13 ) break; v30 = !v72 || v6 == 10; if ( !v30 ) goto LABEL_24; v72 = v62 == 0 || v6 == 8; if ( !v72 ) { ++v66; v72 = v30; LABEL_28: v17 = (_DWORD *)a1; v18 = *(_DWORD *)(a1 + 8); if ( v18 < *(_DWORD *)(a1 + 12) ) goto LABEL_29; goto LABEL_62; } v17 = (_DWORD *)a1; v66 = 0; v6 = 8; v18 = *(_DWORD *)(a1 + 8); if ( v18 < *(_DWORD *)(a1 + 12) ) { LABEL_29: HIDWORD(a1) = -1; v17[2] = v18 + 1; LABEL_30: v64 = 0; if ( v17[2] >= v17[3] && (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17) == -1 ) { LODWORD(a1) = 0; v64 = 1; } goto LABEL_31; } LABEL_62: (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); v17 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_30; v64 = 1; LABEL_31: v19 = a3 == -1; v68 = v19 & (a2 != 0); if ( v68 ) { v19 = 0; if ( a2[2] >= a2[3] ) { v31 = (*(int (**)(void))(*a2 + 36))(); v19 = 0; if ( v31 == -1 ) { a2 = 0; v19 = v68; } } } if ( v19 == v64 ) { v61 = 1; v15 = *(_BYTE *)(v8 + 16); goto LABEL_34; } LOBYTE(v13) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v34 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) { v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v13 == -1 ) LODWORD(a1) = 0; } else { LOBYTE(v13) = *v34; } } v15 = *(_BYTE *)(v8 + 16); if ( !v72 ) goto LABEL_66; } if ( !v72 ) goto LABEL_66; LABEL_24: if ( *(_BYTE *)(v8 + 76) != (_BYTE)v13 && *(_BYTE *)(v8 + 77) != (_BYTE)v13 ) { v61 = 0; v72 = 1; goto LABEL_34; } if ( v62 == 0 || v6 == 16 ) { v66 = 0; v6 = 16; v72 = 0; goto LABEL_28; } v61 = 0; MaxCount = v6; Buf = v6; v72 = 1; LABEL_36: v75[0] = (unsigned int *)&unk_4E93FC; if ( v15 ) LABEL_16: std::string::reserve(v75, (std::string *)0x20, v52); LABEL_37: v57 = v53 + 0x7FFFFFFF; v60 = v57 / v6; v69 = *(_BYTE *)(v8 + 100); if ( v69 ) { if ( v61 ) { v26 = v75[0]; v65 = 0; v67 = 0; v69 = v61; v27 = *(v75[0] - 3); v61 = 0; goto LABEL_51; } v67 = 0; Bufa = (void *)(v8 + 78); v65 = 0; while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v13 ) { if ( (_BYTE)v13 == *(_BYTE *)(v8 + 36) ) goto LABEL_97; v36 = memchr(Bufa, (char)v13, MaxCount); if ( !v36 ) goto LABEL_97; v37 = v36 - (_BYTE *)Bufa; if ( v37 > 15 ) v37 -= 6; if ( v60 >= v65 ) { v67 |= v57 - v37 < v6 * v65; ++v66; v65 = v6 * v65 + v37; goto LABEL_108; } v38 = (_DWORD *)a1; v67 = v69; v39 = *(_DWORD *)(a1 + 8); if ( v39 < *(_DWORD *)(a1 + 12) ) { LABEL_109: HIDWORD(a1) = -1; v38[2] = v39 + 1; goto LABEL_110; } LABEL_115: (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); v38 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v55 = v69; goto LABEL_111; } LABEL_110: v55 = 0; if ( v38[2] >= v38[3] ) { v55 = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38) == -1 ) { LODWORD(a1) = 0; v55 = v69; } } LABEL_111: v40 = a3 == -1; v41 = v40 & (a2 != 0); if ( v41 ) { v40 = 0; if ( a2[2] >= a2[3] ) { v43 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v40 = 0; if ( v43 == -1 ) { a2 = 0; v40 = v41; } } } if ( v55 == v40 ) { v26 = v75[0]; v27 = *(v75[0] - 3); goto LABEL_51; } LOBYTE(v13) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v42 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v42 >= *(_DWORD *)(a1 + 12) ) { v50 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); LOBYTE(v13) = v50; if ( v50 == -1 ) { LODWORD(a1) = 0; LOBYTE(v13) = -1; } } else { LOBYTE(v13) = *v42; } } } v26 = v75[0]; v27 = *(v75[0] - 3); if ( !v66 ) { v69 = 0; v61 = *(_BYTE *)(v8 + 16); goto LABEL_51; } v56 = (std::string *)(v27 + 1); if ( v27 + 1 > *(v75[0] - 2) || *((int *)v75[0] - 1) > 0 ) std::string::reserve(v75, v56, v52); v44 = v66; v66 = 0; *((_BYTE *)v75[0] + *(v75[0] - 3)) = v44; v45 = v75[0]; if ( (_UNKNOWN *)v75[0] != &unk_4E93FC ) { *(v75[0] - 1) = 0; *(v45 - 3) = (unsigned int)v56; *((_BYTE *)v45 + v27 + 1) = 0; } LABEL_108: v38 = (_DWORD *)a1; v39 = *(_DWORD *)(a1 + 8); if ( v39 < *(_DWORD *)(a1 + 12) ) goto LABEL_109; goto LABEL_115; } if ( v61 ) { v51 = v61; v26 = v75[0]; v67 = 0; v61 = 0; v69 = v51; v27 = *(v75[0] - 3); v65 = 0; } else { v67 = 0; v65 = 0; LABEL_40: v20 = (char)v13; if ( Buf > 10 ) { if ( (unsigned __int8)(v13 - 48) <= 9u ) goto LABEL_43; while ( (unsigned __int8)(v13 - 97) <= 5u ) { v21 = v20 - 87; if ( v60 < v65 ) goto LABEL_45; LABEL_70: v67 |= v57 - v21 < v6 * v65; v22 = (_DWORD *)a1; v65 = v21 + v6 * v65; ++v66; v23 = *(_DWORD *)(a1 + 8); if ( v23 < *(_DWORD *)(a1 + 12) ) goto LABEL_46; LABEL_71: (*(void (__fastcall **)(_DWORD *, int))(*v22 + 40))(v22, v21); v22 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_47; v70 = 1; LABEL_48: v24 = a3 == -1; v25 = v24 & (a2 != 0); if ( v25 ) { v24 = 0; if ( a2[2] >= a2[3] ) { v33 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v24 = 0; if ( v33 == -1 ) { a2 = 0; v24 = v25; } } } if ( v70 == v24 ) { v26 = v75[0]; v69 = 1; v27 = *(v75[0] - 3); goto LABEL_51; } LOBYTE(v13) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_40; v32 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v32 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v13) = *v32; goto LABEL_40; } v20 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); LOBYTE(v13) = v20; if ( v20 != -1 ) goto LABEL_40; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_97; LOBYTE(v13) = -1; } if ( (unsigned __int8)(v13 - 65) <= 5u ) { v21 = v20 - 55; goto LABEL_44; } } else if ( (char)v13 > 47 && (char)(Buf + 48) > (char)v13 ) { LABEL_43: v21 = (char)v13 - 48; LABEL_44: if ( v60 >= v65 ) goto LABEL_70; LABEL_45: v22 = (_DWORD *)a1; v67 = 1; v23 = *(_DWORD *)(a1 + 8); if ( v23 >= *(_DWORD *)(a1 + 12) ) goto LABEL_71; LABEL_46: HIDWORD(a1) = -1; v22[2] = v23 + 1; LABEL_47: v70 = 0; if ( v22[2] >= v22[3] ) { v70 = 0; if ( (*(int (__fastcall **)(_DWORD *, int))(*v22 + 36))(v22, v21) == -1 ) { LODWORD(a1) = 0; v70 = 1; } } goto LABEL_48; } LABEL_97: v26 = v75[0]; v27 = *(v75[0] - 3); v69 = 0; } LABEL_51: if ( v27 ) { std::string::push_back(v75, (std::string *)(char)v66, v52); if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v75) ) *a5 = 4; v26 = v75[0]; if ( v66 || v72 || *(v75[0] - 3) ) goto LABEL_91; LABEL_54: *a6 = 0; *a5 = 4; } else { if ( !v66 && !v72 ) goto LABEL_54; LABEL_91: if ( v61 ) goto LABEL_54; if ( v67 ) { *a6 = v53 + 0x7FFFFFFF; *a5 = 4; } else { v35 = v65; if ( v53 ) v35 = -v65; *a6 = v35; } } if ( v69 ) *a5 |= 2u; v28 = a1; if ( v26 == (unsigned int *)&unk_4E93FC ) return a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v26 - 3, (int)&v74); return v28; } // 463C53: variable 'v52' is possibly undefined // 464412: variable 'v21' is possibly undefined //----- (004645A0) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6) { int v6; // edi int v7; // ebx int v8; // esi int v9; // eax unsigned int v10; // edi char v11; // dl char v12; // bl char v13; // bl int v14; // ebx char v15; // al char v16; // cl unsigned int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax char v20; // dl int v21; // edx int v22; // edx _DWORD *v23; // ecx unsigned int v24; // eax char v25; // al char v26; // bl unsigned int *v27; // ecx int v28; // ebx volatile signed __int32 *v29; // ecx unsigned __int64 result; // rax bool v31; // al int v32; // eax _BYTE *v33; // eax int v34; // edx _BYTE *v35; // eax unsigned int *v36; // edi unsigned int *v37; // ecx char v38; // al _BYTE *v39; // eax int v40; // eax _DWORD *v41; // ecx unsigned int v42; // eax char v43; // al char v44; // bl _BYTE *v45; // eax int v46; // edx char v47; // cl unsigned int *v48; // eax int v49; // eax int v50; // eax _BYTE *v51; // eax char v52; // al char v53; // al std::locale::_Impl *v54; // eax std::locale::_Impl *v55; // esi int v56; // eax char v57; // al void (__cdecl *v58)(void *); // [esp+4h] [ebp-64h] unsigned int v59; // [esp+8h] [ebp-60h] size_t MaxCount; // [esp+18h] [ebp-50h] char v61; // [esp+1Ch] [ebp-4Ch] std::string *v62; // [esp+1Ch] [ebp-4Ch] int Buf; // [esp+20h] [ebp-48h] std::string *Bufa; // [esp+20h] [ebp-48h] unsigned int *Bufc; // [esp+20h] [ebp-48h] void *Bufb; // [esp+20h] [ebp-48h] unsigned int v67; // [esp+24h] [ebp-44h] bool v68; // [esp+29h] [ebp-3Fh] char v69; // [esp+2Ah] [ebp-3Eh] char v70; // [esp+2Bh] [ebp-3Dh] char v71; // [esp+2Bh] [ebp-3Dh] char v72; // [esp+2Bh] [ebp-3Dh] char v73; // [esp+2Ch] [ebp-3Ch] int v74; // [esp+2Ch] [ebp-3Ch] int v75; // [esp+30h] [ebp-38h] char v76; // [esp+30h] [ebp-38h] unsigned int v77; // [esp+30h] [ebp-38h] int v78; // [esp+34h] [ebp-34h] char v79; // [esp+34h] [ebp-34h] int *v80; // [esp+38h] [ebp-30h] char v81; // [esp+38h] [ebp-30h] bool v82; // [esp+38h] [ebp-30h] unsigned __int64 v83; // [esp+38h] [ebp-30h] char v84; // [esp+4Bh] [ebp-1Dh] BYREF unsigned int *v85[7]; // [esp+4Ch] [ebp-1Ch] BYREF v6 = a4; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); v80 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); if ( !v8 ) { v54 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v58); *((_DWORD *)v54 + 1) = 0; v55 = v54; *((_WORD *)v54 + 18) = 0; *(_DWORD *)v54 = &off_4F65A0; *((_DWORD *)v54 + 2) = 0; *((_DWORD *)v54 + 3) = 0; *((_BYTE *)v54 + 16) = 0; *((_DWORD *)v54 + 5) = 0; *((_DWORD *)v54 + 6) = 0; *((_DWORD *)v54 + 7) = 0; *((_DWORD *)v54 + 8) = 0; *((_BYTE *)v54 + 100) = 0; std::__numpunct_cache::_M_cache((int)v54, v6 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v55, (const std::locale::facet *)v7, v59); v8 = *v80; } v9 = *(_DWORD *)(v6 + 12); v10 = 8; v75 = v9 & 0x4A; if ( v75 != 64 ) v10 = v75 == 8 ? 16 : 10; v11 = HIDWORD(a1) == -1; v12 = v11 & ((_DWORD)a1 != 0); if ( v12 ) { v11 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v50 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v11 = 0; if ( v50 == -1 ) { LODWORD(a1) = 0; v11 = v12; } } } v13 = a3 == -1; v81 = v13 & (a2 != 0); if ( v81 ) { v13 = 0; if ( a2[2] >= a2[3] ) { v79 = v11; v49 = (*(int (**)(void))(*a2 + 36))(); v11 = v79; if ( v49 == -1 ) { a2 = 0; v13 = v81; } } } if ( v11 == v13 ) { v68 = 0; v16 = *(_BYTE *)(v8 + 16); LOBYTE(v14) = 0; v73 = 1; v78 = 0; v82 = 0; LABEL_36: if ( v10 == 16 ) { LABEL_17: MaxCount = 22; Buf = 22; v85[0] = (unsigned int *)&unk_4E93FC; if ( !v16 ) goto LABEL_39; goto LABEL_18; } LABEL_37: MaxCount = v10; Buf = v10; goto LABEL_38; } LOBYTE(v14) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) { LABEL_9: v15 = *(_BYTE *)(v8 + 74); v16 = *(_BYTE *)(v8 + 16); v68 = v15 == (char)v14; if ( v15 == (_BYTE)v14 ) goto LABEL_11; goto LABEL_10; } v51 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ) { v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v14 == -1 ) LODWORD(a1) = 0; goto LABEL_9; } LOBYTE(v14) = *v51; v52 = *(_BYTE *)(v8 + 74); v16 = *(_BYTE *)(v8 + 16); v68 = v52 == (char)v14; if ( v52 == (_BYTE)v14 ) { LABEL_11: if ( (!v16 || *(_BYTE *)(v8 + 37) != (_BYTE)v14) && *(_BYTE *)(v8 + 36) != (_BYTE)v14 ) { v17 = *(_DWORD *)(a1 + 8); if ( v17 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v17 + 1; HIDWORD(a1) = -1; v73 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v73 ) { v78 = 0; v16 = *(_BYTE *)(v8 + 16); v82 = 0; if ( v10 == 16 ) goto LABEL_17; goto LABEL_37; } v53 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); v16 = *(_BYTE *)(v8 + 16); LOBYTE(v14) = v53; } goto LABEL_20; } LABEL_10: if ( *(_BYTE *)(v8 + 75) == (_BYTE)v14 ) goto LABEL_11; v68 = 0; LABEL_20: v78 = 0; v82 = 0; v74 = v75; while ( 1 ) { if ( v16 && *(_BYTE *)(v8 + 37) == (_BYTE)v14 || *(_BYTE *)(v8 + 36) == (_BYTE)v14 ) { LABEL_68: v73 = 0; goto LABEL_36; } if ( *(_BYTE *)(v8 + 78) != (_BYTE)v14 ) break; v31 = !v82 || v10 == 10; if ( !v31 ) goto LABEL_26; v82 = v74 == 0 || v10 == 8; if ( !v82 ) { ++v78; v82 = v31; LABEL_30: v18 = (_DWORD *)a1; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) goto LABEL_31; goto LABEL_64; } v18 = (_DWORD *)a1; v78 = 0; v10 = 8; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) { LABEL_31: HIDWORD(a1) = -1; v18[2] = v19 + 1; LABEL_32: v76 = 0; if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) { LODWORD(a1) = 0; v76 = 1; } goto LABEL_33; } LABEL_64: (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); v18 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_32; v76 = 1; LABEL_33: v20 = a3 == -1; v70 = v20 & (a2 != 0); if ( v70 ) { v20 = 0; if ( a2[2] >= a2[3] ) { v32 = (*(int (**)(void))(*a2 + 36))(); v20 = 0; if ( v32 == -1 ) { a2 = 0; v20 = v70; } } } if ( v20 == v76 ) { v73 = 1; v16 = *(_BYTE *)(v8 + 16); goto LABEL_36; } LOBYTE(v14) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v35 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) { v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v14 == -1 ) LODWORD(a1) = 0; } else { LOBYTE(v14) = *v35; } } v16 = *(_BYTE *)(v8 + 16); if ( !v82 ) goto LABEL_68; } if ( !v82 ) goto LABEL_68; LABEL_26: if ( *(_BYTE *)(v8 + 76) != (_BYTE)v14 && *(_BYTE *)(v8 + 77) != (_BYTE)v14 ) { v73 = 0; v82 = 1; goto LABEL_36; } if ( v10 == 16 || v74 == 0 ) { v78 = 0; v10 = 16; v82 = 0; goto LABEL_30; } v73 = 0; MaxCount = v10; Buf = v10; v82 = 1; LABEL_38: v85[0] = (unsigned int *)&unk_4E93FC; if ( v16 ) LABEL_18: std::string::reserve(v85, (std::string *)0x20, (unsigned int)v58); LABEL_39: v67 = 0xFFFFFFFF / v10; v71 = *(_BYTE *)(v8 + 100); if ( v71 ) { if ( v73 ) { v27 = v85[0]; v77 = 0; v69 = 0; v71 = v73; v28 = *(v85[0] - 3); v73 = 0; goto LABEL_53; } v69 = 0; Bufb = (void *)(v8 + 78); v77 = 0; while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v14 ) { if ( (_BYTE)v14 == *(_BYTE *)(v8 + 36) ) goto LABEL_103; v39 = memchr(Bufb, (char)v14, MaxCount); if ( !v39 ) goto LABEL_103; v40 = v39 - (_BYTE *)Bufb; if ( v40 > 15 ) v40 -= 6; if ( v67 >= v77 ) { v69 |= ~v40 < v10 * v77; ++v78; v77 = v10 * v77 + v40; goto LABEL_114; } v41 = (_DWORD *)a1; v69 = v71; v42 = *(_DWORD *)(a1 + 8); if ( v42 < *(_DWORD *)(a1 + 12) ) { LABEL_115: HIDWORD(a1) = -1; v41[2] = v42 + 1; goto LABEL_116; } LABEL_121: (*(void (__fastcall **)(_DWORD *))(*v41 + 40))(v41); v41 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v61 = v71; goto LABEL_117; } LABEL_116: v61 = 0; if ( v41[2] >= v41[3] ) { v61 = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v41 + 36))(v41) == -1 ) { LODWORD(a1) = 0; v61 = v71; } } LABEL_117: v43 = a3 == -1; v44 = v43 & (a2 != 0); if ( v44 ) { v43 = 0; if ( a2[2] >= a2[3] ) { v46 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v43 = 0; if ( v46 == -1 ) { a2 = 0; v43 = v44; } } } if ( v61 == v43 ) { v27 = v85[0]; v28 = *(v85[0] - 3); goto LABEL_53; } LOBYTE(v14) = BYTE4(a1); if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) { v45 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) { v56 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); LOBYTE(v14) = v56; if ( v56 == -1 ) { LODWORD(a1) = 0; LOBYTE(v14) = -1; } } else { LOBYTE(v14) = *v45; } } } v27 = v85[0]; v28 = *(v85[0] - 3); if ( !v78 ) { v71 = 0; v73 = *(_BYTE *)(v8 + 16); goto LABEL_53; } v62 = (std::string *)(v28 + 1); if ( v28 + 1 > *(v85[0] - 2) || *((int *)v85[0] - 1) > 0 ) std::string::reserve(v85, v62, (unsigned int)v58); v47 = v78; v78 = 0; *((_BYTE *)v85[0] + *(v85[0] - 3)) = v47; v48 = v85[0]; if ( (_UNKNOWN *)v85[0] != &unk_4E93FC ) { *(v85[0] - 1) = 0; *(v48 - 3) = (unsigned int)v62; *((_BYTE *)v48 + v28 + 1) = 0; } LABEL_114: v41 = (_DWORD *)a1; v42 = *(_DWORD *)(a1 + 8); if ( v42 < *(_DWORD *)(a1 + 12) ) goto LABEL_115; goto LABEL_121; } if ( v73 ) { v57 = v73; v27 = v85[0]; v69 = 0; v73 = 0; v71 = v57; v28 = *(v85[0] - 3); v77 = 0; } else { v69 = 0; v77 = 0; LABEL_42: v21 = (char)v14; if ( Buf > 10 ) { if ( (unsigned __int8)(v14 - 48) <= 9u ) goto LABEL_45; while ( (unsigned __int8)(v14 - 97) <= 5u ) { v22 = v21 - 87; if ( v67 < v77 ) goto LABEL_47; LABEL_72: v69 |= ~v22 < v10 * v77; v23 = (_DWORD *)a1; v77 = v22 + v10 * v77; ++v78; v24 = *(_DWORD *)(a1 + 8); if ( v24 < *(_DWORD *)(a1 + 12) ) goto LABEL_48; LABEL_73: (*(void (__fastcall **)(_DWORD *, int))(*v23 + 40))(v23, v22); v23 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_49; v72 = 1; LABEL_50: v25 = a3 == -1; v26 = v25 & (a2 != 0); if ( v26 ) { v25 = 0; if ( a2[2] >= a2[3] ) { v34 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v25 = 0; if ( v34 == -1 ) { a2 = 0; v25 = v26; } } } if ( v72 == v25 ) { v27 = v85[0]; v71 = 1; v28 = *(v85[0] - 3); goto LABEL_53; } LOBYTE(v14) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_42; v33 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v14) = *v33; goto LABEL_42; } v21 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); LOBYTE(v14) = v21; if ( v21 != -1 ) goto LABEL_42; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_103; LOBYTE(v14) = -1; } if ( (unsigned __int8)(v14 - 65) <= 5u ) { v22 = v21 - 55; goto LABEL_46; } } else if ( (char)v14 > 47 && (char)(Buf + 48) > (char)v14 ) { LABEL_45: v22 = (char)v14 - 48; LABEL_46: if ( v67 >= v77 ) goto LABEL_72; LABEL_47: v23 = (_DWORD *)a1; v69 = 1; v24 = *(_DWORD *)(a1 + 8); if ( v24 >= *(_DWORD *)(a1 + 12) ) goto LABEL_73; LABEL_48: HIDWORD(a1) = -1; v23[2] = v24 + 1; LABEL_49: v72 = 0; if ( v23[2] >= v23[3] ) { v72 = 0; if ( (*(int (__fastcall **)(_DWORD *, int))(*v23 + 36))(v23, v22) == -1 ) { LODWORD(a1) = 0; v72 = 1; } } goto LABEL_50; } LABEL_103: v27 = v85[0]; v28 = *(v85[0] - 3); v71 = 0; } LABEL_53: if ( v28 ) { Bufa = (std::string *)(v28 + 1); if ( v28 + 1 > *(v27 - 2) || (int)*(v27 - 1) > 0 ) std::string::reserve(v85, Bufa, (unsigned int)v58); *((_BYTE *)v85[0] + *(v85[0] - 3)) = v78; v36 = v85[0]; v37 = v85[0] - 3; if ( (_UNKNOWN *)v85[0] != &unk_4E93FC ) { *(v85[0] - 1) = 0; *(v36 - 3) = (unsigned int)Bufa; *((_BYTE *)v37 + v28 + 13) = 0; v36 = v85[0]; v37 = v85[0] - 3; } Bufc = v37; v38 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v85); v29 = (volatile signed __int32 *)Bufc; if ( !v38 ) *a5 = 4; if ( v78 || v82 || *(v36 - 3) ) goto LABEL_97; LABEL_56: *a6 = 0; *a5 = 4; } else { v29 = (volatile signed __int32 *)(v27 - 3); if ( !v78 && !v82 ) goto LABEL_56; LABEL_97: if ( v73 ) goto LABEL_56; if ( v69 ) { *a6 = -1; *a5 = 4; } else { if ( v68 ) v77 = -v77; *a6 = v77; } } if ( v71 ) *a5 |= 2u; result = a1; if ( v29 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) { v83 = a1; std::string::_Rep::_M_dispose(v29, (int)&v84); return v83; } return result; } // 464EF7: variable 'v58' is possibly undefined // 464F5D: variable 'v59' is possibly undefined // 464F72: variable 'v22' is possibly undefined // 4E9608: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (00465160) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6) { int v6; // edi int v7; // ebx int v8; // esi int v9; // eax char v10; // dl char v11; // bl char v12; // bl int v13; // ebx char v14; // al char v15; // cl unsigned int v16; // eax _DWORD *v17; // ecx unsigned int v18; // eax char v19; // dl unsigned int v20; // edx int v21; // eax _DWORD *v22; // ecx unsigned int v23; // eax char v24; // al char v25; // bl unsigned int *v26; // edx int v27; // ebx unsigned __int64 v28; // kr00_8 bool v30; // al int v31; // eax _BYTE *v32; // eax _BYTE *v33; // eax _BYTE *v34; // eax int v35; // eax _DWORD *v36; // ecx unsigned int v37; // eax char v38; // al char v39; // bl _BYTE *v40; // eax int v41; // edx char v42; // cl unsigned int *v43; // eax int v44; // eax int v45; // eax _BYTE *v46; // eax char v47; // al char v48; // al int v49; // eax char v50; // al unsigned int v51; // [esp+4h] [ebp-54h] size_t MaxCount; // [esp+10h] [ebp-48h] char v53; // [esp+14h] [ebp-44h] std::string *v54; // [esp+14h] [ebp-44h] int Buf; // [esp+18h] [ebp-40h] void *Bufa; // [esp+18h] [ebp-40h] int v57; // [esp+1Ch] [ebp-3Ch] char v58; // [esp+20h] [ebp-38h] int v59; // [esp+20h] [ebp-38h] int v60; // [esp+24h] [ebp-34h] char v61; // [esp+24h] [ebp-34h] unsigned __int16 v62; // [esp+24h] [ebp-34h] int v63; // [esp+28h] [ebp-30h] char v64; // [esp+28h] [ebp-30h] bool v65; // [esp+2Ch] [ebp-2Ch] char v66; // [esp+2Dh] [ebp-2Bh] char v67; // [esp+2Eh] [ebp-2Ah] char v68; // [esp+2Eh] [ebp-2Ah] char v69; // [esp+2Eh] [ebp-2Ah] char v70; // [esp+2Fh] [ebp-29h] bool v71; // [esp+2Fh] [ebp-29h] char v72; // [esp+3Bh] [ebp-1Dh] BYREF unsigned int *v73[7]; // [esp+3Ch] [ebp-1Ch] BYREF v6 = 8; v7 = a4; v8 = std::__use_cache>::operator()((int *)(a4 + 108)); v9 = *(_DWORD *)(v7 + 12) & 0x4A; v60 = v9; if ( v9 != 64 ) v6 = v9 == 8 ? 16 : 10; v10 = HIDWORD(a1) == -1; v11 = v10 & ((_DWORD)a1 != 0); if ( v11 ) { v10 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v45 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v10 = 0; if ( v45 == -1 ) { LODWORD(a1) = 0; v10 = v11; } } } v12 = a3 == -1; v70 = v12 & (a2 != 0); if ( v70 ) { v12 = 0; if ( a2[2] >= a2[3] ) { v64 = v10; v44 = (*(int (**)(void))(*a2 + 36))(); v10 = v64; if ( v44 == -1 ) { a2 = 0; v12 = v70; } } } if ( v10 == v12 ) { v65 = 0; v15 = *(_BYTE *)(v8 + 16); LOBYTE(v13) = 0; v58 = 1; v63 = 0; v71 = 0; LABEL_34: if ( v6 == 16 ) { LABEL_15: MaxCount = 22; Buf = 22; v73[0] = (unsigned int *)&unk_4E93FC; if ( !v15 ) goto LABEL_37; goto LABEL_16; } LABEL_35: MaxCount = v6; Buf = v6; goto LABEL_36; } LOBYTE(v13) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) { LABEL_7: v14 = *(_BYTE *)(v8 + 74); v15 = *(_BYTE *)(v8 + 16); v65 = v14 == (char)v13; if ( v14 == (_BYTE)v13 ) goto LABEL_9; goto LABEL_8; } v46 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ) { v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v13 == -1 ) LODWORD(a1) = 0; goto LABEL_7; } LOBYTE(v13) = *v46; v47 = *(_BYTE *)(v8 + 74); v15 = *(_BYTE *)(v8 + 16); v65 = v47 == (char)v13; if ( v47 == (_BYTE)v13 ) { LABEL_9: if ( (!v15 || *(_BYTE *)(v8 + 37) != (_BYTE)v13) && *(_BYTE *)(v8 + 36) != (_BYTE)v13 ) { v16 = *(_DWORD *)(a1 + 8); if ( v16 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v16 + 1; HIDWORD(a1) = -1; v58 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v58 ) { v63 = 0; v15 = *(_BYTE *)(v8 + 16); v71 = 0; if ( v6 == 16 ) goto LABEL_15; goto LABEL_35; } v48 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); v15 = *(_BYTE *)(v8 + 16); LOBYTE(v13) = v48; } goto LABEL_18; } LABEL_8: if ( *(_BYTE *)(v8 + 75) == (_BYTE)v13 ) goto LABEL_9; v65 = 0; LABEL_18: v63 = 0; v71 = 0; v59 = v60; while ( 1 ) { if ( v15 && *(_BYTE *)(v8 + 37) == (_BYTE)v13 || *(_BYTE *)(v8 + 36) == (_BYTE)v13 ) { LABEL_66: v58 = 0; goto LABEL_34; } if ( *(_BYTE *)(v8 + 78) != (_BYTE)v13 ) break; v30 = !v71 || v6 == 10; if ( !v30 ) goto LABEL_24; v71 = v59 == 0 || v6 == 8; if ( !v71 ) { ++v63; v71 = v30; LABEL_28: v17 = (_DWORD *)a1; v18 = *(_DWORD *)(a1 + 8); if ( v18 < *(_DWORD *)(a1 + 12) ) goto LABEL_29; goto LABEL_62; } v17 = (_DWORD *)a1; v63 = 0; v6 = 8; v18 = *(_DWORD *)(a1 + 8); if ( v18 < *(_DWORD *)(a1 + 12) ) { LABEL_29: HIDWORD(a1) = -1; v17[2] = v18 + 1; LABEL_30: v61 = 0; if ( v17[2] >= v17[3] && (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17) == -1 ) { LODWORD(a1) = 0; v61 = 1; } goto LABEL_31; } LABEL_62: (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); v17 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_30; v61 = 1; LABEL_31: v19 = a3 == -1; v67 = v19 & (a2 != 0); if ( v67 ) { v19 = 0; if ( a2[2] >= a2[3] ) { v31 = (*(int (**)(void))(*a2 + 36))(); v19 = 0; if ( v31 == -1 ) { a2 = 0; v19 = v67; } } } if ( v61 == v19 ) { v58 = 1; v15 = *(_BYTE *)(v8 + 16); goto LABEL_34; } LOBYTE(v13) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v33 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v33 >= *(_DWORD *)(a1 + 12) ) { v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v13 == -1 ) LODWORD(a1) = 0; } else { LOBYTE(v13) = *v33; } } v15 = *(_BYTE *)(v8 + 16); if ( !v71 ) goto LABEL_66; } if ( !v71 ) goto LABEL_66; LABEL_24: if ( *(_BYTE *)(v8 + 76) != (_BYTE)v13 && *(_BYTE *)(v8 + 77) != (_BYTE)v13 ) { v58 = 0; v71 = 1; goto LABEL_34; } if ( v59 == 0 || v6 == 16 ) { v63 = 0; v6 = 16; v71 = 0; goto LABEL_28; } v58 = 0; MaxCount = v6; Buf = v6; v71 = 1; LABEL_36: v73[0] = (unsigned int *)&unk_4E93FC; if ( v15 ) LABEL_16: std::string::reserve(v73, (std::string *)0x20, v51); LABEL_37: v57 = 0xFFFF / v6; v68 = *(_BYTE *)(v8 + 100); if ( v68 ) { if ( v58 ) goto LABEL_163; v66 = 0; Bufa = (void *)(v8 + 78); v62 = 0; while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v13 ) { if ( (_BYTE)v13 == *(_BYTE *)(v8 + 36) ) goto LABEL_98; v34 = memchr(Bufa, (char)v13, MaxCount); if ( !v34 ) goto LABEL_98; v35 = v34 - (_BYTE *)Bufa; if ( v35 > 15 ) v35 -= 6; if ( (unsigned __int16)v57 >= v62 ) { v66 |= (unsigned __int16)(v6 * v62) > 0xFFFF - v35; ++v63; v62 = v6 * v62 + v35; goto LABEL_109; } v36 = (_DWORD *)a1; v66 = v68; v37 = *(_DWORD *)(a1 + 8); if ( v37 < *(_DWORD *)(a1 + 12) ) { LABEL_110: HIDWORD(a1) = -1; v36[2] = v37 + 1; goto LABEL_111; } LABEL_116: (*(void (__fastcall **)(_DWORD *))(*v36 + 40))(v36); v36 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v53 = v68; goto LABEL_112; } LABEL_111: v53 = 0; if ( v36[2] >= v36[3] ) { v53 = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v36 + 36))(v36) == -1 ) { LODWORD(a1) = 0; v53 = v68; } } LABEL_112: v38 = a3 == -1; v39 = v38 & (a2 != 0); if ( v39 ) { v38 = 0; if ( a2[2] >= a2[3] ) { v41 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v38 = 0; if ( v41 == -1 ) { a2 = 0; v38 = v39; } } } if ( v53 == v38 ) { v26 = v73[0]; v27 = *(v73[0] - 3); goto LABEL_51; } LOBYTE(v13) = BYTE4(a1); if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) { v40 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) { v49 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); LOBYTE(v13) = v49; if ( v49 == -1 ) { LODWORD(a1) = 0; LOBYTE(v13) = -1; } } else { LOBYTE(v13) = *v40; } } } v26 = v73[0]; v27 = *(v73[0] - 3); if ( !v63 ) { v68 = 0; v58 = *(_BYTE *)(v8 + 16); goto LABEL_51; } v54 = (std::string *)(v27 + 1); if ( v27 + 1 > *(v73[0] - 2) || *((int *)v73[0] - 1) > 0 ) std::string::reserve(v73, v54, v51); v42 = v63; v63 = 0; *((_BYTE *)v73[0] + *(v73[0] - 3)) = v42; v43 = v73[0]; if ( (_UNKNOWN *)v73[0] != &unk_4E93FC ) { *(v73[0] - 1) = 0; *(v43 - 3) = (unsigned int)v54; *((_BYTE *)v43 + v27 + 1) = 0; } LABEL_109: v36 = (_DWORD *)a1; v37 = *(_DWORD *)(a1 + 8); if ( v37 < *(_DWORD *)(a1 + 12) ) goto LABEL_110; goto LABEL_116; } if ( v58 ) { LABEL_163: v50 = v58; v26 = v73[0]; v66 = 0; v58 = 0; v68 = v50; v27 = *(v73[0] - 3); v62 = 0; goto LABEL_51; } v66 = 0; v62 = 0; LABEL_40: v20 = (char)v13; if ( Buf > 10 ) { if ( (unsigned __int8)(v13 - 48) <= 9u ) goto LABEL_43; while ( (unsigned __int8)(v13 - 97) <= 5u ) { v21 = v20 - 87; if ( (unsigned __int16)v57 < v62 ) goto LABEL_45; LABEL_70: v20 = v6 * v62; v66 |= (unsigned __int16)v20 > 0xFFFF - v21; v22 = (_DWORD *)a1; v62 = v20 + v21; ++v63; v23 = *(_DWORD *)(a1 + 8); if ( v23 < *(_DWORD *)(a1 + 12) ) goto LABEL_46; LABEL_71: (*(void (__fastcall **)(_DWORD *, unsigned int))(*v22 + 40))(v22, v20); v22 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_47; v69 = 1; LABEL_48: v24 = a3 == -1; v25 = v24 & (a2 != 0); if ( v25 ) { v20 = a2[3]; v24 = 0; if ( a2[2] >= v20 ) { v20 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v24 = 0; if ( v20 == -1 ) { a2 = 0; v24 = v25; } } } if ( v69 == v24 ) { v26 = v73[0]; v68 = 1; v27 = *(v73[0] - 3); goto LABEL_51; } LOBYTE(v13) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_40; v32 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v32 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v13) = *v32; goto LABEL_40; } v20 = (*(int (__fastcall **)(_DWORD, unsigned int))(*(_DWORD *)a1 + 36))(a1, v20); LOBYTE(v13) = v20; if ( v20 != -1 ) goto LABEL_40; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_98; LOBYTE(v13) = -1; } if ( (unsigned __int8)(v13 - 65) <= 5u ) { v21 = v20 - 55; goto LABEL_44; } } else if ( (char)v13 > 47 && (char)v13 < (char)(Buf + 48) ) { LABEL_43: v21 = (char)v13 - 48; LABEL_44: if ( (unsigned __int16)v57 >= v62 ) goto LABEL_70; LABEL_45: v22 = (_DWORD *)a1; v66 = 1; v23 = *(_DWORD *)(a1 + 8); if ( v23 >= *(_DWORD *)(a1 + 12) ) goto LABEL_71; LABEL_46: HIDWORD(a1) = -1; v22[2] = v23 + 1; LABEL_47: v69 = 0; if ( v22[2] >= v22[3] ) { v69 = 0; if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v22 + 36))(v22, v20) == -1 ) { LODWORD(a1) = 0; v69 = 1; } } goto LABEL_48; } LABEL_98: v26 = v73[0]; v27 = *(v73[0] - 3); v68 = 0; LABEL_51: if ( v27 ) { std::string::push_back(v73, (std::string *)(char)v63, v51); if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v73) ) *a5 = 4; v26 = v73[0]; if ( v63 || v71 || *(v73[0] - 3) ) goto LABEL_92; LABEL_54: *a6 = 0; *a5 = 4; } else { if ( !v63 && !v71 ) goto LABEL_54; LABEL_92: if ( v58 ) goto LABEL_54; if ( v66 ) { *a6 = -1; *a5 = 4; } else { if ( v65 ) v62 = -v62; *a6 = v62; } } if ( v68 ) *a5 |= 2u; v28 = a1; if ( v26 == (unsigned int *)&unk_4E93FC ) return a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v26 - 3, (int)&v72); return v28; } // 465293: variable 'v51' is possibly undefined // 465A42: variable 'v20' is possibly undefined //----- (00465BD0) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int v6; // edi int v7; // ebx int v8; // esi char v9; // bl char v10; // dl char v11; // dl int v12; // ebx char v13; // al char v14; // cl unsigned int v15; // eax int v16; // eax int v17; // esi int v18; // edi _DWORD *v19; // ecx unsigned int v20; // eax char v21; // dl unsigned __int64 v22; // kr00_8 int v23; // esi int v24; // edi int v25; // ecx int v26; // ecx _DWORD *v27; // ecx unsigned int v28; // eax char v29; // al char v30; // bl unsigned int *v31; // ecx int v32; // ebx int *v33; // eax unsigned __int64 result; // rax bool v35; // al int v36; // ebx int v37; // edi unsigned int v38; // esi int v39; // eax unsigned int v40; // edi int v41; // eax _BYTE *v42; // eax int v43; // edx _BYTE *v44; // eax int v45; // eax unsigned int v46; // edx int *v47; // edi _DWORD *v48; // eax _BYTE *v49; // eax int v50; // eax int v51; // ecx int v52; // ebx int v53; // edi unsigned int v54; // esi unsigned int v55; // edi _DWORD *v56; // ecx unsigned int v57; // eax char v58; // al char v59; // bl _BYTE *v60; // eax int v61; // edx char v62; // cl unsigned int *v63; // eax int v64; // eax int *v65; // eax _BYTE *v66; // eax int v67; // eax char v68; // al unsigned int v69; // [esp+4h] [ebp-74h] unsigned int v70; // [esp+4h] [ebp-74h] bool v71; // [esp+1Bh] [ebp-5Dh] size_t MaxCount; // [esp+1Ch] [ebp-5Ch] UDItype n; // [esp+20h] [ebp-58h] char v74; // [esp+28h] [ebp-50h] std::string *v75; // [esp+28h] [ebp-50h] int Buf; // [esp+2Ch] [ebp-4Ch] void *Bufa; // [esp+2Ch] [ebp-4Ch] char v78; // [esp+38h] [ebp-40h] __int64 v79; // [esp+38h] [ebp-40h] int v80; // [esp+40h] [ebp-38h] char v81; // [esp+44h] [ebp-34h] char v82; // [esp+45h] [ebp-33h] char v83; // [esp+45h] [ebp-33h] char v84; // [esp+46h] [ebp-32h] char v85; // [esp+46h] [ebp-32h] char v86; // [esp+47h] [ebp-31h] bool v87; // [esp+47h] [ebp-31h] char v88; // [esp+47h] [ebp-31h] int v89; // [esp+48h] [ebp-30h] unsigned __int64 v90; // [esp+48h] [ebp-30h] char v91; // [esp+5Bh] [ebp-1Dh] BYREF unsigned int *v92[7]; // [esp+5Ch] [ebp-1Ch] BYREF v6 = 8; v7 = a4; v89 = std::__use_cache>::operator()((int *)(a4 + 108)); v8 = *(_DWORD *)(v7 + 12) & 0x4A; if ( v8 != 64 ) v6 = v8 == 8 ? 16 : 10; v9 = HIDWORD(a1) == -1; v10 = v9 & ((_DWORD)a1 != 0); if ( v10 ) { v9 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v88 = v10; if ( (*(int (**)(void))(*(_DWORD *)a1 + 36))() == -1 ) { LODWORD(a1) = 0; v9 = v88; } } } v11 = a3 == -1; v86 = v11 & (a2 != 0); if ( v86 ) { v11 = 0; if ( a2[2] >= a2[3] ) { v64 = (*(int (**)(void))(*a2 + 36))(); v11 = 0; if ( v64 == -1 ) { a2 = 0; v11 = v86; } } } if ( v11 == v9 ) { v71 = 0; LOBYTE(v12) = 0; v84 = 1; v80 = 0; v14 = *(_BYTE *)(v89 + 16); v87 = 0; LABEL_34: if ( v6 == 16 ) { LABEL_15: MaxCount = 22; Buf = 22; v92[0] = (unsigned int *)&unk_4E93FC; if ( !v14 ) goto LABEL_37; goto LABEL_16; } LABEL_35: MaxCount = v6; Buf = v6; goto LABEL_36; } LOBYTE(v12) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v66 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v66 >= *(_DWORD *)(a1 + 12) ) { v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v12 == -1 ) LODWORD(a1) = 0; } else { LOBYTE(v12) = *v66; } } v13 = *(_BYTE *)(v89 + 74); v14 = *(_BYTE *)(v89 + 16); v71 = v13 == (char)v12; if ( v13 == (_BYTE)v12 || *(_BYTE *)(v89 + 75) == (_BYTE)v12 ) { if ( (!v14 || *(_BYTE *)(v89 + 37) != (_BYTE)v12) && *(_BYTE *)(v89 + 36) != (_BYTE)v12 ) { v15 = *(_DWORD *)(a1 + 8); if ( v15 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v15 + 1; HIDWORD(a1) = -1; v84 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v84 ) { v80 = 0; v87 = 0; v14 = *(_BYTE *)(v89 + 16); if ( v6 == 16 ) goto LABEL_15; goto LABEL_35; } LOBYTE(v12) = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); v14 = *(_BYTE *)(v89 + 16); } } else { v71 = 0; } v80 = 0; v16 = v8; v17 = v6; v87 = 0; v18 = v16; while ( 1 ) { if ( v14 && *(_BYTE *)(v89 + 37) == (_BYTE)v12 || *(_BYTE *)(v89 + 36) == (_BYTE)v12 ) { LABEL_68: v84 = 0; v6 = v17; goto LABEL_34; } if ( *(_BYTE *)(v89 + 78) != (_BYTE)v12 ) break; v35 = !v87 || v17 == 10; if ( !v35 ) goto LABEL_24; v87 = v18 == 0 || v17 == 8; if ( !v87 ) { ++v80; v87 = v35; LABEL_28: v19 = (_DWORD *)a1; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) goto LABEL_29; goto LABEL_64; } v19 = (_DWORD *)a1; v80 = 0; v17 = 8; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) { LABEL_29: HIDWORD(a1) = -1; v19[2] = v20 + 1; LABEL_30: v78 = 0; if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) { LODWORD(a1) = 0; v78 = 1; } goto LABEL_31; } LABEL_64: (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); v19 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_30; v78 = 1; LABEL_31: v21 = a3 == -1; v85 = v21 & (a2 != 0); if ( v85 ) { v21 = 0; if ( a2[2] >= a2[3] ) { v41 = (*(int (**)(void))(*a2 + 36))(); v21 = 0; if ( v41 == -1 ) { a2 = 0; v21 = v85; } } } if ( v21 == v78 ) { v84 = 1; v6 = v17; v14 = *(_BYTE *)(v89 + 16); goto LABEL_34; } LOBYTE(v12) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v44 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v44 >= *(_DWORD *)(a1 + 12) ) { v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v12 == -1 ) LODWORD(a1) = 0; } else { LOBYTE(v12) = *v44; } } v14 = *(_BYTE *)(v89 + 16); if ( !v87 ) goto LABEL_68; } if ( !v87 ) goto LABEL_68; LABEL_24: if ( *(_BYTE *)(v89 + 76) != (_BYTE)v12 && *(_BYTE *)(v89 + 77) != (_BYTE)v12 ) { v84 = 0; v6 = v17; v87 = 1; goto LABEL_34; } if ( v18 == 0 || v17 == 16 ) { v80 = 0; v17 = 16; v87 = 0; goto LABEL_28; } v84 = 0; v6 = v17; MaxCount = v17; Buf = v17; v87 = 1; LABEL_36: v92[0] = (unsigned int *)&unk_4E93FC; if ( v14 ) LABEL_16: std::string::reserve(v92, (std::string *)0x20, v69); LABEL_37: n = 0x8000000000000000LL; if ( !v71 ) n = 0x7FFFFFFFFFFFFFFFLL; v79 = v6; v22 = n / v6; v82 = *(_BYTE *)(v89 + 100); if ( v82 ) { if ( v84 ) goto LABEL_164; v81 = 0; v23 = 0; v24 = 0; Bufa = (void *)(v89 + 78); while ( !*(_BYTE *)(v89 + 16) || *(_BYTE *)(v89 + 37) != (_BYTE)v12 ) { if ( (_BYTE)v12 == *(_BYTE *)(v89 + 36) ) goto LABEL_99; v49 = memchr(Bufa, (char)v12, MaxCount); if ( !v49 ) goto LABEL_99; v50 = v49 - (_BYTE *)Bufa; v51 = v50; if ( v50 > 15 ) v51 = v50 - 6; if ( v22 >= __PAIR64__(v24, v23) ) { v52 = v24 * v79 + v23 * HIDWORD(v79); v53 = ((unsigned int)v79 * (unsigned __int64)(unsigned int)v23) >> 32; v54 = v79 * v23; v55 = v52 + v53; v81 |= n - v51 < __PAIR64__(v55, v54); v24 = (v51 + __PAIR64__(v55, v54)) >> 32; v23 = v51 + v54; ++v80; goto LABEL_110; } v56 = (_DWORD *)a1; v81 = v82; v57 = *(_DWORD *)(a1 + 8); if ( v57 < *(_DWORD *)(a1 + 12) ) { LABEL_111: HIDWORD(a1) = -1; v56[2] = v57 + 1; goto LABEL_112; } LABEL_117: (*(void (__fastcall **)(_DWORD *))(*v56 + 40))(v56); v56 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v74 = v82; goto LABEL_113; } LABEL_112: v74 = 0; if ( v56[2] >= v56[3] ) { v74 = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56) == -1 ) { LODWORD(a1) = 0; v74 = v82; } } LABEL_113: v58 = a3 == -1; v59 = v58 & (a2 != 0); if ( v59 ) { v58 = 0; if ( a2[2] >= a2[3] ) { v61 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v58 = 0; if ( v61 == -1 ) { a2 = 0; v58 = v59; } } } if ( v74 == v58 ) { v31 = v92[0]; v32 = *(v92[0] - 3); goto LABEL_53; } LOBYTE(v12) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v60 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v60 >= *(_DWORD *)(a1 + 12) ) { v67 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); LOBYTE(v12) = v67; if ( v67 == -1 ) { LODWORD(a1) = 0; LOBYTE(v12) = -1; } } else { LOBYTE(v12) = *v60; } } } v31 = v92[0]; v32 = *(v92[0] - 3); if ( !v80 ) { v82 = 0; v84 = *(_BYTE *)(v89 + 16); goto LABEL_53; } v75 = (std::string *)(v32 + 1); if ( v32 + 1 > *(v92[0] - 2) || *((int *)v92[0] - 1) > 0 ) std::string::reserve(v92, v75, v70); v62 = v80; v80 = 0; *((_BYTE *)v92[0] + *(v92[0] - 3)) = v62; v63 = v92[0]; if ( (_UNKNOWN *)v92[0] != &unk_4E93FC ) { *(v92[0] - 1) = 0; *(v63 - 3) = (unsigned int)v75; *((_BYTE *)v63 + v32 + 1) = 0; } LABEL_110: v56 = (_DWORD *)a1; v57 = *(_DWORD *)(a1 + 8); if ( v57 < *(_DWORD *)(a1 + 12) ) goto LABEL_111; goto LABEL_117; } if ( v84 ) { LABEL_164: v68 = v84; v31 = v92[0]; v81 = 0; v23 = 0; v84 = 0; v24 = 0; v82 = v68; v32 = *(v92[0] - 3); goto LABEL_53; } v81 = 0; v23 = 0; v24 = 0; LABEL_42: v25 = (char)v12; if ( Buf > 10 ) { if ( (unsigned __int8)(v12 - 48) <= 9u ) goto LABEL_45; while ( (unsigned __int8)(v12 - 97) <= 5u ) { v26 = v25 - 87; if ( v22 < __PAIR64__(v24, v23) ) goto LABEL_47; LABEL_72: v36 = v24 * v79 + v23 * HIDWORD(v79); v37 = ((unsigned int)v79 * (unsigned __int64)(unsigned int)v23) >> 32; v38 = v79 * v23; v39 = v26; v40 = v36 + v37; v81 |= n - v26 < __PAIR64__(v40, v38); v27 = (_DWORD *)a1; v24 = (v39 + __PAIR64__(v40, v38)) >> 32; v23 = v39 + v38; ++v80; v28 = *(_DWORD *)(a1 + 8); if ( v28 < *(_DWORD *)(a1 + 12) ) goto LABEL_48; LABEL_73: (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); v27 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_49; v83 = 1; LABEL_50: v29 = a3 == -1; v30 = v29 & (a2 != 0); if ( v30 ) { v29 = 0; if ( a2[2] >= a2[3] ) { v43 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v29 = 0; if ( v43 == -1 ) { a2 = 0; v29 = v30; } } } if ( v83 == v29 ) { v31 = v92[0]; v82 = 1; v32 = *(v92[0] - 3); goto LABEL_53; } LOBYTE(v12) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_42; v42 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v12) = *v42; goto LABEL_42; } v25 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); LOBYTE(v12) = v25; if ( v25 != -1 ) goto LABEL_42; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_99; LOBYTE(v12) = -1; } if ( (unsigned __int8)(v12 - 65) <= 5u ) { v26 = v25 - 55; goto LABEL_46; } } else if ( (char)v12 > 47 && (char)(Buf + 48) > (char)v12 ) { LABEL_45: v26 = (char)v12 - 48; LABEL_46: if ( v22 >= __PAIR64__(v24, v23) ) goto LABEL_72; LABEL_47: v27 = (_DWORD *)a1; v81 = 1; v28 = *(_DWORD *)(a1 + 8); if ( v28 >= *(_DWORD *)(a1 + 12) ) goto LABEL_73; LABEL_48: HIDWORD(a1) = -1; v27[2] = v28 + 1; LABEL_49: v83 = 0; if ( v27[2] >= v27[3] ) { v83 = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) { LODWORD(a1) = 0; v83 = 1; } } goto LABEL_50; } LABEL_99: v31 = v92[0]; v32 = *(v92[0] - 3); v82 = 0; LABEL_53: if ( v32 ) { std::string::push_back(v92, (std::string *)(char)v80, v70); if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v89 + 8), *(_DWORD *)(v89 + 12), (const char **)v92) ) *a5 = 4; v31 = v92[0]; if ( v80 || v87 || *(v92[0] - 3) ) goto LABEL_93; LABEL_56: v33 = a6; *a6 = 0; v33[1] = 0; *a5 = 4; } else { if ( !v80 && !v87 ) goto LABEL_56; LABEL_93: if ( v84 ) goto LABEL_56; if ( v81 ) { v45 = 0; v46 = 0x80000000; if ( !v71 ) { v45 = -1; v46 = 0x7FFFFFFF; } v47 = a6; *a6 = v45; v48 = a5; v47[1] = v46; *v48 = 4; } else { if ( v71 ) { v23 = -v23; v24 = (unsigned __int64)-__SPAIR64__(v24, v23) >> 32; } v65 = a6; *a6 = v23; v65[1] = v24; } } if ( v82 ) *a5 |= 2u; result = a1; if ( v31 != (unsigned int *)&unk_4E93FC ) { v90 = a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v31 - 3, (int)&v91); return v90; } return result; } // 465D0D: variable 'v69' is possibly undefined // 4661AC: variable 'v70' is possibly undefined //----- (00466720) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int v6; // edi int v7; // ebx int v8; // esi char v9; // dl char v10; // bl char v11; // bl int v12; // ebx char v13; // al char v14; // cl unsigned int v15; // eax int v16; // eax int v17; // esi int v18; // edi _DWORD *v19; // ecx unsigned int v20; // eax char v21; // dl unsigned __int64 v22; // kr00_8 int v23; // esi int v24; // edi int v25; // ecx int v26; // ecx _DWORD *v27; // ecx unsigned int v28; // eax char v29; // al char v30; // bl unsigned int *v31; // edx int v32; // ebx int *v33; // eax unsigned __int64 v34; // kr08_8 bool v36; // al int v37; // eax int v38; // edi int v39; // ebx int v40; // eax int v41; // esi unsigned __int64 v42; // rax int v43; // eax _BYTE *v44; // eax int v45; // edx _BYTE *v46; // eax int *v47; // eax _BYTE *v48; // eax int v49; // ecx int v50; // ebx unsigned __int64 v51; // rax unsigned int v52; // esi unsigned __int64 v53; // rcx unsigned int v54; // edi _DWORD *v55; // ecx unsigned int v56; // eax char v57; // al char v58; // bl _BYTE *v59; // eax int v60; // edx char v61; // cl unsigned int *v62; // eax int v63; // eax int v64; // eax int *v65; // eax _BYTE *v66; // eax int v67; // eax char v68; // al unsigned int v69; // [esp+4h] [ebp-64h] unsigned int v70; // [esp+4h] [ebp-64h] size_t MaxCount; // [esp+14h] [ebp-54h] char v72; // [esp+18h] [ebp-50h] std::string *v73; // [esp+18h] [ebp-50h] int Buf; // [esp+1Ch] [ebp-4Ch] void *Bufa; // [esp+1Ch] [ebp-4Ch] char v76; // [esp+28h] [ebp-40h] __int64 v77; // [esp+28h] [ebp-40h] bool v78; // [esp+30h] [ebp-38h] char v79; // [esp+31h] [ebp-37h] char v80; // [esp+32h] [ebp-36h] char v81; // [esp+32h] [ebp-36h] _BYTE v82[5]; // [esp+33h] [ebp-35h] char v83; // [esp+33h] [ebp-35h] char v84; // [esp+34h] [ebp-34h] char v85; // [esp+3Bh] [ebp-2Dh] bool v86; // [esp+3Bh] [ebp-2Dh] int v87; // [esp+3Ch] [ebp-2Ch] char v88; // [esp+4Bh] [ebp-1Dh] BYREF unsigned int *v89[7]; // [esp+4Ch] [ebp-1Ch] BYREF v6 = 8; v7 = a4; v87 = std::__use_cache>::operator()((int *)(a4 + 108)); v8 = *(_DWORD *)(v7 + 12) & 0x4A; if ( v8 != 64 ) v6 = v8 == 8 ? 16 : 10; v9 = HIDWORD(a1) == -1; v10 = v9 & ((_DWORD)a1 != 0); if ( v10 ) { v9 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v64 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v9 = 0; if ( v64 == -1 ) { LODWORD(a1) = 0; v9 = v10; } } } v11 = a3 == -1; v85 = v11 & (a2 != 0); if ( v85 ) { v11 = 0; if ( a2[2] >= a2[3] ) { v84 = v9; v63 = (*(int (**)(void))(*a2 + 36))(); v9 = v84; if ( v63 == -1 ) { a2 = 0; v11 = v85; } } } if ( v9 == v11 ) { v78 = 0; LOBYTE(v12) = 0; v82[0] = 1; *(_DWORD *)&v82[1] = 0; v14 = *(_BYTE *)(v87 + 16); v86 = 0; LABEL_34: if ( v6 == 16 ) { LABEL_15: MaxCount = 22; Buf = 22; v89[0] = (unsigned int *)&unk_4E93FC; if ( !v14 ) goto LABEL_37; goto LABEL_16; } LABEL_35: MaxCount = v6; Buf = v6; goto LABEL_36; } LOBYTE(v12) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v66 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v66 >= *(_DWORD *)(a1 + 12) ) { v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v12 == -1 ) LODWORD(a1) = 0; } else { LOBYTE(v12) = *v66; } } v13 = *(_BYTE *)(v87 + 74); v14 = *(_BYTE *)(v87 + 16); v78 = v13 == (char)v12; if ( v13 == (_BYTE)v12 || *(_BYTE *)(v87 + 75) == (_BYTE)v12 ) { if ( (!v14 || *(_BYTE *)(v87 + 37) != (_BYTE)v12) && *(_BYTE *)(v87 + 36) != (_BYTE)v12 ) { v15 = *(_DWORD *)(a1 + 8); if ( v15 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v15 + 1; HIDWORD(a1) = -1; v82[0] = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v82[0] ) { *(_DWORD *)&v82[1] = 0; v86 = 0; v14 = *(_BYTE *)(v87 + 16); if ( v6 == 16 ) goto LABEL_15; goto LABEL_35; } LOBYTE(v12) = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); v14 = *(_BYTE *)(v87 + 16); } } else { v78 = 0; } *(_DWORD *)&v82[1] = 0; v16 = v8; v17 = v6; v86 = 0; v18 = v16; while ( 1 ) { if ( v14 && *(_BYTE *)(v87 + 37) == (_BYTE)v12 || *(_BYTE *)(v87 + 36) == (_BYTE)v12 ) { LABEL_66: v82[0] = 0; v6 = v17; goto LABEL_34; } if ( *(_BYTE *)(v87 + 78) != (_BYTE)v12 ) break; v36 = !v86 || v17 == 10; if ( !v36 ) goto LABEL_24; v86 = v18 == 0 || v17 == 8; if ( !v86 ) { ++*(_DWORD *)&v82[1]; v86 = v36; LABEL_28: v19 = (_DWORD *)a1; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) goto LABEL_29; goto LABEL_62; } v19 = (_DWORD *)a1; *(_DWORD *)&v82[1] = 0; v17 = 8; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) { LABEL_29: HIDWORD(a1) = -1; v19[2] = v20 + 1; LABEL_30: v76 = 0; if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) { LODWORD(a1) = 0; v76 = 1; } goto LABEL_31; } LABEL_62: (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); v19 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_30; v76 = 1; LABEL_31: v21 = a3 == -1; v83 = v21 & (a2 != 0); if ( v83 ) { v21 = 0; if ( a2[2] >= a2[3] ) { v43 = (*(int (**)(void))(*a2 + 36))(); v21 = 0; if ( v43 == -1 ) { a2 = 0; v21 = v83; } } } if ( v76 == v21 ) { v82[0] = 1; v6 = v17; v14 = *(_BYTE *)(v87 + 16); goto LABEL_34; } LOBYTE(v12) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v46 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ) { v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v12 == -1 ) LODWORD(a1) = 0; } else { LOBYTE(v12) = *v46; } } v14 = *(_BYTE *)(v87 + 16); if ( !v86 ) goto LABEL_66; } if ( !v86 ) goto LABEL_66; LABEL_24: if ( *(_BYTE *)(v87 + 76) != (_BYTE)v12 && *(_BYTE *)(v87 + 77) != (_BYTE)v12 ) { v82[0] = 0; v6 = v17; v86 = 1; goto LABEL_34; } if ( v18 == 0 || v17 == 16 ) { *(_DWORD *)&v82[1] = 0; v17 = 16; v86 = 0; goto LABEL_28; } v82[0] = 0; v6 = v17; MaxCount = v17; Buf = v17; v86 = 1; LABEL_36: v89[0] = (unsigned int *)&unk_4E93FC; if ( v14 ) LABEL_16: std::string::reserve(v89, (std::string *)0x20, v69); LABEL_37: v77 = v6; v22 = 0xFFFFFFFFFFFFFFFFLL / v6; v80 = *(_BYTE *)(v87 + 100); if ( v80 ) { if ( v82[0] ) goto LABEL_160; v79 = 0; v23 = 0; v24 = 0; Bufa = (void *)(v87 + 78); while ( !*(_BYTE *)(v87 + 16) || *(_BYTE *)(v87 + 37) != (_BYTE)v12 ) { if ( (_BYTE)v12 == *(_BYTE *)(v87 + 36) ) goto LABEL_97; v48 = memchr(Bufa, (char)v12, MaxCount); if ( !v48 ) goto LABEL_97; v49 = v48 - (_BYTE *)Bufa; if ( v48 - (_BYTE *)Bufa > 15 ) v49 -= 6; if ( v22 >= __PAIR64__(v24, v23) ) { v50 = v24 * v77 + v23 * HIDWORD(v77); v51 = (unsigned int)v77 * (unsigned __int64)(unsigned int)v23; v52 = v77 * v23; LODWORD(v51) = v49; LODWORD(v53) = ~v49; v54 = v50 + HIDWORD(v51); HIDWORD(v53) = ~((int)v51 >> 31); v79 |= v53 < __PAIR64__(v54, v52); v24 = ((int)v51 + __PAIR64__(v54, v52)) >> 32; v23 = v51 + v52; ++*(_DWORD *)&v82[1]; goto LABEL_108; } v55 = (_DWORD *)a1; v79 = v80; v56 = *(_DWORD *)(a1 + 8); if ( v56 < *(_DWORD *)(a1 + 12) ) { LABEL_109: HIDWORD(a1) = -1; v55[2] = v56 + 1; goto LABEL_110; } LABEL_115: (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); v55 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v72 = v80; goto LABEL_111; } LABEL_110: v72 = 0; if ( v55[2] >= v55[3] ) { v72 = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55) == -1 ) { LODWORD(a1) = 0; v72 = v80; } } LABEL_111: v57 = a3 == -1; v58 = v57 & (a2 != 0); if ( v58 ) { v57 = 0; if ( a2[2] >= a2[3] ) { v60 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v57 = 0; if ( v60 == -1 ) { a2 = 0; v57 = v58; } } } if ( v57 == v72 ) { v31 = v89[0]; v32 = *(v89[0] - 3); goto LABEL_51; } LOBYTE(v12) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v59 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v59 >= *(_DWORD *)(a1 + 12) ) { v67 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); LOBYTE(v12) = v67; if ( v67 == -1 ) { LODWORD(a1) = 0; LOBYTE(v12) = -1; } } else { LOBYTE(v12) = *v59; } } } v31 = v89[0]; v32 = *(v89[0] - 3); if ( !*(_DWORD *)&v82[1] ) { v80 = 0; *(_DWORD *)v82 = *(unsigned __int8 *)(v87 + 16); goto LABEL_51; } v73 = (std::string *)(v32 + 1); if ( v32 + 1 > *(v89[0] - 2) || *((int *)v89[0] - 1) > 0 ) std::string::reserve(v89, v73, v70); v61 = v82[1]; *(_DWORD *)&v82[1] = 0; *((_BYTE *)v89[0] + *(v89[0] - 3)) = v61; v62 = v89[0]; if ( (_UNKNOWN *)v89[0] != &unk_4E93FC ) { *(v89[0] - 1) = 0; *(v62 - 3) = (unsigned int)v73; *((_BYTE *)v62 + v32 + 1) = 0; } LABEL_108: v55 = (_DWORD *)a1; v56 = *(_DWORD *)(a1 + 8); if ( v56 < *(_DWORD *)(a1 + 12) ) goto LABEL_109; goto LABEL_115; } if ( v82[0] ) { LABEL_160: v68 = v82[0]; v31 = v89[0]; v79 = 0; v23 = 0; v82[0] = 0; v24 = 0; v80 = v68; v32 = *(v89[0] - 3); goto LABEL_51; } v79 = 0; v23 = 0; v24 = 0; LABEL_40: v25 = (char)v12; if ( Buf > 10 ) { if ( (unsigned __int8)(v12 - 48) <= 9u ) goto LABEL_43; while ( (unsigned __int8)(v12 - 97) <= 5u ) { v26 = v25 - 87; if ( v22 < __PAIR64__(v24, v23) ) goto LABEL_45; LABEL_70: v37 = v24 * v77; v38 = v26 >> 31; v39 = v37 + v23 * HIDWORD(v77); v40 = v23; v41 = v26; v42 = (unsigned int)v77 * (unsigned __int64)(unsigned int)v40; HIDWORD(v42) += v39; v79 |= __PAIR64__(~(v26 >> 31), ~v26) < v42; v27 = (_DWORD *)a1; v24 = (v42 + __PAIR64__(v38, v41)) >> 32; v23 = v42 + v41; ++*(_DWORD *)&v82[1]; v28 = *(_DWORD *)(a1 + 8); if ( v28 < *(_DWORD *)(a1 + 12) ) goto LABEL_46; LABEL_71: (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); v27 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_47; v81 = 1; LABEL_48: v29 = a3 == -1; v30 = v29 & (a2 != 0); if ( v30 ) { v29 = 0; if ( a2[2] >= a2[3] ) { v45 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v29 = 0; if ( v45 == -1 ) { a2 = 0; v29 = v30; } } } if ( v81 == v29 ) { v31 = v89[0]; v80 = 1; v32 = *(v89[0] - 3); goto LABEL_51; } LOBYTE(v12) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_40; v44 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v44 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v12) = *v44; goto LABEL_40; } v25 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); LOBYTE(v12) = v25; if ( v25 != -1 ) goto LABEL_40; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_97; LOBYTE(v12) = -1; } if ( (unsigned __int8)(v12 - 65) <= 5u ) { v26 = v25 - 55; goto LABEL_44; } } else if ( (char)v12 > 47 && (char)(Buf + 48) > (char)v12 ) { LABEL_43: v26 = (char)v12 - 48; LABEL_44: if ( v22 >= __PAIR64__(v24, v23) ) goto LABEL_70; LABEL_45: v27 = (_DWORD *)a1; v79 = 1; v28 = *(_DWORD *)(a1 + 8); if ( v28 >= *(_DWORD *)(a1 + 12) ) goto LABEL_71; LABEL_46: HIDWORD(a1) = -1; v27[2] = v28 + 1; LABEL_47: v81 = 0; if ( v27[2] >= v27[3] ) { v81 = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) { LODWORD(a1) = 0; v81 = 1; } } goto LABEL_48; } LABEL_97: v31 = v89[0]; v32 = *(v89[0] - 3); v80 = 0; LABEL_51: if ( v32 ) { std::string::push_back(v89, (std::string *)v82[1], v70); if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v87 + 8), *(_DWORD *)(v87 + 12), (const char **)v89) ) *a5 = 4; v31 = v89[0]; if ( *(_DWORD *)&v82[1] || v86 || *(v89[0] - 3) ) goto LABEL_91; LABEL_54: v33 = a6; *a6 = 0; v33[1] = 0; *a5 = 4; } else { if ( !*(_DWORD *)&v82[1] && !v86 ) goto LABEL_54; LABEL_91: if ( v82[0] ) goto LABEL_54; if ( v79 ) { v65 = a6; *a6 = -1; v65[1] = -1; *a5 = 4; } else { if ( v78 ) { v23 = -v23; v24 = (unsigned __int64)-__SPAIR64__(v24, v23) >> 32; } v47 = a6; *a6 = v23; v47[1] = v24; } } if ( v80 ) *a5 |= 2u; v34 = a1; if ( v31 == (unsigned int *)&unk_4E93FC ) return a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v31 - 3, (int)&v88); return v34; } // 46685D: variable 'v69' is possibly undefined // 466CCC: variable 'v70' is possibly undefined //----- (00467210) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_float( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int **a6) { unsigned int **v6; // ebx char v7; // si char v8; // dl char v9; // dl char v10; // di int v11; // edi char v12; // al char v13; // si unsigned int *v14; // eax int v15; // edx _DWORD *v16; // ecx unsigned int v17; // eax char v18; // di char v19; // al char v20; // si _BYTE *v21; // eax int v22; // edi unsigned int *v23; // eax unsigned int v24; // eax int v25; // eax char v26; // al void *v27; // eax char v28; // si int v29; // edx unsigned int v30; // edi unsigned int *v31; // eax unsigned int *v32; // edx _DWORD *v33; // ecx unsigned int v34; // eax char v35; // di char v36; // al char v37; // si unsigned int *v38; // edx int v39; // edi int v40; // edi char v41; // al unsigned __int64 v42; // kr00_8 int v44; // edx bool v45; // zf unsigned int *v46; // eax unsigned int *v47; // edx int v48; // edi unsigned int *v49; // eax int v50; // edi unsigned int *v51; // eax _DWORD *v52; // ecx unsigned int v53; // eax char v54; // di char v55; // al char v56; // si char v57; // dl int v58; // edx char *v59; // esi char *v60; // edi char v61; // cl unsigned int *v62; // eax char v63; // si _BYTE *v64; // eax int v65; // edx _BYTE *v66; // eax unsigned int *v67; // eax unsigned int *v68; // edx char v69; // dl int v70; // edx _DWORD *v71; // ecx unsigned int v72; // eax char v73; // dl char v74; // bl unsigned int *v75; // eax int v76; // eax _BYTE *v77; // eax int v78; // eax _BYTE *v79; // eax unsigned int v80; // eax unsigned int *v81; // eax _BYTE *v82; // eax unsigned int v83; // [esp+4h] [ebp-54h] std::string *v84; // [esp+14h] [ebp-44h] std::string *v85; // [esp+14h] [ebp-44h] std::string *v86; // [esp+14h] [ebp-44h] void *Buf; // [esp+18h] [ebp-40h] __int16 v88; // [esp+1Eh] [ebp-3Ah] bool v89; // [esp+1Fh] [ebp-39h] char v90; // [esp+20h] [ebp-38h] int v91; // [esp+20h] [ebp-38h] int v92; // [esp+24h] [ebp-34h] char v93; // [esp+28h] [ebp-30h] int v94; // [esp+28h] [ebp-30h] unsigned int *v95; // [esp+28h] [ebp-30h] char v96; // [esp+28h] [ebp-30h] int v97; // [esp+28h] [ebp-30h] char v98; // [esp+28h] [ebp-30h] int v99; // [esp+2Ch] [ebp-2Ch] char v100; // [esp+3Bh] [ebp-1Dh] BYREF unsigned int *v101[7]; // [esp+3Ch] [ebp-1Ch] BYREF v6 = a6; v99 = std::__use_cache>::operator()((int *)(a4 + 108)); v7 = HIDWORD(a1) == -1; v8 = v7 & ((_DWORD)a1 != 0); if ( v8 ) { v7 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v98 = v8; if ( (*(int (**)(void))(*(_DWORD *)a1 + 36))() == -1 ) { LODWORD(a1) = 0; v7 = v98; } } } v9 = a3 == -1; v10 = v9 & (a2 != 0); if ( v10 ) { v9 = 0; if ( a2[2] >= a2[3] ) { v78 = (*(int (**)(void))(*a2 + 36))(); v9 = 0; if ( v78 == -1 ) { a2 = 0; v9 = v10; } } } if ( v7 == v9 ) { v92 = 0; LOBYTE(v11) = 0; v93 = 0; v89 = 1; v12 = *(_BYTE *)(v99 + 16); goto LABEL_5; } LOBYTE(v11) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v79 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v79 >= *(_DWORD *)(a1 + 12) ) { v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v11 == -1 ) LODWORD(a1) = 0; } else { LOBYTE(v11) = *v79; } } v69 = *(_BYTE *)(v99 + 75); v12 = *(_BYTE *)(v99 + 16); if ( v69 != (_BYTE)v11 && *(_BYTE *)(v99 + 74) != (_BYTE)v11 || v12 && *(_BYTE *)(v99 + 37) == (_BYTE)v11 || *(_BYTE *)(v99 + 36) == (_BYTE)v11 ) { goto LABEL_146; } std::string::push_back(v6, (std::string *)(2 * (v69 != (char)v11) + 43), v83); v80 = *(_DWORD *)(a1 + 8); if ( v80 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v80 + 1; HIDWORD(a1) = -1; v89 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !v89 ) { LOBYTE(v11) = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); v12 = *(_BYTE *)(v99 + 16); LABEL_146: v92 = 0; v70 = 0; a6 = v6; while ( 1 ) { if ( v12 && *(_BYTE *)(v99 + 37) == (_BYTE)v11 ) { v93 = v70; v6 = a6; v101[0] = (unsigned int *)&unk_4E93FC; v89 = 0; goto LABEL_142; } if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 || *(_BYTE *)(v99 + 78) != (_BYTE)v11 ) { v93 = v70; v6 = a6; v89 = 0; goto LABEL_5; } if ( (_BYTE)v70 ) goto LABEL_152; v97 = *(*a6 - 3); if ( v97 + 1 > *(*a6 - 2) || (int)*(*a6 - 1) > 0 ) std::string::reserve(a6, (std::string *)(v97 + 1), v83); *((_BYTE *)*a6 + *(*a6 - 3)) = 48; v75 = *a6; v70 = (int)(*a6 - 3); if ( *a6 == (unsigned int *)&unk_4E93FC ) { LABEL_152: v71 = (_DWORD *)a1; ++v92; v72 = *(_DWORD *)(a1 + 8); if ( v72 < *(_DWORD *)(a1 + 12) ) goto LABEL_153; } else { *(v75 - 1) = 0; *(v75 - 3) = v97 + 1; ++v92; *(_BYTE *)(v70 + v97 + 13) = 0; v71 = (_DWORD *)a1; v72 = *(_DWORD *)(a1 + 8); if ( v72 < *(_DWORD *)(a1 + 12) ) { LABEL_153: HIDWORD(a1) = -1; v71[2] = v72 + 1; goto LABEL_154; } } (*(void (__fastcall **)(_DWORD *, int))(*v71 + 40))(v71, v70); v71 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v96 = 1; goto LABEL_155; } LABEL_154: v96 = 0; if ( v71[2] >= v71[3] && (*(int (__fastcall **)(_DWORD *, int))(*v71 + 36))(v71, v70) == -1 ) { LODWORD(a1) = 0; v96 = 1; } LABEL_155: v73 = a3 == -1; v74 = v73 & (a2 != 0); if ( v74 ) { v73 = 0; if ( a2[2] >= a2[3] ) { v76 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v73 = 0; if ( v76 == -1 ) { a2 = 0; v73 = v74; } } } if ( v96 == v73 ) { v6 = a6; v93 = 1; v89 = 1; v12 = *(_BYTE *)(v99 + 16); goto LABEL_5; } LOBYTE(v11) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v77 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v77 >= *(_DWORD *)(a1 + 12) ) { v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v11 == -1 ) LODWORD(a1) = 0; } else { LOBYTE(v11) = *v77; } } v12 = *(_BYTE *)(v99 + 16); v70 = 1; } } v92 = 0; v93 = 0; v12 = *(_BYTE *)(v99 + 16); LABEL_5: v101[0] = (unsigned int *)&unk_4E93FC; if ( v12 ) LABEL_142: std::string::reserve(v101, (std::string *)0x20, v83); v90 = *(_BYTE *)(v99 + 100); if ( !v90 ) { if ( !v89 ) { v88 = 0; LABEL_9: v13 = v11; if ( (unsigned __int8)(v11 - 48) <= 9u ) { LABEL_10: v91 = *(*v6 - 3); if ( v91 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)(v91 + 1), v83); v93 = 1; *((_BYTE *)*v6 + *(*v6 - 3)) = v13; v14 = *v6; v15 = (int)(*v6 - 3); if ( *v6 != (unsigned int *)&unk_4E93FC ) { *(v14 - 1) = 0; *(v14 - 3) = v91 + 1; *(_BYTE *)(v15 + v91 + 13) = 0; } goto LABEL_15; } while ( 1 ) { if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 && !v88 ) { std::string::push_back(v6, (std::string *)0x2E, v83); v88 = 1; LABEL_15: v16 = (_DWORD *)a1; v17 = *(_DWORD *)(a1 + 8); if ( v17 >= *(_DWORD *)(a1 + 12) ) goto LABEL_41; LABEL_16: HIDWORD(a1) = -1; v16[2] = v17 + 1; LABEL_17: v18 = 0; if ( v16[2] >= v16[3] && (*(int (__fastcall **)(_DWORD *, int))(*v16 + 36))(v16, v15) == -1 ) { LODWORD(a1) = 0; v18 = 1; } goto LABEL_18; } if ( *(_BYTE *)(v99 + 92) != (_BYTE)v11 && *(_BYTE *)(v99 + 98) != (_BYTE)v11 ) goto LABEL_60; v93 &= HIBYTE(v88) ^ 1; if ( !v93 ) goto LABEL_60; v22 = *(*v6 - 3); if ( v22 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)(v22 + 1), v83); *((_BYTE *)*v6 + *(*v6 - 3)) = 101; v23 = *v6; if ( *v6 != (unsigned int *)&unk_4E93FC ) { *(v23 - 1) = 0; *(v23 - 3) = v22 + 1; *((_BYTE *)v23 + v22 + 1) = 0; } v24 = *(_DWORD *)(a1 + 8); if ( v24 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v24 + 1; HIDWORD(a1) = -1; if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) goto LABEL_214; LOBYTE(v11) = BYTE4(a1); if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) { v82 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v82 >= *(_DWORD *)(a1 + 12) ) { v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v11 == -1 ) { LODWORD(a1) = 0; LOBYTE(v11) = -1; } } else { LOBYTE(v11) = *v82; } } if ( *(_BYTE *)(v99 + 75) == (_BYTE)v11 ) { v25 = 43; } else { if ( *(_BYTE *)(v99 + 74) != (_BYTE)v11 ) { HIBYTE(v88) = v93; goto LABEL_9; } v25 = 45; } std::string::push_back(v6, (std::string *)v25, v83); v16 = (_DWORD *)a1; HIBYTE(v88) = v93; v17 = *(_DWORD *)(a1 + 8); if ( v17 < *(_DWORD *)(a1 + 12) ) goto LABEL_16; LABEL_41: (*(void (__fastcall **)(_DWORD *, int))(*v16 + 40))(v16, v15); v16 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_17; v18 = 1; LABEL_18: v19 = a3 == -1; v20 = v19 & (a2 != 0); if ( v20 ) { v19 = 0; if ( a2[2] >= a2[3] ) { v44 = (*(int (**)(void))(*a2 + 36))(); v19 = 0; if ( v44 == -1 ) { a2 = 0; v19 = v20; } } } if ( v18 == v19 ) goto LABEL_60; LOBYTE(v11) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_9; v21 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v21 >= *(_DWORD *)(a1 + 12) ) { v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v11 == -1 ) { LODWORD(a1) = 0; LOBYTE(v11) = -1; } goto LABEL_9; } LOBYTE(v11) = *v21; v13 = *v21; if ( (unsigned __int8)(*v21 - 48) <= 9u ) goto LABEL_10; } } LABEL_201: v38 = v101[0]; if ( *(v101[0] - 3) ) goto LABEL_63; goto LABEL_68; } if ( v89 ) goto LABEL_201; v88 = 0; v26 = *(_BYTE *)(v99 + 16); Buf = (void *)(v99 + 78); while ( 1 ) { while ( 1 ) { if ( v26 && *(_BYTE *)(v99 + 37) == (_BYTE)v11 ) { LOBYTE(v88) = HIBYTE(v88) | v88; if ( (_BYTE)v88 ) { v38 = v101[0]; v40 = *(v101[0] - 3); LABEL_65: if ( !v40 ) goto LABEL_68; goto LABEL_66; } if ( !v92 ) { v81 = *v6; if ( (int)*(*v6 - 1) <= 0 ) { if ( v81 != (unsigned int *)&unk_4E93FC ) { *(v81 - 1) = 0; *(v81 - 3) = 0; *(_BYTE *)v81 = 0; } } else { if ( v81 != (unsigned int *)&unk_4E93FC ) std::string::_Rep::_M_dispose((volatile signed __int32 *)v81 - 3, (int)&v100); *v6 = (unsigned int *)&unk_4E93FC; } goto LABEL_201; } v59 = (char *)*(v101[0] - 3); v85 = (std::string *)v59; v60 = v59 + 1; if ( (unsigned int)(v59 + 1) > *(v101[0] - 2) || *((int *)v101[0] - 1) > 0 ) std::string::reserve(v101, (std::string *)(v59 + 1), v83); v61 = v92; HIBYTE(v88) = 0; v92 = 0; *((_BYTE *)v101[0] + *(v101[0] - 3)) = v61; v62 = v101[0]; v32 = v101[0] - 3; if ( (_UNKNOWN *)v101[0] != &unk_4E93FC ) goto LABEL_118; goto LABEL_55; } if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 ) break; v27 = memchr(Buf, (char)v11, 0xAu); if ( v27 ) { v28 = (_BYTE)v27 - (_BYTE)Buf + 48; v29 = *(*v6 - 3); v94 = v29; v30 = v29 + 1; if ( v29 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)(v29 + 1), v83); *((_BYTE *)*v6 + *(*v6 - 3)) = v28; v31 = *v6; v32 = *v6 - 3; if ( *v6 != (unsigned int *)&unk_4E93FC ) { *(v31 - 1) = 0; *(v31 - 3) = v30; *((_BYTE *)v32 + v94 + 13) = 0; } ++v92; v93 = v90; goto LABEL_55; } if ( *(_BYTE *)(v99 + 92) != (_BYTE)v11 && *(_BYTE *)(v99 + 98) != (_BYTE)v11 ) goto LABEL_60; v38 = v101[0]; v45 = ((HIBYTE(v88) ^ 1) & (unsigned __int8)v93) == 0; v93 &= HIBYTE(v88) ^ 1; v39 = *(v101[0] - 3); if ( v45 ) goto LABEL_61; if ( v39 && !(_BYTE)v88 ) { v86 = (std::string *)(v39 + 1); if ( v39 + 1 > *(v101[0] - 2) || *((int *)v101[0] - 1) > 0 ) std::string::reserve(v101, v86, v83); *((_BYTE *)v101[0] + *(v101[0] - 3)) = v92; v67 = v101[0]; v68 = v101[0] - 3; if ( (_UNKNOWN *)v101[0] != &unk_4E93FC ) { *(v101[0] - 1) = 0; *(v67 - 3) = (unsigned int)v86; *((_BYTE *)v68 + v39 + 13) = 0; } } v50 = *(*v6 - 3); if ( v50 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)(v50 + 1), v83); *((_BYTE *)*v6 + *(*v6 - 3)) = 101; v51 = *v6; if ( *v6 != (unsigned int *)&unk_4E93FC ) { *(v51 - 1) = 0; *(v51 - 3) = v50 + 1; *((_BYTE *)v51 + v50 + 1) = 0; } v52 = (_DWORD *)a1; v53 = *(_DWORD *)(a1 + 8); if ( v53 < *(_DWORD *)(a1 + 12) ) { HIDWORD(a1) = -1; *(_DWORD *)(a1 + 8) = v53 + 1; LABEL_102: v54 = 0; if ( v52[2] >= v52[3] && (*(int (__fastcall **)(_DWORD *))(*v52 + 36))(v52) == -1 ) { LODWORD(a1) = 0; v54 = v93; } goto LABEL_103; } (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v52 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_102; v54 = v93; LABEL_103: v55 = a3 == -1; v56 = v55 & (a2 != 0); if ( v56 ) { v55 = 0; if ( a2[2] >= a2[3] ) { v65 = (*(int (**)(void))(*a2 + 36))(); v55 = 0; if ( v65 == -1 ) { a2 = 0; v55 = v56; } } } if ( v54 == v55 ) { LABEL_214: v38 = v101[0]; if ( *(v101[0] - 3) ) goto LABEL_66; goto LABEL_68; } LOBYTE(v11) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v66 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v66 >= *(_DWORD *)(a1 + 12) ) { v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v11 == -1 ) { LODWORD(a1) = 0; LOBYTE(v11) = -1; } } else { LOBYTE(v11) = *v66; } } v57 = *(_BYTE *)(v99 + 75); v26 = *(_BYTE *)(v99 + 16); if ( v57 == (_BYTE)v11 || *(_BYTE *)(v99 + 74) == (_BYTE)v11 ) { if ( !v26 || *(_BYTE *)(v99 + 37) != (_BYTE)v11 ) { if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 ) goto LABEL_108; v63 = 2 * (v57 != (char)v11) + 43; v85 = (std::string *)*(*v6 - 3); v60 = (char *)v85 + 1; if ( (unsigned int)v85 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)((char *)v85 + 1), v83); *((_BYTE *)*v6 + *(*v6 - 3)) = v63; v62 = *v6; HIBYTE(v88) = v93; v32 = *v6 - 3; if ( *v6 != (unsigned int *)&unk_4E93FC ) { LABEL_118: *(v62 - 1) = 0; *(v62 - 3) = (unsigned int)v60; *((_BYTE *)v85 + (_DWORD)v32 + 13) = 0; } LABEL_55: v33 = (_DWORD *)a1; v34 = *(_DWORD *)(a1 + 8); if ( v34 < *(_DWORD *)(a1 + 12) ) goto LABEL_56; goto LABEL_85; } HIBYTE(v88) = *(_BYTE *)(v99 + 16); v93 = HIBYTE(v88); } else { LABEL_108: HIBYTE(v88) = v93; } } v45 = v88 == 0; HIBYTE(v88) |= v88; v38 = v101[0]; v40 = *(v101[0] - 3); if ( !v45 ) goto LABEL_65; if ( v40 ) { v84 = (std::string *)(v40 + 1); if ( v40 + 1 > *(v101[0] - 2) || *((int *)v101[0] - 1) > 0 ) std::string::reserve(v101, v84, v83); *((_BYTE *)v101[0] + *(v101[0] - 3)) = v92; v46 = v101[0]; v47 = v101[0] - 3; if ( (_UNKNOWN *)v101[0] != &unk_4E93FC ) { *(v101[0] - 1) = 0; *(v46 - 3) = (unsigned int)v84; *((_BYTE *)v47 + v40 + 13) = 0; } } v48 = *(*v6 - 3); if ( v48 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)(v48 + 1), v83); v32 = (unsigned int *)*(*v6 - 3); LOBYTE(v88) = v90; *((_BYTE *)v32 + (_DWORD)*v6) = 46; v49 = *v6; if ( *v6 == (unsigned int *)&unk_4E93FC ) goto LABEL_55; *(v49 - 1) = 0; *(v49 - 3) = v48 + 1; *((_BYTE *)v49 + v48 + 1) = 0; v33 = (_DWORD *)a1; v34 = *(_DWORD *)(a1 + 8); if ( v34 < *(_DWORD *)(a1 + 12) ) { LABEL_56: HIDWORD(a1) = -1; v33[2] = v34 + 1; goto LABEL_57; } LABEL_85: (*(void (__fastcall **)(_DWORD *, unsigned int *))(*v33 + 40))(v33, v32); v33 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v35 = v90; goto LABEL_58; } LABEL_57: v35 = 0; if ( v33[2] >= v33[3] && (*(int (__fastcall **)(_DWORD *, unsigned int *))(*v33 + 36))(v33, v32) == -1 ) { LODWORD(a1) = 0; v35 = v90; } LABEL_58: v36 = a3 == -1; v37 = v36 & (a2 != 0); if ( v37 ) { v36 = 0; if ( a2[2] >= a2[3] ) { v58 = (*(int (**)(void))(*a2 + 36))(); v36 = 0; if ( v58 == -1 ) { a2 = 0; v36 = v37; } } } if ( v36 == v35 ) break; LOBYTE(v11) = BYTE4(a1); if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) { v64 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v64 >= *(_DWORD *)(a1 + 12) ) { v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v11 == -1 ) { LODWORD(a1) = 0; LOBYTE(v11) = -1; } } else { LOBYTE(v11) = *v64; } } v26 = *(_BYTE *)(v99 + 16); } LABEL_60: v38 = v101[0]; v39 = *(v101[0] - 3); LABEL_61: if ( !v39 ) goto LABEL_68; if ( v88 ) goto LABEL_66; LABEL_63: std::string::push_back(v101, (std::string *)(char)v92, v83); v38 = v101[0]; LABEL_66: v95 = v38; v41 = std::__verify_grouping(*(char **)(v99 + 8), *(_DWORD *)(v99 + 12), (const char **)v101); v38 = v95; if ( !v41 ) *a5 = 4; LABEL_68: v42 = a1; if ( v38 == (unsigned int *)&unk_4E93FC ) return a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v38 - 3, (int)&v100); return v42; } // 4672F4: variable 'v83' is possibly undefined // 467492: variable 'v15' is possibly undefined // 467DAA: variable 'v70' is possibly undefined // 467DD2: variable 'v32' is possibly undefined //----- (004680F0) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); } //----- (00468100) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (00468110) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } //----- (00468120) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); } //----- (00468130) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); } //----- (00468140) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 20); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 468BE0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (00468160) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 12); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 468BF0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (00468180) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 24); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 468C00: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004681A0) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 16); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 468C10: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004681C0) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 28); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 468C20: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004681E0) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 32); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 468C30: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (00468200) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6) { int v6; // esi unsigned __int64 result; // rax unsigned int v8[8]; // [esp+2Ch] [ebp-20h] BYREF v6 = *(_DWORD *)(a4 + 12); *(_DWORD *)(a4 + 12) = v6 & 0xFFFFFFB5 | 8; result = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, v8); *(_DWORD *)(a4 + 12) = v6; *a6 = v8[0]; return result; } // 468200: using guessed type unsigned int var_20[8]; //----- (00468270) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, int *a5, _BYTE *a6) { _BYTE *v6; // edi int v8; // eax int v9; // ecx _DWORD *v10; // edi int v11; // eax bool v12; // dl _DWORD *v13; // ebp int v14; // eax unsigned int v15; // edi bool v16; // si unsigned int v17; // eax bool v18; // cl char v19; // si char v20; // si char v21; // bl _BYTE *v22; // eax int v23; // eax int v24; // eax unsigned int v25; // eax bool v26; // bl _DWORD *v27; // edi unsigned int v28; // ebp int v29; // eax unsigned int v30; // eax char v31; // [esp+27h] [ebp-35h] char v32; // [esp+27h] [ebp-35h] bool v33; // [esp+27h] [ebp-35h] bool v34; // [esp+28h] [ebp-34h] bool v35; // [esp+2Ch] [ebp-30h] bool v36; // [esp+2Ch] [ebp-30h] bool v37; // [esp+2Dh] [ebp-2Fh] bool v38; // [esp+2Eh] [ebp-2Eh] bool v39; // [esp+2Fh] [ebp-2Dh] unsigned int v40[8]; // [esp+3Ch] [ebp-20h] BYREF if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) { v40[0] = -1; a1 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, (int *)v40); if ( v40[0] > 1 ) { *a6 = 1; *a5 = 4; if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) *a5 |= 2u; } else { v6 = a6; *a6 = v40[0]; *v6 &= 1u; } return a1; } v8 = std::__use_cache>::operator()((int *)(a4 + 108)); v9 = *(_DWORD *)(v8 + 32); v10 = (_DWORD *)v8; v11 = *(_DWORD *)(v8 + 24); v37 = v11 == 0; if ( !(v11 | v9) ) goto LABEL_30; v38 = 1; v12 = 1; v13 = v10; v35 = v9 == 0; v14 = HIDWORD(a1); v15 = 0; while ( 1 ) { v32 = v14 == -1; v19 = v32 & ((_DWORD)a1 != 0); if ( v19 ) { v32 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v39 = v12; v24 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v12 = v39; if ( v24 == -1 ) { LODWORD(a1) = 0; v32 = v19; } } } v20 = a3 == -1; v21 = v20 & (a2 != 0); if ( v21 ) { v20 = 0; if ( a2[2] >= a2[3] ) { v34 = v12; v23 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v12 = v34; if ( v23 == -1 ) { a2 = 0; v20 = v21; } } } if ( v32 == v20 ) { v31 = 1; v25 = v15; v26 = v12; v27 = v13; v28 = v25; LABEL_46: if ( v26 && v27[8] == v28 && v28 ) { *a6 = 0; if ( v38 && v27[6] == v28 ) goto LABEL_31; } else { if ( !v38 || v27[6] != v28 || !v28 ) { *a6 = 0; if ( !v31 ) goto LABEL_31; *a5 = 6; return a1; } *a6 = 1; } v29 = 2 * (v31 != 0); goto LABEL_61; } LOBYTE(v22) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v22 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ) { v33 = v12; v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); v12 = v33; if ( v22 == (_BYTE *)-1 ) LODWORD(a1) = 0; } else { LOBYTE(v22) = *v22; } } if ( !v35 ) v12 = *(_BYTE *)(v13[7] + v15) == (unsigned __int8)v22; if ( !v12 ) break; if ( !v37 ) goto LABEL_8; LABEL_9: v31 = v35 && !v38; if ( v31 ) { if ( v12 && v13[8] == v15 && v15 ) { *a6 = 0; v29 = 0; goto LABEL_61; } goto LABEL_30; } v16 = v12 || v38; if ( !v12 && !v38 ) goto LABEL_30; ++v15; v17 = *(_DWORD *)(a1 + 8); if ( v17 >= *(_DWORD *)(a1 + 12) ) { v36 = v12; (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v12 = v36; } else { *(_DWORD *)(a1 + 8) = v17 + 1; } HIDWORD(a1) = -1; if ( !v12 ) { v35 = v16; LABEL_33: v37 = v13[6] <= v15; v18 = v37 && v35; v38 = v16; goto LABEL_16; } v35 = v13[8] <= v15; if ( v38 ) goto LABEL_33; v37 = v12; v18 = v13[8] <= v15; LABEL_16: v14 = -1; if ( v18 ) { v30 = v15; v26 = v12; v27 = v13; v28 = v30; goto LABEL_46; } } if ( !v37 ) { LABEL_8: v38 = *(_BYTE *)(v13[5] + v15) == (unsigned __int8)v22; goto LABEL_9; } if ( v38 && v13[6] == v15 && v15 ) { *a6 = 1; v29 = 0; LABEL_61: *a5 = v29; return a1; } LABEL_30: *a6 = 0; LABEL_31: *a5 = 4; return a1; } // 468270: using guessed type unsigned int var_20[8]; //----- (004686D0) -------------------------------------------------------- int __stdcall std::num_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, double *a6) { unsigned __int64 v6; // rax unsigned __int64 v7; // kr00_8 char v8; // al char *v9; // ecx int v11; // eax int v12; // edx unsigned int v13; // [esp+4h] [ebp-54h] int v14; // [esp+20h] [ebp-38h] char v15; // [esp+2Eh] [ebp-2Ah] char v16; // [esp+2Fh] [ebp-29h] char *String; // [esp+38h] [ebp-20h] BYREF int v18[7]; // [esp+3Ch] [ebp-1Ch] BYREF String = (char *)&unk_4E93FC; std::string::reserve((unsigned int **)&String, (std::string *)0x20, v13); v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (unsigned int **)&String); v14 = v6; v7 = v6; v18[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a6, a5); v16 = HIDWORD(v7) == -1; v15 = v16 & ((_DWORD)v7 != 0); if ( v15 ) { v16 = 0; if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) { v11 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v7 + 36))(v7); v16 = v11 != -1 ? 0 : v15; v14 = v11 == -1 ? 0 : v7; } } v8 = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { v8 = 0; if ( a2[2] >= a2[3] ) v8 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; } } if ( v8 == v16 ) *a5 |= 2u; v9 = String - 12; if ( String != (char *)&unk_4E93FC ) { if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); } else { v12 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v12 - 1; } if ( v12 <= 0 ) std::string::_Rep::_M_destroy(v9, (int)v18); } return v14; } // 468700: variable 'v13' is possibly undefined // 15412D0: using guessed type int _CRT_MT; // 4686D0: using guessed type int var_1C[7]; //----- (00468880) -------------------------------------------------------- int __stdcall std::num_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, long double *a6) { unsigned __int64 v6; // rax unsigned __int64 v7; // kr00_8 char v8; // al char *v9; // ecx int v11; // eax int v12; // edx unsigned int v13; // [esp+4h] [ebp-54h] int v14; // [esp+20h] [ebp-38h] char v15; // [esp+2Eh] [ebp-2Ah] char v16; // [esp+2Fh] [ebp-29h] char *String; // [esp+38h] [ebp-20h] BYREF int v18[7]; // [esp+3Ch] [ebp-1Ch] BYREF String = (char *)&unk_4E93FC; std::string::reserve((unsigned int **)&String, (std::string *)0x20, v13); v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (unsigned int **)&String); v14 = v6; v7 = v6; v18[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a6, a5); v16 = HIDWORD(v7) == -1; v15 = v16 & ((_DWORD)v7 != 0); if ( v15 ) { v16 = 0; if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) { v11 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v7 + 36))(v7); v16 = v11 != -1 ? 0 : v15; v14 = v11 == -1 ? 0 : v7; } } v8 = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { v8 = 0; if ( a2[2] >= a2[3] ) v8 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; } } if ( v8 == v16 ) *a5 |= 2u; v9 = String - 12; if ( String != (char *)&unk_4E93FC ) { if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); } else { v12 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v12 - 1; } if ( v12 <= 0 ) std::string::_Rep::_M_destroy(v9, (int)v18); } return v14; } // 4688B0: variable 'v13' is possibly undefined // 15412D0: using guessed type int _CRT_MT; // 468880: using guessed type int var_1C[7]; //----- (00468A30) -------------------------------------------------------- int __stdcall std::num_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, float *a6) { unsigned __int64 v6; // rax unsigned __int64 v7; // kr00_8 char v8; // al char *v9; // ecx int v11; // eax int v12; // edx unsigned int v13; // [esp+4h] [ebp-54h] int v14; // [esp+20h] [ebp-38h] char v15; // [esp+2Eh] [ebp-2Ah] char v16; // [esp+2Fh] [ebp-29h] char *String; // [esp+38h] [ebp-20h] BYREF int v18[7]; // [esp+3Ch] [ebp-1Ch] BYREF String = (char *)&unk_4E93FC; std::string::reserve((unsigned int **)&String, (std::string *)0x20, v13); v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (unsigned int **)&String); v14 = v6; v7 = v6; v18[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a6, a5); v16 = HIDWORD(v7) == -1; v15 = v16 & ((_DWORD)v7 != 0); if ( v15 ) { v16 = 0; if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) { v11 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v7 + 36))(v7); v16 = v11 != -1 ? 0 : v15; v14 = v11 == -1 ? 0 : v7; } } v8 = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { v8 = 0; if ( a2[2] >= a2[3] ) v8 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; } } if ( v8 == v16 ) *a5 |= 2u; v9 = String - 12; if ( String != (char *)&unk_4E93FC ) { if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); } else { v12 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v12 - 1; } if ( v12 <= 0 ) std::string::_Rep::_M_destroy(v9, (int)v18); } return v14; } // 468A60: variable 'v13' is possibly undefined // 15412D0: using guessed type int _CRT_MT; // 468A30: using guessed type int var_1C[7]; //----- (00468C40) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned int *a7) { _DWORD *v7; // ebx int v8; // esi bool v9; // dl char v10; // dl char v11; // di wchar_t v12; // di __int16 v13; // ax char v14; // cl unsigned int v15; // eax unsigned int v16; // edx __int16 *v17; // eax __int16 v18; // dx bool v19; // dl char v20; // dl unsigned int v21; // eax unsigned int v22; // eax unsigned int v23; // edx __int16 *v24; // eax __int16 v25; // ax bool v26; // dl char v27; // dl wchar_t *v28; // eax int v29; // eax int v30; // edx unsigned int v31; // eax unsigned int v32; // edx __int16 *v33; // eax __int16 v34; // dx bool v35; // di char v36; // di size_t v37; // edi int *v38; // eax bool v40; // al wchar_t *v41; // eax __int16 *v42; // eax __int16 v43; // ax int v44; // edx unsigned int v45; // eax unsigned int v46; // edx __int16 *v47; // eax __int16 v48; // ax bool v49; // di char v50; // di unsigned int v51; // edx bool v52; // cl unsigned int v53; // eax wchar_t *v54; // eax __int16 *v55; // eax __int16 v56; // ax wchar_t *v57; // eax __int16 *v58; // eax __int16 v59; // dx unsigned int v60; // edx char v61; // cl __int16 *v62; // eax __int16 v63; // cx __int16 *v64; // eax __int16 v65; // ax wchar_t *v66; // eax std::locale::_Impl *v67; // eax std::locale::_Impl *v68; // esi wchar_t *v69; // eax __int16 *v70; // eax __int16 v71; // cx char v72; // cl __int16 v73; // ax __int16 v74; // ax void (__cdecl *v75)(void *); // [esp+4h] [ebp-84h] unsigned int v76; // [esp+8h] [ebp-80h] bool v77; // [esp+1Fh] [ebp-69h] size_t N; // [esp+20h] [ebp-68h] unsigned int v79; // [esp+28h] [ebp-60h] int S; // [esp+2Ch] [ebp-5Ch] wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] char v82; // [esp+30h] [ebp-58h] char v83; // [esp+32h] [ebp-56h] char v84; // [esp+33h] [ebp-55h] int v85; // [esp+34h] [ebp-54h] unsigned int v86; // [esp+34h] [ebp-54h] _DWORD *v87; // [esp+38h] [ebp-50h] char v88; // [esp+38h] [ebp-50h] int v89; // [esp+3Ch] [ebp-4Ch] char v90; // [esp+40h] [ebp-48h] char v91; // [esp+40h] [ebp-48h] char v92; // [esp+40h] [ebp-48h] size_t v93; // [esp+40h] [ebp-48h] bool v94; // [esp+44h] [ebp-44h] int *v95; // [esp+48h] [ebp-40h] bool v96; // [esp+48h] [ebp-40h] char v97; // [esp+48h] [ebp-40h] bool v98; // [esp+48h] [ebp-40h] std::locale::facet *v99; // [esp+4Ch] [ebp-3Ch] unsigned int v100; // [esp+4Ch] [ebp-3Ch] std::locale::facet *v101; // [esp+4Ch] [ebp-3Ch] void *v102; // [esp+58h] [ebp-30h] BYREF size_t v103; // [esp+5Ch] [ebp-2Ch] int v104[10]; // [esp+60h] [ebp-28h] BYREF v7 = a1; v87 = a3; v99 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); v95 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); if ( !v8 ) { v67 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v75); *((_DWORD *)v67 + 1) = 0; v68 = v67; *(_DWORD *)v67 = &off_4F65B0; *((_DWORD *)v67 + 2) = 0; *((_DWORD *)v67 + 3) = 0; *((_BYTE *)v67 + 16) = 0; *((_DWORD *)v67 + 5) = 0; *((_DWORD *)v67 + 6) = 0; *((_DWORD *)v67 + 7) = 0; *((_DWORD *)v67 + 8) = 0; *((_DWORD *)v67 + 9) = 0; *((_BYTE *)v67 + 164) = 0; std::__numpunct_cache::_M_cache((int)v67, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v68, v99, v76); v8 = *v95; } v100 = 8; v85 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v85 != 64 ) v100 = v85 == 8 ? 16 : 10; v96 = a2 == 0xFFFF; v9 = v96 && a1 != 0; if ( v9 ) { v64 = (__int16 *)a1[2]; if ( (unsigned int)v64 >= a1[3] ) { v65 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v9 = v96 && a1 != 0; } else { v65 = *v64; } v7 = v65 == -1 ? 0 : a1; v10 = v65 == -1 && v9; } else { v10 = a2 == 0xFFFF; } v94 = a4 == -1; if ( v94 && a3 != 0 ) { v62 = (__int16 *)a3[2]; if ( (unsigned int)v62 >= a3[3] ) { v88 = v10; v73 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v88; v63 = v73; } else { v63 = *v62; } v87 = v63 == -1 ? 0 : a3; v11 = v63 == -1 && v94 && a3 != 0; } else { v11 = a4 == -1; } if ( v11 == v10 ) { v77 = 0; v14 = *(_BYTE *)(v8 + 16); v12 = 0; v84 = 1; v89 = 0; v98 = 0; LABEL_44: v21 = v100; if ( v100 == 16 ) goto LABEL_25; goto LABEL_45; } if ( v7 && a2 == 0xFFFF ) { v66 = (wchar_t *)v7[2]; if ( (unsigned int)v66 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v66; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = a2; } v13 = *(_WORD *)(v8 + 112); v14 = *(_BYTE *)(v8 + 16); v77 = v13 == (__int16)v12; if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) { if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) { v15 = v7[2]; v16 = v7[3]; if ( v15 >= v16 ) { (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v17 = (__int16 *)v7[2]; v16 = v7[3]; } else { v17 = (__int16 *)(v15 + 2); v7[2] = v17; } if ( v16 <= (unsigned int)v17 ) v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v18 = *v17; v7 = v18 == -1 ? 0 : v7; v97 = v18 == -1; v19 = v94 && v87 != 0; if ( v19 ) { v70 = (__int16 *)v87[2]; if ( (unsigned int)v70 >= v87[3] ) { v74 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); v19 = v94 && v87 != 0; v71 = v74; } else { v71 = *v70; } v87 = v71 == -1 ? 0 : v87; v20 = v71 == -1 && v19; } else { v20 = a4 == -1; } if ( v97 == v20 ) { v84 = 1; v14 = *(_BYTE *)(v8 + 16); v21 = v100; v89 = 0; v98 = 0; if ( v100 == 16 ) { LABEL_25: N = 22; S = 22; goto LABEL_46; } LABEL_45: N = v21; S = v21; goto LABEL_46; } if ( v7 ) { v69 = (wchar_t *)v7[2]; if ( (unsigned int)v69 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v69; v14 = *(_BYTE *)(v8 + 16); v7 = v12 == 0xFFFF ? 0 : v7; } else { v14 = *(_BYTE *)(v8 + 16); v12 = -1; } } } else { v77 = 0; } v89 = 0; v98 = 0; while ( 1 ) { if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) { LABEL_86: v84 = 0; goto LABEL_44; } if ( *(_WORD *)(v8 + 120) != v12 ) break; v40 = !v98 || v100 == 10; if ( !v40 ) goto LABEL_33; v98 = v85 == 0 || v100 == 8; if ( !v98 ) { ++v89; v98 = v40; LABEL_37: v22 = v7[2]; v23 = v7[3]; if ( v22 < v23 ) goto LABEL_38; goto LABEL_79; } v22 = v7[2]; v23 = v7[3]; v89 = 0; v100 = 8; if ( v22 < v23 ) { LABEL_38: v24 = (__int16 *)(v22 + 2); v7[2] = v24; if ( v23 <= (unsigned int)v24 ) goto LABEL_80; goto LABEL_39; } LABEL_79: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v24 = (__int16 *)v7[2]; if ( v7[3] <= (unsigned int)v24 ) { LABEL_80: v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); goto LABEL_40; } LABEL_39: v25 = *v24; LABEL_40: v7 = v25 == -1 ? 0 : v7; v90 = v25 == -1; v26 = v94 && v87 != 0; if ( v26 ) { v42 = (__int16 *)v87[2]; if ( (unsigned int)v42 >= v87[3] ) { v43 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); v26 = v94 && v87 != 0; } else { v43 = *v42; } v87 = v43 == -1 ? 0 : v87; v27 = v43 == -1 && v26; } else { v27 = a4 == -1; } if ( v90 == v27 ) { v84 = 1; v14 = *(_BYTE *)(v8 + 16); goto LABEL_44; } v12 = -1; if ( v7 ) { v41 = (wchar_t *)v7[2]; if ( (unsigned int)v41 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v41; v7 = v12 == 0xFFFF ? 0 : v7; } v14 = *(_BYTE *)(v8 + 16); if ( !v98 ) goto LABEL_86; } if ( !v98 ) goto LABEL_86; LABEL_33: if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) { v84 = 0; v98 = 1; goto LABEL_44; } if ( v85 == 0 || v100 == 16 ) { v89 = 0; v98 = 0; v100 = 16; goto LABEL_37; } v84 = 0; v98 = 1; N = v100; S = v100; LABEL_46: v103 = 0; v102 = v104; LOBYTE(v104[0]) = 0; if ( v14 ) std::string::reserve(&v102, 0x20u); v79 = 0xFFFFFFFF / v100; v82 = *(_BYTE *)(v8 + 164); if ( v82 ) { if ( v84 ) { v37 = v103; v86 = 0; v83 = 0; v38 = (int *)v102; v82 = v84; v84 = 0; LABEL_67: if ( !v37 ) goto LABEL_68; LABEL_105: v101 = (std::locale::facet *)(v37 + 1); if ( v38 == v104 ) v51 = 15; else v51 = v104[0]; if ( (unsigned int)v101 > v51 ) { std::string::_M_mutate((int)&v102, v37, 0, 0, 1u); v38 = (int *)v102; } *((_BYTE *)v38 + v37) = v89; v103 = v37 + 1; *((_BYTE *)v101 + (_DWORD)v102) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v102) ) *a6 = 4; v38 = (int *)v102; if ( !v98 && !(v103 | v89) ) goto LABEL_70; goto LABEL_113; } v83 = 0; Sa = (wchar_t *)(v8 + 120); v86 = 0; while ( 2 ) { if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) { v37 = v103; v38 = (int *)v102; if ( !v89 ) { v82 = 0; v84 = *(_BYTE *)(v8 + 16); goto LABEL_67; } v93 = v103 + 1; if ( v102 == v104 ) v60 = 15; else v60 = v104[0]; if ( v93 > v60 ) { std::string::_M_mutate((int)&v102, v103, 0, 0, 1u); v38 = (int *)v102; } v61 = v89; v89 = 0; *((_BYTE *)v38 + v37) = v61; v103 = v93; *((_BYTE *)v102 + v93) = 0; LABEL_59: v31 = v7[2]; v32 = v7[3]; if ( v31 >= v32 ) goto LABEL_135; } else { if ( v12 == *(_WORD *)(v8 + 36) ) goto LABEL_131; v28 = wmemchr(Sa, v12, N); if ( !v28 ) goto LABEL_131; v29 = (char *)v28 - (char *)Sa; v30 = v29 >> 1; if ( v29 > 30 ) v30 -= 6; if ( v79 >= v86 ) { v83 |= ~v30 < v100 * v86; ++v89; v86 = v30 + v100 * v86; goto LABEL_59; } v32 = v7[3]; v83 = v82; v31 = v7[2]; if ( v31 >= v32 ) { LABEL_135: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v33 = (__int16 *)v7[2]; v32 = v7[3]; goto LABEL_61; } } v33 = (__int16 *)(v31 + 2); v7[2] = v33; LABEL_61: if ( (unsigned int)v33 >= v32 ) v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v34 = *v33; v7 = v34 == -1 ? 0 : v7; v91 = v34 == -1; v35 = v94 && v87 != 0; if ( v35 ) { v58 = (__int16 *)v87[2]; if ( (unsigned int)v58 >= v87[3] ) v59 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); else v59 = *v58; v87 = v59 == -1 ? 0 : v87; v36 = v59 == -1 && v35; } else { v36 = a4 == -1; } if ( v36 == v91 ) { v37 = v103; v38 = (int *)v102; goto LABEL_67; } if ( v7 ) { v57 = (wchar_t *)v7[2]; if ( (unsigned int)v57 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v57; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = -1; } continue; } } if ( v84 ) { v72 = v84; v37 = v103; v83 = 0; v84 = 0; v38 = (int *)v102; v82 = v72; v86 = 0; goto LABEL_67; } v83 = 0; v86 = 0; while ( 2 ) { if ( S > 10 ) { if ( (unsigned __int16)(v12 - 48) <= 9u ) goto LABEL_95; if ( (unsigned __int16)(v12 - 97) > 5u ) { if ( (unsigned __int16)(v12 - 65) > 5u ) goto LABEL_131; v44 = v12 - 55; goto LABEL_96; } v44 = v12 - 87; if ( v79 >= v86 ) goto LABEL_121; LABEL_97: v45 = v7[2]; v46 = v7[3]; v83 = 1; if ( v45 < v46 ) goto LABEL_98; LABEL_122: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v47 = (__int16 *)v7[2]; v46 = v7[3]; } else { if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) { LABEL_131: v37 = v103; v38 = (int *)v102; v82 = 0; goto LABEL_67; } LABEL_95: v44 = v12 - 48; LABEL_96: if ( v79 < v86 ) goto LABEL_97; LABEL_121: v52 = ~v44 < v100 * v86; v53 = v44 + v100 * v86; v46 = v7[3]; v83 |= v52; v86 = v53; v45 = v7[2]; ++v89; if ( v45 >= v46 ) goto LABEL_122; LABEL_98: v47 = (__int16 *)(v45 + 2); v7[2] = v47; } if ( (unsigned int)v47 >= v46 ) v48 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v48 = *v47; v7 = v48 == -1 ? 0 : v7; v92 = v48 == -1; v49 = v94 && v87 != 0; if ( v49 ) { v55 = (__int16 *)v87[2]; if ( (unsigned int)v55 >= v87[3] ) v56 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); else v56 = *v55; v87 = v56 == -1 ? 0 : v87; v50 = v56 == -1 && v49; } else { v50 = a4 == -1; } if ( v92 != v50 ) { if ( v7 ) { v54 = (wchar_t *)v7[2]; if ( (unsigned int)v54 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v54; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = -1; } continue; } break; } v37 = v103; v38 = (int *)v102; v82 = 1; if ( v103 ) goto LABEL_105; LABEL_68: if ( !v98 && !v89 ) { LABEL_70: *a7 = 0; *a6 = 4; goto LABEL_71; } LABEL_113: if ( v84 ) goto LABEL_70; if ( v83 ) { *a7 = -1; *a6 = 4; } else { if ( v77 ) v86 = -v86; *a7 = v86; } LABEL_71: if ( v82 ) *a6 |= 2u; if ( v38 != v104 ) operator delete(v38); return v7; } // 469627: variable 'v75' is possibly undefined // 46969A: variable 'v76' is possibly undefined // 4E95AC: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (00469930) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7) { _DWORD *v7; // ebx int v8; // esi bool v9; // dl char v10; // dl char v11; // di wchar_t v12; // di __int16 v13; // ax char v14; // cl unsigned int v15; // eax unsigned int v16; // edx __int16 *v17; // eax __int16 v18; // dx bool v19; // dl char v20; // dl unsigned int v21; // eax unsigned int v22; // eax unsigned int v23; // edx __int16 *v24; // eax __int16 v25; // ax bool v26; // dl char v27; // dl wchar_t *v28; // eax int v29; // eax int v30; // edx unsigned int v31; // eax unsigned int v32; // edx __int16 *v33; // eax __int16 v34; // dx bool v35; // di char v36; // di size_t v37; // edi int *v38; // eax bool v40; // al wchar_t *v41; // eax __int16 *v42; // eax __int16 v43; // ax int v44; // edx unsigned int v45; // eax unsigned int v46; // edx __int16 *v47; // eax __int16 v48; // ax bool v49; // di char v50; // di unsigned int v51; // edx int v52; // edx bool v53; // cl unsigned int v54; // eax wchar_t *v55; // eax __int16 *v56; // eax __int16 v57; // ax wchar_t *v58; // eax __int16 *v59; // eax __int16 v60; // dx unsigned int v61; // edx char v62; // cl __int16 *v63; // eax __int16 v64; // cx __int16 *v65; // eax __int16 v66; // ax wchar_t *v67; // eax std::locale::_Impl *v68; // eax std::locale::_Impl *v69; // esi wchar_t *v70; // eax __int16 *v71; // eax __int16 v72; // cx char v73; // cl __int16 v74; // ax __int16 v75; // ax void (__cdecl *v76)(void *); // [esp+4h] [ebp-84h] unsigned int v77; // [esp+8h] [ebp-80h] size_t N; // [esp+18h] [ebp-70h] bool v79; // [esp+1Ch] [ebp-6Ch] unsigned int v80; // [esp+24h] [ebp-64h] unsigned int v81; // [esp+28h] [ebp-60h] int S; // [esp+2Ch] [ebp-5Ch] wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] char v84; // [esp+30h] [ebp-58h] char v85; // [esp+32h] [ebp-56h] char v86; // [esp+33h] [ebp-55h] int v87; // [esp+34h] [ebp-54h] unsigned int v88; // [esp+34h] [ebp-54h] _DWORD *v89; // [esp+38h] [ebp-50h] char v90; // [esp+38h] [ebp-50h] int v91; // [esp+3Ch] [ebp-4Ch] char v92; // [esp+40h] [ebp-48h] char v93; // [esp+40h] [ebp-48h] char v94; // [esp+40h] [ebp-48h] size_t v95; // [esp+40h] [ebp-48h] bool v96; // [esp+44h] [ebp-44h] int *v97; // [esp+48h] [ebp-40h] bool v98; // [esp+48h] [ebp-40h] char v99; // [esp+48h] [ebp-40h] bool v100; // [esp+48h] [ebp-40h] std::locale::facet *v101; // [esp+4Ch] [ebp-3Ch] unsigned int v102; // [esp+4Ch] [ebp-3Ch] std::locale::facet *v103; // [esp+4Ch] [ebp-3Ch] void *v104; // [esp+58h] [ebp-30h] BYREF size_t v105; // [esp+5Ch] [ebp-2Ch] int v106[10]; // [esp+60h] [ebp-28h] BYREF v7 = a1; v89 = a3; v101 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); v97 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); if ( !v8 ) { v68 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v76); *((_DWORD *)v68 + 1) = 0; v69 = v68; *(_DWORD *)v68 = &off_4F65B0; *((_DWORD *)v68 + 2) = 0; *((_DWORD *)v68 + 3) = 0; *((_BYTE *)v68 + 16) = 0; *((_DWORD *)v68 + 5) = 0; *((_DWORD *)v68 + 6) = 0; *((_DWORD *)v68 + 7) = 0; *((_DWORD *)v68 + 8) = 0; *((_DWORD *)v68 + 9) = 0; *((_BYTE *)v68 + 164) = 0; std::__numpunct_cache::_M_cache((int)v68, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v69, v101, v77); v8 = *v97; } v102 = 8; v87 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v87 != 64 ) v102 = v87 == 8 ? 16 : 10; v98 = a2 == 0xFFFF; v9 = v98 && a1 != 0; if ( v9 ) { v65 = (__int16 *)a1[2]; if ( (unsigned int)v65 >= a1[3] ) { v66 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v9 = v98 && a1 != 0; } else { v66 = *v65; } v7 = v66 == -1 ? 0 : a1; v10 = v66 == -1 && v9; } else { v10 = a2 == 0xFFFF; } v96 = a4 == -1; if ( v96 && a3 != 0 ) { v63 = (__int16 *)a3[2]; if ( (unsigned int)v63 >= a3[3] ) { v90 = v10; v74 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v90; v64 = v74; } else { v64 = *v63; } v89 = v64 == -1 ? 0 : a3; v11 = v64 == -1 && v96 && a3 != 0; } else { v11 = a4 == -1; } if ( v11 == v10 ) { v79 = 0; v14 = *(_BYTE *)(v8 + 16); v12 = 0; v86 = 1; v91 = 0; v100 = 0; LABEL_44: v21 = v102; if ( v102 == 16 ) goto LABEL_25; goto LABEL_45; } if ( v7 && a2 == 0xFFFF ) { v67 = (wchar_t *)v7[2]; if ( (unsigned int)v67 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v67; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = a2; } v13 = *(_WORD *)(v8 + 112); v14 = *(_BYTE *)(v8 + 16); v79 = v13 == (__int16)v12; if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) { if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) { v15 = v7[2]; v16 = v7[3]; if ( v15 >= v16 ) { (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v17 = (__int16 *)v7[2]; v16 = v7[3]; } else { v17 = (__int16 *)(v15 + 2); v7[2] = v17; } if ( v16 <= (unsigned int)v17 ) v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v18 = *v17; v7 = v18 == -1 ? 0 : v7; v99 = v18 == -1; v19 = v96 && v89 != 0; if ( v19 ) { v71 = (__int16 *)v89[2]; if ( (unsigned int)v71 >= v89[3] ) { v75 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); v19 = v96 && v89 != 0; v72 = v75; } else { v72 = *v71; } v89 = v72 == -1 ? 0 : v89; v20 = v72 == -1 && v19; } else { v20 = a4 == -1; } if ( v99 == v20 ) { v86 = 1; v14 = *(_BYTE *)(v8 + 16); v21 = v102; v91 = 0; v100 = 0; if ( v102 == 16 ) { LABEL_25: N = 22; S = 22; goto LABEL_46; } LABEL_45: N = v21; S = v21; goto LABEL_46; } if ( v7 ) { v70 = (wchar_t *)v7[2]; if ( (unsigned int)v70 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v70; v14 = *(_BYTE *)(v8 + 16); v7 = v12 == 0xFFFF ? 0 : v7; } else { v14 = *(_BYTE *)(v8 + 16); v12 = -1; } } } else { v79 = 0; } v91 = 0; v100 = 0; while ( 1 ) { if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) { LABEL_86: v86 = 0; goto LABEL_44; } if ( *(_WORD *)(v8 + 120) != v12 ) break; v40 = !v100 || v102 == 10; if ( !v40 ) goto LABEL_33; v100 = v87 == 0 || v102 == 8; if ( !v100 ) { ++v91; v100 = v40; LABEL_37: v22 = v7[2]; v23 = v7[3]; if ( v22 < v23 ) goto LABEL_38; goto LABEL_79; } v22 = v7[2]; v23 = v7[3]; v91 = 0; v102 = 8; if ( v22 < v23 ) { LABEL_38: v24 = (__int16 *)(v22 + 2); v7[2] = v24; if ( v23 <= (unsigned int)v24 ) goto LABEL_80; goto LABEL_39; } LABEL_79: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v24 = (__int16 *)v7[2]; if ( v7[3] <= (unsigned int)v24 ) { LABEL_80: v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); goto LABEL_40; } LABEL_39: v25 = *v24; LABEL_40: v7 = v25 == -1 ? 0 : v7; v92 = v25 == -1; v26 = v96 && v89 != 0; if ( v26 ) { v42 = (__int16 *)v89[2]; if ( (unsigned int)v42 >= v89[3] ) { v43 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); v26 = v96 && v89 != 0; } else { v43 = *v42; } v89 = v43 == -1 ? 0 : v89; v27 = v43 == -1 && v26; } else { v27 = a4 == -1; } if ( v92 == v27 ) { v86 = 1; v14 = *(_BYTE *)(v8 + 16); goto LABEL_44; } v12 = -1; if ( v7 ) { v41 = (wchar_t *)v7[2]; if ( (unsigned int)v41 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v41; v7 = v12 == 0xFFFF ? 0 : v7; } v14 = *(_BYTE *)(v8 + 16); if ( !v100 ) goto LABEL_86; } if ( !v100 ) goto LABEL_86; LABEL_33: if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) { v86 = 0; v100 = 1; goto LABEL_44; } if ( v87 == 0 || v102 == 16 ) { v91 = 0; v100 = 0; v102 = 16; goto LABEL_37; } v86 = 0; v100 = 1; N = v102; S = v102; LABEL_46: v105 = 0; v104 = v106; LOBYTE(v106[0]) = 0; if ( v14 ) std::string::reserve(&v104, 0x20u); v80 = v79 + 0x7FFFFFFF; v81 = v80 / v102; v84 = *(_BYTE *)(v8 + 164); if ( v84 ) { if ( v86 ) { v37 = v105; v88 = 0; v85 = 0; v38 = (int *)v104; v84 = v86; v86 = 0; LABEL_67: if ( !v37 ) goto LABEL_68; LABEL_105: v103 = (std::locale::facet *)(v37 + 1); if ( v38 == v106 ) v51 = 15; else v51 = v106[0]; if ( (unsigned int)v103 > v51 ) { std::string::_M_mutate((int)&v104, v37, 0, 0, 1u); v38 = (int *)v104; } *((_BYTE *)v38 + v37) = v91; v105 = v37 + 1; *((_BYTE *)v103 + (_DWORD)v104) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v104) ) *a6 = 4; v38 = (int *)v104; if ( !v100 && !(v105 | v91) ) goto LABEL_70; goto LABEL_113; } v85 = 0; Sa = (wchar_t *)(v8 + 120); v88 = 0; while ( 2 ) { if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) { v37 = v105; v38 = (int *)v104; if ( !v91 ) { v84 = 0; v86 = *(_BYTE *)(v8 + 16); goto LABEL_67; } v95 = v105 + 1; if ( v104 == v106 ) v61 = 15; else v61 = v106[0]; if ( v95 > v61 ) { std::string::_M_mutate((int)&v104, v105, 0, 0, 1u); v38 = (int *)v104; } v62 = v91; v91 = 0; *((_BYTE *)v38 + v37) = v62; v105 = v95; *((_BYTE *)v104 + v95) = 0; LABEL_59: v31 = v7[2]; v32 = v7[3]; if ( v31 >= v32 ) goto LABEL_135; } else { if ( v12 == *(_WORD *)(v8 + 36) ) goto LABEL_131; v28 = wmemchr(Sa, v12, N); if ( !v28 ) goto LABEL_131; v29 = (char *)v28 - (char *)Sa; v30 = v29 >> 1; if ( v29 > 30 ) v30 -= 6; if ( v81 >= v88 ) { v85 |= v80 - v30 < v102 * v88; ++v91; v88 = v30 + v102 * v88; goto LABEL_59; } v32 = v7[3]; v85 = v84; v31 = v7[2]; if ( v31 >= v32 ) { LABEL_135: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v33 = (__int16 *)v7[2]; v32 = v7[3]; goto LABEL_61; } } v33 = (__int16 *)(v31 + 2); v7[2] = v33; LABEL_61: if ( (unsigned int)v33 >= v32 ) v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v34 = *v33; v7 = v34 == -1 ? 0 : v7; v93 = v34 == -1; v35 = v96 && v89 != 0; if ( v35 ) { v59 = (__int16 *)v89[2]; if ( (unsigned int)v59 >= v89[3] ) v60 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); else v60 = *v59; v89 = v60 == -1 ? 0 : v89; v36 = v60 == -1 && v35; } else { v36 = a4 == -1; } if ( v36 == v93 ) { v37 = v105; v38 = (int *)v104; goto LABEL_67; } if ( v7 ) { v58 = (wchar_t *)v7[2]; if ( (unsigned int)v58 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v58; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = -1; } continue; } } if ( v86 ) { v73 = v86; v37 = v105; v85 = 0; v86 = 0; v38 = (int *)v104; v84 = v73; v88 = 0; goto LABEL_67; } v85 = 0; v88 = 0; while ( 2 ) { if ( S > 10 ) { if ( (unsigned __int16)(v12 - 48) <= 9u ) goto LABEL_95; if ( (unsigned __int16)(v12 - 97) > 5u ) { if ( (unsigned __int16)(v12 - 65) > 5u ) goto LABEL_131; v44 = v12 - 55; goto LABEL_96; } v44 = v12 - 87; if ( v81 >= v88 ) goto LABEL_121; LABEL_97: v45 = v7[2]; v46 = v7[3]; v85 = 1; if ( v45 < v46 ) goto LABEL_98; LABEL_122: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v47 = (__int16 *)v7[2]; v46 = v7[3]; } else { if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) { LABEL_131: v37 = v105; v38 = (int *)v104; v84 = 0; goto LABEL_67; } LABEL_95: v44 = v12 - 48; LABEL_96: if ( v81 < v88 ) goto LABEL_97; LABEL_121: v53 = v80 - v44 < v102 * v88; v54 = v44 + v102 * v88; v46 = v7[3]; v85 |= v53; v88 = v54; v45 = v7[2]; ++v91; if ( v45 >= v46 ) goto LABEL_122; LABEL_98: v47 = (__int16 *)(v45 + 2); v7[2] = v47; } if ( (unsigned int)v47 >= v46 ) v48 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v48 = *v47; v7 = v48 == -1 ? 0 : v7; v94 = v48 == -1; v49 = v96 && v89 != 0; if ( v49 ) { v56 = (__int16 *)v89[2]; if ( (unsigned int)v56 >= v89[3] ) v57 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); else v57 = *v56; v89 = v57 == -1 ? 0 : v89; v50 = v57 == -1 && v49; } else { v50 = a4 == -1; } if ( v94 != v50 ) { if ( v7 ) { v55 = (wchar_t *)v7[2]; if ( (unsigned int)v55 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v55; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = -1; } continue; } break; } v37 = v105; v38 = (int *)v104; v84 = 1; if ( v105 ) goto LABEL_105; LABEL_68: if ( !v100 && !v91 ) { LABEL_70: *a7 = 0; *a6 = 4; goto LABEL_71; } LABEL_113: if ( v86 ) goto LABEL_70; if ( v85 ) { *a7 = v79 + 0x7FFFFFFF; *a6 = 4; } else { v52 = v88; if ( v79 ) v52 = -v88; *a7 = v52; } LABEL_71: if ( v84 ) *a6 |= 2u; if ( v38 != v106 ) operator delete(v38); return v7; } // 46A327: variable 'v76' is possibly undefined // 46A39A: variable 'v77' is possibly undefined // 4E95AC: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (0046A630) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned int *a7) { _DWORD *v7; // ebx int v8; // esi bool v9; // dl char v10; // dl char v11; // di wchar_t v12; // di __int16 v13; // ax char v14; // cl unsigned int v15; // eax unsigned int v16; // edx __int16 *v17; // eax __int16 v18; // dx bool v19; // dl char v20; // dl unsigned int v21; // eax unsigned int v22; // eax unsigned int v23; // edx __int16 *v24; // eax __int16 v25; // ax bool v26; // dl char v27; // dl wchar_t *v28; // eax int v29; // eax int v30; // edx unsigned int v31; // eax unsigned int v32; // edx __int16 *v33; // eax __int16 v34; // dx bool v35; // di char v36; // di size_t v37; // edi int *v38; // eax bool v40; // al wchar_t *v41; // eax __int16 *v42; // eax __int16 v43; // ax int v44; // edx unsigned int v45; // eax unsigned int v46; // edx __int16 *v47; // eax __int16 v48; // ax bool v49; // di char v50; // di unsigned int v51; // edx bool v52; // cl unsigned int v53; // eax wchar_t *v54; // eax __int16 *v55; // eax __int16 v56; // ax wchar_t *v57; // eax __int16 *v58; // eax __int16 v59; // dx unsigned int v60; // edx char v61; // cl __int16 *v62; // eax __int16 v63; // cx __int16 *v64; // eax __int16 v65; // ax wchar_t *v66; // eax std::locale::_Impl *v67; // eax std::locale::_Impl *v68; // esi wchar_t *v69; // eax __int16 *v70; // eax __int16 v71; // cx char v72; // cl __int16 v73; // ax __int16 v74; // ax void (__cdecl *v75)(void *); // [esp+4h] [ebp-84h] unsigned int v76; // [esp+8h] [ebp-80h] bool v77; // [esp+1Fh] [ebp-69h] size_t N; // [esp+20h] [ebp-68h] unsigned int v79; // [esp+28h] [ebp-60h] int S; // [esp+2Ch] [ebp-5Ch] wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] char v82; // [esp+30h] [ebp-58h] char v83; // [esp+32h] [ebp-56h] char v84; // [esp+33h] [ebp-55h] int v85; // [esp+34h] [ebp-54h] unsigned int v86; // [esp+34h] [ebp-54h] _DWORD *v87; // [esp+38h] [ebp-50h] char v88; // [esp+38h] [ebp-50h] int v89; // [esp+3Ch] [ebp-4Ch] char v90; // [esp+40h] [ebp-48h] char v91; // [esp+40h] [ebp-48h] char v92; // [esp+40h] [ebp-48h] size_t v93; // [esp+40h] [ebp-48h] bool v94; // [esp+44h] [ebp-44h] int *v95; // [esp+48h] [ebp-40h] bool v96; // [esp+48h] [ebp-40h] char v97; // [esp+48h] [ebp-40h] bool v98; // [esp+48h] [ebp-40h] std::locale::facet *v99; // [esp+4Ch] [ebp-3Ch] unsigned int v100; // [esp+4Ch] [ebp-3Ch] std::locale::facet *v101; // [esp+4Ch] [ebp-3Ch] void *v102; // [esp+58h] [ebp-30h] BYREF size_t v103; // [esp+5Ch] [ebp-2Ch] int v104[10]; // [esp+60h] [ebp-28h] BYREF v7 = a1; v87 = a3; v99 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); v95 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); if ( !v8 ) { v67 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v75); *((_DWORD *)v67 + 1) = 0; v68 = v67; *(_DWORD *)v67 = &off_4F65B0; *((_DWORD *)v67 + 2) = 0; *((_DWORD *)v67 + 3) = 0; *((_BYTE *)v67 + 16) = 0; *((_DWORD *)v67 + 5) = 0; *((_DWORD *)v67 + 6) = 0; *((_DWORD *)v67 + 7) = 0; *((_DWORD *)v67 + 8) = 0; *((_DWORD *)v67 + 9) = 0; *((_BYTE *)v67 + 164) = 0; std::__numpunct_cache::_M_cache((int)v67, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v68, v99, v76); v8 = *v95; } v100 = 8; v85 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v85 != 64 ) v100 = v85 == 8 ? 16 : 10; v96 = a2 == 0xFFFF; v9 = v96 && a1 != 0; if ( v9 ) { v64 = (__int16 *)a1[2]; if ( (unsigned int)v64 >= a1[3] ) { v65 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v9 = v96 && a1 != 0; } else { v65 = *v64; } v7 = v65 == -1 ? 0 : a1; v10 = v65 == -1 && v9; } else { v10 = a2 == 0xFFFF; } v94 = a4 == -1; if ( v94 && a3 != 0 ) { v62 = (__int16 *)a3[2]; if ( (unsigned int)v62 >= a3[3] ) { v88 = v10; v73 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v88; v63 = v73; } else { v63 = *v62; } v87 = v63 == -1 ? 0 : a3; v11 = v63 == -1 && v94 && a3 != 0; } else { v11 = a4 == -1; } if ( v11 == v10 ) { v77 = 0; v14 = *(_BYTE *)(v8 + 16); v12 = 0; v84 = 1; v89 = 0; v98 = 0; LABEL_44: v21 = v100; if ( v100 == 16 ) goto LABEL_25; goto LABEL_45; } if ( v7 && a2 == 0xFFFF ) { v66 = (wchar_t *)v7[2]; if ( (unsigned int)v66 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v66; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = a2; } v13 = *(_WORD *)(v8 + 112); v14 = *(_BYTE *)(v8 + 16); v77 = v13 == (__int16)v12; if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) { if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) { v15 = v7[2]; v16 = v7[3]; if ( v15 >= v16 ) { (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v17 = (__int16 *)v7[2]; v16 = v7[3]; } else { v17 = (__int16 *)(v15 + 2); v7[2] = v17; } if ( v16 <= (unsigned int)v17 ) v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v18 = *v17; v7 = v18 == -1 ? 0 : v7; v97 = v18 == -1; v19 = v94 && v87 != 0; if ( v19 ) { v70 = (__int16 *)v87[2]; if ( (unsigned int)v70 >= v87[3] ) { v74 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); v19 = v94 && v87 != 0; v71 = v74; } else { v71 = *v70; } v87 = v71 == -1 ? 0 : v87; v20 = v71 == -1 && v19; } else { v20 = a4 == -1; } if ( v97 == v20 ) { v84 = 1; v14 = *(_BYTE *)(v8 + 16); v21 = v100; v89 = 0; v98 = 0; if ( v100 == 16 ) { LABEL_25: N = 22; S = 22; goto LABEL_46; } LABEL_45: N = v21; S = v21; goto LABEL_46; } if ( v7 ) { v69 = (wchar_t *)v7[2]; if ( (unsigned int)v69 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v69; v14 = *(_BYTE *)(v8 + 16); v7 = v12 == 0xFFFF ? 0 : v7; } else { v14 = *(_BYTE *)(v8 + 16); v12 = -1; } } } else { v77 = 0; } v89 = 0; v98 = 0; while ( 1 ) { if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) { LABEL_86: v84 = 0; goto LABEL_44; } if ( *(_WORD *)(v8 + 120) != v12 ) break; v40 = !v98 || v100 == 10; if ( !v40 ) goto LABEL_33; v98 = v85 == 0 || v100 == 8; if ( !v98 ) { ++v89; v98 = v40; LABEL_37: v22 = v7[2]; v23 = v7[3]; if ( v22 < v23 ) goto LABEL_38; goto LABEL_79; } v22 = v7[2]; v23 = v7[3]; v89 = 0; v100 = 8; if ( v22 < v23 ) { LABEL_38: v24 = (__int16 *)(v22 + 2); v7[2] = v24; if ( v23 <= (unsigned int)v24 ) goto LABEL_80; goto LABEL_39; } LABEL_79: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v24 = (__int16 *)v7[2]; if ( v7[3] <= (unsigned int)v24 ) { LABEL_80: v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); goto LABEL_40; } LABEL_39: v25 = *v24; LABEL_40: v7 = v25 == -1 ? 0 : v7; v90 = v25 == -1; v26 = v94 && v87 != 0; if ( v26 ) { v42 = (__int16 *)v87[2]; if ( (unsigned int)v42 >= v87[3] ) { v43 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); v26 = v94 && v87 != 0; } else { v43 = *v42; } v87 = v43 == -1 ? 0 : v87; v27 = v43 == -1 && v26; } else { v27 = a4 == -1; } if ( v90 == v27 ) { v84 = 1; v14 = *(_BYTE *)(v8 + 16); goto LABEL_44; } v12 = -1; if ( v7 ) { v41 = (wchar_t *)v7[2]; if ( (unsigned int)v41 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v41; v7 = v12 == 0xFFFF ? 0 : v7; } v14 = *(_BYTE *)(v8 + 16); if ( !v98 ) goto LABEL_86; } if ( !v98 ) goto LABEL_86; LABEL_33: if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) { v84 = 0; v98 = 1; goto LABEL_44; } if ( v85 == 0 || v100 == 16 ) { v89 = 0; v98 = 0; v100 = 16; goto LABEL_37; } v84 = 0; v98 = 1; N = v100; S = v100; LABEL_46: v103 = 0; v102 = v104; LOBYTE(v104[0]) = 0; if ( v14 ) std::string::reserve(&v102, 0x20u); v79 = 0xFFFFFFFF / v100; v82 = *(_BYTE *)(v8 + 164); if ( v82 ) { if ( v84 ) { v37 = v103; v86 = 0; v83 = 0; v38 = (int *)v102; v82 = v84; v84 = 0; LABEL_67: if ( !v37 ) goto LABEL_68; LABEL_105: v101 = (std::locale::facet *)(v37 + 1); if ( v38 == v104 ) v51 = 15; else v51 = v104[0]; if ( (unsigned int)v101 > v51 ) { std::string::_M_mutate((int)&v102, v37, 0, 0, 1u); v38 = (int *)v102; } *((_BYTE *)v38 + v37) = v89; v103 = v37 + 1; *((_BYTE *)v101 + (_DWORD)v102) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v102) ) *a6 = 4; v38 = (int *)v102; if ( !v98 && !(v103 | v89) ) goto LABEL_70; goto LABEL_113; } v83 = 0; Sa = (wchar_t *)(v8 + 120); v86 = 0; while ( 2 ) { if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) { v37 = v103; v38 = (int *)v102; if ( !v89 ) { v82 = 0; v84 = *(_BYTE *)(v8 + 16); goto LABEL_67; } v93 = v103 + 1; if ( v102 == v104 ) v60 = 15; else v60 = v104[0]; if ( v93 > v60 ) { std::string::_M_mutate((int)&v102, v103, 0, 0, 1u); v38 = (int *)v102; } v61 = v89; v89 = 0; *((_BYTE *)v38 + v37) = v61; v103 = v93; *((_BYTE *)v102 + v93) = 0; LABEL_59: v31 = v7[2]; v32 = v7[3]; if ( v31 >= v32 ) goto LABEL_135; } else { if ( v12 == *(_WORD *)(v8 + 36) ) goto LABEL_131; v28 = wmemchr(Sa, v12, N); if ( !v28 ) goto LABEL_131; v29 = (char *)v28 - (char *)Sa; v30 = v29 >> 1; if ( v29 > 30 ) v30 -= 6; if ( v79 >= v86 ) { v83 |= ~v30 < v100 * v86; ++v89; v86 = v30 + v100 * v86; goto LABEL_59; } v32 = v7[3]; v83 = v82; v31 = v7[2]; if ( v31 >= v32 ) { LABEL_135: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v33 = (__int16 *)v7[2]; v32 = v7[3]; goto LABEL_61; } } v33 = (__int16 *)(v31 + 2); v7[2] = v33; LABEL_61: if ( (unsigned int)v33 >= v32 ) v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v34 = *v33; v7 = v34 == -1 ? 0 : v7; v91 = v34 == -1; v35 = v94 && v87 != 0; if ( v35 ) { v58 = (__int16 *)v87[2]; if ( (unsigned int)v58 >= v87[3] ) v59 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); else v59 = *v58; v87 = v59 == -1 ? 0 : v87; v36 = v59 == -1 && v35; } else { v36 = a4 == -1; } if ( v36 == v91 ) { v37 = v103; v38 = (int *)v102; goto LABEL_67; } if ( v7 ) { v57 = (wchar_t *)v7[2]; if ( (unsigned int)v57 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v57; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = -1; } continue; } } if ( v84 ) { v72 = v84; v37 = v103; v83 = 0; v84 = 0; v38 = (int *)v102; v82 = v72; v86 = 0; goto LABEL_67; } v83 = 0; v86 = 0; while ( 2 ) { if ( S > 10 ) { if ( (unsigned __int16)(v12 - 48) <= 9u ) goto LABEL_95; if ( (unsigned __int16)(v12 - 97) > 5u ) { if ( (unsigned __int16)(v12 - 65) > 5u ) goto LABEL_131; v44 = v12 - 55; goto LABEL_96; } v44 = v12 - 87; if ( v79 >= v86 ) goto LABEL_121; LABEL_97: v45 = v7[2]; v46 = v7[3]; v83 = 1; if ( v45 < v46 ) goto LABEL_98; LABEL_122: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v47 = (__int16 *)v7[2]; v46 = v7[3]; } else { if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) { LABEL_131: v37 = v103; v38 = (int *)v102; v82 = 0; goto LABEL_67; } LABEL_95: v44 = v12 - 48; LABEL_96: if ( v79 < v86 ) goto LABEL_97; LABEL_121: v52 = ~v44 < v100 * v86; v53 = v44 + v100 * v86; v46 = v7[3]; v83 |= v52; v86 = v53; v45 = v7[2]; ++v89; if ( v45 >= v46 ) goto LABEL_122; LABEL_98: v47 = (__int16 *)(v45 + 2); v7[2] = v47; } if ( (unsigned int)v47 >= v46 ) v48 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v48 = *v47; v7 = v48 == -1 ? 0 : v7; v92 = v48 == -1; v49 = v94 && v87 != 0; if ( v49 ) { v55 = (__int16 *)v87[2]; if ( (unsigned int)v55 >= v87[3] ) v56 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); else v56 = *v55; v87 = v56 == -1 ? 0 : v87; v50 = v56 == -1 && v49; } else { v50 = a4 == -1; } if ( v92 != v50 ) { if ( v7 ) { v54 = (wchar_t *)v7[2]; if ( (unsigned int)v54 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v54; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = -1; } continue; } break; } v37 = v103; v38 = (int *)v102; v82 = 1; if ( v103 ) goto LABEL_105; LABEL_68: if ( !v98 && !v89 ) { LABEL_70: *a7 = 0; *a6 = 4; goto LABEL_71; } LABEL_113: if ( v84 ) goto LABEL_70; if ( v83 ) { *a7 = -1; *a6 = 4; } else { if ( v77 ) v86 = -v86; *a7 = v86; } LABEL_71: if ( v82 ) *a6 |= 2u; if ( v38 != v104 ) operator delete(v38); return v7; } // 46B017: variable 'v75' is possibly undefined // 46B08A: variable 'v76' is possibly undefined // 4E95AC: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (0046B320) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned __int16 *a7) { _DWORD *v7; // ebx int v8; // esi bool v9; // dl char v10; // dl char v11; // di wchar_t v12; // di __int16 v13; // ax char v14; // cl unsigned int v15; // eax unsigned int v16; // edx __int16 *v17; // eax __int16 v18; // dx bool v19; // dl char v20; // dl int v21; // eax unsigned int v22; // eax unsigned int v23; // edx __int16 *v24; // eax __int16 v25; // ax bool v26; // dl char v27; // dl wchar_t *v28; // eax int v29; // eax int v30; // ecx int v31; // edi unsigned int v32; // eax unsigned int v33; // edx __int16 *v34; // eax __int16 v35; // dx bool v36; // di char v37; // di size_t v38; // edi int *v39; // eax bool v41; // al wchar_t *v42; // eax __int16 *v43; // eax __int16 v44; // ax int v45; // eax unsigned int v46; // eax unsigned int v47; // edx __int16 *v48; // eax __int16 v49; // ax bool v50; // di char v51; // di unsigned int v52; // edx wchar_t *v53; // eax __int16 *v54; // eax __int16 v55; // ax wchar_t *v56; // eax __int16 *v57; // eax __int16 v58; // dx unsigned int v59; // edx char v60; // cl __int16 *v61; // eax __int16 v62; // cx __int16 *v63; // eax __int16 v64; // ax wchar_t *v65; // eax std::locale::_Impl *v66; // eax std::locale::_Impl *v67; // esi wchar_t *v68; // eax __int16 *v69; // eax __int16 v70; // cx char v71; // cl __int16 v72; // ax __int16 v73; // ax void (__cdecl *v74)(void *); // [esp+4h] [ebp-84h] unsigned int v75; // [esp+8h] [ebp-80h] bool v76; // [esp+1Fh] [ebp-69h] size_t N; // [esp+20h] [ebp-68h] int v78; // [esp+28h] [ebp-60h] int S; // [esp+2Ch] [ebp-5Ch] wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] char v81; // [esp+30h] [ebp-58h] char v82; // [esp+32h] [ebp-56h] char v83; // [esp+33h] [ebp-55h] int v84; // [esp+34h] [ebp-54h] unsigned __int16 v85; // [esp+34h] [ebp-54h] _DWORD *v86; // [esp+38h] [ebp-50h] char v87; // [esp+38h] [ebp-50h] int v88; // [esp+3Ch] [ebp-4Ch] char v89; // [esp+40h] [ebp-48h] char v90; // [esp+40h] [ebp-48h] char v91; // [esp+40h] [ebp-48h] size_t v92; // [esp+40h] [ebp-48h] bool v93; // [esp+44h] [ebp-44h] int *v94; // [esp+48h] [ebp-40h] bool v95; // [esp+48h] [ebp-40h] char v96; // [esp+48h] [ebp-40h] bool v97; // [esp+48h] [ebp-40h] std::locale::facet *v98; // [esp+4Ch] [ebp-3Ch] int v99; // [esp+4Ch] [ebp-3Ch] std::locale::facet *v100; // [esp+4Ch] [ebp-3Ch] void *v101; // [esp+58h] [ebp-30h] BYREF size_t v102; // [esp+5Ch] [ebp-2Ch] int v103[10]; // [esp+60h] [ebp-28h] BYREF v7 = a1; v86 = a3; v98 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v98); v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v98); if ( !v8 ) { v66 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v74); *((_DWORD *)v66 + 1) = 0; v67 = v66; *(_DWORD *)v66 = &off_4F65B0; *((_DWORD *)v66 + 2) = 0; *((_DWORD *)v66 + 3) = 0; *((_BYTE *)v66 + 16) = 0; *((_DWORD *)v66 + 5) = 0; *((_DWORD *)v66 + 6) = 0; *((_DWORD *)v66 + 7) = 0; *((_DWORD *)v66 + 8) = 0; *((_DWORD *)v66 + 9) = 0; *((_BYTE *)v66 + 164) = 0; std::__numpunct_cache::_M_cache((int)v66, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v67, v98, v75); v8 = *v94; } v99 = 8; v84 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v84 != 64 ) v99 = v84 == 8 ? 16 : 10; v95 = a2 == 0xFFFF; v9 = v95 && a1 != 0; if ( v9 ) { v63 = (__int16 *)a1[2]; if ( (unsigned int)v63 >= a1[3] ) { v64 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v9 = v95 && a1 != 0; } else { v64 = *v63; } v7 = v64 == -1 ? 0 : a1; v10 = v64 == -1 && v9; } else { v10 = a2 == 0xFFFF; } v93 = a4 == -1; if ( v93 && a3 != 0 ) { v61 = (__int16 *)a3[2]; if ( (unsigned int)v61 >= a3[3] ) { v87 = v10; v72 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v87; v62 = v72; } else { v62 = *v61; } v86 = v62 == -1 ? 0 : a3; v11 = v62 == -1 && v93 && a3 != 0; } else { v11 = a4 == -1; } if ( v11 == v10 ) { v76 = 0; v14 = *(_BYTE *)(v8 + 16); v12 = 0; v83 = 1; v88 = 0; v97 = 0; LABEL_44: v21 = v99; if ( v99 == 16 ) goto LABEL_25; goto LABEL_45; } if ( v7 && a2 == 0xFFFF ) { v65 = (wchar_t *)v7[2]; if ( (unsigned int)v65 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v65; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = a2; } v13 = *(_WORD *)(v8 + 112); v14 = *(_BYTE *)(v8 + 16); v76 = v13 == (__int16)v12; if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) { if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) { v15 = v7[2]; v16 = v7[3]; if ( v15 >= v16 ) { (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v17 = (__int16 *)v7[2]; v16 = v7[3]; } else { v17 = (__int16 *)(v15 + 2); v7[2] = v17; } if ( v16 <= (unsigned int)v17 ) v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v18 = *v17; v7 = v18 == -1 ? 0 : v7; v96 = v18 == -1; v19 = v93 && v86 != 0; if ( v19 ) { v69 = (__int16 *)v86[2]; if ( (unsigned int)v69 >= v86[3] ) { v73 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); v19 = v93 && v86 != 0; v70 = v73; } else { v70 = *v69; } v86 = v70 == -1 ? 0 : v86; v20 = v70 == -1 && v19; } else { v20 = a4 == -1; } if ( v96 == v20 ) { v83 = 1; v14 = *(_BYTE *)(v8 + 16); v21 = v99; v88 = 0; v97 = 0; if ( v99 == 16 ) { LABEL_25: N = 22; S = 22; goto LABEL_46; } LABEL_45: N = v21; S = v21; goto LABEL_46; } if ( v7 ) { v68 = (wchar_t *)v7[2]; if ( (unsigned int)v68 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v68; v14 = *(_BYTE *)(v8 + 16); v7 = v12 == 0xFFFF ? 0 : v7; } else { v14 = *(_BYTE *)(v8 + 16); v12 = -1; } } } else { v76 = 0; } v88 = 0; v97 = 0; while ( 1 ) { if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) { LABEL_86: v83 = 0; goto LABEL_44; } if ( *(_WORD *)(v8 + 120) != v12 ) break; v41 = !v97 || v99 == 10; if ( !v41 ) goto LABEL_33; v97 = v84 == 0 || v99 == 8; if ( !v97 ) { ++v88; v97 = v41; LABEL_37: v22 = v7[2]; v23 = v7[3]; if ( v22 < v23 ) goto LABEL_38; goto LABEL_79; } v22 = v7[2]; v23 = v7[3]; v88 = 0; v99 = 8; if ( v22 < v23 ) { LABEL_38: v24 = (__int16 *)(v22 + 2); v7[2] = v24; if ( v23 <= (unsigned int)v24 ) goto LABEL_80; goto LABEL_39; } LABEL_79: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v24 = (__int16 *)v7[2]; if ( v7[3] <= (unsigned int)v24 ) { LABEL_80: v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); goto LABEL_40; } LABEL_39: v25 = *v24; LABEL_40: v7 = v25 == -1 ? 0 : v7; v89 = v25 == -1; v26 = v93 && v86 != 0; if ( v26 ) { v43 = (__int16 *)v86[2]; if ( (unsigned int)v43 >= v86[3] ) { v44 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); v26 = v93 && v86 != 0; } else { v44 = *v43; } v86 = v44 == -1 ? 0 : v86; v27 = v44 == -1 && v26; } else { v27 = a4 == -1; } if ( v89 == v27 ) { v83 = 1; v14 = *(_BYTE *)(v8 + 16); goto LABEL_44; } v12 = -1; if ( v7 ) { v42 = (wchar_t *)v7[2]; if ( (unsigned int)v42 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v42; v7 = v12 == 0xFFFF ? 0 : v7; } v14 = *(_BYTE *)(v8 + 16); if ( !v97 ) goto LABEL_86; } if ( !v97 ) goto LABEL_86; LABEL_33: if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) { v83 = 0; v97 = 1; goto LABEL_44; } if ( v84 == 0 || v99 == 16 ) { v88 = 0; v97 = 0; v99 = 16; goto LABEL_37; } v83 = 0; v97 = 1; N = v99; S = v99; LABEL_46: v102 = 0; v101 = v103; LOBYTE(v103[0]) = 0; if ( v14 ) std::string::reserve(&v101, 0x20u); v78 = 0xFFFF / v99; v81 = *(_BYTE *)(v8 + 164); if ( v81 ) { if ( v83 ) { v38 = v102; v82 = 0; v85 = 0; v39 = (int *)v101; v81 = v83; v83 = 0; LABEL_67: if ( !v38 ) goto LABEL_68; LABEL_105: v100 = (std::locale::facet *)(v38 + 1); if ( v39 == v103 ) v52 = 15; else v52 = v103[0]; if ( (unsigned int)v100 > v52 ) { std::string::_M_mutate((int)&v101, v38, 0, 0, 1u); v39 = (int *)v101; } *((_BYTE *)v39 + v38) = v88; v102 = v38 + 1; *((_BYTE *)v100 + (_DWORD)v101) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) *a6 = 4; v39 = (int *)v101; if ( !v97 && !(v102 | v88) ) goto LABEL_70; goto LABEL_113; } v82 = 0; Sa = (wchar_t *)(v8 + 120); v85 = 0; while ( 2 ) { if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) { v38 = v102; v39 = (int *)v101; if ( !v88 ) { v81 = 0; v83 = *(_BYTE *)(v8 + 16); goto LABEL_67; } v92 = v102 + 1; if ( v101 == v103 ) v59 = 15; else v59 = v103[0]; if ( v92 > v59 ) { std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); v39 = (int *)v101; } v60 = v88; v88 = 0; *((_BYTE *)v39 + v38) = v60; v102 = v92; *((_BYTE *)v101 + v92) = 0; LABEL_59: v32 = v7[2]; v33 = v7[3]; if ( v32 >= v33 ) goto LABEL_135; } else { if ( v12 == *(_WORD *)(v8 + 36) ) goto LABEL_131; v28 = wmemchr(Sa, v12, N); if ( !v28 ) goto LABEL_131; v29 = (char *)v28 - (char *)Sa; v30 = v29 >> 1; if ( v29 > 30 ) v30 -= 6; if ( (unsigned __int16)v78 >= v85 ) { v31 = (unsigned __int16)(v99 * v85); ++v88; v82 |= v31 > 0xFFFF - v30; v85 = v31 + v30; goto LABEL_59; } v33 = v7[3]; v82 = v81; v32 = v7[2]; if ( v32 >= v33 ) { LABEL_135: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v34 = (__int16 *)v7[2]; v33 = v7[3]; goto LABEL_61; } } v34 = (__int16 *)(v32 + 2); v7[2] = v34; LABEL_61: if ( (unsigned int)v34 >= v33 ) v35 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v35 = *v34; v7 = v35 == -1 ? 0 : v7; v90 = v35 == -1; v36 = v93 && v86 != 0; if ( v36 ) { v57 = (__int16 *)v86[2]; if ( (unsigned int)v57 >= v86[3] ) v58 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); else v58 = *v57; v86 = v58 == -1 ? 0 : v86; v37 = v58 == -1 && v36; } else { v37 = a4 == -1; } if ( v37 == v90 ) { v38 = v102; v39 = (int *)v101; goto LABEL_67; } if ( v7 ) { v56 = (wchar_t *)v7[2]; if ( (unsigned int)v56 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v56; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = -1; } continue; } } if ( v83 ) { v71 = v83; v38 = v102; v82 = 0; v83 = 0; v39 = (int *)v101; v81 = v71; v85 = 0; goto LABEL_67; } v82 = 0; v85 = 0; while ( 2 ) { if ( S > 10 ) { if ( (unsigned __int16)(v12 - 48) <= 9u ) goto LABEL_95; if ( (unsigned __int16)(v12 - 97) > 5u ) { if ( (unsigned __int16)(v12 - 65) > 5u ) goto LABEL_131; v45 = v12 - 55; goto LABEL_96; } v45 = v12 - 87; if ( v85 <= (unsigned __int16)v78 ) goto LABEL_121; LABEL_97: v46 = v7[2]; v47 = v7[3]; v82 = 1; if ( v46 < v47 ) goto LABEL_98; LABEL_122: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v48 = (__int16 *)v7[2]; v47 = v7[3]; } else { if ( v12 <= 0x2Fu || v12 >= (unsigned __int16)(S + 48) ) { LABEL_131: v38 = v102; v39 = (int *)v101; v81 = 0; goto LABEL_67; } LABEL_95: v45 = v12 - 48; LABEL_96: if ( v85 > (unsigned __int16)v78 ) goto LABEL_97; LABEL_121: v47 = v7[3]; v82 |= (unsigned __int16)(v99 * v85) > 0xFFFF - v45; v85 = v99 * v85 + v45; v46 = v7[2]; ++v88; if ( v46 >= v47 ) goto LABEL_122; LABEL_98: v48 = (__int16 *)(v46 + 2); v7[2] = v48; } if ( v47 <= (unsigned int)v48 ) v49 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v49 = *v48; v7 = v49 == -1 ? 0 : v7; v91 = v49 == -1; v50 = v93 && v86 != 0; if ( v50 ) { v54 = (__int16 *)v86[2]; if ( (unsigned int)v54 >= v86[3] ) v55 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); else v55 = *v54; v86 = v55 == -1 ? 0 : v86; v51 = v55 == -1 && v50; } else { v51 = a4 == -1; } if ( v91 != v51 ) { if ( v7 ) { v53 = (wchar_t *)v7[2]; if ( (unsigned int)v53 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v53; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = -1; } continue; } break; } v38 = v102; v39 = (int *)v101; v81 = 1; if ( v102 ) goto LABEL_105; LABEL_68: if ( !v97 && !v88 ) { LABEL_70: *a7 = 0; *a6 = 4; goto LABEL_71; } LABEL_113: if ( v83 ) goto LABEL_70; if ( v82 ) { *a7 = -1; *a6 = 4; } else { if ( v76 ) v85 = -v85; *a7 = v85; } LABEL_71: if ( v81 ) *a6 |= 2u; if ( v39 != v103 ) operator delete(v39); return v7; } // 46BD17: variable 'v74' is possibly undefined // 46BD8A: variable 'v75' is possibly undefined // 4E95AC: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (0046C020) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7) { int v7; // esi int v8; // edi char v9; // bl bool v10; // dl char v11; // dl wchar_t v12; // bx __int16 v13; // ax char v14; // cl unsigned int v15; // eax unsigned int v16; // edx __int16 *v17; // eax __int16 v18; // dx bool v19; // dl char v20; // dl _DWORD *v21; // ecx unsigned int v22; // eax unsigned int v23; // edx __int16 *v24; // eax __int16 v25; // ax bool v26; // dl char v27; // dl unsigned __int64 v28; // kr00_8 wchar_t *v29; // eax int v30; // eax int v31; // ebx _DWORD *v32; // edi unsigned int v33; // eax unsigned int v34; // edx __int16 *v35; // eax __int16 v36; // dx bool v37; // bl char v38; // bl size_t v39; // ebx int *v40; // ecx bool v42; // al wchar_t *v43; // eax __int16 *v44; // eax __int16 v45; // ax int v46; // ecx _DWORD *v47; // ebx unsigned int v48; // eax unsigned int v49; // edx __int16 *v50; // eax __int16 v51; // ax bool v52; // bl char v53; // bl unsigned int v54; // edi unsigned int v55; // eax int v56; // eax unsigned int v57; // edx wchar_t *v58; // eax __int16 *v59; // eax __int16 v60; // ax wchar_t *v61; // eax __int16 *v62; // eax __int16 v63; // dx size_t v64; // edi unsigned int v65; // eax __int16 *v66; // eax __int16 v67; // cx __int16 *v68; // eax __int16 v69; // dx wchar_t *v70; // eax std::locale::_Impl *v71; // eax std::locale::_Impl *v72; // edi wchar_t *v73; // eax __int16 *v74; // eax __int16 v75; // cx char v76; // al __int16 v77; // ax __int16 v78; // ax void (__cdecl *v79)(void *); // [esp+4h] [ebp-94h] unsigned int v80; // [esp+8h] [ebp-90h] size_t N; // [esp+10h] [ebp-88h] UDItype n; // [esp+18h] [ebp-80h] int S; // [esp+28h] [ebp-70h] wchar_t *Sa; // [esp+28h] [ebp-70h] char v85; // [esp+2Ch] [ebp-6Ch] bool v86; // [esp+2Eh] [ebp-6Ah] char v87; // [esp+2Fh] [ebp-69h] __int64 v88; // [esp+30h] [ebp-68h] char v89; // [esp+38h] [ebp-60h] _DWORD *v90; // [esp+3Ch] [ebp-5Ch] int *v91; // [esp+40h] [ebp-58h] int v92; // [esp+40h] [ebp-58h] unsigned __int64 v93; // [esp+40h] [ebp-58h] char v94; // [esp+48h] [ebp-50h] char v95; // [esp+48h] [ebp-50h] char v96; // [esp+48h] [ebp-50h] char v97; // [esp+48h] [ebp-50h] int v98; // [esp+50h] [ebp-48h] bool v99; // [esp+54h] [ebp-44h] std::locale::facet *v100; // [esp+58h] [ebp-40h] bool v101; // [esp+58h] [ebp-40h] char v102; // [esp+58h] [ebp-40h] bool v103; // [esp+58h] [ebp-40h] _DWORD *v104; // [esp+5Ch] [ebp-3Ch] void *v105; // [esp+68h] [ebp-30h] BYREF size_t v106; // [esp+6Ch] [ebp-2Ch] int v107[10]; // [esp+70h] [ebp-28h] BYREF v104 = a1; v90 = a3; v100 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v100); v91 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v100); if ( !v7 ) { v71 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v79); *((_DWORD *)v71 + 1) = 0; v72 = v71; *(_DWORD *)v71 = &off_4F65B0; *((_DWORD *)v71 + 2) = 0; *((_DWORD *)v71 + 3) = 0; *((_BYTE *)v71 + 16) = 0; *((_DWORD *)v71 + 5) = 0; *((_DWORD *)v71 + 6) = 0; *((_DWORD *)v71 + 7) = 0; *((_DWORD *)v71 + 8) = 0; *((_DWORD *)v71 + 9) = 0; *((_BYTE *)v71 + 164) = 0; std::__numpunct_cache::_M_cache((int)v71, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v72, v100, v80); v7 = *v91; } v8 = 8; v92 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v92 != 64 ) v8 = v92 == 8 ? 16 : 10; v101 = a2 == 0xFFFF; if ( v101 && a1 != 0 ) { v68 = (__int16 *)a1[2]; if ( (unsigned int)v68 >= a1[3] ) v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v69 = *v68; v104 = v69 == -1 ? 0 : a1; v9 = v69 == -1 && v101 && a1 != 0; } else { v9 = a2 == 0xFFFF; } v99 = a4 == -1; v10 = v99 && a3 != 0; if ( v10 ) { v66 = (__int16 *)a3[2]; if ( (unsigned int)v66 >= a3[3] ) { v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v99 && a3 != 0; v67 = v77; } else { v67 = *v66; } v90 = v67 == -1 ? 0 : a3; v11 = v67 == -1 && v10; } else { v11 = a4 == -1; } if ( v11 == v9 ) { v86 = 0; v14 = *(_BYTE *)(v7 + 16); v12 = 0; v89 = 1; v98 = 0; v103 = 0; LABEL_44: if ( v8 == 16 ) goto LABEL_25; goto LABEL_45; } if ( v104 && a2 == 0xFFFF ) { v70 = (wchar_t *)v104[2]; if ( (unsigned int)v70 >= v104[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); else v12 = *v70; v104 = v12 == 0xFFFF ? 0 : v104; } else { v12 = a2; } v13 = *(_WORD *)(v7 + 112); v14 = *(_BYTE *)(v7 + 16); v86 = v13 == (__int16)v12; if ( v13 == v12 || *(_WORD *)(v7 + 114) == v12 ) { if ( (!v14 || *(_WORD *)(v7 + 38) != v12) && *(_WORD *)(v7 + 36) != v12 ) { v15 = v104[2]; v16 = v104[3]; if ( v15 >= v16 ) { (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); v17 = (__int16 *)v104[2]; v16 = v104[3]; } else { v17 = (__int16 *)(v15 + 2); v104[2] = v17; } if ( v16 <= (unsigned int)v17 ) v18 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); else v18 = *v17; v104 = v18 == -1 ? 0 : v104; v102 = v18 == -1; v19 = v99 && v90 != 0; if ( v19 ) { v74 = (__int16 *)v90[2]; if ( (unsigned int)v74 >= v90[3] ) { v78 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); v19 = v99 && v90 != 0; v75 = v78; } else { v75 = *v74; } v90 = v75 == -1 ? 0 : v90; v20 = v75 == -1 && v19; } else { v20 = a4 == -1; } if ( v102 == v20 ) { v89 = 1; v14 = *(_BYTE *)(v7 + 16); v98 = 0; v103 = 0; if ( v8 == 16 ) { LABEL_25: N = 22; S = 22; goto LABEL_46; } LABEL_45: N = v8; S = v8; goto LABEL_46; } if ( v104 ) { v73 = (wchar_t *)v104[2]; if ( (unsigned int)v73 >= v104[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); else v12 = *v73; v14 = *(_BYTE *)(v7 + 16); v104 = v12 == 0xFFFF ? 0 : v104; } else { v14 = *(_BYTE *)(v7 + 16); v12 = -1; } } } else { v86 = 0; } v98 = 0; v103 = 0; while ( 1 ) { if ( v14 && *(_WORD *)(v7 + 38) == v12 || *(_WORD *)(v7 + 36) == v12 ) { LABEL_88: v89 = 0; goto LABEL_44; } if ( *(_WORD *)(v7 + 120) != v12 ) break; v42 = !v103 || v8 == 10; if ( !v42 ) goto LABEL_33; v103 = v92 == 0 || v8 == 8; if ( !v103 ) { ++v98; v103 = v42; LABEL_37: v21 = v104; v22 = v104[2]; v23 = v104[3]; if ( v22 < v23 ) goto LABEL_38; goto LABEL_81; } v21 = v104; v98 = 0; v8 = 8; v22 = v104[2]; v23 = v104[3]; if ( v22 < v23 ) { LABEL_38: v24 = (__int16 *)(v22 + 2); v21[2] = v24; if ( v23 <= (unsigned int)v24 ) goto LABEL_82; goto LABEL_39; } LABEL_81: (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); v24 = (__int16 *)v104[2]; if ( v104[3] <= (unsigned int)v24 ) { LABEL_82: v25 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); goto LABEL_40; } LABEL_39: v25 = *v24; LABEL_40: v104 = v25 == -1 ? 0 : v104; v94 = v25 == -1; v26 = v99 && v90 != 0; if ( v26 ) { v44 = (__int16 *)v90[2]; if ( (unsigned int)v44 >= v90[3] ) { v45 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); v26 = v99 && v90 != 0; } else { v45 = *v44; } v90 = v45 == -1 ? 0 : v90; v27 = v45 == -1 && v26; } else { v27 = a4 == -1; } if ( v94 == v27 ) { v89 = 1; v14 = *(_BYTE *)(v7 + 16); goto LABEL_44; } v12 = -1; if ( v104 ) { v43 = (wchar_t *)v104[2]; if ( (unsigned int)v43 >= v104[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); else v12 = *v43; v104 = v12 == 0xFFFF ? 0 : v104; } v14 = *(_BYTE *)(v7 + 16); if ( !v103 ) goto LABEL_88; } if ( !v103 ) goto LABEL_88; LABEL_33: if ( *(_WORD *)(v7 + 116) != v12 && *(_WORD *)(v7 + 118) != v12 ) { v89 = 0; v103 = 1; goto LABEL_44; } if ( v92 == 0 || v8 == 16 ) { v98 = 0; v8 = 16; v103 = 0; goto LABEL_37; } v89 = 0; N = v8; S = v8; v103 = 1; LABEL_46: v106 = 0; v105 = v107; LOBYTE(v107[0]) = 0; if ( v14 ) std::string::reserve(&v105, 0x20u); n = 0x8000000000000000LL; if ( !v86 ) n = 0x7FFFFFFFFFFFFFFFLL; v88 = v8; v28 = n / v8; v85 = *(_BYTE *)(v7 + 164); if ( v85 ) { if ( v89 ) { v39 = v106; v93 = 0LL; v40 = (int *)v105; v85 = v89; v87 = 0; v89 = 0; LABEL_69: if ( !v39 ) goto LABEL_70; LABEL_107: v54 = v39 + 1; if ( v40 == v107 ) v55 = 15; else v55 = v107[0]; if ( v54 > v55 ) { std::string::_M_mutate((int)&v105, v39, 0, 0, 1u); v40 = (int *)v105; } *((_BYTE *)v40 + v39) = v98; v106 = v39 + 1; *((_BYTE *)v105 + v54) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v7 + 8), *(_DWORD *)(v7 + 12), (int)&v105) ) *a6 = 4; v40 = (int *)v105; if ( !v103 && !(v106 | v98) ) goto LABEL_72; goto LABEL_115; } v87 = 0; Sa = (wchar_t *)(v7 + 120); v93 = 0LL; while ( 2 ) { if ( *(_BYTE *)(v7 + 16) && *(_WORD *)(v7 + 38) == v12 ) { v39 = v106; v40 = (int *)v105; if ( !v98 ) { v85 = 0; v89 = *(_BYTE *)(v7 + 16); goto LABEL_69; } v97 = v98; v64 = v106 + 1; if ( v105 == v107 ) v65 = 15; else v65 = v107[0]; if ( v64 > v65 ) { std::string::_M_mutate((int)&v105, v106, 0, 0, 1u); v40 = (int *)v105; } v98 = 0; *((_BYTE *)v40 + v39) = v97; v106 = v39 + 1; *((_BYTE *)v105 + v64) = 0; LABEL_61: v32 = v104; v33 = v104[2]; v34 = v104[3]; if ( v33 >= v34 ) goto LABEL_136; } else { if ( v12 == *(_WORD *)(v7 + 36) ) goto LABEL_134; v29 = wmemchr(Sa, v12, N); if ( !v29 ) goto LABEL_134; v30 = (char *)v29 - (char *)Sa; v31 = v30 >> 1; if ( v30 > 30 ) v31 -= 6; if ( v28 >= v93 ) { v87 |= n - v31 < v88 * v93; ++v98; v93 = v88 * v93 + v31; goto LABEL_61; } v32 = v104; v87 = v85; v34 = v104[3]; v33 = v104[2]; if ( v33 >= v34 ) { LABEL_136: (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); v35 = (__int16 *)v104[2]; v34 = v104[3]; goto LABEL_63; } } v35 = (__int16 *)(v33 + 2); v32[2] = v35; LABEL_63: if ( (unsigned int)v35 >= v34 ) v36 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); else v36 = *v35; v104 = v36 == -1 ? 0 : v104; v95 = v36 == -1; v37 = v99 && v90 != 0; if ( v37 ) { v62 = (__int16 *)v90[2]; if ( (unsigned int)v62 >= v90[3] ) v63 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); else v63 = *v62; v90 = v63 == -1 ? 0 : v90; v38 = v63 == -1 && v37; } else { v38 = a4 == -1; } if ( v38 == v95 ) { v39 = v106; v40 = (int *)v105; goto LABEL_69; } if ( v104 ) { v61 = (wchar_t *)v104[2]; if ( (unsigned int)v61 >= v104[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); else v12 = *v61; v104 = v12 == 0xFFFF ? 0 : v104; } else { v12 = -1; } continue; } } if ( v89 ) { v76 = v89; v39 = v106; v87 = 0; v89 = 0; v40 = (int *)v105; v85 = v76; v93 = 0LL; goto LABEL_69; } v87 = 0; v93 = 0LL; while ( 2 ) { if ( S <= 10 ) { if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) { LABEL_134: v39 = v106; v40 = (int *)v105; v85 = 0; goto LABEL_69; } LABEL_97: v46 = v12 - 48; goto LABEL_98; } if ( (unsigned __int16)(v12 - 48) <= 9u ) goto LABEL_97; v46 = v12 - 87; if ( (unsigned __int16)(v12 - 97) <= 5u ) { LABEL_98: if ( v28 >= v93 ) goto LABEL_124; LABEL_99: v47 = v104; v87 = 1; v48 = v104[2]; v49 = v104[3]; if ( v48 >= v49 ) goto LABEL_125; goto LABEL_100; } if ( (unsigned __int16)(v12 - 65) > 5u ) goto LABEL_134; v46 = v12 - 55; if ( v28 < v93 ) goto LABEL_99; LABEL_124: v87 |= n - v46 < v8 * v93; v93 = v8 * v93 + v46; v47 = v104; ++v98; v48 = v104[2]; v49 = v104[3]; if ( v48 < v49 ) { LABEL_100: v50 = (__int16 *)(v48 + 2); v47[2] = v50; goto LABEL_101; } LABEL_125: (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); v50 = (__int16 *)v104[2]; v49 = v104[3]; LABEL_101: if ( (unsigned int)v50 >= v49 ) v51 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); else v51 = *v50; v104 = v51 == -1 ? 0 : v104; v96 = v51 == -1; v52 = v99 && v90 != 0; if ( v52 ) { v59 = (__int16 *)v90[2]; if ( (unsigned int)v59 >= v90[3] ) v60 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); else v60 = *v59; v90 = v60 == -1 ? 0 : v90; v53 = v60 == -1 && v52; } else { v53 = a4 == -1; } if ( v96 != v53 ) { if ( v104 ) { v58 = (wchar_t *)v104[2]; if ( (unsigned int)v58 >= v104[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); else v12 = *v58; v104 = v12 == 0xFFFF ? 0 : v104; } else { v12 = -1; } continue; } break; } v39 = v106; v40 = (int *)v105; v85 = 1; if ( v106 ) goto LABEL_107; LABEL_70: if ( !v103 && !v98 ) { LABEL_72: *a7 = 0; a7[1] = 0; *a6 = 4; goto LABEL_73; } LABEL_115: if ( v89 ) goto LABEL_72; if ( v87 ) { v56 = 0; v57 = 0x80000000; if ( !v86 ) { v56 = -1; v57 = 0x7FFFFFFF; } *a7 = v56; a7[1] = v57; *a6 = 4; } else { if ( v86 ) v93 = -(__int64)v93; *(_QWORD *)a7 = v93; } LABEL_73: if ( v85 ) *a6 |= 2u; if ( v40 != v107 ) operator delete(v40); return v104; } // 46CB47: variable 'v79' is possibly undefined // 46CBB4: variable 'v80' is possibly undefined // 4E95AC: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (0046CE70) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7) { _DWORD *v7; // ebx int v8; // edi bool v9; // dl char v10; // dl char v11; // si wchar_t v12; // si __int16 v13; // ax char v14; // cl unsigned int v15; // eax unsigned int v16; // edx __int16 *v17; // eax __int16 v18; // dx bool v19; // dl char v20; // dl int v21; // eax unsigned int v22; // eax unsigned int v23; // edx __int16 *v24; // eax __int16 v25; // ax bool v26; // dl char v27; // dl unsigned __int64 v28; // kr00_8 wchar_t *v29; // eax int v30; // eax unsigned int v31; // eax unsigned int v32; // edx __int16 *v33; // eax __int16 v34; // dx bool v35; // si char v36; // si size_t v37; // esi int *v38; // eax bool v40; // al wchar_t *v41; // eax __int16 *v42; // eax __int16 v43; // ax unsigned int v44; // eax unsigned int v45; // edx __int16 *v46; // eax __int16 v47; // ax bool v48; // si char v49; // si unsigned int v50; // edx wchar_t *v51; // eax __int16 *v52; // eax __int16 v53; // ax wchar_t *v54; // eax __int16 *v55; // eax __int16 v56; // dx unsigned int v57; // edx char v58; // cl __int16 *v59; // eax __int16 v60; // cx __int16 *v61; // eax __int16 v62; // ax wchar_t *v63; // eax std::locale::_Impl *v64; // eax std::locale::_Impl *v65; // edi wchar_t *v66; // eax __int16 *v67; // eax __int16 v68; // cx char v69; // cl __int16 v70; // ax __int16 v71; // ax void (__cdecl *v72)(void *); // [esp+4h] [ebp-84h] unsigned int v73; // [esp+8h] [ebp-80h] size_t N; // [esp+10h] [ebp-78h] int S; // [esp+20h] [ebp-68h] wchar_t *Sa; // [esp+20h] [ebp-68h] char v77; // [esp+24h] [ebp-64h] bool v78; // [esp+26h] [ebp-62h] char v79; // [esp+27h] [ebp-61h] __int64 v80; // [esp+28h] [ebp-60h] int v81; // [esp+30h] [ebp-58h] char v82; // [esp+30h] [ebp-58h] _DWORD *v83; // [esp+34h] [ebp-54h] char v84; // [esp+34h] [ebp-54h] int v85; // [esp+38h] [ebp-50h] char v86; // [esp+3Ch] [ebp-4Ch] int v87; // [esp+3Ch] [ebp-4Ch] char v88; // [esp+3Ch] [ebp-4Ch] int v89; // [esp+3Ch] [ebp-4Ch] char v90; // [esp+3Ch] [ebp-4Ch] size_t v91; // [esp+3Ch] [ebp-4Ch] bool v92; // [esp+40h] [ebp-48h] unsigned int v93; // [esp+40h] [ebp-48h] int *v94; // [esp+44h] [ebp-44h] bool v95; // [esp+44h] [ebp-44h] char v96; // [esp+44h] [ebp-44h] bool v97; // [esp+44h] [ebp-44h] int d; // [esp+48h] [ebp-40h] int da; // [esp+48h] [ebp-40h] UDItype db; // [esp+48h] [ebp-40h] void *v101; // [esp+58h] [ebp-30h] BYREF size_t v102; // [esp+5Ch] [ebp-2Ch] int v103[10]; // [esp+60h] [ebp-28h] BYREF v7 = a1; v83 = a3; d = std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * d); v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * d); if ( !v8 ) { v64 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v72); *((_DWORD *)v64 + 1) = 0; v65 = v64; *(_DWORD *)v64 = &off_4F65B0; *((_DWORD *)v64 + 2) = 0; *((_DWORD *)v64 + 3) = 0; *((_BYTE *)v64 + 16) = 0; *((_DWORD *)v64 + 5) = 0; *((_DWORD *)v64 + 6) = 0; *((_DWORD *)v64 + 7) = 0; *((_DWORD *)v64 + 8) = 0; *((_DWORD *)v64 + 9) = 0; *((_BYTE *)v64 + 164) = 0; std::__numpunct_cache::_M_cache((int)v64, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v65, (const std::locale::facet *)d, v73); v8 = *v94; } da = 8; v81 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v81 != 64 ) da = v81 == 8 ? 16 : 10; v95 = a2 == 0xFFFF; v9 = v95 && a1 != 0; if ( v9 ) { v61 = (__int16 *)a1[2]; if ( (unsigned int)v61 >= a1[3] ) { v62 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v9 = v95 && a1 != 0; } else { v62 = *v61; } v7 = v62 == -1 ? 0 : a1; v10 = v62 == -1 && v9; } else { v10 = a2 == 0xFFFF; } v92 = a4 == -1; if ( v92 && a3 != 0 ) { v59 = (__int16 *)a3[2]; if ( (unsigned int)v59 >= a3[3] ) { v84 = v10; v70 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v10 = v84; v60 = v70; } else { v60 = *v59; } v83 = v60 == -1 ? 0 : a3; v11 = v60 == -1 && v92 && a3 != 0; } else { v11 = a4 == -1; } if ( v11 == v10 ) { v78 = 0; v14 = *(_BYTE *)(v8 + 16); v12 = 0; v82 = 1; v85 = 0; v97 = 0; LABEL_44: v21 = da; if ( da == 16 ) goto LABEL_25; goto LABEL_45; } if ( v7 && a2 == 0xFFFF ) { v63 = (wchar_t *)v7[2]; if ( (unsigned int)v63 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v63; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = a2; } v13 = *(_WORD *)(v8 + 112); v14 = *(_BYTE *)(v8 + 16); v78 = v13 == (__int16)v12; if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) { if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) { v15 = v7[2]; v16 = v7[3]; if ( v15 >= v16 ) { (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v17 = (__int16 *)v7[2]; v16 = v7[3]; } else { v17 = (__int16 *)(v15 + 2); v7[2] = v17; } if ( v16 <= (unsigned int)v17 ) v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v18 = *v17; v7 = v18 == -1 ? 0 : v7; v96 = v18 == -1; v19 = v92 && v83 != 0; if ( v19 ) { v67 = (__int16 *)v83[2]; if ( (unsigned int)v67 >= v83[3] ) { v71 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); v19 = v92 && v83 != 0; v68 = v71; } else { v68 = *v67; } v83 = v68 == -1 ? 0 : v83; v20 = v68 == -1 && v19; } else { v20 = a4 == -1; } if ( v96 == v20 ) { v82 = 1; v14 = *(_BYTE *)(v8 + 16); v21 = da; v85 = 0; v97 = 0; if ( da == 16 ) { LABEL_25: N = 22; S = 22; goto LABEL_46; } LABEL_45: N = v21; S = v21; goto LABEL_46; } if ( v7 ) { v66 = (wchar_t *)v7[2]; if ( (unsigned int)v66 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v66; v14 = *(_BYTE *)(v8 + 16); v7 = v12 == 0xFFFF ? 0 : v7; } else { v14 = *(_BYTE *)(v8 + 16); v12 = -1; } } } else { v78 = 0; } v85 = 0; v97 = 0; while ( 1 ) { if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) { LABEL_86: v82 = 0; goto LABEL_44; } if ( *(_WORD *)(v8 + 120) != v12 ) break; v40 = !v97 || da == 10; if ( !v40 ) goto LABEL_33; v97 = v81 == 0 || da == 8; if ( !v97 ) { ++v85; v97 = v40; LABEL_37: v22 = v7[2]; v23 = v7[3]; if ( v22 < v23 ) goto LABEL_38; goto LABEL_79; } v22 = v7[2]; v23 = v7[3]; v85 = 0; da = 8; if ( v22 < v23 ) { LABEL_38: v24 = (__int16 *)(v22 + 2); v7[2] = v24; if ( v23 <= (unsigned int)v24 ) goto LABEL_80; goto LABEL_39; } LABEL_79: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v24 = (__int16 *)v7[2]; if ( v7[3] <= (unsigned int)v24 ) { LABEL_80: v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); goto LABEL_40; } LABEL_39: v25 = *v24; LABEL_40: v7 = v25 == -1 ? 0 : v7; v86 = v25 == -1; v26 = v92 && v83 != 0; if ( v26 ) { v42 = (__int16 *)v83[2]; if ( (unsigned int)v42 >= v83[3] ) { v43 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); v26 = v92 && v83 != 0; } else { v43 = *v42; } v83 = v43 == -1 ? 0 : v83; v27 = v43 == -1 && v26; } else { v27 = a4 == -1; } if ( v86 == v27 ) { v82 = 1; v14 = *(_BYTE *)(v8 + 16); goto LABEL_44; } v12 = -1; if ( v7 ) { v41 = (wchar_t *)v7[2]; if ( (unsigned int)v41 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v41; v7 = v12 == 0xFFFF ? 0 : v7; } v14 = *(_BYTE *)(v8 + 16); if ( !v97 ) goto LABEL_86; } if ( !v97 ) goto LABEL_86; LABEL_33: if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) { v82 = 0; v97 = 1; goto LABEL_44; } if ( v81 == 0 || da == 16 ) { v85 = 0; v97 = 0; da = 16; goto LABEL_37; } v82 = 0; v97 = 1; N = da; S = da; LABEL_46: v102 = 0; v101 = v103; LOBYTE(v103[0]) = 0; if ( v14 ) std::string::reserve(&v101, 0x20u); v80 = da; v28 = 0xFFFFFFFFFFFFFFFFLL / da; v77 = *(_BYTE *)(v8 + 164); if ( v77 ) { if ( v82 ) { v37 = v102; db = 0LL; v38 = (int *)v101; v77 = v82; v79 = 0; v82 = 0; LABEL_67: if ( !v37 ) goto LABEL_68; LABEL_105: v93 = v37 + 1; if ( v38 == v103 ) v50 = 15; else v50 = v103[0]; if ( v93 > v50 ) { std::string::_M_mutate((int)&v101, v37, 0, 0, 1u); v38 = (int *)v101; } *((_BYTE *)v38 + v37) = v85; v102 = v37 + 1; *((_BYTE *)v101 + v93) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) *a6 = 4; v38 = (int *)v101; if ( !v97 && !(v102 | v85) ) goto LABEL_70; goto LABEL_113; } v79 = 0; Sa = (wchar_t *)(v8 + 120); db = 0LL; while ( 2 ) { if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) { v37 = v102; v38 = (int *)v101; if ( !v85 ) { v77 = 0; v82 = *(_BYTE *)(v8 + 16); goto LABEL_67; } v91 = v102 + 1; if ( v101 == v103 ) v57 = 15; else v57 = v103[0]; if ( v91 > v57 ) { std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); v38 = (int *)v101; } v58 = v85; v85 = 0; *((_BYTE *)v38 + v37) = v58; v102 = v91; *((_BYTE *)v101 + v91) = 0; LABEL_59: v31 = v7[2]; v32 = v7[3]; if ( v31 >= v32 ) goto LABEL_135; } else { if ( v12 == *(_WORD *)(v8 + 36) ) goto LABEL_131; v29 = wmemchr(Sa, v12, N); if ( !v29 ) goto LABEL_131; v30 = (char *)v29 - (char *)Sa; v87 = v30 >> 1; if ( v30 > 30 ) v87 = (v30 >> 1) - 6; if ( v28 >= db ) { v79 |= __PAIR64__(~(v87 >> 31), ~v87) < v80 * db; ++v85; db = v87 + v80 * db; goto LABEL_59; } v32 = v7[3]; v79 = v77; v31 = v7[2]; if ( v31 >= v32 ) { LABEL_135: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v33 = (__int16 *)v7[2]; v32 = v7[3]; goto LABEL_61; } } v33 = (__int16 *)(v31 + 2); v7[2] = v33; LABEL_61: if ( (unsigned int)v33 >= v32 ) v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v34 = *v33; v7 = v34 == -1 ? 0 : v7; v88 = v34 == -1; v35 = v92 && v83 != 0; if ( v35 ) { v55 = (__int16 *)v83[2]; if ( (unsigned int)v55 >= v83[3] ) v56 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); else v56 = *v55; v83 = v56 == -1 ? 0 : v83; v36 = v56 == -1 && v35; } else { v36 = a4 == -1; } if ( v36 == v88 ) { v37 = v102; v38 = (int *)v101; goto LABEL_67; } if ( v7 ) { v54 = (wchar_t *)v7[2]; if ( (unsigned int)v54 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v54; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = -1; } continue; } } if ( v82 ) { v69 = v82; v37 = v102; v79 = 0; v82 = 0; v38 = (int *)v101; v77 = v69; db = 0LL; goto LABEL_67; } v79 = 0; db = 0LL; while ( 2 ) { if ( S > 10 ) { if ( (unsigned __int16)(v12 - 48) <= 9u ) goto LABEL_95; if ( (unsigned __int16)(v12 - 97) > 5u ) { if ( (unsigned __int16)(v12 - 65) > 5u ) goto LABEL_131; v89 = v12 - 55; goto LABEL_96; } v89 = v12 - 87; if ( v28 >= db ) goto LABEL_121; LABEL_97: v44 = v7[2]; v45 = v7[3]; v79 = 1; if ( v44 < v45 ) goto LABEL_98; LABEL_122: (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); v46 = (__int16 *)v7[2]; v45 = v7[3]; } else { if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) { LABEL_131: v37 = v102; v38 = (int *)v101; v77 = 0; goto LABEL_67; } LABEL_95: v89 = v12 - 48; LABEL_96: if ( v28 < db ) goto LABEL_97; LABEL_121: v79 |= __PAIR64__(~(v89 >> 31), ~v89) < v80 * db; db = v89 + v80 * db; v44 = v7[2]; v45 = v7[3]; ++v85; if ( v44 >= v45 ) goto LABEL_122; LABEL_98: v46 = (__int16 *)(v44 + 2); v7[2] = v46; } if ( (unsigned int)v46 >= v45 ) v47 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v47 = *v46; v7 = v47 == -1 ? 0 : v7; v90 = v47 == -1; v48 = v92 && v83 != 0; if ( v48 ) { v52 = (__int16 *)v83[2]; if ( (unsigned int)v52 >= v83[3] ) v53 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); else v53 = *v52; v83 = v53 == -1 ? 0 : v83; v49 = v53 == -1 && v48; } else { v49 = a4 == -1; } if ( v90 != v49 ) { if ( v7 ) { v51 = (wchar_t *)v7[2]; if ( (unsigned int)v51 >= v7[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v12 = *v51; v7 = v12 == 0xFFFF ? 0 : v7; } else { v12 = -1; } continue; } break; } v37 = v102; v38 = (int *)v101; v77 = 1; if ( v102 ) goto LABEL_105; LABEL_68: if ( !v97 && !v85 ) { LABEL_70: *a7 = 0; a7[1] = 0; *a6 = 4; goto LABEL_71; } LABEL_113: if ( v82 ) goto LABEL_70; if ( v79 ) { *a7 = -1; a7[1] = -1; *a6 = 4; } else { if ( v78 ) db = -(__int64)db; *(_QWORD *)a7 = db; } LABEL_71: if ( v77 ) *a6 |= 2u; if ( v38 != v103 ) operator delete(v38); return v7; } // 46D917: variable 'v72' is possibly undefined // 46D98A: variable 'v73' is possibly undefined // 4E95AC: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (0046DC30) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int *a6) { int v6; // edi int v7; // ebx int v8; // esi unsigned int v9; // edi char v10; // bl char v11; // dl char v12; // al char v13; // dl wchar_t v14; // bx __int16 v15; // ax char v16; // cl unsigned int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax __int16 *v20; // eax __int16 v21; // ax char v22; // al char v23; // dl int v24; // edx int v25; // edx _DWORD *v26; // ecx unsigned int v27; // eax __int16 *v28; // eax __int16 v29; // ax char v30; // dl char v31; // bl unsigned int *v32; // ecx int v33; // ebx volatile signed __int32 *v34; // ecx __int64 result; // rax bool v36; // al __int16 *v37; // eax __int16 v38; // cx _WORD *v39; // eax unsigned int *v40; // edi unsigned int *v41; // ecx char v42; // al _WORD *v43; // eax __int16 v44; // ax _WORD *v45; // eax wchar_t *v46; // eax int v47; // eax int v48; // edx _DWORD *v49; // ecx unsigned int v50; // eax __int16 *v51; // eax __int16 v52; // ax char v53; // al char v54; // bl _WORD *v55; // eax _WORD *v56; // eax __int16 v57; // dx __int16 v58; // ax __int16 *v59; // eax __int16 v60; // cx __int16 *v61; // eax __int16 v62; // ax _WORD *v63; // eax wchar_t v64; // ax std::locale::_Impl *v65; // eax std::locale::_Impl *v66; // esi char v67; // al __int16 v68; // ax void (__cdecl *v69)(void *); // [esp+4h] [ebp-64h] unsigned int v70; // [esp+8h] [ebp-60h] wchar_t *S; // [esp+18h] [ebp-50h] size_t N; // [esp+1Ch] [ebp-4Ch] int v73; // [esp+20h] [ebp-48h] std::string *v74; // [esp+20h] [ebp-48h] std::string *v75; // [esp+20h] [ebp-48h] char v76; // [esp+20h] [ebp-48h] unsigned int v77; // [esp+24h] [ebp-44h] bool v78; // [esp+29h] [ebp-3Fh] char v79; // [esp+2Ah] [ebp-3Eh] char v80; // [esp+2Bh] [ebp-3Dh] char v81; // [esp+2Bh] [ebp-3Dh] int v82; // [esp+2Ch] [ebp-3Ch] char v83; // [esp+2Ch] [ebp-3Ch] char v84; // [esp+2Ch] [ebp-3Ch] int v85; // [esp+30h] [ebp-38h] char v86; // [esp+34h] [ebp-34h] unsigned int v87; // [esp+34h] [ebp-34h] int *v88; // [esp+38h] [ebp-30h] bool v89; // [esp+38h] [ebp-30h] __int64 v90; // [esp+38h] [ebp-30h] char v91; // [esp+38h] [ebp-30h] char v92; // [esp+38h] [ebp-30h] char v93; // [esp+4Bh] [ebp-1Dh] BYREF unsigned int *v94[7]; // [esp+4Ch] [ebp-1Ch] BYREF v6 = a4; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); v88 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); if ( !v8 ) { v65 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v69); *((_DWORD *)v65 + 1) = 0; v66 = v65; *(_DWORD *)v65 = &off_4F65B0; *((_DWORD *)v65 + 2) = 0; *((_DWORD *)v65 + 3) = 0; *((_BYTE *)v65 + 16) = 0; *((_DWORD *)v65 + 5) = 0; *((_DWORD *)v65 + 6) = 0; *((_DWORD *)v65 + 7) = 0; *((_DWORD *)v65 + 8) = 0; *((_DWORD *)v65 + 9) = 0; *((_BYTE *)v65 + 164) = 0; std::__numpunct_cache::_M_cache((int)v65, v6 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v66, (const std::locale::facet *)v7, v70); v8 = *v88; } v82 = *(_DWORD *)(v6 + 12) & 0x4A; v9 = 8; if ( v82 != 64 ) v9 = v82 == 8 ? 16 : 10; v10 = WORD2(a1) == 0xFFFF; v11 = v10 & ((_DWORD)a1 != 0); if ( v11 ) { v61 = *(__int16 **)(a1 + 8); if ( (unsigned int)v61 >= *(_DWORD *)(a1 + 12) ) { v92 = v10 & ((_DWORD)a1 != 0); v62 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v11 = v92; } else { v62 = *v61; } v10 = 0; if ( v62 == -1 ) { LODWORD(a1) = 0; v10 = v11; } } v12 = a3 == -1; v13 = v12 & (a2 != 0); if ( v13 ) { v59 = (__int16 *)a2[2]; if ( (unsigned int)v59 >= a2[3] ) { v91 = v13; v68 = (*(int (**)(void))(*a2 + 36))(); v13 = v91; v60 = v68; } else { v60 = *v59; } v12 = 0; if ( v60 == -1 ) { a2 = 0; v12 = v13; } } if ( v10 == v12 ) { v78 = 0; v16 = *(_BYTE *)(v8 + 16); v14 = 0; v80 = 1; v85 = 0; v89 = 0; LABEL_40: if ( v9 == 16 ) { LABEL_18: N = 22; v73 = 22; v94[0] = (unsigned int *)&unk_4E93FC; if ( !v16 ) goto LABEL_43; goto LABEL_19; } LABEL_41: N = v9; v73 = v9; goto LABEL_42; } v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v63 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v63 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v63; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } v15 = *(_WORD *)(v8 + 112); v16 = *(_BYTE *)(v8 + 16); v78 = v15 == (__int16)v14; if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) { if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) { v17 = *(_DWORD *)(a1 + 8); if ( v17 >= *(_DWORD *)(a1 + 12) ) std::wstreambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v17 + 2; WORD2(a1) = -1; v80 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v80 ) { v85 = 0; v16 = *(_BYTE *)(v8 + 16); v89 = 0; if ( v9 == 16 ) goto LABEL_18; goto LABEL_41; } v64 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); v16 = *(_BYTE *)(v8 + 16); v14 = v64; } } else { v78 = 0; } v85 = 0; v89 = 0; while ( 1 ) { if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) { LABEL_76: v80 = 0; goto LABEL_40; } if ( *(_WORD *)(v8 + 120) != v14 ) break; v36 = !v89 || v9 == 10; if ( !v36 ) goto LABEL_27; v89 = v82 == 0 || v9 == 8; if ( !v89 ) { ++v85; v89 = v36; LABEL_31: v18 = (_DWORD *)a1; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) goto LABEL_32; goto LABEL_71; } v18 = (_DWORD *)a1; v85 = 0; v9 = 8; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) { LABEL_32: v18[2] = v19 + 2; WORD2(a1) = -1; LABEL_33: v20 = (__int16 *)v18[2]; if ( (unsigned int)v20 >= v18[3] ) v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); else v21 = *v20; v86 = 0; if ( v21 == -1 ) { LODWORD(a1) = 0; v86 = 1; } goto LABEL_37; } LABEL_71: (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); v18 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_33; v86 = 1; LABEL_37: v22 = a3 == -1; v23 = v22 & (a2 != 0); if ( v23 ) { v37 = (__int16 *)a2[2]; if ( (unsigned int)v37 >= a2[3] ) { v81 = v23; v58 = (*(int (**)(void))(*a2 + 36))(); v23 = v81; v38 = v58; } else { v38 = *v37; } v22 = 0; if ( v38 == -1 ) { a2 = 0; v22 = v23; } } if ( v22 == v86 ) { v80 = 1; v16 = *(_BYTE *)(v8 + 16); goto LABEL_40; } v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v45 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v45; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } v16 = *(_BYTE *)(v8 + 16); if ( !v89 ) goto LABEL_76; } if ( !v89 ) goto LABEL_76; LABEL_27: if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) { v80 = 0; v89 = 1; goto LABEL_40; } if ( v9 == 16 || v82 == 0 ) { v85 = 0; v9 = 16; v89 = 0; goto LABEL_31; } v80 = 0; N = v9; v73 = v9; v89 = 1; LABEL_42: v94[0] = (unsigned int *)&unk_4E93FC; if ( v16 ) LABEL_19: std::string::reserve(v94, (std::string *)0x20, (unsigned int)v69); LABEL_43: v77 = 0xFFFFFFFF / v9; v83 = *(_BYTE *)(v8 + 164); if ( v83 ) { if ( v80 ) { v87 = 0; v79 = 0; v83 = v80; v80 = 0; LABEL_60: v32 = v94[0]; v33 = *(v94[0] - 3); if ( v33 ) goto LABEL_94; LABEL_61: v34 = (volatile signed __int32 *)(v32 - 3); if ( v85 || v89 ) goto LABEL_103; goto LABEL_63; } v79 = 0; S = (wchar_t *)(v8 + 120); v87 = 0; while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) { if ( v14 == *(_WORD *)(v8 + 36) ) goto LABEL_93; v46 = wmemchr(S, v14, N); if ( !v46 ) goto LABEL_93; v47 = (char *)v46 - (char *)S; v48 = v47 >> 1; if ( v47 > 30 ) v48 -= 6; if ( v77 >= v87 ) { v79 |= ~v48 < v9 * v87; ++v85; v87 = v48 + v9 * v87; goto LABEL_129; } v49 = (_DWORD *)a1; v79 = v83; v50 = *(_DWORD *)(a1 + 8); if ( v50 < *(_DWORD *)(a1 + 12) ) { LABEL_130: v49[2] = v50 + 2; WORD2(a1) = -1; goto LABEL_131; } LABEL_144: (*(void (__fastcall **)(_DWORD *))(*v49 + 40))(v49); v49 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v76 = v83; goto LABEL_135; } LABEL_131: v51 = (__int16 *)v49[2]; if ( (unsigned int)v51 >= v49[3] ) v52 = (*(int (__fastcall **)(_DWORD *))(*v49 + 36))(v49); else v52 = *v51; v76 = 0; if ( v52 == -1 ) { LODWORD(a1) = 0; v76 = v83; } LABEL_135: v53 = a3 == -1; v54 = v53 & (a2 != 0); if ( v54 ) { v56 = (_WORD *)a2[2]; v57 = (unsigned int)v56 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v56; v53 = 0; if ( v57 == -1 ) { a2 = 0; v53 = v54; } } if ( v53 == v76 ) goto LABEL_60; v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v55 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v55 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v55; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } } if ( !v85 ) { v83 = 0; v80 = *(_BYTE *)(v8 + 16); goto LABEL_60; } std::string::push_back(v94, (std::string *)(char)v85, (char)v69); v85 = 0; LABEL_129: v49 = (_DWORD *)a1; v50 = *(_DWORD *)(a1 + 8); if ( v50 < *(_DWORD *)(a1 + 12) ) goto LABEL_130; goto LABEL_144; } v79 = 0; if ( v80 ) { v67 = v80; v87 = 0; v80 = 0; v83 = v67; goto LABEL_60; } v87 = 0; LABEL_46: v24 = v14; if ( v73 > 10 ) { if ( (unsigned __int16)(v14 - 48) <= 9u ) goto LABEL_49; while ( (unsigned __int16)(v14 - 97) <= 5u ) { v25 = v24 - 87; if ( v77 < v87 ) goto LABEL_51; LABEL_84: v79 |= ~v25 < v9 * v87; v26 = (_DWORD *)a1; v87 = v25 + v9 * v87; ++v85; v27 = *(_DWORD *)(a1 + 8); if ( v27 < *(_DWORD *)(a1 + 12) ) goto LABEL_52; LABEL_85: (*(void (__fastcall **)(_DWORD *, int))(*v26 + 40))(v26, v25); v26 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_53; v84 = 1; LABEL_57: v30 = a3 == -1; v31 = v30 & (a2 != 0); if ( v31 ) { v43 = (_WORD *)a2[2]; v44 = (unsigned int)v43 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v43; v30 = 0; if ( v44 == -1 ) { a2 = 0; v30 = v31; } } if ( v30 == v84 ) { v83 = 1; goto LABEL_60; } v14 = WORD2(a1); if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) goto LABEL_46; v39 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v39; if ( v14 != 0xFFFF ) goto LABEL_46; LODWORD(a1) = 0; if ( v73 <= 10 ) goto LABEL_93; v24 = 0xFFFF; } if ( (unsigned __int16)(v14 - 65) <= 5u ) { v25 = v24 - 55; goto LABEL_50; } } else if ( v14 > 0x2Fu && (unsigned __int16)(v73 + 48) > v14 ) { LABEL_49: v25 = v14 - 48; LABEL_50: if ( v77 >= v87 ) goto LABEL_84; LABEL_51: v26 = (_DWORD *)a1; v79 = 1; v27 = *(_DWORD *)(a1 + 8); if ( v27 >= *(_DWORD *)(a1 + 12) ) goto LABEL_85; LABEL_52: v26[2] = v27 + 2; WORD2(a1) = -1; LABEL_53: v28 = (__int16 *)v26[2]; if ( (unsigned int)v28 >= v26[3] ) v29 = (*(int (__fastcall **)(_DWORD *, int))(*v26 + 36))(v26, v25); else v29 = *v28; v84 = 0; if ( v29 == -1 ) { LODWORD(a1) = 0; v84 = 1; } goto LABEL_57; } LABEL_93: v32 = v94[0]; v83 = 0; v33 = *(v94[0] - 3); if ( !v33 ) goto LABEL_61; LABEL_94: v74 = (std::string *)(v33 + 1); if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) std::string::reserve(v94, v74, (unsigned int)v69); *((_BYTE *)v94[0] + *(v94[0] - 3)) = v85; v40 = v94[0]; v41 = v94[0] - 3; if ( (_UNKNOWN *)v94[0] != &unk_4E93FC ) { *(v94[0] - 1) = 0; *(v40 - 3) = (unsigned int)v74; *((_BYTE *)v41 + v33 + 13) = 0; v40 = v94[0]; v41 = v94[0] - 3; } v75 = (std::string *)v41; v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v94); v34 = (volatile signed __int32 *)v75; if ( !v42 ) *a5 = 4; if ( !v85 && !v89 && !*(v40 - 3) ) goto LABEL_63; LABEL_103: if ( v80 ) { LABEL_63: *a6 = 0; *a5 = 4; goto LABEL_64; } if ( v79 ) { *a6 = -1; *a5 = 4; } else { if ( v78 ) v87 = -v87; *a6 = v87; } LABEL_64: if ( v83 ) *a5 |= 2u; result = a1; if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) { v90 = a1; std::string::_Rep::_M_dispose(v34, (int)&v93); return v90; } return result; } // 46E607: variable 'v69' is possibly undefined // 46E671: variable 'v70' is possibly undefined // 46E6C5: variable 'v25' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (0046E830) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6) { int v6; // edi int v7; // ebx int v8; // esi unsigned int v9; // edi char v10; // bl char v11; // dl char v12; // al char v13; // dl wchar_t v14; // bx __int16 v15; // ax char v16; // cl unsigned int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax __int16 *v20; // eax __int16 v21; // ax char v22; // al char v23; // dl int v24; // edx int v25; // edx _DWORD *v26; // ecx unsigned int v27; // eax __int16 *v28; // eax __int16 v29; // ax char v30; // dl char v31; // bl unsigned int *v32; // ecx int v33; // ebx volatile signed __int32 *v34; // ecx __int64 result; // rax bool v36; // al __int16 *v37; // eax __int16 v38; // cx _WORD *v39; // eax unsigned int *v40; // edi unsigned int *v41; // ecx char v42; // al int v43; // eax _WORD *v44; // eax __int16 v45; // ax _WORD *v46; // eax wchar_t *v47; // eax int v48; // eax int v49; // edx _DWORD *v50; // ecx unsigned int v51; // eax __int16 *v52; // eax __int16 v53; // ax char v54; // al char v55; // bl _WORD *v56; // eax _WORD *v57; // eax __int16 v58; // dx __int16 v59; // ax __int16 *v60; // eax __int16 v61; // cx __int16 *v62; // eax __int16 v63; // ax _WORD *v64; // eax wchar_t v65; // ax std::locale::_Impl *v66; // eax std::locale::_Impl *v67; // esi char v68; // al __int16 v69; // ax void (__cdecl *v70)(void *); // [esp+4h] [ebp-64h] unsigned int v71; // [esp+8h] [ebp-60h] wchar_t *S; // [esp+10h] [ebp-58h] bool v73; // [esp+14h] [ebp-54h] size_t N; // [esp+18h] [ebp-50h] unsigned int v75; // [esp+1Ch] [ebp-4Ch] int v76; // [esp+20h] [ebp-48h] std::string *v77; // [esp+20h] [ebp-48h] std::string *v78; // [esp+20h] [ebp-48h] char v79; // [esp+20h] [ebp-48h] unsigned int v80; // [esp+24h] [ebp-44h] char v81; // [esp+2Ah] [ebp-3Eh] char v82; // [esp+2Bh] [ebp-3Dh] char v83; // [esp+2Bh] [ebp-3Dh] int v84; // [esp+2Ch] [ebp-3Ch] char v85; // [esp+2Ch] [ebp-3Ch] char v86; // [esp+2Ch] [ebp-3Ch] int v87; // [esp+30h] [ebp-38h] char v88; // [esp+34h] [ebp-34h] unsigned int v89; // [esp+34h] [ebp-34h] int *v90; // [esp+38h] [ebp-30h] bool v91; // [esp+38h] [ebp-30h] __int64 v92; // [esp+38h] [ebp-30h] char v93; // [esp+38h] [ebp-30h] char v94; // [esp+38h] [ebp-30h] char v95; // [esp+4Bh] [ebp-1Dh] BYREF unsigned int *v96[7]; // [esp+4Ch] [ebp-1Ch] BYREF v6 = a4; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); v90 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); if ( !v8 ) { v66 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v70); *((_DWORD *)v66 + 1) = 0; v67 = v66; *(_DWORD *)v66 = &off_4F65B0; *((_DWORD *)v66 + 2) = 0; *((_DWORD *)v66 + 3) = 0; *((_BYTE *)v66 + 16) = 0; *((_DWORD *)v66 + 5) = 0; *((_DWORD *)v66 + 6) = 0; *((_DWORD *)v66 + 7) = 0; *((_DWORD *)v66 + 8) = 0; *((_DWORD *)v66 + 9) = 0; *((_BYTE *)v66 + 164) = 0; std::__numpunct_cache::_M_cache((int)v66, v6 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v67, (const std::locale::facet *)v7, v71); v8 = *v90; } v84 = *(_DWORD *)(v6 + 12) & 0x4A; v9 = 8; if ( v84 != 64 ) v9 = v84 == 8 ? 16 : 10; v10 = WORD2(a1) == 0xFFFF; v11 = v10 & ((_DWORD)a1 != 0); if ( v11 ) { v62 = *(__int16 **)(a1 + 8); if ( (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ) { v94 = v10 & ((_DWORD)a1 != 0); v63 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v11 = v94; } else { v63 = *v62; } v10 = 0; if ( v63 == -1 ) { LODWORD(a1) = 0; v10 = v11; } } v12 = a3 == -1; v13 = v12 & (a2 != 0); if ( v13 ) { v60 = (__int16 *)a2[2]; if ( (unsigned int)v60 >= a2[3] ) { v93 = v13; v69 = (*(int (**)(void))(*a2 + 36))(); v13 = v93; v61 = v69; } else { v61 = *v60; } v12 = 0; if ( v61 == -1 ) { a2 = 0; v12 = v13; } } if ( v12 == v10 ) { v73 = 0; v16 = *(_BYTE *)(v8 + 16); v14 = 0; v82 = 1; v87 = 0; v91 = 0; LABEL_40: if ( v9 == 16 ) { LABEL_18: N = 22; v76 = 22; v96[0] = (unsigned int *)&unk_4E93FC; if ( !v16 ) goto LABEL_43; goto LABEL_19; } LABEL_41: N = v9; v76 = v9; goto LABEL_42; } v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v64 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v64 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v64; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } v15 = *(_WORD *)(v8 + 112); v16 = *(_BYTE *)(v8 + 16); v73 = v15 == (__int16)v14; if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) { if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) { v17 = *(_DWORD *)(a1 + 8); if ( v17 >= *(_DWORD *)(a1 + 12) ) std::wstreambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v17 + 2; WORD2(a1) = -1; v82 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v82 ) { v87 = 0; v16 = *(_BYTE *)(v8 + 16); v91 = 0; if ( v9 == 16 ) goto LABEL_18; goto LABEL_41; } v65 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); v16 = *(_BYTE *)(v8 + 16); v14 = v65; } } else { v73 = 0; } v87 = 0; v91 = 0; while ( 1 ) { if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) { LABEL_76: v82 = 0; goto LABEL_40; } if ( *(_WORD *)(v8 + 120) != v14 ) break; v36 = !v91 || v9 == 10; if ( !v36 ) goto LABEL_27; v91 = v84 == 0 || v9 == 8; if ( !v91 ) { ++v87; v91 = v36; LABEL_31: v18 = (_DWORD *)a1; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) goto LABEL_32; goto LABEL_71; } v18 = (_DWORD *)a1; v87 = 0; v9 = 8; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) { LABEL_32: v18[2] = v19 + 2; WORD2(a1) = -1; LABEL_33: v20 = (__int16 *)v18[2]; if ( (unsigned int)v20 >= v18[3] ) v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); else v21 = *v20; v88 = 0; if ( v21 == -1 ) { LODWORD(a1) = 0; v88 = 1; } goto LABEL_37; } LABEL_71: (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); v18 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_33; v88 = 1; LABEL_37: v22 = a3 == -1; v23 = v22 & (a2 != 0); if ( v23 ) { v37 = (__int16 *)a2[2]; if ( (unsigned int)v37 >= a2[3] ) { v83 = v23; v59 = (*(int (**)(void))(*a2 + 36))(); v23 = v83; v38 = v59; } else { v38 = *v37; } v22 = 0; if ( v38 == -1 ) { a2 = 0; v22 = v23; } } if ( v22 == v88 ) { v82 = 1; v16 = *(_BYTE *)(v8 + 16); goto LABEL_40; } v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v46 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v46; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } v16 = *(_BYTE *)(v8 + 16); if ( !v91 ) goto LABEL_76; } if ( !v91 ) goto LABEL_76; LABEL_27: if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) { v82 = 0; v91 = 1; goto LABEL_40; } if ( v9 == 16 || v84 == 0 ) { v87 = 0; v9 = 16; v91 = 0; goto LABEL_31; } v82 = 0; N = v9; v76 = v9; v91 = 1; LABEL_42: v96[0] = (unsigned int *)&unk_4E93FC; if ( v16 ) LABEL_19: std::string::reserve(v96, (std::string *)0x20, (unsigned int)v70); LABEL_43: v75 = v73 + 0x7FFFFFFF; v80 = v75 / v9; v85 = *(_BYTE *)(v8 + 164); if ( v85 ) { if ( v82 ) { v89 = 0; v81 = 0; v85 = v82; v82 = 0; LABEL_60: v32 = v96[0]; v33 = *(v96[0] - 3); if ( v33 ) goto LABEL_94; LABEL_61: v34 = (volatile signed __int32 *)(v32 - 3); if ( v87 || v91 ) goto LABEL_103; goto LABEL_63; } v81 = 0; S = (wchar_t *)(v8 + 120); v89 = 0; while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) { if ( v14 == *(_WORD *)(v8 + 36) ) goto LABEL_93; v47 = wmemchr(S, v14, N); if ( !v47 ) goto LABEL_93; v48 = (char *)v47 - (char *)S; v49 = v48 >> 1; if ( v48 > 30 ) v49 -= 6; if ( v80 >= v89 ) { v81 |= v75 - v49 < v9 * v89; ++v87; v89 = v49 + v9 * v89; goto LABEL_129; } v50 = (_DWORD *)a1; v81 = v85; v51 = *(_DWORD *)(a1 + 8); if ( v51 < *(_DWORD *)(a1 + 12) ) { LABEL_130: v50[2] = v51 + 2; WORD2(a1) = -1; goto LABEL_131; } LABEL_144: (*(void (__fastcall **)(_DWORD *))(*v50 + 40))(v50); v50 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v79 = v85; goto LABEL_135; } LABEL_131: v52 = (__int16 *)v50[2]; if ( (unsigned int)v52 >= v50[3] ) v53 = (*(int (__fastcall **)(_DWORD *))(*v50 + 36))(v50); else v53 = *v52; v79 = 0; if ( v53 == -1 ) { LODWORD(a1) = 0; v79 = v85; } LABEL_135: v54 = a3 == -1; v55 = v54 & (a2 != 0); if ( v55 ) { v57 = (_WORD *)a2[2]; v58 = (unsigned int)v57 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v57; v54 = 0; if ( v58 == -1 ) { a2 = 0; v54 = v55; } } if ( v79 == v54 ) goto LABEL_60; v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v56 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v56; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } } if ( !v87 ) { v85 = 0; v82 = *(_BYTE *)(v8 + 16); goto LABEL_60; } std::string::push_back(v96, (std::string *)(char)v87, (char)v70); v87 = 0; LABEL_129: v50 = (_DWORD *)a1; v51 = *(_DWORD *)(a1 + 8); if ( v51 < *(_DWORD *)(a1 + 12) ) goto LABEL_130; goto LABEL_144; } v81 = 0; if ( v82 ) { v68 = v82; v89 = 0; v82 = 0; v85 = v68; goto LABEL_60; } v89 = 0; LABEL_46: v24 = v14; if ( v76 > 10 ) { if ( (unsigned __int16)(v14 - 48) <= 9u ) goto LABEL_49; while ( (unsigned __int16)(v14 - 97) <= 5u ) { v25 = v24 - 87; if ( v80 < v89 ) goto LABEL_51; LABEL_84: v81 |= v75 - v25 < v9 * v89; v26 = (_DWORD *)a1; v89 = v25 + v9 * v89; ++v87; v27 = *(_DWORD *)(a1 + 8); if ( v27 < *(_DWORD *)(a1 + 12) ) goto LABEL_52; LABEL_85: (*(void (__fastcall **)(_DWORD *, int))(*v26 + 40))(v26, v25); v26 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_53; v86 = 1; LABEL_57: v30 = a3 == -1; v31 = v30 & (a2 != 0); if ( v31 ) { v44 = (_WORD *)a2[2]; v45 = (unsigned int)v44 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v44; v30 = 0; if ( v45 == -1 ) { a2 = 0; v30 = v31; } } if ( v30 == v86 ) { v85 = 1; goto LABEL_60; } v14 = WORD2(a1); if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) goto LABEL_46; v39 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v39; if ( v14 != 0xFFFF ) goto LABEL_46; LODWORD(a1) = 0; if ( v76 <= 10 ) goto LABEL_93; v24 = 0xFFFF; } if ( (unsigned __int16)(v14 - 65) <= 5u ) { v25 = v24 - 55; goto LABEL_50; } } else if ( v14 > 0x2Fu && (unsigned __int16)(v76 + 48) > v14 ) { LABEL_49: v25 = v14 - 48; LABEL_50: if ( v80 >= v89 ) goto LABEL_84; LABEL_51: v26 = (_DWORD *)a1; v81 = 1; v27 = *(_DWORD *)(a1 + 8); if ( v27 >= *(_DWORD *)(a1 + 12) ) goto LABEL_85; LABEL_52: v26[2] = v27 + 2; WORD2(a1) = -1; LABEL_53: v28 = (__int16 *)v26[2]; if ( (unsigned int)v28 >= v26[3] ) v29 = (*(int (__fastcall **)(_DWORD *, int))(*v26 + 36))(v26, v25); else v29 = *v28; v86 = 0; if ( v29 == -1 ) { LODWORD(a1) = 0; v86 = 1; } goto LABEL_57; } LABEL_93: v32 = v96[0]; v85 = 0; v33 = *(v96[0] - 3); if ( !v33 ) goto LABEL_61; LABEL_94: v77 = (std::string *)(v33 + 1); if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) std::string::reserve(v96, v77, (unsigned int)v70); *((_BYTE *)v96[0] + *(v96[0] - 3)) = v87; v40 = v96[0]; v41 = v96[0] - 3; if ( (_UNKNOWN *)v96[0] != &unk_4E93FC ) { *(v96[0] - 1) = 0; *(v40 - 3) = (unsigned int)v77; *((_BYTE *)v41 + v33 + 13) = 0; v40 = v96[0]; v41 = v96[0] - 3; } v78 = (std::string *)v41; v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v96); v34 = (volatile signed __int32 *)v78; if ( !v42 ) *a5 = 4; if ( !v87 && !v91 && !*(v40 - 3) ) goto LABEL_63; LABEL_103: if ( v82 ) { LABEL_63: *a6 = 0; *a5 = 4; goto LABEL_64; } if ( v81 ) { *a6 = v73 + 0x7FFFFFFF; *a5 = 4; } else { v43 = v89; if ( v73 ) v43 = -v89; *a6 = v43; } LABEL_64: if ( v85 ) *a5 |= 2u; result = a1; if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) { v92 = a1; std::string::_Rep::_M_dispose(v34, (int)&v95); return v92; } return result; } // 46F207: variable 'v70' is possibly undefined // 46F271: variable 'v71' is possibly undefined // 46F2C5: variable 'v25' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (0046F430) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int *a6) { int v6; // edi int v7; // ebx int v8; // esi unsigned int v9; // edi char v10; // bl char v11; // dl char v12; // al char v13; // dl wchar_t v14; // bx __int16 v15; // ax char v16; // cl unsigned int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax __int16 *v20; // eax __int16 v21; // ax char v22; // al char v23; // dl int v24; // edx int v25; // edx _DWORD *v26; // ecx unsigned int v27; // eax __int16 *v28; // eax __int16 v29; // ax char v30; // dl char v31; // bl unsigned int *v32; // ecx int v33; // ebx volatile signed __int32 *v34; // ecx __int64 result; // rax bool v36; // al __int16 *v37; // eax __int16 v38; // cx _WORD *v39; // eax unsigned int *v40; // edi unsigned int *v41; // ecx char v42; // al _WORD *v43; // eax __int16 v44; // ax _WORD *v45; // eax wchar_t *v46; // eax int v47; // eax int v48; // edx _DWORD *v49; // ecx unsigned int v50; // eax __int16 *v51; // eax __int16 v52; // ax char v53; // al char v54; // bl _WORD *v55; // eax _WORD *v56; // eax __int16 v57; // dx __int16 v58; // ax __int16 *v59; // eax __int16 v60; // cx __int16 *v61; // eax __int16 v62; // ax _WORD *v63; // eax wchar_t v64; // ax std::locale::_Impl *v65; // eax std::locale::_Impl *v66; // esi char v67; // al __int16 v68; // ax void (__cdecl *v69)(void *); // [esp+4h] [ebp-64h] unsigned int v70; // [esp+8h] [ebp-60h] wchar_t *S; // [esp+18h] [ebp-50h] size_t N; // [esp+1Ch] [ebp-4Ch] int v73; // [esp+20h] [ebp-48h] std::string *v74; // [esp+20h] [ebp-48h] std::string *v75; // [esp+20h] [ebp-48h] char v76; // [esp+20h] [ebp-48h] unsigned int v77; // [esp+24h] [ebp-44h] bool v78; // [esp+29h] [ebp-3Fh] char v79; // [esp+2Ah] [ebp-3Eh] char v80; // [esp+2Bh] [ebp-3Dh] char v81; // [esp+2Bh] [ebp-3Dh] int v82; // [esp+2Ch] [ebp-3Ch] char v83; // [esp+2Ch] [ebp-3Ch] char v84; // [esp+2Ch] [ebp-3Ch] int v85; // [esp+30h] [ebp-38h] char v86; // [esp+34h] [ebp-34h] unsigned int v87; // [esp+34h] [ebp-34h] int *v88; // [esp+38h] [ebp-30h] bool v89; // [esp+38h] [ebp-30h] __int64 v90; // [esp+38h] [ebp-30h] char v91; // [esp+38h] [ebp-30h] char v92; // [esp+38h] [ebp-30h] char v93; // [esp+4Bh] [ebp-1Dh] BYREF unsigned int *v94[7]; // [esp+4Ch] [ebp-1Ch] BYREF v6 = a4; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); v88 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); if ( !v8 ) { v65 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v69); *((_DWORD *)v65 + 1) = 0; v66 = v65; *(_DWORD *)v65 = &off_4F65B0; *((_DWORD *)v65 + 2) = 0; *((_DWORD *)v65 + 3) = 0; *((_BYTE *)v65 + 16) = 0; *((_DWORD *)v65 + 5) = 0; *((_DWORD *)v65 + 6) = 0; *((_DWORD *)v65 + 7) = 0; *((_DWORD *)v65 + 8) = 0; *((_DWORD *)v65 + 9) = 0; *((_BYTE *)v65 + 164) = 0; std::__numpunct_cache::_M_cache((int)v65, v6 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v66, (const std::locale::facet *)v7, v70); v8 = *v88; } v82 = *(_DWORD *)(v6 + 12) & 0x4A; v9 = 8; if ( v82 != 64 ) v9 = v82 == 8 ? 16 : 10; v10 = WORD2(a1) == 0xFFFF; v11 = v10 & ((_DWORD)a1 != 0); if ( v11 ) { v61 = *(__int16 **)(a1 + 8); if ( (unsigned int)v61 >= *(_DWORD *)(a1 + 12) ) { v92 = v10 & ((_DWORD)a1 != 0); v62 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v11 = v92; } else { v62 = *v61; } v10 = 0; if ( v62 == -1 ) { LODWORD(a1) = 0; v10 = v11; } } v12 = a3 == -1; v13 = v12 & (a2 != 0); if ( v13 ) { v59 = (__int16 *)a2[2]; if ( (unsigned int)v59 >= a2[3] ) { v91 = v13; v68 = (*(int (**)(void))(*a2 + 36))(); v13 = v91; v60 = v68; } else { v60 = *v59; } v12 = 0; if ( v60 == -1 ) { a2 = 0; v12 = v13; } } if ( v10 == v12 ) { v78 = 0; v16 = *(_BYTE *)(v8 + 16); v14 = 0; v80 = 1; v85 = 0; v89 = 0; LABEL_40: if ( v9 == 16 ) { LABEL_18: N = 22; v73 = 22; v94[0] = (unsigned int *)&unk_4E93FC; if ( !v16 ) goto LABEL_43; goto LABEL_19; } LABEL_41: N = v9; v73 = v9; goto LABEL_42; } v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v63 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v63 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v63; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } v15 = *(_WORD *)(v8 + 112); v16 = *(_BYTE *)(v8 + 16); v78 = v15 == (__int16)v14; if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) { if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) { v17 = *(_DWORD *)(a1 + 8); if ( v17 >= *(_DWORD *)(a1 + 12) ) std::wstreambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v17 + 2; WORD2(a1) = -1; v80 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v80 ) { v85 = 0; v16 = *(_BYTE *)(v8 + 16); v89 = 0; if ( v9 == 16 ) goto LABEL_18; goto LABEL_41; } v64 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); v16 = *(_BYTE *)(v8 + 16); v14 = v64; } } else { v78 = 0; } v85 = 0; v89 = 0; while ( 1 ) { if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) { LABEL_76: v80 = 0; goto LABEL_40; } if ( *(_WORD *)(v8 + 120) != v14 ) break; v36 = !v89 || v9 == 10; if ( !v36 ) goto LABEL_27; v89 = v82 == 0 || v9 == 8; if ( !v89 ) { ++v85; v89 = v36; LABEL_31: v18 = (_DWORD *)a1; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) goto LABEL_32; goto LABEL_71; } v18 = (_DWORD *)a1; v85 = 0; v9 = 8; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) { LABEL_32: v18[2] = v19 + 2; WORD2(a1) = -1; LABEL_33: v20 = (__int16 *)v18[2]; if ( (unsigned int)v20 >= v18[3] ) v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); else v21 = *v20; v86 = 0; if ( v21 == -1 ) { LODWORD(a1) = 0; v86 = 1; } goto LABEL_37; } LABEL_71: (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); v18 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_33; v86 = 1; LABEL_37: v22 = a3 == -1; v23 = v22 & (a2 != 0); if ( v23 ) { v37 = (__int16 *)a2[2]; if ( (unsigned int)v37 >= a2[3] ) { v81 = v23; v58 = (*(int (**)(void))(*a2 + 36))(); v23 = v81; v38 = v58; } else { v38 = *v37; } v22 = 0; if ( v38 == -1 ) { a2 = 0; v22 = v23; } } if ( v22 == v86 ) { v80 = 1; v16 = *(_BYTE *)(v8 + 16); goto LABEL_40; } v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v45 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v45; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } v16 = *(_BYTE *)(v8 + 16); if ( !v89 ) goto LABEL_76; } if ( !v89 ) goto LABEL_76; LABEL_27: if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) { v80 = 0; v89 = 1; goto LABEL_40; } if ( v9 == 16 || v82 == 0 ) { v85 = 0; v9 = 16; v89 = 0; goto LABEL_31; } v80 = 0; N = v9; v73 = v9; v89 = 1; LABEL_42: v94[0] = (unsigned int *)&unk_4E93FC; if ( v16 ) LABEL_19: std::string::reserve(v94, (std::string *)0x20, (unsigned int)v69); LABEL_43: v77 = 0xFFFFFFFF / v9; v83 = *(_BYTE *)(v8 + 164); if ( v83 ) { if ( v80 ) { v87 = 0; v79 = 0; v83 = v80; v80 = 0; LABEL_60: v32 = v94[0]; v33 = *(v94[0] - 3); if ( v33 ) goto LABEL_94; LABEL_61: v34 = (volatile signed __int32 *)(v32 - 3); if ( v85 || v89 ) goto LABEL_103; goto LABEL_63; } v79 = 0; S = (wchar_t *)(v8 + 120); v87 = 0; while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) { if ( v14 == *(_WORD *)(v8 + 36) ) goto LABEL_93; v46 = wmemchr(S, v14, N); if ( !v46 ) goto LABEL_93; v47 = (char *)v46 - (char *)S; v48 = v47 >> 1; if ( v47 > 30 ) v48 -= 6; if ( v77 >= v87 ) { v79 |= ~v48 < v9 * v87; ++v85; v87 = v48 + v9 * v87; goto LABEL_129; } v49 = (_DWORD *)a1; v79 = v83; v50 = *(_DWORD *)(a1 + 8); if ( v50 < *(_DWORD *)(a1 + 12) ) { LABEL_130: v49[2] = v50 + 2; WORD2(a1) = -1; goto LABEL_131; } LABEL_144: (*(void (__fastcall **)(_DWORD *))(*v49 + 40))(v49); v49 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v76 = v83; goto LABEL_135; } LABEL_131: v51 = (__int16 *)v49[2]; if ( (unsigned int)v51 >= v49[3] ) v52 = (*(int (__fastcall **)(_DWORD *))(*v49 + 36))(v49); else v52 = *v51; v76 = 0; if ( v52 == -1 ) { LODWORD(a1) = 0; v76 = v83; } LABEL_135: v53 = a3 == -1; v54 = v53 & (a2 != 0); if ( v54 ) { v56 = (_WORD *)a2[2]; v57 = (unsigned int)v56 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v56; v53 = 0; if ( v57 == -1 ) { a2 = 0; v53 = v54; } } if ( v53 == v76 ) goto LABEL_60; v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v55 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v55 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v55; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } } if ( !v85 ) { v83 = 0; v80 = *(_BYTE *)(v8 + 16); goto LABEL_60; } std::string::push_back(v94, (std::string *)(char)v85, (char)v69); v85 = 0; LABEL_129: v49 = (_DWORD *)a1; v50 = *(_DWORD *)(a1 + 8); if ( v50 < *(_DWORD *)(a1 + 12) ) goto LABEL_130; goto LABEL_144; } v79 = 0; if ( v80 ) { v67 = v80; v87 = 0; v80 = 0; v83 = v67; goto LABEL_60; } v87 = 0; LABEL_46: v24 = v14; if ( v73 > 10 ) { if ( (unsigned __int16)(v14 - 48) <= 9u ) goto LABEL_49; while ( (unsigned __int16)(v14 - 97) <= 5u ) { v25 = v24 - 87; if ( v77 < v87 ) goto LABEL_51; LABEL_84: v79 |= ~v25 < v9 * v87; v26 = (_DWORD *)a1; v87 = v25 + v9 * v87; ++v85; v27 = *(_DWORD *)(a1 + 8); if ( v27 < *(_DWORD *)(a1 + 12) ) goto LABEL_52; LABEL_85: (*(void (__fastcall **)(_DWORD *, int))(*v26 + 40))(v26, v25); v26 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_53; v84 = 1; LABEL_57: v30 = a3 == -1; v31 = v30 & (a2 != 0); if ( v31 ) { v43 = (_WORD *)a2[2]; v44 = (unsigned int)v43 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v43; v30 = 0; if ( v44 == -1 ) { a2 = 0; v30 = v31; } } if ( v30 == v84 ) { v83 = 1; goto LABEL_60; } v14 = WORD2(a1); if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) goto LABEL_46; v39 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v39; if ( v14 != 0xFFFF ) goto LABEL_46; LODWORD(a1) = 0; if ( v73 <= 10 ) goto LABEL_93; v24 = 0xFFFF; } if ( (unsigned __int16)(v14 - 65) <= 5u ) { v25 = v24 - 55; goto LABEL_50; } } else if ( v14 > 0x2Fu && (unsigned __int16)(v73 + 48) > v14 ) { LABEL_49: v25 = v14 - 48; LABEL_50: if ( v77 >= v87 ) goto LABEL_84; LABEL_51: v26 = (_DWORD *)a1; v79 = 1; v27 = *(_DWORD *)(a1 + 8); if ( v27 >= *(_DWORD *)(a1 + 12) ) goto LABEL_85; LABEL_52: v26[2] = v27 + 2; WORD2(a1) = -1; LABEL_53: v28 = (__int16 *)v26[2]; if ( (unsigned int)v28 >= v26[3] ) v29 = (*(int (__fastcall **)(_DWORD *, int))(*v26 + 36))(v26, v25); else v29 = *v28; v84 = 0; if ( v29 == -1 ) { LODWORD(a1) = 0; v84 = 1; } goto LABEL_57; } LABEL_93: v32 = v94[0]; v83 = 0; v33 = *(v94[0] - 3); if ( !v33 ) goto LABEL_61; LABEL_94: v74 = (std::string *)(v33 + 1); if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) std::string::reserve(v94, v74, (unsigned int)v69); *((_BYTE *)v94[0] + *(v94[0] - 3)) = v85; v40 = v94[0]; v41 = v94[0] - 3; if ( (_UNKNOWN *)v94[0] != &unk_4E93FC ) { *(v94[0] - 1) = 0; *(v40 - 3) = (unsigned int)v74; *((_BYTE *)v41 + v33 + 13) = 0; v40 = v94[0]; v41 = v94[0] - 3; } v75 = (std::string *)v41; v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v94); v34 = (volatile signed __int32 *)v75; if ( !v42 ) *a5 = 4; if ( !v85 && !v89 && !*(v40 - 3) ) goto LABEL_63; LABEL_103: if ( v80 ) { LABEL_63: *a6 = 0; *a5 = 4; goto LABEL_64; } if ( v79 ) { *a6 = -1; *a5 = 4; } else { if ( v78 ) v87 = -v87; *a6 = v87; } LABEL_64: if ( v83 ) *a5 |= 2u; result = a1; if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) { v90 = a1; std::string::_Rep::_M_dispose(v34, (int)&v93); return v90; } return result; } // 46FE07: variable 'v69' is possibly undefined // 46FE71: variable 'v70' is possibly undefined // 46FEC5: variable 'v25' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (00470030) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned __int16 *a6) { int v6; // edi int v7; // ebx int v8; // esi int v9; // edi char v10; // bl char v11; // dl char v12; // al char v13; // dl wchar_t v14; // bx __int16 v15; // ax char v16; // cl unsigned int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax __int16 *v20; // eax __int16 v21; // ax char v22; // al char v23; // dl int v24; // eax int v25; // eax _DWORD *v26; // ecx unsigned int v27; // eax __int16 *v28; // eax __int16 v29; // ax char v30; // dl char v31; // bl unsigned int *v32; // ecx int v33; // ebx volatile signed __int32 *v34; // ecx __int64 result; // rax bool v36; // al __int16 *v37; // eax __int16 v38; // cx _WORD *v39; // eax unsigned int *v40; // edi unsigned int *v41; // ecx char v42; // al _WORD *v43; // eax __int16 v44; // ax _WORD *v45; // eax wchar_t *v46; // eax int v47; // eax int v48; // ecx int v49; // ebx _DWORD *v50; // ecx unsigned int v51; // eax __int16 *v52; // eax __int16 v53; // ax char v54; // al char v55; // bl _WORD *v56; // eax _WORD *v57; // eax __int16 v58; // dx __int16 v59; // ax __int16 *v60; // eax __int16 v61; // cx __int16 *v62; // eax __int16 v63; // ax _WORD *v64; // eax wchar_t v65; // ax std::locale::_Impl *v66; // eax std::locale::_Impl *v67; // esi char v68; // al __int16 v69; // ax char v70; // al void (__cdecl *v71)(void *); // [esp+4h] [ebp-64h] unsigned int v72; // [esp+8h] [ebp-60h] bool v73; // [esp+1Bh] [ebp-4Dh] wchar_t *S; // [esp+1Ch] [ebp-4Ch] size_t N; // [esp+20h] [ebp-48h] int v76; // [esp+24h] [ebp-44h] std::string *v77; // [esp+24h] [ebp-44h] std::string *v78; // [esp+24h] [ebp-44h] char v79; // [esp+24h] [ebp-44h] int v80; // [esp+28h] [ebp-40h] int v81; // [esp+2Ch] [ebp-3Ch] char v82; // [esp+2Ch] [ebp-3Ch] char v83; // [esp+2Ch] [ebp-3Ch] int v84; // [esp+30h] [ebp-38h] char v85; // [esp+34h] [ebp-34h] char v86; // [esp+35h] [ebp-33h] char v87; // [esp+35h] [ebp-33h] char v88; // [esp+36h] [ebp-32h] unsigned __int16 v89; // [esp+36h] [ebp-32h] int *v90; // [esp+38h] [ebp-30h] bool v91; // [esp+38h] [ebp-30h] __int64 v92; // [esp+38h] [ebp-30h] char v93; // [esp+38h] [ebp-30h] char v94; // [esp+38h] [ebp-30h] char v95; // [esp+4Bh] [ebp-1Dh] BYREF unsigned int *v96[7]; // [esp+4Ch] [ebp-1Ch] BYREF v6 = a4; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); v90 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); if ( !v8 ) { v66 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v71); *((_DWORD *)v66 + 1) = 0; v67 = v66; *(_DWORD *)v66 = &off_4F65B0; *((_DWORD *)v66 + 2) = 0; *((_DWORD *)v66 + 3) = 0; *((_BYTE *)v66 + 16) = 0; *((_DWORD *)v66 + 5) = 0; *((_DWORD *)v66 + 6) = 0; *((_DWORD *)v66 + 7) = 0; *((_DWORD *)v66 + 8) = 0; *((_DWORD *)v66 + 9) = 0; *((_BYTE *)v66 + 164) = 0; std::__numpunct_cache::_M_cache((int)v66, v6 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v67, (const std::locale::facet *)v7, v72); v8 = *v90; } v81 = *(_DWORD *)(v6 + 12) & 0x4A; v9 = 8; if ( v81 != 64 ) v9 = v81 == 8 ? 16 : 10; v10 = WORD2(a1) == 0xFFFF; v11 = v10 & ((_DWORD)a1 != 0); if ( v11 ) { v62 = *(__int16 **)(a1 + 8); if ( (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ) { v94 = v10 & ((_DWORD)a1 != 0); v63 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v11 = v94; } else { v63 = *v62; } v10 = 0; if ( v63 == -1 ) { LODWORD(a1) = 0; v10 = v11; } } v12 = a3 == -1; v13 = v12 & (a2 != 0); if ( v13 ) { v60 = (__int16 *)a2[2]; if ( (unsigned int)v60 >= a2[3] ) { v93 = v13; v69 = (*(int (**)(void))(*a2 + 36))(); v13 = v93; v61 = v69; } else { v61 = *v60; } v12 = 0; if ( v61 == -1 ) { a2 = 0; v12 = v13; } } if ( v10 == v12 ) { v73 = 0; v16 = *(_BYTE *)(v8 + 16); v14 = 0; v86 = 1; v84 = 0; v91 = 0; LABEL_40: if ( v9 == 16 ) { LABEL_18: N = 22; v76 = 22; v96[0] = (unsigned int *)&unk_4E93FC; if ( !v16 ) goto LABEL_43; goto LABEL_19; } LABEL_41: N = v9; v76 = v9; goto LABEL_42; } v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v64 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v64 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v64; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } v15 = *(_WORD *)(v8 + 112); v16 = *(_BYTE *)(v8 + 16); v73 = v15 == (__int16)v14; if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) { if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) { v17 = *(_DWORD *)(a1 + 8); if ( v17 >= *(_DWORD *)(a1 + 12) ) std::wstreambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v17 + 2; WORD2(a1) = -1; v86 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v86 ) { v84 = 0; v16 = *(_BYTE *)(v8 + 16); v91 = 0; if ( v9 == 16 ) goto LABEL_18; goto LABEL_41; } v65 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); v16 = *(_BYTE *)(v8 + 16); v14 = v65; } } else { v73 = 0; } v84 = 0; v91 = 0; while ( 1 ) { if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) { LABEL_76: v86 = 0; goto LABEL_40; } if ( *(_WORD *)(v8 + 120) != v14 ) break; v36 = !v91 || v9 == 10; if ( !v36 ) goto LABEL_27; v91 = v81 == 0 || v9 == 8; if ( !v91 ) { ++v84; v91 = v36; LABEL_31: v18 = (_DWORD *)a1; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) goto LABEL_32; goto LABEL_71; } v18 = (_DWORD *)a1; v84 = 0; v9 = 8; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) { LABEL_32: v18[2] = v19 + 2; WORD2(a1) = -1; LABEL_33: v20 = (__int16 *)v18[2]; if ( (unsigned int)v20 >= v18[3] ) v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); else v21 = *v20; v88 = 0; if ( v21 == -1 ) { LODWORD(a1) = 0; v88 = 1; } goto LABEL_37; } LABEL_71: (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); v18 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_33; v88 = 1; LABEL_37: v22 = a3 == -1; v23 = v22 & (a2 != 0); if ( v23 ) { v37 = (__int16 *)a2[2]; if ( (unsigned int)v37 >= a2[3] ) { v87 = v23; v59 = (*(int (**)(void))(*a2 + 36))(); v23 = v87; v38 = v59; } else { v38 = *v37; } v22 = 0; if ( v38 == -1 ) { a2 = 0; v22 = v23; } } if ( v22 == v88 ) { v86 = 1; v16 = *(_BYTE *)(v8 + 16); goto LABEL_40; } v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v45 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v45; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } v16 = *(_BYTE *)(v8 + 16); if ( !v91 ) goto LABEL_76; } if ( !v91 ) goto LABEL_76; LABEL_27: if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) { v86 = 0; v91 = 1; goto LABEL_40; } if ( v9 == 16 || v81 == 0 ) { v84 = 0; v9 = 16; v91 = 0; goto LABEL_31; } v86 = 0; N = v9; v76 = v9; v91 = 1; LABEL_42: v96[0] = (unsigned int *)&unk_4E93FC; if ( v16 ) LABEL_19: std::string::reserve(v96, (std::string *)0x20, (unsigned int)v71); LABEL_43: v80 = 0xFFFF / v9; v82 = *(_BYTE *)(v8 + 164); if ( v82 ) { if ( v86 ) { v70 = v86; v85 = 0; v86 = 0; v82 = v70; v89 = 0; LABEL_60: v32 = v96[0]; v33 = *(v96[0] - 3); if ( v33 ) goto LABEL_94; LABEL_61: v34 = (volatile signed __int32 *)(v32 - 3); if ( v84 || v91 ) goto LABEL_103; goto LABEL_63; } v85 = 0; S = (wchar_t *)(v8 + 120); v89 = 0; while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) { if ( v14 == *(_WORD *)(v8 + 36) ) goto LABEL_93; v46 = wmemchr(S, v14, N); if ( !v46 ) goto LABEL_93; v47 = (char *)v46 - (char *)S; v48 = v47 >> 1; if ( v47 > 30 ) v48 -= 6; if ( (unsigned __int16)v80 >= v89 ) { v49 = (unsigned __int16)(v9 * v89); ++v84; v85 |= v49 > 0xFFFF - v48; v89 = v49 + v48; goto LABEL_129; } v50 = (_DWORD *)a1; v85 = v82; v51 = *(_DWORD *)(a1 + 8); if ( v51 < *(_DWORD *)(a1 + 12) ) { LABEL_130: v50[2] = v51 + 2; WORD2(a1) = -1; goto LABEL_131; } LABEL_144: (*(void (__fastcall **)(_DWORD *))(*v50 + 40))(v50); v50 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v79 = v82; goto LABEL_135; } LABEL_131: v52 = (__int16 *)v50[2]; if ( (unsigned int)v52 >= v50[3] ) v53 = (*(int (__fastcall **)(_DWORD *))(*v50 + 36))(v50); else v53 = *v52; v79 = 0; if ( v53 == -1 ) { LODWORD(a1) = 0; v79 = v82; } LABEL_135: v54 = a3 == -1; v55 = v54 & (a2 != 0); if ( v55 ) { v57 = (_WORD *)a2[2]; v58 = (unsigned int)v57 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v57; v54 = 0; if ( v58 == -1 ) { a2 = 0; v54 = v55; } } if ( v54 == v79 ) goto LABEL_60; v14 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v56 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v56; if ( v14 == 0xFFFF ) LODWORD(a1) = 0; } } if ( !v84 ) { v82 = 0; v86 = *(_BYTE *)(v8 + 16); goto LABEL_60; } std::string::push_back(v96, (std::string *)(char)v84, (char)v71); v84 = 0; LABEL_129: v50 = (_DWORD *)a1; v51 = *(_DWORD *)(a1 + 8); if ( v51 < *(_DWORD *)(a1 + 12) ) goto LABEL_130; goto LABEL_144; } v85 = 0; if ( v86 ) { v68 = v86; v86 = 0; v82 = v68; v89 = 0; goto LABEL_60; } v89 = 0; LABEL_46: v24 = v14; if ( v76 > 10 ) { if ( (unsigned __int16)(v14 - 48) <= 9u ) goto LABEL_49; while ( (unsigned __int16)(v14 - 97) <= 5u ) { v25 = v24 - 87; if ( (unsigned __int16)v80 < v89 ) goto LABEL_51; LABEL_84: v85 |= (unsigned __int16)(v9 * v89) > 0xFFFF - v25; v26 = (_DWORD *)a1; v89 = v9 * v89 + v25; ++v84; v27 = *(_DWORD *)(a1 + 8); if ( v27 < *(_DWORD *)(a1 + 12) ) goto LABEL_52; LABEL_85: (*(void (__fastcall **)(_DWORD *))(*v26 + 40))(v26); v26 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_53; v83 = 1; LABEL_57: v30 = a3 == -1; v31 = v30 & (a2 != 0); if ( v31 ) { v43 = (_WORD *)a2[2]; v44 = (unsigned int)v43 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v43; v30 = 0; if ( v44 == -1 ) { a2 = 0; v30 = v31; } } if ( v30 == v83 ) { v82 = 1; goto LABEL_60; } v14 = WORD2(a1); if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) goto LABEL_46; v39 = *(_WORD **)(a1 + 8); v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v39; if ( v14 != 0xFFFF ) goto LABEL_46; LODWORD(a1) = 0; if ( v76 <= 10 ) goto LABEL_93; v24 = 0xFFFF; } if ( (unsigned __int16)(v14 - 65) <= 5u ) { v25 = v24 - 55; goto LABEL_50; } } else if ( v14 > 0x2Fu && (unsigned __int16)(v76 + 48) > v14 ) { LABEL_49: v25 = v14 - 48; LABEL_50: if ( (unsigned __int16)v80 >= v89 ) goto LABEL_84; LABEL_51: v26 = (_DWORD *)a1; v85 = 1; v27 = *(_DWORD *)(a1 + 8); if ( v27 >= *(_DWORD *)(a1 + 12) ) goto LABEL_85; LABEL_52: v26[2] = v27 + 2; WORD2(a1) = -1; LABEL_53: v28 = (__int16 *)v26[2]; if ( (unsigned int)v28 >= v26[3] ) v29 = (*(int (__fastcall **)(_DWORD *))(*v26 + 36))(v26); else v29 = *v28; v83 = 0; if ( v29 == -1 ) { LODWORD(a1) = 0; v83 = 1; } goto LABEL_57; } LABEL_93: v32 = v96[0]; v82 = 0; v33 = *(v96[0] - 3); if ( !v33 ) goto LABEL_61; LABEL_94: v77 = (std::string *)(v33 + 1); if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) std::string::reserve(v96, v77, (unsigned int)v71); *((_BYTE *)v96[0] + *(v96[0] - 3)) = v84; v40 = v96[0]; v41 = v96[0] - 3; if ( (_UNKNOWN *)v96[0] != &unk_4E93FC ) { *(v96[0] - 1) = 0; *(v40 - 3) = (unsigned int)v77; *((_BYTE *)v41 + v33 + 13) = 0; v40 = v96[0]; v41 = v96[0] - 3; } v78 = (std::string *)v41; v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v96); v34 = (volatile signed __int32 *)v78; if ( !v42 ) *a5 = 4; if ( !v84 && !v91 && !*(v40 - 3) ) goto LABEL_63; LABEL_103: if ( v86 ) { LABEL_63: *a6 = 0; *a5 = 4; goto LABEL_64; } if ( v85 ) { *a6 = -1; *a5 = 4; } else { if ( v73 ) v89 = -v89; *a6 = v89; } LABEL_64: if ( v82 ) *a5 |= 2u; result = a1; if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) { v92 = a1; std::string::_Rep::_M_dispose(v34, (int)&v95); return v92; } return result; } // 470A07: variable 'v71' is possibly undefined // 470A71: variable 'v72' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (00470C30) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6) { int v6; // esi int v7; // ebx std::locale::_Impl **v8; // edi int v9; // eax int v10; // esi int v11; // edi char v12; // bl char v13; // dl char v14; // al char v15; // dl wchar_t v16; // bx __int16 v17; // ax char v18; // cl unsigned int v19; // eax _DWORD *v20; // ecx unsigned int v21; // eax __int16 *v22; // eax __int16 v23; // ax char v24; // al char v25; // dl unsigned __int64 v26; // kr00_8 int v27; // esi int v28; // edi int v29; // eax int v30; // ecx _DWORD *v31; // ecx unsigned int v32; // eax __int16 *v33; // eax __int16 v34; // ax char v35; // dl char v36; // bl unsigned int *v37; // ecx int v38; // ebx volatile signed __int32 *v39; // ecx int *v40; // eax __int64 result; // rax bool v42; // al __int16 *v43; // eax __int16 v44; // cx int v45; // ebx int v46; // edi unsigned int v47; // esi int v48; // eax unsigned int v49; // edi _WORD *v50; // eax unsigned int *v51; // edx unsigned int *v52; // ecx char v53; // al int v54; // eax unsigned int v55; // edx int *v56; // edi _DWORD *v57; // eax _WORD *v58; // eax __int16 v59; // ax _WORD *v60; // eax wchar_t *v61; // eax int v62; // eax int v63; // ecx int v64; // ebx int v65; // edi unsigned int v66; // esi unsigned int v67; // edi _DWORD *v68; // ecx unsigned int v69; // eax __int16 *v70; // eax __int16 v71; // ax char v72; // al char v73; // bl _WORD *v74; // eax _WORD *v75; // eax __int16 v76; // dx __int16 v77; // ax __int16 *v78; // eax __int16 v79; // cx __int16 *v80; // eax __int16 v81; // ax int *v82; // eax _WORD *v83; // eax _DWORD *v84; // eax char v85; // al __int16 v86; // ax char v87; // al void (__cdecl *v88)(void *); // [esp+4h] [ebp-74h] unsigned int v89; // [esp+4h] [ebp-74h] unsigned int v90; // [esp+8h] [ebp-70h] wchar_t *S; // [esp+18h] [ebp-60h] bool v92; // [esp+1Fh] [ebp-59h] UDItype n; // [esp+20h] [ebp-58h] size_t N; // [esp+28h] [ebp-50h] int v95; // [esp+2Ch] [ebp-4Ch] char v96; // [esp+2Ch] [ebp-4Ch] std::string *v97; // [esp+30h] [ebp-48h] std::string *v98; // [esp+30h] [ebp-48h] __int64 v99; // [esp+38h] [ebp-40h] unsigned int *v100; // [esp+38h] [ebp-40h] char v101; // [esp+38h] [ebp-40h] int v102; // [esp+40h] [ebp-38h] char v103; // [esp+44h] [ebp-34h] char v104; // [esp+45h] [ebp-33h] char v105; // [esp+45h] [ebp-33h] char v106; // [esp+46h] [ebp-32h] char v107; // [esp+46h] [ebp-32h] bool v108; // [esp+47h] [ebp-31h] char v109; // [esp+47h] [ebp-31h] char v110; // [esp+47h] [ebp-31h] std::locale::_Impl *v111; // [esp+48h] [ebp-30h] std::locale::_Impl *v112; // [esp+48h] [ebp-30h] __int64 v113; // [esp+48h] [ebp-30h] char v114; // [esp+5Bh] [ebp-1Dh] BYREF unsigned int *v115[7]; // [esp+5Ch] [ebp-1Ch] BYREF v6 = a4; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = (std::locale::_Impl **)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); v111 = *v8; if ( !*v8 ) { v84 = operator new((struct type_info *)0xA8, v88); v84[1] = 0; *v84 = &off_4F65B0; v84[2] = 0; v84[3] = 0; *((_BYTE *)v84 + 16) = 0; v84[5] = 0; v84[6] = 0; v84[7] = 0; v84[8] = 0; v84[9] = 0; *((_BYTE *)v84 + 164) = 0; v112 = (std::locale::_Impl *)v84; std::__numpunct_cache::_M_cache((int)v84, v6 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v112, (const std::locale::facet *)v7, v90); v111 = *v8; } v9 = *(_DWORD *)(v6 + 12); v10 = 8; v11 = v9 & 0x4A; if ( v11 != 64 ) v10 = v11 == 8 ? 16 : 10; v12 = WORD2(a1) == 0xFFFF; v13 = v12 & ((_DWORD)a1 != 0); if ( v13 ) { v80 = *(__int16 **)(a1 + 8); if ( (unsigned int)v80 >= *(_DWORD *)(a1 + 12) ) { v110 = v12 & ((_DWORD)a1 != 0); v81 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v13 = v110; } else { v81 = *v80; } v12 = 0; if ( v81 == -1 ) { LODWORD(a1) = 0; v12 = v13; } } v14 = a3 == -1; v15 = v14 & (a2 != 0); if ( v15 ) { v78 = (__int16 *)a2[2]; if ( (unsigned int)v78 >= a2[3] ) { v109 = v15; v86 = (*(int (**)(void))(*a2 + 36))(); v15 = v109; v79 = v86; } else { v79 = *v78; } v14 = 0; if ( v79 == -1 ) { a2 = 0; v14 = v15; } } if ( v14 == v12 ) { v92 = 0; v16 = 0; v106 = 1; v102 = 0; v18 = *((_BYTE *)v111 + 16); v108 = 0; LABEL_40: if ( v10 == 16 ) { LABEL_18: N = 22; v95 = 22; v115[0] = (unsigned int *)&unk_4E93FC; if ( !v18 ) goto LABEL_43; goto LABEL_19; } LABEL_41: N = v10; v95 = v10; goto LABEL_42; } v16 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v83 = *(_WORD **)(a1 + 8); v16 = (unsigned int)v83 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v83; if ( v16 == 0xFFFF ) LODWORD(a1) = 0; } v17 = *((_WORD *)v111 + 56); v18 = *((_BYTE *)v111 + 16); v92 = v17 == (__int16)v16; if ( v17 == v16 || *((_WORD *)v111 + 57) == v16 ) { if ( (!v18 || *((_WORD *)v111 + 19) != v16) && *((_WORD *)v111 + 18) != v16 ) { v19 = *(_DWORD *)(a1 + 8); if ( v19 >= *(_DWORD *)(a1 + 12) ) std::wstreambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v19 + 2; WORD2(a1) = -1; v106 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v106 ) { v102 = 0; v108 = 0; v18 = *((_BYTE *)v111 + 16); if ( v10 == 16 ) goto LABEL_18; goto LABEL_41; } v16 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); v18 = *((_BYTE *)v111 + 16); } } else { v92 = 0; } v102 = 0; v108 = 0; while ( 1 ) { if ( v18 && *((_WORD *)v111 + 19) == v16 || *((_WORD *)v111 + 18) == v16 ) { LABEL_78: v106 = 0; goto LABEL_40; } if ( *((_WORD *)v111 + 60) != v16 ) break; v42 = !v108 || v10 == 10; if ( !v42 ) goto LABEL_27; v108 = v11 == 0 || v10 == 8; if ( !v108 ) { ++v102; v108 = v42; LABEL_31: v20 = (_DWORD *)a1; v21 = *(_DWORD *)(a1 + 8); if ( v21 < *(_DWORD *)(a1 + 12) ) goto LABEL_32; goto LABEL_73; } v20 = (_DWORD *)a1; v102 = 0; v10 = 8; v21 = *(_DWORD *)(a1 + 8); if ( v21 < *(_DWORD *)(a1 + 12) ) { LABEL_32: v20[2] = v21 + 2; WORD2(a1) = -1; LABEL_33: v22 = (__int16 *)v20[2]; if ( (unsigned int)v22 >= v20[3] ) v23 = (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20); else v23 = *v22; v107 = 0; if ( v23 == -1 ) { LODWORD(a1) = 0; v107 = 1; } goto LABEL_37; } LABEL_73: (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); v20 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_33; v107 = 1; LABEL_37: v24 = a3 == -1; v25 = v24 & (a2 != 0); if ( v25 ) { v43 = (__int16 *)a2[2]; if ( (unsigned int)v43 >= a2[3] ) { v101 = v25; v77 = (*(int (**)(void))(*a2 + 36))(); v25 = v101; v44 = v77; } else { v44 = *v43; } v24 = 0; if ( v44 == -1 ) { a2 = 0; v24 = v25; } } if ( v24 == v107 ) { v106 = 1; v18 = *((_BYTE *)v111 + 16); goto LABEL_40; } v16 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v60 = *(_WORD **)(a1 + 8); v16 = (unsigned int)v60 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v60; if ( v16 == 0xFFFF ) LODWORD(a1) = 0; } v18 = *((_BYTE *)v111 + 16); if ( !v108 ) goto LABEL_78; } if ( !v108 ) goto LABEL_78; LABEL_27: if ( *((_WORD *)v111 + 58) != v16 && *((_WORD *)v111 + 59) != v16 ) { v106 = 0; v108 = 1; goto LABEL_40; } if ( v10 == 16 || v11 == 0 ) { v102 = 0; v10 = 16; v108 = 0; goto LABEL_31; } v106 = 0; N = v10; v95 = v10; v108 = 1; LABEL_42: v115[0] = (unsigned int *)&unk_4E93FC; if ( v18 ) LABEL_19: std::string::reserve(v115, (std::string *)0x20, (unsigned int)v88); LABEL_43: n = 0x8000000000000000LL; if ( !v92 ) n = 0x7FFFFFFFFFFFFFFFLL; v99 = v10; v26 = n / v10; v104 = *((_BYTE *)v111 + 164); if ( v104 ) { if ( v106 ) { v87 = v106; v103 = 0; v27 = 0; v28 = 0; v106 = 0; v104 = v87; goto LABEL_62; } v103 = 0; v27 = 0; v28 = 0; S = (wchar_t *)((char *)v111 + 120); while ( !*((_BYTE *)v111 + 16) || *((_WORD *)v111 + 19) != v16 ) { if ( v16 == *((_WORD *)v111 + 18) ) goto LABEL_96; v61 = wmemchr(S, v16, N); if ( !v61 ) goto LABEL_96; v62 = (char *)v61 - (char *)S; v63 = v62 >> 1; if ( v62 > 30 ) v63 -= 6; if ( v26 >= __PAIR64__(v28, v27) ) { v64 = v28 * v99 + v27 * HIDWORD(v99); v65 = ((unsigned int)v99 * (unsigned __int64)(unsigned int)v27) >> 32; v66 = v99 * v27; v67 = v64 + v65; v103 |= n - v63 < __PAIR64__(v67, v66); v28 = (v63 + __PAIR64__(v67, v66)) >> 32; v27 = v63 + v66; ++v102; goto LABEL_130; } v68 = (_DWORD *)a1; v103 = v104; v69 = *(_DWORD *)(a1 + 8); if ( v69 < *(_DWORD *)(a1 + 12) ) { LABEL_131: v68[2] = v69 + 2; WORD2(a1) = -1; goto LABEL_132; } LABEL_145: (*(void (__fastcall **)(_DWORD *))(*v68 + 40))(v68); v68 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v96 = v104; goto LABEL_136; } LABEL_132: v70 = (__int16 *)v68[2]; if ( (unsigned int)v70 >= v68[3] ) v71 = (*(int (__fastcall **)(_DWORD *))(*v68 + 36))(v68); else v71 = *v70; v96 = 0; if ( v71 == -1 ) { LODWORD(a1) = 0; v96 = v104; } LABEL_136: v72 = a3 == -1; v73 = v72 & (a2 != 0); if ( v73 ) { v75 = (_WORD *)a2[2]; v76 = (unsigned int)v75 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v75; v72 = 0; if ( v76 == -1 ) { a2 = 0; v72 = v73; } } if ( v96 == v72 ) goto LABEL_62; v16 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v74 = *(_WORD **)(a1 + 8); v16 = (unsigned int)v74 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v74; if ( v16 == 0xFFFF ) LODWORD(a1) = 0; } } if ( !v102 ) { v104 = 0; v106 = *((_BYTE *)v111 + 16); goto LABEL_62; } std::string::push_back(v115, (std::string *)(char)v102, v89); v102 = 0; LABEL_130: v68 = (_DWORD *)a1; v69 = *(_DWORD *)(a1 + 8); if ( v69 < *(_DWORD *)(a1 + 12) ) goto LABEL_131; goto LABEL_145; } v103 = 0; if ( v106 ) { v85 = v106; v27 = 0; v106 = 0; v28 = 0; v104 = v85; goto LABEL_62; } v27 = 0; v28 = 0; LABEL_48: v29 = v16; if ( v95 > 10 ) { if ( (unsigned __int16)(v16 - 48) <= 9u ) { LABEL_51: v30 = v16 - 48; LABEL_52: if ( v26 >= __PAIR64__(v28, v27) ) goto LABEL_87; LABEL_53: v31 = (_DWORD *)a1; v103 = 1; v32 = *(_DWORD *)(a1 + 8); if ( v32 >= *(_DWORD *)(a1 + 12) ) goto LABEL_88; LABEL_54: v31[2] = v32 + 2; WORD2(a1) = -1; LABEL_55: v33 = (__int16 *)v31[2]; if ( (unsigned int)v33 >= v31[3] ) v34 = (*(int (__fastcall **)(_DWORD *))(*v31 + 36))(v31); else v34 = *v33; v105 = 0; if ( v34 == -1 ) { LODWORD(a1) = 0; v105 = 1; } goto LABEL_59; } while ( 1 ) { v30 = v29 - 87; if ( (unsigned __int16)(v16 - 97) <= 5u ) goto LABEL_52; if ( (unsigned __int16)(v16 - 65) > 5u ) goto LABEL_96; v30 = v29 - 55; if ( v26 < __PAIR64__(v28, v27) ) goto LABEL_53; LABEL_87: v45 = v28 * v99 + v27 * HIDWORD(v99); v46 = ((unsigned int)v99 * (unsigned __int64)(unsigned int)v27) >> 32; v47 = v99 * v27; v48 = v30; v49 = v45 + v46; v103 |= n - v30 < __PAIR64__(v49, v47); v31 = (_DWORD *)a1; v28 = (v48 + __PAIR64__(v49, v47)) >> 32; v27 = v48 + v47; ++v102; v32 = *(_DWORD *)(a1 + 8); if ( v32 < *(_DWORD *)(a1 + 12) ) goto LABEL_54; LABEL_88: (*(void (__fastcall **)(_DWORD *))(*v31 + 40))(v31); v31 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_55; v105 = 1; LABEL_59: v35 = a3 == -1; v36 = v35 & (a2 != 0); if ( v36 ) { v58 = (_WORD *)a2[2]; v59 = (unsigned int)v58 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v58; v35 = 0; if ( v59 == -1 ) { a2 = 0; v35 = v36; } } if ( v35 == v105 ) break; v16 = WORD2(a1); if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) goto LABEL_48; v50 = *(_WORD **)(a1 + 8); v16 = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v50; if ( v16 != 0xFFFF ) goto LABEL_48; LODWORD(a1) = 0; if ( v95 <= 10 ) goto LABEL_96; v29 = 0xFFFF; } v104 = 1; LABEL_62: v37 = v115[0]; v38 = *(v115[0] - 3); if ( v38 ) goto LABEL_97; LABEL_63: v39 = (volatile signed __int32 *)(v37 - 3); if ( v102 || v108 ) goto LABEL_106; goto LABEL_65; } if ( v16 > 0x2Fu && (unsigned __int16)(v95 + 48) > v16 ) goto LABEL_51; LABEL_96: v37 = v115[0]; v104 = 0; v38 = *(v115[0] - 3); if ( !v38 ) goto LABEL_63; LABEL_97: v97 = (std::string *)(v38 + 1); if ( v38 + 1 > *(v37 - 2) || (int)*(v37 - 1) > 0 ) std::string::reserve(v115, v97, v89); *((_BYTE *)v115[0] + *(v115[0] - 3)) = v102; v51 = v115[0]; v52 = v115[0] - 3; if ( (_UNKNOWN *)v115[0] != &unk_4E93FC ) { *(v115[0] - 1) = 0; *(v51 - 3) = (unsigned int)v97; *((_BYTE *)v52 + v38 + 13) = 0; v51 = v115[0]; v52 = v115[0] - 3; } v98 = (std::string *)v51; v100 = v52; v53 = std::__verify_grouping(*((char **)v111 + 2), *((_DWORD *)v111 + 3), (const char **)v115); v39 = (volatile signed __int32 *)v100; if ( !v53 ) *a5 = 4; if ( !v102 && !v108 && !*((_DWORD *)v98 - 3) ) goto LABEL_65; LABEL_106: if ( v106 ) { LABEL_65: v40 = a6; *a6 = 0; v40[1] = 0; *a5 = 4; goto LABEL_66; } if ( v103 ) { v54 = 0; v55 = 0x80000000; if ( !v92 ) { v54 = -1; v55 = 0x7FFFFFFF; } v56 = a6; *a6 = v54; v57 = a5; v56[1] = v55; *v57 = 4; } else { if ( v92 ) { v27 = -v27; v28 = (unsigned __int64)-__SPAIR64__(v28, v27) >> 32; } v82 = a6; *a6 = v27; v82[1] = v28; } LABEL_66: if ( v104 ) *a5 |= 2u; result = a1; if ( v39 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) { v113 = a1; std::string::_Rep::_M_dispose(v39, (int)&v114); return v113; } return result; } // 4716A7: variable 'v88' is possibly undefined // 471717: variable 'v90' is possibly undefined // 47121E: variable 'v89' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (004718D0) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6) { int v6; // edi int v7; // esi int v8; // ebx int v9; // eax int v10; // edi int v11; // eax char v12; // dl char v13; // si char v14; // al char v15; // si wchar_t v16; // si __int16 v17; // ax char v18; // cl unsigned int v19; // eax _DWORD *v20; // ecx unsigned int v21; // eax __int16 *v22; // eax __int16 v23; // ax char v24; // al char v25; // dl unsigned __int64 v26; // kr00_8 int v27; // ecx int v28; // ecx _DWORD *v29; // ecx unsigned int v30; // eax __int16 *v31; // eax __int16 v32; // ax char v33; // di char v34; // dl char v35; // si unsigned int *v36; // ecx int v37; // esi volatile signed __int32 *v38; // ecx _DWORD *v39; // eax __int64 result; // rax bool v41; // al __int16 *v42; // eax __int16 v43; // cx int v44; // edi int v45; // esi _WORD *v46; // eax unsigned int *v47; // edx unsigned int *v48; // ecx char v49; // al _WORD *v50; // eax __int16 v51; // ax _WORD *v52; // eax wchar_t *v53; // eax int v54; // eax int v55; // ecx _DWORD *v56; // ecx unsigned int v57; // eax __int16 *v58; // eax __int16 v59; // ax char v60; // di char v61; // al char v62; // si _WORD *v63; // eax _WORD *v64; // eax __int16 v65; // dx __int16 v66; // ax __int16 *v67; // eax __int16 v68; // cx _WORD *v69; // eax __int16 v70; // ax _DWORD *v71; // eax _WORD *v72; // eax wchar_t v73; // ax std::locale::_Impl *v74; // eax std::locale::_Impl *v75; // ebx char v76; // al __int16 v77; // ax void (__cdecl *v78)(void *); // [esp+4h] [ebp-74h] unsigned int v79; // [esp+4h] [ebp-74h] unsigned int v80; // [esp+8h] [ebp-70h] bool v81; // [esp+1Fh] [ebp-59h] size_t N; // [esp+20h] [ebp-58h] int S; // [esp+24h] [ebp-54h] wchar_t *Sa; // [esp+24h] [ebp-54h] unsigned int *v85; // [esp+28h] [ebp-50h] int v86; // [esp+30h] [ebp-48h] __int64 v87; // [esp+30h] [ebp-48h] unsigned int *v88; // [esp+30h] [ebp-48h] char v89; // [esp+38h] [ebp-40h] char v90; // [esp+3Ah] [ebp-3Eh] _BYTE v91[5]; // [esp+3Bh] [ebp-3Dh] char v92; // [esp+3Bh] [ebp-3Dh] char v93; // [esp+40h] [ebp-38h] unsigned __int64 v94; // [esp+40h] [ebp-38h] char v95; // [esp+40h] [ebp-38h] int *v96; // [esp+48h] [ebp-30h] bool v97; // [esp+48h] [ebp-30h] __int64 v98; // [esp+48h] [ebp-30h] char v99; // [esp+5Bh] [ebp-1Dh] BYREF unsigned int *v100[7]; // [esp+5Ch] [ebp-1Ch] BYREF v6 = a4; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); v96 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); if ( !v8 ) { v74 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v78); *((_DWORD *)v74 + 1) = 0; v75 = v74; *(_DWORD *)v74 = &off_4F65B0; *((_DWORD *)v74 + 2) = 0; *((_DWORD *)v74 + 3) = 0; *((_BYTE *)v74 + 16) = 0; *((_DWORD *)v74 + 5) = 0; *((_DWORD *)v74 + 6) = 0; *((_DWORD *)v74 + 7) = 0; *((_DWORD *)v74 + 8) = 0; *((_DWORD *)v74 + 9) = 0; *((_BYTE *)v74 + 164) = 0; std::__numpunct_cache::_M_cache((int)v74, v6 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v75, (const std::locale::facet *)v7, v80); v8 = *v96; } v9 = *(_DWORD *)(v6 + 12); v10 = 8; v11 = v9 & 0x4A; v86 = v11; if ( v11 != 64 ) v10 = v11 == 8 ? 16 : 10; v12 = WORD2(a1) == 0xFFFF; v13 = v12 & ((_DWORD)a1 != 0); if ( v13 ) { v69 = *(_WORD **)(a1 + 8); v70 = (unsigned int)v69 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v69; v12 = 0; if ( v70 == -1 ) { LODWORD(a1) = 0; v12 = v13; } } v14 = a3 == -1; v15 = v14 & (a2 != 0); if ( v15 ) { v67 = (__int16 *)a2[2]; if ( (unsigned int)v67 >= a2[3] ) { v95 = v12; v77 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v12 = v95; v68 = v77; } else { v68 = *v67; } v14 = 0; if ( v68 == -1 ) { a2 = 0; v14 = v15; } } if ( v12 == v14 ) { v81 = 0; v18 = *(_BYTE *)(v8 + 16); v16 = 0; v91[0] = 1; *(_DWORD *)&v91[1] = 0; v97 = 0; LABEL_40: if ( v10 == 16 ) { LABEL_18: N = 22; S = 22; v100[0] = (unsigned int *)&unk_4E93FC; if ( !v18 ) goto LABEL_43; goto LABEL_19; } LABEL_41: N = v10; S = v10; goto LABEL_42; } v16 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v72 = *(_WORD **)(a1 + 8); v16 = (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v72; if ( v16 == 0xFFFF ) LODWORD(a1) = 0; } v17 = *(_WORD *)(v8 + 112); v18 = *(_BYTE *)(v8 + 16); v81 = v17 == (__int16)v16; if ( v17 == v16 || *(_WORD *)(v8 + 114) == v16 ) { if ( (!v18 || *(_WORD *)(v8 + 38) != v16) && *(_WORD *)(v8 + 36) != v16 ) { v19 = *(_DWORD *)(a1 + 8); if ( v19 >= *(_DWORD *)(a1 + 12) ) std::wstreambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v19 + 2; WORD2(a1) = -1; v91[0] = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v91[0] ) { *(_DWORD *)&v91[1] = 0; v18 = *(_BYTE *)(v8 + 16); v97 = 0; if ( v10 == 16 ) goto LABEL_18; goto LABEL_41; } v73 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); v18 = *(_BYTE *)(v8 + 16); v16 = v73; } } else { v81 = 0; } *(_DWORD *)&v91[1] = 0; v97 = 0; while ( 1 ) { if ( v18 && *(_WORD *)(v8 + 38) == v16 || *(_WORD *)(v8 + 36) == v16 ) { LABEL_76: v91[0] = 0; goto LABEL_40; } if ( *(_WORD *)(v8 + 120) != v16 ) break; v41 = !v97 || v10 == 10; if ( !v41 ) goto LABEL_27; v97 = v86 == 0 || v10 == 8; if ( !v97 ) { ++*(_DWORD *)&v91[1]; v97 = v41; LABEL_31: v20 = (_DWORD *)a1; v21 = *(_DWORD *)(a1 + 8); if ( v21 < *(_DWORD *)(a1 + 12) ) goto LABEL_32; goto LABEL_71; } v20 = (_DWORD *)a1; *(_DWORD *)&v91[1] = 0; v10 = 8; v21 = *(_DWORD *)(a1 + 8); if ( v21 < *(_DWORD *)(a1 + 12) ) { LABEL_32: v20[2] = v21 + 2; WORD2(a1) = -1; LABEL_33: v22 = (__int16 *)v20[2]; if ( (unsigned int)v22 >= v20[3] ) v23 = (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20); else v23 = *v22; v93 = 0; if ( v23 == -1 ) { LODWORD(a1) = 0; v93 = 1; } goto LABEL_37; } LABEL_71: (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); v20 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_33; v93 = 1; LABEL_37: v24 = a3 == -1; v25 = v24 & (a2 != 0); if ( v25 ) { v42 = (__int16 *)a2[2]; if ( (unsigned int)v42 >= a2[3] ) { v92 = v25; v66 = (*(int (**)(void))(*a2 + 36))(); v25 = v92; v43 = v66; } else { v43 = *v42; } v24 = 0; if ( v43 == -1 ) { a2 = 0; v24 = v25; } } if ( v24 == v93 ) { v91[0] = 1; v18 = *(_BYTE *)(v8 + 16); goto LABEL_40; } v16 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v52 = *(_WORD **)(a1 + 8); v16 = (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v52; if ( v16 == 0xFFFF ) LODWORD(a1) = 0; } v18 = *(_BYTE *)(v8 + 16); if ( !v97 ) goto LABEL_76; } if ( !v97 ) goto LABEL_76; LABEL_27: if ( *(_WORD *)(v8 + 116) != v16 && *(_WORD *)(v8 + 118) != v16 ) { v91[0] = 0; v97 = 1; goto LABEL_40; } if ( v10 == 16 || v86 == 0 ) { *(_DWORD *)&v91[1] = 0; v10 = 16; v97 = 0; goto LABEL_31; } v91[0] = 0; N = v10; S = v10; v97 = 1; LABEL_42: v100[0] = (unsigned int *)&unk_4E93FC; if ( v18 ) LABEL_19: std::string::reserve(v100, (std::string *)0x20, (unsigned int)v78); LABEL_43: v87 = v10; v26 = 0xFFFFFFFFFFFFFFFFLL / v10; v89 = *(_BYTE *)(v8 + 164); if ( v89 ) { if ( v91[0] ) { v94 = 0LL; v89 = v91[0]; v90 = 0; v91[0] = 0; LABEL_60: v36 = v100[0]; v37 = *(v100[0] - 3); if ( v37 ) goto LABEL_94; LABEL_61: v38 = (volatile signed __int32 *)(v36 - 3); if ( *(_DWORD *)&v91[1] || v97 ) goto LABEL_103; goto LABEL_63; } v90 = 0; Sa = (wchar_t *)(v8 + 120); v94 = 0LL; while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v16 ) { if ( v16 == *(_WORD *)(v8 + 36) ) goto LABEL_93; v53 = wmemchr(Sa, v16, N); if ( !v53 ) goto LABEL_93; v54 = (char *)v53 - (char *)Sa; v55 = v54 >> 1; if ( v54 > 30 ) v55 -= 6; if ( v26 >= v94 ) { v90 |= __PAIR64__(~(v55 >> 31), ~v55) < v87 * v94; ++*(_DWORD *)&v91[1]; v94 = v87 * v94 + v55; goto LABEL_129; } v56 = (_DWORD *)a1; v90 = v89; v57 = *(_DWORD *)(a1 + 8); if ( v57 < *(_DWORD *)(a1 + 12) ) { LABEL_130: v56[2] = v57 + 2; WORD2(a1) = -1; goto LABEL_131; } LABEL_144: (*(void (__fastcall **)(_DWORD *))(*v56 + 40))(v56); v56 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v60 = v89; goto LABEL_135; } LABEL_131: v58 = (__int16 *)v56[2]; if ( (unsigned int)v58 >= v56[3] ) v59 = (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56); else v59 = *v58; v60 = 0; if ( v59 == -1 ) { LODWORD(a1) = 0; v60 = v89; } LABEL_135: v61 = a3 == -1; v62 = v61 & (a2 != 0); if ( v62 ) { v64 = (_WORD *)a2[2]; v65 = (unsigned int)v64 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v64; v61 = 0; if ( v65 == -1 ) { a2 = 0; v61 = v62; } } if ( v61 == v60 ) goto LABEL_60; v16 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v63 = *(_WORD **)(a1 + 8); v16 = (unsigned int)v63 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v63; if ( v16 == 0xFFFF ) LODWORD(a1) = 0; } } if ( !*(_DWORD *)&v91[1] ) { v89 = 0; *(_DWORD *)v91 = *(unsigned __int8 *)(v8 + 16); goto LABEL_60; } std::string::push_back(v100, (std::string *)v91[1], v79); *(_DWORD *)&v91[1] = 0; LABEL_129: v56 = (_DWORD *)a1; v57 = *(_DWORD *)(a1 + 8); if ( v57 < *(_DWORD *)(a1 + 12) ) goto LABEL_130; goto LABEL_144; } v90 = 0; if ( v91[0] ) { v76 = v91[0]; v94 = 0LL; v91[0] = 0; v89 = v76; goto LABEL_60; } v94 = 0LL; LABEL_46: v27 = v16; if ( S > 10 ) { if ( (unsigned __int16)(v16 - 48) <= 9u ) goto LABEL_49; while ( (unsigned __int16)(v16 - 97) <= 5u ) { v28 = v27 - 87; if ( v26 < v94 ) goto LABEL_51; LABEL_84: v44 = v28 >> 31; v45 = v28; v90 |= __PAIR64__(~(v28 >> 31), ~v28) < v87 * v94; v29 = (_DWORD *)a1; v94 = v87 * v94 + __PAIR64__(v44, v45); ++*(_DWORD *)&v91[1]; v30 = *(_DWORD *)(a1 + 8); if ( v30 < *(_DWORD *)(a1 + 12) ) goto LABEL_52; LABEL_85: (*(void (__fastcall **)(_DWORD *))(*v29 + 40))(v29); v29 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_53; v33 = 1; LABEL_57: v34 = a3 == -1; v35 = v34 & (a2 != 0); if ( v35 ) { v50 = (_WORD *)a2[2]; v51 = (unsigned int)v50 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v50; v34 = 0; if ( v51 == -1 ) { a2 = 0; v34 = v35; } } if ( v34 == v33 ) { v89 = 1; goto LABEL_60; } v16 = WORD2(a1); if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) goto LABEL_46; v46 = *(_WORD **)(a1 + 8); v16 = (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v46; if ( v16 != 0xFFFF ) goto LABEL_46; LODWORD(a1) = 0; if ( S <= 10 ) goto LABEL_93; v27 = 0xFFFF; } if ( (unsigned __int16)(v16 - 65) <= 5u ) { v28 = v27 - 55; goto LABEL_50; } } else if ( v16 > 0x2Fu && (unsigned __int16)(S + 48) > v16 ) { LABEL_49: v28 = v16 - 48; LABEL_50: if ( v26 >= v94 ) goto LABEL_84; LABEL_51: v29 = (_DWORD *)a1; v90 = 1; v30 = *(_DWORD *)(a1 + 8); if ( v30 >= *(_DWORD *)(a1 + 12) ) goto LABEL_85; LABEL_52: v29[2] = v30 + 2; WORD2(a1) = -1; LABEL_53: v31 = (__int16 *)v29[2]; if ( (unsigned int)v31 >= v29[3] ) v32 = (*(int (__fastcall **)(_DWORD *))(*v29 + 36))(v29); else v32 = *v31; v33 = 0; if ( v32 == -1 ) { LODWORD(a1) = 0; v33 = 1; } goto LABEL_57; } LABEL_93: v36 = v100[0]; v89 = 0; v37 = *(v100[0] - 3); if ( !v37 ) goto LABEL_61; LABEL_94: if ( v37 + 1 > *(v36 - 2) || (int)*(v36 - 1) > 0 ) std::string::reserve(v100, (std::string *)(v37 + 1), v79); *((_BYTE *)v100[0] + *(v100[0] - 3)) = v91[1]; v47 = v100[0]; v48 = v100[0] - 3; if ( (_UNKNOWN *)v100[0] != &unk_4E93FC ) { *(v100[0] - 1) = 0; *(v47 - 3) = v37 + 1; *((_BYTE *)v48 + v37 + 13) = 0; v47 = v100[0]; v48 = v100[0] - 3; } v85 = v48; v88 = v47; v49 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v100); v38 = (volatile signed __int32 *)v85; if ( !v49 ) *a5 = 4; if ( !*(_DWORD *)&v91[1] && !v97 && !*(v88 - 3) ) goto LABEL_63; LABEL_103: if ( v91[0] ) { LABEL_63: v39 = a6; *a6 = 0; v39[1] = 0; *a5 = 4; goto LABEL_64; } if ( v90 ) { v71 = a6; *a6 = -1; v71[1] = -1; *a5 = 4; } else { if ( v81 ) v94 = -(__int64)v94; *(_QWORD *)a6 = v94; } LABEL_64: if ( v89 ) *a5 |= 2u; result = a1; if ( v38 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) { v98 = a1; std::string::_Rep::_M_dispose(v38, (int)&v99); return v98; } return result; } // 472347: variable 'v78' is possibly undefined // 4723B1: variable 'v80' is possibly undefined // 471EA8: variable 'v79' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (00472570) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_float( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int **a6) { unsigned int **v6; // ebx unsigned __int8 v7; // dl char v8; // al char v9; // si wchar_t v10; // si char v11; // al int v12; // esi char v13; // cl unsigned int *v14; // eax _DWORD *v15; // ecx unsigned int v16; // eax __int16 *v17; // eax __int16 v18; // ax char v19; // di char v20; // dl char v21; // si _WORD *v22; // eax int v23; // edi unsigned int *v24; // eax unsigned int v25; // eax int v26; // eax char v27; // al bool v28; // zf unsigned int *v29; // edx int v30; // esi unsigned int *v31; // eax unsigned int *v32; // edx int v33; // edi unsigned int *v34; // edx unsigned int *v35; // eax _DWORD *v36; // ecx unsigned int v37; // eax __int16 *v38; // eax __int16 v39; // ax char v40; // di char v41; // dl char v42; // si int v43; // esi char v44; // al __int64 v45; // kr00_8 wchar_t *v47; // eax int v48; // esi unsigned int *v49; // eax _WORD *v50; // eax __int16 v51; // ax _WORD *v52; // eax __int16 v53; // ax int v54; // edi unsigned int *v55; // eax _DWORD *v56; // ecx unsigned int v57; // eax __int16 *v58; // eax __int16 v59; // ax char v60; // si char v61; // al char v62; // di __int16 v63; // dx int v64; // edi char v65; // cl unsigned int *v66; // eax char v67; // si unsigned int *v68; // eax wchar_t *v69; // eax _WORD *v70; // eax __int16 v71; // dx _WORD *v72; // eax unsigned int *v73; // eax unsigned int *v74; // edx __int16 v75; // dx char v76; // dl unsigned int **v77; // edi _DWORD *v78; // ecx unsigned int v79; // eax __int16 *v80; // eax __int16 v81; // ax char v82; // bl char v83; // al char v84; // dl int v85; // edx unsigned int v86; // ebx unsigned int *v87; // eax __int16 *v88; // eax __int16 v89; // cx _WORD *v90; // eax __int16 *v91; // eax __int16 v92; // cx unsigned __int8 v93; // si _WORD *v94; // eax __int16 v95; // ax __int16 v96; // ax _WORD *v97; // eax unsigned int v98; // eax unsigned int *v99; // eax wchar_t *v100; // eax __int16 v101; // ax unsigned int v102; // [esp+4h] [ebp-54h] std::string *v103; // [esp+18h] [ebp-40h] std::string *v104; // [esp+18h] [ebp-40h] std::string *v105; // [esp+18h] [ebp-40h] wchar_t *S; // [esp+1Ch] [ebp-3Ch] char v107; // [esp+21h] [ebp-37h] __int16 v108; // [esp+22h] [ebp-36h] bool v109; // [esp+23h] [ebp-35h] int v110; // [esp+24h] [ebp-34h] char v111; // [esp+28h] [ebp-30h] char v112; // [esp+28h] [ebp-30h] unsigned int *v113; // [esp+28h] [ebp-30h] char v114; // [esp+28h] [ebp-30h] int v115; // [esp+28h] [ebp-30h] char v116; // [esp+28h] [ebp-30h] unsigned __int8 v117; // [esp+28h] [ebp-30h] int v118; // [esp+2Ch] [ebp-2Ch] char v119; // [esp+3Bh] [ebp-1Dh] BYREF unsigned int *v120[7]; // [esp+3Ch] [ebp-1Ch] BYREF v6 = a6; v118 = std::__use_cache>::operator()((int *)(a4 + 108)); v7 = WORD2(a1) == 0xFFFF; if ( (v7 & ((_DWORD)a1 != 0)) != 0 ) { v93 = v7 & ((_DWORD)a1 != 0); v94 = *(_WORD **)(a1 + 8); v95 = (unsigned int)v94 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v94; v7 = 0; if ( v95 == -1 ) { LODWORD(a1) = 0; v7 = v93; } } v8 = a3 == -1; v9 = v8 & (a2 != 0); if ( v9 ) { v91 = (__int16 *)a2[2]; if ( (unsigned int)v91 >= a2[3] ) { v117 = v7; v101 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v7 = v117; v92 = v101; } else { v92 = *v91; } v8 = 0; if ( v92 == -1 ) { a2 = 0; v8 = v9; } } if ( v8 == v7 ) { v110 = 0; v10 = 0; v111 = 0; v109 = 1; v11 = *(_BYTE *)(v118 + 16); goto LABEL_5; } v10 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v97 = *(_WORD **)(a1 + 8); v10 = (unsigned int)v97 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v97; if ( v10 == 0xFFFF ) LODWORD(a1) = 0; } v75 = *(_WORD *)(v118 + 114); v11 = *(_BYTE *)(v118 + 16); if ( v75 != v10 && *(_WORD *)(v118 + 112) != v10 || v11 && *(_WORD *)(v118 + 38) == v10 || *(_WORD *)(v118 + 36) == v10 ) { goto LABEL_167; } std::string::push_back(v6, (std::string *)(2 * (v75 != (__int16)v10) + 43), v102); v98 = *(_DWORD *)(a1 + 8); if ( v98 >= *(_DWORD *)(a1 + 12) ) std::wstreambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v98 + 2; WORD2(a1) = -1; v109 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !v109 ) { v10 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); v11 = *(_BYTE *)(v118 + 16); LABEL_167: v110 = 0; v76 = 0; v77 = v6; while ( 1 ) { if ( v11 && *(_WORD *)(v118 + 38) == v10 ) { v111 = v76; v6 = v77; v120[0] = (unsigned int *)&unk_4E93FC; v109 = 0; goto LABEL_162; } if ( *(_WORD *)(v118 + 36) == v10 || *(_WORD *)(v118 + 120) != v10 ) { v111 = v76; v6 = v77; v109 = 0; goto LABEL_5; } if ( v76 ) goto LABEL_173; v85 = *(*v77 - 3); v86 = v85 + 1; if ( v85 + 1 > *(*v77 - 2) || (int)*(*v77 - 1) > 0 ) { v115 = *(*v77 - 3); std::string::reserve(v77, (std::string *)(v85 + 1), v102); v85 = v115; } *((_BYTE *)*v77 + *(*v77 - 3)) = 48; v87 = *v77; if ( *v77 == (unsigned int *)&unk_4E93FC ) { LABEL_173: v78 = (_DWORD *)a1; ++v110; v79 = *(_DWORD *)(a1 + 8); if ( v79 < *(_DWORD *)(a1 + 12) ) goto LABEL_174; } else { *(v87 - 1) = 0; *(v87 - 3) = v86; *((_BYTE *)v87 + v85 + 1) = 0; v78 = (_DWORD *)a1; ++v110; v79 = *(_DWORD *)(a1 + 8); if ( v79 < *(_DWORD *)(a1 + 12) ) { LABEL_174: v78[2] = v79 + 2; WORD2(a1) = -1; goto LABEL_175; } } (*(void (__fastcall **)(_DWORD *))(*v78 + 40))(v78); v78 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v82 = 1; goto LABEL_179; } LABEL_175: v80 = (__int16 *)v78[2]; if ( (unsigned int)v80 >= v78[3] ) v81 = (*(int (__fastcall **)(_DWORD *))(*v78 + 36))(v78); else v81 = *v80; v82 = 0; if ( v81 == -1 ) { LODWORD(a1) = 0; v82 = 1; } LABEL_179: v83 = a3 == -1; v84 = v83 & (a2 != 0); if ( v84 ) { v88 = (__int16 *)a2[2]; if ( (unsigned int)v88 >= a2[3] ) { v116 = v84; v96 = (*(int (**)(void))(*a2 + 36))(); v84 = v116; v89 = v96; } else { v89 = *v88; } v83 = 0; if ( v89 == -1 ) { a2 = 0; v83 = v84; } } if ( v83 == v82 ) { v111 = 1; v6 = v77; v109 = 1; v11 = *(_BYTE *)(v118 + 16); goto LABEL_5; } v10 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v90 = *(_WORD **)(a1 + 8); v10 = (unsigned int)v90 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v90; if ( v10 == 0xFFFF ) LODWORD(a1) = 0; } v76 = 1; v11 = *(_BYTE *)(v118 + 16); } } v110 = 0; v111 = 0; v11 = *(_BYTE *)(v118 + 16); LABEL_5: v120[0] = (unsigned int *)&unk_4E93FC; if ( v11 ) LABEL_162: std::string::reserve(v120, (std::string *)0x20, v102); v107 = *(_BYTE *)(v118 + 164); if ( !v107 ) { if ( !v109 ) { v108 = 0; LABEL_9: if ( (unsigned __int16)(v10 - 48) <= 9u ) { v112 = v10; v12 = *(*v6 - 3); if ( v12 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)(v12 + 1), v102); v13 = v112; v111 = 1; *((_BYTE *)*v6 + *(*v6 - 3)) = v13; v14 = *v6; if ( *v6 != (unsigned int *)&unk_4E93FC ) { *(v14 - 1) = 0; *(v14 - 3) = v12 + 1; *((_BYTE *)v14 + v12 + 1) = 0; } goto LABEL_15; } while ( 1 ) { if ( *(_WORD *)(v118 + 36) == v10 && !v108 ) { v108 = 1; std::string::push_back(v6, (std::string *)0x2E, v102); LABEL_15: v15 = (_DWORD *)a1; v16 = *(_DWORD *)(a1 + 8); if ( v16 >= *(_DWORD *)(a1 + 12) ) goto LABEL_47; LABEL_16: v15[2] = v16 + 2; WORD2(a1) = -1; LABEL_17: v17 = (__int16 *)v15[2]; if ( (unsigned int)v17 >= v15[3] ) v18 = (*(int (__fastcall **)(_DWORD *))(*v15 + 36))(v15); else v18 = *v17; v19 = 0; if ( v18 == -1 ) { LODWORD(a1) = 0; v19 = 1; } goto LABEL_21; } if ( *(_WORD *)(v118 + 148) != v10 && *(_WORD *)(v118 + 160) != v10 ) goto LABEL_74; v111 &= HIBYTE(v108) ^ 1; if ( !v111 ) goto LABEL_74; v23 = *(*v6 - 3); if ( v23 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)(v23 + 1), v102); *((_BYTE *)*v6 + *(*v6 - 3)) = 101; v24 = *v6; if ( *v6 != (unsigned int *)&unk_4E93FC ) { *(v24 - 1) = 0; *(v24 - 3) = v23 + 1; *((_BYTE *)v24 + v23 + 1) = 0; } v25 = *(_DWORD *)(a1 + 8); if ( v25 >= *(_DWORD *)(a1 + 12) ) std::wstreambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v25 + 2; WORD2(a1) = -1; if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) goto LABEL_245; v10 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v100 = *(wchar_t **)(a1 + 8); if ( (unsigned int)v100 >= *(_DWORD *)(a1 + 12) ) v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); else v10 = *v100; if ( v10 == 0xFFFF ) LODWORD(a1) = 0; } if ( *(_WORD *)(v118 + 114) == v10 ) { v26 = 43; } else { if ( *(_WORD *)(v118 + 112) != v10 ) { HIBYTE(v108) = v111; goto LABEL_9; } v26 = 45; } std::string::push_back(v6, (std::string *)v26, v102); v15 = (_DWORD *)a1; HIBYTE(v108) = v111; v16 = *(_DWORD *)(a1 + 8); if ( v16 < *(_DWORD *)(a1 + 12) ) goto LABEL_16; LABEL_47: (*(void (__fastcall **)(_DWORD *))(*v15 + 40))(v15); v15 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_17; v19 = 1; LABEL_21: v20 = a3 == -1; v21 = v20 & (a2 != 0); if ( v21 ) { v50 = (_WORD *)a2[2]; v51 = (unsigned int)v50 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v50; v20 = 0; if ( v51 == -1 ) { a2 = 0; v20 = v21; } } if ( v20 == v19 ) goto LABEL_74; v10 = WORD2(a1); if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) goto LABEL_9; v22 = *(_WORD **)(a1 + 8); v10 = (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v22; if ( v10 != 0xFFFF ) goto LABEL_9; LODWORD(a1) = 0; } } LABEL_233: v29 = v120[0]; if ( *(v120[0] - 3) ) goto LABEL_77; goto LABEL_82; } if ( v109 ) goto LABEL_233; v108 = 0; v27 = *(_BYTE *)(v118 + 16); S = (wchar_t *)(v118 + 120); while ( 1 ) { while ( 1 ) { if ( v27 && *(_WORD *)(v118 + 38) == v10 ) { LOBYTE(v108) = HIBYTE(v108) | v108; if ( (_BYTE)v108 ) { v29 = v120[0]; v30 = *(v120[0] - 3); LABEL_79: if ( !v30 ) goto LABEL_82; goto LABEL_80; } if ( !v110 ) { v99 = *v6; if ( (int)*(*v6 - 1) <= 0 ) { if ( v99 != (unsigned int *)&unk_4E93FC ) { *(v99 - 1) = 0; *(v99 - 3) = 0; *(_BYTE *)v99 = 0; } } else { if ( v99 != (unsigned int *)&unk_4E93FC ) std::string::_Rep::_M_dispose((volatile signed __int32 *)v99 - 3, (int)&v119); *v6 = (unsigned int *)&unk_4E93FC; } goto LABEL_233; } v64 = *(v120[0] - 3); if ( v64 + 1 > *(v120[0] - 2) || *((int *)v120[0] - 1) > 0 ) std::string::reserve(v120, (std::string *)(v64 + 1), v102); v65 = v110; HIBYTE(v108) = 0; v110 = 0; *((_BYTE *)v120[0] + *(v120[0] - 3)) = v65; v66 = v120[0]; v34 = v120[0] - 3; if ( (_UNKNOWN *)v120[0] != &unk_4E93FC ) { *(v120[0] - 1) = 0; *(v66 - 3) = v64 + 1; *((_BYTE *)v34 + v64 + 13) = 0; } LABEL_66: v36 = (_DWORD *)a1; v37 = *(_DWORD *)(a1 + 8); if ( v37 < *(_DWORD *)(a1 + 12) ) goto LABEL_67; goto LABEL_91; } if ( *(_WORD *)(v118 + 36) == v10 ) { v28 = v108 == 0; HIBYTE(v108) |= v108; v29 = v120[0]; v30 = *(v120[0] - 3); if ( !v28 ) goto LABEL_79; if ( v30 ) { v103 = (std::string *)(v30 + 1); if ( v30 + 1 > *(v120[0] - 2) || *((int *)v120[0] - 1) > 0 ) std::string::reserve(v120, v103, v102); *((_BYTE *)v120[0] + *(v120[0] - 3)) = v110; v31 = v120[0]; v32 = v120[0] - 3; if ( (_UNKNOWN *)v120[0] != &unk_4E93FC ) { *(v120[0] - 1) = 0; *(v31 - 3) = (unsigned int)v103; *((_BYTE *)v32 + v30 + 13) = 0; } } v33 = *(*v6 - 3); if ( v33 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)(v33 + 1), v102); v34 = (unsigned int *)*(*v6 - 3); LOBYTE(v108) = v107; *((_BYTE *)v34 + (_DWORD)*v6) = 46; v35 = *v6; if ( *v6 != (unsigned int *)&unk_4E93FC ) { *(v35 - 1) = 0; *(v35 - 3) = v33 + 1; *((_BYTE *)v35 + v33 + 1) = 0; } goto LABEL_66; } v47 = wmemchr(S, v10, 0xAu); if ( v47 ) break; if ( *(_WORD *)(v118 + 148) != v10 && *(_WORD *)(v118 + 160) != v10 ) goto LABEL_74; v29 = v120[0]; v28 = ((HIBYTE(v108) ^ 1) & (unsigned __int8)v111) == 0; v111 &= HIBYTE(v108) ^ 1; v43 = *(v120[0] - 3); if ( v28 ) goto LABEL_75; if ( v43 && !(_BYTE)v108 ) { v105 = (std::string *)(v43 + 1); if ( v43 + 1 > *(v120[0] - 2) || *((int *)v120[0] - 1) > 0 ) std::string::reserve(v120, v105, v102); *((_BYTE *)v120[0] + *(v120[0] - 3)) = v110; v73 = v120[0]; v74 = v120[0] - 3; if ( (_UNKNOWN *)v120[0] != &unk_4E93FC ) { *(v120[0] - 1) = 0; *(v73 - 3) = (unsigned int)v105; *((_BYTE *)v74 + v43 + 13) = 0; } } v54 = *(*v6 - 3); if ( v54 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)(v54 + 1), v102); *((_BYTE *)*v6 + *(*v6 - 3)) = 101; v55 = *v6; if ( *v6 != (unsigned int *)&unk_4E93FC ) { *(v55 - 1) = 0; *(v55 - 3) = v54 + 1; *((_BYTE *)v55 + v54 + 1) = 0; } v56 = (_DWORD *)a1; v57 = *(_DWORD *)(a1 + 8); if ( v57 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v56 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v60 = v111; goto LABEL_120; } } else { *(_DWORD *)(a1 + 8) = v57 + 2; WORD2(a1) = -1; } v58 = (__int16 *)v56[2]; if ( (unsigned int)v58 >= v56[3] ) v59 = (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56); else v59 = *v58; v60 = 0; if ( v59 == -1 ) { LODWORD(a1) = 0; v60 = v111; } LABEL_120: v61 = a3 == -1; v62 = v61 & (a2 != 0); if ( v62 ) { v70 = (_WORD *)a2[2]; v71 = (unsigned int)v70 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v70; v61 = 0; if ( v71 == -1 ) { a2 = 0; v61 = v62; } } if ( v61 == v60 ) { LABEL_245: v29 = v120[0]; if ( !*(v120[0] - 3) ) goto LABEL_82; goto LABEL_80; } v10 = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v72 = *(_WORD **)(a1 + 8); v10 = (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v72; if ( v10 == 0xFFFF ) LODWORD(a1) = 0; } v63 = *(_WORD *)(v118 + 114); v27 = *(_BYTE *)(v118 + 16); if ( v63 != v10 && *(_WORD *)(v118 + 112) != v10 ) goto LABEL_126; if ( v27 && *(_WORD *)(v118 + 38) == v10 ) { HIBYTE(v108) = *(_BYTE *)(v118 + 16); v111 = HIBYTE(v108); } else { if ( *(_WORD *)(v118 + 36) != v10 ) { v67 = 2 * (v63 != (__int16)v10) + 43; v104 = (std::string *)*(*v6 - 3); if ( (unsigned int)v104 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)((char *)v104 + 1), v102); *((_BYTE *)*v6 + *(*v6 - 3)) = v67; v68 = *v6; HIBYTE(v108) = v111; v34 = *v6 - 3; if ( *v6 != (unsigned int *)&unk_4E93FC ) { *(v68 - 1) = 0; *(v68 - 3) = (unsigned int)v104 + 1; *((_BYTE *)v104 + (_DWORD)v34 + 13) = 0; } goto LABEL_66; } LABEL_126: HIBYTE(v108) = v111; } } v114 = v47 - S + 48; v48 = *(*v6 - 3); if ( v48 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) std::string::reserve(v6, (std::string *)(v48 + 1), v102); v34 = (unsigned int *)*(*v6 - 3); *((_BYTE *)v34 + (_DWORD)*v6) = v114; v49 = *v6; if ( *v6 != (unsigned int *)&unk_4E93FC ) { *(v49 - 1) = 0; *(v49 - 3) = v48 + 1; *((_BYTE *)v49 + v48 + 1) = 0; } v36 = (_DWORD *)a1; ++v110; v111 = v107; v37 = *(_DWORD *)(a1 + 8); if ( v37 < *(_DWORD *)(a1 + 12) ) { LABEL_67: v36[2] = v37 + 2; WORD2(a1) = -1; goto LABEL_68; } LABEL_91: (*(void (__fastcall **)(_DWORD *))(*v36 + 40))(v36); v36 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v40 = v107; goto LABEL_72; } LABEL_68: v38 = (__int16 *)v36[2]; if ( (unsigned int)v38 >= v36[3] ) v39 = (*(int (__fastcall **)(_DWORD *, unsigned int *))(*v36 + 36))(v36, v34); else v39 = *v38; v40 = 0; if ( v39 == -1 ) { LODWORD(a1) = 0; v40 = v107; } LABEL_72: v41 = a3 == -1; v42 = v41 & (a2 != 0); if ( v42 ) { v52 = (_WORD *)a2[2]; v53 = (unsigned int)v52 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v52; v41 = 0; if ( v53 == -1 ) { a2 = 0; v41 = v42; } } if ( v41 == v40 ) break; v10 = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v69 = *(wchar_t **)(a1 + 8); if ( (unsigned int)v69 >= *(_DWORD *)(a1 + 12) ) v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); else v10 = *v69; v27 = *(_BYTE *)(v118 + 16); if ( v10 == 0xFFFF ) LODWORD(a1) = 0; } else { v27 = *(_BYTE *)(v118 + 16); } } LABEL_74: v29 = v120[0]; v43 = *(v120[0] - 3); LABEL_75: if ( !v43 ) goto LABEL_82; if ( v108 ) goto LABEL_80; LABEL_77: std::string::push_back(v120, (std::string *)(char)v110, v102); v29 = v120[0]; LABEL_80: v113 = v29; v44 = std::__verify_grouping(*(char **)(v118 + 8), *(_DWORD *)(v118 + 12), (const char **)v120); v29 = v113; if ( !v44 ) *a5 = 4; LABEL_82: v45 = a1; if ( v29 == (unsigned int *)&unk_4E93FC ) return a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v119); return v45; } // 47264C: variable 'v102' is possibly undefined // 47319A: variable 'v34' is possibly undefined //----- (004734D0) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); } //----- (004734E0) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (004734F0) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } //----- (00473500) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); } //----- (00473510) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); } //----- (00473520) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 20); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 474150: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (00473540) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 12); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 474160: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (00473560) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 24); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int( a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 474170: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (00473580) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 16); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int( a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 474180: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004735A0) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 28); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 474190: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004735C0) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6) { int (__stdcall *v7)(int, int, int, int, int, int, int); // eax v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 32); if ( v7 == std::num_get>::do_get ) return std::num_get>::_M_extract_int( a1, a2, a3, a4, a5, a6); else return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); } // 4741A0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004735E0) -------------------------------------------------------- int __stdcall std::num_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6) { int v6; // edi int result; // eax unsigned int v8[8]; // [esp+3Ch] [ebp-20h] BYREF v6 = *(_DWORD *)(a4 + 12); *(_DWORD *)(a4 + 12) = v6 & 0xFFFFFFB5 | 8; result = std::num_get>::_M_extract_int( a1, a2, a3, a4, a5, v8); *(_DWORD *)(a4 + 12) = v6; *a6 = v8[0]; return result; } // 4735E0: using guessed type unsigned int var_20[8]; //----- (00473680) -------------------------------------------------------- int __stdcall std::num_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, int a4, int *a5, _BYTE *a6) { int v6; // ebx _BYTE *v7; // edx _DWORD *v9; // edi _DWORD *v10; // esi int v11; // ecx int v12; // eax __int16 v13; // ax bool v14; // dl bool v15; // di bool v16; // si unsigned int v17; // eax bool v18; // cl char v19; // si char v20; // di char v21; // al char v22; // di unsigned __int16 v23; // ax __int16 *v24; // eax __int16 v25; // cx _DWORD *v26; // esi bool v27; // bl char v28; // cl unsigned int v29; // edx __int16 *v30; // eax __int16 v31; // ax unsigned __int16 *v32; // eax std::locale::_Impl *v33; // eax std::locale::_Impl *v34; // esi __int16 v35; // ax int v36; // eax void (__cdecl *v37)(void *); // [esp+4h] [ebp-64h] unsigned int v38; // [esp+8h] [ebp-60h] _DWORD *v39; // [esp+28h] [ebp-40h] bool v40; // [esp+2Dh] [ebp-3Bh] bool v41; // [esp+2Dh] [ebp-3Bh] bool v42; // [esp+2Dh] [ebp-3Bh] bool v43; // [esp+2Eh] [ebp-3Ah] bool v44; // [esp+2Fh] [ebp-39h] unsigned int v45; // [esp+30h] [ebp-38h] std::locale::facet *v46; // [esp+34h] [ebp-34h] bool v47; // [esp+34h] [ebp-34h] bool v48; // [esp+34h] [ebp-34h] __int64 v49; // [esp+38h] [ebp-30h] unsigned int v50[7]; // [esp+4Ch] [ebp-1Ch] BYREF v6 = a4; if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) { v50[0] = -1; v49 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, (int *)v50); LODWORD(a1) = v49; WORD2(a1) = WORD2(v49); if ( v50[0] > 1 ) { *a6 = 1; *a5 = 4; if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) { *a5 |= 2u; return a1; } } else { v7 = a6; *a6 = v50[0]; *v7 &= 1u; } return a1; } v46 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v9 = (_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * (_DWORD)v46); v10 = (_DWORD *)*v9; if ( !*v9 ) { v33 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v37); *((_DWORD *)v33 + 1) = 0; v34 = v33; *(_DWORD *)v33 = &off_4F65B0; *((_DWORD *)v33 + 2) = 0; *((_DWORD *)v33 + 3) = 0; *((_BYTE *)v33 + 16) = 0; *((_DWORD *)v33 + 5) = 0; *((_DWORD *)v33 + 6) = 0; *((_DWORD *)v33 + 7) = 0; *((_DWORD *)v33 + 8) = 0; *((_DWORD *)v33 + 9) = 0; *((_BYTE *)v33 + 164) = 0; std::__numpunct_cache::_M_cache((int)v33, v6 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v34, v46, v38); v10 = (_DWORD *)*v9; } v11 = v10[8]; v12 = v10[6]; v44 = v12 == 0; if ( !(v12 | v11) ) goto LABEL_57; v43 = 1; v13 = WORD2(a1); v45 = 0; v14 = 1; v39 = v10; v47 = v11 == 0; while ( 1 ) { v19 = v13 == -1; v20 = v19 & ((_DWORD)a1 != 0); if ( v20 ) { v30 = *(__int16 **)(a1 + 8); if ( (unsigned int)v30 >= *(_DWORD *)(a1 + 12) ) { v40 = v14; v31 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v14 = v40; } else { v31 = *v30; } v19 = 0; if ( v31 == -1 ) { LODWORD(a1) = 0; v19 = v20; } } v21 = a3 == -1; v22 = v21 & (a2 != 0); if ( v22 ) { v24 = (__int16 *)a2[2]; if ( (unsigned int)v24 >= a2[3] ) { v41 = v14; v35 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v14 = v41; v25 = v35; } else { v25 = *v24; } v21 = 0; if ( v25 == -1 ) break; } if ( v19 == v21 ) goto LABEL_37; LABEL_22: v23 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v32 = *(unsigned __int16 **)(a1 + 8); if ( (unsigned int)v32 >= *(_DWORD *)(a1 + 12) ) { v42 = v14; v23 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); v14 = v42; } else { v23 = *v32; } if ( v23 == 0xFFFF ) LODWORD(a1) = 0; } if ( !v47 ) v14 = *(_WORD *)(v39[7] + 2 * v45) == v23; if ( !v14 ) { if ( v44 ) { if ( v43 ) { if ( v39[6] == v45 && v45 ) { *a6 = 1; v36 = 0; LABEL_70: *a5 = v36; return a1; } LABEL_57: *a6 = 0; goto LABEL_58; } LABEL_59: *a6 = 0; *a5 = 4; return a1; } LABEL_10: v43 = *(_WORD *)(v39[5] + 2 * v45) == v23; goto LABEL_11; } if ( !v44 ) goto LABEL_10; LABEL_11: v15 = v47 && !v43; if ( v15 ) { if ( v14 ) { if ( v39[8] == v45 && v45 ) { *a6 = 0; v36 = 0; goto LABEL_70; } goto LABEL_57; } goto LABEL_59; } v16 = v14 || v43; if ( !v14 && !v43 ) goto LABEL_59; ++v45; v17 = *(_DWORD *)(a1 + 8); if ( v17 >= *(_DWORD *)(a1 + 12) ) { v48 = v14; (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v14 = v48; } else { *(_DWORD *)(a1 + 8) = v17 + 2; } WORD2(a1) = -1; if ( !v14 ) { v47 = v16; LABEL_32: v44 = v39[6] <= v45; v18 = v44 && v47; v43 = v16; goto LABEL_18; } v47 = v39[8] <= v45; if ( v43 ) goto LABEL_32; v44 = v14; v18 = v39[8] <= v45; LABEL_18: v13 = -1; if ( v18 ) { v27 = v14; v26 = v39; v28 = v15; v29 = v45; goto LABEL_38; } } a2 = 0; if ( v19 != v22 ) goto LABEL_22; LABEL_37: v26 = v39; v27 = v14; v28 = 1; v29 = v45; LABEL_38: if ( v27 && v26[8] == v29 && v29 ) { *a6 = 0; if ( !v43 || v26[6] != v29 ) goto LABEL_73; LABEL_58: *a5 = 4; return a1; } if ( v43 && v26[6] == v29 && v29 ) { *a6 = 1; LABEL_73: v36 = 2 * (v28 != 0); goto LABEL_70; } *a6 = 0; if ( !v28 ) goto LABEL_58; *a5 = 6; return a1; } // 473A07: variable 'v37' is possibly undefined // 473A74: variable 'v38' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); // 473680: using guessed type unsigned int var_1C[7]; //----- (00473BE0) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, double *a6) { __int64 v6; // rax _DWORD *v7; // esi __int16 v8; // di _DWORD *v9; // ebx int v10; // eax char v11; // di int v12; // edx char *v13; // ecx __int16 *v15; // eax __int16 v16; // ax unsigned __int16 *v17; // eax int v18; // edx unsigned int v19; // [esp+4h] [ebp-64h] char v20; // [esp+2Bh] [ebp-3Dh] char *String; // [esp+48h] [ebp-20h] BYREF int v22[7]; // [esp+4Ch] [ebp-1Ch] BYREF String = (char *)&unk_4E93FC; std::string::reserve((unsigned int **)&String, (std::string *)0x20, v19); v6 = std::num_get>::_M_extract_float( a1, a2, a3, a4, a5, (unsigned int **)&String); v7 = (_DWORD *)v6; v8 = WORD2(v6); v9 = (_DWORD *)v6; v22[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a6, a5); v11 = v8 == -1; v20 = v11 & (v7 != 0); if ( v20 ) { v17 = (unsigned __int16 *)v7[2]; if ( (unsigned int)v17 >= v7[3] ) v10 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v10 = *v17; v11 = (_WORD)v10 != 0xFFFF ? 0 : v20; v9 = (_WORD)v10 == 0xFFFF ? 0 : v7; } LOBYTE(v10) = a3 == -1; v12 = v10; if ( a2 && a3 == -1 ) { v15 = (__int16 *)a2[2]; if ( (unsigned int)v15 >= a2[3] ) v16 = (*(int (__fastcall **)(_DWORD *, int))(*a2 + 36))(a2, v12); else v16 = *v15; LOBYTE(v12) = v16 == -1; } if ( v11 == (_BYTE)v12 ) *a5 |= 2u; v13 = String - 12; if ( String != (char *)&unk_4E93FC ) { if ( _CRT_MT ) { v18 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); } else { v18 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v18 - 1; } if ( v18 <= 0 ) std::string::_Rep::_M_destroy(v13, (int)v22); } return v9; } // 473C13: variable 'v19' is possibly undefined // 473CB0: variable 'v10' is possibly undefined // 15412D0: using guessed type int _CRT_MT; // 473BE0: using guessed type int var_1C[7]; //----- (00473DB0) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, long double *a6) { __int64 v6; // rax _DWORD *v7; // esi __int16 v8; // di _DWORD *v9; // ebx int v10; // eax char v11; // di int v12; // edx char *v13; // ecx __int16 *v15; // eax __int16 v16; // ax unsigned __int16 *v17; // eax int v18; // edx unsigned int v19; // [esp+4h] [ebp-64h] char v20; // [esp+2Bh] [ebp-3Dh] char *String; // [esp+48h] [ebp-20h] BYREF int v22[7]; // [esp+4Ch] [ebp-1Ch] BYREF String = (char *)&unk_4E93FC; std::string::reserve((unsigned int **)&String, (std::string *)0x20, v19); v6 = std::num_get>::_M_extract_float( a1, a2, a3, a4, a5, (unsigned int **)&String); v7 = (_DWORD *)v6; v8 = WORD2(v6); v9 = (_DWORD *)v6; v22[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a6, a5); v11 = v8 == -1; v20 = v11 & (v7 != 0); if ( v20 ) { v17 = (unsigned __int16 *)v7[2]; if ( (unsigned int)v17 >= v7[3] ) v10 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v10 = *v17; v11 = (_WORD)v10 != 0xFFFF ? 0 : v20; v9 = (_WORD)v10 == 0xFFFF ? 0 : v7; } LOBYTE(v10) = a3 == -1; v12 = v10; if ( a2 && a3 == -1 ) { v15 = (__int16 *)a2[2]; if ( (unsigned int)v15 >= a2[3] ) v16 = (*(int (__fastcall **)(_DWORD *, int))(*a2 + 36))(a2, v12); else v16 = *v15; LOBYTE(v12) = v16 == -1; } if ( v11 == (_BYTE)v12 ) *a5 |= 2u; v13 = String - 12; if ( String != (char *)&unk_4E93FC ) { if ( _CRT_MT ) { v18 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); } else { v18 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v18 - 1; } if ( v18 <= 0 ) std::string::_Rep::_M_destroy(v13, (int)v22); } return v9; } // 473DE3: variable 'v19' is possibly undefined // 473E80: variable 'v10' is possibly undefined // 15412D0: using guessed type int _CRT_MT; // 473DB0: using guessed type int var_1C[7]; //----- (00473F80) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, float *a6) { __int64 v6; // rax _DWORD *v7; // esi __int16 v8; // di _DWORD *v9; // ebx int v10; // eax char v11; // di int v12; // edx char *v13; // ecx __int16 *v15; // eax __int16 v16; // ax unsigned __int16 *v17; // eax int v18; // edx unsigned int v19; // [esp+4h] [ebp-64h] char v20; // [esp+2Bh] [ebp-3Dh] char *String; // [esp+48h] [ebp-20h] BYREF int v22[7]; // [esp+4Ch] [ebp-1Ch] BYREF String = (char *)&unk_4E93FC; std::string::reserve((unsigned int **)&String, (std::string *)0x20, v19); v6 = std::num_get>::_M_extract_float( a1, a2, a3, a4, a5, (unsigned int **)&String); v7 = (_DWORD *)v6; v8 = WORD2(v6); v9 = (_DWORD *)v6; v22[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a6, a5); v11 = v8 == -1; v20 = v11 & (v7 != 0); if ( v20 ) { v17 = (unsigned __int16 *)v7[2]; if ( (unsigned int)v17 >= v7[3] ) v10 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); else v10 = *v17; v11 = (_WORD)v10 != 0xFFFF ? 0 : v20; v9 = (_WORD)v10 == 0xFFFF ? 0 : v7; } LOBYTE(v10) = a3 == -1; v12 = v10; if ( a2 && a3 == -1 ) { v15 = (__int16 *)a2[2]; if ( (unsigned int)v15 >= a2[3] ) v16 = (*(int (__fastcall **)(_DWORD *, int))(*a2 + 36))(a2, v12); else v16 = *v15; LOBYTE(v12) = v16 == -1; } if ( v11 == (_BYTE)v12 ) *a5 |= 2u; v13 = String - 12; if ( String != (char *)&unk_4E93FC ) { if ( _CRT_MT ) { v18 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); } else { v18 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v18 - 1; } if ( v18 <= 0 ) std::string::_Rep::_M_destroy(v13, (int)v22); } return v9; } // 473FB3: variable 'v19' is possibly undefined // 474050: variable 'v10' is possibly undefined // 15412D0: using guessed type int _CRT_MT; // 473F80: using guessed type int var_1C[7]; //----- (004741B0) -------------------------------------------------------- _BYTE *__stdcall std::num_put>::_M_group_int( char *a1, int a2, char a3, int a4, _BYTE *a5, _BYTE *a6, _DWORD *a7) { _BYTE *result; // eax result = (_BYTE *)(std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5); *a7 = result; return result; } //----- (00474200) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, _DWORD *a3, int a4, int a5) { int v5; // ebx int *v6; // edi int v7; // esi unsigned int v8; // edi void *v9; // esp void *v10; // esp unsigned int v11; // eax int v12; // eax int v13; // ebx char *v14; // edx int v15; // esi char v16; // si int v18; // eax void *v19; // esp void *v20; // esp int v21; // eax void *v22; // esp void *v23; // esp char *v24; // eax _BYTE *v25; // eax char v26; // al std::locale::_Impl *v27; // eax std::locale::_Impl *v28; // esi int v29; // [esp-14h] [ebp-6Ch] int v30; // [esp-Ch] [ebp-64h] char v31[2]; // [esp+0h] [ebp-58h] BYREF _BYTE v32[2]; // [esp+2h] [ebp-56h] BYREF void (__cdecl *v33)(void *); // [esp+4h] [ebp-54h] unsigned int v34; // [esp+8h] [ebp-50h] char v35[20]; // [esp+14h] [ebp-44h] BYREF unsigned int v36; // [esp+28h] [ebp-30h] int v37; // [esp+2Ch] [ebp-2Ch] char *v38; // [esp+30h] [ebp-28h] int v39; // [esp+34h] [ebp-24h] int v40; // [esp+38h] [ebp-20h] int v41; // [esp+3Ch] [ebp-1Ch] v40 = a1; v39 = a2; v37 = a4; v5 = std::locale::id::_M_id(&std::numpunct::id); v6 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v5); v7 = *v6; if ( !*v6 ) { v27 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v33); *((_DWORD *)v27 + 1) = 0; v28 = v27; *(_DWORD *)v27 = &off_4F65A0; *((_DWORD *)v27 + 2) = 0; *((_DWORD *)v27 + 3) = 0; *((_BYTE *)v27 + 16) = 0; *((_DWORD *)v27 + 5) = 0; *((_DWORD *)v27 + 6) = 0; *((_DWORD *)v27 + 7) = 0; *((_DWORD *)v27 + 8) = 0; *((_WORD *)v27 + 18) = 0; *((_BYTE *)v27 + 100) = 0; std::__numpunct_cache::_M_cache((int)v27, (int)(a3 + 27)); std::locale::_Impl::_M_install_cache(a3[27], v28, (const std::locale::facet *)v5, v34); v7 = *v6; } v41 = v7 + 38; v8 = a3[3]; v9 = alloca(32); v10 = alloca(32); v36 = v8 & 0x4A; v11 = a5; LOBYTE(v41) = v36 != 8 && v36 != 64; if ( a5 <= 0 && (v8 & 0x4A) != 8 && (v8 & 0x4A) != 64 ) v11 = -a5; v38 = v31; v12 = std::__int_to_char(v35, v11, v7 + 38, v8, v41); v13 = v12; v14 = &v38[-v12 + 20]; if ( !*(_BYTE *)(v7 + 16) ) { if ( (_BYTE)v41 ) goto LABEL_8; LABEL_18: if ( (v8 & 0x200) != 0 && a5 ) { if ( v36 == 64 ) { v26 = *(_BYTE *)(v7 + 42); ++v13; --v14; } else { v13 += 2; v14 -= 2; v14[1] = *(_BYTE *)(v7 + ((v8 >> 14) & 1) + 40); v26 = *(_BYTE *)(v7 + 42); } *v14 = v26; } goto LABEL_10; } v21 = 16 * ((unsigned int)(2 * v12 + 29) >> 4); v22 = alloca(v21); v23 = alloca(v21); v29 = *(_DWORD *)(v7 + 12); v24 = *(char **)(v7 + 8); v38 = v32; v25 = std::__add_grouping(v32, *(_BYTE *)(v7 + 37), v24, v29, v14, &v14[v13]); v14 = v38; v13 = v25 - v38; if ( !(_BYTE)v41 ) goto LABEL_18; LABEL_8: if ( a5 < 0 ) { ++v13; *--v14 = *(_BYTE *)(v7 + 38); } else if ( (v8 & 0x800) != 0 ) { ++v13; *--v14 = *(_BYTE *)(v7 + 39); v15 = a3[2]; if ( v15 <= v13 ) goto LABEL_11; goto LABEL_15; } LABEL_10: v15 = a3[2]; if ( v15 <= v13 ) goto LABEL_11; LABEL_15: v18 = 16 * ((unsigned int)(v15 + 27) >> 4); v19 = alloca(v18); v20 = alloca(v18); v30 = v13; v13 = v15; std::__pad>::_S_pad(a3, (void *)(char)v37, v31, v14, v15, v30); v14 = v31; LABEL_11: a3[2] = 0; v16 = v39; if ( !(_BYTE)v39 ) v16 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v40 + 48))(v40, v14, v13) != v13; LOBYTE(v41) = v16; return v40; } // 4E9608: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); // 474200: using guessed type char anonymous_2[20]; //----- (00474520) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, _DWORD *a3, int a4, int a5) { int v5; // ebx int *v6; // edi int v7; // esi unsigned int v8; // edi void *v9; // esp void *v10; // esp int v11; // eax int v12; // ebx char *v13; // edx int v14; // esi char v15; // si int v17; // eax void *v18; // esp void *v19; // esp char *v20; // eax _BYTE *v21; // eax char v22; // al int v23; // eax void *v24; // esp void *v25; // esp std::locale::_Impl *v26; // eax std::locale::_Impl *v27; // esi int v28; // [esp-14h] [ebp-6Ch] int v29; // [esp-Ch] [ebp-64h] char v30[2]; // [esp+0h] [ebp-58h] BYREF _BYTE v31[2]; // [esp+2h] [ebp-56h] BYREF void (__cdecl *v32)(void *); // [esp+4h] [ebp-54h] unsigned int v33; // [esp+8h] [ebp-50h] char v34[16]; // [esp+14h] [ebp-44h] BYREF int v35; // [esp+24h] [ebp-34h] unsigned int v36; // [esp+28h] [ebp-30h] int v37; // [esp+2Ch] [ebp-2Ch] char *v38; // [esp+30h] [ebp-28h] int v39; // [esp+34h] [ebp-24h] bool v40; // [esp+3Bh] [ebp-1Dh] int v41; // [esp+3Ch] [ebp-1Ch] v41 = a1; v39 = a2; v37 = a4; v5 = std::locale::id::_M_id(&std::numpunct::id); v6 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v5); v7 = *v6; if ( !*v6 ) { v26 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v32); *((_DWORD *)v26 + 1) = 0; v27 = v26; *(_DWORD *)v26 = &off_4F65A0; *((_DWORD *)v26 + 2) = 0; *((_DWORD *)v26 + 3) = 0; *((_BYTE *)v26 + 16) = 0; *((_DWORD *)v26 + 5) = 0; *((_DWORD *)v26 + 6) = 0; *((_DWORD *)v26 + 7) = 0; *((_DWORD *)v26 + 8) = 0; *((_WORD *)v26 + 18) = 0; *((_BYTE *)v26 + 100) = 0; std::__numpunct_cache::_M_cache((int)v26, (int)(a3 + 27)); std::locale::_Impl::_M_install_cache(a3[27], v27, (const std::locale::facet *)v5, v33); v7 = *v6; } v35 = v7 + 38; v8 = a3[3]; v9 = alloca(32); v10 = alloca(32); v36 = v8 & 0x4A; v38 = v30; v40 = v36 != 8 && v36 != 64; v11 = std::__int_to_char(v34, a5, v7 + 38, v8, v40); v12 = v11; v13 = &v38[-v11 + 20]; if ( *(_BYTE *)(v7 + 16) ) { v17 = 16 * ((unsigned int)(2 * v11 + 29) >> 4); v18 = alloca(v17); v19 = alloca(v17); v28 = *(_DWORD *)(v7 + 12); v20 = *(char **)(v7 + 8); v38 = v31; v21 = std::__add_grouping(v31, *(_BYTE *)(v7 + 37), v20, v28, v13, &v13[v12]); v13 = v38; v12 = v21 - v38; if ( v40 ) goto LABEL_5; } else if ( v40 ) { goto LABEL_5; } if ( (v8 & 0x200) != 0 && a5 ) { if ( v36 == 64 ) { v22 = *(_BYTE *)(v7 + 42); ++v12; --v13; } else { v12 += 2; v13 -= 2; v13[1] = *(_BYTE *)(v35 + ((v8 >> 14) & 1) + 2); v22 = *(_BYTE *)(v7 + 42); } *v13 = v22; } LABEL_5: v14 = a3[2]; if ( v14 > v12 ) { v23 = 16 * ((unsigned int)(v14 + 27) >> 4); v24 = alloca(v23); v25 = alloca(v23); v29 = v12; v12 = a3[2]; std::__pad>::_S_pad(a3, (void *)(char)v37, v30, v13, v14, v29); v13 = v30; } a3[2] = 0; v15 = v39; if ( !(_BYTE)v39 ) v15 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v41 + 48))(v41, v13, v12) != v12; v40 = v15; return v41; } // 4E9608: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); // 474520: using guessed type char anonymous_2[16]; //----- (004747F0) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, _DWORD *a3, int a4, UDItype a5) { int v5; // ebx int *v6; // esi int v7; // edi void *v8; // esp void *v9; // esp __int64 v10; // rax int v11; // eax char *v12; // esi int v13; // ebx char *v14; // edx int v15; // esi char v16; // si int v18; // eax void *v19; // esp void *v20; // esp int v21; // eax void *v22; // esp void *v23; // esp _BYTE *v24; // eax char v25; // al std::locale::_Impl *v26; // eax std::locale::_Impl *v27; // edi int v28; // [esp-2Ch] [ebp-84h] char v29[2]; // [esp-20h] [ebp-78h] BYREF _BYTE v30[34]; // [esp-1Eh] [ebp-76h] BYREF void (__cdecl *v31)(void *); // [esp+4h] [ebp-54h] unsigned int v32[6]; // [esp+8h] [ebp-50h] BYREF int v33; // [esp+20h] [ebp-38h] int v34; // [esp+24h] [ebp-34h] int v35; // [esp+28h] [ebp-30h] int v36; // [esp+2Ch] [ebp-2Ch] int v37; // [esp+30h] [ebp-28h] int v38; // [esp+34h] [ebp-24h] UDItype n; // [esp+38h] [ebp-20h] v37 = a1; v35 = a2; v34 = a4; n = a5; v5 = std::locale::id::_M_id(&std::numpunct::id); v6 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v5); v7 = *v6; if ( !*v6 ) { v26 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v31); *((_DWORD *)v26 + 1) = 0; v27 = v26; *(_DWORD *)v26 = &off_4F65A0; *((_DWORD *)v26 + 2) = 0; *((_DWORD *)v26 + 3) = 0; *((_BYTE *)v26 + 16) = 0; *((_DWORD *)v26 + 5) = 0; *((_DWORD *)v26 + 6) = 0; *((_DWORD *)v26 + 7) = 0; *((_DWORD *)v26 + 8) = 0; *((_WORD *)v26 + 18) = 0; *((_BYTE *)v26 + 100) = 0; std::__numpunct_cache::_M_cache((int)v26, (int)(a3 + 27)); std::locale::_Impl::_M_install_cache(a3[27], v27, (const std::locale::facet *)v5, v32[0]); v7 = *v6; } v38 = v7 + 38; v36 = a3[3]; v8 = alloca(64); v9 = alloca(64); v33 = v36 & 0x4A; v10 = n; LOBYTE(v38) = v33 != 8 && v33 != 64; if ( ((HIDWORD(n) | ((n - 1) >> 32)) & 0x80000000) != 0LL && (_BYTE)v38 ) v10 = -(__int64)n; v11 = std::__int_to_char(v32, v10, v7 + 38, v36, v38); v12 = &v29[-v11]; v13 = v11; v14 = &v29[-v11 + 40]; if ( !*(_BYTE *)(v7 + 16) ) { if ( (_BYTE)v38 ) goto LABEL_8; LABEL_18: if ( (v36 & 0x200) != 0 && n ) { if ( v33 == 64 ) { v25 = *(_BYTE *)(v7 + 42); ++v13; --v14; } else { v13 += 2; v14 -= 2; v14[1] = *(_BYTE *)(v7 + (((unsigned int)v36 >> 14) & 1) + 40); v25 = *(_BYTE *)(v7 + 42); } *v14 = v25; } goto LABEL_10; } v21 = 16 * ((unsigned int)(2 * v11 + 29) >> 4); v22 = alloca(v21); v23 = alloca(v21); v24 = std::__add_grouping( v30, *(_BYTE *)(v7 + 37), *(char **)(v7 + 8), *(_DWORD *)(v7 + 12), v12 + 40, &v14[v13]); v14 = v30; v13 = v24 - v30; if ( !(_BYTE)v38 ) goto LABEL_18; LABEL_8: if ( (n & 0x8000000000000000LL) != 0LL ) { ++v13; *--v14 = *(_BYTE *)(v7 + 38); } else if ( (v36 & 0x800) != 0 ) { ++v13; *--v14 = *(_BYTE *)(v7 + 39); v15 = a3[2]; if ( v15 <= v13 ) goto LABEL_11; goto LABEL_15; } LABEL_10: v15 = a3[2]; if ( v15 <= v13 ) goto LABEL_11; LABEL_15: v18 = 16 * ((unsigned int)(v15 + 27) >> 4); v19 = alloca(v18); v20 = alloca(v18); v28 = v13; v13 = v15; std::__pad>::_S_pad(a3, (void *)(char)v34, v29, v14, v15, v28); v14 = v29; LABEL_11: a3[2] = 0; v16 = v35; if ( !(_BYTE)v35 ) v16 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v37 + 48))(v37, v14, v13) != v13; LOBYTE(n) = v16; return v37; } // 4E9608: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); // 4747F0: using guessed type unsigned int anonymous_1[6]; //----- (00474B30) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, _DWORD *a3, int a4, int a5, int a6) { int v6; // ebx int *v7; // edi int v8; // esi unsigned int v9; // edi void *v10; // esp void *v11; // esp int v12; // eax int v13; // ebx char *v14; // edx int v15; // esi char v16; // si int v18; // eax void *v19; // esp void *v20; // esp char *v21; // eax _BYTE *v22; // eax char v23; // al int v24; // eax void *v25; // esp void *v26; // esp std::locale::_Impl *v27; // eax std::locale::_Impl *v28; // esi int v29; // [esp-34h] [ebp-9Ch] int v30; // [esp-2Ch] [ebp-94h] char v31[2]; // [esp-20h] [ebp-88h] BYREF _BYTE v32[34]; // [esp-1Eh] [ebp-86h] BYREF void (__cdecl *v33)(void *); // [esp+4h] [ebp-64h] unsigned int v34[9]; // [esp+8h] [ebp-60h] BYREF int v35; // [esp+2Ch] [ebp-3Ch] unsigned int v36; // [esp+30h] [ebp-38h] int v37; // [esp+34h] [ebp-34h] char *v38; // [esp+38h] [ebp-30h] int v39; // [esp+3Ch] [ebp-2Ch] bool v40; // [esp+43h] [ebp-25h] unsigned __int64 v41; // [esp+44h] [ebp-24h] int v42; // [esp+4Ch] [ebp-1Ch] v42 = a1; v39 = a2; v37 = a4; v41 = __PAIR64__(a5, a6); v6 = std::locale::id::_M_id(&std::numpunct::id); v7 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v6); v8 = *v7; if ( !*v7 ) { v27 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v33); *((_DWORD *)v27 + 1) = 0; v28 = v27; *(_DWORD *)v27 = &off_4F65A0; *((_DWORD *)v27 + 2) = 0; *((_DWORD *)v27 + 3) = 0; *((_BYTE *)v27 + 16) = 0; *((_DWORD *)v27 + 5) = 0; *((_DWORD *)v27 + 6) = 0; *((_DWORD *)v27 + 7) = 0; *((_DWORD *)v27 + 8) = 0; *((_WORD *)v27 + 18) = 0; *((_BYTE *)v27 + 100) = 0; std::__numpunct_cache::_M_cache((int)v27, (int)(a3 + 27)); std::locale::_Impl::_M_install_cache(a3[27], v28, (const std::locale::facet *)v6, v34[0]); v8 = *v7; } v35 = v8 + 38; v9 = a3[3]; v10 = alloca(64); v11 = alloca(64); v36 = v9 & 0x4A; v38 = v31; v40 = v36 != 8 && v36 != 64; v12 = std::__int_to_char(v34, __PAIR64__(v41, HIDWORD(v41)), v8 + 38, v9, v40); v13 = v12; v14 = &v38[-v12 + 40]; if ( *(_BYTE *)(v8 + 16) ) { v18 = 16 * ((unsigned int)(2 * v12 + 29) >> 4); v19 = alloca(v18); v20 = alloca(v18); v29 = *(_DWORD *)(v8 + 12); v21 = *(char **)(v8 + 8); v38 = v32; v22 = std::__add_grouping(v32, *(_BYTE *)(v8 + 37), v21, v29, v14, &v14[v13]); v14 = v38; v13 = v22 - v38; if ( v40 ) goto LABEL_5; } else if ( v40 ) { goto LABEL_5; } if ( (v9 & 0x200) != 0 && v41 ) { if ( v36 == 64 ) { v23 = *(_BYTE *)(v8 + 42); ++v13; --v14; } else { v13 += 2; v14 -= 2; v14[1] = *(_BYTE *)(v35 + ((v9 >> 14) & 1) + 2); v23 = *(_BYTE *)(v8 + 42); } *v14 = v23; } LABEL_5: v15 = a3[2]; if ( v15 > v13 ) { v24 = 16 * ((unsigned int)(v15 + 27) >> 4); v25 = alloca(v24); v26 = alloca(v24); v30 = v13; v13 = a3[2]; std::__pad>::_S_pad(a3, (void *)(char)v37, v31, v14, v15, v30); v14 = v31; } a3[2] = 0; v16 = v39; if ( !(_BYTE)v39 ) v16 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v42 + 48))(v42, v14, v13) != v13; BYTE4(v41) = v16; return v42; } // 4E9608: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); // 474B30: using guessed type unsigned int anonymous_1[9]; //----- (00474E10) -------------------------------------------------------- _BYTE *__stdcall std::num_put>::_M_group_float( char *a1, int a2, char a3, char *Src, int a5, _BYTE *a6, _DWORD *a7) { char *v7; // ebp _BYTE *v8; // edx _BYTE *v9; // edi int v10; // eax _BYTE *result; // eax if ( Src ) { v7 = (char *)(Src - a6); v8 = std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, Src); v9 = &v8[-a5]; v10 = 0; if ( *a7 != Src - a6 ) { memcpy(v8, Src, *a7 - (_DWORD)v7); v10 = *a7 - (_DWORD)v7; } result = &v9[v10]; *a7 = result; } else { result = &std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, &a6[*a7])[-a5]; *a7 = result; } return result; } //----- (00474ED0) -------------------------------------------------------- int __thiscall std::num_put>::_M_insert_float( void *this, int a2, int a3, _DWORD *a4, int a5, int a6, double a7) { int v7; // ebx int *v8; // edi int v9; // esi void *v10; // esp void *v11; // esp int v12; // eax _BYTE *v13; // eax int v14; // ebx _BYTE *v15; // esi int v16; // eax void *v17; // esp char v18; // dl void *v19; // esp char *v20; // eax void (__thiscall *v21)(_BYTE *, char *, char *, void *); // edx char *v22; // eax char *v23; // edx int v24; // ecx signed int v25; // esi char v26; // si int v28; // eax void *v29; // esp void *v30; // esp int v31; // eax void *v32; // esp void *v33; // esp int v34; // ebx char *v35; // ecx int v36; // eax void *v37; // esp void *v38; // esp int v39; // eax int v40; // eax void *v41; // esp void *v42; // esp std::locale::_Impl *v43; // eax std::locale::_Impl *v44; // esi int v45; // ecx void *v46; // eax int v47; // [esp-2Ch] [ebp-B4h] char v48; // [esp-20h] [ebp-A8h] BYREF _BYTE v49[35]; // [esp-1Fh] [ebp-A7h] BYREF void (__cdecl *v50)(void *); // [esp+4h] [ebp-84h] unsigned int v51; // [esp+8h] [ebp-80h] char *v52; // [esp+28h] [ebp-60h] int v53; // [esp+2Ch] [ebp-5Ch] void *v54; // [esp+30h] [ebp-58h] int v55; // [esp+34h] [ebp-54h] size_t Size; // [esp+38h] [ebp-50h] int v57; // [esp+3Ch] [ebp-4Ch] void *v58; // [esp+40h] [ebp-48h] int v59; // [esp+44h] [ebp-44h] int v60[2]; // [esp+48h] [ebp-40h] size_t MaxCount; // [esp+58h] [ebp-30h] BYREF int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF char v63[40]; // [esp+60h] [ebp-28h] BYREF v54 = this; v59 = a2; *(double *)v60 = a7; v55 = a3; v53 = a5; Size = a6; v58 = a4 + 27; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = (int *)(*(_DWORD *)(a4[27] + 12) + 4 * v7); v57 = *v8; if ( !v57 ) { v43 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v50); *((_DWORD *)v43 + 1) = 0; v44 = v43; *(_DWORD *)v43 = &off_4F65A0; v45 = (int)v43; *((_DWORD *)v43 + 2) = 0; *((_DWORD *)v43 + 3) = 0; *((_BYTE *)v43 + 16) = 0; *((_DWORD *)v43 + 5) = 0; *((_DWORD *)v43 + 6) = 0; *((_DWORD *)v43 + 7) = 0; *((_DWORD *)v43 + 8) = 0; *((_WORD *)v43 + 18) = 0; v46 = v58; *(_BYTE *)(v45 + 100) = 0; std::__numpunct_cache::_M_cache(v45, (int)v46); std::locale::_Impl::_M_install_cache(a4[27], v44, (const std::locale::facet *)v7, v51); v57 = *v8; } v9 = a4[1]; if ( v9 < 0 ) v9 = 6; std::__num_base::_S_format_float((std::__num_base *)a4, (const std::ios_base *)v63, (char *)(char)Size); v10 = alloca(64); v11 = alloca(64); if ( (a4[3] & 0x104) == 260 ) { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v39 = std::__convert_from_v(&c_locale, &v48, 0x2Du, v63, v60[0], v60[1]); MaxCount = v39; if ( v39 > 44 ) { Size = v39 + 1; v40 = 16 * ((unsigned int)(v39 + 28) >> 4); v41 = alloca(v40); v42 = alloca(v40); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v48, Size, v63, v60[0], v60[1]); } } else { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v12 = std::__convert_from_v(&c_locale, &v48, 0x2Du, v63, v9, v60[0], v60[1]); MaxCount = v12; if ( v12 > 44 ) { Size = v12 + 1; v28 = 16 * ((unsigned int)(v12 + 28) >> 4); v29 = alloca(v28); v30 = alloca(v28); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v48, Size, v63, v9, v60[0], v60[1]); } } v13 = std::use_facet>((int)v58); v14 = MaxCount; v15 = v13; Size = MaxCount; v16 = 16 * ((MaxCount + 27) >> 4); v17 = alloca(v16); v18 = v15[28]; v19 = alloca(v16); v58 = &v48; v60[0] = (int)&v48; v20 = &v49[MaxCount - 1]; if ( v18 != 1 ) { if ( v18 ) { v21 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v15 + 28); if ( (char *)v21 == (char *)std::ctype::do_widen ) goto LABEL_11; } else { v52 = &v49[MaxCount - 1]; std::ctype::_M_widen_init((int)v15); v20 = v52; v21 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v15 + 28); if ( (char *)v21 == (char *)std::ctype::do_widen ) { LABEL_11: v14 = MaxCount; if ( v20 != &v48 ) memcpy(v58, &v48, Size); goto LABEL_13; } } v21(v15, &v48, v20, v58); v14 = MaxCount; goto LABEL_13; } if ( v20 != &v48 ) memcpy(v58, &v48, MaxCount); LABEL_13: if ( !v14 ) { if ( *(_BYTE *)(v57 + 16) ) { v23 = 0; goto LABEL_22; } LABEL_16: v25 = a4[2]; if ( v14 >= v25 ) goto LABEL_17; goto LABEL_25; } v22 = (char *)memchr(&v48, 46, v14); v23 = v22; if ( !v22 ) { if ( *(_BYTE *)(v57 + 16) && (v14 <= 2 || v49[0] <= 57 && (unsigned __int8)(v49[1] - 48) <= 9u && v49[0] > 47) ) goto LABEL_22; goto LABEL_16; } v24 = v57; v23 = (char *)v58 + v22 - &v48; *v23 = *(_BYTE *)(v57 + 36); if ( !*(_BYTE *)(v24 + 16) ) goto LABEL_16; LABEL_22: v31 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); v32 = alloca(v31); v33 = alloca(v31); if ( ((v48 - 43) & 0xFD) != 0 ) { v35 = &v48; v34 = 0; } else { MaxCount = v14 - 1; v34 = 1; v48 = *(_BYTE *)v58; v35 = v49; v60[0] = (int)v58 + 1; } std::num_put>::_M_group_float( *(char **)(v57 + 8), *(_DWORD *)(v57 + 12), *(_BYTE *)(v57 + 37), v23, (int)v35, (_BYTE *)v60[0], &MaxCount); v14 = MaxCount + v34; v60[0] = (int)&v48; MaxCount = v14; v25 = a4[2]; if ( v14 >= v25 ) goto LABEL_17; LABEL_25: v36 = 16 * ((unsigned int)(v25 + 27) >> 4); v37 = alloca(v36); v38 = alloca(v36); v47 = v14; v14 = v25; std::__pad>::_S_pad(a4, (void *)(char)v53, &v48, (_BYTE *)v60[0], v25, v47); MaxCount = v25; v60[0] = (int)&v48; LABEL_17: a4[2] = 0; v26 = v55; if ( !(_BYTE)v55 ) v26 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v59 + 48))(v59, v60[0], v14) != v14; LOBYTE(v60[0]) = v26; return v59; } // 4E9608: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (00475420) -------------------------------------------------------- int __thiscall std::num_put>::_M_insert_float( void *this, int a2, int a3, std::__num_base *a4, int a5, int a6, long double a7) { int v7; // ebx int *v8; // edi int v9; // esi void *v10; // esp void *v11; // esp int v12; // eax _BYTE *v13; // eax int v14; // ebx _BYTE *v15; // esi int v16; // eax void *v17; // esp char v18; // dl void *v19; // esp char *v20; // eax void (__thiscall *v21)(_BYTE *, char *, char *, size_t); // edx char *v22; // eax char *v23; // edx int v24; // ecx signed int v25; // esi char v26; // si int v28; // eax void *v29; // esp void *v30; // esp int v31; // eax void *v32; // esp void *v33; // esp int v34; // ebx char *v35; // ecx int v36; // eax void *v37; // esp void *v38; // esp int v39; // eax int v40; // eax void *v41; // esp void *v42; // esp std::locale::_Impl *v43; // eax std::locale::_Impl *v44; // esi int v45; // ecx int v46; // eax int v51; // [esp-3Ch] [ebp-C4h] char v52; // [esp-30h] [ebp-B8h] BYREF _BYTE v53[51]; // [esp-2Fh] [ebp-B7h] BYREF void (__cdecl *v54)(void *); // [esp+4h] [ebp-84h] unsigned int v55; // [esp+8h] [ebp-80h] char *v56; // [esp+2Ch] [ebp-5Ch] int v57; // [esp+30h] [ebp-58h] void *v58; // [esp+34h] [ebp-54h] size_t Size; // [esp+38h] [ebp-50h] int v60; // [esp+3Ch] [ebp-4Ch] int v61; // [esp+40h] [ebp-48h] size_t BufferCount; // [esp+44h] [ebp-44h] int v63; // [esp+48h] [ebp-40h] int v64; // [esp+4Ch] [ebp-3Ch] size_t MaxCount; // [esp+58h] [ebp-30h] BYREF int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF char v67[40]; // [esp+60h] [ebp-28h] BYREF v58 = this; v63 = a2; v60 = a3; v57 = a5; BufferCount = a6; v64 = (int)a4 + 108; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = (int *)(*(_DWORD *)(*((_DWORD *)a4 + 27) + 12) + 4 * v7); v61 = *v8; if ( !v61 ) { v43 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v54); *((_DWORD *)v43 + 1) = 0; v44 = v43; *(_DWORD *)v43 = &off_4F65A0; v45 = (int)v43; *((_DWORD *)v43 + 2) = 0; *((_DWORD *)v43 + 3) = 0; *((_BYTE *)v43 + 16) = 0; *((_DWORD *)v43 + 5) = 0; *((_DWORD *)v43 + 6) = 0; *((_DWORD *)v43 + 7) = 0; *((_DWORD *)v43 + 8) = 0; *((_WORD *)v43 + 18) = 0; v46 = v64; *(_BYTE *)(v45 + 100) = 0; std::__numpunct_cache::_M_cache(v45, v46); std::locale::_Impl::_M_install_cache(*((_DWORD *)a4 + 27), v44, (const std::locale::facet *)v7, v55); v61 = *v8; } v9 = *((_DWORD *)a4 + 1); if ( v9 < 0 ) v9 = 6; std::__num_base::_S_format_float(a4, (const std::ios_base *)v67, (char *)(char)BufferCount); v10 = alloca(80); v11 = alloca(80); if ( (*((_DWORD *)a4 + 3) & 0x104) == 260 ) { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v39 = std::__convert_from_v(&c_locale, &v52, 0x36u, v67, *(_QWORD *)&a7, HIDWORD(a7)); MaxCount = v39; if ( v39 > 53 ) { BufferCount = v39 + 1; v40 = 16 * ((unsigned int)(v39 + 28) >> 4); v41 = alloca(v40); v42 = alloca(v40); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v52, BufferCount, v67, *(_QWORD *)&a7, HIDWORD(a7)); } } else { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v12 = std::__convert_from_v(&c_locale, &v52, 0x36u, v67, v9, *(_QWORD *)&a7, HIDWORD(a7)); MaxCount = v12; if ( v12 > 53 ) { BufferCount = v12 + 1; v28 = 16 * ((unsigned int)(v12 + 28) >> 4); v29 = alloca(v28); v30 = alloca(v28); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v52, BufferCount, v67, v9, *(_QWORD *)&a7, HIDWORD(a7)); } } v13 = std::use_facet>(v64); v14 = MaxCount; v15 = v13; Size = MaxCount; v16 = 16 * ((MaxCount + 27) >> 4); v17 = alloca(v16); v18 = v15[28]; v19 = alloca(v16); BufferCount = (size_t)&v52; v64 = (int)&v52; v20 = &v53[MaxCount - 1]; if ( v18 != 1 ) { if ( v18 ) { v21 = *(void (__thiscall **)(_BYTE *, char *, char *, size_t))(*(_DWORD *)v15 + 28); if ( (char *)v21 == (char *)std::ctype::do_widen ) goto LABEL_11; } else { v56 = &v53[MaxCount - 1]; std::ctype::_M_widen_init((int)v15); v20 = v56; v21 = *(void (__thiscall **)(_BYTE *, char *, char *, size_t))(*(_DWORD *)v15 + 28); if ( (char *)v21 == (char *)std::ctype::do_widen ) { LABEL_11: v14 = MaxCount; if ( v20 != &v52 ) memcpy((void *)BufferCount, &v52, Size); goto LABEL_13; } } v21(v15, &v52, v20, BufferCount); v14 = MaxCount; goto LABEL_13; } if ( v20 != &v52 ) memcpy((void *)BufferCount, &v52, MaxCount); LABEL_13: if ( !v14 ) { if ( *(_BYTE *)(v61 + 16) ) { v23 = 0; goto LABEL_22; } LABEL_16: v25 = *((_DWORD *)a4 + 2); if ( v14 >= v25 ) goto LABEL_17; goto LABEL_25; } v22 = (char *)memchr(&v52, 46, v14); v23 = v22; if ( !v22 ) { if ( *(_BYTE *)(v61 + 16) && (v14 <= 2 || v53[0] <= 57 && (unsigned __int8)(v53[1] - 48) <= 9u && v53[0] > 47) ) goto LABEL_22; goto LABEL_16; } v24 = v61; v23 = (char *)(BufferCount + v22 - &v52); *v23 = *(_BYTE *)(v61 + 36); if ( !*(_BYTE *)(v24 + 16) ) goto LABEL_16; LABEL_22: v31 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); v32 = alloca(v31); v33 = alloca(v31); if ( ((v52 - 43) & 0xFD) != 0 ) { v35 = &v52; v34 = 0; } else { MaxCount = v14 - 1; v34 = 1; v52 = *(_BYTE *)BufferCount; v35 = v53; v64 = BufferCount + 1; } std::num_put>::_M_group_float( *(char **)(v61 + 8), *(_DWORD *)(v61 + 12), *(_BYTE *)(v61 + 37), v23, (int)v35, (_BYTE *)v64, &MaxCount); v14 = MaxCount + v34; v64 = (int)&v52; MaxCount = v14; v25 = *((_DWORD *)a4 + 2); if ( v14 >= v25 ) goto LABEL_17; LABEL_25: v36 = 16 * ((unsigned int)(v25 + 27) >> 4); v37 = alloca(v36); v38 = alloca(v36); v51 = v14; v14 = v25; std::__pad>::_S_pad(a4, (void *)(char)v57, &v52, (_BYTE *)v64, v25, v51); MaxCount = v25; v64 = (int)&v52; LABEL_17: *((_DWORD *)a4 + 2) = 0; v26 = v60; if ( !(_BYTE)v60 ) v26 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v63 + 48))(v63, v64, v14) != v14; LOBYTE(v64) = v26; return v63; } // 4E9608: using guessed type int std::numpunct::id; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (00475960) -------------------------------------------------------- int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5) { return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 36))(this, a2, a3, a4, a5); } //----- (00475970) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, int a4, char a5, unsigned __int8 a6) { return (*(int (__thiscall **)(void *, int, int, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); } //----- (00475990) -------------------------------------------------------- int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5) { return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 28))(this, a2, a3, a4, a5); } //----- (004759A0) -------------------------------------------------------- int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5) { return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 32))(this, a2, a3, a4, a5); } //----- (004759B0) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, _DWORD *a4, char a5, int a6) { int (__stdcall *v6)(int, int, _DWORD *, char, int); // eax v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 12); if ( v6 == std::num_put>::do_put ) return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); else return v6(a2, a3, a4, a5, a6); } //----- (004759E0) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, _DWORD *a4, char a5, int a6) { int (__stdcall *v6)(int, int, _DWORD *, char, int); // eax v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 16); if ( v6 == std::num_put>::do_put ) return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); else return v6(a2, a3, a4, a5, a6); } //----- (00475A10) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, _DWORD *a4, char a5, UDItype a6) { int (__stdcall *v6)(int, int, _DWORD *, char, UDItype); // eax v6 = *(int (__stdcall **)(int, int, _DWORD *, char, UDItype))(*(_DWORD *)this + 20); if ( v6 == std::num_put>::do_put ) return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); else return ((int (__stdcall *)(int, int, _DWORD *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); } //----- (00475A40) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, _DWORD *a4, char a5, int a6, int a7) { int (__stdcall *v7)(int, int, _DWORD *, char, int, int); // eax v7 = *(int (__stdcall **)(int, int, _DWORD *, char, int, int))(*(_DWORD *)this + 24); if ( v7 == std::num_put>::do_put ) return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6, a7); else return v7(a2, a3, a4, a5, a6, a7); } //----- (00475A70) -------------------------------------------------------- int __stdcall std::num_put>::_M_pad( char a1, int a2, _DWORD *a3, char *a4, _BYTE *a5, int *a6) { int result; // eax result = std::__pad>::_S_pad(a3, (void *)a1, a4, a5, a2, *a6); *a6 = a2; return result; } //----- (00475AC0) -------------------------------------------------------- int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) { int v5; // edi int result; // eax v5 = a3[3]; a3[3] = v5 & 0xFFFFBDB5 | 0x208; result = std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); a3[3] = v5; return result; } //----- (00475B40) -------------------------------------------------------- int *__stdcall std::num_put>::do_put(int *a1, int a2, _DWORD *a3, int a4, int a5) { int v5; // eax _DWORD *v7; // eax int v8; // edx int v9; // eax size_t v10; // ecx int v11; // eax void *v12; // esp void *v13; // esp int v14; // edx int v15; // eax int v16; // eax int v17; // eax int v18; // eax _BYTE v19[8]; // [esp+20h] [ebp-48h] BYREF _BYTE *v20; // [esp+28h] [ebp-40h] int v21; // [esp+2Ch] [ebp-3Ch] int v22; // [esp+30h] [ebp-38h] int v23; // [esp+34h] [ebp-34h] int v24; // [esp+38h] [ebp-30h] int *v25; // [esp+3Ch] [ebp-2Ch] v5 = a3[3]; v23 = a4; v24 = v5; if ( (v5 & 1) == 0 ) return (int *)std::num_put>::_M_insert_int( (int)a1, a2, a3, (char)a4, (unsigned __int8)a5); v22 = a5; v25 = a1; v7 = (_DWORD *)std::__use_cache>::operator()(a3 + 27); if ( (_BYTE)a5 ) { v8 = v7[6]; v22 = v7[5]; v9 = a3[2]; if ( v8 >= v9 ) { LABEL_6: a3[2] = 0; if ( !(_BYTE)a2 ) (*(int (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v22, v8); return v25; } } else { v8 = v7[8]; v22 = v7[7]; v9 = a3[2]; if ( v8 >= v9 ) goto LABEL_6; } v21 = v8; v25 = (int *)(v9 - v8); v10 = v9 - v8; v11 = 16 * ((unsigned int)(v9 - v8 + 27) >> 4); v12 = alloca(v11); v13 = alloca(v11); v20 = v19; memset(v19, (char)v23, v10); v14 = v21; a3[2] = 0; if ( (v24 & 0xB0) == 32 ) { if ( !(_BYTE)a2 ) { v17 = *a1; v24 = v14; v18 = (*(int (__thiscall **)(int *, int, int))(v17 + 48))(a1, v22, v14); if ( v24 == v18 ) (*(void (__thiscall **)(int *, _BYTE *, int *))(*a1 + 48))(a1, v20, v25); } } else { v24 = v14; if ( !(_BYTE)a2 ) { v15 = (*(int (__thiscall **)(int *, _BYTE *, int *))(*a1 + 48))(a1, v20, v25); if ( v25 == (int *)v15 ) { v16 = *a1; v25 = (int *)v24; (*(void (__thiscall **)(int *, int, int))(v16 + 48))(a1, v22, v24); } } } return a1; } //----- (00475D30) -------------------------------------------------------- int __thiscall std::num_put>::do_put( void *this, int a2, int a3, _DWORD *a4, char a5, double a6) { return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); } //----- (00475D80) -------------------------------------------------------- int __thiscall std::num_put>::do_put( void *this, int a2, int a3, std::__num_base *a4, char a5, long double a6) { return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 76, a6); } //----- (00475DD0) -------------------------------------------------------- int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (00475DE0) -------------------------------------------------------- int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (00475DF0) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, _DWORD *a3, char a4, UDItype a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (00475E00) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, _DWORD *a3, char a4, int a5, int a6) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5, a6); } //----- (00475E10) -------------------------------------------------------- int __stdcall std::num_put>::_M_group_int( char *a1, int a2, __int16 a3, int a4, _WORD *a5, _WORD *a6, int *a7) { int result; // eax result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5; *a7 = result; return result; } //----- (00475E60) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, wchar_t *S1, int a4, int a5) { int v5; // ebx int *v6; // edi int v7; // esi unsigned int v8; // edi void *v9; // esp void *v10; // esp unsigned int v11; // eax int v12; // ebx wchar_t *v13; // edx int v14; // esi char v15; // si int v17; // eax void *v18; // esp void *v19; // esp int v20; // eax void *v21; // esp void *v22; // esp char *v23; // eax _WORD *v24; // eax wchar_t v25; // ax std::locale::_Impl *v26; // eax std::locale::_Impl *v27; // esi int v28; // [esp-34h] [ebp-8Ch] int v29; // [esp-2Ch] [ebp-84h] wchar_t v30; // [esp-20h] [ebp-78h] BYREF _WORD v31[16]; // [esp-1Ch] [ebp-74h] BYREF void (__cdecl *v32)(void *); // [esp+4h] [ebp-54h] unsigned int v33[8]; // [esp+8h] [ebp-50h] BYREF unsigned int v34; // [esp+28h] [ebp-30h] int v35; // [esp+2Ch] [ebp-2Ch] wchar_t *v36; // [esp+30h] [ebp-28h] int v37; // [esp+34h] [ebp-24h] int v38; // [esp+38h] [ebp-20h] int v39; // [esp+3Ch] [ebp-1Ch] v38 = a1; v37 = a2; v35 = a4; v5 = std::locale::id::_M_id(&std::numpunct::id); v6 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v5); v7 = *v6; if ( !*v6 ) { v26 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v32); *((_DWORD *)v26 + 1) = 0; v27 = v26; *(_DWORD *)v26 = &off_4F65B0; *((_DWORD *)v26 + 2) = 0; *((_DWORD *)v26 + 3) = 0; *((_BYTE *)v26 + 16) = 0; *((_DWORD *)v26 + 5) = 0; *((_DWORD *)v26 + 6) = 0; *((_DWORD *)v26 + 7) = 0; *((_DWORD *)v26 + 8) = 0; *((_DWORD *)v26 + 9) = 0; *((_BYTE *)v26 + 164) = 0; std::__numpunct_cache::_M_cache((int)v26, (int)(S1 + 54)); std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v27, (const std::locale::facet *)v5, v33[0]); v7 = *v6; } v39 = v7 + 40; v8 = *((_DWORD *)S1 + 3); v9 = alloca(64); v10 = alloca(64); v34 = v8 & 0x4A; v11 = a5; LOBYTE(v39) = v34 != 8 && v34 != 64; if ( a5 <= 0 && (v8 & 0x4A) != 8 && (v8 & 0x4A) != 64 ) v11 = -a5; v36 = &v30; v12 = std::__int_to_char(v33, v11, v7 + 40, v8, v39); v13 = &v36[20 - v12]; if ( !*(_BYTE *)(v7 + 16) ) { if ( (_BYTE)v39 ) goto LABEL_8; LABEL_18: if ( (v8 & 0x200) != 0 && a5 ) { if ( v34 == 64 ) { v25 = *(_WORD *)(v7 + 48); ++v12; --v13; } else { v12 += 2; v13 -= 2; v13[1] = *(_WORD *)(v7 + 40 + 2 * (((v8 >> 14) & 1) + 2)); v25 = *(_WORD *)(v7 + 48); } *v13 = v25; } goto LABEL_10; } v20 = 16 * ((unsigned int)(4 * v12 + 31) >> 4); v21 = alloca(v20); v22 = alloca(v20); v28 = *(_DWORD *)(v7 + 12); v23 = *(char **)(v7 + 8); v36 = v31; v24 = std::__add_grouping(v31, *(_WORD *)(v7 + 38), v23, v28, v13, &v13[v12]); v13 = v36; v12 = v24 - v36; if ( !(_BYTE)v39 ) goto LABEL_18; LABEL_8: if ( a5 < 0 ) { ++v12; *--v13 = *(_WORD *)(v7 + 40); } else if ( (v8 & 0x800) != 0 ) { ++v12; *--v13 = *(_WORD *)(v7 + 42); v14 = *((_DWORD *)S1 + 2); if ( v14 <= v12 ) goto LABEL_11; goto LABEL_15; } LABEL_10: v14 = *((_DWORD *)S1 + 2); if ( v14 <= v12 ) goto LABEL_11; LABEL_15: v17 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); v18 = alloca(v17); v19 = alloca(v17); v29 = v12; v12 = v14; std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v35, &v30, v13, v14, v29); v13 = &v30; LABEL_11: *((_DWORD *)S1 + 2) = 0; v15 = v37; if ( !(_BYTE)v37 ) v15 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v38 + 48))(v38, v13, v12) != v12; LOBYTE(v39) = v15; return v38; } // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); // 475E60: using guessed type unsigned int anonymous_1[8]; //----- (00476190) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, wchar_t *S1, int a4, int a5) { int v5; // ebx int *v6; // edi int v7; // esi unsigned int v8; // edi void *v9; // esp void *v10; // esp int v11; // ebx wchar_t *v12; // edx int v13; // esi char v14; // si int v16; // eax void *v17; // esp void *v18; // esp char *v19; // eax _WORD *v20; // eax wchar_t v21; // ax int v22; // eax void *v23; // esp void *v24; // esp std::locale::_Impl *v25; // eax std::locale::_Impl *v26; // esi int v27; // [esp-34h] [ebp-8Ch] int v28; // [esp-2Ch] [ebp-84h] wchar_t v29; // [esp-20h] [ebp-78h] BYREF _WORD v30[16]; // [esp-1Ch] [ebp-74h] BYREF void (__cdecl *v31)(void *); // [esp+4h] [ebp-54h] unsigned int v32[7]; // [esp+8h] [ebp-50h] BYREF int v33; // [esp+24h] [ebp-34h] unsigned int v34; // [esp+28h] [ebp-30h] int v35; // [esp+2Ch] [ebp-2Ch] wchar_t *v36; // [esp+30h] [ebp-28h] int v37; // [esp+34h] [ebp-24h] bool v38; // [esp+3Bh] [ebp-1Dh] int v39; // [esp+3Ch] [ebp-1Ch] v39 = a1; v37 = a2; v35 = a4; v5 = std::locale::id::_M_id(&std::numpunct::id); v6 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v5); v7 = *v6; if ( !*v6 ) { v25 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v31); *((_DWORD *)v25 + 1) = 0; v26 = v25; *(_DWORD *)v25 = &off_4F65B0; *((_DWORD *)v25 + 2) = 0; *((_DWORD *)v25 + 3) = 0; *((_BYTE *)v25 + 16) = 0; *((_DWORD *)v25 + 5) = 0; *((_DWORD *)v25 + 6) = 0; *((_DWORD *)v25 + 7) = 0; *((_DWORD *)v25 + 8) = 0; *((_DWORD *)v25 + 9) = 0; *((_BYTE *)v25 + 164) = 0; std::__numpunct_cache::_M_cache((int)v25, (int)(S1 + 54)); std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v26, (const std::locale::facet *)v5, v32[0]); v7 = *v6; } v33 = v7 + 40; v8 = *((_DWORD *)S1 + 3); v9 = alloca(64); v10 = alloca(64); v34 = v8 & 0x4A; v36 = &v29; v38 = v34 != 8 && v34 != 64; v11 = std::__int_to_char(v32, a5, v7 + 40, v8, v38); v12 = &v36[20 - v11]; if ( *(_BYTE *)(v7 + 16) ) { v16 = 16 * ((unsigned int)(4 * v11 + 31) >> 4); v17 = alloca(v16); v18 = alloca(v16); v27 = *(_DWORD *)(v7 + 12); v19 = *(char **)(v7 + 8); v36 = v30; v20 = std::__add_grouping(v30, *(_WORD *)(v7 + 38), v19, v27, v12, &v12[v11]); v12 = v36; v11 = v20 - v36; if ( v38 ) goto LABEL_5; } else if ( v38 ) { goto LABEL_5; } if ( (v8 & 0x200) != 0 && a5 ) { if ( v34 == 64 ) { v21 = *(_WORD *)(v7 + 48); ++v11; --v12; } else { v11 += 2; v12 -= 2; v12[1] = *(_WORD *)(v33 + 2 * (((v8 >> 14) & 1) + 2)); v21 = *(_WORD *)(v7 + 48); } *v12 = v21; } LABEL_5: v13 = *((_DWORD *)S1 + 2); if ( v13 > v11 ) { v22 = 16 * ((unsigned int)(2 * v13 + 27) >> 4); v23 = alloca(v22); v24 = alloca(v22); v28 = v11; v11 = *((_DWORD *)S1 + 2); std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v35, &v29, v12, v13, v28); v12 = &v29; } *((_DWORD *)S1 + 2) = 0; v14 = v37; if ( !(_BYTE)v37 ) v14 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v39 + 48))(v39, v12, v11) != v11; v38 = v14; return v39; } // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); // 476190: using guessed type unsigned int anonymous_1[7]; //----- (00476470) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, wchar_t *S1, int a4, UDItype a5) { int v5; // ebx int *v6; // esi int v7; // edi void *v8; // esp void *v9; // esp __int64 v10; // rax int v11; // ebx wchar_t *v12; // edx int v13; // esi char v14; // si int v16; // eax void *v17; // esp void *v18; // esp int v19; // eax void *v20; // esp void *v21; // esp _WORD *v22; // eax wchar_t v23; // ax std::locale::_Impl *v24; // eax std::locale::_Impl *v25; // edi int v26; // [esp-4Ch] [ebp-A4h] wchar_t v27[2]; // [esp-40h] [ebp-98h] BYREF _WORD v28[32]; // [esp-3Ch] [ebp-94h] BYREF void (__cdecl *v29)(void *); // [esp+4h] [ebp-54h] unsigned int v30; // [esp+8h] [ebp-50h] __int16 v31[8]; // [esp+10h] [ebp-48h] BYREF int v32; // [esp+20h] [ebp-38h] int v33; // [esp+24h] [ebp-34h] int v34; // [esp+28h] [ebp-30h] int v35; // [esp+2Ch] [ebp-2Ch] int v36; // [esp+30h] [ebp-28h] int v37; // [esp+34h] [ebp-24h] UDItype n; // [esp+38h] [ebp-20h] v36 = a1; v34 = a2; v33 = a4; n = a5; v5 = std::locale::id::_M_id(&std::numpunct::id); v6 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v5); v7 = *v6; if ( !*v6 ) { v24 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v29); *((_DWORD *)v24 + 1) = 0; v25 = v24; *(_DWORD *)v24 = &off_4F65B0; *((_DWORD *)v24 + 2) = 0; *((_DWORD *)v24 + 3) = 0; *((_BYTE *)v24 + 16) = 0; *((_DWORD *)v24 + 5) = 0; *((_DWORD *)v24 + 6) = 0; *((_DWORD *)v24 + 7) = 0; *((_DWORD *)v24 + 8) = 0; *((_DWORD *)v24 + 9) = 0; *((_BYTE *)v24 + 164) = 0; std::__numpunct_cache::_M_cache((int)v24, (int)(S1 + 54)); std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v25, (const std::locale::facet *)v5, v30); v7 = *v6; } v37 = v7 + 40; v35 = *((_DWORD *)S1 + 3); v8 = alloca(96); v9 = alloca(96); v32 = v35 & 0x4A; v10 = n; LOBYTE(v37) = v32 != 8 && v32 != 64; if ( ((HIDWORD(n) | ((n - 1) >> 32)) & 0x80000000) != 0LL && (_BYTE)v37 ) v10 = -(__int64)n; v11 = std::__int_to_char(v31, v10, v7 + 40, v35, v37); v12 = &v27[40 - v11]; if ( !*(_BYTE *)(v7 + 16) ) { if ( (_BYTE)v37 ) goto LABEL_8; LABEL_18: if ( (v35 & 0x200) != 0 && n ) { if ( v32 == 64 ) { v23 = *(_WORD *)(v7 + 48); ++v11; --v12; } else { v11 += 2; v12 -= 2; v12[1] = *(_WORD *)(v7 + 40 + 2 * ((((unsigned int)v35 >> 14) & 1) + 2)); v23 = *(_WORD *)(v7 + 48); } *v12 = v23; } goto LABEL_10; } v19 = 16 * ((unsigned int)(4 * v11 + 31) >> 4); v20 = alloca(v19); v21 = alloca(v19); v22 = std::__add_grouping(v28, *(_WORD *)(v7 + 38), *(char **)(v7 + 8), *(_DWORD *)(v7 + 12), v12, &v12[v11]); v12 = v28; v11 = v22 - v28; if ( !(_BYTE)v37 ) goto LABEL_18; LABEL_8: if ( (n & 0x8000000000000000LL) != 0LL ) { ++v11; *--v12 = *(_WORD *)(v7 + 40); } else if ( (v35 & 0x800) != 0 ) { ++v11; *--v12 = *(_WORD *)(v7 + 42); v13 = *((_DWORD *)S1 + 2); if ( v13 <= v11 ) goto LABEL_11; goto LABEL_15; } LABEL_10: v13 = *((_DWORD *)S1 + 2); if ( v13 <= v11 ) goto LABEL_11; LABEL_15: v16 = 16 * ((unsigned int)(2 * v13 + 27) >> 4); v17 = alloca(v16); v18 = alloca(v16); v26 = v11; v11 = v13; std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v33, v27, v12, v13, v26); v12 = v27; LABEL_11: *((_DWORD *)S1 + 2) = 0; v14 = v34; if ( !(_BYTE)v34 ) v14 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v36 + 48))(v36, v12, v11) != v11; LOBYTE(n) = v14; return v36; } // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); // 476470: using guessed type __int16 anonymous_2[8]; //----- (004767C0) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, wchar_t *S1, int a4, int a5, int a6) { int v6; // ebx int *v7; // edi int v8; // esi unsigned int v9; // edi void *v10; // esp void *v11; // esp int v12; // ebx wchar_t *v13; // edx int v14; // esi char v15; // si int v17; // eax void *v18; // esp void *v19; // esp char *v20; // eax _WORD *v21; // eax wchar_t v22; // ax int v23; // eax void *v24; // esp void *v25; // esp std::locale::_Impl *v26; // eax std::locale::_Impl *v27; // esi int v28; // [esp-54h] [ebp-BCh] int v29; // [esp-4Ch] [ebp-B4h] wchar_t v30; // [esp-40h] [ebp-A8h] BYREF _WORD v31[32]; // [esp-3Ch] [ebp-A4h] BYREF void (__cdecl *v32)(void *); // [esp+4h] [ebp-64h] unsigned int v33; // [esp+8h] [ebp-60h] __int16 v34[14]; // [esp+10h] [ebp-58h] BYREF int v35; // [esp+2Ch] [ebp-3Ch] unsigned int v36; // [esp+30h] [ebp-38h] int v37; // [esp+34h] [ebp-34h] wchar_t *v38; // [esp+38h] [ebp-30h] int v39; // [esp+3Ch] [ebp-2Ch] bool v40; // [esp+43h] [ebp-25h] unsigned __int64 v41; // [esp+44h] [ebp-24h] int v42; // [esp+4Ch] [ebp-1Ch] v42 = a1; v39 = a2; v37 = a4; v41 = __PAIR64__(a5, a6); v6 = std::locale::id::_M_id(&std::numpunct::id); v7 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v6); v8 = *v7; if ( !*v7 ) { v26 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v32); *((_DWORD *)v26 + 1) = 0; v27 = v26; *(_DWORD *)v26 = &off_4F65B0; *((_DWORD *)v26 + 2) = 0; *((_DWORD *)v26 + 3) = 0; *((_BYTE *)v26 + 16) = 0; *((_DWORD *)v26 + 5) = 0; *((_DWORD *)v26 + 6) = 0; *((_DWORD *)v26 + 7) = 0; *((_DWORD *)v26 + 8) = 0; *((_DWORD *)v26 + 9) = 0; *((_BYTE *)v26 + 164) = 0; std::__numpunct_cache::_M_cache((int)v26, (int)(S1 + 54)); std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v27, (const std::locale::facet *)v6, v33); v8 = *v7; } v35 = v8 + 40; v9 = *((_DWORD *)S1 + 3); v10 = alloca(96); v11 = alloca(96); v36 = v9 & 0x4A; v38 = &v30; v40 = v36 != 8 && v36 != 64; v12 = std::__int_to_char(v34, __PAIR64__(v41, HIDWORD(v41)), v8 + 40, v9, v40); v13 = &v38[40 - v12]; if ( *(_BYTE *)(v8 + 16) ) { v17 = 16 * ((unsigned int)(4 * v12 + 31) >> 4); v18 = alloca(v17); v19 = alloca(v17); v28 = *(_DWORD *)(v8 + 12); v20 = *(char **)(v8 + 8); v38 = v31; v21 = std::__add_grouping(v31, *(_WORD *)(v8 + 38), v20, v28, v13, &v13[v12]); v13 = v38; v12 = v21 - v38; if ( v40 ) goto LABEL_5; } else if ( v40 ) { goto LABEL_5; } if ( (v9 & 0x200) != 0 && v41 ) { if ( v36 == 64 ) { v22 = *(_WORD *)(v8 + 48); ++v12; --v13; } else { v12 += 2; v13 -= 2; v13[1] = *(_WORD *)(v35 + 2 * (((v9 >> 14) & 1) + 2)); v22 = *(_WORD *)(v8 + 48); } *v13 = v22; } LABEL_5: v14 = *((_DWORD *)S1 + 2); if ( v14 > v12 ) { v23 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); v24 = alloca(v23); v25 = alloca(v23); v29 = v12; v12 = *((_DWORD *)S1 + 2); std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v37, &v30, v13, v14, v29); v13 = &v30; } *((_DWORD *)S1 + 2) = 0; v15 = v39; if ( !(_BYTE)v39 ) v15 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v42 + 48))(v42, v13, v12) != v12; BYTE4(v41) = v15; return v42; } // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); // 4767C0: using guessed type __int16 anonymous_2[14]; //----- (00476AB0) -------------------------------------------------------- int __stdcall std::num_put>::_M_group_float( char *a1, int a2, __int16 a3, wchar_t *S2, _WORD *a5, _WORD *a6, _DWORD *a7) { int v7; // ebx wchar_t *S1; // edx int v9; // ebp int v10; // eax int result; // eax if ( S2 ) { v7 = S2 - a6; S1 = std::__add_grouping(a5, a3, a1, a2, a6, S2); v9 = S1 - a5; v10 = 0; if ( *a7 != v7 ) { wmemcpy(S1, S2, *a7 - v7); v10 = *a7 - v7; } result = v9 + v10; *a7 = result; } else { result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5; *a7 = result; } return result; } //----- (00476B80) -------------------------------------------------------- // bad sp value at call has been detected, the output may be wrong! int __thiscall std::num_put>::_M_insert_float( void *this, int a2, int a3, wchar_t *S1, int a5, int a6, double a7) { int v7; // ebx int *v8; // edi int v9; // esi void *v10; // esp void *v11; // esp int v12; // eax int *v13; // ecx int v14; // eax void *v15; // esp void *v16; // esp int v17; // eax char *v18; // edi int v19; // esi wchar_t *v20; // edx wchar_t *v21; // eax wchar_t *v22; // ecx char v23; // al bool v24; // zf signed int v25; // ebx int v27; // eax void *v28; // esp void *v29; // esp int v30; // eax void *v31; // esp void *v32; // esp wchar_t v33; // bx int v34; // esi wchar_t *v35; // ebx int v36; // eax void *v37; // esp void *v38; // esp int v39; // eax int v40; // eax void *v41; // esp void *v42; // esp std::locale::_Impl *v43; // eax std::locale::_Impl *v44; // esi int v45; // [esp-34h] [ebp-BCh] int v46; // [esp-30h] [ebp-B8h] int v47; // [esp-2Ch] [ebp-B4h] int v48; // [esp-28h] [ebp-B0h] char v49; // [esp-20h] [ebp-A8h] BYREF char v50; // [esp-1Fh] [ebp-A7h] char v51; // [esp-1Eh] [ebp-A6h] void (__cdecl *v52)(void *); // [esp+4h] [ebp-84h] unsigned int v53; // [esp+8h] [ebp-80h] int v54; // [esp+14h] [ebp-74h] wchar_t v55; // [esp+20h] [ebp-68h] BYREF __int16 v56; // [esp+22h] [ebp-66h] BYREF int v57; // [esp+2Ch] [ebp-5Ch] void *v58; // [esp+30h] [ebp-58h] int v59; // [esp+34h] [ebp-54h] size_t BufferCount; // [esp+38h] [ebp-50h] wchar_t *v61; // [esp+3Ch] [ebp-4Ch] wchar_t *v62[2]; // [esp+40h] [ebp-48h] int v63; // [esp+48h] [ebp-40h] wchar_t *v64; // [esp+4Ch] [ebp-3Ch] size_t MaxCount; // [esp+58h] [ebp-30h] BYREF int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF char v67[40]; // [esp+60h] [ebp-28h] BYREF v58 = this; v63 = a2; *(double *)v62 = a7; v59 = a3; v57 = a5; BufferCount = a6; v61 = S1 + 54; v7 = std::locale::id::_M_id(&std::numpunct::id); v8 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v7); v64 = (wchar_t *)*v8; if ( !v64 ) { v43 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v52); *((_DWORD *)v43 + 1) = 0; v44 = v43; *(_DWORD *)v43 = &off_4F65B0; *((_DWORD *)v43 + 2) = 0; *((_DWORD *)v43 + 3) = 0; *((_BYTE *)v43 + 16) = 0; *((_DWORD *)v43 + 5) = 0; *((_DWORD *)v43 + 6) = 0; *((_DWORD *)v43 + 7) = 0; *((_DWORD *)v43 + 8) = 0; *((_DWORD *)v43 + 9) = 0; *((_BYTE *)v43 + 164) = 0; std::__numpunct_cache::_M_cache((int)v43, (int)v61); std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v44, (const std::locale::facet *)v7, v53); v64 = (wchar_t *)*v8; } v9 = *((_DWORD *)S1 + 1); if ( v9 < 0 ) v9 = 6; std::__num_base::_S_format_float((std::__num_base *)S1, (const std::ios_base *)v67, (char *)(char)BufferCount); BufferCount = *((_DWORD *)S1 + 3); v10 = alloca(64); v11 = alloca(64); if ( (BufferCount & 0x104) == 260 ) { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v39 = std::__convert_from_v(&c_locale, &v49, 0x2Du, v67, v62[0], v62[1]); MaxCount = v39; if ( v39 > 44 ) { BufferCount = v39 + 1; v40 = 16 * ((unsigned int)(v39 + 28) >> 4); v41 = alloca(v40); v42 = alloca(v40); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v49, BufferCount, v67, v62[0], v62[1]); } } else { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v12 = std::__convert_from_v(&c_locale, &v49, 0x2Du, v67, v9, v62[0], v62[1]); MaxCount = v12; if ( v12 > 44 ) { BufferCount = v12 + 1; v27 = 16 * ((unsigned int)(v12 + 28) >> 4); v28 = alloca(v27); v29 = alloca(v27); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v49, BufferCount, v67, v9, v62[0], v62[1]); } } v13 = (int *)std::use_facet>((int)v61); v14 = 16 * ((2 * MaxCount + 27) >> 4); v15 = alloca(v14); v16 = alloca(v14); v17 = *v13; v18 = &v49; v62[0] = (wchar_t *)&v49; (*(void (__thiscall **)(int *, char *, char *, char *, int, int, int, int))(v17 + 44))( v13, &v49, &v49 + MaxCount, &v49, v45, v46, v47, v48); v19 = MaxCount; v20 = v62[0]; if ( !MaxCount ) { if ( *((_BYTE *)v64 + 16) ) { v62[0] = 0; goto LABEL_17; } LABEL_11: v25 = *((_DWORD *)S1 + 2); if ( v25 <= v19 ) goto LABEL_12; goto LABEL_20; } v61 = v62[0]; v21 = (wchar_t *)memchr(&v49, 46, MaxCount); v20 = v61; v22 = v21; v62[0] = v21; v23 = *((_BYTE *)v64 + 16); LOBYTE(BufferCount) = v23; if ( !v22 ) { if ( v23 && (v19 <= 2 || v50 <= 57 && (unsigned __int8)(v51 - 48) <= 9u && v50 > 47) ) goto LABEL_17; goto LABEL_11; } v24 = (_BYTE)BufferCount == 0; v62[0] = &v61[(char *)v62[0] - &v49]; *v62[0] = v64[18]; if ( v24 ) goto LABEL_11; LABEL_17: v30 = 16 * ((unsigned int)(4 * v19 + 27) >> 4); v31 = alloca(v30); v32 = alloca(v30); if ( ((v49 - 43) & 0xFD) != 0 ) { v35 = &v55; v34 = 0; } else { v33 = *v20; v18 = (char *)(v20 + 1); MaxCount = v19 - 1; v34 = 1; v55 = v33; v35 = (wchar_t *)&v56; } v61 = &v55; std::num_put>::_M_group_float( *((char **)v64 + 2), *((_DWORD *)v64 + 3), v64[19], v62[0], v35, v18, &MaxCount); v19 = MaxCount + v34; MaxCount = v19; v18 = (char *)v61; v25 = *((_DWORD *)S1 + 2); if ( v25 <= v19 ) goto LABEL_12; LABEL_20: v36 = 16 * ((unsigned int)(2 * v25 + 27) >> 4); v37 = alloca(v36); v38 = alloca(v36); v54 = v19; v19 = v25; v64 = &v55; std::__pad>::_S_pad( S1, (wchar_t *)(unsigned __int16)v57, &v55, (wchar_t *)v18, v25, v54); MaxCount = v25; v18 = (char *)v64; LABEL_12: *((_DWORD *)S1 + 2) = 0; if ( !(_BYTE)v59 ) (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v63 + 48))(v63, v18, v19); return v63; } // 476CCD: bad sp value at call // 476CA7: variable 'v45' is possibly undefined // 476CA7: variable 'v46' is possibly undefined // 476CA7: variable 'v47' is possibly undefined // 476CA7: variable 'v48' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (00477060) -------------------------------------------------------- // bad sp value at call has been detected, the output may be wrong! int __fastcall std::num_put>::_M_insert_float( int a1, int a2, int a3, int a4, wchar_t *S1, int a6, int a7, long double a8) { int v8; // ebx int *v9; // edi int v10; // esi void *v11; // esp void *v12; // esp int v13; // eax int *v14; // ecx int v15; // eax void *v16; // esp void *v17; // esp int v18; // eax char *v19; // edi int v20; // esi wchar_t *v21; // edx wchar_t *v22; // eax wchar_t *v23; // ecx char v24; // al bool v25; // zf signed int v26; // ebx int v28; // eax void *v29; // esp void *v30; // esp int v31; // eax void *v32; // esp void *v33; // esp wchar_t v34; // bx int v35; // esi int *v36; // ebx int v37; // eax void *v38; // esp void *v39; // esp int v40; // eax int v41; // eax void *v42; // esp void *v43; // esp std::locale::_Impl *v44; // eax std::locale::_Impl *v45; // esi int v46; // [esp-44h] [ebp-BCh] int v47; // [esp-40h] [ebp-B8h] int v51; // [esp-3Ch] [ebp-B4h] int v53; // [esp-38h] [ebp-B0h] int v54; // [esp-34h] [ebp-ACh] char v55; // [esp-30h] [ebp-A8h] BYREF char v56; // [esp-2Fh] [ebp-A7h] char v57; // [esp-2Eh] [ebp-A6h] void (__cdecl *v58)(void *); // [esp+4h] [ebp-74h] unsigned int v59; // [esp+8h] [ebp-70h] int v60; // [esp+14h] [ebp-64h] int v61[2]; // [esp+20h] [ebp-58h] BYREF char v62; // [esp+2Bh] [ebp-4Dh] int v63; // [esp+2Ch] [ebp-4Ch] size_t BufferCount; // [esp+30h] [ebp-48h] wchar_t *v65; // [esp+34h] [ebp-44h] int v66; // [esp+38h] [ebp-40h] int *v67; // [esp+3Ch] [ebp-3Ch] size_t MaxCount; // [esp+48h] [ebp-30h] BYREF int *c_locale; // [esp+4Ch] [ebp-2Ch] BYREF char v70[40]; // [esp+50h] [ebp-28h] BYREF v61[1] = a1; v66 = a3; v63 = a4; v61[0] = a6; BufferCount = a7; v65 = S1 + 54; v8 = std::locale::id::_M_id(&std::numpunct::id); v9 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v8); v67 = (int *)*v9; if ( !v67 ) { v44 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v58); *((_DWORD *)v44 + 1) = 0; v45 = v44; *(_DWORD *)v44 = &off_4F65B0; *((_DWORD *)v44 + 2) = 0; *((_DWORD *)v44 + 3) = 0; *((_BYTE *)v44 + 16) = 0; *((_DWORD *)v44 + 5) = 0; *((_DWORD *)v44 + 6) = 0; *((_DWORD *)v44 + 7) = 0; *((_DWORD *)v44 + 8) = 0; *((_DWORD *)v44 + 9) = 0; *((_BYTE *)v44 + 164) = 0; std::__numpunct_cache::_M_cache((int)v44, (int)v65); std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v45, (const std::locale::facet *)v8, v59); v67 = (int *)*v9; } v10 = *((_DWORD *)S1 + 1); if ( v10 < 0 ) v10 = 6; std::__num_base::_S_format_float((std::__num_base *)S1, (const std::ios_base *)v70, (char *)(char)BufferCount); BufferCount = *((_DWORD *)S1 + 3); v11 = alloca(80); v12 = alloca(80); if ( (BufferCount & 0x104) == 260 ) { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v40 = std::__convert_from_v(&c_locale, &v55, 0x36u, v70, *(_QWORD *)&a8, HIDWORD(a8)); MaxCount = v40; if ( v40 > 53 ) { BufferCount = v40 + 1; v41 = 16 * ((unsigned int)(v40 + 28) >> 4); v42 = alloca(v41); v43 = alloca(v41); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v55, BufferCount, v70, *(_QWORD *)&a8, HIDWORD(a8)); } } else { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v13 = std::__convert_from_v(&c_locale, &v55, 0x36u, v70, v10, *(_QWORD *)&a8, HIDWORD(a8)); MaxCount = v13; if ( v13 > 53 ) { BufferCount = v13 + 1; v28 = 16 * ((unsigned int)(v13 + 28) >> 4); v29 = alloca(v28); v30 = alloca(v28); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v55, BufferCount, v70, v10, *(_QWORD *)&a8, HIDWORD(a8)); } } v14 = (int *)std::use_facet>((int)v65); v15 = 16 * ((2 * MaxCount + 27) >> 4); v16 = alloca(v15); v17 = alloca(v15); v18 = *v14; v19 = &v55; v65 = (wchar_t *)&v55; (*(void (__thiscall **)(int *, char *, char *, char *, int, int, int, int, int))(v18 + 44))( v14, &v55, &v55 + MaxCount, &v55, v46, v47, v51, v53, v54); v20 = MaxCount; v21 = v65; if ( !MaxCount ) { if ( *((_BYTE *)v67 + 16) ) { v65 = 0; goto LABEL_17; } LABEL_11: v26 = *((_DWORD *)S1 + 2); if ( v26 <= v20 ) goto LABEL_12; goto LABEL_20; } BufferCount = (size_t)v65; v22 = (wchar_t *)memchr(&v55, 46, MaxCount); v21 = (wchar_t *)BufferCount; v23 = v22; v65 = v22; v24 = *((_BYTE *)v67 + 16); v62 = v24; if ( !v23 ) { if ( v24 && (v20 <= 2 || v56 <= 57 && (unsigned __int8)(v57 - 48) <= 9u && v56 > 47) ) goto LABEL_17; goto LABEL_11; } v25 = v62 == 0; v65 = (wchar_t *)(BufferCount + 2 * ((char *)v65 - &v55)); *v65 = *((_WORD *)v67 + 18); if ( v25 ) goto LABEL_11; LABEL_17: v31 = 16 * ((unsigned int)(4 * v20 + 27) >> 4); v32 = alloca(v31); v33 = alloca(v31); if ( ((v55 - 43) & 0xFD) != 0 ) { v36 = v61; v35 = 0; } else { v34 = *v21; v19 = (char *)(v21 + 1); MaxCount = v20 - 1; v35 = 1; LOWORD(v61[0]) = v34; v36 = (int *)((char *)v61 + 2); } BufferCount = (size_t)v61; std::num_put>::_M_group_float( (char *)v67[2], v67[3], *((_WORD *)v67 + 19), v65, v36, v19, &MaxCount); v20 = MaxCount + v35; MaxCount = v20; v19 = (char *)BufferCount; v26 = *((_DWORD *)S1 + 2); if ( v26 <= v20 ) goto LABEL_12; LABEL_20: v37 = 16 * ((unsigned int)(2 * v26 + 27) >> 4); v38 = alloca(v37); v39 = alloca(v37); v60 = v20; v20 = v26; v67 = v61; std::__pad>::_S_pad( S1, (wchar_t *)LOWORD(v61[0]), (wchar_t *)v61, (wchar_t *)v19, v26, v60); MaxCount = v26; v19 = (char *)v67; LABEL_12: *((_DWORD *)S1 + 2) = 0; if ( !(_BYTE)v63 ) (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v66 + 48))(v66, v19, v20); return v66; } // 4771A7: bad sp value at call // 477181: variable 'v46' is possibly undefined // 477181: variable 'v47' is possibly undefined // 477181: variable 'v51' is possibly undefined // 477181: variable 'v53' is possibly undefined // 477181: variable 'v54' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (00477530) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, int a4, unsigned __int16 a5) { return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 36))(this, a2, a3, a4, a5); } //----- (00477540) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, int a4, unsigned __int16 a5, unsigned __int8 a6) { return (*(int (__thiscall **)(void *, int, int, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); } //----- (00477560) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, int a4, unsigned __int16 a5) { return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 28))(this, a2, a3, a4, a5); } //----- (00477570) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, int a4, unsigned __int16 a5) { return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 32))(this, a2, a3, a4, a5); } //----- (00477580) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6) { int (__stdcall *v6)(int, int, wchar_t *, unsigned __int16, int); // eax v6 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, int))(*(_DWORD *)this + 12); if ( v6 == std::num_put>::do_put ) return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); else return v6(a2, a3, a4, a5, a6); } //----- (004775B0) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6) { int (__stdcall *v6)(int, int, wchar_t *, unsigned __int16, int); // eax v6 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, int))(*(_DWORD *)this + 16); if ( v6 == std::num_put>::do_put ) return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); else return v6(a2, a3, a4, a5, a6); } //----- (004775E0) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, UDItype a6) { int (__stdcall *v6)(int, int, wchar_t *, unsigned __int16, UDItype); // eax v6 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, UDItype))(*(_DWORD *)this + 20); if ( v6 == std::num_put>::do_put ) return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); else return ((int (__stdcall *)(int, int, wchar_t *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); } //----- (00477610) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6, int a7) { int (__stdcall *v7)(int, int, wchar_t *, unsigned __int16, int, int); // eax v7 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, int, int))(*(_DWORD *)this + 24); if ( v7 == std::num_put>::do_put ) return std::num_put>::_M_insert_int( a2, a3, a4, a5, a6, a7); else return v7(a2, a3, a4, a5, a6, a7); } //----- (00477640) -------------------------------------------------------- int __stdcall std::num_put>::_M_pad( unsigned __int16 a1, int a2, wchar_t *S1, wchar_t *a4, wchar_t *a5, int *a6) { int result; // eax result = std::__pad>::_S_pad(S1, (wchar_t *)a1, a4, a5, a2, *a6); *a6 = a2; return result; } //----- (00477690) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, wchar_t *S1, unsigned __int16 a4, int a5) { int v5; // edi int result; // eax v5 = *((_DWORD *)S1 + 3); *((_DWORD *)S1 + 3) = v5 & 0xFFFFBDB5 | 0x208; result = std::num_put>::_M_insert_int(a1, a2, S1, a4, a5); *((_DWORD *)S1 + 3) = v5; return result; } //----- (00477710) -------------------------------------------------------- int *__stdcall std::num_put>::do_put( int *a1, int a2, wchar_t *S1, int a4, int a5) { int v5; // eax _DWORD *v7; // eax int v8; // edx int v9; // eax size_t v10; // ecx int v11; // eax void *v12; // esp void *v13; // esp int v14; // edx int v15; // eax int v16; // eax int v17; // eax int v18; // eax wchar_t v19[4]; // [esp+20h] [ebp-48h] BYREF wchar_t *v20; // [esp+28h] [ebp-40h] int v21; // [esp+2Ch] [ebp-3Ch] int v22; // [esp+30h] [ebp-38h] int v23; // [esp+34h] [ebp-34h] int v24; // [esp+38h] [ebp-30h] int *v25; // [esp+3Ch] [ebp-2Ch] v5 = *((_DWORD *)S1 + 3); v23 = a4; v24 = v5; if ( (v5 & 1) == 0 ) return (int *)std::num_put>::_M_insert_int( (int)a1, a2, S1, (unsigned __int16)a4, (unsigned __int8)a5); v22 = a5; v25 = a1; v7 = (_DWORD *)std::__use_cache>::operator()((int *)S1 + 27); if ( (_BYTE)a5 ) { v8 = v7[6]; v22 = v7[5]; v9 = *((_DWORD *)S1 + 2); if ( v8 >= v9 ) { LABEL_6: *((_DWORD *)S1 + 2) = 0; if ( !(_BYTE)a2 ) (*(int (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v22, v8); return v25; } } else { v8 = v7[8]; v22 = v7[7]; v9 = *((_DWORD *)S1 + 2); if ( v8 >= v9 ) goto LABEL_6; } v21 = v8; v25 = (int *)(v9 - v8); v10 = v9 - v8; v11 = 16 * ((unsigned int)(2 * (v9 - v8) + 27) >> 4); v12 = alloca(v11); v13 = alloca(v11); v20 = v19; wmemset(v19, v23, v10); v14 = v21; *((_DWORD *)S1 + 2) = 0; if ( (v24 & 0xB0) == 32 ) { if ( !(_BYTE)a2 ) { v17 = *a1; v24 = v14; v18 = (*(int (__thiscall **)(int *, int, int))(v17 + 48))(a1, v22, v14); if ( v24 == v18 ) (*(void (__thiscall **)(int *, wchar_t *, int *))(*a1 + 48))(a1, v20, v25); } } else { v24 = v14; if ( !(_BYTE)a2 ) { v15 = (*(int (__thiscall **)(int *, wchar_t *, int *))(*a1 + 48))(a1, v20, v25); if ( v25 == (int *)v15 ) { v16 = *a1; v25 = (int *)v24; (*(void (__thiscall **)(int *, int, int))(v16 + 48))(a1, v22, v24); } } } return a1; } //----- (00477900) -------------------------------------------------------- int __thiscall std::num_put>::do_put( void *this, int a2, int a3, wchar_t *S1, unsigned __int16 a5, double a6) { return std::num_put>::_M_insert_float(this, a2, a3, S1, a5, 0, a6); } //----- (00477950) -------------------------------------------------------- int __thiscall std::num_put>::do_put( void *this, int a2, int a3, wchar_t *S1, unsigned __int16 a5, long double a6) { return std::num_put>::_M_insert_float( (int)this, a3, a2, a3, S1, a5, 76, a6); } //----- (004779A0) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (004779B0) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (004779C0) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, wchar_t *a3, unsigned __int16 a4, UDItype a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (004779D0) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5, int a6) { return std::num_put>::_M_insert_int( a1, a2, a3, a4, a5, a6); } //----- (004779E0) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( _DWORD *this, int a2) { _DWORD *v2; // esi _DWORD *v3; // edi _DWORD *v4; // ebx v2 = this + 1; v3 = this + 1; v4 = (_DWORD *)this[2]; while ( v4 ) { if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) { v4 = (_DWORD *)v4[3]; } else { v3 = v4; v4 = (_DWORD *)v4[2]; } } if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) return v2; return v3; } //----- (00477A40) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( _DWORD *this, int a2) { _DWORD *v2; // esi _DWORD *v3; // edi _DWORD *v4; // ebx v2 = this + 1; v3 = this + 1; v4 = (_DWORD *)this[2]; while ( v4 ) { if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) { v4 = (_DWORD *)v4[3]; } else { v3 = v4; v4 = (_DWORD *)v4[2]; } } if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) return v2; return v3; } //----- (00477AA0) -------------------------------------------------------- const char *std::bad_cast::what() { return "std::bad_cast"; } //----- (00477AB0) -------------------------------------------------------- int __fastcall std::ios_base::failure::what(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00477AD0) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (00477AE0) -------------------------------------------------------- _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) { *this = &unk_4E93FC; return this; } //----- (00477AF0) -------------------------------------------------------- void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) { (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); return this; } //----- (00477B30) -------------------------------------------------------- int __thiscall std::messages::open(void *this, int a2, int a3) { int (__stdcall *v3)(int, int); // eax v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); if ( v3 == std::messages::do_open ) return 0; else return v3(a2, a3); } //----- (00477B50) -------------------------------------------------------- int __thiscall std::messages::open(void *this, int a2, int a3, int a4) { int (__stdcall *v4)(int, int); // edx v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); if ( v4 == std::messages::do_open ) return 0; else return v4(a2, a3); } //----- (00477B90) -------------------------------------------------------- int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) { int (__stdcall *result)(int); // eax result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); if ( result != std::messages::do_close ) return (int (__stdcall *)(int))result(a2); return result; } // 477BE0: using guessed type int __stdcall std::messages::do_close(int); //----- (00477BB0) -------------------------------------------------------- unsigned int **__thiscall std::messages::do_get( unsigned int **this, int a2, int a3, int a4, int a5, unsigned int **a6) { const std::string *v8; // [esp+4h] [ebp-18h] std::string::string(this, a6, v8); return this; } // 477BBD: variable 'v8' is possibly undefined //----- (00477BD0) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (00477BF0) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (00477C00) -------------------------------------------------------- _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) { *this = &unk_4E93EC; return this; } //----- (00477C10) -------------------------------------------------------- void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) { (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); return this; } //----- (00477C50) -------------------------------------------------------- int __thiscall std::messages::open(void *this, int a2, int a3) { int (__stdcall *v3)(int, int); // eax v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); if ( v3 == std::messages::do_open ) return 0; else return v3(a2, a3); } //----- (00477C70) -------------------------------------------------------- int __thiscall std::messages::open(void *this, int a2, int a3, int a4) { int (__stdcall *v4)(int, int); // edx v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); if ( v4 == std::messages::do_open ) return 0; else return v4(a2, a3); } //----- (00477CB0) -------------------------------------------------------- int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) { int (__stdcall *result)(int); // eax result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); if ( result != std::messages::do_close ) return (int (__stdcall *)(int))result(a2); return result; } // 477D00: using guessed type int __stdcall std::messages::do_close(int); //----- (00477CD0) -------------------------------------------------------- _DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _DWORD *a6) { std::wstring::basic_string(this, a6); return this; } //----- (00477CF0) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (00477D10) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); return this; } // 477D10: using guessed type int var_D[3]; //----- (00477D40) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); return this; } // 477D40: using guessed type int var_D[3]; //----- (00477D70) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); return this; } // 477D70: using guessed type int var_D[3]; //----- (00477DA0) -------------------------------------------------------- int __fastcall std::numpunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) return *(unsigned __int8 *)(a1[2] + 36); else return v1(); } //----- (00477DC0) -------------------------------------------------------- int __fastcall std::numpunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) return *(unsigned __int8 *)(a1[2] + 37); else return v1(); } //----- (00477DE0) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (00477DF0) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); } //----- (00477E00) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::numpunct::do_grouping ) std::string::string(this, *(char **)(a2[2] + 8), (int)v5); else v3(a2); return this; } // 477E00: using guessed type int var_D[3]; //----- (00477E60) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::numpunct::do_truename ) std::string::string(this, *(char **)(a2[2] + 20), (int)v5); else v3(a2); return this; } // 477E60: using guessed type int var_D[3]; //----- (00477EC0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::numpunct::do_falsename ) std::string::string(this, *(char **)(a2[2] + 28), (int)v5); else v3(a2); return this; } // 477EC0: using guessed type int var_D[3]; //----- (00477F20) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); return this; } // 477F20: using guessed type int var_D[3]; //----- (00477F50) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); return this; } // 477F50: using guessed type int var_D[3]; //----- (00477F80) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) { int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); return this; } // 477F80: using guessed type int var_D[3]; //----- (00477FB0) -------------------------------------------------------- int __fastcall std::numpunct::decimal_point(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 8); if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) return *(unsigned __int16 *)(a1[2] + 36); else return v1(); } //----- (00477FD0) -------------------------------------------------------- int __fastcall std::numpunct::thousands_sep(_DWORD *a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*a1 + 12); if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) return *(unsigned __int16 *)(a1[2] + 38); else return v1(); } //----- (00477FF0) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (00478000) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); } //----- (00478010) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::numpunct::do_grouping ) std::string::string(this, *(char **)(a2[2] + 8), (int)v5); else v3(a2); return this; } // 478010: using guessed type int var_D[3]; //----- (00478070) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::numpunct::do_truename ) std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 20), (int)v5); else v3(a2); return this; } // 478070: using guessed type int var_D[3]; //----- (004780D0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::numpunct::do_falsename ) std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 28), (int)v5); else v3(a2); return this; } // 4780D0: using guessed type int var_D[3]; //----- (00478130) -------------------------------------------------------- int __fastcall std::time_get>::date_order(int a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); if ( v1 == std::time_get>::do_date_order ) return 0; else return v1(); } //----- (00478150) -------------------------------------------------------- int __stdcall std::time_get>::do_get_date( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6) { _DWORD *v6; // eax int v7; // esi unsigned __int64 v8; // rax char v10; // [esp+2Ch] [ebp-20h] char v11; // [esp+2Ch] [ebp-20h] v6 = std::use_facet>(a4 + 108); v8 = std::time_get>::_M_extract_via_format( a1, a2, a3, a4, a5, a6, (char *)*(_DWORD *)(v6[2] + 8)); v7 = v8; BYTE4(v8) = HIDWORD(v8) == -1; v10 = BYTE4(v8) & ((_DWORD)v8 != 0); if ( v10 ) { BYTE4(v8) = 0; if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v8 + 12) ) { LODWORD(v8) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 36))(v8, 0); BYTE4(v8) = (_DWORD)v8 != -1 ? 0 : v10; v7 = (_DWORD)v8 == -1 ? 0 : v7; } } LOBYTE(v8) = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { LOBYTE(v8) = 0; if ( a2[2] >= a2[3] ) { v11 = BYTE4(v8); LODWORD(v8) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); BYTE4(v8) = v11; LOBYTE(v8) = (_DWORD)v8 == -1; } } } if ( BYTE4(v8) == (_BYTE)v8 ) *a5 |= 2u; return v7; } //----- (00478250) -------------------------------------------------------- int __stdcall std::time_get>::do_get_time( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6) { _DWORD *v6; // eax int v7; // esi unsigned __int64 v8; // rax char v10; // [esp+2Ch] [ebp-20h] char v11; // [esp+2Ch] [ebp-20h] v6 = std::use_facet>(a4 + 108); v8 = std::time_get>::_M_extract_via_format( a1, a2, a3, a4, a5, a6, (char *)*(_DWORD *)(v6[2] + 16)); v7 = v8; BYTE4(v8) = HIDWORD(v8) == -1; v10 = BYTE4(v8) & ((_DWORD)v8 != 0); if ( v10 ) { BYTE4(v8) = 0; if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v8 + 12) ) { LODWORD(v8) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 36))(v8, 0); BYTE4(v8) = (_DWORD)v8 != -1 ? 0 : v10; v7 = (_DWORD)v8 == -1 ? 0 : v7; } } LOBYTE(v8) = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { LOBYTE(v8) = 0; if ( a2[2] >= a2[3] ) { v11 = BYTE4(v8); LODWORD(v8) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); BYTE4(v8) = v11; LOBYTE(v8) = (_DWORD)v8 == -1; } } } if ( BYTE4(v8) == (_BYTE)v8 ) *a5 |= 2u; return v7; } //----- (00478350) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_year( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7) { int v7; // edx _DWORD *v8; // ecx _DWORD *v9; // ebp int v10; // ebx char v11; // bl char v12; // al int v14; // eax char v15; // [esp+34h] [ebp-38h] _DWORD *v16; // [esp+38h] [ebp-34h] int v17; // [esp+48h] [ebp-24h] BYREF int v18[8]; // [esp+4Ch] [ebp-20h] BYREF v18[0] = 0; v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v17, 0, 9999, 4u, a5, v18); v9 = v8; if ( v18[0] ) { *a6 |= 4u; } else { v10 = v17 - 1900; if ( v17 < 0 ) v10 = v17 + 100; *(_DWORD *)(a7 + 20) = v10; } v11 = v7 == -1; v15 = v11 & (v8 != 0); if ( v15 ) { v11 = 0; if ( v8[2] >= v8[3] ) { v16 = v8; v14 = (*(int (**)(void))(*v8 + 36))(); v11 = v14 != -1 ? 0 : v15; v9 = v14 == -1 ? 0 : v16; } } v12 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v12 = 0; if ( a3[2] >= a3[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; } } if ( v11 == v12 ) *a6 |= 2u; return v9; } // 4783E1: variable 'v7' is possibly undefined // 478350: using guessed type int var_20[8]; //----- (004784B0) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (004784C0) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (004784D0) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (004784E0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_num( _DWORD *a1, int a2, _DWORD *a3, int a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10) { int v10; // ebx unsigned int v12; // ebp int v13; // edi char v14; // bl _BYTE *v15; // eax int v16; // ebx int v17; // edx int (__stdcall *v18)(unsigned __int8, int); // edx unsigned int v19; // eax bool v20; // dl bool v21; // bl int v22; // eax int v24; // eax unsigned int v26; // [esp+20h] [ebp-2Ch] _BYTE *v27; // [esp+24h] [ebp-28h] bool v29; // [esp+2Fh] [ebp-1Dh] v10 = 10; v27 = std::use_facet>(a9 + 108); if ( a8 != 2 ) v10 = a8 == 4 ? 1000 : 1; v26 = 0; v12 = v10; v13 = 0; while ( 1 ) { v20 = a2 == -1; v21 = v20 && a1 != 0; if ( v21 ) { if ( a1[2] >= a1[3] ) { v24 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v20 = a2 == -1; v14 = v24 == -1 && v21; a1 = v24 == -1 ? 0 : a1; } else { v14 = 0; } } else { v14 = a2 == -1; } if ( a3 && a4 == -1 ) { if ( a3[2] >= a3[3] ) { v29 = v20; v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v20 = v29; if ( v22 == -1 ) { a3 = 0; v14 ^= 1u; } } } else { v14 ^= a4 == -1; } if ( v26 >= a8 || !v14 ) break; if ( a1 && v20 ) { v15 = (_BYTE *)a1[2]; if ( (unsigned int)v15 >= a1[3] ) { v15 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v15 == (_BYTE *)-1 ) { v16 = 255; LOBYTE(v15) = -1; a1 = 0; } else { v16 = (unsigned __int8)v15; } } else { v16 = (unsigned __int8)*v15; LOBYTE(v15) = *v15; } } else { LOBYTE(v15) = a2; v16 = (unsigned __int8)a2; } v17 = (char)v27[v16 + 285]; if ( !(_BYTE)v17 ) { v18 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v27 + 32); if ( v18 == std::ctype::do_narrow ) { if ( (_BYTE)v15 == 42 ) goto LABEL_32; } else { LOBYTE(v15) = v18((unsigned __int8)v15, 42); if ( (_BYTE)v15 == 42 ) goto LABEL_32; } v17 = (char)v15; v27[v16 + 285] = (_BYTE)v15; } if ( (unsigned __int8)(v17 - 48) > 9u ) goto LABEL_32; v13 = v17 + 10 * v13 - 48; if ( (int)(v13 * v12) > a7 || (int)(v12 + v13 * v12) <= a6 ) goto LABEL_32; v19 = a1[2]; v12 /= 0xAu; if ( v19 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v19 + 1; ++v26; a2 = -1; } if ( v26 == a8 ) { LABEL_35: *a5 = v13; return a1; } LABEL_32: if ( a8 == 4 && v26 == 2 ) { v13 -= 100; goto LABEL_35; } *a10 |= 4u; return a1; } //----- (004787A0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_weekday( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7) { _DWORD *v7; // eax int v8; // edx int v9; // eax int v10; // edx _DWORD *v11; // ecx _DWORD *v12; // ebp char v13; // dl char v14; // al int v16; // eax int v17; // eax char v18; // [esp+38h] [ebp-64h] char v19; // [esp+38h] [ebp-64h] _DWORD *v20; // [esp+3Ch] [ebp-60h] unsigned int v21; // [esp+40h] [ebp-5Ch] BYREF int v22; // [esp+44h] [ebp-58h] BYREF int v23[21]; // [esp+48h] [ebp-54h] BYREF v22 = 0; v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); v23[0] = v7[18]; v23[1] = v7[19]; v23[2] = v7[20]; v23[3] = v7[21]; v23[4] = v7[22]; v23[5] = v7[23]; v23[6] = v7[24]; v23[7] = v7[11]; v23[8] = v7[12]; v23[9] = v7[13]; v23[10] = v7[14]; v23[11] = v7[15]; v8 = v7[16]; v9 = v7[17]; v23[12] = v8; v23[13] = v9; v11 = std::time_get>::_M_extract_wday_or_month( a1, a2, a3, a4, &v21, (int)v23, 7u, a5, &v22); v12 = v11; if ( v22 ) *a6 |= 4u; else *(_DWORD *)(a7 + 24) = v21; v13 = v10 == -1; v18 = v13 & (v11 != 0); if ( v18 ) { v13 = 0; if ( v11[2] >= v11[3] ) { v20 = v11; v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); v13 = v17 != -1 ? 0 : v18; v12 = v17 == -1 ? 0 : v20; } } v14 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v14 = 0; if ( a3[2] >= a3[3] ) { v19 = v13; v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v13 = v19; v14 = v16 == -1; } } } if ( v13 == v14 ) *a6 |= 2u; return v12; } // 4788AF: variable 'v10' is possibly undefined //----- (00478970) -------------------------------------------------------- int __stdcall std::time_get>::_M_extract_name( unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, int a7, _DWORD *a8) { int v8; // eax void *v9; // esp void *v10; // esp char v11; // dl unsigned __int8 v12; // bl char v14; // dl _DWORD *v15; // esi int v16; // edx unsigned int v17; // ebx int v18; // edi char v19; // al int v20; // ecx _DWORD *v21; // edi _DWORD *v22; // edx void *v23; // edi size_t v24; // eax unsigned int v25; // ebx size_t v26; // eax void *v27; // edi unsigned int v28; // eax char v29; // si unsigned __int8 v30; // si unsigned int i; // esi char v32; // di char v33; // al char *v34; // eax unsigned int v35; // eax int v36; // eax const char *v37; // edi char *v38; // ebx size_t v39; // eax unsigned int v40; // esi _DWORD **v41; // edi unsigned __int8 v42; // bl char v43; // bl char v44; // al _BYTE *v45; // eax unsigned __int8 v46; // dl char v47; // bl int v48; // edx bool v49; // zf int v50; // eax int v51; // esi int v52; // eax int v53; // eax char *v54; // eax int v55; // eax int v56; // eax int v57; // eax int v58; // eax int v59; // edx int v60; // edx int v61; // eax _DWORD *v62; // [esp+10h] [ebp-38h] BYREF _DWORD *v63; // [esp+14h] [ebp-34h] void *v64; // [esp+18h] [ebp-30h] unsigned __int8 v65; // [esp+1Fh] [ebp-29h] unsigned __int64 v66; // [esp+20h] [ebp-28h] _DWORD **v67; // [esp+28h] [ebp-20h] unsigned int v68; // [esp+2Ch] [ebp-1Ch] v67 = (_DWORD **)HIDWORD(a1); v66 = a1; v62 = a2; v64 = std::use_facet>(a7 + 108); v8 = 16 * ((unsigned int)(4 * (_DWORD)a6 + 27) >> 4); v9 = alloca(v8); v10 = alloca(v8); LOBYTE(v68) = HIDWORD(a1) == -1; if ( ((unsigned __int8)v68 & ((_DWORD)a1 != 0)) != 0 ) { if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) { v65 = v68 & ((_DWORD)a1 != 0); v55 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); v11 = v55 != -1 ? 0 : v65; LODWORD(v66) = v55 == -1 ? 0 : v66; } else { v11 = 0; } } else { v11 = v68; } v65 = a3 == -1; if ( (v65 & (a2 != 0)) != 0 ) { if ( a2[2] >= a2[3] ) { v56 = *a2; LOBYTE(v63) = v11; v57 = (*(int (__fastcall **)(_DWORD *))(v56 + 36))(a2); v11 = (char)v63; v12 = v57 == -1 && v65 & (a2 != 0); v62 = v57 == -1 ? 0 : a2; } else { v12 = 0; } } else { v12 = v65; } if ( v11 == v12 || ((_DWORD)v66 && (_BYTE)v68 ? ((v54 = *(char **)(v66 + 8), (unsigned int)v54 >= *(_DWORD *)(v66 + 12)) ? (v58 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66), v14 = v58 != -1 ? v58 : -1, LODWORD(v66) = v58 == -1 ? 0 : v66) : (v14 = *v54)) : (v14 = (char)v67), !a6) ) { LABEL_6: *a8 |= 4u; return v66; } LOBYTE(v68) = v14; v15 = 0; v16 = a5; v17 = 0; v67 = &v62; v18 = (int)v64; do { while ( 1 ) { v20 = **(char **)(v16 + 4 * (_DWORD)v15); if ( (_BYTE)v20 == (_BYTE)v68 ) break; a5 = v16; v19 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v18 + 8))(v18, v20); v16 = a5; if ( v19 == (_BYTE)v68 ) break; v15 = (_DWORD *)((char *)v15 + 1); if ( a6 == v15 ) goto LABEL_16; } v67[v17++] = v15; v15 = (_DWORD *)((char *)v15 + 1); } while ( a6 != v15 ); LABEL_16: v21 = v67; v67 = 0; if ( v17 <= 1 ) goto LABEL_40; v22 = v21; do { v23 = (void *)*v22; v63 = v22; v24 = strlen(*(const char **)(a5 + 4 * (_DWORD)v23)); HIDWORD(v66) = v17; v25 = 1; v68 = v24; v64 = v23; do { v26 = strlen(*(const char **)(a5 + 4 * v63[v25])); if ( v68 > v26 ) v68 = v26; ++v25; } while ( v25 < HIDWORD(v66) ); v22 = v63; v17 = HIDWORD(v66); v27 = v64; v28 = *(_DWORD *)(v66 + 8); if ( v28 >= *(_DWORD *)(v66 + 12) ) { HIDWORD(v66) = v63; (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 40))(v66); v22 = (_DWORD *)HIDWORD(v66); } else { *(_DWORD *)(v66 + 8) = v28 + 1; } v67 = (_DWORD **)((char *)v67 + 1); if ( (unsigned int)v67 >= v68 ) goto LABEL_58; LOBYTE(v68) = 0; if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) { v51 = v66; v52 = *(_DWORD *)v66; HIDWORD(v66) = v22; v53 = (*(int (__fastcall **)(_DWORD))(v52 + 36))(v66); v22 = (_DWORD *)HIDWORD(v66); LOBYTE(v68) = v53 == -1; LODWORD(v66) = ((unsigned __int8)v68 - 1) & v51; } v29 = v65 & (v62 != 0); if ( v29 ) { if ( v62[2] < v62[3] ) { if ( !(_BYTE)v68 ) goto LABEL_58; goto LABEL_30; } HIDWORD(v66) = v22; v50 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); v22 = (_DWORD *)HIDWORD(v66); v30 = v50 != -1 ? 0 : v29; v62 = v50 == -1 ? 0 : v62; } else { v30 = v65; } if ( v30 == (_BYTE)v68 ) goto LABEL_58; LABEL_30: for ( i = 0; ; v27 = (void *)v22[i] ) { v32 = *((_BYTE *)v67 + *(_DWORD *)(a5 + 4 * (_DWORD)v27)); v33 = -1; if ( (_DWORD)v66 ) { v34 = *(char **)(v66 + 8); if ( (unsigned int)v34 >= *(_DWORD *)(v66 + 12) ) { v68 = (unsigned int)v22; v48 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); v33 = v48 != -1 ? v48 : -1; v49 = v48 == -1; v22 = (_DWORD *)v68; LODWORD(v66) = v49 ? 0 : v66; } else { v33 = *v34; } } if ( v33 == v32 ) break; v22[i] = v22[--v17]; if ( v17 <= i ) goto LABEL_38; LABEL_32: ; } if ( v17 > ++i ) goto LABEL_32; LABEL_38: ; } while ( v17 > 1 ); HIDWORD(v66) = -1; v21 = v22; LABEL_40: if ( v17 != 1 ) goto LABEL_6; v35 = *(_DWORD *)(v66 + 8); if ( v35 >= *(_DWORD *)(v66 + 12) ) std::streambuf::sbumpc(v66); else *(_DWORD *)(v66 + 8) = v35 + 1; v36 = *v21; v37 = *(const char **)(a5 + 4 * *v21); HIDWORD(v66) = v36; v38 = (char *)v67 + 1; v39 = strlen(v37); v67 = (_DWORD **)v39; if ( (unsigned int)v38 < v39 ) { v68 = (unsigned int)v37; v40 = v66; v41 = (_DWORD **)v38; while ( 1 ) { while ( 1 ) { v46 = 0; if ( *(_DWORD *)(v40 + 8) >= *(_DWORD *)(v40 + 12) ) { v46 = (*(int (__fastcall **)(unsigned int, _DWORD))(*(_DWORD *)v40 + 36))(v40, 0) == -1; v40 &= v46 - 1; } v47 = v65 & (v62 != 0); if ( v47 ) { if ( v62[2] >= v62[3] ) { LOBYTE(v66) = v46; v61 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); v46 = v66; v42 = v61 != -1 ? 0 : v47; v62 = v61 == -1 ? 0 : v62; } else { v42 = 0; } } else { v42 = v65; } if ( v42 == v46 ) { LABEL_73: v66 = v40 | 0xFFFFFFFF00000000LL; goto LABEL_6; } v43 = *((_BYTE *)v41 + v68); v44 = -1; if ( v40 ) break; LABEL_48: if ( v43 != v44 ) goto LABEL_73; v45 = *(_BYTE **)(v40 + 8); if ( (unsigned int)v45 < *(_DWORD *)(v40 + 12) ) goto LABEL_50; v41 = (_DWORD **)((char *)v41 + 1); (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 40))(v40); if ( v41 == v67 ) { LABEL_75: LODWORD(v66) = v40; goto LABEL_76; } } v45 = *(_BYTE **)(v40 + 8); if ( (unsigned int)v45 >= *(_DWORD *)(v40 + 12) ) { v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 36))(v40); v44 = v60 != -1 ? v60 : -1; v40 &= (v60 == -1) - 1; goto LABEL_48; } if ( v43 != *v45 ) goto LABEL_73; LABEL_50: v41 = (_DWORD **)((char *)v41 + 1); *(_DWORD *)(v40 + 8) = v45 + 1; if ( v41 == v67 ) goto LABEL_75; } } if ( v38 != (char *)v39 ) { LABEL_58: HIDWORD(v66) = -1; goto LABEL_6; } LABEL_76: v59 = HIDWORD(v66); HIDWORD(v66) = -1; *a4 = v59; return v66; } //----- (00478EF0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_monthname( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7) { _DWORD *v7; // eax int v8; // edx int v9; // edx int v10; // edx _DWORD *v11; // ecx _DWORD *v12; // ebp char v13; // dl char v14; // al int v16; // eax int v17; // eax char v18; // [esp+38h] [ebp-94h] char v19; // [esp+38h] [ebp-94h] _DWORD *v20; // [esp+3Ch] [ebp-90h] unsigned int v21; // [esp+48h] [ebp-84h] BYREF int v22; // [esp+4Ch] [ebp-80h] BYREF int v23[31]; // [esp+50h] [ebp-7Ch] BYREF v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); v23[0] = v7[37]; v23[1] = v7[38]; v23[2] = v7[39]; v23[3] = v7[40]; v23[4] = v7[41]; v23[5] = v7[42]; v23[6] = v7[43]; v23[7] = v7[44]; v23[8] = v7[45]; v23[9] = v7[46]; v23[10] = v7[47]; v23[11] = v7[48]; v23[12] = v7[25]; v23[13] = v7[26]; v23[14] = v7[27]; v23[15] = v7[28]; v8 = v7[29]; v22 = 0; v23[16] = v8; v23[17] = v7[30]; v23[18] = v7[31]; v23[19] = v7[32]; v23[20] = v7[33]; v23[21] = v7[34]; v9 = v7[35]; v23[23] = v7[36]; v23[22] = v9; v11 = std::time_get>::_M_extract_wday_or_month( a1, a2, a3, a4, &v21, (int)v23, 0xCu, a5, &v22); v12 = v11; if ( v22 ) *a6 |= 4u; else *(_DWORD *)(a7 + 16) = v21; v13 = v10 == -1; v18 = v13 & (v11 != 0); if ( v18 ) { v13 = 0; if ( v11[2] >= v11[3] ) { v20 = v11; v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); v13 = v17 != -1 ? 0 : v18; v12 = v17 == -1 ? 0 : v20; } } v14 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v14 = 0; if ( a3[2] >= a3[3] ) { v19 = v13; v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v13 = v19; v14 = v16 == -1; } } } if ( v13 == v14 ) *a6 |= 2u; return v12; } // 47909C: variable 'v10' is possibly undefined //----- (00479160) -------------------------------------------------------- unsigned __int64 __stdcall std::time_get>::_M_extract_via_format( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char *a7) { char *v7; // ebx _DWORD *v8; // eax unsigned int v9; // ebx _BYTE *v10; // esi unsigned __int64 v11; // rax _DWORD *v12; // ecx char v13; // dl char v14; // di unsigned int v15; // edi char *v16; // ebp int v17; // edx char v18; // al char v19; // cl int (__stdcall *v20)(unsigned __int8, int); // eax int v21; // ebp char v22; // dl char v23; // al int (__stdcall *v24)(unsigned __int8, int); // edx char v25; // dl int v26; // eax int v27; // eax char v28; // bl int v29; // eax int v30; // ebx char v31; // al int (__stdcall *v32)(unsigned __int8, int); // edx _BYTE *v34; // eax unsigned __int64 v35; // rax int v36; // edx _DWORD *v37; // eax int v38; // eax unsigned __int64 v39; // rax unsigned __int64 v40; // rax char v41; // bl char v42; // al char v43; // bl char v44; // al unsigned __int64 v45; // rax unsigned __int64 v46; // rax char *v47; // eax _DWORD *v48; // eax unsigned __int64 v49; // rax unsigned __int64 v50; // rax unsigned __int64 v51; // rax unsigned int v52; // eax unsigned __int64 v53; // rax int v54; // eax int v55; // ebx char v56; // dl int (__stdcall *v57)(unsigned __int8, int); // ebp int v58; // eax int v59; // ebx char v60; // dl int (__stdcall *v61)(unsigned __int8, int); // ebp unsigned int v62; // eax unsigned __int64 v63; // rax _DWORD *v64; // eax int v65; // eax unsigned __int64 v66; // rax _DWORD *v67; // eax char *v68; // edx char *Stra; // [esp+0h] [ebp-9Ch] char *Str; // [esp+0h] [ebp-9Ch] unsigned int v71; // [esp+30h] [ebp-6Ch] _DWORD *v72; // [esp+38h] [ebp-64h] char v73; // [esp+3Ch] [ebp-60h] int v74; // [esp+3Ch] [ebp-60h] int v75; // [esp+48h] [ebp-54h] BYREF int v76; // [esp+4Ch] [ebp-50h] BYREF int v77; // [esp+50h] [ebp-4Ch] BYREF int v78; // [esp+54h] [ebp-48h] int v79; // [esp+58h] [ebp-44h] int v80; // [esp+5Ch] [ebp-40h] int v81; // [esp+60h] [ebp-3Ch] int v82; // [esp+64h] [ebp-38h] int v83; // [esp+68h] [ebp-34h] int v84; // [esp+6Ch] [ebp-30h] int v85; // [esp+70h] [ebp-2Ch] int v86; // [esp+74h] [ebp-28h] int v87; // [esp+78h] [ebp-24h] int v88; // [esp+7Ch] [ebp-20h] v7 = (char *)(a4 + 108); v8 = std::use_facet>(a4 + 108); Stra = v7; v9 = 0; v72 = v8; v10 = std::use_facet>((int)Stra); v11 = __PAIR64__(HIDWORD(a1), strlen(a7)); v75 = 0; v71 = v11; v12 = (_DWORD *)a1; while ( 1 ) { v13 = HIDWORD(v11) == -1; v14 = v13 & (v12 != 0); if ( v14 ) { v13 = 0; if ( v12[2] >= v12[3] ) { v29 = (*(int (__thiscall **)(_DWORD *, char *))(*v12 + 36))(v12, Str); v13 = 0; if ( v29 == -1 ) { LODWORD(a1) = 0; v13 = v14; } } } if ( a2 && a3 == -1 ) { if ( a2[2] >= a2[3] ) { v73 = v13; v26 = (*(int (**)(void))(*a2 + 36))(); v13 = v73; if ( v26 == -1 ) { a2 = 0; v13 = v73 ^ 1; } } } else { v13 ^= a3 == -1; } if ( v9 >= v71 || !v13 ) break; if ( v75 ) goto LABEL_43; v15 = v9 + 1; v16 = &a7[v9]; v17 = (unsigned __int8)a7[v9]; v18 = v10[v17 + 285]; v19 = a7[v9]; if ( v18 ) { LABEL_14: if ( v18 != 37 ) goto LABEL_27; v21 = (unsigned __int8)a7[v15]; v22 = v10[v21 + 285]; v23 = a7[v15]; if ( !v22 ) { v24 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v24 != std::ctype::do_narrow ) v23 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v24)(v10, v23, 0); if ( !v23 ) { LABEL_39: v75 |= 4u; HIDWORD(v11) = HIDWORD(a1); v12 = (_DWORD *)a1; goto LABEL_40; } v10[v21 + 285] = v23; v22 = v23; } v76 = 0; if ( (v22 == 69 || v22 == 79) && (v15 = v9 + 2, v30 = (unsigned __int8)a7[v9 + 2], v22 = v10[v30 + 285], v31 = v30, !v22) ) { v32 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v32 != std::ctype::do_narrow ) v31 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v32)(v10, (char)v30, 0); if ( !v31 ) goto LABEL_39; v10[v30 + 285] = v31; v25 = v31 - 65; if ( (unsigned __int8)(v31 - 65) > 0x38u ) goto LABEL_39; } else { v25 = v22 - 65; } switch ( v25 ) { case 0: v67 = (_DWORD *)v72[2]; v77 = v67[11]; v78 = v67[12]; v79 = v67[13]; v80 = v67[14]; v81 = v67[15]; v82 = v67[16]; v65 = v67[17]; goto LABEL_114; case 1: v48 = (_DWORD *)v72[2]; v77 = v48[25]; v78 = v48[26]; v79 = v48[27]; v80 = v48[28]; v81 = v48[29]; v82 = v48[30]; v83 = v48[31]; v84 = v48[32]; v85 = v48[33]; v86 = v48[34]; v87 = v48[35]; v38 = v48[36]; goto LABEL_57; case 2: case 24: case 56: LODWORD(v35) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v76, 0, 9999, 4u, a4, &v75); a1 = v35; if ( v75 ) goto LABEL_69; v36 = v76 - 1900; if ( v76 < 0 ) v36 = v76 + 100; v12 = (_DWORD *)a1; a6[5] = v36; HIDWORD(v11) = HIDWORD(a1); break; case 3: std::ctype::widen(v10, "%m/%d/%y", "%H:%M", &v77); v47 = (char *)&v77; goto LABEL_72; case 7: LODWORD(v49) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v76, 0, 23, 2u, a4, &v75); goto LABEL_76; case 8: LODWORD(v49) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v76, 1, 12, 2u, a4, &v75); LABEL_76: a1 = v49; if ( v75 ) goto LABEL_69; HIDWORD(v11) = HIDWORD(a1); v12 = (_DWORD *)a1; a6[2] = v76; break; case 12: LODWORD(v50) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v76, 0, 59, 2u, a4, &v75); a1 = v50; if ( v75 ) goto LABEL_69; HIDWORD(v11) = HIDWORD(a1); v12 = (_DWORD *)a1; a6[1] = v76; break; case 17: std::ctype::widen(v10, "%H:%M", "%H:%M:%S", &v77); v47 = (char *)&v77; goto LABEL_72; case 18: LODWORD(v51) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v76, 0, 61, 2u, a4, &v75); a1 = v51; if ( v75 ) goto LABEL_69; HIDWORD(v11) = HIDWORD(a1); v12 = (_DWORD *)a1; *a6 = v76; break; case 19: std::ctype::widen(v10, "%H:%M:%S", byte_4ED356, &v77); v47 = (char *)&v77; goto LABEL_72; case 23: v47 = *(char **)(v72[2] + 16); goto LABEL_72; case 25: if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 1) == 0 ) goto LABEL_39; LODWORD(v40) = std::time_get>::_M_extract_name( a1, a2, a3, &v77, (int)std::__timepunct_cache::_S_timezones, (_DWORD *)0xE, a4, &v75); a1 = v40; LOBYTE(v11) = std::istreambuf_iterator::equal(&a1, (int)&a2); HIDWORD(v11) = HIDWORD(a1); if ( (_BYTE)v11 || v77 | v75 ) goto LABEL_70; v41 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); if ( v10[28] ) { v42 = v10[74]; } else { std::ctype::_M_widen_init((int)v10); v42 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 45); } if ( v41 == v42 || ((v43 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)), !v10[28]) ? (std::ctype::_M_widen_init((int)v10), v44 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 43), Str = v68) : (char *)(v44 = v10[72]), v43 == v44) ) { LODWORD(v45) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v77, 0, 23, 2u, a4, &v75); a1 = v45; LODWORD(v46) = std::time_get>::_M_extract_num( (_DWORD *)v45, SHIDWORD(v45), a2, a3, &v77, 0, 59, 2u, a4, &v75); a1 = v46; } LABEL_69: HIDWORD(v11) = HIDWORD(a1); LABEL_70: v12 = (_DWORD *)a1; break; case 32: v64 = (_DWORD *)v72[2]; v77 = v64[18]; v78 = v64[19]; v79 = v64[20]; v80 = v64[21]; v81 = v64[22]; v82 = v64[23]; v65 = v64[24]; LABEL_114: v83 = v65; LODWORD(v66) = std::time_get>::_M_extract_name( a1, a2, a3, &v76, (int)&v77, (_DWORD *)7, a4, &v75); a1 = v66; if ( v75 ) goto LABEL_69; HIDWORD(v11) = HIDWORD(a1); v12 = (_DWORD *)a1; a6[6] = v76; break; case 33: case 39: v37 = (_DWORD *)v72[2]; v77 = v37[37]; v78 = v37[38]; v79 = v37[39]; v80 = v37[40]; v81 = v37[41]; v82 = v37[42]; v83 = v37[43]; v84 = v37[44]; v85 = v37[45]; v86 = v37[46]; v87 = v37[47]; v38 = v37[48]; LABEL_57: v88 = v38; LODWORD(v39) = std::time_get>::_M_extract_name( a1, a2, a3, &v76, (int)&v77, (_DWORD *)0xC, a4, &v75); a1 = v39; if ( v75 ) goto LABEL_69; HIDWORD(v11) = HIDWORD(a1); v12 = (_DWORD *)a1; a6[4] = v76; break; case 34: v47 = *(char **)(v72[2] + 24); goto LABEL_72; case 35: LODWORD(v63) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v76, 1, 31, 2u, a4, &v75); a1 = v63; if ( v75 ) goto LABEL_69; HIDWORD(v11) = HIDWORD(a1); v12 = (_DWORD *)a1; a6[3] = v76; break; case 36: if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 0x20) != 0 ) { v52 = *(_DWORD *)(a1 + 8); if ( v52 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v52 + 1; HIDWORD(a1) = -1; LODWORD(v11) = std::time_get>::_M_extract_num( (_DWORD *)a1, -1, a2, a3, &v76, 1, 9, 1u, a4, &v75); } else { LODWORD(v11) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v76, 10, 31, 2u, a4, &v75); } a1 = v11; v12 = (_DWORD *)v11; if ( !v75 ) a6[3] = v76; break; case 44: LODWORD(v53) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v76, 1, 12, 2u, a4, &v75); a1 = v53; if ( v75 ) goto LABEL_69; HIDWORD(v11) = HIDWORD(a1); v12 = (_DWORD *)a1; a6[4] = v76 - 1; break; case 45: v54 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); v55 = (unsigned __int8)v54; v56 = v10[(unsigned __int8)v54 + 285]; if ( v56 ) goto LABEL_99; v56 = v54; v57 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v57 != std::ctype::do_narrow ) v56 = ((int (__fastcall *)(_BYTE *, int, _DWORD, _DWORD))v57)(v10, v54, (char)v54, 0); if ( !v56 ) goto LABEL_117; v10[v55 + 285] = v56; LABEL_99: v12 = (_DWORD *)a1; if ( v56 != 10 ) goto LABEL_100; goto LABEL_107; case 51: v58 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); v59 = (unsigned __int8)v58; v60 = v10[(unsigned __int8)v58 + 285]; if ( v60 ) goto LABEL_106; v60 = v58; v61 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v61 != std::ctype::do_narrow ) v60 = ((int (__fastcall *)(_BYTE *, int, _DWORD, _DWORD))v61)(v10, v58, (char)v58, 0); if ( !v60 ) { LABEL_117: v12 = (_DWORD *)a1; LABEL_100: v75 |= 4u; HIDWORD(v11) = HIDWORD(a1); break; } v10[v59 + 285] = v60; LABEL_106: v12 = (_DWORD *)a1; if ( v60 != 9 ) goto LABEL_100; LABEL_107: v62 = v12[2]; if ( v62 >= v12[3] ) { std::streambuf::sbumpc((int)v12); v12 = (_DWORD *)a1; } else { v12[2] = v62 + 1; } HIDWORD(a1) = -1; HIDWORD(v11) = -1; break; case 55: v47 = *(char **)(v72[2] + 8); LABEL_72: LODWORD(v11) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v75, (int)a6, v47); a1 = v11; v12 = (_DWORD *)v11; break; default: goto LABEL_39; } LABEL_40: v9 = v15 + 1; } else { v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v20 != std::ctype::do_narrow ) { v74 = (unsigned __int8)a7[v9]; v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v10, (char)v17, 0); v17 = v74; } if ( v19 ) { v10[v17 + 285] = v19; v18 = v19; goto LABEL_14; } LABEL_27: LOBYTE(v27) = BYTE4(a1); v28 = *v16; v12 = (_DWORD *)a1; if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_28; v34 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) { v27 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v27 == -1 ) { LODWORD(a1) = 0; v12 = 0; } else { v12 = (_DWORD *)a1; } LABEL_28: if ( v28 != (_BYTE)v27 ) { HIDWORD(v11) = HIDWORD(a1); goto LABEL_30; } v34 = (_BYTE *)v12[2]; if ( (unsigned int)v34 < v12[3] ) { LABEL_46: v12[2] = v34 + 1; goto LABEL_47; } std::streambuf::sbumpc((int)v12); v12 = (_DWORD *)a1; LABEL_47: HIDWORD(a1) = -1; v9 = v15; HIDWORD(v11) = -1; } else { HIDWORD(v11) = -1; if ( v28 == *v34 ) goto LABEL_46; LABEL_30: v75 |= 4u; v9 = v15; } } } if ( v9 != v71 || v75 ) LABEL_43: *a5 |= 4u; return a1; } // 4791B9: variable 'v11' is possibly undefined // 479354: variable 'Str' is possibly undefined // 479526: variable 'v35' is possibly undefined // 479669: variable 'v39' is possibly undefined // 479729: variable 'v40' is possibly undefined // 479876: variable 'v45' is possibly undefined // 47988C: variable 'v46' is possibly undefined // 479A39: variable 'v49' is possibly undefined // 479B12: variable 'v50' is possibly undefined // 479BE1: variable 'v51' is possibly undefined // 479DA6: variable 'v53' is possibly undefined // 479F35: variable 'v63' is possibly undefined // 47A015: variable 'v66' is possibly undefined // 47A166: variable 'v68' is possibly undefined // 4E94E0: using guessed type void *std::__timepunct_cache::_S_timezones[2]; // 4ED356: using guessed type _BYTE byte_4ED356[2]; //----- (0047A190) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( _DWORD *a1, int a2, _DWORD *a3, int a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9) { int v9; // eax void *v10; // esp void *v11; // esp char v12; // dl bool v13; // bl char v14; // bl int v15; // edi unsigned int v16; // esi char v17; // dl bool v18; // bl char v19; // bl unsigned int v20; // edx unsigned int *v21; // ecx unsigned int v22; // edi unsigned int v23; // eax char *v25; // eax unsigned int v26; // eax int v27; // edx unsigned int v28; // ebx int v29; // edi char v30; // al int v31; // ecx unsigned int v32; // eax int v33; // eax void *v34; // esp int v35; // edi void *v36; // esp int v37; // ebx int v38; // eax int v39; // eax _DWORD *v40; // ebx int v41; // eax int v42; // eax int v43; // eax _DWORD *v44; // ebx int v45; // eax _BYTE *v46; // eax int v47; // eax int v48; // eax _DWORD *v49; // esi int v50; // eax _BYTE v51[8]; // [esp+10h] [ebp-48h] BYREF _BYTE *v52; // [esp+18h] [ebp-40h] _DWORD *v53; // [esp+1Ch] [ebp-3Ch] int v54; // [esp+20h] [ebp-38h] _DWORD *v55; // [esp+24h] [ebp-34h] bool v56; // [esp+2Ah] [ebp-2Eh] char v57; // [esp+2Bh] [ebp-2Dh] int v58; // [esp+2Ch] [ebp-2Ch] unsigned int *v59; // [esp+30h] [ebp-28h] unsigned int *v60; // [esp+34h] [ebp-24h] _BYTE *v61; // [esp+38h] [ebp-20h] unsigned int v62; // [esp+3Ch] [ebp-1Ch] v55 = a1; v54 = a2; v53 = a3; v60 = (unsigned int *)std::use_facet>(a8 + 108); v9 = 16 * ((8 * a7 + 27) >> 4); v10 = alloca(v9); v11 = alloca(v9); v59 = (unsigned int *)v51; v12 = a2 == -1; LOBYTE(v62) = v12 & (a1 != 0); if ( (_BYTE)v62 ) { v12 = 0; if ( v55[2] >= v55[3] ) { v38 = *v55; LOBYTE(v61) = 0; v39 = (*(int (__fastcall **)(_DWORD *))(v38 + 36))(v55); v12 = (char)v61; if ( v39 == -1 ) { v12 = v62; v55 = 0; LOBYTE(v62) = 0; } } } v56 = a4 == -1; v13 = v56 && a3 != 0; if ( v13 ) { if ( a3[2] >= a3[3] ) { v47 = *a3; LOBYTE(v61) = v12; v48 = (*(int (__fastcall **)(_DWORD *))(v47 + 36))(a3); v12 = (char)v61; v14 = v48 == -1 && v13; v53 = v48 == -1 ? 0 : a3; } else { v14 = 0; } } else { v14 = v56; } if ( v14 == v12 ) { v52 = 0; v15 = 0; v16 = 0; } else { if ( (_BYTE)v62 ) { v46 = (_BYTE *)v55[2]; if ( (unsigned int)v46 >= v55[3] ) { v49 = v55; v50 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); LOBYTE(v62) = v50 != -1 ? v50 : -1; v55 = v50 == -1 ? 0 : v49; } else { LOBYTE(v62) = *v46; } } else { LOBYTE(v62) = a2; } v15 = 2 * a7; if ( 2 * a7 ) { v61 = (_BYTE *)(2 * a7); v27 = a6; v28 = 0; v16 = 0; v29 = (int)v60; do { while ( 1 ) { v31 = **(char **)(v27 + 4 * v28); if ( (_BYTE)v31 == (_BYTE)v62 ) break; a6 = v27; v30 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v29 + 8))(v29, v31); v27 = a6; if ( v30 == (_BYTE)v62 ) break; if ( v61 == (_BYTE *)++v28 ) goto LABEL_50; } v59[v16++] = v28++; } while ( v61 != (_BYTE *)v28 ); LABEL_50: if ( v16 ) { v32 = v55[2]; if ( v32 >= v55[3] ) std::streambuf::sbumpc((int)v55); else v55[2] = v32 + 1; v33 = 16 * ((4 * v16 + 27) >> 4); v34 = alloca(v33); v35 = 0; v36 = alloca(v33); v62 = v16; v52 = v51; v61 = v51; v37 = (int)v59; do { *(_DWORD *)&v61[4 * v35] = strlen(*(const char **)(a6 + 4 * *(_DWORD *)(v37 + 4 * v35))); ++v35; } while ( v62 != v35 ); v54 = -1; v16 = v62; v15 = 1; } else { v52 = 0; v15 = 0; } } else { v52 = 0; v16 = 0; } } while ( 2 ) { v17 = v54 == -1; LOBYTE(v62) = v17 & (v55 != 0); if ( (_BYTE)v62 ) { if ( v55[2] >= v55[3] ) { v40 = v55; v41 = *v55; LOBYTE(v61) = v54 == -1; v42 = (*(int (__fastcall **)(_DWORD *))(v41 + 36))(v55); v17 = (char)v61; LOBYTE(v62) = v42 != -1 ? 0 : v62; v55 = v42 == -1 ? 0 : v40; } else { LOBYTE(v62) = 0; } } else { LOBYTE(v62) = v54 == -1; } v18 = v56 && v53 != 0; if ( v18 ) { if ( v53[2] < v53[3] ) { if ( !(_BYTE)v62 ) break; goto LABEL_11; } LOBYTE(v61) = v17; v43 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); v17 = (char)v61; v19 = v43 == -1 && v18; v53 = v43 == -1 ? 0 : v53; } else { v19 = v56; } if ( v19 == (_BYTE)v62 ) break; LABEL_11: if ( v55 && v17 ) { v25 = (char *)v55[2]; if ( (unsigned int)v25 >= v55[3] ) { v44 = v55; v45 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); v57 = v45 != -1 ? v45 : -1; v55 = v45 == -1 ? 0 : v44; } else { v57 = *v25; } } else { v57 = v54; } if ( !v16 ) { LABEL_30: *a9 |= 4u; return v55; } v62 = v15; v20 = 0; v58 = 0; v61 = v52; do { while ( 1 ) { v21 = (unsigned int *)&v61[4 * v20]; if ( *v21 > v62 ) break; ++v58; ++v20; LABEL_17: if ( v20 >= v16 ) goto LABEL_21; } v22 = v59[v20]; v60 = &v59[v20]; if ( *(_BYTE *)(*(_DWORD *)(a6 + 4 * v22) + v62) == v57 ) { ++v20; goto LABEL_17; } *v60 = v59[--v16]; *v21 = *(_DWORD *)&v61[4 * v16]; } while ( v20 < v16 ); LABEL_21: v15 = v62; if ( v58 != v16 ) { v23 = v55[2]; if ( v23 >= v55[3] ) (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); else v55[2] = v23 + 1; v54 = -1; ++v15; continue; } break; } if ( v16 != 1 ) { if ( v16 == 2 && (*(_DWORD *)v52 == v15 || *((_DWORD *)v52 + 1) == v15) ) goto LABEL_39; goto LABEL_30; } if ( *(_DWORD *)v52 != v15 ) goto LABEL_30; LABEL_39: v26 = *v59; if ( *v59 >= a7 ) v26 -= a7; *a5 = v26; return v55; } //----- (0047A650) -------------------------------------------------------- int __stdcall std::time_get>::get( int a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, unsigned __int8 *a8, unsigned __int8 *a9) { unsigned __int8 *v9; // esi _DWORD *v11; // ebp int v12; // edx char v13; // dl char v14; // bl char v15; // dl char v16; // bl unsigned int v17; // eax char v18; // bl char v19; // dl int v20; // edx char v21; // bl char v22; // al int (__stdcall *v23)(unsigned __int8, int); // ebx unsigned __int8 v24; // dl int (__stdcall *v25)(unsigned __int8, int); // eax int v26; // esi int (__stdcall *v27)(unsigned __int8, int); // eax _BYTE *v28; // eax char v29; // dl _BYTE *v30; // esi char v31; // bl unsigned __int64 v32; // rax char v33; // al unsigned __int8 *i; // esi int j; // ebp bool v37; // si char v38; // bl char v39; // dl int v40; // eax unsigned __int8 *v41; // eax int (__stdcall *v42)(unsigned __int8); // eax char *v43; // eax int v44; // eax int v45; // eax int v46; // eax char *v47; // eax int v48; // eax int v49; // eax int v50; // eax int v51; // eax bool v52; // [esp+3Fh] [ebp-4Dh] bool v54; // [esp+44h] [ebp-48h] char v55; // [esp+44h] [ebp-48h] _DWORD *v56; // [esp+44h] [ebp-48h] char v57; // [esp+44h] [ebp-48h] unsigned __int8 *v59; // [esp+4Ch] [ebp-40h] int v60; // [esp+4Ch] [ebp-40h] int v61; // [esp+50h] [ebp-3Ch] unsigned __int8 v62; // [esp+50h] [ebp-3Ch] char v63; // [esp+6Ch] [ebp-20h] BYREF char v64; // [esp+6Dh] [ebp-1Fh] char v65; // [esp+6Eh] [ebp-1Eh] char v66; // [esp+6Fh] [ebp-1Dh] unsigned __int8 *v67; // [esp+ACh] [ebp+20h] v9 = a8; v11 = std::use_facet>(a5 + 108); *a6 = 0; if ( a8 == a9 ) return a1; v52 = a4 == -1; while ( 1 ) { v54 = a2 == -1; if ( v54 && a1 != 0 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v48 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); v18 = v48 == -1 && v54 && a1 != 0; a1 = v48 == -1 ? 0 : a1; } else { v18 = 0; } } else { v18 = a2 == -1; } if ( !v52 || a3 == 0 ) { v19 = a4 == -1; goto LABEL_21; } if ( a3[2] >= a3[3] ) { v49 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v19 = v49 == -1 && v52 && a3 != 0; a3 = v49 == -1 ? 0 : a3; LABEL_21: if ( v19 == v18 ) goto LABEL_81; goto LABEL_22; } if ( !v18 ) { LABEL_81: *a6 = 6; return a1; } LABEL_22: v20 = *v9; v21 = *((_BYTE *)v11 + v20 + 285); v22 = *v9; if ( !v21 ) { v23 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); if ( v23 != std::ctype::do_narrow ) { v60 = *v9; v22 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v23)(v11, (char)v20, 0); v20 = v60; } if ( !v22 ) goto LABEL_3; *((_BYTE *)v11 + v20 + 285) = v22; v21 = v22; } if ( v21 == 37 ) { v59 = v9 + 1; if ( a9 == v9 + 1 ) break; v61 = v9[1]; v24 = v9[1]; v55 = *((_BYTE *)v11 + v61 + 285); if ( !v55 ) { v25 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); if ( v25 != std::ctype::do_narrow ) v24 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v25)(v11, (char)v61, 0); if ( !v24 ) goto LABEL_89; v55 = v24; *((_BYTE *)v11 + v61 + 285) = v24; } if ( v55 == 69 || v55 == 79 ) { v59 = v9 + 2; if ( a9 == v9 + 2 ) break; v26 = v9[2]; v24 = v26; if ( *((_BYTE *)v11 + v26 + 285) ) { v24 = *((_BYTE *)v11 + v26 + 285); } else { v27 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); if ( v27 != std::ctype::do_narrow ) v24 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v27)(v11, (char)v26, 0); if ( v24 ) *((_BYTE *)v11 + v26 + 285) = v24; } LABEL_42: v62 = v24; v28 = std::use_facet>(a5 + 108); v29 = v62; v30 = v28; *a6 = 0; if ( v28[28] ) { v21 = v28[66]; } else { std::ctype::_M_widen_init((int)v28); v29 = v62; v42 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v30 + 24); if ( v42 != std::ctype::do_widen ) { v21 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v42)(v30, v62, 37); v29 = v62; } } v63 = v21; if ( v55 ) { v65 = v29; v66 = 0; v64 = v55; } else { v64 = v29; v65 = 0; } v32 = std::time_get>::_M_extract_via_format( __PAIR64__(a2, a1), a3, a4, a5, a6, a7, &v63); a1 = v32; v31 = HIDWORD(v32) == -1; a2 = HIDWORD(v32); BYTE4(v32) = v31 & ((_DWORD)v32 != 0); if ( BYTE4(v32) ) { v31 = 0; if ( *(_DWORD *)(v32 + 8) >= *(_DWORD *)(v32 + 12) ) { v57 = BYTE4(v32); v44 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v32 + 36))(v32); v31 = v44 != -1 ? 0 : v57; a1 = v44 == -1 ? 0 : a1; } } if ( a3 && a4 == -1 ) { v33 = 0; if ( a3[2] >= a3[3] ) v33 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; } else { v33 = a4 == -1; } if ( v33 == v31 ) *a6 |= 2u; v9 = v59 + 1; if ( a9 == v59 + 1 ) return a1; goto LABEL_16; } v24 = v55; LABEL_89: v55 = 0; goto LABEL_42; } LABEL_3: v12 = v11[6]; if ( (*(_BYTE *)(v12 + 2 * *v9) & 0x20) != 0 ) { for ( i = v9 + 1; a9 != i; ++i ) { if ( (*(_BYTE *)(v12 + 2 * *i) & 0x20) == 0 ) break; } v67 = i; v56 = v11; for ( j = a2; ; j = -1 ) { v37 = j == -1; if ( v37 && a1 != 0 ) { if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v45 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); v38 = v45 == -1 && v37 && a1 != 0; a1 = v45 == -1 ? 0 : a1; } else { v38 = 0; } } else { v38 = j == -1; } if ( !v52 || a3 == 0 ) break; if ( a3[2] >= a3[3] ) { v46 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v39 = v46 == -1 && v52 && a3 != 0; a3 = v46 == -1 ? 0 : a3; LABEL_63: if ( v39 == v38 ) goto LABEL_76; goto LABEL_64; } if ( !v38 ) { LABEL_76: a2 = j; v9 = v67; v11 = v56; goto LABEL_15; } LABEL_64: if ( a1 && j == -1 ) { v41 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v41 < *(_DWORD *)(a1 + 12) ) { if ( (*(_BYTE *)(v56[6] + 2 * *v41) & 0x20) == 0 ) { v11 = v56; a2 = -1; v9 = v67; goto LABEL_15; } LABEL_69: *(_DWORD *)(a1 + 8) = v41 + 1; continue; } v40 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); a1 = v40 == -1 ? 0 : a1; } else { LOBYTE(v40) = j; } if ( (*(_BYTE *)(v56[6] + 2 * (unsigned __int8)v40) & 0x20) == 0 ) goto LABEL_76; v41 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v41 < *(_DWORD *)(a1 + 12) ) goto LABEL_69; (*(void (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } v39 = a4 == -1; goto LABEL_63; } if ( a1 && a2 == -1 ) { v43 = *(char **)(a1 + 8); if ( (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ) { v50 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); v13 = v50 != -1 ? v50 : -1; a1 = v50 == -1 ? 0 : a1; } else { v13 = *v43; } } else { v13 = a2; } v14 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v11 + 16))(v11, v13); if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v11 + 16))(v11, (char)*v9) != v14 ) { if ( a1 && a2 == -1 ) { v47 = *(char **)(a1 + 8); if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) { v51 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); v15 = v51 != -1 ? v51 : -1; a1 = v51 == -1 ? 0 : a1; } else { v15 = *v47; } } else { v15 = a2; } v16 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v11 + 8))(v11, v15); if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v11 + 8))(v11, (char)*v9) != v16 ) break; } v17 = *(_DWORD *)(a1 + 8); if ( v17 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v17 + 1; a2 = -1; ++v9; LABEL_15: if ( a9 == v9 ) return a1; LABEL_16: if ( *a6 ) return a1; } *a6 = 4; return a1; } //----- (0047AE20) -------------------------------------------------------- int __stdcall std::time_get>::get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8) { _BYTE *v8; // ebp char v9; // al int v10; // esi unsigned __int64 v11; // rax char v12; // bp int (__stdcall *v14)(unsigned __int8); // edx char v15; // [esp+20h] [ebp-3Ch] char v16; // [esp+3Ch] [ebp-20h] BYREF char v17; // [esp+3Dh] [ebp-1Fh] char v18; // [esp+3Eh] [ebp-1Eh] char v19; // [esp+3Fh] [ebp-1Dh] v8 = std::use_facet>(a4 + 108); *a5 = 0; if ( v8[28] ) { v9 = v8[66]; } else { std::ctype::_M_widen_init((int)v8); v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); v9 = 37; if ( v14 != std::ctype::do_widen ) v9 = ((int (__thiscall *)(_BYTE *, int))v14)(v8, 37); } v16 = v9; if ( a8 ) { v19 = 0; v17 = a8; v18 = a7; } else { v18 = 0; v17 = a7; } v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v16); v10 = v11; BYTE4(v11) = HIDWORD(v11) == -1; v12 = BYTE4(v11) & ((_DWORD)v11 != 0); if ( v12 ) { BYTE4(v11) = 0; if ( *(_DWORD *)(v11 + 8) >= *(_DWORD *)(v11 + 12) ) { LODWORD(v11) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v11 + 36))(v11, 0); BYTE4(v11) = (_DWORD)v11 != -1 ? 0 : v12; v10 = (_DWORD)v11 == -1 ? 0 : v10; } } LOBYTE(v11) = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { LOBYTE(v11) = 0; if ( a2[2] >= a2[3] ) { v15 = BYTE4(v11); LODWORD(v11) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); BYTE4(v11) = v15; LOBYTE(v11) = (_DWORD)v11 == -1; } } } if ( BYTE4(v11) == (_BYTE)v11 ) *a5 |= 2u; return v10; } //----- (0047AFE0) -------------------------------------------------------- int __stdcall std::time_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8) { _BYTE *v8; // ebp char v9; // al int v10; // esi unsigned __int64 v11; // rax char v12; // bp int (__stdcall *v14)(unsigned __int8); // edx char v15; // [esp+20h] [ebp-3Ch] char v16; // [esp+3Ch] [ebp-20h] BYREF char v17; // [esp+3Dh] [ebp-1Fh] char v18; // [esp+3Eh] [ebp-1Eh] char v19; // [esp+3Fh] [ebp-1Dh] v8 = std::use_facet>(a4 + 108); *a5 = 0; if ( v8[28] ) { v9 = v8[66]; } else { std::ctype::_M_widen_init((int)v8); v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); v9 = 37; if ( v14 != std::ctype::do_widen ) v9 = ((int (__thiscall *)(_BYTE *, int))v14)(v8, 37); } v16 = v9; if ( a8 ) { v19 = 0; v17 = a8; v18 = a7; } else { v18 = 0; v17 = a7; } v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v16); v10 = v11; BYTE4(v11) = HIDWORD(v11) == -1; v12 = BYTE4(v11) & ((_DWORD)v11 != 0); if ( v12 ) { BYTE4(v11) = 0; if ( *(_DWORD *)(v11 + 8) >= *(_DWORD *)(v11 + 12) ) { LODWORD(v11) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v11 + 36))(v11, 0); BYTE4(v11) = (_DWORD)v11 != -1 ? 0 : v12; v10 = (_DWORD)v11 == -1 ? 0 : v10; } } LOBYTE(v11) = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { LOBYTE(v11) = 0; if ( a2[2] >= a2[3] ) { v15 = BYTE4(v11); LODWORD(v11) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); BYTE4(v11) = v15; LOBYTE(v11) = (_DWORD)v11 == -1; } } } if ( BYTE4(v11) == (_BYTE)v11 ) *a5 |= 2u; return v10; } //----- (0047B1A0) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (0047B1B0) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (0047B1C0) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (0047B1D0) -------------------------------------------------------- int __fastcall std::time_get>::date_order(int a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); if ( v1 == std::time_get>::do_date_order ) return 0; else return v1(); } //----- (0047B1F0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_date( __int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6) { _DWORD *v6; // eax __int64 v7; // rax _DWORD *v8; // ecx _DWORD *v9; // ebp __int16 v10; // bx char v11; // cl __int16 *v13; // eax __int16 v14; // ax __int16 *v15; // eax __int16 v16; // ax char v17; // [esp+2Ch] [ebp-30h] _DWORD *v18; // [esp+30h] [ebp-2Ch] v6 = std::use_facet>(a4 + 108); v7 = std::time_get>::_M_extract_via_format( a1, a2, a3, a4, a5, a6, (wchar_t *)*(_DWORD *)(v6[2] + 8)); v8 = (_DWORD *)v7; v9 = (_DWORD *)v7; v10 = WORD2(v7) == 0xFFFF; v17 = v10 & ((_DWORD)v7 != 0); if ( v17 ) { v15 = *(__int16 **)(v7 + 8); if ( (unsigned int)v15 >= v8[3] ) { v18 = v8; v16 = (*(int (**)(void))(*v8 + 36))(); v8 = v18; } else { v16 = *v15; } LOBYTE(v10) = v16 != -1 ? 0 : v17; v9 = v16 == -1 ? 0 : v8; } v11 = (_WORD)a3 == 0xFFFF; if ( a2 && (_WORD)a3 == 0xFFFF ) { v13 = (__int16 *)a2[2]; if ( (unsigned int)v13 >= a2[3] ) v14 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v14 = *v13; v11 = v14 == -1; } if ( (_BYTE)v10 == v11 ) *a5 |= 2u; return v9; } //----- (0047B330) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_time( __int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6) { _DWORD *v6; // eax __int64 v7; // rax _DWORD *v8; // ecx _DWORD *v9; // ebp __int16 v10; // bx char v11; // cl __int16 *v13; // eax __int16 v14; // ax __int16 *v15; // eax __int16 v16; // ax char v17; // [esp+2Ch] [ebp-30h] _DWORD *v18; // [esp+30h] [ebp-2Ch] v6 = std::use_facet>(a4 + 108); v7 = std::time_get>::_M_extract_via_format( a1, a2, a3, a4, a5, a6, (wchar_t *)*(_DWORD *)(v6[2] + 16)); v8 = (_DWORD *)v7; v9 = (_DWORD *)v7; v10 = WORD2(v7) == 0xFFFF; v17 = v10 & ((_DWORD)v7 != 0); if ( v17 ) { v15 = *(__int16 **)(v7 + 8); if ( (unsigned int)v15 >= v8[3] ) { v18 = v8; v16 = (*(int (**)(void))(*v8 + 36))(); v8 = v18; } else { v16 = *v15; } LOBYTE(v10) = v16 != -1 ? 0 : v17; v9 = v16 == -1 ? 0 : v8; } v11 = (_WORD)a3 == 0xFFFF; if ( a2 && (_WORD)a3 == 0xFFFF ) { v13 = (__int16 *)a2[2]; if ( (unsigned int)v13 >= a2[3] ) v14 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v14 = *v13; v11 = v14 == -1; } if ( (_BYTE)v10 == v11 ) *a5 |= 2u; return v9; } //----- (0047B470) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_year( _DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7) { _DWORD *v7; // ecx __int16 v8; // dx __int16 v9; // ax _DWORD *v10; // ebp int v11; // edx char v12; // bl char v13; // cl __int16 *v15; // eax __int16 v16; // ax __int16 *v17; // eax __int16 v18; // ax char v19; // [esp+43h] [ebp-39h] _DWORD *v20; // [esp+44h] [ebp-38h] int v21; // [esp+58h] [ebp-24h] BYREF int v22[8]; // [esp+5Ch] [ebp-20h] BYREF v22[0] = 0; v7 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v21, 0, 9999, 4u, a5, v22); v9 = v8; v10 = v7; if ( v22[0] ) { *a6 |= 4u; } else { v11 = v21 - 1900; if ( v21 < 0 ) v11 = v21 + 100; *(_DWORD *)(a7 + 20) = v11; } v12 = v9 == -1; v19 = v12 & (v7 != 0); if ( v19 ) { v17 = (__int16 *)v7[2]; if ( (unsigned int)v17 >= v7[3] ) { v20 = v7; v18 = (*(int (**)(void))(*v7 + 36))(); v7 = v20; } else { v18 = *v17; } v12 = v18 != -1 ? 0 : v19; v10 = v18 == -1 ? 0 : v7; } v13 = a4 == -1; if ( a3 && a4 == -1 ) { v15 = (__int16 *)a3[2]; if ( (unsigned int)v15 >= a3[3] ) v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v16 = *v15; v13 = v16 == -1; } if ( v12 == v13 ) *a6 |= 2u; return v10; } // 47B4EA: variable 'v8' is possibly undefined // 47B470: using guessed type int var_20[8]; //----- (0047B5F0) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (0047B600) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (0047B610) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (0047B620) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_num( _DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10) { unsigned int v10; // ebp int v12; // edi unsigned int i; // esi unsigned __int8 v14; // dl unsigned __int16 v15; // ax char v16; // al unsigned int v17; // eax __int16 *v18; // eax __int16 v19; // ax __int16 *v20; // eax __int16 v21; // ax unsigned __int16 *v23; // eax char v24; // [esp+1Fh] [ebp-2Dh] bool v25; // [esp+1Fh] [ebp-2Dh] void *v27; // [esp+24h] [ebp-28h] char v29; // [esp+2Eh] [ebp-1Eh] unsigned __int8 v30; // [esp+2Fh] [ebp-1Dh] v10 = 10; v27 = std::use_facet>(a9 + 108); if ( a8 != 2 ) v10 = a8 == 4 ? 1000 : 1; v29 = a4 == -1; v12 = 0; for ( i = 0; ; ++i ) { v25 = a2 == -1 && a1 != 0; if ( v25 ) break; v24 = a2 == -1; v14 = v29 & (a3 != 0); if ( v14 ) goto LABEL_20; LABEL_5: if ( v24 == v29 ) goto LABEL_23; LABEL_6: if ( i >= a8 ) goto LABEL_23; if ( a1 && a2 == -1 ) { v23 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v23 >= a1[3] ) v15 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v15 = *v23; a1 = v15 == 0xFFFF ? 0 : a1; } else { v15 = a2; } v16 = (*(int (__thiscall **)(void *, _DWORD, int))(*(_DWORD *)v27 + 48))(v27, v15, 42); if ( (unsigned __int8)(v16 - 48) > 9u ) goto LABEL_24; v12 = v16 + 10 * v12 - 48; if ( (int)(v12 * v10) > a7 || (int)(v10 + v12 * v10) <= a6 ) goto LABEL_24; v17 = a1[2]; v10 /= 0xAu; if ( v17 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v17 + 2; a2 = -1; } v18 = (__int16 *)a1[2]; if ( (unsigned int)v18 >= a1[3] ) v19 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v19 = *v18; a1 = v19 == -1 ? 0 : a1; v24 = v19 == -1 && v25; v14 = v29 & (a3 != 0); if ( !v14 ) goto LABEL_5; LABEL_20: v20 = (__int16 *)a3[2]; if ( (unsigned int)v20 >= a3[3] ) { v30 = v14; v21 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v14 = v30; } else { v21 = *v20; } a3 = v21 == -1 ? 0 : a3; if ( v24 != ((unsigned __int8)((v21 != -1) - 1) & v14) ) goto LABEL_6; LABEL_23: if ( i == a8 ) { LABEL_27: *a5 = v12; return a1; } LABEL_24: if ( a8 == 4 && i == 2 ) { v12 -= 100; goto LABEL_27; } *a10 |= 4u; return a1; } //----- (0047B8B0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_weekday( _DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7) { _DWORD *v7; // eax int v8; // ecx int v9; // eax __int16 v10; // dx _DWORD *v11; // ecx _DWORD *v12; // ebp char v13; // bl char v14; // si char v15; // cl __int16 *v17; // eax __int16 v18; // ax __int16 *v19; // eax __int16 v20; // ax _DWORD *v21; // [esp+40h] [ebp-6Ch] int v22; // [esp+50h] [ebp-5Ch] BYREF int v23; // [esp+54h] [ebp-58h] BYREF int v24[21]; // [esp+58h] [ebp-54h] BYREF v23 = 0; v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); v24[0] = v7[18]; v24[1] = v7[19]; v24[2] = v7[20]; v24[3] = v7[21]; v24[4] = v7[22]; v24[5] = v7[23]; v24[6] = v7[24]; v24[7] = v7[11]; v24[8] = v7[12]; v24[9] = v7[13]; v24[10] = v7[14]; v24[11] = v7[15]; v8 = v7[16]; v9 = v7[17]; v24[12] = v8; v24[13] = v9; v11 = std::time_get>::_M_extract_wday_or_month( a1, a2, a3, a4, &v22, (int)v24, 7u, a5, &v23); v12 = v11; if ( v23 ) *a6 |= 4u; else *(_DWORD *)(a7 + 24) = v22; v13 = v10 == -1; v14 = v13 & (v11 != 0); if ( v14 ) { v19 = (__int16 *)v11[2]; if ( (unsigned int)v19 >= v11[3] ) { v21 = v11; v20 = (*(int (**)(void))(*v11 + 36))(); v11 = v21; } else { v20 = *v19; } v13 = v20 != -1 ? 0 : v14; v12 = v20 == -1 ? 0 : v11; } v15 = a4 == -1; if ( a3 && a4 == -1 ) { v17 = (__int16 *)a3[2]; if ( (unsigned int)v17 >= a3[3] ) v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v18 = *v17; v15 = v18 == -1; } if ( v15 == v13 ) *a6 |= 2u; return v12; } // 47B9DD: variable 'v10' is possibly undefined //----- (0047BAB0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_name( _DWORD *a1, int a2, _DWORD *a3, int *a4, _DWORD *a5, int a6, int a7, int a8, _DWORD *a9) { int v9; // eax void *v10; // esp void *v11; // esp char v12; // dl char v13; // dl char v14; // bl int v16; // edx int v17; // esi size_t v18; // ebx int v19; // edi __int16 v20; // ax int v21; // ecx int *v22; // edi size_t v23; // eax unsigned int v24; // ebx size_t v25; // eax unsigned int v26; // eax _WORD *v27; // eax __int16 v28; // dx char v29; // si char v30; // dl char v31; // dl unsigned int v32; // ecx size_t v33; // esi int i; // eax __int16 v35; // ax __int16 *v36; // eax unsigned int v37; // eax int *v38; // eax int *v39; // ebx const wchar_t *v40; // edi unsigned int v41; // ebx unsigned int v42; // esi unsigned int v43; // eax __int16 *v44; // eax __int16 v45; // ax unsigned __int8 v46; // di char v47; // dl char v48; // dl __int16 v49; // di __int16 *v50; // eax __int16 v51; // ax __int16 *v52; // eax __int16 v53; // cx int v54; // eax __int16 *v55; // eax __int16 v56; // ax __int16 *v57; // eax __int16 v58; // ax __int16 v59; // ax _WORD *v60; // eax int v61; // eax int v62; // eax __int16 *v63; // eax __int16 v64; // cx __int16 v65; // ax int v66; // [esp+10h] [ebp-38h] BYREF _DWORD *v67; // [esp+14h] [ebp-34h] bool v68; // [esp+1Bh] [ebp-2Dh] int v69; // [esp+1Ch] [ebp-2Ch] _DWORD *v70; // [esp+20h] [ebp-28h] int *v71; // [esp+24h] [ebp-24h] size_t v72; // [esp+28h] [ebp-20h] unsigned int v73; // [esp+2Ch] [ebp-1Ch] v71 = a4; v66 = a2; LOWORD(v72) = a2; v70 = a1; v67 = a3; v69 = (int)std::use_facet>(a8 + 108); v9 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); v10 = alloca(v9); v11 = alloca(v9); LOBYTE(v73) = (_WORD)a2 == 0xFFFF; v12 = v73 & (a1 != 0); if ( v12 ) { v57 = (__int16 *)a1[2]; if ( (unsigned int)v57 >= a1[3] ) { v61 = *a1; LOBYTE(v70) = v73 & (a1 != 0); v58 = (*(int (__fastcall **)(_DWORD *))(v61 + 36))(a1); v12 = (char)v70; } else { v58 = *v57; } v70 = v58 == -1 ? 0 : a1; v13 = v58 != -1 ? 0 : v12; } else { v13 = v73; } v68 = (_WORD)v71 == 0xFFFF; if ( v68 && a3 != 0 ) { v55 = (__int16 *)a3[2]; if ( (unsigned int)v55 >= a3[3] ) { v62 = *a3; LOBYTE(v71) = v13; v56 = (*(int (__fastcall **)(_DWORD *))(v62 + 36))(a3); v13 = (char)v71; } else { v56 = *v55; } v67 = v56 == -1 ? 0 : a3; v14 = v56 == -1 && v68 && a3 != 0; } else { v14 = v68; } if ( v14 == v13 ) goto LABEL_6; if ( v70 && (_BYTE)v73 ) { v60 = (_WORD *)v70[2]; LOWORD(v73) = (unsigned int)v60 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v60; v70 = (_WORD)v73 == 0xFFFF ? 0 : v70; } else { LOWORD(v73) = v72; } if ( !a7 ) goto LABEL_6; v71 = &v66; v16 = a6; v17 = 0; v18 = 0; v19 = v69; do { while ( 1 ) { v21 = **(unsigned __int16 **)(v16 + 4 * v17); if ( (_WORD)v21 == (_WORD)v73 ) break; a6 = v16; v20 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v19 + 24))(v19, v21); v16 = a6; if ( v20 == (_WORD)v73 ) break; if ( a7 == ++v17 ) goto LABEL_17; } v71[v18++] = v17++; } while ( a7 != v17 ); LABEL_17: v22 = v71; v71 = 0; if ( v18 <= 1 ) goto LABEL_41; do { v69 = *v22; v23 = wcslen(*(const wchar_t **)(a6 + 4 * v69)); v72 = v18; v24 = 1; v73 = v23; do { v25 = wcslen(*(const wchar_t **)(a6 + 4 * v22[v24])); if ( v73 > v25 ) v73 = v25; ++v24; } while ( v24 < v72 ); v18 = v72; v26 = v70[2]; if ( v26 >= v70[3] ) (*(void (__fastcall **)(_DWORD *))(*v70 + 40))(v70); else v70[2] = v26 + 2; v71 = (int *)((char *)v71 + 1); if ( (unsigned int)v71 >= v73 ) goto LABEL_59; v27 = (_WORD *)v70[2]; v28 = (unsigned int)v27 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v27; v70 = v28 == -1 ? 0 : v70; v29 = v28 == -1; v30 = v68 && v67 != 0; if ( v30 ) { v52 = (__int16 *)v67[2]; if ( (unsigned int)v52 >= v67[3] ) { LOBYTE(v73) = v68 && v67 != 0; v59 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); v30 = v73; v53 = v59; } else { v53 = *v52; } v67 = v53 == -1 ? 0 : v67; v31 = v53 != -1 ? 0 : v30; } else { v31 = v68; } if ( v29 == v31 ) goto LABEL_59; v32 = (unsigned int)v70; v33 = 0; v72 = 2 * (_DWORD)v71; for ( i = v69; ; i = v22[v33] ) { v16 = v72; LOWORD(v73) = *(_WORD *)(*(_DWORD *)(a6 + 4 * i) + v72); v35 = -1; if ( v32 ) { v36 = *(__int16 **)(v32 + 8); if ( (unsigned int)v36 >= *(_DWORD *)(v32 + 12) ) { v54 = *(_DWORD *)v32; v70 = (_DWORD *)v32; v35 = (*(int (**)(void))(v54 + 36))(); v32 = (unsigned int)v70; } else { v35 = *v36; } v16 = (v35 == -1) - 1; v32 &= v16; } if ( (_WORD)v73 == v35 ) break; v22[v33] = v22[--v18]; if ( v18 <= v33 ) goto LABEL_39; LABEL_32: ; } if ( v18 > ++v33 ) goto LABEL_32; LABEL_39: v70 = (_DWORD *)v32; } while ( v18 > 1 ); LOWORD(v72) = -1; LABEL_41: if ( v18 == 1 ) { v37 = v70[2]; if ( v37 >= v70[3] ) (*(void (__fastcall **)(_DWORD *, int))(*v70 + 40))(v70, v16); else v70[2] = v37 + 2; v38 = (int *)*v22; v39 = v71; v40 = *(const wchar_t **)(a6 + 4 * *v22); v71 = v38; v41 = (unsigned int)v39 + 1; v72 = wcslen(v40); if ( v41 < v72 ) { v73 = (unsigned int)v40; v42 = (unsigned int)v70; do { while ( 1 ) { v44 = *(__int16 **)(v42 + 8); if ( (unsigned int)v44 >= *(_DWORD *)(v42 + 12) ) v45 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); else v45 = *v44; v46 = v45 == -1; v42 &= v46 - 1; v47 = v68 && v67 != 0; if ( v47 ) { v63 = (__int16 *)v67[2]; if ( (unsigned int)v63 >= v67[3] ) { LOBYTE(v70) = v68 && v67 != 0; v65 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); v47 = (char)v70; v64 = v65; } else { v64 = *v63; } v67 = v64 == -1 ? 0 : v67; v48 = v64 != -1 ? 0 : v47; } else { v48 = v68; } if ( v48 == v46 ) { LABEL_58: v70 = (_DWORD *)v42; goto LABEL_59; } v49 = *(_WORD *)(v73 + 2 * v41); if ( v42 ) { v50 = *(__int16 **)(v42 + 8); if ( (unsigned int)v50 >= *(_DWORD *)(v42 + 12) ) v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); else v51 = *v50; v42 &= (v51 == -1) - 1; if ( v49 != v51 ) goto LABEL_58; } else if ( v49 != -1 ) { goto LABEL_58; } v43 = *(_DWORD *)(v42 + 8); if ( v43 >= *(_DWORD *)(v42 + 12) ) break; ++v41; *(_DWORD *)(v42 + 8) = v43 + 2; if ( v41 >= v72 ) goto LABEL_83; } ++v41; (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 40))(v42); } while ( v41 < v72 ); LABEL_83: v70 = (_DWORD *)v42; } if ( v72 == v41 ) { LOWORD(v72) = -1; *a5 = v71; goto LABEL_7; } LABEL_59: LOWORD(v72) = -1; } LABEL_6: *a9 |= 4u; LABEL_7: LOWORD(v66) = v72; return v70; } //----- (0047BFF0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_monthname( _DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7) { _DWORD *v7; // eax int v8; // ecx int v9; // ecx __int16 v10; // dx _DWORD *v11; // ecx _DWORD *v12; // ebp char v13; // bl char v14; // si char v15; // cl __int16 *v17; // eax __int16 v18; // ax __int16 *v19; // eax __int16 v20; // ax _DWORD *v21; // [esp+40h] [ebp-9Ch] int v22; // [esp+58h] [ebp-84h] BYREF int v23; // [esp+5Ch] [ebp-80h] BYREF int v24[31]; // [esp+60h] [ebp-7Ch] BYREF v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); v24[0] = v7[37]; v24[1] = v7[38]; v24[2] = v7[39]; v24[3] = v7[40]; v24[4] = v7[41]; v24[5] = v7[42]; v24[6] = v7[43]; v24[7] = v7[44]; v24[8] = v7[45]; v24[9] = v7[46]; v24[10] = v7[47]; v24[11] = v7[48]; v24[12] = v7[25]; v24[13] = v7[26]; v24[14] = v7[27]; v24[15] = v7[28]; v8 = v7[29]; v23 = 0; v24[16] = v8; v24[17] = v7[30]; v24[18] = v7[31]; v24[19] = v7[32]; v24[20] = v7[33]; v24[21] = v7[34]; v9 = v7[35]; v24[23] = v7[36]; v24[22] = v9; v11 = std::time_get>::_M_extract_wday_or_month( a1, a2, a3, a4, &v22, (int)v24, 0xCu, a5, &v23); v12 = v11; if ( v23 ) *a6 |= 4u; else *(_DWORD *)(a7 + 16) = v22; v13 = v10 == -1; v14 = v13 & (v11 != 0); if ( v14 ) { v19 = (__int16 *)v11[2]; if ( (unsigned int)v19 >= v11[3] ) { v21 = v11; v20 = (*(int (**)(void))(*v11 + 36))(); v11 = v21; } else { v20 = *v19; } v13 = v20 != -1 ? 0 : v14; v12 = v20 == -1 ? 0 : v11; } v15 = a4 == -1; if ( a3 && a4 == -1 ) { v17 = (__int16 *)a3[2]; if ( (unsigned int)v17 >= a3[3] ) v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v18 = *v17; v15 = v18 == -1; } if ( v13 == v15 ) *a6 |= 2u; return v12; } // 47C1BA: variable 'v10' is possibly undefined //----- (0047C290) -------------------------------------------------------- __int64 __stdcall std::time_get>::_M_extract_via_format( __int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, wchar_t *a7) { wchar_t *v7; // ebx _DWORD *v8; // eax size_t v9; // ebx void *v10; // esi size_t v11; // eax __int16 v12; // dx _DWORD *v13; // ecx char v14; // dl char v15; // di char v16; // al char v17; // di int v18; // ecx size_t v19; // edi size_t v20; // ebp char v21; // al int v22; // eax __int16 v23; // ax wchar_t v24; // bx __int16 *v25; // eax __int16 v26; // cx _WORD *v28; // eax __int16 v29; // ax unsigned int v30; // eax __int16 *v31; // eax int v32; // edx _DWORD *v33; // eax _DWORD *v34; // eax unsigned __int16 v35; // ax __int16 v36; // dx bool v37; // al __int16 v38; // di __int16 v39; // di __int16 v40; // dx _DWORD *v41; // eax _DWORD *v42; // eax unsigned __int16 v43; // ax unsigned int v44; // eax __int16 v45; // dx unsigned __int16 v46; // ax unsigned int v47; // eax unsigned __int16 v48; // ax __int16 v49; // ax __int16 v50; // dx wchar_t *String; // [esp+20h] [ebp-15Ch] size_t v52; // [esp+5Ch] [ebp-120h] wchar_t *v53; // [esp+60h] [ebp-11Ch] char v54; // [esp+60h] [ebp-11Ch] _DWORD *v55; // [esp+6Ch] [ebp-110h] int v56; // [esp+128h] [ebp-54h] BYREF int v57; // [esp+12Ch] [ebp-50h] BYREF wchar_t v58[2]; // [esp+130h] [ebp-4Ch] BYREF int v59; // [esp+134h] [ebp-48h] int v60; // [esp+138h] [ebp-44h] int v61; // [esp+13Ch] [ebp-40h] int v62; // [esp+140h] [ebp-3Ch] int v63; // [esp+144h] [ebp-38h] int v64; // [esp+148h] [ebp-34h] int v65; // [esp+14Ch] [ebp-30h] int v66; // [esp+150h] [ebp-2Ch] int v67; // [esp+154h] [ebp-28h] int v68; // [esp+158h] [ebp-24h] int v69; // [esp+15Ch] [ebp-20h] v7 = (wchar_t *)(a4 + 108); v8 = std::use_facet>(a4 + 108); String = v7; v9 = 0; v55 = v8; v10 = std::use_facet>((int)String); v11 = wcslen(a7); v12 = WORD2(a1); v56 = 0; v52 = v11; v13 = (_DWORD *)a1; while ( 1 ) { v14 = v12 == -1; v15 = v14 & (v13 != 0); if ( v15 ) { v28 = (_WORD *)v13[2]; v29 = (unsigned int)v28 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v28; v14 = 0; if ( v29 == -1 ) { LODWORD(a1) = 0; v14 = v15; } } v16 = (_WORD)a3 == 0xFFFF; v17 = v16 & (a2 != 0); if ( v17 ) { v25 = (__int16 *)a2[2]; if ( (unsigned int)v25 >= a2[3] ) { v54 = v14; v49 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v14 = v54; v26 = v49; } else { v26 = *v25; } v16 = 0; if ( v26 == -1 ) break; } v18 = v56; if ( v14 == v16 ) goto LABEL_20; LABEL_5: if ( v9 >= v52 ) goto LABEL_20; if ( v18 ) goto LABEL_22; v19 = v9; v20 = v9 + 1; v53 = &a7[v9]; if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, *v53, 0) == 37 ) { v21 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v19 + 1], 0); v57 = 0; if ( v21 != 69 && v21 != 79 ) { LOBYTE(v22) = v21 - 65; LABEL_11: switch ( (char)v22 ) { case 0: v41 = (_DWORD *)v55[2]; *(_DWORD *)v58 = v41[11]; v59 = v41[12]; v60 = v41[13]; v61 = v41[14]; v62 = v41[15]; v63 = v41[16]; v64 = v41[17]; v13 = std::time_get>::_M_extract_name( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v57, (int)v58, 7, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) goto LABEL_54; goto LABEL_32; case 1: v42 = (_DWORD *)v55[2]; *(_DWORD *)v58 = v42[25]; v59 = v42[26]; v60 = v42[27]; v61 = v42[28]; v62 = v42[29]; v63 = v42[30]; v64 = v42[31]; v65 = v42[32]; v66 = v42[33]; v67 = v42[34]; v68 = v42[35]; v69 = v42[36]; v13 = std::time_get>::_M_extract_name( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v57, (int)v58, 12, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) goto LABEL_45; goto LABEL_32; case 2: case 24: case 56: v13 = std::time_get>::_M_extract_num( (_DWORD *)a1, SWORD2(a1), a2, (__int16)a3, &v57, 0, 9999, 4u, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) { v32 = v57 - 1900; if ( v57 < 0 ) v32 = v57 + 100; v13 = (_DWORD *)a1; a6[5] = v32; v12 = WORD2(a1); } goto LABEL_32; case 3: (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( v10, "%m/%d/%y", "%H:%M", v58); v13 = (_DWORD *)std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, (int)a3, a4, (int)&v56, (int)a6, v58); LODWORD(a1) = v13; WORD2(a1) = v12; goto LABEL_32; case 7: v13 = std::time_get>::_M_extract_num( (_DWORD *)a1, SWORD2(a1), a2, (__int16)a3, &v57, 0, 23, 2u, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) goto LABEL_47; goto LABEL_32; case 8: v13 = std::time_get>::_M_extract_num( (_DWORD *)a1, SWORD2(a1), a2, (__int16)a3, &v57, 1, 12, 2u, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) LABEL_47: a6[2] = v57; goto LABEL_32; case 12: v13 = std::time_get>::_M_extract_num( (_DWORD *)a1, SWORD2(a1), a2, (__int16)a3, &v57, 0, 59, 2u, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) a6[1] = v57; goto LABEL_32; case 17: (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( v10, "%H:%M", "%H:%M:%S", v58); v13 = (_DWORD *)std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, (int)a3, a4, (int)&v56, (int)a6, v58); LODWORD(a1) = v13; WORD2(a1) = v12; goto LABEL_32; case 18: v13 = std::time_get>::_M_extract_num( (_DWORD *)a1, SWORD2(a1), a2, (__int16)a3, &v57, 0, 61, 2u, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) *a6 = v57; goto LABEL_32; case 19: (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v10 + 44))( v10, "%H:%M:%S", &unk_4ED73A, v58); v13 = (_DWORD *)std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, (int)a3, a4, (int)&v56, (int)a6, v58); LODWORD(a1) = v13; WORD2(a1) = v12; goto LABEL_32; case 23: v13 = (_DWORD *)std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, (int)a3, a4, (int)&v56, (int)a6, *(wchar_t **)(v55[2] + 16)); LODWORD(a1) = v13; WORD2(a1) = v12; goto LABEL_32; case 25: v35 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 1, v35) ) goto LABEL_29; LODWORD(a1) = std::time_get>::_M_extract_name( (_DWORD *)a1, SHIDWORD(a1), a2, a3, v58, (int)std::__timepunct_cache::_S_timezones, 14, a4, &v56); WORD2(a1) = v36; v37 = std::istreambuf_iterator::equal(&a1, (int)&a2); v12 = WORD2(a1); if ( v37 || *(_DWORD *)v58 | v56 ) goto LABEL_31; v38 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); if ( v38 != (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 45) ) { v39 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); if ( v39 != (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 43) ) goto LABEL_30; } LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, SWORD2(a1), a2, (__int16)a3, (int *)v58, 0, 23, 2u, a4, &v56); WORD2(a1) = v40; LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, v40, a2, (__int16)a3, (int *)v58, 0, 59, 2u, a4, &v56); WORD2(a1) = v12; goto LABEL_31; case 32: v34 = (_DWORD *)v55[2]; *(_DWORD *)v58 = v34[18]; v59 = v34[19]; v60 = v34[20]; v61 = v34[21]; v62 = v34[22]; v63 = v34[23]; v64 = v34[24]; v13 = std::time_get>::_M_extract_name( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v57, (int)v58, 7, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) LABEL_54: a6[6] = v57; goto LABEL_32; case 33: case 39: v33 = (_DWORD *)v55[2]; *(_DWORD *)v58 = v33[37]; v59 = v33[38]; v60 = v33[39]; v61 = v33[40]; v62 = v33[41]; v63 = v33[42]; v64 = v33[43]; v65 = v33[44]; v66 = v33[45]; v67 = v33[46]; v68 = v33[47]; v69 = v33[48]; v13 = std::time_get>::_M_extract_name( (_DWORD *)a1, SHIDWORD(a1), a2, a3, &v57, (int)v58, 12, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) LABEL_45: a6[4] = v57; goto LABEL_32; case 34: v13 = (_DWORD *)std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, (int)a3, a4, (int)&v56, (int)a6, *(wchar_t **)(v55[2] + 24)); LODWORD(a1) = v13; WORD2(a1) = v12; goto LABEL_32; case 35: v13 = std::time_get>::_M_extract_num( (_DWORD *)a1, SWORD2(a1), a2, (__int16)a3, &v57, 1, 31, 2u, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) goto LABEL_57; goto LABEL_32; case 36: v43 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v43) ) { v44 = *(_DWORD *)(a1 + 8); if ( v44 >= *(_DWORD *)(a1 + 12) ) std::wstreambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v44 + 2; WORD2(a1) = -1; LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, -1, a2, (__int16)a3, &v57, 1, 9, 1u, a4, &v56); WORD2(a1) = v45; } else { LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, SWORD2(a1), a2, (__int16)a3, &v57, 10, 31, 2u, a4, &v56); WORD2(a1) = v50; } v12 = WORD2(a1); v13 = (_DWORD *)a1; if ( !v56 ) LABEL_57: a6[3] = v57; goto LABEL_32; case 44: v13 = std::time_get>::_M_extract_num( (_DWORD *)a1, SWORD2(a1), a2, (__int16)a3, &v57, 1, 12, 2u, a4, &v56); LODWORD(a1) = v13; WORD2(a1) = v12; if ( !v56 ) a6[4] = v57 - 1; goto LABEL_32; case 45: v46 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v46, 0) != 10 ) goto LABEL_29; goto LABEL_82; case 51: v48 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v48, 0) != 9 ) goto LABEL_29; LABEL_82: v13 = (_DWORD *)a1; v47 = *(_DWORD *)(a1 + 8); if ( v47 >= *(_DWORD *)(a1 + 12) ) { std::wstreambuf::sbumpc(a1); v13 = (_DWORD *)a1; } else { *(_DWORD *)(a1 + 8) = v47 + 2; } v12 = -1; WORD2(a1) = -1; goto LABEL_32; case 55: v13 = (_DWORD *)std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, (int)a3, a4, (int)&v56, (int)a6, *(wchar_t **)(v55[2] + 8)); LODWORD(a1) = v13; WORD2(a1) = v12; goto LABEL_32; default: goto LABEL_29; } } v20 = v9 + 2; v22 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v19 + 2], 0) - 65; if ( (unsigned __int8)v22 <= 0x38u ) goto LABEL_11; LABEL_29: v56 |= 4u; LABEL_30: v12 = WORD2(a1); LABEL_31: v13 = (_DWORD *)a1; LABEL_32: v9 = v20 + 1; } else { v23 = WORD2(a1); v13 = (_DWORD *)a1; v24 = *v53; if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v31 = *(__int16 **)(a1 + 8); if ( (unsigned int)v31 >= *(_DWORD *)(a1 + 12) ) v23 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); else v23 = *v31; if ( v23 == -1 ) { LODWORD(a1) = 0; v13 = 0; } else { v13 = (_DWORD *)a1; } } if ( v24 == v23 ) { v30 = v13[2]; if ( v30 >= v13[3] ) { std::wstreambuf::sbumpc((int)v13); v13 = (_DWORD *)a1; } else { v13[2] = v30 + 2; } v9 = v20; v12 = -1; WORD2(a1) = -1; } else { v56 |= 4u; v12 = WORD2(a1); v9 = v20; } } } v18 = v56; a2 = 0; if ( v14 != v17 ) goto LABEL_5; LABEL_20: if ( v18 || v9 != v52 ) LABEL_22: *a5 |= 4u; return a1; } // 47C2ED: variable 'v12' is possibly undefined // 47CF84: variable 'v36' is possibly undefined // 47D0AE: variable 'v40' is possibly undefined // 47D4F8: variable 'v45' is possibly undefined // 47D800: variable 'v50' is possibly undefined // 4E9520: using guessed type wchar_t *std::__timepunct_cache::_S_timezones[11]; //----- (0047D830) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( _DWORD *a1, int a2, _DWORD *a3, __int16 a4, _DWORD *a5, int a6, unsigned int a7, int a8, _DWORD *a9) { void *v9; // edi int v10; // eax void *v11; // esp void *v12; // esp char v13; // dl char v14; // bl char v15; // bl int *v16; // edi unsigned int v17; // esi char v18; // dl char v19; // dl unsigned __int8 v20; // bl unsigned int v21; // edx unsigned int *v22; // ecx int v23; // ebx unsigned int v24; // eax __int16 *v25; // eax __int16 v26; // cx __int16 *v28; // eax __int16 v29; // cx __int16 *v30; // eax int v31; // eax int v32; // edx int v33; // ebx __int16 v34; // ax int v35; // ecx unsigned int v36; // eax int v37; // eax void *v38; // esp void *v39; // esp int v40; // esi int v41; // ebx __int16 *v42; // eax __int16 v43; // cx _WORD *v44; // eax __int16 v45; // ax __int16 v46; // ax __int16 v47; // ax _WORD *v48; // eax int v49; // eax __int16 v50; // ax int v51; // [esp+10h] [ebp-48h] BYREF int v52; // [esp+14h] [ebp-44h] _DWORD *v53; // [esp+18h] [ebp-40h] char v54; // [esp+1Fh] [ebp-39h] _DWORD *v55; // [esp+20h] [ebp-38h] unsigned int v56; // [esp+24h] [ebp-34h] __int16 v57; // [esp+28h] [ebp-30h] __int16 v58; // [esp+2Ah] [ebp-2Eh] int v59; // [esp+2Ch] [ebp-2Ch] int *v60; // [esp+30h] [ebp-28h] int *v61; // [esp+34h] [ebp-24h] unsigned int v62; // [esp+38h] [ebp-20h] unsigned int v63; // [esp+3Ch] [ebp-1Ch] v52 = a2; v57 = a2; v55 = a1; v53 = a3; v9 = std::use_facet>(a8 + 108); v10 = 16 * ((8 * a7 + 27) >> 4); v11 = alloca(v10); v12 = alloca(v10); v61 = &v51; v13 = (_WORD)a2 == 0xFFFF; LOBYTE(v62) = v13 & (a1 != 0); if ( (_BYTE)v62 ) { v44 = (_WORD *)v55[2]; v45 = (unsigned int)v44 >= v55[3] ? (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55) : *v44; v13 = 0; if ( v45 == -1 ) { v13 = v62; v55 = 0; LOBYTE(v62) = 0; } } v54 = a4 == -1; v14 = v54 & (a3 != 0); if ( v14 ) { v42 = (__int16 *)a3[2]; if ( (unsigned int)v42 >= a3[3] ) { v49 = *a3; LOBYTE(v63) = v13; v50 = (*(int (__fastcall **)(_DWORD *))(v49 + 36))(a3); v13 = v63; v43 = v50; } else { v43 = *v42; } v53 = v43 == -1 ? 0 : a3; v15 = v43 != -1 ? 0 : v14; } else { v15 = v54; } if ( v15 == v13 ) { v62 = 0; v16 = 0; v17 = 0; goto LABEL_6; } LOWORD(v63) = v57; if ( (_BYTE)v62 ) { v48 = (_WORD *)v55[2]; if ( (unsigned int)v48 >= v55[3] ) LOWORD(v63) = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); else LOWORD(v63) = *v48; v55 = (_WORD)v63 == 0xFFFF ? 0 : v55; } v62 = 2 * a7; if ( 2 * a7 ) { v32 = a6; v33 = 0; v17 = 0; while ( 1 ) { v35 = **(unsigned __int16 **)(v32 + 4 * v33); if ( (_WORD)v35 == (_WORD)v63 || (a6 = v32, v34 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v35), v32 = a6, v34 == (_WORD)v63) ) { v61[v17++] = v33; if ( ++v33 == v62 ) { LABEL_52: if ( v17 ) { v36 = v55[2]; if ( v36 >= v55[3] ) std::wstreambuf::sbumpc((int)v55); else v55[2] = v36 + 2; v37 = 16 * ((4 * v17 + 27) >> 4); v38 = alloca(v37); v39 = alloca(v37); v63 = v17; v62 = (unsigned int)&v51; v60 = &v51; v40 = 0; v41 = (int)v61; do { *(_DWORD *)(v62 + 4 * v40) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v41 + 4 * v40))); ++v40; } while ( v63 != v40 ); v17 = v63; v16 = v60; v62 = 1; v57 = -1; } else { v62 = 0; v16 = 0; } goto LABEL_6; } } else if ( ++v33 == v62 ) { goto LABEL_52; } } } v17 = 0; v16 = 0; LABEL_6: while ( 2 ) { LOBYTE(v63) = v57 == -1; v18 = v63 & (v55 != 0); if ( v18 ) { v28 = (__int16 *)v55[2]; if ( (unsigned int)v28 >= v55[3] ) { LOBYTE(v60) = v63 & (v55 != 0); v46 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); v18 = (char)v60; v29 = v46; } else { v29 = *v28; } v55 = v29 == -1 ? 0 : v55; v19 = v29 != -1 ? 0 : v18; } else { v19 = v63; } v20 = v54 & (v53 != 0); if ( v20 ) { v25 = (__int16 *)v53[2]; if ( (unsigned int)v25 >= v53[3] ) { LOBYTE(v60) = v19; v47 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); v19 = (char)v60; v26 = v47; } else { v26 = *v25; } v53 = v26 == -1 ? 0 : v53; if ( v19 == ((unsigned __int8)((v26 != -1) - 1) & v20) ) break; } else if ( v19 == v54 ) { break; } if ( v55 && (_BYTE)v63 ) { v30 = (__int16 *)v55[2]; if ( (unsigned int)v30 >= v55[3] ) v58 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); else v58 = *v30; v55 = v58 == -1 ? 0 : v55; } else { v58 = v57; } if ( !v17 ) { LABEL_30: *a9 |= 4u; goto LABEL_31; } v63 = (unsigned int)v16; v21 = 0; v59 = 0; v56 = 2 * v62; do { while ( 1 ) { v22 = (unsigned int *)(v63 + 4 * v21); if ( *v22 > v62 ) break; ++v59; ++v21; LABEL_16: if ( v21 >= v17 ) goto LABEL_20; } v23 = v61[v21]; v60 = &v61[v21]; if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v23) + v56) == v58 ) { ++v21; goto LABEL_16; } *v60 = v61[--v17]; *v22 = *(_DWORD *)(v63 + 4 * v17); } while ( v21 < v17 ); LABEL_20: v16 = (int *)v63; if ( v59 != v17 ) { v24 = v55[2]; if ( v24 >= v55[3] ) (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); else v55[2] = v24 + 2; ++v62; v57 = -1; continue; } break; } if ( v17 != 1 ) { if ( v17 == 2 && (*v16 == v62 || v16[1] == v62) ) goto LABEL_42; goto LABEL_30; } if ( *v16 != v62 ) goto LABEL_30; LABEL_42: v31 = *v61; if ( *v61 >= a7 ) v31 -= a7; *a5 = v31; LABEL_31: LOWORD(v52) = v57; return v55; } //----- (0047DD10) -------------------------------------------------------- int __thiscall std::time_get>::get( void *this, int a2, int a3, _DWORD *a4, int a5, _DWORD *a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10) { int v10; // ebx unsigned __int16 *v11; // edi void *v13; // esi int v14; // eax int v15; // edx int v16; // edx unsigned int v17; // eax bool v18; // dl char v19; // dl char v20; // al __int16 v21; // bx void *v22; // eax int v23; // edx _DWORD *v24; // ebx __int64 v25; // rax char v26; // di unsigned __int16 *v28; // edi unsigned __int8 v29; // dl unsigned __int16 v30; // ax unsigned int v31; // eax char v32; // di unsigned __int16 *v33; // eax int v34; // eax __int16 *v35; // eax __int16 v36; // ax unsigned __int16 *v37; // eax unsigned __int16 *v38; // eax int v39; // eax __int16 *v40; // eax __int16 v41; // ax void *v42; // eax unsigned __int16 *v43; // eax _WORD *v44; // eax __int64 v45; // [esp+30h] [ebp-8Ch] int v46; // [esp+30h] [ebp-8Ch] __int16 v47; // [esp+5Ah] [ebp-62h] unsigned __int16 v48; // [esp+5Eh] [ebp-5Eh] bool v50; // [esp+64h] [ebp-58h] unsigned __int16 *v51; // [esp+64h] [ebp-58h] unsigned __int8 v52; // [esp+64h] [ebp-58h] unsigned __int8 v53; // [esp+6Fh] [ebp-4Dh] unsigned __int8 v54; // [esp+71h] [ebp-4Bh] char v55; // [esp+78h] [ebp-44h] char v56; // [esp+78h] [ebp-44h] __int16 v57; // [esp+7Eh] [ebp-3Eh] wchar_t v59; // [esp+98h] [ebp-24h] BYREF __int16 v60; // [esp+9Ah] [ebp-22h] __int16 v61; // [esp+9Ch] [ebp-20h] __int16 v62; // [esp+9Eh] [ebp-1Eh] unsigned __int16 *v63; // [esp+DCh] [ebp+20h] v10 = a5; v11 = a9; v48 = a3; v13 = std::use_facet>((int)(a6 + 27)); *a7 = 0; if ( a9 != a10 ) { v54 = (_WORD)a5 == 0xFFFF; while ( 1 ) { v50 = v48 == 0xFFFF; v18 = v50 && a2 != 0; if ( v18 ) { v40 = *(__int16 **)(a2 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(a2 + 12) ) { v41 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); v18 = v50 && a2 != 0; } else { v41 = *v40; } a2 = v41 == -1 ? 0 : a2; v19 = v41 == -1 && v18; } else { v19 = v48 == 0xFFFF; } LOBYTE(v10) = v54 & (a4 != 0); if ( (_BYTE)v10 ) { v38 = (unsigned __int16 *)a4[2]; if ( (unsigned int)v38 >= a4[3] ) { v55 = v19; v39 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v19 = v55; } else { v39 = *v38; } a4 = (_WORD)v39 == 0xFFFF ? 0 : a4; LOBYTE(v39) = (_WORD)v39 != 0xFFFF; v10 &= v39 - 1; if ( v19 == (_BYTE)v10 ) { LABEL_63: *a7 = 6; return a2; } } else { v10 = v54; if ( v19 == v54 ) goto LABEL_63; } if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v13 + 48))(v13, *v11, 0) == 37 ) { v51 = v11 + 1; if ( a10 == v11 + 1 ) goto LABEL_90; v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v13 + 48))(v13, v11[1], 0); v21 = v20; if ( v20 == 69 || v20 == 79 ) { v51 = v11 + 2; if ( a10 == v11 + 2 ) goto LABEL_90; (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v13 + 48))(v13, v11[2]); LOWORD(v51) = v47; v54 = v53; HIWORD(v11) = a5; v42 = std::use_facet>((int)this); *a6 = 0; v59 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v42 + 40))(v42, 37, v46); HIWORD(v23) = v57; if ( (_BYTE)v21 ) { v60 = v21; v61 = (char)v47; v62 = 0; LABEL_27: LOWORD(v11) = a5; LODWORD(v45) = a2; LOWORD(v23) = v48; HIDWORD(v45) = v23; v25 = std::time_get>::_M_extract_via_format( v45, a4, (int *)v11, (int)a6, a7, a8, &v59); v24 = (_DWORD *)v25; a2 = v25; v48 = WORD2(v25); BYTE4(v25) = WORD2(v25) == 0xFFFF; v26 = BYTE4(v25) & ((_DWORD)v25 != 0); if ( v26 ) { LODWORD(v25) = *(_DWORD *)(v25 + 8); if ( (unsigned int)v25 >= v24[3] ) LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); else LOWORD(v25) = *(_WORD *)v25; BYTE4(v25) = (_WORD)v25 != 0xFFFF ? 0 : v26; a2 = (_WORD)v25 == 0xFFFF ? 0 : (unsigned int)v24; } v10 = (int)a4; if ( a4 && v54 ) { LODWORD(v25) = a4[2]; if ( (unsigned int)v25 >= a4[3] ) { v56 = BYTE4(v25); LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); BYTE4(v25) = v56; } else { LOWORD(v25) = *(_WORD *)v25; } LOBYTE(v25) = (_WORD)v25 == 0xFFFF; } else { LOBYTE(v25) = v54; } if ( BYTE4(v25) == (_BYTE)v25 ) *a7 |= 2u; v11 = v51 + 1; if ( a10 == v51 + 1 ) return a2; goto LABEL_16; } v21 = (char)v47; } else { HIWORD(v11) = HIWORD(a5); v22 = std::use_facet>((int)(a6 + 27)); *a7 = 0; v59 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v22 + 40))(v22, 37); HIWORD(v23) = HIWORD(a3); } v60 = v21; v61 = 0; goto LABEL_27; } v14 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v13 + 8))(v13, 32, *v11); if ( (_BYTE)v14 ) break; if ( a2 && v48 == 0xFFFF ) { v43 = *(unsigned __int16 **)(a2 + 8); if ( (unsigned int)v43 >= *(_DWORD *)(a2 + 12) ) v15 = (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); else v15 = *v43; a2 = (_WORD)v15 == 0xFFFF ? 0 : a2; } else { v15 = v48; } v10 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v13 + 32))(v13, v15); if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v13 + 32))(v13, *v11) != (_WORD)v10 ) { if ( a2 && v48 == 0xFFFF ) { v44 = *(_WORD **)(a2 + 8); v16 = (unsigned int)v44 >= *(_DWORD *)(a2 + 12) ? (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2) : (unsigned __int16)*v44; a2 = (_WORD)v16 == 0xFFFF ? 0 : a2; } else { v16 = v48; } v10 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v13 + 24))(v13, v16); if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v13 + 24))(v13, *v11) != (_WORD)v10 ) { LABEL_90: *a7 = 4; return a2; } } v17 = *(_DWORD *)(a2 + 8); if ( v17 >= *(_DWORD *)(a2 + 12) ) (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); else *(_DWORD *)(a2 + 8) = v17 + 2; ++v11; v48 = -1; LABEL_15: if ( a10 == v11 ) return a2; LABEL_16: if ( *a7 ) return a2; } v28 = v11 + 1; if ( a10 != v28 ) { v10 = (int)a10; do { v14 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v13 + 8))(v13, 32, *v28); if ( !(_BYTE)v14 ) break; ++v28; } while ( a10 != v28 ); } v63 = v28; while ( 1 ) { LOBYTE(v14) = v48 == 0xFFFF; v32 = v14; LOBYTE(v10) = v14 & (a2 != 0); if ( (_BYTE)v10 ) { v33 = *(unsigned __int16 **)(a2 + 8); if ( (unsigned int)v33 >= *(_DWORD *)(a2 + 12) ) v34 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); else v34 = *v33; a2 = (_WORD)v34 == 0xFFFF ? 0 : a2; LOBYTE(v34) = (_WORD)v34 != 0xFFFF; v10 &= v34 - 1; v29 = v54 & (a4 != 0); if ( !v29 ) { LABEL_41: if ( v54 == (_BYTE)v10 ) goto LABEL_56; goto LABEL_42; } } else { v10 = v14; v29 = v54 & (a4 != 0); if ( !v29 ) goto LABEL_41; } v35 = (__int16 *)a4[2]; if ( (unsigned int)v35 >= a4[3] ) { v52 = v29; v36 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v29 = v52; } else { v36 = *v35; } a4 = v36 == -1 ? 0 : a4; if ( ((unsigned __int8)((v36 != -1) - 1) & v29) == (_BYTE)v10 ) goto LABEL_56; LABEL_42: if ( a2 && v32 ) { v37 = *(unsigned __int16 **)(a2 + 8); if ( (unsigned int)v37 >= *(_DWORD *)(a2 + 12) ) v30 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); else v30 = *v37; a2 = v30 == 0xFFFF ? 0 : a2; } else { v30 = v48; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v13 + 8))(v13, 32, v30) ) { LABEL_56: v11 = v63; goto LABEL_15; } v31 = *(_DWORD *)(a2 + 8); if ( v31 >= *(_DWORD *)(a2 + 12) ) { v14 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); } else { v14 = v31 + 2; *(_DWORD *)(a2 + 8) = v14; } v48 = -1; } } return a2; } // 47E296: variable 'v47' is possibly undefined // 47E2A4: variable 'v53' is possibly undefined // 47E2D5: variable 'v46' is possibly undefined // 47E2E2: variable 'v57' is possibly undefined //----- (0047E4A0) -------------------------------------------------------- int __stdcall std::time_get>::get( __int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8) { int *v8; // eax int v9; // edx unsigned int v10; // ecx char v11; // bl int v12; // edi __int64 v13; // rax __int16 *v15; // eax __int16 v16; // ax _DWORD *v17; // [esp+2Ch] [ebp-34h] char v18; // [esp+33h] [ebp-2Dh] wchar_t v19; // [esp+3Ch] [ebp-24h] BYREF __int16 v20; // [esp+3Eh] [ebp-22h] __int16 v21; // [esp+40h] [ebp-20h] __int16 v22; // [esp+42h] [ebp-1Eh] v8 = (int *)std::use_facet>(a4 + 108); v9 = *v8; *a5 = 0; v19 = (*(int (__thiscall **)(int *, int))(v9 + 40))(v8, 37); if ( a8 ) { v21 = a7; v20 = a8; v22 = 0; } else { v20 = a7; v21 = 0; } v13 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v19); v10 = v13; v11 = WORD2(v13) == 0xFFFF; v12 = v13; BYTE4(v13) = v11 & ((_DWORD)v13 != 0); if ( BYTE4(v13) ) { LODWORD(v13) = *(_DWORD *)(v13 + 8); if ( (unsigned int)v13 >= *(_DWORD *)(v10 + 12) ) { v18 = BYTE4(v13); v17 = (_DWORD *)v10; LOWORD(v13) = (*(int (**)(void))(*(_DWORD *)v10 + 36))(); BYTE4(v13) = v18; v10 = (unsigned int)v17; } else { LOWORD(v13) = *(_WORD *)v13; } v11 = (_WORD)v13 != 0xFFFF ? 0 : BYTE4(v13); LODWORD(v13) = ((_WORD)v13 == 0xFFFF) - 1; v12 = v13 & v10; } LOBYTE(v13) = (_WORD)a3 == 0xFFFF; HIDWORD(v13) = v13; if ( a2 && (_WORD)a3 == 0xFFFF ) { v15 = (__int16 *)a2[2]; if ( (unsigned int)v15 >= a2[3] ) v16 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*a2 + 36))(a2, HIDWORD(v13)); else v16 = *v15; BYTE4(v13) = v16 == -1; } if ( v11 == BYTE4(v13) ) *a5 |= 2u; return v12; } //----- (0047E630) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get( __int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8) { void *v8; // eax __int64 v9; // rax _DWORD *v10; // ecx _DWORD *v11; // ebp __int16 v12; // bx char v13; // di char v14; // cl __int16 *v16; // eax __int16 v17; // ax __int16 *v18; // eax __int16 v19; // ax int v20; // [esp+34h] [ebp-3Ch] wchar_t v21; // [esp+4Ch] [ebp-24h] BYREF __int16 v22; // [esp+4Eh] [ebp-22h] __int16 v23; // [esp+50h] [ebp-20h] __int16 v24; // [esp+52h] [ebp-1Eh] v8 = std::use_facet>(a4 + 108); *a5 = 0; v21 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v8 + 40))(v8, 37); if ( a8 ) { v23 = a7; v22 = a8; v24 = 0; } else { v22 = a7; v23 = 0; } v9 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v21); v10 = (_DWORD *)v9; v11 = (_DWORD *)v9; v12 = WORD2(v9) == 0xFFFF; v13 = v12 & ((_DWORD)v9 != 0); if ( v13 ) { v18 = *(__int16 **)(v9 + 8); if ( (unsigned int)v18 >= v10[3] ) { v20 = (int)v10; v19 = (*(int (**)(void))(*v10 + 36))(); v10 = (_DWORD *)v20; } else { v19 = *v18; } LOBYTE(v12) = v19 != -1 ? 0 : v13; v11 = v19 == -1 ? 0 : v10; } v14 = (_WORD)a3 == 0xFFFF; if ( a2 && (_WORD)a3 == 0xFFFF ) { v16 = (__int16 *)a2[2]; if ( (unsigned int)v16 >= a2[3] ) v17 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v17 = *v16; v14 = v17 == -1; } if ( (_BYTE)v12 == v14 ) *a5 |= 2u; return v11; } //----- (0047E7F0) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (0047E800) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (0047E810) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (0047E820) -------------------------------------------------------- __int64 __thiscall std::time_put>::put( void *this, __int64 a2, int a3, char a4, int a5, unsigned __int8 *a6, unsigned __int8 *a7) { unsigned __int8 *v7; // ebx _BYTE *v8; // eax _BYTE *v9; // esi int v10; // edx _BYTE *v11; // eax int v12; // ebp unsigned __int8 *v13; // edi signed __int8 v14; // dl signed __int8 v15; // al int (__stdcall *v16)(unsigned __int8, int); // edx int v17; // ebp signed __int8 v18; // dl signed __int8 v19; // al int (__stdcall *v20)(unsigned __int8, int); // edx int v21; // ecx int v22; // ebp int v24; // ebx char v25; // al int (__stdcall *v26)(unsigned __int8, int); // edx char v27; // [esp+27h] [ebp-35h] __int64 v28; // [esp+28h] [ebp-34h] __int64 v30; // [esp+38h] [ebp-24h] v7 = a6; v27 = BYTE4(a2); v28 = a2; v8 = std::use_facet>(a3 + 108); if ( a6 != a7 ) { v9 = v8; while ( 1 ) { v12 = *v7; v13 = v7 + 1; v14 = v9[v12 + 285]; v15 = *v7; if ( !v14 ) { v16 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v9 + 32); if ( v16 != std::ctype::do_narrow ) v15 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v16)(v9, v15, 0); if ( !v15 ) goto LABEL_3; v9[v12 + 285] = v15; v14 = v15; } if ( v14 == 37 ) { if ( a7 == v13 ) break; v17 = v7[1]; v18 = v9[v17 + 285]; v19 = v7[1]; if ( !v18 ) { v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v9 + 32); if ( v20 != std::ctype::do_narrow ) v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v9, v19, 0); if ( !v19 ) { v21 = 0; v22 = 0; goto LABEL_22; } v9[v17 + 285] = v19; v18 = v19; } if ( v18 == 69 || v18 == 79 ) { v13 = v7 + 2; if ( a7 == v7 + 2 ) break; v24 = v7[2]; v22 = v18; v21 = (char)v9[v24 + 285]; v25 = v24; if ( !(_BYTE)v21 ) { v21 = (char)v24; v26 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v9 + 32); if ( v26 != std::ctype::do_narrow ) { v25 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v26)(v9, (char)v24, 0); v21 = v25; } if ( v25 ) v9[v24 + 285] = v25; } } else { v21 = v18; v22 = 0; } LABEL_22: BYTE4(v28) = v27; v7 = v13 + 1; v30 = ((__int64 (__thiscall *)(void *, _DWORD, _DWORD, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( this, v28, HIDWORD(v28), a3, a4, a5, v21, v22); LODWORD(v28) = v30; v27 = BYTE4(v30); if ( a7 == v13 + 1 ) break; } else { LABEL_3: if ( v27 ) { ++v7; } else { v10 = *v7; v11 = *(_BYTE **)(v28 + 20); if ( (unsigned int)v11 >= *(_DWORD *)(v28 + 24) ) { ++v7; v27 = (*(int (__thiscall **)(_DWORD, int))(*(_DWORD *)v28 + 52))(v28, v10) == -1; } else { *v11 = v10; ++v7; ++*(_DWORD *)(v28 + 20); } } if ( a7 == v7 ) break; } } } BYTE4(v28) = v27; return v28; } //----- (0047EAB0) -------------------------------------------------------- int __thiscall std::time_put>::put( void *this, int a2, int a3, int a4, char a5, int a6, char a7, char a8) { return (*(int (__thiscall **)(void *, int, int, int, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))( this, a2, a3, a4, a5, a6, a7, a8); } //----- (0047EAD0) -------------------------------------------------------- int __stdcall std::time_put>::do_put( int a1, char a2, int a3, int a4, struct tm *a5, char a6, char a7) { _BYTE *v7; // ebx const char **v8; // eax const char **v9; // edx char v10; // cl char *v11; // kr00_4 int (__stdcall *v13)(unsigned __int8); // eax const char **v14; // [esp+1Ch] [ebp-B0h] char Format; // [esp+2Ch] [ebp-A0h] BYREF char v16; // [esp+2Dh] [ebp-9Fh] char v17; // [esp+2Eh] [ebp-9Eh] char v18; // [esp+2Fh] [ebp-9Dh] char Buffer[156]; // [esp+30h] [ebp-9Ch] BYREF v7 = std::use_facet>(a3 + 108); v8 = (const char **)std::use_facet>(a3 + 108); v9 = v8; if ( v7[28] ) { v10 = v7[66]; } else { v14 = v8; std::ctype::_M_widen_init((int)v7); v9 = v14; v10 = 37; v13 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v7 + 24); if ( v13 != std::ctype::do_widen ) { v10 = ((int (__fastcall *)(_BYTE *, const char **, int))v13)(v7, v14, 37); v9 = v14; } } Format = v10; if ( a7 ) { v16 = a7; v18 = 0; v17 = a6; } else { v17 = 0; v16 = a6; } std::__timepunct::_M_put(v9, Buffer, 0x80u, &Format, a5); v11 = &Buffer[strlen(Buffer)]; if ( !a2 ) (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)a1 + 48))(a1, Buffer, v11 - Buffer); return a1; } // 47EAD0: using guessed type char var_9C[156]; //----- (0047EC50) -------------------------------------------------------- _DWORD *__thiscall std::time_put>::put( void *this, _DWORD *a2, int a3, int a4, unsigned __int16 a5, int a6, unsigned __int16 *a7, unsigned __int16 *a8) { int v8; // ebp unsigned __int16 *v9; // ebx void *v10; // eax void *v11; // esi unsigned __int16 v12; // ax unsigned __int16 *v13; // edx unsigned __int16 *v14; // edi char v15; // al int v16; // edx int v17; // eax int v18; // ecx int v19; // ebp __int64 v20; // rax int v21; // ecx char v23; // cl char v26; // [esp+46h] [ebp-26h] char v27; // [esp+47h] [ebp-25h] v8 = a3; v9 = a7; v26 = a3; v10 = std::use_facet>(a4 + 108); if ( a7 != a8 ) { v11 = v10; do { while ( 1 ) { v14 = v9 + 1; if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, *v9, 0) != 37 ) break; if ( a8 == v14 ) return a2; v15 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[1], 0); v16 = v15; if ( v15 == 69 || (v17 = 0, (_BYTE)v16 == 79) ) { v27 = v16; v14 = v9 + 2; if ( a8 == v9 + 2 ) return a2; v23 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[2], 0); v17 = v27; v16 = v23; } v18 = v8; LOBYTE(v18) = v26; v19 = v18; v20 = ((__int64 (__thiscall *)(void *, _DWORD *, int, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( this, a2, v18, a4, a5, a6, v16, v17); v21 = v19; v9 = v14 + 1; LOBYTE(v21) = BYTE4(v20); v8 = v21; a2 = (_DWORD *)v20; v26 = BYTE4(v20); if ( a8 == v14 + 1 ) return a2; } if ( v26 ) { ++v9; } else { v12 = *v9; v13 = (unsigned __int16 *)a2[5]; if ( (unsigned int)v13 >= a2[6] ) { v12 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, *v9); } else { *v13 = v12; a2[5] = v13 + 1; } ++v9; if ( v12 == 0xFFFF ) v26 = 1; } } while ( a8 != v9 ); } return a2; } //----- (0047EE20) -------------------------------------------------------- int __thiscall std::time_put>::put( void *this, int a2, int a3, int a4, unsigned __int16 a5, int a6, char a7, char a8) { return (*(int (__thiscall **)(void *, int, int, int, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))( this, a2, a3, a4, a5, a6, a7, a8); } //----- (0047EE40) -------------------------------------------------------- int __stdcall std::time_put>::do_put( int a1, char a2, int a3, int a4, struct tm *a5, char a6, char a7) { const char **v7; // ebx size_t v8; // ebx void *v10; // [esp+1Ch] [ebp-134h] wchar_t Format; // [esp+2Ch] [ebp-124h] BYREF __int16 v12; // [esp+2Eh] [ebp-122h] __int16 v13; // [esp+30h] [ebp-120h] __int16 v14; // [esp+32h] [ebp-11Eh] wchar_t Buffer[142]; // [esp+34h] [ebp-11Ch] BYREF v10 = std::use_facet>(a3 + 108); v7 = (const char **)std::use_facet>(a3 + 108); Format = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 37); if ( a7 ) { v13 = a6; v12 = a7; v14 = 0; } else { v12 = a6; v13 = 0; } std::__timepunct::_M_put(v7, Buffer, 0x80u, &Format, a5); v8 = wcslen(Buffer); if ( !a2 ) (*(int (__thiscall **)(int, wchar_t *, size_t))(*(_DWORD *)a1 + 48))(a1, Buffer, v8); return a1; } //----- (0047EF60) -------------------------------------------------------- const char *std::bad_alloc::what() { return "std::bad_alloc"; } //----- (0047EF70) -------------------------------------------------------- int __fastcall std::ios::exceptions(int a1) { return *(_DWORD *)(a1 + 16); } //----- (0047EF80) -------------------------------------------------------- int __fastcall std::ios::bad(int a1) { return *(_DWORD *)(a1 + 20) & 1; } //----- (0047EF90) -------------------------------------------------------- int __fastcall std::ios::eof(int a1) { return (*(_DWORD *)(a1 + 20) >> 1) & 1; } //----- (0047EFA0) -------------------------------------------------------- int __fastcall std::ios::tie(int a1) { return *(_DWORD *)(a1 + 112); } //----- (0047EFB0) -------------------------------------------------------- bool __fastcall std::ios::fail(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (0047EFC0) -------------------------------------------------------- int __fastcall std::ios::fill(int a1) { int result; // eax _BYTE *v3; // esi int (__stdcall *v4)(unsigned __int8); // edx if ( *(_BYTE *)(a1 + 117) ) return *(unsigned __int8 *)(a1 + 116); v3 = *(_BYTE **)(a1 + 124); if ( !v3 ) std::__throw_bad_cast(); if ( v3[28] ) { result = (unsigned __int8)v3[61]; } else { std::ctype::_M_widen_init(*(_DWORD *)(a1 + 124)); v4 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); result = 32; if ( v4 != std::ctype::do_widen ) result = ((int (__thiscall *)(_BYTE *, int))v4)(v3, 32); } *(_BYTE *)(a1 + 116) = result; *(_BYTE *)(a1 + 117) = 1; return result; } //----- (0047F030) -------------------------------------------------------- bool __fastcall std::ios::good(int a1) { return *(_DWORD *)(a1 + 20) == 0; } //----- (0047F040) -------------------------------------------------------- int __fastcall std::ios::rdbuf(int a1) { return *(_DWORD *)(a1 + 120); } //----- (0047F050) -------------------------------------------------------- int __thiscall std::ios::widen(int *this, int a2) { _BYTE *v2; // ebx int result; // eax int (__stdcall *v4)(unsigned __int8); // edx v2 = (_BYTE *)this[31]; if ( !v2 ) std::__throw_bad_cast(); if ( v2[28] ) return (unsigned __int8)v2[(unsigned __int8)a2 + 29]; std::ctype::_M_widen_init(this[31]); v4 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v2 + 24); result = a2; if ( v4 != std::ctype::do_widen ) return ((int (__thiscall *)(_BYTE *, _DWORD))v4)(v2, (char)a2); return result; } //----- (0047F0B0) -------------------------------------------------------- int __thiscall std::ios::narrow(_DWORD *this, int a2, int a3) { int v3; // ebx int result; // eax int v5; // ecx int (__stdcall *v6)(unsigned __int8, int); // ebp v3 = this[31]; if ( !v3 ) std::__throw_bad_cast(); result = *(unsigned __int8 *)(v3 + (unsigned __int8)a2 + 285); if ( !(_BYTE)result ) { v5 = a2; v6 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v3 + 32); if ( v6 != std::ctype::do_narrow ) v5 = ((int (__thiscall *)(int, _DWORD, _DWORD))v6)(v3, (char)a2, (char)a3); result = a3; if ( (_BYTE)a3 != (_BYTE)v5 ) { *(_BYTE *)(v3 + (unsigned __int8)a2 + 285) = v5; return v5; } } return result; } //----- (0047F120) -------------------------------------------------------- int __fastcall std::ios::rdstate(int a1) { return *(_DWORD *)(a1 + 20); } //----- (0047F130) -------------------------------------------------------- int __fastcall std::ios::operator void *(int a1) { return (*(_DWORD *)(a1 + 20) & 5) == 0 ? a1 : 0; } //----- (0047F140) -------------------------------------------------------- bool __fastcall std::ios::operator bool(int a1) { return (*(_BYTE *)(a1 + 20) & 5) == 0; } //----- (0047F150) -------------------------------------------------------- bool __fastcall std::ios::operator!(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (0047F160) -------------------------------------------------------- int __fastcall std::wios::exceptions(int a1) { return *(_DWORD *)(a1 + 16); } //----- (0047F170) -------------------------------------------------------- int __fastcall std::wios::bad(int a1) { return *(_DWORD *)(a1 + 20) & 1; } //----- (0047F180) -------------------------------------------------------- int __fastcall std::wios::eof(int a1) { return (*(_DWORD *)(a1 + 20) >> 1) & 1; } //----- (0047F190) -------------------------------------------------------- int __fastcall std::wios::tie(int a1) { return *(_DWORD *)(a1 + 112); } //----- (0047F1A0) -------------------------------------------------------- bool __fastcall std::wios::fail(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (0047F1B0) -------------------------------------------------------- int __fastcall std::wios::fill(int a1) { int result; // eax int v3; // ecx if ( *(_BYTE *)(a1 + 118) ) return *(unsigned __int16 *)(a1 + 116); v3 = *(_DWORD *)(a1 + 124); if ( !v3 ) std::__throw_bad_cast(); result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, 32); *(_BYTE *)(a1 + 118) = 1; *(_WORD *)(a1 + 116) = result; return result; } //----- (0047F1F0) -------------------------------------------------------- bool __fastcall std::wios::good(int a1) { return *(_DWORD *)(a1 + 20) == 0; } //----- (0047F200) -------------------------------------------------------- int __fastcall std::wios::rdbuf(int a1) { return *(_DWORD *)(a1 + 120); } //----- (0047F210) -------------------------------------------------------- int __thiscall std::wios::widen(_DWORD *this, char a2) { int v2; // ecx v2 = this[31]; if ( !v2 ) std::__throw_bad_cast(); return (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 40))(v2, a2); } //----- (0047F240) -------------------------------------------------------- int __thiscall std::wios::narrow(_DWORD *this, unsigned __int16 a2, char a3) { int v3; // ecx v3 = this[31]; if ( !v3 ) std::__throw_bad_cast(); return (*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v3 + 48))(v3, a2, a3); } //----- (0047F280) -------------------------------------------------------- int __fastcall std::wios::rdstate(int a1) { return *(_DWORD *)(a1 + 20); } //----- (0047F290) -------------------------------------------------------- int __fastcall std::wios::operator void *(int a1) { return (*(_DWORD *)(a1 + 20) & 5) == 0 ? a1 : 0; } //----- (0047F2A0) -------------------------------------------------------- bool __fastcall std::wios::operator bool(int a1) { return (*(_BYTE *)(a1 + 20) & 5) == 0; } //----- (0047F2B0) -------------------------------------------------------- bool __fastcall std::wios::operator!(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (0047F2C0) -------------------------------------------------------- const char *_ZGTtNKSt9exception4whatEv() { return "std::exception"; } //----- (0047F2D0) -------------------------------------------------------- int __stdcall std::money_get>::_M_extract( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int v6; // esi int *v7; // edi int v8; // ebx bool v9; // zf char v10; // si int v11; // edi int v12; // eax _DWORD *v13; // ecx char v14; // si char v15; // si _BYTE *v16; // eax int v17; // eax _DWORD *v18; // ecx int v19; // edi volatile signed __int32 *v20; // eax unsigned int v21; // eax char v22; // si char v23; // di char v24; // al char v25; // di int v26; // edi _BYTE *v27; // eax int v28; // edi char v29; // cl volatile signed __int32 *v30; // eax char v31; // di _DWORD *v32; // ecx int v33; // eax char v34; // si char v35; // di int v36; // eax _BYTE *v37; // eax int v38; // eax _DWORD *v39; // ecx char v40; // al int v41; // eax unsigned __int8 *v42; // eax char v43; // di int v44; // edx _BYTE *v45; // eax char v46; // al char v47; // bl char v48; // al char v49; // bl int v50; // ebx int v52; // edx int v53; // eax unsigned int v54; // eax int v55; // eax int v56; // eax std::string *v57; // eax int v58; // edx unsigned int first_not_of; // eax unsigned int v60; // edx unsigned int v61; // eax std::locale::_Impl *v62; // eax std::locale::_Impl *v63; // ebx volatile signed __int32 *v64; // eax unsigned int v65; // eax void (__cdecl *v66)(void *); // [esp+4h] [ebp-64h] std::string *v67; // [esp+4h] [ebp-64h] unsigned int v68; // [esp+8h] [ebp-60h] unsigned int v69; // [esp+Ch] [ebp-5Ch] char v70; // [esp+10h] [ebp-58h] char v71; // [esp+18h] [ebp-50h] unsigned int v72; // [esp+1Ch] [ebp-4Ch] _DWORD *v73; // [esp+20h] [ebp-48h] unsigned int v74; // [esp+24h] [ebp-44h] int v75; // [esp+2Ch] [ebp-3Ch] bool v76; // [esp+31h] [ebp-37h] char v77; // [esp+32h] [ebp-36h] char v78; // [esp+33h] [ebp-35h] char v79; // [esp+34h] [ebp-34h] int v80; // [esp+34h] [ebp-34h] char v81; // [esp+34h] [ebp-34h] unsigned int v82; // [esp+34h] [ebp-34h] char v83; // [esp+34h] [ebp-34h] char v84; // [esp+34h] [ebp-34h] unsigned int Buf; // [esp+38h] [ebp-30h] int v86; // [esp+3Ch] [ebp-2Ch] int v87; // [esp+3Ch] [ebp-2Ch] char v88; // [esp+43h] [ebp-25h] BYREF volatile signed __int32 *v89; // [esp+44h] [ebp-24h] BYREF volatile signed __int32 *v90; // [esp+48h] [ebp-20h] BYREF int v91; // [esp+4Ch] [ebp-1Ch] v86 = a4 + 108; v73 = std::use_facet>(a4 + 108); v6 = std::locale::id::_M_id(&std::moneypunct::id); v7 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * v6); v8 = *v7; if ( !*v7 ) { v62 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v66); *(_DWORD *)v62 = &off_4F66C4; v63 = v62; *((_DWORD *)v62 + 1) = 0; *((_DWORD *)v62 + 2) = 0; *((_DWORD *)v62 + 3) = 0; *((_WORD *)v62 + 8) = 0; *((_BYTE *)v62 + 18) = 0; *((_DWORD *)v62 + 5) = 0; *((_DWORD *)v62 + 6) = 0; *((_DWORD *)v62 + 7) = 0; *((_DWORD *)v62 + 8) = 0; *((_DWORD *)v62 + 9) = 0; *((_DWORD *)v62 + 10) = 0; *((_DWORD *)v62 + 11) = 0; *((_DWORD *)v62 + 12) = 0; *((_DWORD *)v62 + 13) = 0; *((_BYTE *)v62 + 67) = 0; std::__moneypunct_cache::_M_cache((int)v62, v86); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v63, (const std::locale::facet *)v6, v68); v8 = *v7; } if ( *(_DWORD *)(v8 + 32) ) v76 = *(_DWORD *)(v8 + 40) != 0; else v76 = 0; v9 = *(_BYTE *)(v8 + 16) == 0; v89 = (volatile signed __int32 *)&unk_4E93FC; if ( !v9 ) std::string::reserve((unsigned int **)&v89, (std::string *)0x20, (unsigned int)v66); v90 = (volatile signed __int32 *)&unk_4E93FC; std::string::reserve((unsigned int **)&v90, (std::string *)0x20, (unsigned int)v66); v78 = 0; v75 = 1; v91 = *(_DWORD *)(v8 + 52); v87 = 0; v71 = 0; v74 = 0; v77 = 0; while ( 2 ) { switch ( *((_BYTE *)&v90 + v75 + 3) ) { case 0: v10 = 1; goto LABEL_10; case 1: if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) && (*(_BYTE *)(v73[6] + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 0x20) != 0 ) { v54 = *(_DWORD *)(a1 + 8); if ( v54 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v54 + 1; HIDWORD(a1) = -1; v10 = 1; LABEL_10: if ( v75 == 4 ) goto LABEL_11; goto LABEL_75; } v10 = 0; if ( v75 != 4 ) { LABEL_75: v38 = HIDWORD(a1); v39 = (_DWORD *)a1; while ( 1 ) { v43 = v38 == -1; v84 = v43 & (v39 != 0); if ( v84 ) { v43 = 0; if ( v39[2] >= v39[3] && (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39) == -1 ) { LODWORD(a1) = 0; v43 = v84; } } v40 = a3 == -1; v83 = v40 & (a2 != 0); if ( v83 ) { v40 = 0; if ( a2[2] >= a2[3] ) { v52 = (*(int (**)(void))(*a2 + 36))(); v40 = 0; if ( v52 == -1 ) { a2 = 0; v40 = v83; } } } if ( v43 == v40 ) goto LABEL_112; LOBYTE(v41) = BYTE4(a1); v39 = (_DWORD *)a1; if ( a1 > 0xFFFFFFFF00000000LL ) { v42 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) { if ( (*(_BYTE *)(v73[6] + 2 * *v42) & 0x20) == 0 ) goto LABEL_112; LABEL_81: v39[2] = v42 + 1; goto LABEL_82; } v41 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v41 == -1 ) LODWORD(a1) = 0; } if ( (*(_BYTE *)(v73[6] + 2 * (unsigned __int8)v41) & 0x20) == 0 ) goto LABEL_112; v39 = (_DWORD *)a1; v42 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) goto LABEL_81; (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v39 = (_DWORD *)a1; LABEL_82: HIDWORD(a1) = -1; v38 = -1; } } LABEL_11: if ( ((unsigned __int8)v10 & (v74 > 1)) == 0 ) { if ( v10 ) { if ( *((_DWORD *)v90 - 3) > 1u ) goto LABEL_175; goto LABEL_152; } goto LABEL_99; } if ( v77 ) v11 = *(_DWORD *)(v8 + 36); else v11 = *(_DWORD *)(v8 + 28); v12 = HIDWORD(a1); v13 = (_DWORD *)a1; for ( Buf = 1; ; ++Buf ) { v14 = v12 == -1; v79 = v14 & (v13 != 0); if ( v79 ) { v14 = 0; if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) { LODWORD(a1) = 0; v14 = v79; } } if ( a2 && a3 == -1 ) { if ( a2[2] >= a2[3] ) { v53 = (*(int (**)(void))(*a2 + 36))(); v14 ^= v53 == -1; if ( v53 == -1 ) a2 = 0; } } else { v14 ^= a3 == -1; } if ( Buf >= v74 || !v14 ) break; v13 = (_DWORD *)a1; LOBYTE(v80) = BYTE4(a1); v15 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; if ( v15 ) { v16 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v16 < *(_DWORD *)(a1 + 12) ) { if ( *v16 != *(_BYTE *)(v11 + Buf) ) { v47 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; goto LABEL_101; } LABEL_24: v13[2] = v16 + 1; goto LABEL_25; } v80 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v80 == -1 ) { LODWORD(a1) = 0; v13 = 0; } else { v13 = (_DWORD *)a1; } } if ( *(_BYTE *)(v11 + Buf) != (_BYTE)v80 ) goto LABEL_100; v16 = (_BYTE *)v13[2]; if ( (unsigned int)v16 < v13[3] ) goto LABEL_24; (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); v13 = (_DWORD *)a1; LABEL_25: v12 = -1; HIDWORD(a1) = -1; } if ( Buf == v74 ) { if ( *((_DWORD *)v90 - 3) <= 1u ) goto LABEL_152; LABEL_175: first_not_of = std::string::find_first_not_of((int *)&v90, (std::string *)0x30, 0, v68); if ( first_not_of ) { v60 = *((_DWORD *)v90 - 3); if ( first_not_of == -1 ) first_not_of = v60 - 1; if ( first_not_of > v60 ) first_not_of = *((_DWORD *)v90 - 3); std::string::_M_mutate(&v90, 0, first_not_of, 0, v69); } LABEL_152: if ( v77 ) { v64 = v90; if ( *((int *)v90 - 1) >= 0 ) { std::string::_M_leak_hard(&v90); v64 = v90; } if ( *(_BYTE *)v64 != 48 ) { if ( *((int *)v64 - 1) >= 0 ) std::string::_M_leak_hard(&v90); std::string::_M_replace_aux(&v90, 0, 0, 1u, 45, v70); *((_DWORD *)v90 - 1) = -1; } } if ( *((_DWORD *)v89 - 3) ) { v57 = (std::string *)(char)v87; if ( v78 ) v57 = (std::string *)v71; std::string::push_back((unsigned int **)&v89, v57, (char)v67); if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)&v89) ) *a5 |= 4u; } if ( !v78 || *(_DWORD *)(v8 + 44) == v87 ) { std::string::swap(a6, (std::string *)&v90, v67); v13 = (_DWORD *)a1; v15 = HIDWORD(a1) == -1; v47 = v15 & ((_DWORD)a1 != 0); if ( v47 ) goto LABEL_161; goto LABEL_102; } } LABEL_99: v13 = (_DWORD *)a1; LABEL_100: v15 = HIDWORD(a1) == -1; v47 = v15 & (v13 != 0); LABEL_101: *a5 |= 4u; if ( v47 ) { LABEL_161: v15 = 0; if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) { LODWORD(a1) = 0; v15 = v47; } } LABEL_102: v48 = a3 == -1; v49 = v48 & (a2 != 0); if ( v49 ) { v48 = 0; if ( a2[2] >= a2[3] ) { v58 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v48 = 0; if ( v58 == -1 ) { a2 = 0; v48 = v49; } } } if ( v15 == v48 ) *a5 |= 2u; v50 = a1; if ( v90 != (volatile signed __int32 *)&unk_4E93FC ) std::string::_Rep::_M_dispose(v90 - 3, (int)&v88); if ( v89 != (volatile signed __int32 *)&unk_4E93FC ) std::string::_Rep::_M_dispose(v89 - 3, (int)&v88); return v50; case 2: if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) goto LABEL_62; v31 = v75 == 1 || v74 > 1; if ( v31 ) goto LABEL_62; if ( v75 == 2 ) { if ( !v76 && (_BYTE)v91 != 3 && BYTE2(v91) != 1 ) goto LABEL_115; } else { v10 = 1; if ( v75 != 3 ) goto LABEL_113; if ( HIBYTE(v91) != 4 && (HIBYTE(v91) != 3 || !v76) ) goto LABEL_115; } LABEL_62: v32 = (_DWORD *)a1; v82 = 0; v72 = *(_DWORD *)(v8 + 24); v33 = HIDWORD(a1); while ( 2 ) { v34 = v33 == -1; v35 = v34 & (v32 != 0); if ( v35 ) { v34 = 0; if ( v32[2] >= v32[3] && (*(int (__fastcall **)(_DWORD *))(*v32 + 36))(v32) == -1 ) { LODWORD(a1) = 0; v34 = v35; } } if ( a2 && a3 == -1 ) { if ( a2[2] >= a2[3] ) { v55 = (*(int (**)(void))(*a2 + 36))(); v34 ^= v55 == -1; if ( v55 == -1 ) a2 = 0; } } else { v34 ^= a3 == -1; } v31 = (v82 < v72) & v34; if ( v31 ) { LOBYTE(v36) = BYTE4(a1); v32 = (_DWORD *)a1; if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_69; v37 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v37 < *(_DWORD *)(a1 + 12) ) { if ( *v37 != *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) ) goto LABEL_146; goto LABEL_71; } v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v36 == -1 ) LODWORD(a1) = 0; LABEL_69: if ( *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) != (_BYTE)v36 ) goto LABEL_146; v32 = (_DWORD *)a1; v37 = *(_BYTE **)(a1 + 8); if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v37 ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v32 = (_DWORD *)a1; } else { LABEL_71: v32[2] = v37 + 1; } ++v82; v33 = -1; HIDWORD(a1) = -1; continue; } break; } if ( v82 == v72 ) { LABEL_171: v10 = 1; goto LABEL_113; } LABEL_146: if ( v82 ) goto LABEL_99; v56 = *(_DWORD *)(a4 + 12) & 0x200; v10 = v56 == 0; v31 = v56 != 0; LABEL_113: if ( v75 > 3 || v31 ) goto LABEL_11; LABEL_115: ++v75; continue; case 3: if ( *(_DWORD *)(v8 + 32) ) { v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !v31 && **(_BYTE **)(v8 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get( (_DWORD **)&a1, SHIDWORD(a1)) ) { v74 = *(_DWORD *)(v8 + 32); v61 = *(_DWORD *)(a1 + 8); if ( v61 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v61 + 1; HIDWORD(a1) = -1; v10 = 1; goto LABEL_113; } if ( !*(_DWORD *)(v8 + 40) ) { if ( !*(_DWORD *)(v8 + 32) ) goto LABEL_54; goto LABEL_131; } } else if ( !*(_DWORD *)(v8 + 40) ) { goto LABEL_54; } v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !v31 && **(_BYTE **)(v8 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get( (_DWORD **)&a1, SHIDWORD(a1)) ) { v74 = *(_DWORD *)(v8 + 40); v65 = *(_DWORD *)(a1 + 8); if ( v65 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v65 + 1; HIDWORD(a1) = -1; v10 = 1; v77 = 1; goto LABEL_113; } if ( !*(_DWORD *)(v8 + 32) || *(_DWORD *)(v8 + 40) ) { LABEL_54: v31 = v76; v10 = !v76; goto LABEL_113; } LABEL_131: v77 = 1; v31 = 0; v10 = 1; goto LABEL_113; case 4: v17 = HIDWORD(a1); v18 = (_DWORD *)a1; while ( 2 ) { v22 = v17 == -1; v23 = v22 & (v18 != 0); if ( v23 ) { v22 = 0; if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) { LODWORD(a1) = 0; v22 = v23; } } v24 = a3 == -1; v25 = v24 & (a2 != 0); if ( v25 ) { v24 = 0; if ( a2[2] >= a2[3] ) { v44 = (*(int (**)(void))(*a2 + 36))(); v24 = 0; if ( v44 == -1 ) { a2 = 0; v24 = v25; } } } if ( v24 == v22 ) goto LABEL_168; LOBYTE(v26) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v45 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) { v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v26 == -1 ) { LODWORD(a1) = 0; LOBYTE(v26) = -1; } } else { LOBYTE(v26) = *v45; } } v27 = memchr((const void *)(v8 + 57), (char)v26, 0xAu); if ( !v27 ) { v10 = v78 | (*(_BYTE *)(v8 + 17) != (unsigned __int8)v26); if ( v10 ) { if ( *(_BYTE *)(v8 + 16) ) { if ( *(_BYTE *)(v8 + 18) == (_BYTE)v26 ) { if ( v78 ) { v10 = v78; } else { if ( v87 ) { v28 = *((_DWORD *)v89 - 3); if ( (unsigned int)(v28 + 1) > *((_DWORD *)v89 - 2) || *((int *)v89 - 1) > 0 ) std::string::reserve((unsigned int **)&v89, (std::string *)(v28 + 1), (unsigned int)v67); v29 = v87; v87 = 0; *((_BYTE *)v89 + *((_DWORD *)v89 - 3)) = v29; v30 = v89; if ( v89 != (volatile signed __int32 *)&unk_4E93FC ) { *((_DWORD *)v89 - 1) = 0; *((_DWORD *)v30 - 3) = v28 + 1; *((_BYTE *)v30 + v28 + 1) = 0; v18 = (_DWORD *)a1; v21 = *(_DWORD *)(a1 + 8); if ( v21 >= *(_DWORD *)(a1 + 12) ) goto LABEL_51; goto LABEL_34; } LABEL_33: v18 = (_DWORD *)a1; v21 = *(_DWORD *)(a1 + 8); if ( v21 >= *(_DWORD *)(a1 + 12) ) { LABEL_51: (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); v18 = (_DWORD *)a1; goto LABEL_35; } LABEL_34: v18[2] = v21 + 1; LABEL_35: HIDWORD(a1) = -1; v17 = -1; continue; } v10 = 0; } } else { v10 = *(_BYTE *)(v8 + 16); } } if ( !*((_DWORD *)v90 - 3) ) goto LABEL_99; } else { if ( *(int *)(v8 + 44) > 0 ) { v46 = v87; v78 = 1; v87 = 0; v71 = v46; goto LABEL_33; } v78 = 0; LABEL_168: v10 = 1; if ( !*((_DWORD *)v90 - 3) ) goto LABEL_99; } LABEL_112: v31 = v10 ^ 1; goto LABEL_113; } break; } v81 = v27[(_DWORD)std::money_base::_S_atoms - 56 - v8]; v19 = *((_DWORD *)v90 - 3); if ( (unsigned int)(v19 + 1) > *((_DWORD *)v90 - 2) || *((int *)v90 - 1) > 0 ) std::string::reserve((unsigned int **)&v90, (std::string *)(v19 + 1), (unsigned int)v67); *((_BYTE *)v90 + *((_DWORD *)v90 - 3)) = v81; v20 = v90; if ( v90 != (volatile signed __int32 *)&unk_4E93FC ) { *((_DWORD *)v90 - 1) = 0; *((_DWORD *)v20 - 3) = v19 + 1; *((_BYTE *)v20 + v19 + 1) = 0; } ++v87; goto LABEL_33; default: v31 = 0; goto LABEL_171; } } } // 47FE87: variable 'v66' is possibly undefined // 47FF13: variable 'v68' is possibly undefined // 47F4BB: variable 'v67' is possibly undefined // 47FDEF: variable 'v69' is possibly undefined // 47FFC5: variable 'v70' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4E940C: using guessed type int std::moneypunct::id; // 4F66C4: using guessed type int (*off_4F66C4)(); //----- (00480170) -------------------------------------------------------- int __stdcall std::money_get>::_M_extract( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int v6; // esi int *v7; // edi int v8; // ebx bool v9; // zf char v10; // si int v11; // edi int v12; // eax _DWORD *v13; // ecx char v14; // si char v15; // si _BYTE *v16; // eax int v17; // eax _DWORD *v18; // ecx int v19; // edi volatile signed __int32 *v20; // eax unsigned int v21; // eax char v22; // si char v23; // di char v24; // al char v25; // di int v26; // edi _BYTE *v27; // eax int v28; // edi char v29; // cl volatile signed __int32 *v30; // eax char v31; // di _DWORD *v32; // ecx int v33; // eax char v34; // si char v35; // di int v36; // eax _BYTE *v37; // eax int v38; // eax _DWORD *v39; // ecx char v40; // al int v41; // eax unsigned __int8 *v42; // eax char v43; // di int v44; // edx _BYTE *v45; // eax char v46; // al char v47; // bl char v48; // al char v49; // bl int v50; // ebx int v52; // edx int v53; // eax unsigned int v54; // eax int v55; // eax int v56; // eax std::string *v57; // eax int v58; // edx unsigned int first_not_of; // eax unsigned int v60; // edx unsigned int v61; // eax std::locale::_Impl *v62; // eax std::locale::_Impl *v63; // ebx volatile signed __int32 *v64; // eax unsigned int v65; // eax void (__cdecl *v66)(void *); // [esp+4h] [ebp-64h] std::string *v67; // [esp+4h] [ebp-64h] unsigned int v68; // [esp+8h] [ebp-60h] unsigned int v69; // [esp+Ch] [ebp-5Ch] char v70; // [esp+10h] [ebp-58h] char v71; // [esp+18h] [ebp-50h] unsigned int v72; // [esp+1Ch] [ebp-4Ch] _DWORD *v73; // [esp+20h] [ebp-48h] unsigned int v74; // [esp+24h] [ebp-44h] int v75; // [esp+2Ch] [ebp-3Ch] bool v76; // [esp+31h] [ebp-37h] char v77; // [esp+32h] [ebp-36h] char v78; // [esp+33h] [ebp-35h] char v79; // [esp+34h] [ebp-34h] int v80; // [esp+34h] [ebp-34h] char v81; // [esp+34h] [ebp-34h] unsigned int v82; // [esp+34h] [ebp-34h] char v83; // [esp+34h] [ebp-34h] char v84; // [esp+34h] [ebp-34h] unsigned int Buf; // [esp+38h] [ebp-30h] int v86; // [esp+3Ch] [ebp-2Ch] int v87; // [esp+3Ch] [ebp-2Ch] char v88; // [esp+43h] [ebp-25h] BYREF volatile signed __int32 *v89; // [esp+44h] [ebp-24h] BYREF volatile signed __int32 *v90; // [esp+48h] [ebp-20h] BYREF int v91; // [esp+4Ch] [ebp-1Ch] v86 = a4 + 108; v73 = std::use_facet>(a4 + 108); v6 = std::locale::id::_M_id(&std::moneypunct::id); v7 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * v6); v8 = *v7; if ( !*v7 ) { v62 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v66); *(_DWORD *)v62 = &off_4F66D4; v63 = v62; *((_DWORD *)v62 + 1) = 0; *((_DWORD *)v62 + 2) = 0; *((_DWORD *)v62 + 3) = 0; *((_WORD *)v62 + 8) = 0; *((_BYTE *)v62 + 18) = 0; *((_DWORD *)v62 + 5) = 0; *((_DWORD *)v62 + 6) = 0; *((_DWORD *)v62 + 7) = 0; *((_DWORD *)v62 + 8) = 0; *((_DWORD *)v62 + 9) = 0; *((_DWORD *)v62 + 10) = 0; *((_DWORD *)v62 + 11) = 0; *((_DWORD *)v62 + 12) = 0; *((_DWORD *)v62 + 13) = 0; *((_BYTE *)v62 + 67) = 0; std::__moneypunct_cache::_M_cache((int)v62, v86); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v63, (const std::locale::facet *)v6, v68); v8 = *v7; } if ( *(_DWORD *)(v8 + 32) ) v76 = *(_DWORD *)(v8 + 40) != 0; else v76 = 0; v9 = *(_BYTE *)(v8 + 16) == 0; v89 = (volatile signed __int32 *)&unk_4E93FC; if ( !v9 ) std::string::reserve((unsigned int **)&v89, (std::string *)0x20, (unsigned int)v66); v90 = (volatile signed __int32 *)&unk_4E93FC; std::string::reserve((unsigned int **)&v90, (std::string *)0x20, (unsigned int)v66); v78 = 0; v75 = 1; v91 = *(_DWORD *)(v8 + 52); v87 = 0; v71 = 0; v74 = 0; v77 = 0; while ( 2 ) { switch ( *((_BYTE *)&v90 + v75 + 3) ) { case 0: v10 = 1; goto LABEL_10; case 1: if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) && (*(_BYTE *)(v73[6] + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 0x20) != 0 ) { v54 = *(_DWORD *)(a1 + 8); if ( v54 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v54 + 1; HIDWORD(a1) = -1; v10 = 1; LABEL_10: if ( v75 == 4 ) goto LABEL_11; goto LABEL_75; } v10 = 0; if ( v75 != 4 ) { LABEL_75: v38 = HIDWORD(a1); v39 = (_DWORD *)a1; while ( 1 ) { v43 = v38 == -1; v84 = v43 & (v39 != 0); if ( v84 ) { v43 = 0; if ( v39[2] >= v39[3] && (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39) == -1 ) { LODWORD(a1) = 0; v43 = v84; } } v40 = a3 == -1; v83 = v40 & (a2 != 0); if ( v83 ) { v40 = 0; if ( a2[2] >= a2[3] ) { v52 = (*(int (**)(void))(*a2 + 36))(); v40 = 0; if ( v52 == -1 ) { a2 = 0; v40 = v83; } } } if ( v43 == v40 ) goto LABEL_112; LOBYTE(v41) = BYTE4(a1); v39 = (_DWORD *)a1; if ( a1 > 0xFFFFFFFF00000000LL ) { v42 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) { if ( (*(_BYTE *)(v73[6] + 2 * *v42) & 0x20) == 0 ) goto LABEL_112; LABEL_81: v39[2] = v42 + 1; goto LABEL_82; } v41 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v41 == -1 ) LODWORD(a1) = 0; } if ( (*(_BYTE *)(v73[6] + 2 * (unsigned __int8)v41) & 0x20) == 0 ) goto LABEL_112; v39 = (_DWORD *)a1; v42 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) goto LABEL_81; (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v39 = (_DWORD *)a1; LABEL_82: HIDWORD(a1) = -1; v38 = -1; } } LABEL_11: if ( ((unsigned __int8)v10 & (v74 > 1)) == 0 ) { if ( v10 ) { if ( *((_DWORD *)v90 - 3) > 1u ) goto LABEL_175; goto LABEL_152; } goto LABEL_99; } if ( v77 ) v11 = *(_DWORD *)(v8 + 36); else v11 = *(_DWORD *)(v8 + 28); v12 = HIDWORD(a1); v13 = (_DWORD *)a1; for ( Buf = 1; ; ++Buf ) { v14 = v12 == -1; v79 = v14 & (v13 != 0); if ( v79 ) { v14 = 0; if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) { LODWORD(a1) = 0; v14 = v79; } } if ( a2 && a3 == -1 ) { if ( a2[2] >= a2[3] ) { v53 = (*(int (**)(void))(*a2 + 36))(); v14 ^= v53 == -1; if ( v53 == -1 ) a2 = 0; } } else { v14 ^= a3 == -1; } if ( Buf >= v74 || !v14 ) break; v13 = (_DWORD *)a1; LOBYTE(v80) = BYTE4(a1); v15 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; if ( v15 ) { v16 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v16 < *(_DWORD *)(a1 + 12) ) { if ( *v16 != *(_BYTE *)(v11 + Buf) ) { v47 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; goto LABEL_101; } LABEL_24: v13[2] = v16 + 1; goto LABEL_25; } v80 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v80 == -1 ) { LODWORD(a1) = 0; v13 = 0; } else { v13 = (_DWORD *)a1; } } if ( *(_BYTE *)(v11 + Buf) != (_BYTE)v80 ) goto LABEL_100; v16 = (_BYTE *)v13[2]; if ( (unsigned int)v16 < v13[3] ) goto LABEL_24; (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); v13 = (_DWORD *)a1; LABEL_25: v12 = -1; HIDWORD(a1) = -1; } if ( Buf == v74 ) { if ( *((_DWORD *)v90 - 3) <= 1u ) goto LABEL_152; LABEL_175: first_not_of = std::string::find_first_not_of((int *)&v90, (std::string *)0x30, 0, v68); if ( first_not_of ) { v60 = *((_DWORD *)v90 - 3); if ( first_not_of == -1 ) first_not_of = v60 - 1; if ( first_not_of > v60 ) first_not_of = *((_DWORD *)v90 - 3); std::string::_M_mutate(&v90, 0, first_not_of, 0, v69); } LABEL_152: if ( v77 ) { v64 = v90; if ( *((int *)v90 - 1) >= 0 ) { std::string::_M_leak_hard(&v90); v64 = v90; } if ( *(_BYTE *)v64 != 48 ) { if ( *((int *)v64 - 1) >= 0 ) std::string::_M_leak_hard(&v90); std::string::_M_replace_aux(&v90, 0, 0, 1u, 45, v70); *((_DWORD *)v90 - 1) = -1; } } if ( *((_DWORD *)v89 - 3) ) { v57 = (std::string *)(char)v87; if ( v78 ) v57 = (std::string *)v71; std::string::push_back((unsigned int **)&v89, v57, (char)v67); if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)&v89) ) *a5 |= 4u; } if ( !v78 || *(_DWORD *)(v8 + 44) == v87 ) { std::string::swap(a6, (std::string *)&v90, v67); v13 = (_DWORD *)a1; v15 = HIDWORD(a1) == -1; v47 = v15 & ((_DWORD)a1 != 0); if ( v47 ) goto LABEL_161; goto LABEL_102; } } LABEL_99: v13 = (_DWORD *)a1; LABEL_100: v15 = HIDWORD(a1) == -1; v47 = v15 & (v13 != 0); LABEL_101: *a5 |= 4u; if ( v47 ) { LABEL_161: v15 = 0; if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) { LODWORD(a1) = 0; v15 = v47; } } LABEL_102: v48 = a3 == -1; v49 = v48 & (a2 != 0); if ( v49 ) { v48 = 0; if ( a2[2] >= a2[3] ) { v58 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v48 = 0; if ( v58 == -1 ) { a2 = 0; v48 = v49; } } } if ( v15 == v48 ) *a5 |= 2u; v50 = a1; if ( v90 != (volatile signed __int32 *)&unk_4E93FC ) std::string::_Rep::_M_dispose(v90 - 3, (int)&v88); if ( v89 != (volatile signed __int32 *)&unk_4E93FC ) std::string::_Rep::_M_dispose(v89 - 3, (int)&v88); return v50; case 2: if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) goto LABEL_62; v31 = v75 == 1 || v74 > 1; if ( v31 ) goto LABEL_62; if ( v75 == 2 ) { if ( !v76 && (_BYTE)v91 != 3 && BYTE2(v91) != 1 ) goto LABEL_115; } else { v10 = 1; if ( v75 != 3 ) goto LABEL_113; if ( HIBYTE(v91) != 4 && (HIBYTE(v91) != 3 || !v76) ) goto LABEL_115; } LABEL_62: v32 = (_DWORD *)a1; v82 = 0; v72 = *(_DWORD *)(v8 + 24); v33 = HIDWORD(a1); while ( 2 ) { v34 = v33 == -1; v35 = v34 & (v32 != 0); if ( v35 ) { v34 = 0; if ( v32[2] >= v32[3] && (*(int (__fastcall **)(_DWORD *))(*v32 + 36))(v32) == -1 ) { LODWORD(a1) = 0; v34 = v35; } } if ( a2 && a3 == -1 ) { if ( a2[2] >= a2[3] ) { v55 = (*(int (**)(void))(*a2 + 36))(); v34 ^= v55 == -1; if ( v55 == -1 ) a2 = 0; } } else { v34 ^= a3 == -1; } v31 = (v82 < v72) & v34; if ( v31 ) { LOBYTE(v36) = BYTE4(a1); v32 = (_DWORD *)a1; if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_69; v37 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v37 < *(_DWORD *)(a1 + 12) ) { if ( *v37 != *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) ) goto LABEL_146; goto LABEL_71; } v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v36 == -1 ) LODWORD(a1) = 0; LABEL_69: if ( *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) != (_BYTE)v36 ) goto LABEL_146; v32 = (_DWORD *)a1; v37 = *(_BYTE **)(a1 + 8); if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v37 ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v32 = (_DWORD *)a1; } else { LABEL_71: v32[2] = v37 + 1; } ++v82; v33 = -1; HIDWORD(a1) = -1; continue; } break; } if ( v82 == v72 ) { LABEL_171: v10 = 1; goto LABEL_113; } LABEL_146: if ( v82 ) goto LABEL_99; v56 = *(_DWORD *)(a4 + 12) & 0x200; v10 = v56 == 0; v31 = v56 != 0; LABEL_113: if ( v75 > 3 || v31 ) goto LABEL_11; LABEL_115: ++v75; continue; case 3: if ( *(_DWORD *)(v8 + 32) ) { v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !v31 && **(_BYTE **)(v8 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get( (_DWORD **)&a1, SHIDWORD(a1)) ) { v74 = *(_DWORD *)(v8 + 32); v61 = *(_DWORD *)(a1 + 8); if ( v61 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v61 + 1; HIDWORD(a1) = -1; v10 = 1; goto LABEL_113; } if ( !*(_DWORD *)(v8 + 40) ) { if ( !*(_DWORD *)(v8 + 32) ) goto LABEL_54; goto LABEL_131; } } else if ( !*(_DWORD *)(v8 + 40) ) { goto LABEL_54; } v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !v31 && **(_BYTE **)(v8 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get( (_DWORD **)&a1, SHIDWORD(a1)) ) { v74 = *(_DWORD *)(v8 + 40); v65 = *(_DWORD *)(a1 + 8); if ( v65 >= *(_DWORD *)(a1 + 12) ) std::streambuf::sbumpc(a1); else *(_DWORD *)(a1 + 8) = v65 + 1; HIDWORD(a1) = -1; v10 = 1; v77 = 1; goto LABEL_113; } if ( !*(_DWORD *)(v8 + 32) || *(_DWORD *)(v8 + 40) ) { LABEL_54: v31 = v76; v10 = !v76; goto LABEL_113; } LABEL_131: v77 = 1; v31 = 0; v10 = 1; goto LABEL_113; case 4: v17 = HIDWORD(a1); v18 = (_DWORD *)a1; while ( 2 ) { v22 = v17 == -1; v23 = v22 & (v18 != 0); if ( v23 ) { v22 = 0; if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) { LODWORD(a1) = 0; v22 = v23; } } v24 = a3 == -1; v25 = v24 & (a2 != 0); if ( v25 ) { v24 = 0; if ( a2[2] >= a2[3] ) { v44 = (*(int (**)(void))(*a2 + 36))(); v24 = 0; if ( v44 == -1 ) { a2 = 0; v24 = v25; } } } if ( v24 == v22 ) goto LABEL_168; LOBYTE(v26) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v45 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) { v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v26 == -1 ) { LODWORD(a1) = 0; LOBYTE(v26) = -1; } } else { LOBYTE(v26) = *v45; } } v27 = memchr((const void *)(v8 + 57), (char)v26, 0xAu); if ( !v27 ) { v10 = v78 | (*(_BYTE *)(v8 + 17) != (unsigned __int8)v26); if ( v10 ) { if ( *(_BYTE *)(v8 + 16) ) { if ( *(_BYTE *)(v8 + 18) == (_BYTE)v26 ) { if ( v78 ) { v10 = v78; } else { if ( v87 ) { v28 = *((_DWORD *)v89 - 3); if ( (unsigned int)(v28 + 1) > *((_DWORD *)v89 - 2) || *((int *)v89 - 1) > 0 ) std::string::reserve((unsigned int **)&v89, (std::string *)(v28 + 1), (unsigned int)v67); v29 = v87; v87 = 0; *((_BYTE *)v89 + *((_DWORD *)v89 - 3)) = v29; v30 = v89; if ( v89 != (volatile signed __int32 *)&unk_4E93FC ) { *((_DWORD *)v89 - 1) = 0; *((_DWORD *)v30 - 3) = v28 + 1; *((_BYTE *)v30 + v28 + 1) = 0; v18 = (_DWORD *)a1; v21 = *(_DWORD *)(a1 + 8); if ( v21 >= *(_DWORD *)(a1 + 12) ) goto LABEL_51; goto LABEL_34; } LABEL_33: v18 = (_DWORD *)a1; v21 = *(_DWORD *)(a1 + 8); if ( v21 >= *(_DWORD *)(a1 + 12) ) { LABEL_51: (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); v18 = (_DWORD *)a1; goto LABEL_35; } LABEL_34: v18[2] = v21 + 1; LABEL_35: HIDWORD(a1) = -1; v17 = -1; continue; } v10 = 0; } } else { v10 = *(_BYTE *)(v8 + 16); } } if ( !*((_DWORD *)v90 - 3) ) goto LABEL_99; } else { if ( *(int *)(v8 + 44) > 0 ) { v46 = v87; v78 = 1; v87 = 0; v71 = v46; goto LABEL_33; } v78 = 0; LABEL_168: v10 = 1; if ( !*((_DWORD *)v90 - 3) ) goto LABEL_99; } LABEL_112: v31 = v10 ^ 1; goto LABEL_113; } break; } v81 = v27[(_DWORD)std::money_base::_S_atoms - 56 - v8]; v19 = *((_DWORD *)v90 - 3); if ( (unsigned int)(v19 + 1) > *((_DWORD *)v90 - 2) || *((int *)v90 - 1) > 0 ) std::string::reserve((unsigned int **)&v90, (std::string *)(v19 + 1), (unsigned int)v67); *((_BYTE *)v90 + *((_DWORD *)v90 - 3)) = v81; v20 = v90; if ( v90 != (volatile signed __int32 *)&unk_4E93FC ) { *((_DWORD *)v90 - 1) = 0; *((_DWORD *)v20 - 3) = v19 + 1; *((_BYTE *)v20 + v19 + 1) = 0; } ++v87; goto LABEL_33; default: v31 = 0; goto LABEL_171; } } } // 480D27: variable 'v66' is possibly undefined // 480DB3: variable 'v68' is possibly undefined // 48035B: variable 'v67' is possibly undefined // 480C8F: variable 'v69' is possibly undefined // 480E65: variable 'v70' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4E9410: using guessed type int std::moneypunct::id; // 4F66D4: using guessed type int (*off_4F66D4)(); //----- (00481010) -------------------------------------------------------- int __thiscall std::money_get>::get( void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6) { return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); } //----- (00481020) -------------------------------------------------------- int __thiscall std::money_get>::get( void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6) { return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); } //----- (00481030) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __stdcall std::money_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, unsigned int **a7) { int v7; // eax char *v8; // ebx int v9; // esi size_t v10; // eax char *v11; // ecx char v13; // al void (__thiscall *v14)(_BYTE *, char *, char *, unsigned int *); // eax int v15; // eax char v16; // [esp+4h] [ebp-54h] char *v17; // [esp+20h] [ebp-38h] unsigned int *v18; // [esp+24h] [ebp-34h] _BYTE *v19; // [esp+28h] [ebp-30h] size_t Size; // [esp+2Ch] [ebp-2Ch] int v21; // [esp+3Bh] [ebp-1Dh] BYREF int v22[7]; // [esp+3Ch] [ebp-1Ch] BYREF v19 = std::use_facet>(a5 + 108); v22[0] = (int)&unk_4E93FC; if ( a4 ) v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v22); else v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v22); v8 = (char *)v22[0]; v9 = v7; v10 = *(_DWORD *)(v22[0] - 12); Size = v10; if ( !v10 ) { LABEL_4: v11 = v8 - 12; if ( v8 == (char *)&unk_4E93FC ) return v9; goto LABEL_15; } std::string::resize(a7, v10, 0, v16); v18 = *a7; if ( (*(*a7 - 1) & 0x80000000) == 0 ) { std::string::_M_leak_hard((volatile signed __int32 **)a7); v18 = *a7; } v8 = (char *)v22[0]; v17 = (char *)(v22[0] + Size); v13 = v19[28]; if ( v13 != 1 ) { if ( !v13 ) std::ctype::_M_widen_init((int)v19); v14 = *(void (__thiscall **)(_BYTE *, char *, char *, unsigned int *))(*(_DWORD *)v19 + 28); if ( (char *)v14 == (char *)std::ctype::do_widen ) { if ( v17 != v8 ) goto LABEL_14; } else { v14(v19, v8, v17, v18); } v8 = (char *)v22[0]; goto LABEL_4; } if ( v17 == (char *)v22[0] ) goto LABEL_4; LABEL_14: memcpy(v18, v8, Size); v8 = (char *)v22[0]; v11 = (char *)(v22[0] - 12); if ( (_UNKNOWN *)v22[0] == &unk_4E93FC ) return v9; LABEL_15: if ( _CRT_MT ) { v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v8 - 1, 0xFFFFFFFF); } else { v15 = *((_DWORD *)v8 - 1); *((_DWORD *)v8 - 1) = v15 - 1; } if ( v15 <= 0 ) std::string::_Rep::_M_destroy(v11, (int)&v21); return v9; } // 481229: positive sp value 4 has been found // 4810DE: variable 'v16' is possibly undefined // 15412D0: using guessed type int _CRT_MT; // 481030: using guessed type _DWORD *arg_8; //----- (00481240) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __stdcall std::money_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, long double *a7) { int v7; // eax int v8; // esi char *v9; // ecx int v11; // edx char *String; // [esp+28h] [ebp-20h] BYREF int v13[7]; // [esp+2Ch] [ebp-1Ch] BYREF String = (char *)&unk_4E93FC; if ( a4 ) v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, (int *)&String); else v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, (int *)&String); v8 = v7; v13[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a7, a6); v9 = String - 12; if ( String != (char *)&unk_4E93FC ) { if ( _CRT_MT ) { v11 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); } else { v11 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v11 - 1; } if ( v11 <= 0 ) std::string::_Rep::_M_destroy(v9, (int)v13); } return v8; } // 481336: positive sp value 4 has been found // 15412D0: using guessed type int _CRT_MT; // 481240: using guessed type int var_1C[7]; //----- (00481340) -------------------------------------------------------- _DWORD *__stdcall std::money_get>::_M_extract( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7) { int v7; // esi int *v8; // edi int v9; // ebx bool v10; // zf char v11; // di __int16 v12; // ax _DWORD *v13; // ecx char v14; // dl char v15; // di unsigned __int16 v16; // ax unsigned int v17; // eax char v18; // si char v19; // di _WORD *v20; // eax __int16 v21; // ax __int16 v22; // ax _DWORD *v23; // ecx int v24; // edi volatile signed __int32 *v25; // eax unsigned int v26; // eax char v27; // si char v28; // di char v29; // dl char v30; // di wchar_t v31; // si wchar_t *v32; // eax int v33; // edi char v34; // cl unsigned int *v35; // eax char v36; // si _DWORD *v37; // ecx unsigned int v38; // edi __int16 v39; // ax bool v40; // al unsigned __int16 v41; // ax unsigned int v42; // eax bool v43; // si _WORD *v44; // eax __int16 v45; // ax __int16 v46; // ax _DWORD *v47; // ecx char v48; // dl unsigned __int16 v49; // ax unsigned int v50; // eax char v51; // si _WORD *v52; // eax __int16 v53; // ax __int16 *v54; // eax __int16 v55; // ax char v56; // bl char v57; // si char v58; // al char v59; // si _DWORD *v60; // ebx volatile signed __int32 *v61; // ecx _WORD *v63; // eax __int16 v64; // ax _WORD *v65; // eax char v66; // al _WORD *v67; // eax __int16 v68; // ax _WORD *v69; // eax unsigned __int16 v70; // ax unsigned int v71; // eax _WORD *v72; // eax __int16 v73; // ax std::string *v74; // eax unsigned __int16 *v75; // eax __int16 *v76; // eax __int16 v77; // dx unsigned __int16 *v78; // eax int v79; // edx int v80; // eax _WORD *v81; // eax __int16 v82; // dx _WORD *v83; // eax __int16 v84; // ax unsigned int first_not_of; // eax unsigned int v86; // edx unsigned int v87; // eax unsigned int v88; // eax _DWORD *v89; // eax std::locale::_Impl *v90; // ebx volatile signed __int32 *v91; // eax void (__cdecl *v92)(void *); // [esp+4h] [ebp-64h] std::string *v93; // [esp+4h] [ebp-64h] unsigned int v94; // [esp+8h] [ebp-60h] unsigned int v95; // [esp+Ch] [ebp-5Ch] char v96; // [esp+10h] [ebp-58h] char v97; // [esp+1Ch] [ebp-4Ch] void *v98; // [esp+20h] [ebp-48h] unsigned int v99; // [esp+24h] [ebp-44h] int v100; // [esp+2Ch] [ebp-3Ch] bool v101; // [esp+30h] [ebp-38h] char v102; // [esp+31h] [ebp-37h] bool v103; // [esp+32h] [ebp-36h] bool v104; // [esp+32h] [ebp-36h] char v105; // [esp+33h] [ebp-35h] int v106; // [esp+34h] [ebp-34h] char v107; // [esp+34h] [ebp-34h] unsigned int v108; // [esp+34h] [ebp-34h] char v109; // [esp+34h] [ebp-34h] char v110; // [esp+34h] [ebp-34h] unsigned int S; // [esp+38h] [ebp-30h] int v112; // [esp+3Ch] [ebp-2Ch] int v113; // [esp+3Ch] [ebp-2Ch] char v114; // [esp+43h] [ebp-25h] BYREF unsigned int *v115; // [esp+44h] [ebp-24h] BYREF volatile signed __int32 *v116; // [esp+48h] [ebp-20h] BYREF int v117; // [esp+4Ch] [ebp-1Ch] v112 = a5 + 108; v98 = std::use_facet>(a5 + 108); v7 = std::locale::id::_M_id(&std::moneypunct::id); v8 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v7); v9 = *v8; if ( !*v8 ) { v89 = operator new((struct type_info *)0x54, v92); v89[1] = 0; v90 = (std::locale::_Impl *)v89; *v89 = &off_4F66E4; v89[2] = 0; v89[3] = 0; *((_BYTE *)v89 + 16) = 0; *(_DWORD *)((char *)v89 + 18) = 0; v89[6] = 0; v89[7] = 0; v89[8] = 0; v89[9] = 0; v89[10] = 0; v89[11] = 0; v89[12] = 0; v89[13] = 0; v89[14] = 0; *((_BYTE *)v89 + 82) = 0; std::__moneypunct_cache::_M_cache((int)v89, v112); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v90, (const std::locale::facet *)v7, v94); v9 = *v8; } if ( *(_DWORD *)(v9 + 36) ) v101 = *(_DWORD *)(v9 + 44) != 0; else v101 = 0; v10 = *(_BYTE *)(v9 + 16) == 0; v115 = (unsigned int *)&unk_4E93FC; if ( !v10 ) std::string::reserve(&v115, (std::string *)0x20, (unsigned int)v92); v116 = (volatile signed __int32 *)&unk_4E93FC; std::string::reserve((unsigned int **)&v116, (std::string *)0x20, (unsigned int)v92); v105 = 0; v100 = 1; v117 = *(_DWORD *)(v9 + 56); v113 = 0; v97 = 0; v99 = 0; v102 = 0; while ( 2 ) { switch ( *((_BYTE *)&v116 + v100 + 3) ) { case 0: v11 = 1; goto LABEL_10; case 1: if ( !std::istreambuf_iterator::equal(&a1, (int)&a3) ) { v70 = std::istreambuf_iterator::_M_get(&a1, a2); v11 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v70); if ( v11 ) { v71 = a1[2]; if ( v71 >= a1[3] ) std::wstreambuf::sbumpc((int)a1); else a1[2] = v71 + 2; a2 = -1; LABEL_10: if ( v100 == 4 ) goto LABEL_11; goto LABEL_82; } } v11 = 0; if ( v100 != 4 ) { LABEL_82: v46 = a2; v47 = a1; while ( 1 ) { v51 = v46 == -1; v110 = v51 & (v47 != 0); if ( v110 ) { v52 = (_WORD *)v47[2]; v53 = (unsigned int)v52 >= v47[3] ? (*(int (__fastcall **)(_DWORD *))(*v47 + 36))(v47) : *v52; v51 = 0; if ( v53 == -1 ) { a1 = 0; v51 = v110; } } v48 = a4 == -1; v109 = v48 & (a3 != 0); if ( v109 ) { v67 = (_WORD *)a3[2]; v68 = (unsigned int)v67 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v67; v48 = 0; if ( v68 == -1 ) { a3 = 0; v48 = v109; } } if ( v51 == v48 ) break; v49 = a2; if ( a1 && a2 == 0xFFFF ) { v69 = (_WORD *)a1[2]; v49 = (unsigned int)v69 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v69; if ( v49 == 0xFFFF ) a1 = 0; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v49) ) break; v47 = a1; v50 = a1[2]; if ( v50 >= a1[3] ) { (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); v47 = a1; } else { a1[2] = v50 + 2; } a2 = -1; v46 = -1; } LABEL_121: v36 = v11 ^ 1; goto LABEL_122; } LABEL_11: if ( ((unsigned __int8)v11 & (v99 > 1)) == 0 ) { if ( v11 ) { if ( *((_DWORD *)v116 - 3) > 1u ) goto LABEL_193; goto LABEL_149; } goto LABEL_102; } if ( v102 ) v106 = *(_DWORD *)(v9 + 40); else v106 = *(_DWORD *)(v9 + 32); v12 = a2; v13 = a1; for ( S = 1; ; ++S ) { v18 = v12 == -1; v19 = v18 & (v13 != 0); if ( v19 ) { v20 = (_WORD *)v13[2]; v21 = (unsigned int)v20 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v20; v18 = 0; if ( v21 == -1 ) { a1 = 0; v18 = v19; } } v14 = a4 == -1; v15 = v14 & (a3 != 0); if ( v15 ) { v72 = (_WORD *)a3[2]; v73 = (unsigned int)v72 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v72; v14 = 0; if ( v73 == -1 ) break; } if ( S >= v99 ) goto LABEL_147; LABEL_17: if ( v18 == v14 ) goto LABEL_147; v13 = a1; v16 = a2; if ( a1 && a2 == 0xFFFF ) { v75 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v75 >= a1[3] ) v16 = (*(int (**)(void))(*a1 + 36))(); else v16 = *v75; if ( v16 == 0xFFFF ) { a1 = 0; v13 = 0; } else { v13 = a1; } } if ( *(_WORD *)(v106 + 2 * S) != v16 ) goto LABEL_103; v17 = v13[2]; if ( v17 >= v13[3] ) { (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); v13 = a1; } else { v13[2] = v17 + 2; } a2 = -1; v12 = -1; } v14 = v15; a3 = 0; if ( S < v99 ) goto LABEL_17; LABEL_147: if ( S == v99 ) { if ( *((_DWORD *)v116 - 3) <= 1u ) goto LABEL_149; LABEL_193: first_not_of = std::string::find_first_not_of((int *)&v116, (std::string *)0x30, 0, v94); if ( first_not_of ) { v86 = *((_DWORD *)v116 - 3); if ( first_not_of == -1 ) first_not_of = v86 - 1; if ( first_not_of > v86 ) first_not_of = *((_DWORD *)v116 - 3); std::string::_M_mutate(&v116, 0, first_not_of, 0, v95); } LABEL_149: if ( v102 ) { v91 = v116; if ( *((int *)v116 - 1) >= 0 ) { std::string::_M_leak_hard(&v116); v91 = v116; } if ( *(_BYTE *)v91 != 48 ) { if ( *((int *)v91 - 1) >= 0 ) std::string::_M_leak_hard(&v116); std::string::_M_replace_aux(&v116, 0, 0, 1u, 45, v96); *((_DWORD *)v116 - 1) = -1; } } if ( *(v115 - 3) ) { v74 = (std::string *)(char)v113; if ( v105 ) v74 = (std::string *)v97; std::string::push_back(&v115, v74, (char)v93); if ( !(unsigned __int8)std::__verify_grouping( *(char **)(v9 + 8), *(_DWORD *)(v9 + 12), (const char **)&v115) ) *a6 |= 4u; } if ( !v105 || *(_DWORD *)(v9 + 48) == v113 ) { std::string::swap(a7, (std::string *)&v116, v93); v13 = a1; goto LABEL_104; } } LABEL_102: v13 = a1; LABEL_103: *a6 |= 4u; LABEL_104: v56 = a2 == 0xFFFF; v57 = v56 & (v13 != 0); if ( v57 ) { v83 = (_WORD *)v13[2]; v84 = (unsigned int)v83 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v83; v56 = 0; if ( v84 == -1 ) { a1 = 0; v56 = v57; } } v58 = a4 == -1; v59 = v58 & (a3 != 0); if ( v59 ) { v81 = (_WORD *)a3[2]; v82 = (unsigned int)v81 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v81; v58 = 0; if ( v82 == -1 ) { a3 = 0; v58 = v59; } } if ( v56 == v58 ) *a6 |= 2u; v60 = a1; if ( v116 == (volatile signed __int32 *)&unk_4E93FC ) { v61 = (volatile signed __int32 *)(v115 - 3); if ( v115 == (unsigned int *)&unk_4E93FC ) return v60; LABEL_227: std::string::_Rep::_M_dispose(v61, (int)&v114); return v60; } else { std::string::_Rep::_M_dispose(v116 - 3, (int)&v114); v61 = (volatile signed __int32 *)(v115 - 3); if ( v115 != (unsigned int *)&unk_4E93FC ) goto LABEL_227; return v60; } case 2: if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) goto LABEL_66; v36 = v100 == 1 || v99 > 1; if ( v36 ) goto LABEL_66; if ( v100 == 2 ) { if ( !v101 && (_BYTE)v117 != 3 && BYTE2(v117) != 1 ) goto LABEL_124; } else { v11 = 1; if ( v100 != 3 ) goto LABEL_122; if ( HIBYTE(v117) != 4 && (HIBYTE(v117) != 3 || !v101) ) goto LABEL_124; } LABEL_66: v37 = a1; v38 = 0; v108 = *(_DWORD *)(v9 + 28); v39 = a2; while ( 2 ) { v43 = v39 == -1; v104 = v43 && v37 != 0; if ( v104 ) { v44 = (_WORD *)v37[2]; v45 = (unsigned int)v44 >= v37[3] ? (*(int (__fastcall **)(_DWORD *))(*v37 + 36))(v37) : *v44; v43 = 0; if ( v45 == -1 ) { a1 = 0; v43 = v104; } } v40 = a4 == -1; v103 = v40 && a3 != 0; if ( !v103 || ((v76 = (__int16 *)a3[2], (unsigned int)v76 >= a3[3]) ? (v77 = (*(int (**)(void))(*a3 + 36))()) : (v77 = *v76), v40 = 0, v77 != -1) ) { v36 = (v38 < v108) & (v40 ^ v43); if ( !v36 ) goto LABEL_166; LABEL_69: v41 = a2; if ( a2 == 0xFFFF && a1 && ((v78 = (unsigned __int16 *)a1[2], (unsigned int)v78 >= a1[3]) ? (v41 = (*(int (**)(void))(*a1 + 36))()) : (v41 = *v78), v41 == 0xFFFF) ) { v79 = *(_DWORD *)(v9 + 24); a1 = 0; if ( *(_WORD *)(v79 + 2 * v38) != 0xFFFF ) goto LABEL_172; } else if ( *(_WORD *)(*(_DWORD *)(v9 + 24) + 2 * v38) != v41 ) { goto LABEL_172; } v37 = a1; v42 = a1[2]; if ( v42 >= a1[3] ) { (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); v37 = a1; } else { a1[2] = v42 + 2; } ++v38; a2 = -1; v39 = -1; continue; } break; } a3 = 0; v36 = (v38 < v108) & (v103 ^ v43); if ( v36 ) goto LABEL_69; LABEL_166: if ( v38 == v108 ) goto LABEL_167; LABEL_172: if ( v38 ) goto LABEL_102; v80 = *(_DWORD *)(a5 + 12) & 0x200; v11 = v80 == 0; v36 = v80 != 0; LABEL_122: if ( v100 > 3 || v36 ) goto LABEL_11; LABEL_124: ++v100; continue; case 3: if ( *(_DWORD *)(v9 + 36) ) { v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); if ( !v36 && **(_WORD **)(v9 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) { v99 = *(_DWORD *)(v9 + 36); v87 = a1[2]; if ( v87 >= a1[3] ) std::wstreambuf::sbumpc((int)a1); else a1[2] = v87 + 2; a2 = -1; LABEL_167: v11 = 1; goto LABEL_122; } if ( !*(_DWORD *)(v9 + 44) ) { if ( !*(_DWORD *)(v9 + 36) ) goto LABEL_58; goto LABEL_138; } } else if ( !*(_DWORD *)(v9 + 44) ) { goto LABEL_58; } v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); if ( !v36 && **(_WORD **)(v9 + 40) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) { v99 = *(_DWORD *)(v9 + 44); v88 = a1[2]; if ( v88 >= a1[3] ) std::wstreambuf::sbumpc((int)a1); else a1[2] = v88 + 2; v102 = 1; a2 = -1; v11 = 1; goto LABEL_122; } if ( !*(_DWORD *)(v9 + 36) || *(_DWORD *)(v9 + 44) ) { LABEL_58: v36 = v101; v11 = !v101; goto LABEL_122; } LABEL_138: v102 = 1; v36 = 0; v11 = 1; goto LABEL_122; case 4: v22 = a2; v23 = a1; while ( 2 ) { v27 = v22 == -1; v28 = v27 & (v23 != 0); if ( v28 ) { v63 = (_WORD *)v23[2]; v64 = (unsigned int)v63 >= v23[3] ? (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23) : *v63; v27 = 0; if ( v64 == -1 ) { a1 = 0; v27 = v28; } } v29 = a4 == -1; v30 = v29 & (a3 != 0); if ( v30 && ((v54 = (__int16 *)a3[2], (unsigned int)v54 >= a3[3]) ? (v55 = (*(int (**)(void))(*a3 + 36))()) : (v55 = *v54), v29 = 0, v55 == -1) ) { a3 = 0; if ( v27 == v30 ) goto LABEL_100; } else if ( v27 == v29 ) { LABEL_100: v11 = 1; goto LABEL_101; } v31 = a2; if ( a1 && a2 == 0xFFFF ) { v65 = (_WORD *)a1[2]; v31 = (unsigned int)v65 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v65; if ( v31 == 0xFFFF ) a1 = 0; } v32 = wmemchr((const wchar_t *)(v9 + 62), v31, 0xAu); if ( v32 ) { v107 = std::money_base::_S_atoms[((int)v32 - v9 - 60) >> 1]; v24 = *((_DWORD *)v116 - 3); if ( (unsigned int)(v24 + 1) > *((_DWORD *)v116 - 2) || *((int *)v116 - 1) > 0 ) std::string::reserve((unsigned int **)&v116, (std::string *)(v24 + 1), (unsigned int)v93); *((_BYTE *)v116 + *((_DWORD *)v116 - 3)) = v107; v25 = v116; if ( v116 != (volatile signed __int32 *)&unk_4E93FC ) { *((_DWORD *)v116 - 1) = 0; *((_DWORD *)v25 - 3) = v24 + 1; *((_BYTE *)v25 + v24 + 1) = 0; } ++v113; goto LABEL_36; } v11 = v105 | (*(_WORD *)(v9 + 18) != v31); if ( v11 ) { if ( !*(_BYTE *)(v9 + 16) ) goto LABEL_101; if ( *(_WORD *)(v9 + 20) == v31 ) { if ( v105 ) { v11 = v105; } else { if ( v113 ) { v33 = *(v115 - 3); if ( v33 + 1 > *(v115 - 2) || (int)*(v115 - 1) > 0 ) std::string::reserve(&v115, (std::string *)(v33 + 1), (unsigned int)v93); v34 = v113; v113 = 0; *((_BYTE *)v115 + *(v115 - 3)) = v34; v35 = v115; if ( v115 != (unsigned int *)&unk_4E93FC ) { *(v115 - 1) = 0; *(v35 - 3) = v33 + 1; *((_BYTE *)v35 + v33 + 1) = 0; v23 = a1; v26 = a1[2]; if ( v26 >= a1[3] ) goto LABEL_55; goto LABEL_37; } LABEL_36: v23 = a1; v26 = a1[2]; if ( v26 >= a1[3] ) { LABEL_55: (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); v23 = a1; goto LABEL_38; } LABEL_37: v23[2] = v26 + 2; LABEL_38: a2 = -1; v22 = -1; continue; } v11 = 0; } } else { v11 = *(_BYTE *)(v9 + 16); } LABEL_101: if ( !*((_DWORD *)v116 - 3) ) goto LABEL_102; goto LABEL_121; } break; } if ( *(int *)(v9 + 48) <= 0 ) { v105 = 0; goto LABEL_100; } v66 = v113; v105 = 1; v113 = 0; v97 = v66; goto LABEL_36; default: v36 = 0; v11 = 1; goto LABEL_122; } } } // 481F77: variable 'v92' is possibly undefined // 482004: variable 'v94' is possibly undefined // 48155D: variable 'v93' is possibly undefined // 481ED7: variable 'v95' is possibly undefined // 4820CD: variable 'v96' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4E9414: using guessed type int std::moneypunct::id; // 4F66E4: using guessed type int (*off_4F66E4)(); //----- (00482250) -------------------------------------------------------- _DWORD *__stdcall std::money_get>::_M_extract( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7) { int v7; // esi int *v8; // edi int v9; // ebx bool v10; // zf char v11; // di __int16 v12; // ax _DWORD *v13; // ecx char v14; // dl char v15; // di unsigned __int16 v16; // ax unsigned int v17; // eax char v18; // si char v19; // di _WORD *v20; // eax __int16 v21; // ax __int16 v22; // ax _DWORD *v23; // ecx int v24; // edi volatile signed __int32 *v25; // eax unsigned int v26; // eax char v27; // si char v28; // di char v29; // dl char v30; // di wchar_t v31; // si wchar_t *v32; // eax int v33; // edi char v34; // cl unsigned int *v35; // eax char v36; // si _DWORD *v37; // ecx unsigned int v38; // edi __int16 v39; // ax bool v40; // al unsigned __int16 v41; // ax unsigned int v42; // eax bool v43; // si _WORD *v44; // eax __int16 v45; // ax __int16 v46; // ax _DWORD *v47; // ecx char v48; // dl unsigned __int16 v49; // ax unsigned int v50; // eax char v51; // si _WORD *v52; // eax __int16 v53; // ax __int16 *v54; // eax __int16 v55; // ax char v56; // bl char v57; // si char v58; // al char v59; // si _DWORD *v60; // ebx volatile signed __int32 *v61; // ecx _WORD *v63; // eax __int16 v64; // ax _WORD *v65; // eax char v66; // al _WORD *v67; // eax __int16 v68; // ax _WORD *v69; // eax unsigned __int16 v70; // ax unsigned int v71; // eax _WORD *v72; // eax __int16 v73; // ax std::string *v74; // eax unsigned __int16 *v75; // eax __int16 *v76; // eax __int16 v77; // dx unsigned __int16 *v78; // eax int v79; // edx int v80; // eax _WORD *v81; // eax __int16 v82; // dx _WORD *v83; // eax __int16 v84; // ax unsigned int first_not_of; // eax unsigned int v86; // edx unsigned int v87; // eax unsigned int v88; // eax _DWORD *v89; // eax std::locale::_Impl *v90; // ebx volatile signed __int32 *v91; // eax void (__cdecl *v92)(void *); // [esp+4h] [ebp-64h] std::string *v93; // [esp+4h] [ebp-64h] unsigned int v94; // [esp+8h] [ebp-60h] unsigned int v95; // [esp+Ch] [ebp-5Ch] char v96; // [esp+10h] [ebp-58h] char v97; // [esp+1Ch] [ebp-4Ch] void *v98; // [esp+20h] [ebp-48h] unsigned int v99; // [esp+24h] [ebp-44h] int v100; // [esp+2Ch] [ebp-3Ch] bool v101; // [esp+30h] [ebp-38h] char v102; // [esp+31h] [ebp-37h] bool v103; // [esp+32h] [ebp-36h] bool v104; // [esp+32h] [ebp-36h] char v105; // [esp+33h] [ebp-35h] int v106; // [esp+34h] [ebp-34h] char v107; // [esp+34h] [ebp-34h] unsigned int v108; // [esp+34h] [ebp-34h] char v109; // [esp+34h] [ebp-34h] char v110; // [esp+34h] [ebp-34h] unsigned int S; // [esp+38h] [ebp-30h] int v112; // [esp+3Ch] [ebp-2Ch] int v113; // [esp+3Ch] [ebp-2Ch] char v114; // [esp+43h] [ebp-25h] BYREF unsigned int *v115; // [esp+44h] [ebp-24h] BYREF volatile signed __int32 *v116; // [esp+48h] [ebp-20h] BYREF int v117; // [esp+4Ch] [ebp-1Ch] v112 = a5 + 108; v98 = std::use_facet>(a5 + 108); v7 = std::locale::id::_M_id(&std::moneypunct::id); v8 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v7); v9 = *v8; if ( !*v8 ) { v89 = operator new((struct type_info *)0x54, v92); v89[1] = 0; v90 = (std::locale::_Impl *)v89; *v89 = &off_4F66F4; v89[2] = 0; v89[3] = 0; *((_BYTE *)v89 + 16) = 0; *(_DWORD *)((char *)v89 + 18) = 0; v89[6] = 0; v89[7] = 0; v89[8] = 0; v89[9] = 0; v89[10] = 0; v89[11] = 0; v89[12] = 0; v89[13] = 0; v89[14] = 0; *((_BYTE *)v89 + 82) = 0; std::__moneypunct_cache::_M_cache((int)v89, v112); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v90, (const std::locale::facet *)v7, v94); v9 = *v8; } if ( *(_DWORD *)(v9 + 36) ) v101 = *(_DWORD *)(v9 + 44) != 0; else v101 = 0; v10 = *(_BYTE *)(v9 + 16) == 0; v115 = (unsigned int *)&unk_4E93FC; if ( !v10 ) std::string::reserve(&v115, (std::string *)0x20, (unsigned int)v92); v116 = (volatile signed __int32 *)&unk_4E93FC; std::string::reserve((unsigned int **)&v116, (std::string *)0x20, (unsigned int)v92); v105 = 0; v100 = 1; v117 = *(_DWORD *)(v9 + 56); v113 = 0; v97 = 0; v99 = 0; v102 = 0; while ( 2 ) { switch ( *((_BYTE *)&v116 + v100 + 3) ) { case 0: v11 = 1; goto LABEL_10; case 1: if ( !std::istreambuf_iterator::equal(&a1, (int)&a3) ) { v70 = std::istreambuf_iterator::_M_get(&a1, a2); v11 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v70); if ( v11 ) { v71 = a1[2]; if ( v71 >= a1[3] ) std::wstreambuf::sbumpc((int)a1); else a1[2] = v71 + 2; a2 = -1; LABEL_10: if ( v100 == 4 ) goto LABEL_11; goto LABEL_82; } } v11 = 0; if ( v100 != 4 ) { LABEL_82: v46 = a2; v47 = a1; while ( 1 ) { v51 = v46 == -1; v110 = v51 & (v47 != 0); if ( v110 ) { v52 = (_WORD *)v47[2]; v53 = (unsigned int)v52 >= v47[3] ? (*(int (__fastcall **)(_DWORD *))(*v47 + 36))(v47) : *v52; v51 = 0; if ( v53 == -1 ) { a1 = 0; v51 = v110; } } v48 = a4 == -1; v109 = v48 & (a3 != 0); if ( v109 ) { v67 = (_WORD *)a3[2]; v68 = (unsigned int)v67 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v67; v48 = 0; if ( v68 == -1 ) { a3 = 0; v48 = v109; } } if ( v51 == v48 ) break; v49 = a2; if ( a1 && a2 == 0xFFFF ) { v69 = (_WORD *)a1[2]; v49 = (unsigned int)v69 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v69; if ( v49 == 0xFFFF ) a1 = 0; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v49) ) break; v47 = a1; v50 = a1[2]; if ( v50 >= a1[3] ) { (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); v47 = a1; } else { a1[2] = v50 + 2; } a2 = -1; v46 = -1; } LABEL_121: v36 = v11 ^ 1; goto LABEL_122; } LABEL_11: if ( ((unsigned __int8)v11 & (v99 > 1)) == 0 ) { if ( v11 ) { if ( *((_DWORD *)v116 - 3) > 1u ) goto LABEL_193; goto LABEL_149; } goto LABEL_102; } if ( v102 ) v106 = *(_DWORD *)(v9 + 40); else v106 = *(_DWORD *)(v9 + 32); v12 = a2; v13 = a1; for ( S = 1; ; ++S ) { v18 = v12 == -1; v19 = v18 & (v13 != 0); if ( v19 ) { v20 = (_WORD *)v13[2]; v21 = (unsigned int)v20 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v20; v18 = 0; if ( v21 == -1 ) { a1 = 0; v18 = v19; } } v14 = a4 == -1; v15 = v14 & (a3 != 0); if ( v15 ) { v72 = (_WORD *)a3[2]; v73 = (unsigned int)v72 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v72; v14 = 0; if ( v73 == -1 ) break; } if ( S >= v99 ) goto LABEL_147; LABEL_17: if ( v18 == v14 ) goto LABEL_147; v13 = a1; v16 = a2; if ( a1 && a2 == 0xFFFF ) { v75 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v75 >= a1[3] ) v16 = (*(int (**)(void))(*a1 + 36))(); else v16 = *v75; if ( v16 == 0xFFFF ) { a1 = 0; v13 = 0; } else { v13 = a1; } } if ( *(_WORD *)(v106 + 2 * S) != v16 ) goto LABEL_103; v17 = v13[2]; if ( v17 >= v13[3] ) { (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); v13 = a1; } else { v13[2] = v17 + 2; } a2 = -1; v12 = -1; } v14 = v15; a3 = 0; if ( S < v99 ) goto LABEL_17; LABEL_147: if ( S == v99 ) { if ( *((_DWORD *)v116 - 3) <= 1u ) goto LABEL_149; LABEL_193: first_not_of = std::string::find_first_not_of((int *)&v116, (std::string *)0x30, 0, v94); if ( first_not_of ) { v86 = *((_DWORD *)v116 - 3); if ( first_not_of == -1 ) first_not_of = v86 - 1; if ( first_not_of > v86 ) first_not_of = *((_DWORD *)v116 - 3); std::string::_M_mutate(&v116, 0, first_not_of, 0, v95); } LABEL_149: if ( v102 ) { v91 = v116; if ( *((int *)v116 - 1) >= 0 ) { std::string::_M_leak_hard(&v116); v91 = v116; } if ( *(_BYTE *)v91 != 48 ) { if ( *((int *)v91 - 1) >= 0 ) std::string::_M_leak_hard(&v116); std::string::_M_replace_aux(&v116, 0, 0, 1u, 45, v96); *((_DWORD *)v116 - 1) = -1; } } if ( *(v115 - 3) ) { v74 = (std::string *)(char)v113; if ( v105 ) v74 = (std::string *)v97; std::string::push_back(&v115, v74, (char)v93); if ( !(unsigned __int8)std::__verify_grouping( *(char **)(v9 + 8), *(_DWORD *)(v9 + 12), (const char **)&v115) ) *a6 |= 4u; } if ( !v105 || *(_DWORD *)(v9 + 48) == v113 ) { std::string::swap(a7, (std::string *)&v116, v93); v13 = a1; goto LABEL_104; } } LABEL_102: v13 = a1; LABEL_103: *a6 |= 4u; LABEL_104: v56 = a2 == 0xFFFF; v57 = v56 & (v13 != 0); if ( v57 ) { v83 = (_WORD *)v13[2]; v84 = (unsigned int)v83 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v83; v56 = 0; if ( v84 == -1 ) { a1 = 0; v56 = v57; } } v58 = a4 == -1; v59 = v58 & (a3 != 0); if ( v59 ) { v81 = (_WORD *)a3[2]; v82 = (unsigned int)v81 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v81; v58 = 0; if ( v82 == -1 ) { a3 = 0; v58 = v59; } } if ( v56 == v58 ) *a6 |= 2u; v60 = a1; if ( v116 == (volatile signed __int32 *)&unk_4E93FC ) { v61 = (volatile signed __int32 *)(v115 - 3); if ( v115 == (unsigned int *)&unk_4E93FC ) return v60; LABEL_227: std::string::_Rep::_M_dispose(v61, (int)&v114); return v60; } else { std::string::_Rep::_M_dispose(v116 - 3, (int)&v114); v61 = (volatile signed __int32 *)(v115 - 3); if ( v115 != (unsigned int *)&unk_4E93FC ) goto LABEL_227; return v60; } case 2: if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) goto LABEL_66; v36 = v100 == 1 || v99 > 1; if ( v36 ) goto LABEL_66; if ( v100 == 2 ) { if ( !v101 && (_BYTE)v117 != 3 && BYTE2(v117) != 1 ) goto LABEL_124; } else { v11 = 1; if ( v100 != 3 ) goto LABEL_122; if ( HIBYTE(v117) != 4 && (HIBYTE(v117) != 3 || !v101) ) goto LABEL_124; } LABEL_66: v37 = a1; v38 = 0; v108 = *(_DWORD *)(v9 + 28); v39 = a2; while ( 2 ) { v43 = v39 == -1; v104 = v43 && v37 != 0; if ( v104 ) { v44 = (_WORD *)v37[2]; v45 = (unsigned int)v44 >= v37[3] ? (*(int (__fastcall **)(_DWORD *))(*v37 + 36))(v37) : *v44; v43 = 0; if ( v45 == -1 ) { a1 = 0; v43 = v104; } } v40 = a4 == -1; v103 = v40 && a3 != 0; if ( !v103 || ((v76 = (__int16 *)a3[2], (unsigned int)v76 >= a3[3]) ? (v77 = (*(int (**)(void))(*a3 + 36))()) : (v77 = *v76), v40 = 0, v77 != -1) ) { v36 = (v38 < v108) & (v40 ^ v43); if ( !v36 ) goto LABEL_166; LABEL_69: v41 = a2; if ( a2 == 0xFFFF && a1 && ((v78 = (unsigned __int16 *)a1[2], (unsigned int)v78 >= a1[3]) ? (v41 = (*(int (**)(void))(*a1 + 36))()) : (v41 = *v78), v41 == 0xFFFF) ) { v79 = *(_DWORD *)(v9 + 24); a1 = 0; if ( *(_WORD *)(v79 + 2 * v38) != 0xFFFF ) goto LABEL_172; } else if ( *(_WORD *)(*(_DWORD *)(v9 + 24) + 2 * v38) != v41 ) { goto LABEL_172; } v37 = a1; v42 = a1[2]; if ( v42 >= a1[3] ) { (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); v37 = a1; } else { a1[2] = v42 + 2; } ++v38; a2 = -1; v39 = -1; continue; } break; } a3 = 0; v36 = (v38 < v108) & (v103 ^ v43); if ( v36 ) goto LABEL_69; LABEL_166: if ( v38 == v108 ) goto LABEL_167; LABEL_172: if ( v38 ) goto LABEL_102; v80 = *(_DWORD *)(a5 + 12) & 0x200; v11 = v80 == 0; v36 = v80 != 0; LABEL_122: if ( v100 > 3 || v36 ) goto LABEL_11; LABEL_124: ++v100; continue; case 3: if ( *(_DWORD *)(v9 + 36) ) { v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); if ( !v36 && **(_WORD **)(v9 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) { v99 = *(_DWORD *)(v9 + 36); v87 = a1[2]; if ( v87 >= a1[3] ) std::wstreambuf::sbumpc((int)a1); else a1[2] = v87 + 2; a2 = -1; LABEL_167: v11 = 1; goto LABEL_122; } if ( !*(_DWORD *)(v9 + 44) ) { if ( !*(_DWORD *)(v9 + 36) ) goto LABEL_58; goto LABEL_138; } } else if ( !*(_DWORD *)(v9 + 44) ) { goto LABEL_58; } v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); if ( !v36 && **(_WORD **)(v9 + 40) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) { v99 = *(_DWORD *)(v9 + 44); v88 = a1[2]; if ( v88 >= a1[3] ) std::wstreambuf::sbumpc((int)a1); else a1[2] = v88 + 2; v102 = 1; a2 = -1; v11 = 1; goto LABEL_122; } if ( !*(_DWORD *)(v9 + 36) || *(_DWORD *)(v9 + 44) ) { LABEL_58: v36 = v101; v11 = !v101; goto LABEL_122; } LABEL_138: v102 = 1; v36 = 0; v11 = 1; goto LABEL_122; case 4: v22 = a2; v23 = a1; while ( 2 ) { v27 = v22 == -1; v28 = v27 & (v23 != 0); if ( v28 ) { v63 = (_WORD *)v23[2]; v64 = (unsigned int)v63 >= v23[3] ? (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23) : *v63; v27 = 0; if ( v64 == -1 ) { a1 = 0; v27 = v28; } } v29 = a4 == -1; v30 = v29 & (a3 != 0); if ( v30 && ((v54 = (__int16 *)a3[2], (unsigned int)v54 >= a3[3]) ? (v55 = (*(int (**)(void))(*a3 + 36))()) : (v55 = *v54), v29 = 0, v55 == -1) ) { a3 = 0; if ( v27 == v30 ) goto LABEL_100; } else if ( v27 == v29 ) { LABEL_100: v11 = 1; goto LABEL_101; } v31 = a2; if ( a1 && a2 == 0xFFFF ) { v65 = (_WORD *)a1[2]; v31 = (unsigned int)v65 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v65; if ( v31 == 0xFFFF ) a1 = 0; } v32 = wmemchr((const wchar_t *)(v9 + 62), v31, 0xAu); if ( v32 ) { v107 = std::money_base::_S_atoms[((int)v32 - v9 - 60) >> 1]; v24 = *((_DWORD *)v116 - 3); if ( (unsigned int)(v24 + 1) > *((_DWORD *)v116 - 2) || *((int *)v116 - 1) > 0 ) std::string::reserve((unsigned int **)&v116, (std::string *)(v24 + 1), (unsigned int)v93); *((_BYTE *)v116 + *((_DWORD *)v116 - 3)) = v107; v25 = v116; if ( v116 != (volatile signed __int32 *)&unk_4E93FC ) { *((_DWORD *)v116 - 1) = 0; *((_DWORD *)v25 - 3) = v24 + 1; *((_BYTE *)v25 + v24 + 1) = 0; } ++v113; goto LABEL_36; } v11 = v105 | (*(_WORD *)(v9 + 18) != v31); if ( v11 ) { if ( !*(_BYTE *)(v9 + 16) ) goto LABEL_101; if ( *(_WORD *)(v9 + 20) == v31 ) { if ( v105 ) { v11 = v105; } else { if ( v113 ) { v33 = *(v115 - 3); if ( v33 + 1 > *(v115 - 2) || (int)*(v115 - 1) > 0 ) std::string::reserve(&v115, (std::string *)(v33 + 1), (unsigned int)v93); v34 = v113; v113 = 0; *((_BYTE *)v115 + *(v115 - 3)) = v34; v35 = v115; if ( v115 != (unsigned int *)&unk_4E93FC ) { *(v115 - 1) = 0; *(v35 - 3) = v33 + 1; *((_BYTE *)v35 + v33 + 1) = 0; v23 = a1; v26 = a1[2]; if ( v26 >= a1[3] ) goto LABEL_55; goto LABEL_37; } LABEL_36: v23 = a1; v26 = a1[2]; if ( v26 >= a1[3] ) { LABEL_55: (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); v23 = a1; goto LABEL_38; } LABEL_37: v23[2] = v26 + 2; LABEL_38: a2 = -1; v22 = -1; continue; } v11 = 0; } } else { v11 = *(_BYTE *)(v9 + 16); } LABEL_101: if ( !*((_DWORD *)v116 - 3) ) goto LABEL_102; goto LABEL_121; } break; } if ( *(int *)(v9 + 48) <= 0 ) { v105 = 0; goto LABEL_100; } v66 = v113; v105 = 1; v113 = 0; v97 = v66; goto LABEL_36; default: v36 = 0; v11 = 1; goto LABEL_122; } } } // 482E87: variable 'v92' is possibly undefined // 482F14: variable 'v94' is possibly undefined // 48246D: variable 'v93' is possibly undefined // 482DE7: variable 'v95' is possibly undefined // 482FDD: variable 'v96' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4E9418: using guessed type int std::moneypunct::id; // 4F66F4: using guessed type int (*off_4F66F4)(); //----- (00483160) -------------------------------------------------------- int __thiscall std::money_get>::get( void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6) { return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); } //----- (00483170) -------------------------------------------------------- int __thiscall std::money_get>::get( void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6) { return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); } //----- (00483180) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! _DWORD *__stdcall std::money_get>::do_get( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, void **a8) { void *v8; // edi _DWORD *v9; // eax _DWORD *v10; // esi int v11; // eax size_t v12; // edx void *v13; // ecx void *v15; // ecx int v16; // edx size_t v17; // [esp+24h] [ebp-34h] int v18; // [esp+3Bh] [ebp-1Dh] BYREF int v19[7]; // [esp+3Ch] [ebp-1Ch] BYREF v8 = std::use_facet>(a6 + 108); v19[0] = (int)&unk_4E93FC; if ( a5 ) v9 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, v19); else v9 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, v19); v10 = v9; v11 = v19[0]; v12 = *(_DWORD *)(v19[0] - 12); v17 = v12; if ( !v12 ) { v13 = (void *)(v19[0] - 12); if ( (_UNKNOWN *)v19[0] == &unk_4E93FC ) return v10; goto LABEL_10; } std::wstring::resize(a8, v12, 0); v15 = *a8; if ( *((int *)*a8 - 1) >= 0 ) { std::wstring::_M_leak_hard((const wchar_t **)a8); v15 = *a8; } (*(void (__thiscall **)(void *, int, size_t, void *))(*(_DWORD *)v8 + 44))(v8, v19[0], v19[0] + v17, v15); v11 = v19[0]; v13 = (void *)(v19[0] - 12); if ( (_UNKNOWN *)v19[0] != &unk_4E93FC ) { LABEL_10: if ( _CRT_MT ) { v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF); } else { v16 = *(_DWORD *)(v11 - 4); *(_DWORD *)(v11 - 4) = v16 - 1; } if ( v16 <= 0 ) std::string::_Rep::_M_destroy(v13, (int)&v18); } return v10; } // 4832E6: positive sp value 4 has been found // 15412D0: using guessed type int _CRT_MT; //----- (004832F0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! _DWORD *__stdcall std::money_get>::do_get( std::locale::facet *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8) { _DWORD *v8; // eax _DWORD *v9; // esi char *v10; // ecx int v12; // edx char *String; // [esp+38h] [ebp-20h] BYREF int v14[7]; // [esp+3Ch] [ebp-1Ch] BYREF String = (char *)&unk_4E93FC; if ( a5 ) v8 = std::money_get>::_M_extract( a1, a2, a3, a4, a6, a7, (int *)&String); else v8 = std::money_get>::_M_extract( a1, a2, a3, a4, a6, a7, (int *)&String); v9 = v8; v14[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a8, a7); v10 = String - 12; if ( String != (char *)&unk_4E93FC ) { if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); } else { v12 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v12 - 1; } if ( v12 <= 0 ) std::string::_Rep::_M_destroy(v10, (int)v14); } return v9; } // 4833F6: positive sp value 4 has been found // 15412D0: using guessed type int _CRT_MT; // 4832F0: using guessed type int var_1C[7]; //----- (00483400) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6) { return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); } //----- (00483420) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6) { return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); } //----- (00483440) -------------------------------------------------------- int __stdcall std::money_put>::do_put( int a1, char a2, char a3, int a4, char a5, std::string **a6) { if ( a3 ) return std::money_put>::_M_insert(a1, a2, a4, a5, a6); else return std::money_put>::_M_insert(a1, a2, a4, a5, a6); } //----- (004834B0) -------------------------------------------------------- int __thiscall std::money_put>::do_put( void *this, std::locale *a2, char a3, int a4, int a5, int a6, long double a7) { void *v7; // esp void *v8; // esp int v9; // eax int v10; // ebx int v11; // eax void *v12; // esp void *v13; // esp char v14; // al void (__thiscall *v15)(_BYTE *, void *, char *, size_t); // eax int v16; // eax int v17; // ebx int v19; // edx char v20[52]; // [esp-30h] [ebp-98h] BYREF const std::locale *v21; // [esp+4h] [ebp-64h] char *v22; // [esp+24h] [ebp-44h] int v23; // [esp+28h] [ebp-40h] int v24; // [esp+2Ch] [ebp-3Ch] void *v25; // [esp+30h] [ebp-38h] size_t BufferCount; // [esp+34h] [ebp-34h] _BYTE *v27; // [esp+38h] [ebp-30h] void *Src; // [esp+3Ch] [ebp-2Ch] char v29[5]; // [esp+47h] [ebp-21h] BYREF int *v30[7]; // [esp+4Ch] [ebp-1Ch] BYREF v25 = this; v24 = a4; v23 = a6; std::locale::locale((volatile signed __int32 **)&v29[1], (volatile signed __int32 **)(a5 + 108), v21); v27 = std::use_facet>((int)&v29[1]); v7 = alloca(80); v8 = alloca(80); Src = v20; v30[0] = (int *)std::locale::facet::_S_get_c_locale(); v9 = std::__convert_from_v(v30, v20, 0x40u, "%.*Lf", 0, a7); v10 = v9; if ( v9 > 63 ) { BufferCount = v9 + 1; v11 = 16 * ((unsigned int)(v9 + 28) >> 4); v12 = alloca(v11); v13 = alloca(v11); Src = v20; v30[0] = (int *)std::locale::facet::_S_get_c_locale(); v10 = std::__convert_from_v(v30, v20, BufferCount, "%.*Lf", 0, a7); } std::string::string((unsigned int **)v30, v10, 0, (int)v29); BufferCount = (size_t)v30[0]; if ( *(v30[0] - 1) >= 0 ) { std::string::_M_leak_hard((volatile signed __int32 **)v30); BufferCount = (size_t)v30[0]; } v22 = (char *)Src + v10; v14 = v27[28]; if ( v14 == 1 ) goto LABEL_8; if ( v14 ) { v15 = *(void (__thiscall **)(_BYTE *, void *, char *, size_t))(*(_DWORD *)v27 + 28); if ( (char *)v15 == (char *)std::ctype::do_widen ) goto LABEL_8; LABEL_16: v15(v27, Src, v22, BufferCount); goto LABEL_10; } std::ctype::_M_widen_init((int)v27); v15 = *(void (__thiscall **)(_BYTE *, void *, char *, size_t))(*(_DWORD *)v27 + 28); if ( (char *)v15 != (char *)std::ctype::do_widen ) goto LABEL_16; LABEL_8: if ( v22 != Src ) memcpy((void *)BufferCount, Src, v10); LABEL_10: if ( (_BYTE)v24 ) v16 = std::money_put>::_M_insert( (int)a2, a3, a5, v23, (std::string **)v30); else v16 = std::money_put>::_M_insert( (int)a2, a3, a5, v23, (std::string **)v30); v17 = v16; Src = v30[0] - 3; if ( (_UNKNOWN *)v30[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v19 = _InterlockedExchangeAdd(v30[0] - 1, 0xFFFFFFFF); } else { v19 = *(v30[0] - 1); *(v30[0] - 1) = v19 - 1; } if ( v19 <= 0 ) std::string::_Rep::_M_destroy(Src, (int)v29); } std::locale::~locale((_DWORD **)&v29[1]); return v17; } // 15412D0: using guessed type int _CRT_MT; //----- (00483740) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __stdcall std::money_put>::_M_insert( int a1, char a2, int a3, char a4, std::string **a5) { int v5; // esi int *v6; // edi int v7; // ebx std::string *v8; // esi int v9; // ecx unsigned __int8 *v10; // ecx unsigned __int8 *v11; // eax size_t v12; // eax size_t v13; // edi int v15; // eax std::string *v16; // edx _BYTE *v17; // eax std::string *v18; // edx size_t v19; // eax size_t v20; // ecx unsigned int v21; // edx unsigned int v22; // esi unsigned int v23; // ecx unsigned int v24; // edi bool v25; // cf bool v26; // zf char *v27; // esi char v28; // al unsigned int *v29; // eax unsigned int v30; // edx std::locale::_Impl *v31; // eax std::locale::_Impl *v32; // ebx void (__cdecl *v33)(void *); // [esp+0h] [ebp-78h] unsigned int v34; // [esp+0h] [ebp-78h] const std::string *v35; // [esp+0h] [ebp-78h] unsigned int v36; // [esp+4h] [ebp-74h] unsigned int v37; // [esp+4h] [ebp-74h] unsigned int v38; // [esp+8h] [ebp-70h] char v39; // [esp+Ch] [ebp-6Ch] char v40; // [esp+20h] [ebp-58h] char *v41; // [esp+24h] [ebp-54h] std::string *v42; // [esp+28h] [ebp-50h] std::string *v43; // [esp+28h] [ebp-50h] _BYTE *v44; // [esp+2Ch] [ebp-4Ch] bool v45; // [esp+2Ch] [ebp-4Ch] char *v46; // [esp+30h] [ebp-48h] unsigned int v47; // [esp+3Ch] [ebp-3Ch] _DWORD *v48; // [esp+40h] [ebp-38h] int v49; // [esp+40h] [ebp-38h] int v50; // [esp+40h] [ebp-38h] char v51; // [esp+53h] [ebp-25h] BYREF std::string *v52; // [esp+54h] [ebp-24h] BYREF unsigned int *v53; // [esp+58h] [ebp-20h] BYREF int v54; // [esp+5Ch] [ebp-1Ch] BYREF char v55; // [esp+60h] [ebp-18h] BYREF v48 = std::use_facet>(a3 + 108); v5 = std::locale::id::_M_id(&std::moneypunct::id); v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); v7 = *v6; if ( !*v6 ) { v31 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v33); *(_DWORD *)v31 = &off_4F66C4; v32 = v31; *((_DWORD *)v31 + 1) = 0; *((_DWORD *)v31 + 2) = 0; *((_DWORD *)v31 + 3) = 0; *((_WORD *)v31 + 8) = 0; *((_BYTE *)v31 + 18) = 0; *((_DWORD *)v31 + 5) = 0; *((_DWORD *)v31 + 6) = 0; *((_DWORD *)v31 + 7) = 0; *((_DWORD *)v31 + 8) = 0; *((_DWORD *)v31 + 9) = 0; *((_DWORD *)v31 + 10) = 0; *((_DWORD *)v31 + 11) = 0; *((_DWORD *)v31 + 12) = 0; *((_DWORD *)v31 + 13) = 0; *((_BYTE *)v31 + 67) = 0; std::__moneypunct_cache::_M_cache((int)v31, a3 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v32, (const std::locale::facet *)v5, v36); v7 = *v6; } v8 = *a5; v9 = *((_DWORD *)*a5 - 3); if ( *(_BYTE *)*a5 == *(_BYTE *)(v7 + 56) ) { v54 = *(_DWORD *)(v7 + 52); if ( !v9 ) goto LABEL_10; v8 = (std::string *)((char *)v8 + 1); v46 = *(char **)(v7 + 36); v47 = *(_DWORD *)(v7 + 40); } else { v54 = *(_DWORD *)(v7 + 48); v46 = *(char **)(v7 + 28); v47 = *(_DWORD *)(v7 + 32); } v10 = (unsigned __int8 *)v8 + v9; if ( v10 > (unsigned __int8 *)v8 ) { v11 = (unsigned __int8 *)v8; do { if ( (*(_BYTE *)(v48[6] + 2 * *v11) & 8) == 0 ) break; ++v11; } while ( v10 != v11 ); v12 = v11 - (unsigned __int8 *)v8; v13 = v12; if ( v12 ) { v52 = (std::string *)&unk_4E93FC; std::string::reserve((unsigned int **)&v52, (std::string *)(2 * v12), (unsigned int)v33); v15 = *(_DWORD *)(v7 + 44); v49 = v13 - v15; if ( (int)(v13 - v15) > 0 ) { if ( v15 < 0 ) v49 = v13; if ( *(_DWORD *)(v7 + 12) ) { std::string::_M_replace_aux((volatile signed __int32 **)&v52, 0, *((_DWORD *)v52 - 3), 2 * v49, 0, v39); v16 = v52; v42 = *(std::string **)(v7 + 12); v41 = *(char **)(v7 + 8); v40 = *(_BYTE *)(v7 + 18); if ( *((int *)v52 - 1) >= 0 ) { std::string::_M_leak_hard((volatile signed __int32 **)&v52); v16 = v52; } v17 = std::__add_grouping(v16, v40, v41, (int)v42, v8, (_BYTE *)v8 + v49); v18 = v52; v44 = v17; if ( *((int *)v52 - 1) >= 0 ) { std::string::_M_leak_hard((volatile signed __int32 **)&v52); v18 = v52; } v19 = *((_DWORD *)v18 - 3); v20 = v44 - (_BYTE *)v18; v21 = v19 - (v44 - (_BYTE *)v18); if ( v20 > v19 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v20, v19); std::string::_M_mutate((volatile signed __int32 **)&v52, v20, v21, 0, v38); v15 = *(_DWORD *)(v7 + 44); } else { std::string::assign((volatile signed __int32 **)&v52, v8, v49, v36); v15 = *(_DWORD *)(v7 + 44); } } if ( v15 > 0 ) { std::string::push_back((unsigned int **)&v52, (std::string *)*(char *)(v7 + 17), v34); if ( v49 < 0 ) { std::string::append((unsigned int **)&v52, (std::string *)-v49, *(_BYTE *)(v7 + 57), v36); std::string::append((unsigned int **)&v52, v8, v13, v37); } else { std::string::append((unsigned int **)&v52, (std::string *)((char *)v8 + v49), *(_DWORD *)(v7 + 44), v36); } } v50 = *(_DWORD *)(a3 + 12) & 0xB0; v22 = *((_DWORD *)v52 - 3) + v47; if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) v22 = *(_DWORD *)(v7 + 24) + *((_DWORD *)v52 - 3) + v47; v53 = (unsigned int *)&unk_4E93FC; std::string::reserve(&v53, (std::string *)(2 * v22), v34); v23 = v22; v24 = *(_DWORD *)(a3 + 8); v25 = v24 < v22; v26 = v24 == v22; v27 = (char *)&v54; v45 = !v25 && !v26 && v50 == 16; v43 = (std::string *)(v24 - v23); do { switch ( *v27 ) { case 0: if ( v45 ) { v28 = a4; goto LABEL_33; } break; case 1: v28 = a4; if ( v45 ) LABEL_33: std::string::append(&v53, v43, v28, v36); else std::string::push_back(&v53, (std::string *)a4, (char)v35); break; case 2: if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) std::string::append(&v53, *(std::string **)(v7 + 20), *(_DWORD *)(v7 + 24), v36); break; case 3: if ( v47 ) std::string::push_back(&v53, (std::string *)*v46, (char)v35); break; case 4: std::string::append(&v53, (std::string *)&v52, v35); break; default: break; } ++v27; } while ( v27 != &v55 ); if ( v47 > 1 ) { std::string::append(&v53, (std::string *)(v46 + 1), v47 - 1, v36); v29 = v53; v30 = *(v53 - 3); if ( v24 <= v30 ) goto LABEL_40; } else { v29 = v53; v30 = *(v53 - 3); if ( v24 <= v30 ) { LABEL_40: v24 = v30; LABEL_41: if ( !a2 ) { (*(void (__thiscall **)(int, unsigned int *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v29, v24); v29 = v53; } if ( v29 != (unsigned int *)&unk_4E93FC ) std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v51); if ( v52 != (std::string *)&unk_4E93FC ) std::string::_Rep::_M_dispose((volatile signed __int32 *)v52 - 3, (int)&v51); goto LABEL_10; } } if ( v50 == 32 ) std::string::append(&v53, (std::string *)(v24 - v30), a4, v36); else std::string::_M_replace_aux((volatile signed __int32 **)&v53, 0, 0, v24 - v30, a4, v39); v29 = v53; goto LABEL_41; } } LABEL_10: *(_DWORD *)(a3 + 8) = 0; return a1; } // 483D16: positive sp value 4 has been found // 483B97: variable 'v33' is possibly undefined // 483C23: variable 'v36' is possibly undefined // 483891: variable 'v39' is possibly undefined // 483921: variable 'v38' is possibly undefined // 483969: variable 'v34' is possibly undefined // 4839C7: variable 'v35' is possibly undefined // 483C94: variable 'v37' is possibly undefined // 4E940C: using guessed type int std::moneypunct::id; // 4F66C4: using guessed type int (*off_4F66C4)(); //----- (00483D70) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __stdcall std::money_put>::_M_insert( int a1, char a2, int a3, char a4, std::string **a5) { int v5; // esi int *v6; // edi int v7; // ebx std::string *v8; // esi int v9; // ecx unsigned __int8 *v10; // ecx unsigned __int8 *v11; // eax size_t v12; // eax size_t v13; // edi int v15; // eax std::string *v16; // edx _BYTE *v17; // eax std::string *v18; // edx size_t v19; // eax size_t v20; // ecx unsigned int v21; // edx unsigned int v22; // esi unsigned int v23; // ecx unsigned int v24; // edi bool v25; // cf bool v26; // zf char *v27; // esi char v28; // al unsigned int *v29; // eax unsigned int v30; // edx std::locale::_Impl *v31; // eax std::locale::_Impl *v32; // ebx void (__cdecl *v33)(void *); // [esp+0h] [ebp-78h] unsigned int v34; // [esp+0h] [ebp-78h] const std::string *v35; // [esp+0h] [ebp-78h] unsigned int v36; // [esp+4h] [ebp-74h] unsigned int v37; // [esp+4h] [ebp-74h] unsigned int v38; // [esp+8h] [ebp-70h] char v39; // [esp+Ch] [ebp-6Ch] char v40; // [esp+20h] [ebp-58h] char *v41; // [esp+24h] [ebp-54h] std::string *v42; // [esp+28h] [ebp-50h] std::string *v43; // [esp+28h] [ebp-50h] _BYTE *v44; // [esp+2Ch] [ebp-4Ch] bool v45; // [esp+2Ch] [ebp-4Ch] char *v46; // [esp+30h] [ebp-48h] unsigned int v47; // [esp+3Ch] [ebp-3Ch] _DWORD *v48; // [esp+40h] [ebp-38h] int v49; // [esp+40h] [ebp-38h] int v50; // [esp+40h] [ebp-38h] char v51; // [esp+53h] [ebp-25h] BYREF std::string *v52; // [esp+54h] [ebp-24h] BYREF unsigned int *v53; // [esp+58h] [ebp-20h] BYREF int v54; // [esp+5Ch] [ebp-1Ch] BYREF char v55; // [esp+60h] [ebp-18h] BYREF v48 = std::use_facet>(a3 + 108); v5 = std::locale::id::_M_id(&std::moneypunct::id); v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); v7 = *v6; if ( !*v6 ) { v31 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v33); *(_DWORD *)v31 = &off_4F66D4; v32 = v31; *((_DWORD *)v31 + 1) = 0; *((_DWORD *)v31 + 2) = 0; *((_DWORD *)v31 + 3) = 0; *((_WORD *)v31 + 8) = 0; *((_BYTE *)v31 + 18) = 0; *((_DWORD *)v31 + 5) = 0; *((_DWORD *)v31 + 6) = 0; *((_DWORD *)v31 + 7) = 0; *((_DWORD *)v31 + 8) = 0; *((_DWORD *)v31 + 9) = 0; *((_DWORD *)v31 + 10) = 0; *((_DWORD *)v31 + 11) = 0; *((_DWORD *)v31 + 12) = 0; *((_DWORD *)v31 + 13) = 0; *((_BYTE *)v31 + 67) = 0; std::__moneypunct_cache::_M_cache((int)v31, a3 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v32, (const std::locale::facet *)v5, v36); v7 = *v6; } v8 = *a5; v9 = *((_DWORD *)*a5 - 3); if ( *(_BYTE *)*a5 == *(_BYTE *)(v7 + 56) ) { v54 = *(_DWORD *)(v7 + 52); if ( !v9 ) goto LABEL_10; v8 = (std::string *)((char *)v8 + 1); v46 = *(char **)(v7 + 36); v47 = *(_DWORD *)(v7 + 40); } else { v54 = *(_DWORD *)(v7 + 48); v46 = *(char **)(v7 + 28); v47 = *(_DWORD *)(v7 + 32); } v10 = (unsigned __int8 *)v8 + v9; if ( v10 > (unsigned __int8 *)v8 ) { v11 = (unsigned __int8 *)v8; do { if ( (*(_BYTE *)(v48[6] + 2 * *v11) & 8) == 0 ) break; ++v11; } while ( v10 != v11 ); v12 = v11 - (unsigned __int8 *)v8; v13 = v12; if ( v12 ) { v52 = (std::string *)&unk_4E93FC; std::string::reserve((unsigned int **)&v52, (std::string *)(2 * v12), (unsigned int)v33); v15 = *(_DWORD *)(v7 + 44); v49 = v13 - v15; if ( (int)(v13 - v15) > 0 ) { if ( v15 < 0 ) v49 = v13; if ( *(_DWORD *)(v7 + 12) ) { std::string::_M_replace_aux((volatile signed __int32 **)&v52, 0, *((_DWORD *)v52 - 3), 2 * v49, 0, v39); v16 = v52; v42 = *(std::string **)(v7 + 12); v41 = *(char **)(v7 + 8); v40 = *(_BYTE *)(v7 + 18); if ( *((int *)v52 - 1) >= 0 ) { std::string::_M_leak_hard((volatile signed __int32 **)&v52); v16 = v52; } v17 = std::__add_grouping(v16, v40, v41, (int)v42, v8, (_BYTE *)v8 + v49); v18 = v52; v44 = v17; if ( *((int *)v52 - 1) >= 0 ) { std::string::_M_leak_hard((volatile signed __int32 **)&v52); v18 = v52; } v19 = *((_DWORD *)v18 - 3); v20 = v44 - (_BYTE *)v18; v21 = v19 - (v44 - (_BYTE *)v18); if ( v20 > v19 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v20, v19); std::string::_M_mutate((volatile signed __int32 **)&v52, v20, v21, 0, v38); v15 = *(_DWORD *)(v7 + 44); } else { std::string::assign((volatile signed __int32 **)&v52, v8, v49, v36); v15 = *(_DWORD *)(v7 + 44); } } if ( v15 > 0 ) { std::string::push_back((unsigned int **)&v52, (std::string *)*(char *)(v7 + 17), v34); if ( v49 < 0 ) { std::string::append((unsigned int **)&v52, (std::string *)-v49, *(_BYTE *)(v7 + 57), v36); std::string::append((unsigned int **)&v52, v8, v13, v37); } else { std::string::append((unsigned int **)&v52, (std::string *)((char *)v8 + v49), *(_DWORD *)(v7 + 44), v36); } } v50 = *(_DWORD *)(a3 + 12) & 0xB0; v22 = *((_DWORD *)v52 - 3) + v47; if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) v22 = *(_DWORD *)(v7 + 24) + *((_DWORD *)v52 - 3) + v47; v53 = (unsigned int *)&unk_4E93FC; std::string::reserve(&v53, (std::string *)(2 * v22), v34); v23 = v22; v24 = *(_DWORD *)(a3 + 8); v25 = v24 < v22; v26 = v24 == v22; v27 = (char *)&v54; v45 = !v25 && !v26 && v50 == 16; v43 = (std::string *)(v24 - v23); do { switch ( *v27 ) { case 0: if ( v45 ) { v28 = a4; goto LABEL_33; } break; case 1: v28 = a4; if ( v45 ) LABEL_33: std::string::append(&v53, v43, v28, v36); else std::string::push_back(&v53, (std::string *)a4, (char)v35); break; case 2: if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) std::string::append(&v53, *(std::string **)(v7 + 20), *(_DWORD *)(v7 + 24), v36); break; case 3: if ( v47 ) std::string::push_back(&v53, (std::string *)*v46, (char)v35); break; case 4: std::string::append(&v53, (std::string *)&v52, v35); break; default: break; } ++v27; } while ( v27 != &v55 ); if ( v47 > 1 ) { std::string::append(&v53, (std::string *)(v46 + 1), v47 - 1, v36); v29 = v53; v30 = *(v53 - 3); if ( v24 <= v30 ) goto LABEL_40; } else { v29 = v53; v30 = *(v53 - 3); if ( v24 <= v30 ) { LABEL_40: v24 = v30; LABEL_41: if ( !a2 ) { (*(void (__thiscall **)(int, unsigned int *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v29, v24); v29 = v53; } if ( v29 != (unsigned int *)&unk_4E93FC ) std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v51); if ( v52 != (std::string *)&unk_4E93FC ) std::string::_Rep::_M_dispose((volatile signed __int32 *)v52 - 3, (int)&v51); goto LABEL_10; } } if ( v50 == 32 ) std::string::append(&v53, (std::string *)(v24 - v30), a4, v36); else std::string::_M_replace_aux((volatile signed __int32 **)&v53, 0, 0, v24 - v30, a4, v39); v29 = v53; goto LABEL_41; } } LABEL_10: *(_DWORD *)(a3 + 8) = 0; return a1; } // 484346: positive sp value 4 has been found // 4841C7: variable 'v33' is possibly undefined // 484253: variable 'v36' is possibly undefined // 483EC1: variable 'v39' is possibly undefined // 483F51: variable 'v38' is possibly undefined // 483F99: variable 'v34' is possibly undefined // 483FF7: variable 'v35' is possibly undefined // 4842C4: variable 'v37' is possibly undefined // 4E9410: using guessed type int std::moneypunct::id; // 4F66D4: using guessed type int (*off_4F66D4)(); //----- (004843A0) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6) { return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); } //----- (004843C0) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6) { return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); } //----- (004843E0) -------------------------------------------------------- int __stdcall std::money_put>::do_put( int a1, char a2, char a3, int a4, __int16 a5, wchar_t **a6) { if ( a3 ) return std::money_put>::_M_insert(a1, a2, a4, a5, a6); else return std::money_put>::_M_insert(a1, a2, a4, a5, a6); } //----- (00484450) -------------------------------------------------------- int __thiscall std::money_put>::do_put( void *this, std::locale *a2, char a3, int a4, int a5, int a6, long double a7) { void *v7; // esp void *v8; // esp int v9; // eax int v10; // ebx int v11; // eax void *v12; // esp void *v13; // esp int *v14; // eax int v15; // eax int v16; // ebx int v18; // edx int v19; // [esp-44h] [ebp-ACh] int v20; // [esp-40h] [ebp-A8h] int v21; // [esp-3Ch] [ebp-A4h] int v22; // [esp-38h] [ebp-A0h] int v23; // [esp-34h] [ebp-9Ch] size_t v24[22]; // [esp-30h] [ebp-98h] BYREF size_t BufferCount; // [esp+28h] [ebp-40h] int v26; // [esp+2Ch] [ebp-3Ch] int v27; // [esp+30h] [ebp-38h] void *v28; // [esp+34h] [ebp-34h] void *v29; // [esp+38h] [ebp-30h] void *v30; // [esp+3Ch] [ebp-2Ch] char v31[5]; // [esp+47h] [ebp-21h] BYREF int *v32[7]; // [esp+4Ch] [ebp-1Ch] BYREF v28 = this; v27 = a4; v26 = a6; std::locale::locale( (volatile signed __int32 **)&v31[1], (volatile signed __int32 **)(a5 + 108), (const std::locale *)v24[13]); v29 = std::use_facet>((int)&v31[1]); v7 = alloca(80); v8 = alloca(80); v30 = v24; v32[0] = (int *)std::locale::facet::_S_get_c_locale(); v9 = std::__convert_from_v(v32, (char *)v24, 0x40u, "%.*Lf", 0, a7); v10 = v9; if ( v9 > 63 ) { BufferCount = v9 + 1; v11 = 16 * ((unsigned int)(v9 + 28) >> 4); v12 = alloca(v11); v13 = alloca(v11); v30 = v24; v32[0] = (int *)std::locale::facet::_S_get_c_locale(); v10 = std::__convert_from_v(v32, (char *)v24, BufferCount, "%.*Lf", 0, a7); } std::wstring::basic_string(v32, v10, 0, (int)v31); v14 = v32[0]; if ( *(v32[0] - 1) >= 0 ) { std::wstring::_M_leak_hard((const wchar_t **)v32); v14 = v32[0]; } (*(void (__thiscall **)(void *, void *, char *, int *, int, int, int, int, int, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t))(*(_DWORD *)v29 + 44))( v29, v30, (char *)v30 + v10, v14, v19, v20, v21, v22, v23, v24[0], v24[1], v24[2], v24[3], v24[4], v24[5], v24[6], v24[7], v24[8], v24[9]); if ( (_BYTE)v27 ) v15 = std::money_put>::_M_insert( (int)a2, a3, a5, v26, (wchar_t **)v32); else v15 = std::money_put>::_M_insert( (int)a2, a3, a5, v26, (wchar_t **)v32); v16 = v15; v30 = v32[0] - 3; if ( (_UNKNOWN *)v32[0] != &unk_4E93EC ) { if ( _CRT_MT ) { v18 = _InterlockedExchangeAdd(v32[0] - 1, 0xFFFFFFFF); } else { v18 = *(v32[0] - 1); *(v32[0] - 1) = v18 - 1; } if ( v18 <= 0 ) std::wstring::_Rep::_M_destroy(v30, (int)v31); } std::locale::~locale((_DWORD **)&v31[1]); return v16; } // 48456F: variable 'v19' is possibly undefined // 48456F: variable 'v20' is possibly undefined // 48456F: variable 'v21' is possibly undefined // 48456F: variable 'v22' is possibly undefined // 48456F: variable 'v23' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (00484680) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __stdcall std::money_put>::_M_insert( int a1, char a2, int a3, __int16 a4, wchar_t **a5) { void *v5; // edi int v6; // ebx int v7; // esi wchar_t *v8; // ebx int v9; // eax int v10; // ecx int v11; // eax int v13; // eax __int16 v14; // di _WORD *v15; // eax char *v16; // edi char *v17; // eax int v18; // edi unsigned int v19; // eax unsigned int v20; // edi int v21; // edi unsigned int v22; // edi unsigned int v23; // ebx unsigned int v24; // ecx unsigned int v25; // edi bool v26; // cf bool v27; // zf char *v28; // ebx wchar_t v29; // ax _DWORD *v30; // eax unsigned int v31; // edx char *v32; // edi _DWORD *v33; // eax _DWORD *v34; // eax std::locale::_Impl *v35; // esi void (__cdecl *v36)(void *); // [esp+0h] [ebp-78h] unsigned int v37; // [esp+4h] [ebp-74h] char *v38; // [esp+20h] [ebp-58h] int v39; // [esp+24h] [ebp-54h] size_t v40; // [esp+28h] [ebp-50h] __int16 v41; // [esp+28h] [ebp-50h] int v42; // [esp+2Ch] [ebp-4Ch] bool v43; // [esp+2Ch] [ebp-4Ch] int v44; // [esp+34h] [ebp-44h] int *v45; // [esp+3Ch] [ebp-3Ch] int v46; // [esp+3Ch] [ebp-3Ch] int v47; // [esp+3Ch] [ebp-3Ch] unsigned int v48; // [esp+40h] [ebp-38h] char v49; // [esp+53h] [ebp-25h] BYREF _DWORD *v50; // [esp+54h] [ebp-24h] BYREF _DWORD *v51; // [esp+58h] [ebp-20h] BYREF int v52; // [esp+5Ch] [ebp-1Ch] BYREF char v53; // [esp+60h] [ebp-18h] BYREF v5 = std::use_facet>(a3 + 108); v6 = std::locale::id::_M_id(&std::moneypunct::id); v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); v45 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); if ( !v7 ) { v34 = operator new((struct type_info *)0x54, v36); v34[1] = 0; v35 = (std::locale::_Impl *)v34; *v34 = &off_4F66E4; v34[2] = 0; v34[3] = 0; *((_BYTE *)v34 + 16) = 0; *(_DWORD *)((char *)v34 + 18) = 0; v34[6] = 0; v34[7] = 0; v34[8] = 0; v34[9] = 0; v34[10] = 0; v34[11] = 0; v34[12] = 0; v34[13] = 0; v34[14] = 0; *((_BYTE *)v34 + 82) = 0; std::__moneypunct_cache::_M_cache((int)v34, a3 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v35, (const std::locale::facet *)v6, v37); v7 = *v45; } v8 = *a5; v9 = *((_DWORD *)*a5 - 3); if ( **a5 == *(_WORD *)(v7 + 60) ) { v52 = *(_DWORD *)(v7 + 56); v44 = *(_DWORD *)(v7 + 40); v48 = *(_DWORD *)(v7 + 44); if ( v9 ) ++v8; } else { v10 = *(_DWORD *)(v7 + 32); v52 = *(_DWORD *)(v7 + 52); v44 = v10; v48 = *(_DWORD *)(v7 + 36); } v11 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; v46 = v11 >> 1; if ( v11 >> 1 ) { v50 = &unk_4E93EC; std::wstring::reserve((void **)&v50, (char *)v11); v13 = *(_DWORD *)(v7 + 48); v42 = v46 - v13; if ( v46 - v13 > 0 ) { if ( v13 < 0 ) v42 = v46; if ( *(_DWORD *)(v7 + 12) ) { std::wstring::_M_replace_aux((const wchar_t **)&v50, 0, *(v50 - 3), 2 * v42, 0); v14 = *(_WORD *)(v7 + 20); v39 = *(_DWORD *)(v7 + 12); v38 = *(char **)(v7 + 8); v15 = v50; if ( (int)*(v50 - 1) >= 0 ) { std::wstring::_M_leak_hard((const wchar_t **)&v50); v15 = v50; } v16 = (char *)std::__add_grouping(v15, v14, v38, v39, v8, &v8[v42]); v17 = (char *)v50; if ( (int)*(v50 - 1) >= 0 ) { std::wstring::_M_leak_hard((const wchar_t **)&v50); v17 = (char *)v50; } v18 = v16 - v17; v19 = *((_DWORD *)v17 - 3); v20 = v18 >> 1; if ( v20 > v19 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v20, v19); std::wstring::_M_mutate((const wchar_t **)&v50, v20, v19 - v20, 0); v13 = *(_DWORD *)(v7 + 48); } else { std::wstring::assign((const wchar_t **)&v50, v8, v42); v13 = *(_DWORD *)(v7 + 48); } } v21 = *(v50 - 3); if ( v13 > 0 ) { v32 = (char *)(v21 + 1); v41 = *(_WORD *)(v7 + 18); if ( (unsigned int)v32 > *(v50 - 2) || (int)*(v50 - 1) > 0 ) std::wstring::reserve((void **)&v50, v32); v33 = v50; *((_WORD *)v50 + *(v50 - 3)) = v41; if ( v33 != (_DWORD *)&unk_4E93EC ) { *(v33 - 1) = 0; *(v33 - 3) = v32; *((_WORD *)v33 + (_DWORD)v32) = 0; } if ( v42 < 0 ) { std::wstring::append((void **)&v50, -v42, *(_WORD *)(v7 + 62)); std::wstring::append((void **)&v50, v8, v46); } else { std::wstring::append((void **)&v50, &v8[v42], *(_DWORD *)(v7 + 48)); } v21 = *(v50 - 3); } v22 = v48 + v21; v23 = v22; v47 = *(_DWORD *)(a3 + 12) & 0xB0; if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) v23 = *(_DWORD *)(v7 + 28) + v22; v51 = &unk_4E93EC; std::wstring::reserve((void **)&v51, (char *)(2 * v23)); v24 = v23; v25 = *(_DWORD *)(a3 + 8); v26 = v25 < v23; v27 = v25 == v23; v28 = (char *)&v52; v43 = !v26 && !v27 && v47 == 16; v40 = v25 - v24; do { switch ( *v28 ) { case 0: if ( v43 ) { v29 = a4; goto LABEL_29; } break; case 1: v29 = a4; if ( v43 ) LABEL_29: std::wstring::append((void **)&v51, v40, v29); else std::wstring::push_back((void **)&v51, a4); break; case 2: if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) std::wstring::append((void **)&v51, *(wchar_t **)(v7 + 24), *(_DWORD *)(v7 + 28)); break; case 3: if ( v48 ) std::wstring::push_back((void **)&v51, *(_WORD *)v44); break; case 4: std::wstring::append((void **)&v51, (const wchar_t **)&v50); break; default: break; } ++v28; } while ( v28 != &v53 ); if ( v48 > 1 ) { std::wstring::append((void **)&v51, (wchar_t *)(v44 + 2), v48 - 1); v30 = v51; v31 = *(v51 - 3); if ( v25 <= v31 ) goto LABEL_36; } else { v30 = v51; v31 = *(v51 - 3); if ( v25 <= v31 ) { LABEL_36: v25 = v31; LABEL_37: if ( !a2 ) { (*(void (__thiscall **)(int, _DWORD *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v30, v25); v30 = v51; } if ( v30 != (_DWORD *)&unk_4E93EC ) std::wstring::_Rep::_M_dispose(v30 - 3, (int)&v49); if ( v50 != (_DWORD *)&unk_4E93EC ) std::wstring::_Rep::_M_dispose(v50 - 3, (int)&v49); goto LABEL_6; } } if ( v47 == 32 ) std::wstring::append((void **)&v51, v25 - v31, a4); else std::wstring::_M_replace_aux((const wchar_t **)&v51, 0, 0, v25 - v31, a4); v30 = v51; goto LABEL_37; } LABEL_6: *(_DWORD *)(a3 + 8) = 0; return a1; } // 484CBD: positive sp value 4 has been found // 484AF7: variable 'v36' is possibly undefined // 484B84: variable 'v37' is possibly undefined // 4E9414: using guessed type int std::moneypunct::id; // 4F66E4: using guessed type int (*off_4F66E4)(); //----- (00484D10) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __stdcall std::money_put>::_M_insert( int a1, char a2, int a3, wchar_t a4, wchar_t **a5) { void *v5; // edi int v6; // ebx int v7; // esi wchar_t *v8; // ebx int v9; // eax int v10; // ecx int v11; // eax int v13; // eax __int16 v14; // di _WORD *v15; // eax char *v16; // edi char *v17; // eax int v18; // edi unsigned int v19; // eax unsigned int v20; // edi int v21; // edi unsigned int v22; // edi unsigned int v23; // ebx unsigned int v24; // ecx unsigned int v25; // edi bool v26; // cf bool v27; // zf char *v28; // ebx _DWORD *v29; // eax unsigned int v30; // edx char *v31; // edi _DWORD *v32; // eax _DWORD *v33; // eax _DWORD *v34; // eax std::locale::_Impl *v35; // esi void (__cdecl *v36)(void *); // [esp+0h] [ebp-78h] unsigned int v37; // [esp+4h] [ebp-74h] char *v38; // [esp+24h] [ebp-54h] char *v39; // [esp+24h] [ebp-54h] int v40; // [esp+28h] [ebp-50h] size_t v41; // [esp+28h] [ebp-50h] __int16 v42; // [esp+2Ch] [ebp-4Ch] int v43; // [esp+30h] [ebp-48h] bool v44; // [esp+30h] [ebp-48h] int v45; // [esp+38h] [ebp-40h] int *v46; // [esp+3Ch] [ebp-3Ch] int v47; // [esp+3Ch] [ebp-3Ch] int v48; // [esp+3Ch] [ebp-3Ch] unsigned int v49; // [esp+40h] [ebp-38h] char v50; // [esp+53h] [ebp-25h] BYREF _DWORD *v51; // [esp+54h] [ebp-24h] BYREF _DWORD *v52; // [esp+58h] [ebp-20h] BYREF int v53; // [esp+5Ch] [ebp-1Ch] BYREF char v54; // [esp+60h] [ebp-18h] BYREF v5 = std::use_facet>(a3 + 108); v6 = std::locale::id::_M_id(&std::moneypunct::id); v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); v46 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); if ( !v7 ) { v34 = operator new((struct type_info *)0x54, v36); v34[1] = 0; v35 = (std::locale::_Impl *)v34; *v34 = &off_4F66F4; v34[2] = 0; v34[3] = 0; *((_BYTE *)v34 + 16) = 0; *(_DWORD *)((char *)v34 + 18) = 0; v34[6] = 0; v34[7] = 0; v34[8] = 0; v34[9] = 0; v34[10] = 0; v34[11] = 0; v34[12] = 0; v34[13] = 0; v34[14] = 0; *((_BYTE *)v34 + 82) = 0; std::__moneypunct_cache::_M_cache((int)v34, a3 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v35, (const std::locale::facet *)v6, v37); v7 = *v46; } v8 = *a5; v9 = *((_DWORD *)*a5 - 3); if ( **a5 == *(_WORD *)(v7 + 60) ) { v53 = *(_DWORD *)(v7 + 56); v45 = *(_DWORD *)(v7 + 40); v49 = *(_DWORD *)(v7 + 44); if ( v9 ) ++v8; } else { v10 = *(_DWORD *)(v7 + 32); v53 = *(_DWORD *)(v7 + 52); v45 = v10; v49 = *(_DWORD *)(v7 + 36); } v11 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; v47 = v11 >> 1; if ( v11 >> 1 ) { v51 = &unk_4E93EC; std::wstring::reserve((void **)&v51, (char *)v11); v13 = *(_DWORD *)(v7 + 48); v43 = v47 - v13; if ( v47 - v13 > 0 ) { if ( v13 < 0 ) v43 = v47; if ( *(_DWORD *)(v7 + 12) ) { std::wstring::_M_replace_aux((const wchar_t **)&v51, 0, *(v51 - 3), 2 * v43, 0); v14 = *(_WORD *)(v7 + 20); v40 = *(_DWORD *)(v7 + 12); v38 = *(char **)(v7 + 8); v15 = v51; if ( (int)*(v51 - 1) >= 0 ) { std::wstring::_M_leak_hard((const wchar_t **)&v51); v15 = v51; } v16 = (char *)std::__add_grouping(v15, v14, v38, v40, v8, &v8[v43]); v17 = (char *)v51; if ( (int)*(v51 - 1) >= 0 ) { std::wstring::_M_leak_hard((const wchar_t **)&v51); v17 = (char *)v51; } v18 = v16 - v17; v19 = *((_DWORD *)v17 - 3); v20 = v18 >> 1; if ( v20 > v19 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v20, v19); std::wstring::_M_mutate((const wchar_t **)&v51, v20, v19 - v20, 0); v13 = *(_DWORD *)(v7 + 48); } else { std::wstring::assign((const wchar_t **)&v51, v8, v43); v13 = *(_DWORD *)(v7 + 48); } } v21 = *(v51 - 3); if ( v13 > 0 ) { v31 = (char *)(v21 + 1); v42 = *(_WORD *)(v7 + 18); if ( (unsigned int)v31 > *(v51 - 2) || (int)*(v51 - 1) > 0 ) std::wstring::reserve((void **)&v51, v31); v32 = v51; *((_WORD *)v51 + *(v51 - 3)) = v42; if ( v32 != (_DWORD *)&unk_4E93EC ) { *(v32 - 1) = 0; *(v32 - 3) = v31; *((_WORD *)v32 + (_DWORD)v31) = 0; } if ( v43 < 0 ) { std::wstring::append((void **)&v51, -v43, *(_WORD *)(v7 + 62)); std::wstring::append((void **)&v51, v8, v47); } else { std::wstring::append((void **)&v51, &v8[v43], *(_DWORD *)(v7 + 48)); } v21 = *(v51 - 3); } v22 = v49 + v21; v23 = v22; v48 = *(_DWORD *)(a3 + 12) & 0xB0; if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) v23 = *(_DWORD *)(v7 + 28) + v22; v52 = &unk_4E93EC; std::wstring::reserve((void **)&v52, (char *)(2 * v23)); v24 = v23; v25 = *(_DWORD *)(a3 + 8); v26 = v25 < v23; v27 = v25 == v23; v28 = (char *)&v53; v44 = !v26 && !v27 && v48 == 16; v41 = v25 - v24; do { switch ( *v28 ) { case 0: if ( v44 ) goto LABEL_29; break; case 1: if ( v44 ) { LABEL_29: std::wstring::append((void **)&v52, v41, a4); } else { v39 = (char *)(*(v52 - 3) + 1); if ( (unsigned int)v39 > *(v52 - 2) || (int)*(v52 - 1) > 0 ) std::wstring::reserve((void **)&v52, v39); v33 = v52; *((_WORD *)v52 + *(v52 - 3)) = a4; if ( v33 != (_DWORD *)&unk_4E93EC ) { *(v33 - 1) = 0; *(v33 - 3) = v39; *((_WORD *)v33 + (_DWORD)v39) = 0; } } break; case 2: if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) std::wstring::append((void **)&v52, *(wchar_t **)(v7 + 24), *(_DWORD *)(v7 + 28)); break; case 3: if ( v49 ) std::wstring::push_back((void **)&v52, *(_WORD *)v45); break; case 4: std::wstring::append((void **)&v52, (const wchar_t **)&v51); break; default: break; } ++v28; } while ( &v54 != v28 ); if ( v49 > 1 ) { std::wstring::append((void **)&v52, (wchar_t *)(v45 + 2), v49 - 1); v29 = v52; v30 = *(v52 - 3); if ( v25 <= v30 ) goto LABEL_36; } else { v29 = v52; v30 = *(v52 - 3); if ( v25 <= v30 ) { LABEL_36: v25 = v30; LABEL_37: if ( !a2 ) { (*(void (__thiscall **)(int, _DWORD *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v29, v25); v29 = v52; } if ( v29 != (_DWORD *)&unk_4E93EC ) std::wstring::_Rep::_M_dispose(v29 - 3, (int)&v50); if ( v51 != (_DWORD *)&unk_4E93EC ) std::wstring::_Rep::_M_dispose(v51 - 3, (int)&v50); goto LABEL_6; } } if ( v48 == 32 ) std::wstring::append((void **)&v52, v25 - v30, a4); else std::wstring::_M_replace_aux((const wchar_t **)&v52, 0, 0, v25 - v30, a4); v29 = v52; goto LABEL_37; } LABEL_6: *(_DWORD *)(a3 + 8) = 0; return a1; } // 4853B5: positive sp value 4 has been found // 4851C7: variable 'v36' is possibly undefined // 485254: variable 'v37' is possibly undefined // 4E9418: using guessed type int std::moneypunct::id; // 4F66F4: using guessed type int (*off_4F66F4)(); //----- (004853E0) -------------------------------------------------------- bool __userpurge std::type_info::__do_catch@( _DWORD *a1@, std::type_info *this, const std::type_info *a3, void **a4, unsigned int a5) { return std::type_info::operator==(a1, (int)this); } //----- (00485400) -------------------------------------------------------- int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3) { return 0; } //----- (00485410) -------------------------------------------------------- int std::type_info::__is_function_p() { return 0; } //----- (00485420) -------------------------------------------------------- bool __thiscall std::type_info::operator==(_DWORD *this, int a2) { bool result; // al const char *Str1; // ecx result = 1; if ( (_DWORD *)a2 != this ) { Str1 = (const char *)this[1]; result = 0; if ( *Str1 != 42 ) return strcmp(Str1, (const char *)((**(_BYTE **)(a2 + 4) == 42) + *(_DWORD *)(a2 + 4))) == 0; } return result; } //----- (00485460) -------------------------------------------------------- int __cdecl std::wstring::_S_compare(int a1, int a2) { return a1 - a2; } //----- (00485470) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (00485480) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (00485490) -------------------------------------------------------- const wchar_t *__fastcall std::wstring::_M_leak_hard(const wchar_t **a1) { const wchar_t *result; // eax result = *a1; if ( *a1 != (const wchar_t *)&unk_4E93EC ) { if ( *((int *)result - 1) > 0 ) { std::wstring::_M_mutate(a1, 0, 0, 0); result = *a1; *((_DWORD *)*a1 - 1) = -1; } else { result = *a1; *((_DWORD *)*a1 - 1) = -1; } } return result; } //----- (004854F0) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, wchar_t a2) { if ( a1 ) return std::wstring::_S_construct(a1, a2); else return &unk_4E93EC; } //----- (00485520) -------------------------------------------------------- _DWORD *__usercall std::wstring::_S_construct@(unsigned int a1@, wchar_t a2@) { unsigned int *v4; // eax unsigned int *v5; // esi _DWORD *v6; // ebp v4 = std::wstring::_Rep::_S_create(a1, 0); v5 = v4; v6 = v4 + 3; if ( a1 == 1 ) { *((_WORD *)v4 + 6) = a2; if ( v4 == (unsigned int *)&std::wstring::_Rep::_S_empty_rep_storage ) return v6; } else { wmemset((wchar_t *)v4 + 6, a2, a1); if ( v5 == (unsigned int *)&std::wstring::_Rep::_S_empty_rep_storage ) return v6; } v5[2] = 0; *v5 = a1; *((_WORD *)v5 + a1 + 6) = 0; return v6; } //----- (004855A0) -------------------------------------------------------- wchar_t *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>( wchar_t *S2, wchar_t *a2) { wchar_t *S1; // ebp int v3; // ebx int v4; // edi _DWORD *v5; // esi S1 = (wchar_t *)&unk_4E93EC; if ( a2 != S2 ) { v3 = (char *)a2 - (char *)S2; v4 = a2 - S2; v5 = std::wstring::_Rep::_S_create(v4, 0); S1 = (wchar_t *)(v5 + 3); if ( v4 == 1 ) *((_WORD *)v5 + 6) = *S2; else wmemcpy(S1, S2, v3 >> 1); if ( v5 != (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) { v5[2] = 0; *v5 = v4; *(_WORD *)((char *)v5 + v3 + 12) = 0; } } return S1; } //----- (00485630) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2) { if ( a1 == (const wchar_t *)a2 ) return &unk_4E93EC; if ( !a1 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); return std::wstring::_S_construct(a1, a2); } //----- (00485670) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2) { if ( a1 == (const wchar_t *)a2 ) return &unk_4E93EC; if ( !a1 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); return std::wstring::_S_construct(a1, a2); } //----- (004856B0) -------------------------------------------------------- _DWORD *__usercall std::wstring::_S_construct@(const wchar_t *a1@, int a2@) { int v2; // edi int N; // ebp int *v5; // eax int *v6; // ebx _DWORD *v7; // edx _DWORD *v9; // [esp+1Ch] [ebp-20h] v2 = a2 - (_DWORD)a1; N = (a2 - (int)a1) >> 1; v5 = std::wstring::_Rep::_S_create(N, 0); v6 = v5; v7 = v5 + 3; if ( N == 1 ) { *((_WORD *)v5 + 6) = *a1; if ( v5 == (int *)&std::wstring::_Rep::_S_empty_rep_storage ) return v7; } else { v9 = v5 + 3; wmemcpy((wchar_t *)v5 + 6, a1, N); v7 = v9; if ( v6 == (int *)&std::wstring::_Rep::_S_empty_rep_storage ) return v7; } v6[2] = 0; *v6 = N; *(_WORD *)((char *)v6 + v2 + 12) = 0; return v7; } //----- (00485740) -------------------------------------------------------- void *std::wstring::_S_empty_rep() { return &std::wstring::_Rep::_S_empty_rep_storage; } //----- (00485750) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) { int result; // eax result = (int)(N - (_DWORD)a2) >> 1; if ( result == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); } return result; } //----- (00485790) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) { int result; // eax result = (int)(N - (_DWORD)a2) >> 1; if ( result == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); } return result; } //----- (004857D0) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) { int result; // eax result = (int)(N - (_DWORD)a2) >> 1; if ( result == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); } return result; } //----- (00485810) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) { int result; // eax result = (int)(N - (_DWORD)a2) >> 1; if ( result == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); } return result; } //----- (00485850) -------------------------------------------------------- char *__fastcall std::wstring::shrink_to_fit(void **a1) { char *result; // eax result = (char *)*a1; if ( *((_DWORD *)*a1 - 3) < *((_DWORD *)*a1 - 2) ) return std::wstring::reserve(a1, 0); return result; } // 485850: could not find valid save-restore pair for ebp //----- (00485890) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::_M_replace_aux(const wchar_t **this, size_t a2, int a3, size_t N, wchar_t C) { wchar_t *S; // eax if ( N > a3 + 536870910 - *((_DWORD *)*this - 3) ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::wstring::_M_mutate(this, a2, a3, N); if ( !N ) return this; S = (wchar_t *)&(*this)[a2]; if ( N != 1 ) { wmemset(S, C, N); return this; } *S = C; return this; } //----- (00485920) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::_M_replace_safe( const wchar_t **this, size_t a2, int a3, wchar_t *S2, size_t N) { wchar_t *S1; // eax std::wstring::_M_mutate(this, a2, a3, N); if ( !N ) return this; S1 = (wchar_t *)&(*this)[a2]; if ( N != 1 ) { wmemcpy(S1, S2, N); return this; } *S1 = *S2; return this; } //----- (00485990) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, wchar_t a2) { if ( a1 ) return std::wstring::_S_construct(a1, a2); else return &unk_4E93EC; } //----- (004859C0) -------------------------------------------------------- const wchar_t *__thiscall std::wstring::at(const wchar_t **this, unsigned int a2) { const wchar_t *v2; // eax v2 = *this; if ( a2 >= *((_DWORD *)*this - 3) ) std::__throw_out_of_range_fmt( "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, *((_DWORD *)*this - 3)); if ( *((int *)v2 - 1) >= 0 ) { std::wstring::_M_leak_hard(this); v2 = *this; } return &v2[a2]; } //----- (00485A10) -------------------------------------------------------- int __fastcall std::wstring::end(const wchar_t **a1) { if ( *((int *)*a1 - 1) < 0 ) return (int)&(*a1)[*((_DWORD *)*a1 - 3)]; std::wstring::_M_leak_hard(a1); return (int)&(*a1)[*((_DWORD *)*a1 - 3)]; } //----- (00485A40) -------------------------------------------------------- void __thiscall std::wstring::_Rep::_M_destroy(void *this, int a2) { operator delete(this); } //----- (00485A60) -------------------------------------------------------- void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2) { int v2; // eax if ( this != (volatile signed __int32 *)&std::wstring::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); } else { v2 = *((_DWORD *)this + 2); *((_DWORD *)this + 2) = v2 - 1; } if ( v2 <= 0 ) operator delete((void *)this); } } // 15412D0: using guessed type int _CRT_MT; //----- (00485AB0) -------------------------------------------------------- void __fastcall std::wstring::_Rep::_M_dispose(volatile signed __int32 *a1) { int v1; // eax if ( !_CRT_MT ) { v1 = *((_DWORD *)a1 + 2); *((_DWORD *)a1 + 2) = v1 - 1; if ( v1 > 0 ) return; LABEL_5: operator delete((void *)a1); return; } if ( _InterlockedExchangeAdd(a1 + 2, 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 15412D0: using guessed type int _CRT_MT; //----- (00485AF0) -------------------------------------------------------- void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2) { int v2; // eax if ( !_CRT_MT ) { v2 = *((_DWORD *)this + 2); *((_DWORD *)this + 2) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: std::wstring::_Rep::_M_destroy((void *)this, a2); return; } if ( _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 15412D0: using guessed type int _CRT_MT; //----- (00485B30) -------------------------------------------------------- int __fastcall std::wstring::_Rep::_M_refcopy(int a1) { if ( (_UNKNOWN *)a1 != &std::wstring::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); else ++*(_DWORD *)(a1 + 8); } return a1 + 12; } // 15412D0: using guessed type int _CRT_MT; //----- (00485B60) -------------------------------------------------------- int __fastcall std::wstring::_Rep::_M_refdata(int a1) { return a1 + 12; } //----- (00485B70) -------------------------------------------------------- void *std::wstring::_Rep::_S_empty_rep() { return &std::wstring::_Rep::_S_empty_rep_storage; } //----- (00485B80) -------------------------------------------------------- void __fastcall std::wstring::_Rep::_M_set_leaked(int a1) { *(_DWORD *)(a1 + 8) = -1; } //----- (00485B90) -------------------------------------------------------- void __fastcall std::wstring::_Rep::_M_set_sharable(int a1) { *(_DWORD *)(a1 + 8) = 0; } //----- (00485BA0) -------------------------------------------------------- int __thiscall std::wstring::_Rep::_M_set_length_and_sharable(int this, int a2) { int result; // eax if ( (_UNKNOWN *)this != &std::wstring::_Rep::_S_empty_rep_storage ) { result = a2; *(_DWORD *)(this + 8) = 0; *(_DWORD *)this = a2; *(_WORD *)(this + 2 * a2 + 12) = 0; } return result; } //----- (00485BD0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int a2, int a3) { if ( *(int *)(this + 8) < 0 ) return std::wstring::_Rep::_M_clone(this, a2, 0); if ( (_UNKNOWN *)this != &std::wstring::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(this + 8), 1u); else ++*(_DWORD *)(this + 8); } return (_DWORD *)(this + 12); } // 15412D0: using guessed type int _CRT_MT; //----- (00485C20) -------------------------------------------------------- _DWORD *__thiscall std::wstring::_Rep::_M_clone(int this, int a2, int a3) { _DWORD *v4; // esi size_t v5; // eax v4 = std::wstring::_Rep::_S_create(a3 + *(_DWORD *)this, *(_DWORD *)(this + 4)); v5 = *(_DWORD *)this; if ( *(_DWORD *)this ) { if ( v5 == 1 ) { *((_WORD *)v4 + 6) = *(_WORD *)(this + 12); if ( v4 == (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) return v4 + 3; goto LABEL_7; } wmemcpy((wchar_t *)v4 + 6, (const wchar_t *)(this + 12), *(_DWORD *)this); v5 = *(_DWORD *)this; } if ( v4 == (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) return v4 + 3; LABEL_7: *v4 = v5; v4[2] = 0; *((_WORD *)v4 + v5 + 6) = 0; return v4 + 3; } //----- (00485CB0) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int a1, unsigned int a2) { unsigned int v2; // ebx struct type_info *v3; // edx unsigned int v4; // ecx _DWORD *result; // eax void (__cdecl *v6)(void *); // [esp+4h] [ebp-18h] v2 = a1; if ( a1 > 0x1FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_S_create"); if ( a1 <= a2 ) goto LABEL_9; if ( a1 < 2 * a2 ) v2 = 2 * a2; v3 = (struct type_info *)(2 * v2 + 14); v4 = 2 * v2 + 30; if ( v4 > 0x1000 && v2 > a2 ) { v2 += (4096 - (v4 & 0xFFF)) >> 1; if ( v2 > 0x1FFFFFFE ) v2 = 536870910; LABEL_9: v3 = (struct type_info *)(2 * v2 + 14); goto LABEL_10; } if ( (int)v3 < 0 ) std::__throw_bad_alloc(); LABEL_10: result = operator new(v3, v6); result[1] = v2; result[2] = 0; return result; } // 485D09: variable 'v6' is possibly undefined //----- (00485D40) -------------------------------------------------------- const wchar_t *__fastcall std::wstring::back(const wchar_t **a1) { const wchar_t *v1; // eax int v2; // esi v1 = *a1; v2 = *((_DWORD *)*a1 - 3) - 1; if ( *((int *)*a1 - 1) >= 0 ) { std::wstring::_M_leak_hard(a1); v1 = *a1; } return &v1[v2]; } //----- (00485D70) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::rend(const wchar_t **this, const wchar_t **a2) { const wchar_t **result; // eax const wchar_t *v3; // edx result = this; v3 = *a2; if ( *((int *)*a2 - 1) >= 0 ) { std::wstring::_M_leak_hard(a2); v3 = *a2; result = this; } *result = v3; return result; } //----- (00485DA0) -------------------------------------------------------- int __thiscall std::wstring::swap(int *this, int *a2) { int result; // eax int v3; // edx result = *this; if ( *(int *)(*this - 4) < 0 ) *(_DWORD *)(result - 4) = 0; v3 = *a2; if ( *(int *)(*a2 - 4) < 0 ) *(_DWORD *)(v3 - 4) = 0; *this = v3; *a2 = result; return result; } //----- (00485DD0) -------------------------------------------------------- const wchar_t *__fastcall std::wstring::begin(const wchar_t **a1) { const wchar_t *result; // eax result = *a1; if ( *((int *)*a1 - 1) >= 0 ) { std::wstring::_M_leak_hard(a1); return *a1; } return result; } //----- (00485E00) -------------------------------------------------------- void __fastcall std::wstring::clear(void **a1) { _DWORD *v1; // eax int v2; // ebx void **v3; // [esp+1Ch] [ebp-10h] v1 = *a1; if ( *((int *)*a1 - 1) <= 0 ) { if ( v1 != (_DWORD *)&unk_4E93EC ) { *(v1 - 1) = 0; *(v1 - 3) = 0; *(_WORD *)v1 = 0; } } else if ( v1 == (_DWORD *)&unk_4E93EC ) { *a1 = &unk_4E93EC; } else { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *(v1 - 1); *(v1 - 1) = v2 - 1; } if ( v2 <= 0 ) { v3 = a1; operator delete(v1 - 3); a1 = v3; } *a1 = &unk_4E93EC; } } // 15412D0: using guessed type int _CRT_MT; //----- (00485EA0) -------------------------------------------------------- char *__thiscall std::wstring::erase(const wchar_t **this, int a2) { int v3; // esi const wchar_t *v4; // eax v3 = a2 - (_DWORD)*this; std::wstring::_M_mutate(this, v3 >> 1, 1, 0); v4 = *this; *((_DWORD *)v4 - 1) = -1; return (char *)v4 + v3; } //----- (00485EE0) -------------------------------------------------------- char *__thiscall std::wstring::erase(const wchar_t **this, char *a2, int a3) { char *result; // eax int v5; // ebx const wchar_t *v6; // eax result = a2; if ( (a3 - (int)a2) >> 1 ) { v5 = a2 - (char *)*this; std::wstring::_M_mutate(this, v5 >> 1, (a3 - (int)a2) >> 1, 0); v6 = *this; *((_DWORD *)v6 - 1) = -1; return (char *)v6 + v5; } return result; } //----- (00485F40) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::erase(const wchar_t **this, size_t a2, unsigned int a3) { size_t v4; // ecx int v5; // edx v4 = *((_DWORD *)*this - 3); v5 = v4 - a2; if ( v4 - a2 > a3 ) v5 = a3; if ( a2 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", a2, v4); std::wstring::_M_mutate(this, a2, v5, 0); return this; } //----- (00485FB0) -------------------------------------------------------- const wchar_t *__fastcall std::wstring::front(const wchar_t **a1) { const wchar_t *result; // eax result = *a1; if ( *((int *)*a1 - 1) >= 0 ) { std::wstring::_M_leak_hard(a1); return *a1; } return result; } //----- (00485FE0) -------------------------------------------------------- void **__thiscall std::wstring::append(void **this, wchar_t *String) { size_t v3; // eax v3 = wcslen(String); return std::wstring::append(this, String, v3); } //----- (00486010) -------------------------------------------------------- void **__thiscall std::wstring::append(void **this, wchar_t *a2, size_t N) { const wchar_t *S2; // ebp wchar_t *v5; // eax int v6; // edi char *v7; // edi wchar_t *S1; // edx char *v10; // ebp bool v11; // cc S2 = a2; if ( !N ) return this; v5 = (wchar_t *)*this; v6 = *((_DWORD *)*this - 3); if ( N > 536870910 - v6 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v7 = (char *)(N + v6); if ( (unsigned int)v7 > *((_DWORD *)v5 - 2) || (v11 = *((_DWORD *)v5 - 1) <= 0, v5 = (wchar_t *)*this, !v11) ) { if ( v5 <= a2 && a2 <= &v5[*((_DWORD *)v5 - 3)] ) { v10 = (char *)((char *)a2 - (char *)v5); std::wstring::reserve(this, v7); v5 = (wchar_t *)*this; S2 = (const wchar_t *)&v10[(_DWORD)*this]; S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); if ( N != 1 ) goto LABEL_8; goto LABEL_13; } std::wstring::reserve(this, v7); v5 = (wchar_t *)*this; } S1 = &v5[*((_DWORD *)v5 - 3)]; if ( N != 1 ) { LABEL_8: wmemcpy(S1, S2, N); v5 = (wchar_t *)*this; goto LABEL_9; } LABEL_13: *S1 = *S2; LABEL_9: if ( v5 != (wchar_t *)&unk_4E93EC ) { *((_DWORD *)v5 - 1) = 0; *((_DWORD *)v5 - 3) = v7; v5[(_DWORD)v7] = 0; } return this; } //----- (004860F0) -------------------------------------------------------- void **__thiscall std::wstring::append(void **this, const wchar_t **a2) { size_t N; // esi size_t v4; // ebp _DWORD *v5; // eax const wchar_t *S2; // ecx wchar_t *S1; // edx N = *((_DWORD *)*a2 - 3); if ( !N ) return this; v4 = N + *((_DWORD *)*this - 3); if ( v4 <= *((_DWORD *)*this - 2) && *((int *)*this - 1) <= 0 ) { v5 = *this; S2 = *a2; S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); if ( N == 1 ) goto LABEL_10; LABEL_4: wmemcpy(S1, S2, N); v5 = *this; goto LABEL_5; } std::wstring::reserve(this, (char *)(N + *((_DWORD *)*this - 3))); v5 = *this; S2 = *a2; S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); if ( N != 1 ) goto LABEL_4; LABEL_10: *S1 = *S2; LABEL_5: if ( v5 != (_DWORD *)&unk_4E93EC ) { *(v5 - 1) = 0; *(v5 - 3) = v4; *((_WORD *)v5 + v4) = 0; } return this; } //----- (004861A0) -------------------------------------------------------- void **__thiscall std::wstring::append(void **this, _DWORD *a2, unsigned int a3, size_t a4) { unsigned int v4; // ebx size_t N; // ebx char *v7; // edx const wchar_t *S2; // edi _DWORD *v9; // eax wchar_t *S1; // ecx char *v12; // [esp+1Ch] [ebp-20h] char *v13; // [esp+1Ch] [ebp-20h] v4 = *(_DWORD *)(*a2 - 12); if ( a3 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::append", a3, *(_DWORD *)(*a2 - 12)); N = v4 - a3; if ( N > a4 ) { N = a4; if ( !a4 ) return this; } else if ( !N ) { return this; } v7 = (char *)(N + *((_DWORD *)*this - 3)); if ( *((_DWORD *)*this - 2) < (unsigned int)v7 || *((int *)*this - 1) > 0 ) { v12 = (char *)(N + *((_DWORD *)*this - 3)); std::wstring::reserve(this, v12); v7 = v12; } S2 = (const wchar_t *)(*a2 + 2 * a3); v9 = *this; S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); if ( N == 1 ) { *S1 = *S2; } else { v13 = v7; wmemcpy(S1, S2, N); v9 = *this; v7 = v13; } if ( v9 != (_DWORD *)&unk_4E93EC ) { *(v9 - 1) = 0; *(v9 - 3) = v7; *((_WORD *)v9 + (_DWORD)v7) = 0; } return this; } //----- (00486290) -------------------------------------------------------- void **__thiscall std::wstring::append(void **this, size_t N, wchar_t C) { _DWORD *v4; // edx int v5; // edi char *v6; // edi _DWORD *v7; // eax wchar_t *S; // edx if ( N ) { v4 = *this; v5 = *((_DWORD *)*this - 3); if ( N > 536870910 - v5 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v6 = (char *)(N + v5); if ( (unsigned int)v6 > *(v4 - 2) || (int)*(v4 - 1) > 0 ) std::wstring::reserve(this, v6); v7 = *this; S = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); if ( N == 1 ) { *S = C; } else { wmemset(S, C, N); v7 = *this; } if ( v7 != (_DWORD *)&unk_4E93EC ) { *(v7 - 1) = 0; *(v7 - 3) = v6; *((_WORD *)v7 + (_DWORD)v6) = 0; } } return this; } //----- (00486330) -------------------------------------------------------- int __thiscall std::wstring::assign(int *this, int *a2) { int v2; // ecx std::wstring::swap(this, a2); return v2; } // 486342: variable 'v2' is possibly undefined //----- (00486350) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *String) { size_t v3; // eax v3 = wcslen(String); return std::wstring::assign(this, String, v3); } //----- (00486380) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *S2, size_t N) { const wchar_t *v3; // eax int v4; // ebx const wchar_t **result; // eax wchar_t *v6; // ebx unsigned int v7; // eax wchar_t **v8; // [esp+1Ch] [ebp-10h] wchar_t **v9; // [esp+1Ch] [ebp-10h] v3 = *this; v4 = *((_DWORD *)*this - 3); if ( N > 0x1FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::assign"); if ( v3 > S2 || &v3[v4] < S2 ) return std::wstring::_M_replace_safe(this, 0, v4, S2, N); if ( *((int *)v3 - 1) > 0 ) { v4 = *((_DWORD *)*this - 3); return std::wstring::_M_replace_safe(this, 0, v4, S2, N); } v6 = (wchar_t *)*this; v7 = S2 - *this; if ( N <= v7 ) { if ( N != 1 ) { if ( N ) { v9 = (wchar_t **)this; wmemcpy((wchar_t *)*this, S2, N); this = (const wchar_t **)v9; v6 = *v9; } goto LABEL_13; } } else { if ( !v7 ) goto LABEL_13; if ( N != 1 ) { if ( N ) { v8 = (wchar_t **)this; wmemmove((wchar_t *)*this, S2, N); this = (const wchar_t **)v8; v6 = *v8; } goto LABEL_13; } } *v6 = *S2; LABEL_13: result = this; if ( v6 != (wchar_t *)&unk_4E93EC ) { *((_DWORD *)v6 - 1) = 0; *((_DWORD *)v6 - 3) = N; v6[N] = 0; } return result; } //----- (00486480) -------------------------------------------------------- void **__thiscall std::wstring::assign(void **this, _DWORD *a2) { _DWORD *v3; // esi _DWORD *v4; // ecx volatile signed __int32 *v5; // eax char *v6; // edx int v8; // ecx char v9[13]; // [esp+1Fh] [ebp-Dh] BYREF v3 = (_DWORD *)*a2; if ( *this != (void *)*a2 ) { v4 = v3 - 3; if ( (int)*(v3 - 1) < 0 ) { v3 = std::wstring::_Rep::_M_clone((int)v4, (int)v9, 0); } else if ( v4 != (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd(v3 - 1, 1u); else ++*(v3 - 1); } v5 = (volatile signed __int32 *)*this; v6 = (char *)*this - 12; if ( *this == &unk_4E93EC || (_CRT_MT ? (v8 = _InterlockedExchangeAdd(v5 - 1, 0xFFFFFFFF)) : (v8 = *((_DWORD *)v5 - 1), *((_DWORD *)v5 - 1) = v8 - 1), v8 > 0) ) { *this = v3; } else { operator delete(v6); *this = v3; } } return this; } // 15412D0: using guessed type int _CRT_MT; // 486480: using guessed type char var_D[13]; //----- (00486540) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, _DWORD *a2, unsigned int a3, size_t a4) { size_t v4; // edx v4 = *(_DWORD *)(*a2 - 12) - a3; if ( v4 > a4 ) v4 = a4; if ( a3 > *(_DWORD *)(*a2 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::assign", a3, *(_DWORD *)(*a2 - 12)); return std::wstring::assign(this, (wchar_t *)(*a2 + 2 * a3), v4); } //----- (004865B0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, size_t a2, __int16 a3) { return std::wstring::_M_replace_aux(this, 0, *((_DWORD *)*this - 3), a2, a3); } //----- (004865F0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *a3, size_t a4) { return std::wstring::insert(this, (a2 - (int)*this) >> 1, a3, a4); } //----- (00486610) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, size_t a3, __int16 a4) { return std::wstring::_M_replace_aux(this, (a2 - (int)*this) >> 1, 0, a3, a4); } //----- (00486650) -------------------------------------------------------- char *__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t a3) { int v4; // esi const wchar_t *v5; // eax v4 = a2 - (_DWORD)*this; std::wstring::_M_replace_aux(this, v4 >> 1, 0, 1u, a3); v5 = *this; *((_DWORD *)v5 - 1) = -1; return (char *)v5 + v4; } //----- (004866A0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *String) { size_t v4; // eax v4 = wcslen(String); return std::wstring::insert(this, a2, String, v4); } //----- (004866E0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, wchar_t *a3, size_t N) { const wchar_t *v4; // edx unsigned int v5; // esi char *v7; // ebp _DWORD *v8; // ecx const wchar_t *S2; // eax wchar_t *S1; // esi const wchar_t *v11; // edx int v12; // edx int v13; // ebp size_t v14; // ebx const wchar_t *v15; // edi wchar_t *v16; // edx int v18; // [esp+18h] [ebp-24h] _DWORD *v19; // [esp+18h] [ebp-24h] _DWORD *v20; // [esp+18h] [ebp-24h] int v21; // [esp+18h] [ebp-24h] _DWORD *v22; // [esp+18h] [ebp-24h] _DWORD *v23; // [esp+1Ch] [ebp-20h] v4 = *this; v5 = *((_DWORD *)*this - 3); if ( a2 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", a2, *((_DWORD *)*this - 3)); if ( N > 536870910 - v5 ) std::__throw_length_error((std::length_error *)"basic_string::insert"); if ( v4 > a3 || a3 > &v4[v5] || *((int *)v4 - 1) > 0 ) return std::wstring::_M_replace_safe(this, a2, 0, a3, N); v7 = (char *)((char *)a3 - (char *)*this); std::wstring::_M_mutate(this, a2, 0, N); v8 = this; v18 = 2 * a2; S2 = (const wchar_t *)&v7[*v8]; S1 = (wchar_t *)(2 * a2 + *v8); v11 = &S2[N]; if ( v11 > S1 ) { if ( S2 < S1 ) { v12 = v18 - (_DWORD)v7; v13 = (v18 - (int)v7) >> 1; if ( v13 == 1 ) { *S1 = *S2; } else if ( v13 ) { v23 = v8; v21 = v12; wmemcpy(S1, S2, v13); v8 = v23; v12 = v21; } v14 = N - v13; v15 = &S1[N]; v16 = (wchar_t *)((char *)S1 + v12); if ( N - v13 != 1 ) { if ( v14 ) { v22 = v8; wmemcpy(v16, v15, v14); return (const wchar_t **)v22; } return (const wchar_t **)v8; } *v16 = *v15; return (const wchar_t **)v8; } else { if ( N != 1 ) { if ( N ) { v20 = v8; wmemcpy(S1, &S2[N], N); return (const wchar_t **)v20; } return (const wchar_t **)v8; } *S1 = *v11; return (const wchar_t **)v8; } } else { if ( N != 1 ) { if ( N ) { v19 = v8; wmemcpy(S1, S2, N); return (const wchar_t **)v19; } return (const wchar_t **)v8; } *S1 = *S2; return (const wchar_t **)v8; } } //----- (004868B0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t **a3) { return std::wstring::insert(this, a2, *a3, *((_DWORD *)*a3 - 3)); } //----- (004868E0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, _DWORD *a3, unsigned int a4, size_t a5) { size_t v5; // edx v5 = *(_DWORD *)(*a3 - 12) - a4; if ( v5 > a5 ) v5 = a5; if ( a4 > *(_DWORD *)(*a3 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", a4, *(_DWORD *)(*a3 - 12)); return std::wstring::insert(this, a2, (wchar_t *)(*a3 + 2 * a4), v5); } //----- (00486950) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, size_t a3, __int16 a4) { if ( a2 > *((_DWORD *)*this - 3) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", a2, *((_DWORD *)*this - 3)); return std::wstring::_M_replace_aux(this, a2, 0, a3, a4); } //----- (004869B0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, const wchar_t **a2) { _DWORD *result; // eax const wchar_t *v3; // edx result = this; v3 = *a2; if ( *((int *)*a2 - 1) >= 0 ) { std::wstring::_M_leak_hard(a2); v3 = *a2; result = this; } *result = &v3[*((_DWORD *)v3 - 3)]; return result; } //----- (004869F0) -------------------------------------------------------- void __thiscall std::wstring::resize(void **this, size_t a2) { std::wstring::resize(this, a2, 0); } //----- (00486A10) -------------------------------------------------------- void __thiscall std::wstring::resize(void **this, size_t a2, wchar_t a3) { unsigned int v3; // edx v3 = *((_DWORD *)*this - 3); if ( a2 > 0x1FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::resize"); if ( a2 > v3 ) { std::wstring::append(this, a2 - v3, a3); } else if ( a2 < v3 ) { std::wstring::_M_mutate((const wchar_t **)this, a2, v3 - a2, 0); } } //----- (00486A90) -------------------------------------------------------- size_t __cdecl std::wstring::_M_copy(wchar_t *S1, const wchar_t *S2, size_t N) { size_t result; // eax result = N; if ( N == 1 ) { result = *S2; *S1 = result; } else if ( N ) { return (size_t)wmemcpy(S1, S2, N); } return result; } //----- (00486AC0) -------------------------------------------------------- int __thiscall std::wstring::_M_data(_DWORD *this, int a2) { int result; // eax result = a2; *this = a2; return result; } //----- (00486AD0) -------------------------------------------------------- const wchar_t *__fastcall std::wstring::_M_leak(const wchar_t **a1) { const wchar_t *result; // eax result = (const wchar_t *)*((_DWORD *)*a1 - 1); if ( (int)result >= 0 ) return std::wstring::_M_leak_hard(a1); return result; } //----- (00486AF0) -------------------------------------------------------- size_t __cdecl std::wstring::_M_move(wchar_t *S1, const wchar_t *S2, size_t N) { size_t result; // eax result = N; if ( N == 1 ) { result = *S2; *S1 = result; } else if ( N ) { return (size_t)wmemmove(S1, S2, N); } return result; } //----- (00486B20) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); } //----- (00486B50) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String) { size_t N; // eax N = wcslen(String); return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, String, N); } //----- (00486BA0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); } //----- (00486BD0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t a5) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, a5); } //----- (00486BF0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, *a4, *((_DWORD *)*a4 - 3)); } //----- (00486C30) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); } //----- (00486C60) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); } //----- (00486C90) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(2 * N) >> 1); } //----- (00486CC0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, size_t a4, wchar_t a5) { return std::wstring::_M_replace_aux(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, a5); } //----- (00486CF0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String) { size_t N; // eax N = wcslen(String); return std::wstring::replace(this, a2, a3, String, N); } //----- (00486D30) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace( const wchar_t **this, unsigned int a2, unsigned int a3, wchar_t *a4, size_t N) { const wchar_t *v5; // edi unsigned int v6; // eax int v7; // ebx const wchar_t **v8; // ecx unsigned int v10; // edx const wchar_t *v11; // eax int v12; // edi wchar_t *v13; // esi wchar_t *v14; // edi int v15; // edx wchar_t *v18; // [esp+1Ch] [ebp-2Ch] v5 = *this; v6 = *((_DWORD *)*this - 3); if ( a2 > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, *((_DWORD *)v5 - 3)); v7 = v6 - a2; if ( v6 - a2 > a3 ) v7 = a3; if ( v7 - v6 + 536870910 < N ) std::__throw_length_error((std::length_error *)"basic_string::replace"); if ( v5 > a4 || a4 > &v5[v6] || *((int *)v5 - 1) > 0 ) return std::wstring::_M_replace_safe(this, a2, v7, a4, N); v10 = (unsigned int)&a4[N]; v11 = *this; if ( v10 <= (unsigned int)&(*this)[a2] ) { v12 = a4 - v11; LABEL_13: std::wstring::_M_mutate(this, a2, v7, N); v8 = this; v13 = (wchar_t *)&(*this)[a2]; if ( N == 1 ) { *v13 = (*this)[v12]; } else if ( N ) { wmemcpy(v13, &(*this)[v12], N); return this; } return v8; } if ( a4 >= &v11[a2 + v7] ) { v12 = a4 - v11 + N - v7; goto LABEL_13; } v14 = (wchar_t *)std::wstring::_S_construct(a4, v10); v8 = std::wstring::_M_replace_safe(this, a2, v7, v14, N); if ( v14 != (wchar_t *)&unk_4E93EC ) { if ( _CRT_MT ) { v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v14 - 1, 0xFFFFFFFF); } else { v15 = *((_DWORD *)v14 - 1); *((_DWORD *)v14 - 1) = v15 - 1; } if ( v15 <= 0 ) { v18 = (wchar_t *)v8; operator delete(v14 - 6); return (const wchar_t **)v18; } } return v8; } // 15412D0: using guessed type int _CRT_MT; //----- (00486F30) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4) { return std::wstring::replace(this, a2, a3, *a4, *((_DWORD *)*a4 - 3)); } //----- (00486F70) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace( const wchar_t **this, int a2, int a3, _DWORD *a4, unsigned int a5, size_t a6) { size_t N; // edx N = *(_DWORD *)(*a4 - 12) - a5; if ( N > a6 ) N = a6; if ( a5 > *(_DWORD *)(*a4 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a5, *(_DWORD *)(*a4 - 12)); return std::wstring::replace(this, a2, a3, (wchar_t *)(*a4 + 2 * a5), N); } //----- (00486FE0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::replace( const wchar_t **this, unsigned int a2, unsigned int a3, size_t a4, wchar_t a5) { unsigned int v5; // edx v5 = *((_DWORD *)*this - 3) - a2; if ( v5 > a3 ) v5 = a3; if ( a2 > *((_DWORD *)*this - 3) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, *((_DWORD *)*this - 3)); return std::wstring::_M_replace_aux(this, a2, v5, a4, a5); } //----- (00487050) -------------------------------------------------------- char *__thiscall std::wstring::reserve(void **this, char *a2) { int *v3; // ecx char *result; // eax char *v5; // edx int v6; // ecx int *v7; // edx char *v8; // ecx int v9; // esi char *v10; // [esp+1Ch] [ebp-20h] char v11[13]; // [esp+2Fh] [ebp-Dh] BYREF v3 = (int *)*this; result = a2; if ( a2 == (char *)*(v3 - 2) ) { if ( *(v3 - 1) <= 0 ) return result; v3 = (int *)*this; } v5 = (char *)*(v3 - 3); v6 = (int)(v3 - 3); if ( a2 < v5 ) result = v5; result = (char *)std::wstring::_Rep::_M_clone(v6, (int)v11, result - v5); v7 = (int *)*this; v8 = (char *)*this - 12; if ( *this != &unk_4E93EC ) { if ( _CRT_MT ) { v9 = _InterlockedExchangeAdd(v7 - 1, 0xFFFFFFFF); } else { v9 = *(v7 - 1); *(v7 - 1) = v9 - 1; } if ( v9 <= 0 ) { v10 = result; operator delete(v8); result = v10; } } *this = result; return result; } // 15412D0: using guessed type int _CRT_MT; // 487050: using guessed type char var_D[13]; //----- (00487100) -------------------------------------------------------- void __fastcall std::wstring::pop_back(const wchar_t **a1) { unsigned int v1; // eax v1 = *((_DWORD *)*a1 - 3); if ( v1 - 1 > v1 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", 0xFFFFFFFF, 0); std::wstring::_M_mutate(a1, v1 - 1, 1, 0); } //----- (00487160) -------------------------------------------------------- wchar_t *__cdecl std::wstring::_M_assign(wchar_t *a1, size_t C, size_t N) { wchar_t *result; // eax result = (wchar_t *)C; if ( C == 1 ) { *a1 = N; } else if ( C ) { return wmemset(a1, N, C); } return result; } // 487160: using guessed type size_t C; //----- (004871A0) -------------------------------------------------------- void __thiscall std::wstring::_M_mutate(const wchar_t **this, size_t a2, int a3, int a4) { int v5; // esi unsigned int v6; // edi size_t N; // esi const wchar_t *v8; // eax size_t v9; // edx const wchar_t *v10; // edi const wchar_t *v11; // ebp const wchar_t *v12; // eax const wchar_t *S2; // ecx const wchar_t *v14; // eax int v15; // ecx unsigned int v16; // [esp+18h] [ebp-34h] v5 = *((_DWORD *)*this - 3); v6 = *((_DWORD *)*this - 2); v16 = a4 - a3 + v5; N = v5 - (a3 + a2); if ( v16 > v6 ) { LABEL_4: v8 = (const wchar_t *)std::wstring::_Rep::_S_create(v16, v6); v9 = a3 + a2; v10 = v8; if ( a2 ) { v12 = *this; v11 = v10 + 6; if ( a2 == 1 ) { *((_WORD *)v10 + 6) = *v12; } else { wmemcpy((wchar_t *)v10 + 6, *this, a2); v12 = *this; v9 = a3 + a2; } } else { v11 = v8 + 6; v12 = *this; } if ( N ) { S2 = &v12[v9]; if ( N == 1 ) { v10[a2 + 6 + a4] = *S2; } else { wmemcpy((wchar_t *)&v10[a2 + 6 + a4], S2, N); v12 = *this; } } if ( v12 != (const wchar_t *)&unk_4E93EC ) { if ( _CRT_MT ) { v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v12 - 1, 0xFFFFFFFF); } else { v15 = *((_DWORD *)v12 - 1); *((_DWORD *)v12 - 1) = v15 - 1; } if ( v15 <= 0 ) operator delete((void *)(v12 - 6)); } *this = v11; LABEL_11: if ( v10 == (const wchar_t *)&std::wstring::_Rep::_S_empty_rep_storage ) return; LABEL_20: *((_DWORD *)v11 - 1) = 0; *((_DWORD *)v11 - 3) = v16; v11[v16] = 0; return; } if ( *((int *)*this - 1) > 0 ) { v6 = *((_DWORD *)*this - 2); goto LABEL_4; } v11 = *this; if ( N && a4 != a3 ) { v14 = &v11[a3 + a2]; if ( N == 1 ) { v10 = v11 - 6; v11[a2 + a4] = *v14; goto LABEL_11; } wmemmove((wchar_t *)&v11[a2 + a4], v14, N); v11 = *this; } if ( v11 - 6 != (const wchar_t *)&std::wstring::_Rep::_S_empty_rep_storage ) goto LABEL_20; } // 15412D0: using guessed type int _CRT_MT; //----- (00487370) -------------------------------------------------------- _WORD *__thiscall std::wstring::push_back(void **this, __int16 a2) { int v3; // edx int v4; // esi _WORD *result; // eax v3 = *((_DWORD *)*this - 3); v4 = v3 + 1; if ( (unsigned int)(v3 + 1) > *((_DWORD *)*this - 2) || *((int *)*this - 1) > 0 ) std::wstring::reserve(this, (char *)(v3 + 1)); result = *this; result[*((_DWORD *)*this - 3)] = a2; if ( result != (_WORD *)&unk_4E93EC ) { *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = v4; result[v4] = 0; } return result; } //----- (004873E0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_4E93EC; return result; } //----- (00487400) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_4E93EC; return result; } //----- (00487420) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) { int v3; // eax _DWORD *result; // eax v3 = -2; if ( String ) v3 = (int)&String[wcslen(String)]; result = std::wstring::_S_construct(String, v3); *this = result; return result; } //----- (00487470) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (004874B0) -------------------------------------------------------- void __thiscall std::wstring::basic_string(_DWORD *this, int a2) { *this = &unk_4E93EC; } //----- (004874C0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax void *v4; // ecx char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF result = (_DWORD *)*a2; v4 = (void *)(*a2 - 12); if ( *(int *)(*a2 - 4) < 0 ) { result = std::wstring::_Rep::_M_clone((int)v4, (int)v5, 0); *this = result; } else { if ( v4 != &std::wstring::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); } *this = result; } return result; } // 15412D0: using guessed type int _CRT_MT; // 4874C0: using guessed type char var_D[13]; //----- (00487540) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax void *v5; // ecx result = (_DWORD *)*a2; v5 = (void *)(*a2 - 12); if ( *(int *)(*a2 - 4) < 0 ) { result = std::wstring::_Rep::_M_clone((int)v5, a3, 0); *this = result; } else { if ( v5 != &std::wstring::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); } *this = result; } return result; } // 15412D0: using guessed type int _CRT_MT; //----- (004875C0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v5; // edx _DWORD *result; // eax v5 = *(_DWORD *)(*a2 - 12); if ( a3 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *(_DWORD *)(*a2 - 12)); result = std::wstring::_S_construct((const wchar_t *)(*a2 + 2 * a3), *a2 + 2 * v5); *this = result; return result; } //----- (00487620) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) { int v5; // ecx unsigned int v6; // eax int v7; // eax _DWORD *result; // eax v5 = *a2; v6 = *(_DWORD *)(*a2 - 12) - a3; if ( v6 > a4 ) v6 = a4; v7 = v5 + 2 * (a3 + v6); if ( a3 > *(_DWORD *)(*a2 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *(_DWORD *)(*a2 - 12)); result = std::wstring::_S_construct((const wchar_t *)(v5 + 2 * a3), v7); *this = result; return result; } //----- (00487690) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) { int v6; // ecx unsigned int v7; // eax int v8; // eax _DWORD *result; // eax v6 = *a2; v7 = *(_DWORD *)(*a2 - 12) - a3; if ( v7 > a4 ) v7 = a4; v8 = v6 + 2 * (a3 + v7); if ( a3 > *(_DWORD *)(*a2 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *(_DWORD *)(*a2 - 12)); result = std::wstring::_S_construct((const wchar_t *)(v6 + 2 * a3), v8); *this = result; return result; } //----- (00487700) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (00487740) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4) { _DWORD *result; // eax result = &unk_4E93EC; if ( a2 ) { result = std::wstring::_S_construct(a2, a3); *this = result; } else { *this = &unk_4E93EC; } return result; } //----- (00487780) -------------------------------------------------------- void __fastcall std::wstring::basic_string(_DWORD *a1) { *a1 = &unk_4E93EC; } //----- (00487790) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( wchar_t **this, wchar_t *a2, wchar_t *a3, int a4) { wchar_t *result; // eax result = std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); *this = result; return result; } //----- (004877C0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, a3); *this = result; return result; } //----- (004877F0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, a3); *this = result; return result; } //----- (00487820) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_4E93EC; return result; } //----- (00487840) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_4E93EC; return result; } //----- (00487860) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) { int v3; // eax _DWORD *result; // eax v3 = -2; if ( String ) v3 = (int)&String[wcslen(String)]; result = std::wstring::_S_construct(String, v3); *this = result; return result; } //----- (004878B0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (004878F0) -------------------------------------------------------- void __thiscall std::wstring::basic_string(_DWORD *this, int a2) { *this = &unk_4E93EC; } //----- (00487900) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax void *v4; // ecx char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF result = (_DWORD *)*a2; v4 = (void *)(*a2 - 12); if ( *(int *)(*a2 - 4) < 0 ) { result = std::wstring::_Rep::_M_clone((int)v4, (int)v5, 0); *this = result; } else { if ( v4 != &std::wstring::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); } *this = result; } return result; } // 15412D0: using guessed type int _CRT_MT; // 487900: using guessed type char var_D[13]; //----- (00487980) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax void *v5; // ecx result = (_DWORD *)*a2; v5 = (void *)(*a2 - 12); if ( *(int *)(*a2 - 4) < 0 ) { result = std::wstring::_Rep::_M_clone((int)v5, a3, 0); *this = result; } else { if ( v5 != &std::wstring::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); } *this = result; } return result; } // 15412D0: using guessed type int _CRT_MT; //----- (00487A00) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v5; // edx _DWORD *result; // eax v5 = *(_DWORD *)(*a2 - 12); if ( a3 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *(_DWORD *)(*a2 - 12)); result = std::wstring::_S_construct((const wchar_t *)(*a2 + 2 * a3), *a2 + 2 * v5); *this = result; return result; } //----- (00487A60) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) { int v5; // ecx unsigned int v6; // eax int v7; // eax _DWORD *result; // eax v5 = *a2; v6 = *(_DWORD *)(*a2 - 12) - a3; if ( v6 > a4 ) v6 = a4; v7 = v5 + 2 * (a3 + v6); if ( a3 > *(_DWORD *)(*a2 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *(_DWORD *)(*a2 - 12)); result = std::wstring::_S_construct((const wchar_t *)(v5 + 2 * a3), v7); *this = result; return result; } //----- (00487AD0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) { int v6; // ecx unsigned int v7; // eax int v8; // eax _DWORD *result; // eax v6 = *a2; v7 = *(_DWORD *)(*a2 - 12) - a3; if ( v7 > a4 ) v7 = a4; v8 = v6 + 2 * (a3 + v7); if ( a3 > *(_DWORD *)(*a2 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *(_DWORD *)(*a2 - 12)); result = std::wstring::_S_construct((const wchar_t *)(v6 + 2 * a3), v8); *this = result; return result; } //----- (00487B40) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (00487B80) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4) { _DWORD *result; // eax result = &unk_4E93EC; if ( a2 ) { result = std::wstring::_S_construct(a2, a3); *this = result; } else { *this = &unk_4E93EC; } return result; } //----- (00487BC0) -------------------------------------------------------- void __fastcall std::wstring::basic_string(_DWORD *a1) { *a1 = &unk_4E93EC; } //----- (00487BD0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( wchar_t **this, wchar_t *a2, wchar_t *a3, int a4) { wchar_t *result; // eax result = std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); *this = result; return result; } //----- (00487C00) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, a3); *this = result; return result; } //----- (00487C30) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, a3); *this = result; return result; } //----- (00487C60) -------------------------------------------------------- void __fastcall std::wstring::~wstring(volatile signed __int32 **a1) { volatile signed __int32 *v1; // eax int v2; // ecx v1 = *a1; if ( *a1 != (volatile signed __int32 *)&unk_4E93EC ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 - 1); *((_DWORD *)v1 - 1) = v2 - 1; } if ( v2 <= 0 ) operator delete((void *)(v1 - 3)); } } // 15412D0: using guessed type int _CRT_MT; //----- (00487CC0) -------------------------------------------------------- void __fastcall std::wstring::~wstring(volatile signed __int32 **a1) { volatile signed __int32 *v1; // eax int v2; // ecx v1 = *a1; if ( *a1 != (volatile signed __int32 *)&unk_4E93EC ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 - 1); *((_DWORD *)v1 - 1) = v2 - 1; } if ( v2 <= 0 ) operator delete((void *)(v1 - 3)); } } // 15412D0: using guessed type int _CRT_MT; //----- (00487D20) -------------------------------------------------------- int __thiscall std::wstring::operator=(int *this, int *a2) { int v2; // ecx std::wstring::swap(this, a2); return v2; } // 487D32: variable 'v2' is possibly undefined //----- (00487D40) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *String) { size_t v3; // eax v3 = wcslen(String); return std::wstring::assign(this, String, v3); } //----- (00487D80) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *a2, size_t a3) { std::wstring::assign(this, a2, a3); return this; } //----- (00487DB0) -------------------------------------------------------- const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t a2) { std::wstring::_M_replace_aux(this, 0, *((_DWORD *)*this - 3), 1u, a2); return this; } //----- (00487DF0) -------------------------------------------------------- const wchar_t *__thiscall std::wstring::operator[](const wchar_t **this, int a2) { const wchar_t *v2; // eax v2 = *this; if ( *((int *)*this - 1) >= 0 ) { std::wstring::_M_leak_hard(this); v2 = *this; } return &v2[a2]; } //----- (00487E20) -------------------------------------------------------- void **__thiscall std::wstring::operator+=(void **this, wchar_t *String) { size_t v3; // eax v3 = wcslen(String); return std::wstring::append(this, String, v3); } //----- (00487E70) -------------------------------------------------------- void **__thiscall std::wstring::operator+=(void **this, __int16 a2) { int v3; // edx int v4; // esi _WORD *v5; // eax v3 = *((_DWORD *)*this - 3); v4 = v3 + 1; if ( (unsigned int)(v3 + 1) > *((_DWORD *)*this - 2) || *((int *)*this - 1) > 0 ) std::wstring::reserve(this, (char *)(v3 + 1)); v5 = *this; v5[*((_DWORD *)*this - 3)] = a2; if ( v5 != (_WORD *)&unk_4E93EC ) { *((_DWORD *)v5 - 1) = 0; *((_DWORD *)v5 - 3) = v4; v5[v4] = 0; } return this; } //----- (00487EE0) -------------------------------------------------------- int __userpurge std::iostream::swap@(_DWORD *a1@, std::iostream *this, std::iostream *a3) { int v4; // esi std::ios_base *v5; // ebx int v6; // eax char v7; // dl char v8; // dl int result; // eax std::ios_base *v10; // [esp+4h] [ebp-28h] v4 = (int)a1 + *(_DWORD *)(*a1 - 12); v5 = (std::iostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); std::ios_base::_M_swap(v4, v5, v10); std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); std::ios::_M_cache_locale(v5, (int)v5 + 108); v6 = *(_DWORD *)(v4 + 112); *(_DWORD *)(v4 + 112) = *((_DWORD *)v5 + 28); *((_DWORD *)v5 + 28) = v6; v7 = *(_BYTE *)(v4 + 116); *(_BYTE *)(v4 + 116) = *((_BYTE *)v5 + 116); LOBYTE(v6) = *((_BYTE *)v5 + 117); *((_BYTE *)v5 + 116) = v7; v8 = *(_BYTE *)(v4 + 117); *(_BYTE *)(v4 + 117) = v6; result = a1[1]; *((_BYTE *)v5 + 117) = v8; a1[1] = *((_DWORD *)this + 1); *((_DWORD *)this + 1) = result; return result; } // 487F01: variable 'v10' is possibly undefined //----- (00487F70) -------------------------------------------------------- int __thiscall std::iostream::iostream(_DWORD *this, int *a2) { int v3; // eax int v4; // eax int v5; // edi std::ios_base *v6; // edi int v7; // eax int result; // eax std::ios_base *v9; // [esp+4h] [ebp-34h] _DWORD *v10; // [esp+1Ch] [ebp-1Ch] v10 = this + 3; std::ios_base::ios_base(this + 3); *this = &unk_4F0F40; *((_WORD *)this + 64) = 0; v3 = a2[1]; this[31] = 0; this[1] = v3; v4 = *a2; this[33] = 0; v5 = *(_DWORD *)(v4 - 12); this[34] = 0; this[35] = 0; v6 = (std::ios_base *)((char *)a2 + v5); this[3] = &unk_4F0F54; this[36] = 0; std::ios_base::_M_move((int)v10, v6, v9); std::ios::_M_cache_locale(v10, (int)(this + 30)); this[33] = 0; v7 = *((_DWORD *)v6 + 28); *((_DWORD *)v6 + 28) = 0; this[31] = v7; result = *((unsigned __int16 *)v6 + 58); *((_WORD *)this + 64) = result; a2[1] = 0; *this = &off_4F5DF4; this[3] = off_4F5E1C; this[2] = off_4F5E08; return result; } // 487FE3: variable 'v9' is possibly undefined // 4F5DF4: using guessed type void (__cdecl *off_4F5DF4)(std::iostream *__hidden this); // 4F5E08: using guessed type void (__cdecl *off_4F5E08[2])(std::iostream *__hidden this); // 4F5E1C: using guessed type void (__cdecl *off_4F5E1C[2])(std::iostream *__hidden this); //----- (00488060) -------------------------------------------------------- BOOL __thiscall std::iostream::iostream(_DWORD *this, int a2) { int v2; // esi BOOL result; // eax v2 = (int)(this + 3); std::ios_base::ios_base(this + 3); this[31] = 0; *((_WORD *)this + 64) = 0; this[33] = 0; this[34] = 0; this[35] = 0; this[36] = 0; *this = &unk_4F0F40; this[3] = &unk_4F0F54; this[1] = 0; std::ios::init(v2, a2); this[2] = &unk_4F0F68; this[3] = &unk_4F0F7C; result = std::ios::init(v2, a2); *this = &off_4F5DF4; this[3] = off_4F5E1C; this[2] = off_4F5E08; return result; } // 4F5DF4: using guessed type void (__cdecl *off_4F5DF4)(std::iostream *__hidden this); // 4F5E08: using guessed type void (__cdecl *off_4F5E08[2])(std::iostream *__hidden this); // 4F5E1C: using guessed type void (__cdecl *off_4F5E1C[2])(std::iostream *__hidden this); //----- (00488140) -------------------------------------------------------- BOOL __fastcall std::iostream::iostream(int a1) { int v1; // esi BOOL result; // eax v1 = a1 + 12; std::ios_base::ios_base((_DWORD *)(a1 + 12)); *(_DWORD *)(a1 + 124) = 0; *(_WORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; *(_DWORD *)(a1 + 136) = 0; *(_DWORD *)(a1 + 140) = 0; *(_DWORD *)(a1 + 144) = 0; *(_DWORD *)a1 = &unk_4F0F40; *(_DWORD *)(a1 + 12) = &unk_4F0F54; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_4F0F68; *(_DWORD *)(a1 + 12) = &unk_4F0F7C; result = std::ios::init(v1, 0); *(_DWORD *)a1 = &off_4F5DF4; *(_DWORD *)(a1 + 12) = off_4F5E1C; *(_DWORD *)(a1 + 8) = off_4F5E08; return result; } // 4F5DF4: using guessed type void (__cdecl *off_4F5DF4)(std::iostream *__hidden this); // 4F5E08: using guessed type void (__cdecl *off_4F5E08[2])(std::iostream *__hidden this); // 4F5E1C: using guessed type void (__cdecl *off_4F5E1C[2])(std::iostream *__hidden this); //----- (00488220) -------------------------------------------------------- int __thiscall std::iostream::iostream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // edi int v6; // edx __int16 v7; // ax int v8; // eax int v9; // edx int v10; // eax int v11; // edx int result; // eax std::ios_base *v13; // [esp+4h] [ebp-38h] std::ios_base *v14; // [esp+1Ch] [ebp-20h] v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = a3[1]; v5 = (int)this + *(_DWORD *)(v4 - 12); v14 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v5, v14, v13); std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); *(_DWORD *)(v5 + 120) = 0; v6 = *((_DWORD *)v14 + 28); *((_DWORD *)v14 + 28) = 0; v7 = *((_WORD *)v14 + 58); *(_DWORD *)(v5 + 112) = v6; *(_WORD *)(v5 + 116) = v7; v8 = a2[3]; a3[1] = 0; v9 = a2[4]; this[2] = v8; *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v9; v10 = *a2; v11 = a2[5]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; result = a2[6]; this[2] = result; return result; } // 48825B: variable 'v13' is possibly undefined //----- (004882D0) -------------------------------------------------------- int __thiscall std::iostream::iostream(int *this, int *a2, int a3) { int v4; // eax int v5; // eax _DWORD *v6; // ecx int v7; // eax int v8; // edx int result; // eax v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v4 - 12), a3); v5 = a2[3]; this[2] = v5; v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); *v6 = a2[4]; std::ios::init((int)v6, a3); v7 = *a2; v8 = a2[5]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; result = a2[6]; this[2] = result; return result; } //----- (00488360) -------------------------------------------------------- int __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this) { int v3; // eax int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx int result; // eax v3 = *((_DWORD *)this + 1); *ecx0 = v3; *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12)) = *((_DWORD *)this + 2); ecx0[1] = 0; std::ios::init((int)ecx0 + *(_DWORD *)(v3 - 12), 0); v4 = *((_DWORD *)this + 3); ecx0[2] = v4; v5 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v4 - 12) + 8); *v5 = *((_DWORD *)this + 4); std::ios::init((int)v5, 0); v6 = *(_DWORD *)this; v7 = *((_DWORD *)this + 5); *ecx0 = *(_DWORD *)this; *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v6 - 12)) = v7; result = *((_DWORD *)this + 6); ecx0[2] = result; return result; } //----- (004883F0) -------------------------------------------------------- void __fastcall std::iostream::~iostream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 3; *(v2 - 1) = &unk_4F0F68; *(v2 - 3) = &unk_4F0F40; *(v2 - 2) = 0; *v2 = &off_4F6E10; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (00488430) -------------------------------------------------------- void __fastcall std::iostream::~iostream(int a1) { _DWORD *v1; // ecx *(_DWORD *)(a1 + 8) = &unk_4F0F68; v1 = (_DWORD *)(a1 + 12); *(v1 - 3) = &unk_4F0F40; *(v1 - 2) = 0; *v1 = &off_4F6E10; std::ios_base::~ios_base((int)v1); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (00488460) -------------------------------------------------------- void __thiscall std::iostream::~iostream(_DWORD *ecx0, std::iostream *this) { int v2; // edx int v3; // edx int v4; // edx v2 = *(_DWORD *)this; *ecx0 = *(_DWORD *)this; *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 5); ecx0[2] = *((_DWORD *)this + 6); v3 = *((_DWORD *)this + 3); ecx0[2] = v3; *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12) + 8) = *((_DWORD *)this + 4); v4 = *((_DWORD *)this + 1); *ecx0 = v4; *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v4 - 12)) = *((_DWORD *)this + 2); ecx0[1] = 0; } //----- (004884B0) -------------------------------------------------------- _DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // dl char v7; // dl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v10); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; v8 = this[1]; *((_BYTE *)v4 + 117) = v7; this[1] = a2[1]; a2[1] = v8; return this; } // 4884D1: variable 'v10' is possibly undefined //----- (00488540) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 48))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 488559: variable 'v7' is possibly undefined // 488540: using guessed type int var_1C[7]; //----- (00488670) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 8))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 488689: variable 'v7' is possibly undefined // 488670: using guessed type int var_1C[7]; //----- (004887A0) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 40))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 4887B9: variable 'v7' is possibly undefined // 4887A0: using guessed type int var_1C[7]; //----- (004888D0) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 44))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 4888E9: variable 'v7' is possibly undefined // 4888D0: using guessed type int var_1C[7]; //----- (00488A00) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 36))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 488A19: variable 'v7' is possibly undefined // 488A00: using guessed type int var_1C[7]; //----- (00488B30) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 20))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 488B49: variable 'v7' is possibly undefined // 488B30: using guessed type int var_1C[7]; //----- (00488C60) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 12))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 488C79: variable 'v7' is possibly undefined // 488C60: using guessed type int var_1C[7]; //----- (00488D90) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 24))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 488DA9: variable 'v7' is possibly undefined // 488D90: using guessed type int var_1C[7]; //----- (00488EC0) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 16))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 488ED9: variable 'v7' is possibly undefined // 488EC0: using guessed type int var_1C[7]; //----- (00488FF0) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 28))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 489009: variable 'v7' is possibly undefined // 488FF0: using guessed type int var_1C[7]; //----- (00489120) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+2Bh] [ebp-1Dh] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 32))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, v9, a2); if ( !v9[0] ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); return this; } // 489139: variable 'v7' is possibly undefined // 489120: using guessed type int var_1C[7]; //----- (00489250) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::get@( std::istream::sentry *a1@, std::istream *this, char *a3, int a4) { int v4; // eax _BYTE *v5; // esi unsigned __int8 v7; // al int (__stdcall *v9)(unsigned __int8); // edx char v10; // [esp+Ch] [ebp-10h] v4 = *(_DWORD *)(*(_DWORD *)a1 - 12); v5 = *(_BYTE **)((char *)a1 + v4 + 124); if ( !v5 ) std::__throw_bad_cast(); if ( v5[28] ) { v7 = v5[39]; } else { std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v4 + 124)); v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v5 + 24); v7 = 10; if ( v9 != std::ctype::do_widen ) v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v5, 10); } return std::istream::get(a1, this, a3, v7, v10); } // 489283: variable 'v10' is possibly undefined //----- (004892D0) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::get@( std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5) { _DWORD *v7; // esi unsigned __int8 *v8; // eax int v9; // eax unsigned __int8 *v10; // eax int v11; // edx unsigned int v12; // eax unsigned int v13; // edx bool v15; // [esp+8h] [ebp-34h] char v16[29]; // [esp+1Fh] [ebp-1Dh] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v16, a1, (std::istream *)1, v15); if ( !v16[0] ) goto LABEL_19; v7 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v8 = (unsigned __int8 *)v7[2]; if ( v7[3] <= (unsigned int)v8 ) { v9 = (*(int (__fastcall **)(_DWORD))(*v7 + 36))(*(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120)); v11 = *((_DWORD *)a1 + 1); if ( (int)a3 > v11 + 1 ) { if ( v9 != -1 ) goto LABEL_4; } else { LABEL_18: if ( v9 != -1 ) goto LABEL_19; } if ( (int)a3 <= 0 ) { if ( v11 ) goto LABEL_35; } else { *(_BYTE *)this = 0; if ( *((_DWORD *)a1 + 1) ) { LABEL_35: v11 = 2; goto LABEL_15; } } v11 = 6; goto LABEL_15; } v9 = *v8; if ( (int)a3 <= *((_DWORD *)a1 + 1) + 1 ) goto LABEL_19; LABEL_4: if ( a4 != v9 ) { while ( 1 ) { while ( 1 ) { *(_BYTE *)this = v9; v12 = v7[2]; this = (std::istream *)((char *)this + 1); v13 = v7[3]; ++*((_DWORD *)a1 + 1); if ( v12 < v13 ) { v10 = (unsigned __int8 *)(v12 + 1); v7[2] = v10; } else { if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) goto LABEL_12; v10 = (unsigned __int8 *)v7[2]; v13 = v7[3]; } if ( (unsigned int)v10 >= v13 ) break; v11 = *((_DWORD *)a1 + 1); v9 = *v10; if ( (int)a3 <= v11 + 1 ) goto LABEL_19; if ( a4 == v9 ) { LABEL_26: if ( (int)a3 > 0 ) { *(_BYTE *)this = 0; v11 = *((_DWORD *)a1 + 1); } if ( !v11 ) { LABEL_14: v11 |= 4u; goto LABEL_15; } return a1; } } v9 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); v11 = *((_DWORD *)a1 + 1); if ( v11 + 1 >= (int)a3 ) goto LABEL_18; if ( v9 == -1 ) break; if ( a4 == v9 ) goto LABEL_26; } LABEL_12: if ( (int)a3 > 0 ) { *(_BYTE *)this = 0; v11 = 2; if ( *((_DWORD *)a1 + 1) ) goto LABEL_15; goto LABEL_14; } if ( !*((_DWORD *)a1 + 1) ) { v11 = 6; goto LABEL_15; } goto LABEL_35; } LABEL_19: if ( (int)a3 > 0 ) *(_BYTE *)this = 0; v11 = 4; if ( *((_DWORD *)a1 + 1) ) return a1; LABEL_15: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v11); return a1; } // 4892F7: variable 'v15' is possibly undefined // 4892D0: using guessed type char var_1D[29]; //----- (00489540) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2) { int v2; // eax _BYTE *v3; // esi unsigned __int8 v5; // al int (__stdcall *v7)(unsigned __int8); // edx v2 = *(_DWORD *)(*(_DWORD *)this - 12); v3 = *(_BYTE **)((char *)this + v2 + 124); if ( !v3 ) std::__throw_bad_cast(); if ( v3[28] ) { v5 = v3[39]; } else { std::ctype::_M_widen_init(*(_DWORD *)((char *)this + v2 + 124)); v7 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); v5 = 10; if ( v7 != std::ctype::do_widen ) v5 = ((int (__thiscall *)(_BYTE *, int))v7)(v3, 10); } return std::istream::get(this, a2, v5); } //----- (004895C0) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2, unsigned __int8 a3) { _DWORD *v4; // edi unsigned __int8 *v5; // eax int v6; // eax int v7; // edx _BYTE *v8; // eax unsigned int v9; // eax unsigned int v10; // edx unsigned __int8 *v11; // eax int v12; // eax bool v14; // [esp+8h] [ebp-40h] char v15[25]; // [esp+2Fh] [ebp-19h] BYREF *((_DWORD *)this + 1) = 0; std::istream::sentry::sentry(v15, this, (std::istream *)1, v14); if ( v15[0] ) { v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 120); v5 = (unsigned __int8 *)v4[2]; if ( v4[3] <= (unsigned int)v5 ) { LABEL_14: v6 = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); v7 = (unsigned __int8)v6; if ( v6 == -1 ) { LABEL_15: v12 = *((_DWORD *)this + 1) == 0 ? 6 : 2; goto LABEL_12; } } else { v6 = *v5; v7 = v6; } if ( a3 != v6 ) { do { v8 = (_BYTE *)a2[5]; if ( (unsigned int)v8 >= a2[6] ) { if ( (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v7) == -1 ) break; v9 = v4[2]; v10 = v4[3]; ++*((_DWORD *)this + 1); if ( v9 >= v10 ) { LABEL_18: if ( (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4) == -1 ) goto LABEL_15; v11 = (unsigned __int8 *)v4[2]; v10 = v4[3]; goto LABEL_8; } } else { *v8 = v7; ++a2[5]; v9 = v4[2]; v10 = v4[3]; ++*((_DWORD *)this + 1); if ( v9 >= v10 ) goto LABEL_18; } v11 = (unsigned __int8 *)(v9 + 1); v4[2] = v11; LABEL_8: if ( (unsigned int)v11 >= v10 ) goto LABEL_14; v7 = *v11; } while ( a3 != (unsigned __int8)v7 ); } } if ( !*((_DWORD *)this + 1) ) { v12 = 4; LABEL_12: std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v12); } return this; } // 4895E8: variable 'v14' is possibly undefined // 4895C0: using guessed type char var_19[25]; //----- (00489750) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3) { _DWORD *v4; // ecx char *v5; // eax char v6; // dl int v7; // eax int v9; // eax bool v10; // [esp+8h] [ebp-24h] char v11[13]; // [esp+1Fh] [ebp-Dh] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v11, a1, (std::istream *)1, v10); if ( v11[0] ) { v4 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v5 = (char *)v4[2]; if ( v4[3] <= (unsigned int)v5 ) { v9 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); if ( v9 == -1 ) { v7 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; goto LABEL_7; } v6 = v9; } else { v6 = *v5; v4[2] = v5 + 1; } *((_DWORD *)a1 + 1) = 1; *(_BYTE *)this = v6; } if ( !*((_DWORD *)a1 + 1) ) { v7 = 4; LABEL_7: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v7); } return a1; } // 48976C: variable 'v10' is possibly undefined // 489750: using guessed type char var_D[13]; //----- (00489860) -------------------------------------------------------- int __fastcall std::istream::get(std::istream::sentry *a1) { _DWORD *v2; // ecx unsigned __int8 *v3; // edx int result; // eax int v5; // eax bool v6; // [esp+8h] [ebp-24h] char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v7, a1, (std::istream *)1, v6); if ( v7[0] ) { v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v3 = (unsigned __int8 *)v2[2]; if ( v2[3] > (unsigned int)v3 ) { result = *v3; v2[2] = v3 + 1; LABEL_4: *((_DWORD *)a1 + 1) = 1; return result; } result = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); if ( result != -1 ) goto LABEL_4; v5 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; } else { if ( *((_DWORD *)a1 + 1) ) return -1; v5 = 4; } std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v5); return -1; } // 48987C: variable 'v6' is possibly undefined // 489860: using guessed type char var_D[13]; //----- (00489970) -------------------------------------------------------- int __fastcall std::istream::peek(std::istream::sentry *a1) { _DWORD *v2; // ecx unsigned __int8 *v3; // eax int result; // eax bool v5; // [esp+8h] [ebp-34h] char v6[13]; // [esp+2Fh] [ebp-Dh] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v6, a1, (std::istream *)1, v5); if ( !v6[0] ) return -1; v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v3 = (unsigned __int8 *)v2[2]; if ( v2[3] > (unsigned int)v3 ) return *v3; result = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); if ( result == -1 ) { std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); return -1; } return result; } // 48998C: variable 'v5' is possibly undefined // 489970: using guessed type char var_D[13]; //----- (00489A60) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::read@( std::istream::sentry *a1@, std::istream *this, char *a3, int a4) { char *v5; // eax bool v7; // [esp+8h] [ebp-20h] char v8[5]; // [esp+1Fh] [ebp-9h] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v8, a1, (std::istream *)1, v7); if ( !v8[0] ) return a1; v5 = (char *)(*(int (__stdcall **)(std::istream *, char *))(**(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120) + 32))( this, a3); *((_DWORD *)a1 + 1) = v5; if ( a3 == v5 ) return a1; std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); return a1; } // 489A7E: variable 'v7' is possibly undefined // 489A60: using guessed type char var_9[5]; //----- (00489B50) -------------------------------------------------------- int __userpurge std::istream::swap@(_DWORD *a1@, std::istream *this, std::istream *a3) { int v4; // esi std::ios_base *v5; // ebx int v6; // eax char v7; // dl char v8; // dl int result; // eax std::ios_base *v10; // [esp+4h] [ebp-28h] v4 = (int)a1 + *(_DWORD *)(*a1 - 12); v5 = (std::istream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); std::ios_base::_M_swap(v4, v5, v10); std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); std::ios::_M_cache_locale(v5, (int)v5 + 108); v6 = *(_DWORD *)(v4 + 112); *(_DWORD *)(v4 + 112) = *((_DWORD *)v5 + 28); *((_DWORD *)v5 + 28) = v6; v7 = *(_BYTE *)(v4 + 116); *(_BYTE *)(v4 + 116) = *((_BYTE *)v5 + 116); LOBYTE(v6) = *((_BYTE *)v5 + 117); *((_BYTE *)v5 + 116) = v7; v8 = *(_BYTE *)(v4 + 117); *(_BYTE *)(v4 + 117) = v6; result = a1[1]; *((_BYTE *)v5 + 117) = v8; a1[1] = *((_DWORD *)this + 1); *((_DWORD *)this + 1) = result; return result; } // 489B71: variable 'v10' is possibly undefined //----- (00489BE0) -------------------------------------------------------- int __fastcall std::istream::sync(std::istream::sentry *a1) { int v2; // ecx bool v4; // [esp+8h] [ebp-34h] char v5[13]; // [esp+2Fh] [ebp-Dh] BYREF std::istream::sentry::sentry(v5, a1, (std::istream *)1, v4); if ( !v5[0] ) return -1; v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); if ( !v2 ) return -1; if ( (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) return 0; std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); return -1; } // 489BF5: variable 'v4' is possibly undefined // 489BE0: using guessed type char var_D[13]; //----- (00489CC0) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4, int a5) { char *v6; // edi int *v7; // eax int v8; // edi bool v10; // [esp+8h] [ebp-70h] char v11; // [esp+3Fh] [ebp-39h] BYREF int v12[14]; // [esp+40h] [ebp-38h] BYREF std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) & 0xFFFFFFFD); std::istream::sentry::sentry(&v11, this, (std::istream *)1, v10); if ( v11 ) { v6 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( (v6[20] & 5) == 0 ) { v7 = (int *)*((_DWORD *)v6 + 30); v12[7] = a5; v8 = *v7; v12[4] = a2; v12[6] = a4; v12[5] = a3; (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v12, v7, a2, a3, a4, a5, 8); if ( (v12[0] & v12[1]) == -1 ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 4); } } return this; } // 489D07: variable 'v10' is possibly undefined //----- (00489E10) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4) { char *v5; // edx bool v7; // [esp+8h] [ebp-50h] char v8; // [esp+2Fh] [ebp-29h] BYREF int v9[10]; // [esp+30h] [ebp-28h] BYREF std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) & 0xFFFFFFFD); std::istream::sentry::sentry(&v8, this, (std::istream *)1, v7); if ( v8 ) { v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( (v5[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( v9, *((_DWORD *)v5 + 30), a2, a3, a4, 8); if ( (v9[0] & v9[1]) == -1 ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 4); } } return this; } // 489E45: variable 'v7' is possibly undefined //----- (00489F30) -------------------------------------------------------- _DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this) { char *v3; // edx bool v5; // [esp+8h] [ebp-40h] char v6; // [esp+2Fh] [ebp-19h] BYREF int v7[6]; // [esp+30h] [ebp-18h] BYREF *ecx0 = -1; ecx0[1] = -1; ecx0[2] = 0; std::istream::sentry::sentry(&v6, this, (std::istream *)1, v5); if ( v6 ) { v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( (v3[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( v7, *((_DWORD *)v3 + 30), 0, 0, 1, 8); *ecx0 = v7[0]; ecx0[1] = v7[1]; ecx0[2] = v7[2]; } } return ecx0; } // 489F5F: variable 'v5' is possibly undefined //----- (0048A030) -------------------------------------------------------- std::istream::sentry *__fastcall std::istream::unget(std::istream::sentry *a1) { int v2; // eax _DWORD *v3; // ecx _DWORD *v4; // eax unsigned int v5; // eax bool v7; // [esp+8h] [ebp-20h] char v8[5]; // [esp+1Fh] [ebp-9h] BYREF v2 = *(_DWORD *)a1; *((_DWORD *)a1 + 1) = 0; std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v2 - 12)), *(_DWORD *)((_BYTE *)a1 + *(_DWORD *)(v2 - 12) + 20) & 0xFFFFFFFD); std::istream::sentry::sentry(v8, a1, (std::istream *)1, v7); if ( !v8[0] ) return a1; v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); if ( v3 ) { v5 = v3[2]; if ( v3[1] < v5 ) { v3[2] = v5 - 1; return a1; } if ( (*(int (__stdcall **)(int))(*v3 + 44))(-1) != -1 ) return a1; v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); } std::ios::clear(v4, v4[5] | 1); return a1; } // 48A064: variable 'v7' is possibly undefined // 48A030: using guessed type char var_9[5]; //----- (0048A150) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::ignore@( std::istream::sentry *a1@, std::istream *this, int a3) { _DWORD *v4; // edi unsigned __int8 *v5; // eax int v6; // eax int i; // edx unsigned int v8; // ebp unsigned int v9; // eax int v10; // ecx unsigned __int8 *v11; // eax unsigned __int8 *v13; // eax bool v14; // [esp+8h] [ebp-44h] char v15; // [esp+1Eh] [ebp-2Eh] char v16; // [esp+1Fh] [ebp-2Dh] char v17[29]; // [esp+2Fh] [ebp-1Dh] BYREF if ( this == (std::istream *)1 ) return std::istream::ignore(a1); *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v17, a1, (std::istream *)1, v14); if ( (int)this <= 0 ) return a1; v15 = v17[0]; if ( !v17[0] ) return a1; v4 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v5 = (unsigned __int8 *)v4[2]; if ( (unsigned int)v5 >= v4[3] ) v6 = (*(int (__fastcall **)(_DWORD))(*v4 + 36))(*(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120)); else v6 = *v5; v16 = 0; for ( i = *((_DWORD *)a1 + 1); ; i = 0x80000000 ) { while ( 2 ) { if ( (int)this > i ) { while ( 1 ) { if ( v6 == -1 ) goto LABEL_26; v8 = v4[3]; v9 = v4[2]; v10 = (int)this - i; if ( (int)this - i > (int)(v8 - v9) ) v10 = v4[3] - v9; if ( v10 <= 1 ) break; v11 = (unsigned __int8 *)(v10 + v9); i += v10; v4[2] = v11; *((_DWORD *)a1 + 1) = i; if ( v8 <= (unsigned int)v11 ) goto LABEL_29; v6 = *v11; if ( (int)this <= i ) goto LABEL_14; } *((_DWORD *)a1 + 1) = i + 1; if ( v8 <= v9 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4) == -1 ) { LABEL_26: if ( v16 ) *((_DWORD *)a1 + 1) = 0x7FFFFFFF; goto LABEL_28; } v13 = (unsigned __int8 *)v4[2]; v8 = v4[3]; } else { v13 = (unsigned __int8 *)(v9 + 1); v4[2] = v13; } if ( (unsigned int)v13 < v8 ) { v6 = *v13; i = *((_DWORD *)a1 + 1); continue; } LABEL_29: v6 = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); i = *((_DWORD *)a1 + 1); continue; } break; } LABEL_14: if ( this != (std::istream *)0x7FFFFFFF ) break; if ( v6 == -1 ) goto LABEL_26; *((_DWORD *)a1 + 1) = 0x80000000; v16 = v15; } if ( v16 ) *((_DWORD *)a1 + 1) = 0x7FFFFFFF; if ( v6 != -1 ) return a1; LABEL_28: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); return a1; } // 48A17C: variable 'v14' is possibly undefined // 4DBBF0: using guessed type int __stdcall std::istream::ignore(_DWORD); // 48A150: using guessed type char var_1D[29]; //----- (0048A2F0) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::ignore@( std::istream::sentry *a1@, std::istream *this, int a3, int a4) { unsigned __int8 *v5; // eax int v6; // eax int i; // edi signed int v8; // edx unsigned int v9; // ecx unsigned __int8 *Buf; // ebp _BYTE *v11; // eax int v12; // edx unsigned __int8 *v13; // ebp unsigned int v15; // eax unsigned __int8 *v16; // ebp int Val; // [esp+4h] [ebp-58h] bool MaxCount; // [esp+8h] [ebp-54h] char v19; // [esp+1Eh] [ebp-3Eh] char v20; // [esp+1Fh] [ebp-3Dh] _DWORD *v21; // [esp+20h] [ebp-3Ch] signed int v22; // [esp+24h] [ebp-38h] unsigned int v23; // [esp+28h] [ebp-34h] char v24[29]; // [esp+3Fh] [ebp-1Dh] BYREF if ( a3 == -1 ) return std::istream::ignore(a1, this, Val); *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v24, a1, (std::istream *)1, MaxCount); if ( (int)this <= 0 ) return a1; v20 = v24[0]; if ( !v24[0] ) return a1; v21 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v5 = (unsigned __int8 *)v21[2]; if ( v21[3] <= (unsigned int)v5 ) v6 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); else v6 = *v5; v19 = 0; for ( i = *((_DWORD *)a1 + 1); ; i = 0x80000000 ) { LABEL_7: if ( (int)this > i ) { while ( 1 ) { if ( v6 == -1 ) goto LABEL_34; if ( v6 == a3 ) break; v8 = (signed int)this - i; v9 = v21[3]; Buf = (unsigned __int8 *)v21[2]; if ( (int)this - i > (int)(v9 - (_DWORD)Buf) ) v8 = v21[3] - (_DWORD)Buf; if ( v8 <= 1 ) { *((_DWORD *)a1 + 1) = i + 1; if ( v9 > (unsigned int)Buf ) { v16 = Buf + 1; v21[2] = v16; goto LABEL_39; } if ( (*(int (__fastcall **)(_DWORD *))(*v21 + 40))(v21) != -1 ) { v16 = (unsigned __int8 *)v21[2]; v9 = v21[3]; LABEL_39: if ( v9 > (unsigned int)v16 ) { v6 = *v16; i = *((_DWORD *)a1 + 1); goto LABEL_7; } LABEL_41: v6 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); i = *((_DWORD *)a1 + 1); goto LABEL_7; } goto LABEL_34; } v23 = v21[3]; v22 = v8; v11 = memchr(Buf, (char)a3, v8); v12 = v22; if ( v11 ) v12 = v11 - Buf; v13 = &Buf[v12]; i += v12; v21[2] = v13; *((_DWORD *)a1 + 1) = i; if ( v23 <= (unsigned int)v13 ) goto LABEL_41; v6 = *v13; if ( (int)this <= i ) goto LABEL_17; } if ( this == (std::istream *)0x7FFFFFFF ) { if ( !v19 ) goto LABEL_31; goto LABEL_26; } if ( v19 ) goto LABEL_26; LABEL_29: i = *((_DWORD *)a1 + 1); goto LABEL_30; } LABEL_17: if ( this != (std::istream *)0x7FFFFFFF ) { if ( !v19 ) { LABEL_27: if ( v6 != -1 ) { if ( a3 != v6 ) return a1; goto LABEL_29; } LABEL_36: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); return a1; } LABEL_26: *((_DWORD *)a1 + 1) = 0x7FFFFFFF; goto LABEL_27; } if ( v6 == -1 ) { LABEL_34: if ( v19 ) *((_DWORD *)a1 + 1) = 0x7FFFFFFF; goto LABEL_36; } if ( v6 == a3 ) break; *((_DWORD *)a1 + 1) = 0x80000000; v19 = v20; } if ( v19 ) goto LABEL_26; LABEL_30: if ( i != 0x7FFFFFFF ) LABEL_31: *((_DWORD *)a1 + 1) = i + 1; v15 = v21[2]; if ( v15 >= v21[3] ) { (*(void (__fastcall **)(_DWORD *))(*v21 + 40))(v21); return a1; } v21[2] = v15 + 1; return a1; } // 48A31E: variable 'MaxCount' is possibly undefined // 48A45B: variable 'Val' is possibly undefined // 4DB4B4: using guessed type int __stdcall std::istream::ignore(_DWORD, _DWORD); // 48A2F0: using guessed type char var_1D[29]; //----- (0048A590) -------------------------------------------------------- std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *a1) { _DWORD *v2; // ecx unsigned int v3; // eax bool v5; // [esp+8h] [ebp-24h] char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v6, a1, (std::istream *)1, v5); if ( !v6[0] ) return a1; v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v3 = v2[2]; if ( v2[3] > v3 ) { v2[2] = v3 + 1; LABEL_4: *((_DWORD *)a1 + 1) = 1; return a1; } if ( (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2) != -1 ) goto LABEL_4; std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); return a1; } // 48A5AC: variable 'v5' is possibly undefined // 48A590: using guessed type char var_D[13]; //----- (0048A680) -------------------------------------------------------- int __userpurge std::istream::sentry::sentry@( _BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4) { char *v5; // ecx int result; // eax _DWORD *v7; // edi _BYTE *v8; // eax int v9; // ebp unsigned int v10; // eax unsigned int v11; // edx unsigned __int8 *v12; // eax *a1 = 0; v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); result = *((_DWORD *)v5 + 5); if ( result ) return std::ios::clear(v5, result | 4); if ( *((_DWORD *)v5 + 28) ) { std::ostream::flush(*((_DWORD **)v5 + 28)); v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) goto LABEL_13; } else { result = (int)a3; if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) goto LABEL_17; } v7 = (_DWORD *)*((_DWORD *)v5 + 30); v8 = (_BYTE *)v7[2]; if ( v7[3] <= (unsigned int)v8 ) { v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD))(*v7 + 36))(*((_DWORD *)v5 + 30)); v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v9 = *((_DWORD *)v5 + 31); if ( v9 ) { if ( v8 == (_BYTE *)-1 ) { LABEL_20: result = *((_DWORD *)v5 + 5) | 2; return std::ios::clear(v5, result | 4); } goto LABEL_7; } LABEL_27: std::__throw_bad_cast(); } v9 = *((_DWORD *)v5 + 31); LOBYTE(v8) = *v8; if ( !v9 ) goto LABEL_27; LABEL_7: while ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * (unsigned __int8)v8) & 0x20) != 0 ) { while ( 1 ) { v10 = v7[2]; v11 = v7[3]; if ( v10 >= v11 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) goto LABEL_19; v12 = (unsigned __int8 *)v7[2]; v11 = v7[3]; } else { v12 = (unsigned __int8 *)(v10 + 1); v7[2] = v12; } if ( (unsigned int)v12 >= v11 ) break; if ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * *v12) & 0x20) == 0 ) goto LABEL_12; } v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); if ( v8 == (_BYTE *)-1 ) { LABEL_19: v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); goto LABEL_20; } } LABEL_12: v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); LABEL_13: result = *((_DWORD *)v5 + 5); if ( result ) return std::ios::clear(v5, result | 4); LABEL_17: *a1 = 1; return result; } //----- (0048A840) -------------------------------------------------------- int __userpurge std::istream::sentry::sentry@( _BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4) { char *v5; // ecx int result; // eax _DWORD *v7; // edi _BYTE *v8; // eax int v9; // ebp unsigned int v10; // eax unsigned int v11; // edx unsigned __int8 *v12; // eax *a1 = 0; v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); result = *((_DWORD *)v5 + 5); if ( result ) return std::ios::clear(v5, result | 4); if ( *((_DWORD *)v5 + 28) ) { std::ostream::flush(*((_DWORD **)v5 + 28)); v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) goto LABEL_13; } else { result = (int)a3; if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) goto LABEL_17; } v7 = (_DWORD *)*((_DWORD *)v5 + 30); v8 = (_BYTE *)v7[2]; if ( v7[3] <= (unsigned int)v8 ) { v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD))(*v7 + 36))(*((_DWORD *)v5 + 30)); v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v9 = *((_DWORD *)v5 + 31); if ( v9 ) { if ( v8 == (_BYTE *)-1 ) { LABEL_20: result = *((_DWORD *)v5 + 5) | 2; return std::ios::clear(v5, result | 4); } goto LABEL_7; } LABEL_27: std::__throw_bad_cast(); } v9 = *((_DWORD *)v5 + 31); LOBYTE(v8) = *v8; if ( !v9 ) goto LABEL_27; LABEL_7: while ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * (unsigned __int8)v8) & 0x20) != 0 ) { while ( 1 ) { v10 = v7[2]; v11 = v7[3]; if ( v10 >= v11 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) goto LABEL_19; v12 = (unsigned __int8 *)v7[2]; v11 = v7[3]; } else { v12 = (unsigned __int8 *)(v10 + 1); v7[2] = v12; } if ( (unsigned int)v12 >= v11 ) break; if ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * *v12) & 0x20) == 0 ) goto LABEL_12; } v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); if ( v8 == (_BYTE *)-1 ) { LABEL_19: v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); goto LABEL_20; } } LABEL_12: v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); LABEL_13: result = *((_DWORD *)v5 + 5); if ( result ) return std::ios::clear(v5, result | 4); LABEL_17: *a1 = 1; return result; } //----- (0048AA00) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::getline@( std::istream::sentry *a1@, std::istream *this, char *a3, int a4) { int v4; // eax _BYTE *v5; // esi unsigned __int8 v7; // al int (__stdcall *v9)(unsigned __int8); // edx char v10; // [esp+Ch] [ebp-10h] v4 = *(_DWORD *)(*(_DWORD *)a1 - 12); v5 = *(_BYTE **)((char *)a1 + v4 + 124); if ( !v5 ) std::__throw_bad_cast(); if ( v5[28] ) { v7 = v5[39]; } else { std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v4 + 124)); v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v5 + 24); v7 = 10; if ( v9 != std::ctype::do_widen ) v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v5, 10); } return std::istream::getline(a1, this, a3, v7, v10); } // 48AA33: variable 'v10' is possibly undefined //----- (0048AA80) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::getline@( std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5) { int v6; // eax int v8; // eax _DWORD *v9; // esi unsigned __int8 *Buf; // edi unsigned int v11; // edx int v12; // ebx int v13; // eax unsigned __int8 *v14; // eax unsigned int v15; // edx signed int v16; // ebx unsigned int v17; // eax std::istream *v18; // edi unsigned int v19; // edx unsigned __int8 *v20; // eax int v21; // edx bool MaxCount; // [esp+8h] [ebp-44h] int v23; // [esp+14h] [ebp-38h] unsigned int v24; // [esp+14h] [ebp-38h] char v25[29]; // [esp+2Fh] [ebp-1Dh] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v25, a1, (std::istream *)1, MaxCount); if ( !v25[0] ) { if ( (int)a3 > 0 ) { *(_BYTE *)this = 0; if ( !*((_DWORD *)a1 + 1) ) { LABEL_4: v6 = 4; goto LABEL_5; } return a1; } v23 = *((_DWORD *)a1 + 1); goto LABEL_7; } v8 = *(_DWORD *)(*(_DWORD *)a1 - 12); v9 = *(_DWORD **)((char *)a1 + v8 + 120); Buf = (unsigned __int8 *)v9[2]; v11 = v9[3]; if ( (unsigned int)Buf >= v11 ) { v13 = (*(int (__fastcall **)(_DWORD))(*v9 + 36))(*(_DWORD *)((char *)a1 + v8 + 120)); v12 = *((_DWORD *)a1 + 1); v21 = v12; v23 = v12 + 1; if ( (int)a3 <= v12 + 1 ) { LABEL_50: if ( v13 != -1 ) goto LABEL_25; if ( (int)a3 <= 0 ) { v12 = v21; v6 = 2; goto LABEL_37; } } else { if ( v13 != -1 ) { Buf = (unsigned __int8 *)v9[2]; v11 = v9[3]; LABEL_11: if ( a4 == v13 ) { LABEL_40: *((_DWORD *)a1 + 1) = v23; if ( (unsigned int)Buf >= v11 ) { (*(void (__fastcall **)(_DWORD *))(*v9 + 40))(v9); if ( (int)a3 > 0 ) { *(_BYTE *)this = 0; if ( !*((_DWORD *)a1 + 1) ) goto LABEL_4; return a1; } v23 = *((_DWORD *)a1 + 1); } else { v9[2] = Buf + 1; if ( (int)a3 > 0 ) { *(_BYTE *)this = 0; if ( !*((_DWORD *)a1 + 1) ) goto LABEL_4; return a1; } } LABEL_7: if ( !v23 ) goto LABEL_4; return a1; } while ( 1 ) { v16 = (signed int)&a3[-v12 - 1]; if ( v16 > (int)(v11 - (_DWORD)Buf) ) v16 = v11 - (_DWORD)Buf; if ( v16 > 1 ) { v24 = v11; v14 = (unsigned __int8 *)memchr(Buf, (char)a4, v16); if ( !v14 || (v15 = v24, v16 = v14 - Buf, v14 != Buf) ) { memcpy(this, Buf, v16); v15 = v9[3]; v14 = (unsigned __int8 *)(v16 + v9[2]); } this = (std::istream *)((char *)this + v16); v12 = *((_DWORD *)a1 + 1) + v16; v9[2] = v14; *((_DWORD *)a1 + 1) = v12; if ( v15 > (unsigned int)v14 ) { v13 = *v14; v23 = v12 + 1; if ( (int)a3 <= v12 + 1 ) goto LABEL_25; goto LABEL_17; } v13 = (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9); } else { *(_BYTE *)this = v13; v17 = v9[2]; v18 = (std::istream *)((char *)this + 1); v19 = v9[3]; ++*((_DWORD *)a1 + 1); if ( v17 >= v19 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 40))(v9) == -1 ) goto LABEL_33; v20 = (unsigned __int8 *)v9[2]; v19 = v9[3]; } else { v20 = (unsigned __int8 *)(v17 + 1); v9[2] = v20; } if ( (unsigned int)v20 < v19 ) { v12 = *((_DWORD *)a1 + 1); v13 = *v20; this = (std::istream *)((char *)this + 1); v23 = v12 + 1; if ( (int)a3 <= v12 + 1 ) goto LABEL_25; goto LABEL_17; } v13 = (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9); this = (std::istream *)((char *)this + 1); } v21 = *((_DWORD *)a1 + 1); v12 = v21; v23 = v21 + 1; if ( v21 + 1 >= (int)a3 ) goto LABEL_50; if ( v13 == -1 ) { v18 = this; LABEL_33: if ( (int)a3 > 0 ) *(_BYTE *)v18 = 0; v12 = *((_DWORD *)a1 + 1); v6 = 2; LABEL_37: if ( !v12 ) v6 |= 4u; goto LABEL_5; } LABEL_17: Buf = (unsigned __int8 *)v9[2]; v11 = v9[3]; if ( a4 == v13 ) goto LABEL_40; } } if ( (int)a3 <= 0 ) { v6 = 2; goto LABEL_37; } } *(_BYTE *)this = 0; if ( *((_DWORD *)a1 + 1) ) v6 = 2; else v6 = 6; goto LABEL_5; } v12 = *((_DWORD *)a1 + 1); v13 = *Buf; v23 = v12 + 1; if ( (int)a3 > v12 + 1 ) goto LABEL_11; LABEL_25: if ( a4 == v13 ) { Buf = (unsigned __int8 *)v9[2]; v11 = v9[3]; goto LABEL_40; } if ( (int)a3 <= 0 ) { v12 = *((_DWORD *)a1 + 1); v6 = 4; goto LABEL_37; } *(_BYTE *)this = 0; v6 = 4; LABEL_5: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v6); return a1; } // 48AE01: control flows out of bounds to 4DB428 // 48AAA7: variable 'MaxCount' is possibly undefined // 4DB424: using guessed type int __stdcall std::istream::getline(_DWORD, _DWORD, _DWORD); // 48AA80: using guessed type char var_1D[29]; //----- (0048AE10) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::putback@( std::istream::sentry *a1@, std::istream *this, char a3) { int v4; // eax _DWORD *v5; // ecx _DWORD *v6; // eax unsigned int v7; // eax bool v9; // [esp+8h] [ebp-20h] char v10[9]; // [esp+1Fh] [ebp-9h] BYREF v4 = *(_DWORD *)a1; *((_DWORD *)a1 + 1) = 0; std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v4 - 12)), *(_DWORD *)((_BYTE *)a1 + *(_DWORD *)(v4 - 12) + 20) & 0xFFFFFFFD); std::istream::sentry::sentry(v10, a1, (std::istream *)1, v9); if ( !v10[0] ) return a1; v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); if ( v5 ) { v7 = v5[2]; if ( v5[1] < v7 && (_BYTE)this == *(_BYTE *)(v7 - 1) ) { v5[2] = v7 - 1; return a1; } if ( (*(int (__stdcall **)(_DWORD))(*v5 + 44))((unsigned __int8)this) != -1 ) return a1; v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); } std::ios::clear(v6, v6[5] | 1); return a1; } // 48AE48: variable 'v9' is possibly undefined // 48AE10: using guessed type char var_9[9]; //----- (0048AF40) -------------------------------------------------------- int __userpurge std::istream::readsome@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4) { _DWORD *v5; // ecx char *v6; // eax int result; // eax bool v8; // [esp+8h] [ebp-20h] char v9[5]; // [esp+1Fh] [ebp-9h] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v9, a1, (std::istream *)1, v8); if ( !v9[0] ) return *((_DWORD *)a1 + 1); v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v6 = (char *)(v5[3] - v5[2]); if ( !v6 ) v6 = (char *)(*(int (__fastcall **)(_DWORD *))(*v5 + 28))(v5); if ( (int)v6 <= 0 ) { if ( v6 == (char *)-1 ) std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); return *((_DWORD *)a1 + 1); } if ( (int)v6 > (int)a3 ) v6 = a3; result = (*(int (__stdcall **)(std::istream *, char *))(**(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120) + 32))( this, v6); *((_DWORD *)a1 + 1) = result; return result; } // 48AF5E: variable 'v8' is possibly undefined // 48AF40: using guessed type char var_9[5]; //----- (0048B050) -------------------------------------------------------- int __thiscall std::istream::istream(_DWORD *this, int *a2) { int v3; // eax int v4; // eax int v5; // edi std::ios_base *v6; // edi int v7; // eax int result; // eax std::ios_base *v9; // [esp+4h] [ebp-34h] _DWORD *v10; // [esp+1Ch] [ebp-1Ch] v10 = this + 2; std::ios_base::ios_base(this + 2); *this = &off_4F5E30; *((_WORD *)this + 62) = 0; v3 = a2[1]; this[30] = 0; this[1] = v3; v4 = *a2; this[32] = 0; v5 = *(_DWORD *)(v4 - 12); this[33] = 0; this[34] = 0; v6 = (std::ios_base *)((char *)a2 + v5); this[2] = off_4F5E44; this[35] = 0; std::ios_base::_M_move((int)v10, v6, v9); std::ios::_M_cache_locale(v10, (int)(this + 29)); this[32] = 0; v7 = *((_DWORD *)v6 + 28); *((_DWORD *)v6 + 28) = 0; this[30] = v7; result = *((unsigned __int16 *)v6 + 58); a2[1] = 0; *((_WORD *)this + 62) = result; return result; } // 48B0C0: variable 'v9' is possibly undefined // 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); // 4F5E44: using guessed type void (__cdecl *off_4F5E44[2])(std::istream *__hidden this); //----- (0048B130) -------------------------------------------------------- BOOL __thiscall std::istream::istream(_DWORD *this, int a2) { int v2; // esi v2 = (int)(this + 2); std::ios_base::ios_base(this + 2); this[30] = 0; *((_WORD *)this + 62) = 0; this[32] = 0; this[33] = 0; this[34] = 0; this[35] = 0; *this = &off_4F5E30; this[2] = off_4F5E44; this[1] = 0; return std::ios::init(v2, a2); } // 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); // 4F5E44: using guessed type void (__cdecl *off_4F5E44[2])(std::istream *__hidden this); //----- (0048B1C0) -------------------------------------------------------- BOOL __fastcall std::istream::istream(int a1) { int v1; // esi v1 = a1 + 8; std::ios_base::ios_base((_DWORD *)(a1 + 8)); *(_DWORD *)(a1 + 120) = 0; *(_WORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; *(_DWORD *)(a1 + 136) = 0; *(_DWORD *)(a1 + 140) = 0; *(_DWORD *)a1 = &off_4F5E30; *(_DWORD *)(a1 + 8) = off_4F5E44; *(_DWORD *)(a1 + 4) = 0; return std::ios::init(v1, 0); } // 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); // 4F5E44: using guessed type void (__cdecl *off_4F5E44[2])(std::istream *__hidden this); //----- (0048B250) -------------------------------------------------------- int __thiscall std::istream::istream(int *this, int *a2, _DWORD *a3) { int v3; // eax int v4; // ebx int v5; // edx int v6; // ebx std::ios_base *v7; // esi int v8; // eax int result; // eax std::ios_base *v10; // [esp+4h] [ebp-18h] v3 = *a2; v4 = a2[1]; v5 = *(_DWORD *)(*a2 - 12); *this = *a2; *(int *)((char *)this + v5) = v4; this[1] = a3[1]; v6 = (int)this + *(_DWORD *)(v3 - 12); v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v6, v7, v10); std::ios::_M_cache_locale((_DWORD *)v6, v6 + 108); v8 = *((_DWORD *)v7 + 28); *((_DWORD *)v7 + 28) = 0; *(_DWORD *)(v6 + 112) = v8; *(_BYTE *)(v6 + 116) = *((_BYTE *)v7 + 116); result = *((unsigned __int8 *)v7 + 117); *(_DWORD *)(v6 + 120) = 0; *(_BYTE *)(v6 + 117) = result; a3[1] = 0; return result; } // 48B280: variable 'v10' is possibly undefined //----- (0048B2D0) -------------------------------------------------------- BOOL __thiscall std::istream::istream(int *this, int *a2, int a3) { int v3; // eax int v4; // ebx int v5; // edx v3 = *a2; v4 = a2[1]; v5 = *(_DWORD *)(*a2 - 12); *this = *a2; *(int *)((char *)this + v5) = v4; this[1] = 0; return std::ios::init((int)this + *(_DWORD *)(v3 - 12), a3); } //----- (0048B310) -------------------------------------------------------- BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this) { int v2; // eax int v3; // ebx int v4; // edx v2 = *(_DWORD *)this; v3 = *((_DWORD *)this + 1); v4 = *(_DWORD *)(*(_DWORD *)this - 12); *ecx0 = *(_DWORD *)this; *(_DWORD *)((char *)ecx0 + v4) = v3; ecx0[1] = 0; return std::ios::init((int)ecx0 + *(_DWORD *)(v2 - 12), 0); } //----- (0048B340) -------------------------------------------------------- void __fastcall std::istream::~istream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 2; *(v2 - 2) = &off_4F5E30; *(v2 - 1) = 0; *v2 = &off_4F6E10; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (0048B370) -------------------------------------------------------- void __fastcall std::istream::~istream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_4F5E30; v1 = a1 + 2; *(v1 - 1) = 0; *v1 = &off_4F6E10; std::ios_base::~ios_base((int)v1); } // 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (0048B390) -------------------------------------------------------- void __thiscall std::istream::~istream(_DWORD *ecx0, std::istream *this) { int v2; // eax v2 = *(_DWORD *)this; *ecx0 = *(_DWORD *)this; *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 1); ecx0[1] = 0; } //----- (0048B3B0) -------------------------------------------------------- _DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // dl char v7; // dl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v10); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; v8 = this[1]; *((_BYTE *)v4 + 117) = v7; this[1] = a2[1]; a2[1] = v8; return this; } // 48B3D1: variable 'v10' is possibly undefined //----- (0048B440) -------------------------------------------------------- int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (0048B450) -------------------------------------------------------- char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (0048B470) -------------------------------------------------------- char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (0048B490) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) { char *v3; // ecx int v4; // eax bool v6; // [esp+8h] [ebp-24h] char v7; // [esp+1Eh] [ebp-Eh] BYREF char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF std::istream::sentry::sentry(&v7, this, 0, v6); if ( !v7 ) { if ( !a2 ) { v4 = 4; v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); goto LABEL_9; } return this; } v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( !a2 ) { v4 = 4; goto LABEL_9; } if ( !std::__copy_streambufs_eof>(*((_DWORD **)v3 + 30), a2, v8) ) { v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v4 = v8[0] == 0 ? 4 : 6; goto LABEL_9; } if ( !v8[0] ) return this; v4 = 2; v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); LABEL_9: std::ios::clear(v3, *((_DWORD *)v3 + 5) | v4); return this; } // 48B4AA: variable 'v6' is possibly undefined // 48B490: using guessed type char var_D[13]; //----- (0048B610) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) { int v3; // eax char *v4; // esi int v5; // ecx bool v7; // [esp+8h] [ebp-40h] char v8; // [esp+27h] [ebp-21h] BYREF int v9; // [esp+28h] [ebp-20h] BYREF int v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v7); if ( !v8 ) return this; v3 = *(_DWORD *)this; v9 = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, &v9, v10); *a2 = v10[0]; if ( !v9 ) return this; std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9); return this; } // 48B629: variable 'v7' is possibly undefined // 48B610: using guessed type int var_1C[7]; //----- (0048B770) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *a2) { int v3; // eax char *v4; // esi int v5; // ecx int v6; // eax bool v8; // [esp+8h] [ebp-40h] char v9; // [esp+27h] [ebp-21h] BYREF int v10; // [esp+28h] [ebp-20h] BYREF int v11[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v9, this, 0, v8); if ( !v9 ) return this; v3 = *(_DWORD *)this; v10 = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( *((_DWORD *)v4 + 30), -1, 0, -1, v4, &v10, v11); v6 = v10; if ( v11[0] >= -32768 ) { if ( v11[0] > 0x7FFF ) { v10 |= 4u; v6 = v10; *a2 = 0x7FFF; goto LABEL_9; } *a2 = v11[0]; } else { v6 = v10 | 4; v10 |= 4u; *a2 = 0x8000; } if ( !v6 ) return this; LABEL_9: std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v6); return this; } // 48B83B: conditional instruction was optimized away because eax.4>=4u // 48B789: variable 'v8' is possibly undefined // 48B770: using guessed type int var_1C[7]; //----- (0048B910) -------------------------------------------------------- std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *a1@, std::ostream *this, char a3) { _DWORD *v4; // ecx _BYTE *v5; // eax char *v6; // esi int v7; // ecx std::ostream *v9; // [esp+4h] [ebp-24h] char v10[4]; // [esp+18h] [ebp-10h] BYREF _DWORD *v11; // [esp+1Ch] [ebp-Ch] std::ostream::sentry::sentry((int)v10, a1, v9); if ( v10[0] ) { v4 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v5 = (_BYTE *)v4[5]; if ( (unsigned int)v5 >= v4[6] ) { if ( (*(int (__stdcall **)(_DWORD))(*v4 + 52))((unsigned __int8)this) == -1 ) std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); } else { *v5 = (_BYTE)this; ++v4[5]; } } v6 = (char *)v11 + *(_DWORD *)(*v11 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::ios::clear( (_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12)), *(_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12) + 20) | 1); } } return a1; } // 48B923: variable 'v9' is possibly undefined // 48B910: using guessed type char var_10[4]; //----- (0048BA40) -------------------------------------------------------- int __userpurge std::ostream::swap@(_DWORD *a1@, std::ostream *this, std::ostream *a3) { int v3; // ebx std::ios_base *v4; // esi int v5; // eax char v6; // dl char v7; // dl int result; // eax std::ios_base *v9; // [esp+4h] [ebp-18h] v3 = (int)a1 + *(_DWORD *)(*a1 - 12); v4 = (std::ostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); std::ios_base::_M_swap(v3, v4, v9); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_BYTE *)v4 + 116); *((_DWORD *)v4 + 28) = v5; LOBYTE(v5) = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = v6; v7 = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v5; result = *(unsigned __int8 *)(v3 + 117); *(_BYTE *)(v3 + 117) = v7; *((_BYTE *)v4 + 117) = result; return result; } // 48BA58: variable 'v9' is possibly undefined //----- (0048BAB0) -------------------------------------------------------- _DWORD *__fastcall std::ostream::flush(_DWORD *a1) { int v2; // ecx v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); if ( !v2 || (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) return a1; std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); return a1; } //----- (0048BB60) -------------------------------------------------------- _DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) { char *v6; // eax int *v7; // eax int v8; // edi int v10[14]; // [esp+40h] [ebp-38h] BYREF v6 = (char *)this + *(_DWORD *)(*this - 12); if ( (v6[20] & 5) != 0 ) return this; v7 = (int *)*((_DWORD *)v6 + 30); v10[4] = a2; v10[5] = a3; v10[7] = a5; v8 = *v7; v10[6] = a4; (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v10, v7, a2, a3, a4, a5, 16); if ( (v10[0] & v10[1]) != -1 ) return this; std::ios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); return this; } //----- (0048BC80) -------------------------------------------------------- _DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4) { char *v5; // edx int v7[10]; // [esp+20h] [ebp-28h] BYREF v5 = (char *)this + *(_DWORD *)(*this - 12); if ( (v5[20] & 5) != 0 ) return this; (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( v7, *((_DWORD *)v5 + 30), a2, a3, a4, 16); if ( (v7[0] & v7[1]) != -1 ) return this; std::ios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); return this; } //----- (0048BD70) -------------------------------------------------------- _DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this) { int v3; // eax char *v4; // edx int v6[6]; // [esp+20h] [ebp-18h] BYREF *ecx0 = -1; ecx0[1] = -1; v3 = *(_DWORD *)this; ecx0[2] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); if ( (v4[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v4 + 30) + 16))( v6, *((_DWORD *)v4 + 30), 0, 0, 1, 16); *ecx0 = v6[0]; ecx0[1] = v6[1]; ecx0[2] = v6[2]; } return ecx0; } //----- (0048BE60) -------------------------------------------------------- std::ostream::sentry *__userpurge std::ostream::write@( std::ostream::sentry *a1@, std::ostream *this, const char *a3, int a4) { char *v5; // esi int v6; // ecx std::ostream *v8; // [esp+4h] [ebp-24h] char v9[4]; // [esp+18h] [ebp-10h] BYREF _DWORD *v10; // [esp+1Ch] [ebp-Ch] std::ostream::sentry::sentry((int)v9, a1, v8); if ( v9[0] && a3 != (const char *)(*(int (__stdcall **)(std::ostream *, const char *))(**(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120) + 48))( this, a3) ) { std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); } v5 = (char *)v10 + *(_DWORD *)(*v10 - 12); if ( (v5[13] & 0x20) != 0 && !std::uncaught_exception() ) { v6 = *((_DWORD *)v5 + 30); if ( v6 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6) == -1 ) std::ios::clear( (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); } } return a1; } // 48BE70: variable 'v8' is possibly undefined // 48BE60: using guessed type char var_10[4]; //----- (0048BF90) -------------------------------------------------------- int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3) { int v4; // eax char *v5; // ecx int result; // eax *(_BYTE *)a1 = 0; v4 = *(_DWORD *)this; *(_DWORD *)(a1 + 4) = this; v5 = (char *)this + *(_DWORD *)(v4 - 12); result = *((_DWORD *)v5 + 5); if ( *((_DWORD *)v5 + 28) ) { if ( result ) return std::ios::clear(v5, result | 4); std::ostream::flush(*((_DWORD **)v5 + 28)); result = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20); v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); } if ( result ) return std::ios::clear(v5, result | 4); *(_BYTE *)a1 = 1; return result; } //----- (0048BFF0) -------------------------------------------------------- int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3) { int v4; // eax char *v5; // ecx int result; // eax *(_BYTE *)a1 = 0; v4 = *(_DWORD *)this; *(_DWORD *)(a1 + 4) = this; v5 = (char *)this + *(_DWORD *)(v4 - 12); result = *((_DWORD *)v5 + 5); if ( *((_DWORD *)v5 + 28) ) { if ( result ) return std::ios::clear(v5, result | 4); std::ostream::flush(*((_DWORD **)v5 + 28)); result = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20); v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); } if ( result ) return std::ios::clear(v5, result | 4); *(_BYTE *)a1 = 1; return result; } //----- (0048C050) -------------------------------------------------------- void __fastcall std::ostream::sentry::~sentry(int a1) { int v2; // ebx int v3; // ecx _DWORD *v4; // ecx if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) { v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); if ( !std::uncaught_exception() ) { v3 = *(_DWORD *)(v2 + 120); if ( v3 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) { v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); std::ios::clear(v4, v4[5] | 1); } } } } } //----- (0048C0C0) -------------------------------------------------------- void __fastcall std::ostream::sentry::~sentry(int a1) { int v2; // ebx int v3; // ecx _DWORD *v4; // ecx if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) { v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); if ( !std::uncaught_exception() ) { v3 = *(_DWORD *)(v2 + 120); if ( v3 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) { v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); std::ios::clear(v4, v4[5] | 1); } } } } } //----- (0048C130) -------------------------------------------------------- const char *__userpurge std::ostream::_M_write@(_DWORD *a1@, std::ostream *this, const char *a3, int a4) { int v5; // ecx const char *result; // eax v5 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); result = (const char *)(*(int (__thiscall **)(int, std::ostream *, const char *))(*(_DWORD *)v5 + 48))(v5, this, a3); if ( a3 != result ) return (const char *)std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); return result; } //----- (0048C180) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) { char *v3; // esi int v4; // edi char v5; // dl char *v6; // esi int v7; // ecx char v9; // cl int v10; // eax int (__stdcall *v11)(unsigned __int8); // eax char v12; // al std::ostream *v13; // [esp+4h] [ebp-54h] int v14; // [esp+28h] [ebp-30h] _BYTE *v15; // [esp+2Ch] [ebp-2Ch] char v16[4]; // [esp+38h] [ebp-20h] BYREF _DWORD *v17; // [esp+3Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v16, this, v13); if ( v16[0] ) { v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[117] ) { v14 = v3[116]; } else { v15 = (_BYTE *)*((_DWORD *)v3 + 31); if ( !v15 ) std::__throw_bad_cast(); if ( v15[28] ) { v14 = (char)v15[61]; v9 = v15[61]; } else { std::ctype::_M_widen_init((int)v15); v14 = 32; v9 = 32; v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); if ( v11 != std::ctype::do_widen ) { v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); v14 = v12; v9 = v12; } } v3[116] = v9; v10 = *(_DWORD *)this; v3[117] = 1; v3 = (char *)this + *(_DWORD *)(v10 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int))(*(_DWORD *)v4 + 36))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v14, a2); if ( v5 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::ios::clear( (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); } } return this; } // 48C191: variable 'v13' is possibly undefined // 48C1FD: variable 'v5' is possibly undefined // 48C180: using guessed type char var_20[4]; //----- (0048C370) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8 a2) { char *v3; // esi int v4; // edi char v5; // dl char *v6; // esi int v7; // ecx char v9; // cl int v10; // eax int (__stdcall *v11)(unsigned __int8); // eax char v12; // al std::ostream *v13; // [esp+4h] [ebp-54h] _BYTE *v14; // [esp+24h] [ebp-34h] int v15; // [esp+2Ch] [ebp-2Ch] char v16[4]; // [esp+38h] [ebp-20h] BYREF _DWORD *v17; // [esp+3Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v16, this, v13); if ( v16[0] ) { v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[117] ) { v15 = v3[116]; } else { v14 = (_BYTE *)*((_DWORD *)v3 + 31); if ( !v14 ) std::__throw_bad_cast(); if ( v14[28] ) { v15 = (char)v14[61]; v9 = v14[61]; } else { std::ctype::_M_widen_init((int)v14); v15 = 32; v9 = 32; v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v14 + 24); if ( v11 != std::ctype::do_widen ) { v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v14, 32); v15 = v12; v9 = v12; } } v3[116] = v9; v10 = *(_DWORD *)this; v3[117] = 1; v3 = (char *)this + *(_DWORD *)(v10 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, int, _DWORD))(*(_DWORD *)v4 + 8))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v15, a2); if ( v5 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::ios::clear( (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); } } return this; } // 48C387: variable 'v13' is possibly undefined // 48C3FA: variable 'v5' is possibly undefined // 48C370: using guessed type char var_20[4]; //----- (0048C570) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double a2) { char *v3; // esi int v4; // edi char v5; // dl char *v6; // esi int v7; // ecx char v9; // cl int v10; // eax int (__stdcall *v11)(unsigned __int8); // eax char v12; // al std::ostream *v13; // [esp+4h] [ebp-54h] _BYTE *v14; // [esp+20h] [ebp-38h] int v15; // [esp+24h] [ebp-34h] char v16[4]; // [esp+38h] [ebp-20h] BYREF _DWORD *v17; // [esp+3Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v16, this, v13); if ( v16[0] ) { v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[117] ) { v15 = v3[116]; } else { v14 = (_BYTE *)*((_DWORD *)v3 + 31); if ( !v14 ) std::__throw_bad_cast(); if ( v14[28] ) { v15 = (char)v14[61]; v9 = v14[61]; } else { std::ctype::_M_widen_init((int)v14); v15 = 32; v9 = 32; v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v14 + 24); if ( v11 != std::ctype::do_widen ) { v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v14, 32); v15 = v12; v9 = v12; } } v3[116] = v9; v10 = *(_DWORD *)this; v3[117] = 1; v3 = (char *)this + *(_DWORD *)(v10 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v15, LODWORD(a2), HIDWORD(a2)); if ( v5 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::ios::clear( (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); } } return this; } // 48C587: variable 'v13' is possibly undefined // 48C5F3: variable 'v5' is possibly undefined // 48C570: using guessed type char var_20[4]; //----- (0048C770) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double a2) { char *v3; // esi int v4; // edi char v5; // dl char *v6; // esi int v7; // ecx char v9; // cl int v10; // eax int (__stdcall *v11)(unsigned __int8); // eax char v12; // al std::ostream *v13; // [esp+4h] [ebp-54h] _BYTE *v15; // [esp+28h] [ebp-30h] int v16; // [esp+2Ch] [ebp-2Ch] char v17[4]; // [esp+38h] [ebp-20h] BYREF _DWORD *v18; // [esp+3Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v17, this, v13); if ( v17[0] ) { v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[117] ) { v16 = v3[116]; } else { v15 = (_BYTE *)*((_DWORD *)v3 + 31); if ( !v15 ) std::__throw_bad_cast(); if ( v15[28] ) { v16 = (char)v15[61]; v9 = v15[61]; } else { std::ctype::_M_widen_init((int)v15); v16 = 32; v9 = 32; v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); if ( v11 != std::ctype::do_widen ) { v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); v16 = v12; v9 = v12; } } v3[116] = v9; v10 = *(_DWORD *)this; v3[117] = 1; v3 = (char *)this + *(_DWORD *)(v10 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 32))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v16, LODWORD(a2), DWORD1(a2), HIDWORD(a2)); if ( v5 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } v6 = (char *)v18 + *(_DWORD *)(*v18 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::ios::clear( (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); } } return this; } // 48C781: variable 'v13' is possibly undefined // 48C7ED: variable 'v5' is possibly undefined // 48C770: using guessed type char var_20[4]; //----- (0048C960) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) { char *v3; // esi int v4; // edi char v5; // dl char *v6; // esi int v7; // ecx char v9; // cl int v10; // eax int (__stdcall *v11)(unsigned __int8); // eax char v12; // al std::ostream *v13; // [esp+4h] [ebp-54h] int v14; // [esp+28h] [ebp-30h] _BYTE *v15; // [esp+2Ch] [ebp-2Ch] char v16[4]; // [esp+38h] [ebp-20h] BYREF _DWORD *v17; // [esp+3Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v16, this, v13); if ( v16[0] ) { v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[117] ) { v14 = v3[116]; } else { v15 = (_BYTE *)*((_DWORD *)v3 + 31); if ( !v15 ) std::__throw_bad_cast(); if ( v15[28] ) { v14 = (char)v15[61]; v9 = v15[61]; } else { std::ctype::_M_widen_init((int)v15); v14 = 32; v9 = 32; v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); if ( v11 != std::ctype::do_widen ) { v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); v14 = v12; v9 = v12; } } v3[116] = v9; v10 = *(_DWORD *)this; v3[117] = 1; v3 = (char *)this + *(_DWORD *)(v10 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int))(*(_DWORD *)v4 + 12))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v14, a2); if ( v5 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::ios::clear( (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); } } return this; } // 48C971: variable 'v13' is possibly undefined // 48C9DD: variable 'v5' is possibly undefined // 48C960: using guessed type char var_20[4]; //----- (0048CB50) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) { char *v3; // esi int v4; // edi char v5; // dl char *v6; // esi int v7; // ecx char v9; // cl int v10; // eax int (__stdcall *v11)(unsigned __int8); // eax char v12; // al std::ostream *v13; // [esp+4h] [ebp-54h] int v14; // [esp+28h] [ebp-30h] _BYTE *v15; // [esp+2Ch] [ebp-2Ch] char v16[4]; // [esp+38h] [ebp-20h] BYREF _DWORD *v17; // [esp+3Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v16, this, v13); if ( v16[0] ) { v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[117] ) { v14 = v3[116]; } else { v15 = (_BYTE *)*((_DWORD *)v3 + 31); if ( !v15 ) std::__throw_bad_cast(); if ( v15[28] ) { v14 = (char)v15[61]; v9 = v15[61]; } else { std::ctype::_M_widen_init((int)v15); v14 = 32; v9 = 32; v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); if ( v11 != std::ctype::do_widen ) { v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); v14 = v12; v9 = v12; } } v3[116] = v9; v10 = *(_DWORD *)this; v3[117] = 1; v3 = (char *)this + *(_DWORD *)(v10 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int))(*(_DWORD *)v4 + 16))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v14, a2); if ( v5 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::ios::clear( (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); } } return this; } // 48CB61: variable 'v13' is possibly undefined // 48CBCD: variable 'v5' is possibly undefined // 48CB50: using guessed type char var_20[4]; //----- (0048CD40) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3) { char *v4; // esi int v5; // edi char v6; // dl char *v7; // esi int v8; // ecx char v10; // cl int v11; // eax int (__stdcall *v12)(unsigned __int8); // eax char v13; // al std::ostream *v14; // [esp+4h] [ebp-64h] int v15; // [esp+38h] [ebp-30h] _BYTE *v16; // [esp+3Ch] [ebp-2Ch] char v17[4]; // [esp+48h] [ebp-20h] BYREF _DWORD *v18; // [esp+4Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v17, this, v14); if ( v17[0] ) { v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v5 = *((_DWORD *)v4 + 32); if ( !v5 ) std::__throw_bad_cast(); if ( v4[117] ) { v15 = v4[116]; } else { v16 = (_BYTE *)*((_DWORD *)v4 + 31); if ( !v16 ) std::__throw_bad_cast(); if ( v16[28] ) { v15 = (char)v16[61]; v10 = v16[61]; } else { std::ctype::_M_widen_init((int)v16); v15 = 32; v10 = 32; v12 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v16 + 24); if ( v12 != std::ctype::do_widen ) { v13 = ((int (__thiscall *)(_BYTE *, int))v12)(v16, 32); v15 = v13; v10 = v13; } } v4[116] = v10; v11 = *(_DWORD *)this; v4[117] = 1; v4 = (char *)this + *(_DWORD *)(v11 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int, int))(*(_DWORD *)v5 + 20))( v5, *((_DWORD *)v4 + 30), *((_DWORD *)v4 + 30) == 0, v4, v15, a2, a3); if ( v6 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } v7 = (char *)v18 + *(_DWORD *)(*v18 - 12); if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) { v8 = *((_DWORD *)v7 + 30); if ( v8 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) std::ios::clear( (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); } } return this; } // 48CD5D: variable 'v14' is possibly undefined // 48CDDA: variable 'v6' is possibly undefined // 48CD40: using guessed type char var_20[4]; //----- (0048CF50) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert( std::ostream::sentry *this, int a2, int a3) { char *v4; // esi int v5; // edi char v6; // dl char *v7; // esi int v8; // ecx char v10; // cl int v11; // eax int (__stdcall *v12)(unsigned __int8); // eax char v13; // al std::ostream *v14; // [esp+4h] [ebp-64h] int v15; // [esp+38h] [ebp-30h] _BYTE *v16; // [esp+3Ch] [ebp-2Ch] char v17[4]; // [esp+48h] [ebp-20h] BYREF _DWORD *v18; // [esp+4Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v17, this, v14); if ( v17[0] ) { v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v5 = *((_DWORD *)v4 + 32); if ( !v5 ) std::__throw_bad_cast(); if ( v4[117] ) { v15 = v4[116]; } else { v16 = (_BYTE *)*((_DWORD *)v4 + 31); if ( !v16 ) std::__throw_bad_cast(); if ( v16[28] ) { v15 = (char)v16[61]; v10 = v16[61]; } else { std::ctype::_M_widen_init((int)v16); v15 = 32; v10 = 32; v12 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v16 + 24); if ( v12 != std::ctype::do_widen ) { v13 = ((int (__thiscall *)(_BYTE *, int))v12)(v16, 32); v15 = v13; v10 = v13; } } v4[116] = v10; v11 = *(_DWORD *)this; v4[117] = 1; v4 = (char *)this + *(_DWORD *)(v11 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int, int))(*(_DWORD *)v5 + 24))( v5, *((_DWORD *)v4 + 30), *((_DWORD *)v4 + 30) == 0, v4, v15, a2, a3); if ( v6 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } v7 = (char *)v18 + *(_DWORD *)(*v18 - 12); if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) { v8 = *((_DWORD *)v7 + 30); if ( v8 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) std::ios::clear( (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); } } return this; } // 48CF6D: variable 'v14' is possibly undefined // 48CFEA: variable 'v6' is possibly undefined // 48CF50: using guessed type char var_20[4]; //----- (0048D160) -------------------------------------------------------- int __thiscall std::ostream::ostream(_DWORD *this, int *a2) { _DWORD *v2; // edi int v4; // eax std::ios_base *v5; // esi int v6; // eax int result; // eax std::ios_base *v8; // [esp+4h] [ebp-24h] v2 = this + 1; std::ios_base::ios_base(this + 1); this[29] = 0; *((_WORD *)this + 60) = 0; v4 = *a2; this[31] = 0; v5 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v4 - 12)); *this = &off_4F5E58; this[32] = 0; this[33] = 0; this[34] = 0; this[1] = off_4F5E6C; std::ios_base::_M_move((int)v2, v5, v8); std::ios::_M_cache_locale(v2, (int)(this + 28)); v6 = *((_DWORD *)v5 + 28); this[31] = 0; *((_DWORD *)v5 + 28) = 0; this[29] = v6; result = *((unsigned __int16 *)v5 + 58); *((_WORD *)this + 60) = result; return result; } // 48D1C1: variable 'v8' is possibly undefined // 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); // 4F5E6C: using guessed type void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this); //----- (0048D220) -------------------------------------------------------- BOOL __thiscall std::ostream::ostream(_DWORD *this, int a2) { int v2; // esi v2 = (int)(this + 1); std::ios_base::ios_base(this + 1); this[29] = 0; *((_WORD *)this + 60) = 0; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; *this = &off_4F5E58; this[1] = off_4F5E6C; return std::ios::init(v2, a2); } // 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); // 4F5E6C: using guessed type void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this); //----- (0048D2B0) -------------------------------------------------------- int __userpurge std::ostream::ostream@(int a1@, std::ostream *this, std::iostream *a3) { int result; // eax std::ios_base::ios_base((_DWORD *)(a1 + 4)); result = 0; *(_DWORD *)(a1 + 116) = 0; *(_WORD *)(a1 + 120) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; *(_DWORD *)(a1 + 136) = 0; *(_DWORD *)a1 = &off_4F5E58; *(_DWORD *)(a1 + 4) = off_4F5E6C; return result; } // 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); // 4F5E6C: using guessed type void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this); //----- (0048D310) -------------------------------------------------------- BOOL __fastcall std::ostream::ostream(int a1) { int v1; // esi v1 = a1 + 4; std::ios_base::ios_base((_DWORD *)(a1 + 4)); *(_DWORD *)(a1 + 116) = 0; *(_WORD *)(a1 + 120) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; *(_DWORD *)(a1 + 136) = 0; *(_DWORD *)a1 = &off_4F5E58; *(_DWORD *)(a1 + 4) = off_4F5E6C; return std::ios::init(v1, 0); } // 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); // 4F5E6C: using guessed type void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this); //----- (0048D3A0) -------------------------------------------------------- int __thiscall std::ostream::ostream(int *this, int *a2, _DWORD *a3) { int v3; // edx int v4; // eax _DWORD *v5; // ecx _DWORD *v6; // ebx std::ios_base *v7; // esi int v8; // eax int result; // eax std::ios_base *v10; // [esp+4h] [ebp-18h] v3 = *a2; v4 = a2[1]; *this = *a2; v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); *v5 = v4; v6 = v5; v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move((int)v5, v7, v10); std::ios::_M_cache_locale(v6, (int)(v6 + 27)); v8 = *((_DWORD *)v7 + 28); *((_DWORD *)v7 + 28) = 0; v6[28] = v8; *((_BYTE *)v6 + 116) = *((_BYTE *)v7 + 116); result = *((unsigned __int8 *)v7 + 117); v6[30] = 0; *((_BYTE *)v6 + 117) = result; return result; } // 48D3C3: variable 'v10' is possibly undefined //----- (0048D410) -------------------------------------------------------- BOOL __thiscall std::ostream::ostream(int *this, int *a2, int a3) { int v3; // edx int v4; // eax _DWORD *v5; // ecx v3 = *a2; v4 = a2[1]; *this = *a2; v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); *v5 = v4; return std::ios::init((int)v5, a3); } //----- (0048D440) -------------------------------------------------------- int __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this, std::iostream *a3) { int v3; // eax int v4; // edx int result; // eax v3 = *(_DWORD *)this; v4 = *((_DWORD *)this + 1); *ecx0 = *(_DWORD *)this; result = *(_DWORD *)(v3 - 12); *(_DWORD *)((char *)ecx0 + result) = v4; return result; } //----- (0048D460) -------------------------------------------------------- BOOL __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this) { int v2; // edx int v3; // eax _DWORD *v4; // ecx v2 = *(_DWORD *)this; v3 = *((_DWORD *)this + 1); *ecx0 = *(_DWORD *)this; v4 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)); *v4 = v3; return std::ios::init((int)v4, 0); } //----- (0048D480) -------------------------------------------------------- void __fastcall std::ostream::~ostream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 1; *(v2 - 1) = &off_4F5E58; *v2 = &off_4F6E10; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (0048D4B0) -------------------------------------------------------- void __fastcall std::ostream::~ostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_4F5E58; v1 = a1 + 1; *v1 = &off_4F6E10; std::ios_base::~ios_base((int)v1); } // 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (0048D4D0) -------------------------------------------------------- void __thiscall std::ostream::~ostream(_DWORD *ecx0, std::ostream *this) { int v2; // eax v2 = *(_DWORD *)this; *ecx0 = *(_DWORD *)this; *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 1); } //----- (0048D4F0) -------------------------------------------------------- _DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // dl char v7; // dl _DWORD *result; // eax std::ios_base *v9; // [esp+4h] [ebp-18h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; result = this; *((_BYTE *)v4 + 117) = v7; return result; } // 48D50D: variable 'v9' is possibly undefined //----- (0048D570) -------------------------------------------------------- int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (0048D580) -------------------------------------------------------- char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (0048D5A0) -------------------------------------------------------- char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (0048D5D0) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *a2) { char *v3; // ecx int v4; // eax char *v5; // esi int v6; // ecx std::ostream *v8; // [esp+4h] [ebp-24h] char v9; // [esp+17h] [ebp-11h] BYREF char v10[4]; // [esp+18h] [ebp-10h] BYREF _DWORD *v11; // [esp+1Ch] [ebp-Ch] std::ostream::sentry::sentry((int)v10, this, v8); if ( v10[0] ) { v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( !a2 ) { v4 = 1; goto LABEL_13; } if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v3 + 30), &v9) ) { v4 = 4; v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); LABEL_13: std::ios::clear(v3, *((_DWORD *)v3 + 5) | v4); } } else if ( !a2 ) { v4 = 1; v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); goto LABEL_13; } v5 = (char *)v11 + *(_DWORD *)(*v11 - 12); if ( (v5[13] & 0x20) != 0 && !std::uncaught_exception() ) { v6 = *((_DWORD *)v5 + 30); if ( v6 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6) == -1 ) std::ios::clear( (_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12)), *(_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12) + 20) | 1); } } return this; } // 48D5E3: variable 'v8' is possibly undefined // 48D5D0: using guessed type char var_10[4]; //----- (0048D720) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2) { return std::ostream::_M_insert(this, a2); } //----- (0048D750) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2) { return std::ostream::_M_insert(this, a2); } //----- (0048D7B0) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) { int v2; // eax v2 = *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 12) & 0x4A; if ( v2 == 64 || v2 == 8 ) return std::ostream::_M_insert(this, a2); else return std::ostream::_M_insert(this, (__int16)a2); } //----- (0048D7F0) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) { return std::ostream::_M_insert(this, a2); } //----- (0048D820) -------------------------------------------------------- char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2) { return (char *)this - a2; } //----- (0048D830) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (0048D840) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (0048D850) -------------------------------------------------------- volatile signed __int32 *__fastcall std::string::_M_leak_hard(volatile signed __int32 **a1) { volatile signed __int32 *result; // eax unsigned int v3; // [esp+Ch] [ebp-10h] result = *a1; if ( *a1 != (volatile signed __int32 *)&unk_4E93FC ) { if ( *((int *)result - 1) > 0 ) { std::string::_M_mutate(a1, 0, 0, 0, v3); result = *a1; *((_DWORD *)*a1 - 1) = -1; } else { result = *a1; *((_DWORD *)*a1 - 1) = -1; } } return result; } // 48D88F: variable 'v3' is possibly undefined //----- (0048D8B0) -------------------------------------------------------- unsigned int *__cdecl std::string::_S_construct(unsigned int a1, char a2) { if ( a1 ) return std::string::_S_construct(a1, a2); else return (unsigned int *)&unk_4E93FC; } //----- (0048D8E0) -------------------------------------------------------- unsigned int *__usercall std::string::_S_construct@(unsigned int a1@, char a2@
) { unsigned int *v4; // esi unsigned int *result; // eax v4 = std::string::_Rep::_S_create(a1, 0); if ( a1 == 1 ) { *((_BYTE *)v4 + 12) = a2; if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) return v4 + 3; } else { memset(v4 + 3, a2, a1); if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) return v4 + 3; } v4[2] = 0; result = v4 + 3; *v4 = a1; *((_BYTE *)v4 + a1 + 12) = 0; return result; } //----- (0048D960) -------------------------------------------------------- void *__cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, _BYTE *a2) { void *v2; // edi size_t Size; // ebp unsigned int *v4; // eax unsigned int *v5; // esi v2 = &unk_4E93FC; if ( a2 != Src ) { Size = a2 - Src; v4 = std::string::_Rep::_S_create(a2 - Src, 0); v5 = v4; v2 = v4 + 3; if ( a2 - Src == 1 ) *((_BYTE *)v4 + 12) = *Src; else memcpy(v4 + 3, Src, Size); if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) { v5[2] = 0; *v5 = Size; *((_BYTE *)v5 + Size + 12) = 0; } } return v2; } //----- (0048D9E0) -------------------------------------------------------- _DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2) { if ( a1 == (_BYTE *)a2 ) return &unk_4E93FC; if ( !a1 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); return std::string::_S_construct(a1, a2); } //----- (0048DA20) -------------------------------------------------------- _DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2) { if ( a1 == (_BYTE *)a2 ) return &unk_4E93FC; if ( !a1 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); return std::string::_S_construct(a1, a2); } //----- (0048DA60) -------------------------------------------------------- _DWORD *__usercall std::string::_S_construct@(_BYTE *a1@, int a2@) { size_t Size; // ebx unsigned int *v4; // eax unsigned int *v5; // esi _DWORD *v6; // ebp _DWORD *result; // eax Size = a2 - (_DWORD)a1; v4 = std::string::_Rep::_S_create(a2 - (_DWORD)a1, 0); v5 = v4; v6 = v4 + 3; if ( Size == 1 ) { *((_BYTE *)v4 + 12) = *a1; if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) return v6; } else { memcpy(v4 + 3, a1, Size); if ( v5 == &std::string::_Rep::_S_empty_rep_storage ) return v6; } v5[2] = 0; result = v6; *v5 = Size; *((_BYTE *)v5 + Size + 12) = 0; return result; } //----- (0048DAE0) -------------------------------------------------------- unsigned int *std::string::_S_empty_rep() { return &std::string::_Rep::_S_empty_rep_storage; } //----- (0048DAF0) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) { int result; // eax result = Size - (_DWORD)a2; if ( Size - (_DWORD)a2 == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)memcpy(a1, a2, Size - (_DWORD)a2); } return result; } //----- (0048DB30) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) { int result; // eax result = Size - (_DWORD)a2; if ( Size - (_DWORD)a2 == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)memcpy(a1, a2, Size - (_DWORD)a2); } return result; } //----- (0048DB70) -------------------------------------------------------- size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size) { size_t result; // eax result = Size - (_DWORD)a2; if ( Size - (_DWORD)a2 == 1 ) { result = (unsigned __int8)*a2; *(_BYTE *)this = result; } else if ( result ) { return (size_t)memcpy(this, a2, Size - (_DWORD)a2); } return result; } //----- (0048DBB0) -------------------------------------------------------- size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size) { size_t result; // eax result = Size - (_DWORD)a2; if ( Size - (_DWORD)a2 == 1 ) { result = (unsigned __int8)*a2; *(_BYTE *)this = result; } else if ( result ) { return (size_t)memcpy(this, a2, Size - (_DWORD)a2); } return result; } //----- (0048DBF0) -------------------------------------------------------- unsigned int *__fastcall std::string::shrink_to_fit(unsigned int **a1) { unsigned int *result; // eax unsigned int v2; // [esp+4h] [ebp-18h] result = *a1; if ( *(*a1 - 3) < *(*a1 - 2) ) return std::string::reserve(a1, 0, v2); return result; } // 48DBF0: could not find valid save-restore pair for ebp // 48DC0D: variable 'v2' is possibly undefined //----- (0048DC30) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::_M_replace_aux@( volatile signed __int32 **a1@, std::string *this, unsigned int a3, size_t Size, char a5, char a6) { _BYTE *v7; // edi unsigned int v9; // [esp+Ch] [ebp-20h] if ( Size > a3 + 1073741820 - *((_DWORD *)*a1 - 3) ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::string::_M_mutate(a1, (size_t)this, a3, Size, v9); if ( !Size ) return a1; v7 = (char *)this + (_DWORD)*a1; if ( Size != 1 ) { memset(v7, a5, Size); return a1; } *v7 = a5; return a1; } // 48DC65: variable 'v9' is possibly undefined //----- (0048DCC0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::_M_replace_safe@( volatile signed __int32 **a1@, std::string *this, unsigned int a3, _BYTE *Src, size_t Size, unsigned int a6) { _BYTE *v7; // edi unsigned int v9; // [esp+Ch] [ebp-10h] std::string::_M_mutate(a1, (size_t)this, a3, Size, v9); if ( !Size ) return a1; v7 = (char *)this + (_DWORD)*a1; if ( Size != 1 ) { memcpy(v7, Src, Size); return a1; } *v7 = *Src; return a1; } // 48DCDF: variable 'v9' is possibly undefined //----- (0048DD30) -------------------------------------------------------- unsigned int *__cdecl std::string::_S_construct_aux_2(unsigned int a1, char a2) { if ( a1 ) return std::string::_S_construct(a1, a2); else return (unsigned int *)&unk_4E93FC; } //----- (0048DD60) -------------------------------------------------------- char *__userpurge std::string::at@(volatile signed __int32 **a1@, std::string *this, unsigned int a3) { volatile signed __int32 *v3; // eax v3 = *a1; if ( (unsigned int)this >= *((_DWORD *)*a1 - 3) ) std::__throw_out_of_range_fmt( "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", (size_t)this, *((_DWORD *)*a1 - 3)); if ( *((int *)v3 - 1) >= 0 ) { std::string::_M_leak_hard(a1); v3 = *a1; } return (char *)v3 + (_DWORD)this; } //----- (0048DDA0) -------------------------------------------------------- int __fastcall std::string::end(volatile signed __int32 **a1) { if ( *((int *)*a1 - 1) < 0 ) return (int)*a1 + *((_DWORD *)*a1 - 3); std::string::_M_leak_hard(a1); return (int)*a1 + *((_DWORD *)*a1 - 3); } //----- (0048DDD0) -------------------------------------------------------- void __thiscall std::string::_Rep::_M_destroy(void *this, int a2) { operator delete(this); } //----- (0048DDF0) -------------------------------------------------------- void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) { int v2; // eax if ( this != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); } else { v2 = *((_DWORD *)this + 2); *((_DWORD *)this + 2) = v2 - 1; } if ( v2 <= 0 ) operator delete((void *)this); } } // 15412D0: using guessed type int _CRT_MT; //----- (0048DE40) -------------------------------------------------------- void __fastcall std::string::_Rep::_M_dispose(volatile signed __int32 *a1) { int v1; // eax if ( !_CRT_MT ) { v1 = *((_DWORD *)a1 + 2); *((_DWORD *)a1 + 2) = v1 - 1; if ( v1 > 0 ) return; LABEL_5: operator delete((void *)a1); return; } if ( _InterlockedExchangeAdd(a1 + 2, 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 15412D0: using guessed type int _CRT_MT; //----- (0048DE80) -------------------------------------------------------- void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) { int v2; // eax if ( !_CRT_MT ) { v2 = *((_DWORD *)this + 2); *((_DWORD *)this + 2) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: std::string::_Rep::_M_destroy((void *)this, a2); return; } if ( _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 15412D0: using guessed type int _CRT_MT; //----- (0048DEC0) -------------------------------------------------------- void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) { int v2; // eax if ( !_CRT_MT ) { v2 = *((_DWORD *)this + 2); *((_DWORD *)this + 2) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: std::string::_Rep::_M_destroy((void *)this, a2); return; } if ( _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 15412D0: using guessed type int _CRT_MT; //----- (0048DF00) -------------------------------------------------------- int __fastcall std::string::_Rep::_M_refcopy(int a1) { if ( (unsigned int *)a1 != &std::string::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); else ++*(_DWORD *)(a1 + 8); } return a1 + 12; } // 15412D0: using guessed type int _CRT_MT; //----- (0048DF30) -------------------------------------------------------- int __fastcall std::string::_Rep::_M_refdata(int a1) { return a1 + 12; } //----- (0048DF40) -------------------------------------------------------- unsigned int *std::string::_Rep::_S_empty_rep() { return &std::string::_Rep::_S_empty_rep_storage; } //----- (0048DF50) -------------------------------------------------------- void __fastcall std::string::_Rep::_M_set_leaked(int a1) { *(_DWORD *)(a1 + 8) = -1; } //----- (0048DF60) -------------------------------------------------------- void __fastcall std::string::_Rep::_M_set_sharable(int a1) { *(_DWORD *)(a1 + 8) = 0; } //----- (0048DF70) -------------------------------------------------------- std::string::_Rep *__userpurge std::string::_Rep::_M_set_length_and_sharable@( unsigned int *a1@, std::string::_Rep *this, unsigned int a3) { std::string::_Rep *result; // eax if ( a1 != &std::string::_Rep::_S_empty_rep_storage ) { result = this; a1[2] = 0; *a1 = (unsigned int)this; *((_BYTE *)this + (_DWORD)a1 + 12) = 0; } return result; } //----- (0048DFA0) -------------------------------------------------------- unsigned int *__thiscall std::string::_Rep::_M_grab(int this, int a2, int a3) { if ( *(int *)(this + 8) < 0 ) return std::string::_Rep::_M_clone(this, a2, 0); if ( (unsigned int *)this != &std::string::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(this + 8), 1u); else ++*(_DWORD *)(this + 8); } return (unsigned int *)(this + 12); } // 15412D0: using guessed type int _CRT_MT; //----- (0048DFF0) -------------------------------------------------------- unsigned int *__thiscall std::string::_Rep::_M_clone(int this, int a2, int a3) { unsigned int *v4; // esi size_t v5; // eax v4 = std::string::_Rep::_S_create(a3 + *(_DWORD *)this, *(_DWORD *)(this + 4)); v5 = *(_DWORD *)this; if ( *(_DWORD *)this ) { if ( v5 == 1 ) { *((_BYTE *)v4 + 12) = *(_BYTE *)(this + 12); v5 = *(_DWORD *)this; if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) return v4 + 3; goto LABEL_7; } memcpy(v4 + 3, (const void *)(this + 12), *(_DWORD *)this); v5 = *(_DWORD *)this; } if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) return v4 + 3; LABEL_7: *v4 = v5; v4[2] = 0; *((_BYTE *)v4 + v5 + 12) = 0; return v4 + 3; } //----- (0048E080) -------------------------------------------------------- _DWORD *__cdecl std::string::_Rep::_S_create(unsigned int a1, unsigned int a2) { unsigned int v2; // ebx struct type_info *v3; // eax _DWORD *result; // eax void (__cdecl *v5)(void *); // [esp+4h] [ebp-18h] v2 = a1; if ( a1 > 0x3FFFFFFC ) std::__throw_length_error((std::length_error *)"basic_string::_S_create"); if ( a1 <= a2 ) goto LABEL_9; if ( a1 < 2 * a2 ) v2 = 2 * a2; if ( v2 + 29 > 0x1000 && v2 > a2 ) { v2 = v2 + 4096 - (((_WORD)v2 + 29) & 0xFFF); if ( v2 > 0x3FFFFFFC ) v2 = 1073741820; LABEL_9: v3 = (struct type_info *)(v2 + 13); goto LABEL_10; } v3 = (struct type_info *)(v2 + 13); if ( (int)(v2 + 13) < 0 ) std::__throw_bad_alloc(); LABEL_10: result = operator new(v3, v5); result[1] = v2; result[2] = 0; return result; } // 48E0D1: variable 'v5' is possibly undefined //----- (0048E100) -------------------------------------------------------- char *__fastcall std::string::back(volatile signed __int32 **a1) { volatile signed __int32 *v1; // eax int v2; // esi v1 = *a1; v2 = *((_DWORD *)*a1 - 3) - 1; if ( *((int *)*a1 - 1) >= 0 ) { std::string::_M_leak_hard(a1); v1 = *a1; } return (char *)v1 + v2; } //----- (0048E130) -------------------------------------------------------- volatile signed __int32 **__thiscall std::string::rend(volatile signed __int32 **ecx0, volatile signed __int32 **this) { volatile signed __int32 **result; // eax volatile signed __int32 *v3; // edx result = ecx0; v3 = *this; if ( *((int *)*this - 1) >= 0 ) { std::string::_M_leak_hard(this); v3 = *this; result = ecx0; } *result = v3; return result; } //----- (0048E160) -------------------------------------------------------- int __userpurge std::string::swap@(int *a1@, std::string *this, std::string *a3) { int result; // eax int v4; // edx result = *a1; if ( *(int *)(*a1 - 4) < 0 ) *(_DWORD *)(result - 4) = 0; v4 = *(_DWORD *)this; if ( *(int *)(*(_DWORD *)this - 4) < 0 ) *(_DWORD *)(v4 - 4) = 0; *a1 = v4; *(_DWORD *)this = result; return result; } //----- (0048E190) -------------------------------------------------------- volatile signed __int32 *__fastcall std::string::begin(volatile signed __int32 **a1) { volatile signed __int32 *result; // eax result = *a1; if ( *((int *)*a1 - 1) >= 0 ) { std::string::_M_leak_hard(a1); return *a1; } return result; } //----- (0048E1C0) -------------------------------------------------------- void __fastcall std::string::clear(void **a1) { _DWORD *v1; // eax int v2; // ebx void **v3; // [esp+1Ch] [ebp-10h] v1 = *a1; if ( *((int *)*a1 - 1) <= 0 ) { if ( v1 != (_DWORD *)&unk_4E93FC ) { *(v1 - 1) = 0; *(v1 - 3) = 0; *(_BYTE *)v1 = 0; } } else if ( v1 == (_DWORD *)&unk_4E93FC ) { *a1 = &unk_4E93FC; } else { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *(v1 - 1); *(v1 - 1) = v2 - 1; } if ( v2 <= 0 ) { v3 = a1; operator delete(v1 - 3); a1 = v3; } *a1 = &unk_4E93FC; } } // 15412D0: using guessed type int _CRT_MT; //----- (0048E260) -------------------------------------------------------- char *__thiscall std::string::erase(volatile signed __int32 **this, int a2) { size_t v3; // esi volatile signed __int32 *v4; // eax unsigned int v6; // [esp+Ch] [ebp-10h] v3 = a2 - (_DWORD)*this; std::string::_M_mutate(this, v3, 1u, 0, v6); v4 = *this; *((_DWORD *)v4 - 1) = -1; return (char *)v4 + v3; } // 48E282: variable 'v6' is possibly undefined //----- (0048E2A0) -------------------------------------------------------- char *__thiscall std::string::erase(volatile signed __int32 **this, char *a2, char *a3) { char *result; // eax size_t v5; // ebx volatile signed __int32 *v6; // eax unsigned int v7; // [esp+Ch] [ebp-10h] result = a2; if ( a3 != a2 ) { v5 = a2 - (char *)*this; std::string::_M_mutate(this, v5, a3 - a2, 0, v7); v6 = *this; *((_DWORD *)v6 - 1) = -1; return (char *)v6 + v5; } return result; } // 48E2D5: variable 'v7' is possibly undefined //----- (0048E2F0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::erase@( volatile signed __int32 **a1@, std::string *this, unsigned int a3, unsigned int a4) { unsigned int v5; // ecx unsigned int v6; // edx unsigned int v8; // [esp+Ch] [ebp-10h] v5 = *((_DWORD *)*a1 - 3); v6 = v5 - (_DWORD)this; if ( v5 - (unsigned int)this > a3 ) v6 = a3; if ( (unsigned int)this > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", (size_t)this, v5); std::string::_M_mutate(a1, (size_t)this, v6, 0, v8); return a1; } // 48E323: variable 'v8' is possibly undefined //----- (0048E360) -------------------------------------------------------- volatile signed __int32 *__fastcall std::string::front(volatile signed __int32 **a1) { volatile signed __int32 *result; // eax result = *a1; if ( *((int *)*a1 - 1) >= 0 ) { std::string::_M_leak_hard(a1); return *a1; } return result; } //----- (0048E390) -------------------------------------------------------- unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const char *a3) { size_t v4; // eax unsigned int v6; // [esp+8h] [ebp-14h] v4 = strlen((const char *)this); return std::string::append(a1, this, v4, v6); } // 48E3AC: variable 'v6' is possibly undefined //----- (0048E3C0) -------------------------------------------------------- unsigned int **__userpurge std::string::append@( unsigned int **a1@, std::string *this, size_t Size, unsigned int a4) { std::string *v5; // ebp unsigned int *v6; // eax int v7; // edi std::string *v8; // edi _BYTE *v9; // eax unsigned int *v10; // eax char *v12; // ebp bool v13; // cc void *Src; // [esp+4h] [ebp-28h] v5 = this; if ( !Size ) return a1; v6 = *a1; v7 = *(*a1 - 3); if ( Size > 1073741820 - v7 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v8 = (std::string *)(Size + v7); if ( (unsigned int)v8 > *(v6 - 2) || (v13 = (int)*(v6 - 1) <= 0, v6 = *a1, !v13) ) { if ( v6 <= (unsigned int *)this && this <= (std::string *)((char *)v6 + *(v6 - 3)) ) { v12 = (char *)(this - (std::string *)v6); std::string::reserve(a1, v8, (unsigned int)Src); v5 = (std::string *)&v12[(_DWORD)*a1]; v9 = (char *)*a1 + *(*a1 - 3); if ( Size != 1 ) goto LABEL_8; goto LABEL_13; } std::string::reserve(a1, v8, (unsigned int)Src); v6 = *a1; } v9 = (char *)v6 + *(v6 - 3); if ( Size != 1 ) { LABEL_8: memcpy(v9, v5, Size); goto LABEL_9; } LABEL_13: *v9 = *(_BYTE *)v5; LABEL_9: v10 = *a1; if ( *a1 != (unsigned int *)&unk_4E93FC ) { *(v10 - 1) = 0; *(v10 - 3) = (unsigned int)v8; *((_BYTE *)v8 + (_DWORD)v10) = 0; } return a1; } // 48E402: variable 'Src' is possibly undefined //----- (0048E4A0) -------------------------------------------------------- unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const std::string *a3) { size_t Size; // esi size_t v5; // edi _BYTE *v6; // edx _BYTE *v7; // eax unsigned int *v8; // eax void *Src; // [esp+4h] [ebp-28h] Size = *(_DWORD *)(*(_DWORD *)this - 12); if ( !Size ) return a1; v5 = Size + *(*a1 - 3); if ( v5 <= *(*a1 - 2) && (int)*(*a1 - 1) <= 0 ) { v6 = *(_BYTE **)this; v7 = (char *)*a1 + *(*a1 - 3); if ( Size == 1 ) goto LABEL_10; LABEL_4: memcpy(v7, v6, Size); goto LABEL_5; } std::string::reserve(a1, (std::string *)(Size + *(*a1 - 3)), (unsigned int)Src); v6 = *(_BYTE **)this; v7 = (char *)*a1 + *(*a1 - 3); if ( Size != 1 ) goto LABEL_4; LABEL_10: *v7 = *v6; LABEL_5: v8 = *a1; if ( *a1 != (unsigned int *)&unk_4E93FC ) { *(v8 - 1) = 0; *(v8 - 3) = v5; *((_BYTE *)v8 + v5) = 0; } return a1; } // 48E4C8: variable 'Src' is possibly undefined //----- (0048E540) -------------------------------------------------------- unsigned int **__userpurge std::string::append@( unsigned int **a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5) { std::string *v6; // eax unsigned int v7; // ebx size_t Size; // ebx size_t v9; // ebp _BYTE *v10; // edi _BYTE *v11; // edx unsigned int *v12; // eax void *Src; // [esp+4h] [ebp-28h] v6 = this; v7 = *(_DWORD *)(*(_DWORD *)this - 12); if ( (unsigned int)a3 > v7 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::append", (size_t)a3, *(_DWORD *)(*(_DWORD *)this - 12)); Size = v7 - (_DWORD)a3; if ( Size > a4 ) { Size = a4; if ( !a4 ) return a1; } else if ( !Size ) { return a1; } v9 = Size + *(*a1 - 3); if ( *(*a1 - 2) < v9 || (int)*(*a1 - 1) > 0 ) { std::string::reserve(a1, (std::string *)(Size + *(*a1 - 3)), (unsigned int)Src); v6 = this; } v10 = (char *)a3 + *(_DWORD *)v6; v11 = (char *)*a1 + *(*a1 - 3); if ( Size == 1 ) *v11 = *v10; else memcpy(v11, v10, Size); v12 = *a1; if ( *a1 != (unsigned int *)&unk_4E93FC ) { *(v12 - 1) = 0; *(v12 - 3) = v9; *((_BYTE *)v12 + v9) = 0; } return a1; } // 48E588: variable 'Src' is possibly undefined //----- (0048E620) -------------------------------------------------------- unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, char a3, char a4) { if ( this ) std::string::append(a1, (size_t)this, a3); return a1; } //----- (0048E650) -------------------------------------------------------- unsigned int *__thiscall std::string::append(unsigned int **this, size_t Size, char a3) { unsigned int *v3; // edx int v4; // esi std::string *v6; // esi _BYTE *v7; // eax unsigned int *result; // eax int Val; // [esp+4h] [ebp-28h] v3 = *this; v4 = *(*this - 3); if ( 1073741820 - v4 < Size ) std::__throw_length_error((std::length_error *)"basic_string::append"); v6 = (std::string *)(Size + v4); if ( (unsigned int)v6 <= *(v3 - 2) && (int)*(v3 - 1) <= 0 ) { v7 = (char *)*this + *(*this - 3); if ( Size == 1 ) goto LABEL_10; LABEL_4: memset(v7, a3, Size); goto LABEL_5; } std::string::reserve(this, v6, Val); v7 = (char *)*this + *(*this - 3); if ( Size != 1 ) goto LABEL_4; LABEL_10: *v7 = a3; LABEL_5: result = *this; if ( *this != (unsigned int *)&unk_4E93FC ) { *(result - 1) = 0; *(result - 3) = (unsigned int)v6; *((_BYTE *)v6 + (_DWORD)result) = 0; } return result; } // 48E681: variable 'Val' is possibly undefined //----- (0048E700) -------------------------------------------------------- #error "48E70A: call analysis failed (funcsize=8)" //----- (0048E720) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::assign@( volatile signed __int32 **a1@, std::string *this, const char *a3) { size_t v4; // eax unsigned int v6; // [esp+8h] [ebp-14h] v4 = strlen((const char *)this); return std::string::assign(a1, this, v4, v6); } // 48E73C: variable 'v6' is possibly undefined //----- (0048E750) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::assign@( volatile signed __int32 **a1@, std::string *this, size_t Size, unsigned int a4) { volatile signed __int32 *v4; // eax unsigned int v5; // ebx volatile signed __int32 **result; // eax volatile signed __int32 *v7; // ebx char *v8; // eax unsigned int v9; // [esp+10h] [ebp-1Ch] volatile signed __int32 **v10; // [esp+1Ch] [ebp-10h] volatile signed __int32 **v11; // [esp+1Ch] [ebp-10h] v4 = *a1; v5 = *((_DWORD *)*a1 - 3); if ( Size > 0x3FFFFFFC ) std::__throw_length_error((std::length_error *)"basic_string::assign"); if ( v4 > (volatile signed __int32 *)this || (char *)v4 + v5 < (char *)this ) return std::string::_M_replace_safe(a1, 0, v5, this, Size, v9); if ( *((int *)v4 - 1) > 0 ) { v5 = *((_DWORD *)*a1 - 3); return std::string::_M_replace_safe(a1, 0, v5, this, Size, v9); } v7 = *a1; v8 = (char *)(this - (std::string *)*a1); if ( Size <= (unsigned int)v8 ) { if ( Size != 1 ) { if ( Size ) { v11 = a1; memcpy((void *)*a1, this, Size); a1 = v11; v7 = *v11; } goto LABEL_12; } } else { if ( !v8 ) goto LABEL_12; if ( Size != 1 ) { v10 = a1; memmove((void *)*a1, this, Size); a1 = v10; v7 = *v10; goto LABEL_12; } } *(_BYTE *)v7 = *(_BYTE *)this; v7 = *a1; LABEL_12: result = a1; if ( v7 != (volatile signed __int32 *)&unk_4E93FC ) { *((_DWORD *)v7 - 1) = 0; *((_DWORD *)v7 - 3) = Size; *((_BYTE *)v7 + Size) = 0; } return result; } // 48E786: variable 'v9' is possibly undefined //----- (0048E850) -------------------------------------------------------- unsigned int **__userpurge std::string::assign@( unsigned int **a1@, unsigned int **this, const std::string *a3) { unsigned int *v4; // esi unsigned int *v5; // ecx volatile signed __int32 *v6; // eax unsigned int *v7; // edx int v9; // ecx char v10[13]; // [esp+1Fh] [ebp-Dh] BYREF v4 = *this; if ( *a1 != *this ) { v5 = v4 - 3; if ( (*(v4 - 1) & 0x80000000) != 0 ) { v4 = std::string::_Rep::_M_clone((int)v5, (int)v10, 0); } else if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)v4 - 1, 1u); else ++*(v4 - 1); } v6 = (volatile signed __int32 *)*a1; v7 = *a1 - 3; if ( *a1 == (unsigned int *)&unk_4E93FC || (_CRT_MT ? (v9 = _InterlockedExchangeAdd(v6 - 1, 0xFFFFFFFF)) : (v9 = *((_DWORD *)v6 - 1), *((_DWORD *)v6 - 1) = v9 - 1), v9 > 0) ) { *a1 = v4; } else { operator delete(v7); *a1 = v4; } } return a1; } // 15412D0: using guessed type int _CRT_MT; // 48E850: using guessed type char var_D[13]; //----- (0048E910) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::assign@( volatile signed __int32 **a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5) { size_t v5; // ebx unsigned int v7; // [esp+8h] [ebp-14h] v5 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; if ( v5 > a4 ) v5 = a4; if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::assign", (size_t)a3, *(_DWORD *)(*(_DWORD *)this - 12)); return std::string::assign(a1, (const std::string *)((char *)a3 + *(_DWORD *)this), v5, v7); } // 48E93E: variable 'v7' is possibly undefined //----- (0048E980) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::assign@( volatile signed __int32 **a1@, size_t this, char a3, char a4) { char v5; // [esp+10h] [ebp-Ch] return std::string::_M_replace_aux(a1, 0, *((_DWORD *)*a1 - 3), this, a3, v5); } // 48E9A4: variable 'v5' is possibly undefined //----- (0048E9C0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::insert@( volatile signed __int32 **a1@, std::string *a2, volatile signed __int32 *a3, size_t a4, unsigned int a5) { return std::string::insert(a1, (std::string *)(a2 - (std::string *)*a1), a3, a4, a5); } //----- (0048E9D0) -------------------------------------------------------- char *__thiscall std::string::insert(volatile signed __int32 **this, int a2, char a3) { std::string *v4; // esi volatile signed __int32 *v5; // eax char v7; // [esp+10h] [ebp-Ch] v4 = (std::string *)(a2 - (_DWORD)*this); std::string::_M_replace_aux(this, v4, 0, 1u, a3, v7); v5 = *this; *((_DWORD *)v5 - 1) = -1; return (char *)v5 + (_DWORD)v4; } // 48E9FB: variable 'v7' is possibly undefined //----- (0048EA20) -------------------------------------------------------- volatile signed __int32 **__thiscall std::string::insert(volatile signed __int32 **this, int a2, size_t a3, char a4) { char v5; // [esp+10h] [ebp-Ch] return std::string::_M_replace_aux(this, (std::string *)(a2 - (_DWORD)*this), 0, a3, a4, v5); } // 48EA45: variable 'v5' is possibly undefined //----- (0048EA60) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::insert@( volatile signed __int32 **a1@, std::string *this, char *Str, const char *a4) { size_t v5; // eax unsigned int v7; // [esp+Ch] [ebp-10h] v5 = strlen(Str); return std::string::insert(a1, this, (volatile signed __int32 *)Str, v5, v7); } // 48EA84: variable 'v7' is possibly undefined //----- (0048EAA0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::insert@( volatile signed __int32 **a1@, std::string *this, volatile signed __int32 *a3, size_t Size, unsigned int a5) { volatile signed __int32 *v5; // edx unsigned int v6; // eax std::string *v8; // edi volatile signed __int32 **v9; // ecx char *Src; // eax char *v11; // ebp size_t v12; // esi char *v13; // ebx char *v14; // ebp size_t v15; // eax unsigned int v16; // [esp+Ch] [ebp-30h] unsigned int v17; // [esp+10h] [ebp-2Ch] volatile signed __int32 **v19; // [esp+1Ch] [ebp-20h] v5 = *a1; v6 = *((_DWORD *)*a1 - 3); if ( (unsigned int)this > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", (size_t)this, *((_DWORD *)*a1 - 3)); if ( Size > 1073741820 - v6 ) std::__throw_length_error((std::length_error *)"basic_string::insert"); if ( v5 > a3 || a3 > (volatile signed __int32 *)((char *)v5 + v6) || *((int *)v5 - 1) > 0 ) return std::string::_M_replace_safe(a1, this, 0, a3, Size, v17); v8 = (std::string *)((char *)a3 - (char *)*a1); std::string::_M_mutate(a1, (size_t)this, 0, Size, v16); v9 = a1; Src = (char *)v8 + (_DWORD)*a1; v11 = (char *)*a1 + (_DWORD)this; if ( &Src[Size] > v11 ) { if ( Src < v11 ) { v12 = this - v8; if ( this - v8 == 1 ) { *v11 = *Src; } else if ( v12 ) { memcpy(v11, Src, v12); v9 = a1; } v13 = &v11[Size]; v14 = &v11[v12]; v15 = Size - v12; if ( Size - v12 != 1 ) { if ( v15 ) { v19 = v9; memcpy(v14, v13, v15); return v19; } return v9; } *v14 = *v13; return v9; } else { if ( Size != 1 ) { if ( Size ) { memcpy(v11, &Src[Size], Size); return a1; } return v9; } *v11 = Src[1]; return a1; } } else { if ( Size != 1 ) { if ( Size ) { memcpy(v11, Src, Size); return a1; } return v9; } *v11 = *Src; return a1; } } // 48EAE6: variable 'v17' is possibly undefined // 48EB22: variable 'v16' is possibly undefined //----- (0048EC50) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::insert@( volatile signed __int32 **a1@, std::string *this, volatile signed __int32 **a3, const std::string *a4) { unsigned int v5; // [esp+Ch] [ebp-10h] return std::string::insert(a1, this, *a3, *((_DWORD *)*a3 - 3), v5); } // 48EC6B: variable 'v5' is possibly undefined //----- (0048EC80) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::insert@( volatile signed __int32 **a1@, std::string *this, _DWORD *a3, const std::string *a4, unsigned int a5, unsigned int a6) { size_t v6; // ebx unsigned int v8; // [esp+Ch] [ebp-10h] v6 = *(_DWORD *)(*a3 - 12) - (_DWORD)a4; if ( v6 > a5 ) v6 = a5; if ( (unsigned int)a4 > *(_DWORD *)(*a3 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", (size_t)a4, *(_DWORD *)(*a3 - 12)); return std::string::insert(a1, this, (volatile signed __int32 *)((char *)a4 + *a3), v6, v8); } // 48ECB6: variable 'v8' is possibly undefined //----- (0048ECF0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::insert@( volatile signed __int32 **a1@, std::string *this, size_t a3, char a4, char a5) { char v6; // [esp+10h] [ebp-Ch] if ( (unsigned int)this > *((_DWORD *)*a1 - 3) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", (size_t)this, *((_DWORD *)*a1 - 3)); return std::string::_M_replace_aux(a1, this, 0, a3, a4, v6); } // 48ED1D: variable 'v6' is possibly undefined //----- (0048ED50) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, volatile signed __int32 **this) { _DWORD *result; // eax volatile signed __int32 *v3; // edx result = ecx0; v3 = *this; if ( *((int *)*this - 1) >= 0 ) { std::string::_M_leak_hard(this); v3 = *this; result = ecx0; } *result = (char *)v3 + *((_DWORD *)v3 - 3); return result; } //----- (0048ED80) -------------------------------------------------------- void __userpurge std::string::resize(unsigned int **a1@, std::string *this, unsigned int a3) { char v3; // [esp+8h] [ebp-14h] std::string::resize(a1, (size_t)this, 0, v3); } // 48ED92: variable 'v3' is possibly undefined //----- (0048EDA0) -------------------------------------------------------- void __userpurge std::string::resize(unsigned int **a1@, size_t this, char a3, char a4) { unsigned int v4; // edx unsigned int v5; // [esp+Ch] [ebp-10h] v4 = *(*a1 - 3); if ( this > 0x3FFFFFFC ) std::__throw_length_error((std::length_error *)"basic_string::resize"); if ( this > v4 ) { std::string::append(a1, this - v4, a3); } else if ( this < v4 ) { std::string::_M_mutate((volatile signed __int32 **)a1, this, v4 - this, 0, v5); } } // 48EDF1: variable 'v5' is possibly undefined //----- (0048EE10) -------------------------------------------------------- size_t __cdecl std::string::_M_copy(void *this, const void *Src, size_t Size) { size_t result; // eax result = Size; if ( Size == 1 ) { result = *(unsigned __int8 *)Src; *(_BYTE *)this = result; } else if ( Size ) { return (size_t)memcpy(this, Src, Size); } return result; } //----- (0048EE40) -------------------------------------------------------- std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3) { std::string *result; // eax result = this; *a1 = this; return result; } //----- (0048EE50) -------------------------------------------------------- volatile signed __int32 *__fastcall std::string::_M_leak(volatile signed __int32 **a1) { volatile signed __int32 *result; // eax result = (volatile signed __int32 *)*((_DWORD *)*a1 - 1); if ( (int)result >= 0 ) return std::string::_M_leak_hard(a1); return result; } //----- (0048EE70) -------------------------------------------------------- size_t __cdecl std::string::_M_move(void *this, const void *Src, size_t Size) { size_t result; // eax result = Size; if ( Size == 1 ) { result = *(unsigned __int8 *)Src; *(_BYTE *)this = result; } else if ( Size ) { return (size_t)memmove(this, Src, Size); } return result; } //----- (0048EEA0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6) { return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); } //----- (0048EEC0) -------------------------------------------------------- volatile signed __int32 **__thiscall std::string::replace(volatile signed __int32 **this, int a2, int a3, char *Str) { size_t Size; // eax unsigned int v7; // [esp+10h] [ebp-Ch] Size = strlen(Str); return std::string::replace( this, (std::string *)(a2 - (_DWORD)*this), a3 - a2, (volatile signed __int32 *)Str, Size, v7); } // 48EEF1: variable 'v7' is possibly undefined //----- (0048EF10) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6) { return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); } //----- (0048EF30) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t a5, unsigned int a6) { return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, a5, a6); } //----- (0048EF50) -------------------------------------------------------- volatile signed __int32 **__thiscall std::string::replace( volatile signed __int32 **this, int a2, int a3, volatile signed __int32 **a4) { unsigned int v5; // [esp+10h] [ebp-Ch] return std::string::replace(this, (std::string *)(a2 - (_DWORD)*this), a3 - a2, *a4, *((_DWORD *)*a4 - 3), v5); } // 48EF78: variable 'v5' is possibly undefined //----- (0048EF90) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6) { return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); } //----- (0048EFB0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6) { return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); } //----- (0048EFD0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t a5, unsigned int a6) { return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, a5, a6); } //----- (0048EFF0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *a2, int a3, size_t a4, char a5, char a6) { return std::string::_M_replace_aux(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, a5, a6); } //----- (0048F010) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *this, unsigned int a3, char *Str, const char *a5) { size_t Size; // eax unsigned int v8; // [esp+10h] [ebp-Ch] Size = strlen(Str); return std::string::replace(a1, this, a3, (volatile signed __int32 *)Str, Size, v8); } // 48F03C: variable 'v8' is possibly undefined //----- (0048F050) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *this, unsigned int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6) { volatile signed __int32 *v6; // edi unsigned int v7; // eax unsigned int v8; // ebx volatile signed __int32 **v9; // ecx volatile signed __int32 *v11; // eax size_t v12; // edi _BYTE *v13; // esi volatile signed __int32 *v14; // edi int v15; // edx unsigned int v16; // [esp+Ch] [ebp-3Ch] unsigned int v17; // [esp+10h] [ebp-38h] volatile signed __int32 **v20; // [esp+1Ch] [ebp-2Ch] v6 = *a1; v7 = *((_DWORD *)*a1 - 3); if ( (unsigned int)this > v7 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", (size_t)this, *((_DWORD *)v6 - 3)); v8 = v7 - (_DWORD)this; if ( v7 - (unsigned int)this > a3 ) v8 = a3; if ( Size > v8 - v7 + 1073741820 ) std::__throw_length_error((std::length_error *)"basic_string::replace"); if ( v6 > a4 || a4 > (volatile signed __int32 *)((char *)v6 + v7) || *((int *)v6 - 1) > 0 ) return std::string::_M_replace_safe(a1, this, v8, a4, Size, v17); v11 = *a1; if ( (std::string *)((unsigned int)a4 + Size) <= (std::string *)((char *)this + (int)*a1) ) { v12 = (char *)a4 - (char *)v11; LABEL_13: std::string::_M_mutate(a1, (size_t)this, v8, Size, v16); v9 = a1; v13 = (char *)this + (_DWORD)*a1; if ( Size == 1 ) { *v13 = *((_BYTE *)*a1 + v12); } else if ( Size ) { memcpy(v13, (char *)*a1 + v12, Size); return a1; } return v9; } if ( a4 >= (volatile signed __int32 *)((char *)v11 + (int)this + v8) ) { v12 = Size + (char *)a4 - (char *)v11 - v8; goto LABEL_13; } v14 = std::string::_S_construct(a4, (int)a4 + Size); v9 = std::string::_M_replace_safe(a1, this, v8, v14, Size, v17); if ( v14 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v15 = _InterlockedExchangeAdd(v14 - 1, 0xFFFFFFFF); } else { v15 = *((_DWORD *)v14 - 1); *((_DWORD *)v14 - 1) = v15 - 1; } if ( v15 <= 0 ) { v20 = v9; operator delete((void *)(v14 - 3)); return v20; } } return v9; } // 48F0A7: variable 'v17' is possibly undefined // 48F10C: variable 'v16' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (0048F240) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *this, unsigned int a3, volatile signed __int32 **a4, const std::string *a5) { unsigned int v6; // [esp+10h] [ebp-Ch] return std::string::replace(a1, this, a3, *a4, *((_DWORD *)*a4 - 3), v6); } // 48F263: variable 'v6' is possibly undefined //----- (0048F280) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, unsigned int a6, unsigned int a7) { size_t Size; // ebx unsigned int v9; // [esp+10h] [ebp-Ch] Size = *(_DWORD *)(*a4 - 12) - (_DWORD)a5; if ( Size > a6 ) Size = a6; if ( (unsigned int)a5 > *(_DWORD *)(*a4 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", (size_t)a5, *(_DWORD *)(*a4 - 12)); return std::string::replace(a1, this, a3, (volatile signed __int32 *)((char *)a5 + *a4), Size, v9); } // 48F2BE: variable 'v9' is possibly undefined //----- (0048F2F0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::string::replace@( volatile signed __int32 **a1@, std::string *this, unsigned int a3, size_t a4, char a5, char a6) { unsigned int v6; // edx v6 = *((_DWORD *)*a1 - 3) - (_DWORD)this; if ( v6 > a3 ) v6 = a3; if ( (unsigned int)this > *((_DWORD *)*a1 - 3) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", (size_t)this, *((_DWORD *)*a1 - 3)); return std::string::_M_replace_aux(a1, this, v6, a4, a5, a6); } //----- (0048F360) -------------------------------------------------------- unsigned int *__userpurge std::string::reserve@(unsigned int **a1@, std::string *this, unsigned int a3) { int *v4; // ecx unsigned int *result; // eax unsigned int v6; // edx int v7; // ecx int *v8; // edx unsigned int *v9; // ecx int v10; // esi unsigned int *v11; // [esp+1Ch] [ebp-20h] char v12[13]; // [esp+2Fh] [ebp-Dh] BYREF v4 = (int *)*a1; result = (unsigned int *)this; if ( this == (std::string *)*(v4 - 2) ) { if ( *(v4 - 1) <= 0 ) return result; v4 = (int *)*a1; } v6 = *(v4 - 3); v7 = (int)(v4 - 3); if ( (unsigned int)this < v6 ) result = (unsigned int *)v6; result = std::string::_Rep::_M_clone(v7, (int)v12, (int)result - v6); v8 = (int *)*a1; v9 = *a1 - 3; if ( *a1 != (unsigned int *)&unk_4E93FC ) { if ( _CRT_MT ) { v10 = _InterlockedExchangeAdd(v8 - 1, 0xFFFFFFFF); } else { v10 = *(v8 - 1); *(v8 - 1) = v10 - 1; } if ( v10 <= 0 ) { v11 = result; operator delete(v9); result = v11; } } *a1 = result; return result; } // 15412D0: using guessed type int _CRT_MT; // 48F360: using guessed type char var_D[13]; //----- (0048F410) -------------------------------------------------------- void __fastcall std::string::pop_back(volatile signed __int32 **a1) { unsigned int v1; // eax unsigned int v2; // [esp+Ch] [ebp-10h] v1 = *((_DWORD *)*a1 - 3); if ( v1 - 1 > v1 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", 0xFFFFFFFF, 0); std::string::_M_mutate(a1, v1 - 1, 1u, 0, v2); } // 48F432: variable 'v2' is possibly undefined //----- (0048F470) -------------------------------------------------------- char *__cdecl std::string::_M_assign(std::string *this, char *Val, size_t Size) { char *result; // eax result = Val; if ( Val == (char *)1 ) { *(_BYTE *)this = Size; } else if ( Val ) { return (char *)memset(this, (char)Size, (size_t)Val); } return result; } //----- (0048F4B0) -------------------------------------------------------- void __userpurge std::string::_M_mutate( volatile signed __int32 **a1@, size_t this, unsigned int a3, unsigned int a4, unsigned int a5) { int v6; // esi unsigned int v7; // edx unsigned int v8; // edi size_t Size; // esi unsigned int *v10; // eax int v11; // ecx unsigned int *v12; // ebp volatile signed __int32 *v13; // edx volatile signed __int32 *Src; // eax volatile signed __int32 *v15; // eax _BYTE *v16; // eax _BYTE *v17; // ecx _BYTE *v18; // edx int v19; // esi volatile signed __int32 *v20; // [esp+18h] [ebp-34h] volatile signed __int32 *v21; // [esp+1Ch] [ebp-30h] volatile signed __int32 *v22; // [esp+1Ch] [ebp-30h] v6 = *((_DWORD *)*a1 - 3); v7 = *((_DWORD *)*a1 - 2); v8 = v6 + a4 - a3; Size = v6 - (a3 + this); if ( v8 > v7 ) { LABEL_4: v10 = std::string::_Rep::_S_create(v8, v7); v11 = a3 + this; v12 = v10; v13 = (volatile signed __int32 *)(v10 + 3); if ( this ) { Src = *a1; v13 = (volatile signed __int32 *)(v12 + 3); if ( this == 1 ) { *((_BYTE *)v12 + 12) = *(_BYTE *)Src; v15 = *a1; if ( !Size ) goto LABEL_10; goto LABEL_8; } memcpy(v12 + 3, (const void *)Src, this); v11 = a3 + this; v13 = (volatile signed __int32 *)(v12 + 3); } v15 = *a1; if ( !Size ) goto LABEL_10; LABEL_8: v16 = (char *)v15 + v11; if ( Size == 1 ) { *((_BYTE *)v12 + this + a4 + 12) = *v16; v15 = *a1; v20 = *a1 - 3; if ( *a1 == (volatile signed __int32 *)&unk_4E93FC ) goto LABEL_11; goto LABEL_20; } v21 = v13; memcpy((char *)v12 + this + a4 + 12, v16, Size); v15 = *a1; v13 = v21; LABEL_10: v20 = v15 - 3; if ( v15 == (volatile signed __int32 *)&unk_4E93FC ) { LABEL_11: *a1 = v13; goto LABEL_12; } LABEL_20: if ( _CRT_MT ) { v19 = _InterlockedExchangeAdd(v15 - 1, 0xFFFFFFFF); } else { v19 = *((_DWORD *)v15 - 1); *((_DWORD *)v15 - 1) = v19 - 1; } if ( v19 <= 0 ) { v22 = v13; operator delete((void *)v20); v13 = v22; } goto LABEL_11; } if ( *((int *)*a1 - 1) > 0 ) { v7 = *((_DWORD *)*a1 - 2); goto LABEL_4; } v13 = *a1; if ( Size && a4 != a3 ) { v17 = (char *)v13 + a3 + this; v18 = (char *)v13 + this + a4; if ( Size == 1 ) { *v18 = *v17; v13 = *a1; v12 = (unsigned int *)(*a1 - 3); LABEL_12: if ( v12 == &std::string::_Rep::_S_empty_rep_storage ) return; LABEL_19: *((_DWORD *)v13 - 1) = 0; *((_DWORD *)v13 - 3) = v8; *((_BYTE *)v13 + v8) = 0; return; } memmove(v18, v17, Size); v13 = *a1; } if ( v13 - 3 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) goto LABEL_19; } // 15412D0: using guessed type int _CRT_MT; //----- (0048F6A0) -------------------------------------------------------- unsigned int *__userpurge std::string::push_back@(unsigned int **a1@, std::string *this, char a3) { int v4; // edi unsigned int *result; // eax unsigned int v6; // [esp+4h] [ebp-28h] v4 = *(*a1 - 3); if ( v4 + 1 > *(*a1 - 2) || (int)*(*a1 - 1) > 0 ) std::string::reserve(a1, (std::string *)(v4 + 1), v6); *((_BYTE *)*a1 + *(*a1 - 3)) = (_BYTE)this; result = *a1; if ( *a1 != (unsigned int *)&unk_4E93FC ) { *(result - 1) = 0; *(result - 3) = v4 + 1; *((_BYTE *)result + v4 + 1) = 0; } return result; } // 48F6C6: variable 'v6' is possibly undefined //----- (0048F710) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_4E93FC; return result; } //----- (0048F730) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_4E93FC; return result; } //----- (0048F750) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3) { int v3; // eax _DWORD *result; // eax v3 = -1; if ( Str ) v3 = (int)&Str[strlen(Str)]; result = std::string::_S_construct(Str, v3); *this = result; return result; } //----- (0048F7A0) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) { _DWORD *result; // eax result = std::string::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (0048F7E0) -------------------------------------------------------- void __thiscall std::string::string(_DWORD *this, int a2) { *this = &unk_4E93FC; } //----- (0048F7F0) -------------------------------------------------------- unsigned int *__userpurge std::string::string@( unsigned int **a1@, unsigned int **this, const std::string *a3) { unsigned int *result; // eax unsigned int *v5; // ecx char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF result = *this; v5 = *this - 3; if ( (*(*this - 1) & 0x80000000) != 0 ) { result = std::string::_Rep::_M_clone((int)v5, (int)v6, 0); *a1 = result; } else { if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); else ++*(result - 1); } *a1 = result; } return result; } // 15412D0: using guessed type int _CRT_MT; // 48F7F0: using guessed type char var_D[13]; //----- (0048F870) -------------------------------------------------------- unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3) { unsigned int *result; // eax unsigned int *v5; // ecx result = *a2; v5 = *a2 - 3; if ( (*(*a2 - 1) & 0x80000000) != 0 ) { result = std::string::_Rep::_M_clone((int)v5, a3, 0); *this = result; } else { if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); else ++*(result - 1); } *this = result; } return result; } // 15412D0: using guessed type int _CRT_MT; //----- (0048F8F0) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v5; // edx _DWORD *result; // eax v5 = *(_DWORD *)(*a2 - 12); if ( a3 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *(_DWORD *)(*a2 - 12)); result = std::string::_S_construct((_BYTE *)(a3 + *a2), *a2 + v5); *this = result; return result; } //----- (0048F950) -------------------------------------------------------- _DWORD *__userpurge std::string::string@( _DWORD *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5) { int v6; // edx unsigned int v7; // eax char *v8; // eax _DWORD *result; // eax v6 = *(_DWORD *)this; v7 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; if ( v7 > a4 ) v7 = a4; v8 = (char *)a3 + v7 + v6; if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", (size_t)a3, *(_DWORD *)(*(_DWORD *)this - 12)); result = std::string::_S_construct((_BYTE *)a3 + v6, (int)v8); *a1 = result; return result; } //----- (0048F9C0) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) { int v6; // edx unsigned int v7; // eax int v8; // eax _DWORD *result; // eax v6 = *a2; v7 = *(_DWORD *)(*a2 - 12) - a3; if ( v7 > a4 ) v7 = a4; v8 = v6 + a3 + v7; if ( a3 > *(_DWORD *)(*a2 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *(_DWORD *)(*a2 - 12)); result = std::string::_S_construct((_BYTE *)(a3 + v6), v8); *this = result; return result; } //----- (0048FA30) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) { _DWORD *result; // eax result = std::string::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (0048FA70) -------------------------------------------------------- unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4) { unsigned int *result; // eax result = (unsigned int *)&unk_4E93FC; if ( a2 ) { result = std::string::_S_construct(a2, a3); *this = result; } else { *this = (unsigned int *)&unk_4E93FC; } return result; } //----- (0048FAB0) -------------------------------------------------------- void __fastcall std::string::string(_DWORD *a1) { *a1 = &unk_4E93FC; } //----- (0048FAC0) -------------------------------------------------------- void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>( _DWORD *this, _BYTE *a2, _BYTE *a3, int a4) { void *result; // eax result = std::string::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); *this = result; return result; } //----- (0048FAF0) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) { _DWORD *result; // eax result = std::string::_S_construct(a2, a3); *this = result; return result; } //----- (0048FB20) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) { _DWORD *result; // eax result = std::string::_S_construct(a2, a3); *this = result; return result; } //----- (0048FB50) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_4E93FC; return result; } //----- (0048FB70) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_4E93FC; return result; } //----- (0048FB90) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3) { int v3; // eax _DWORD *result; // eax v3 = -1; if ( Str ) v3 = (int)&Str[strlen(Str)]; result = std::string::_S_construct(Str, v3); *this = result; return result; } //----- (0048FBE0) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) { _DWORD *result; // eax result = std::string::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (0048FC20) -------------------------------------------------------- void __thiscall std::string::string(_DWORD *this, int a2) { *this = &unk_4E93FC; } //----- (0048FC30) -------------------------------------------------------- unsigned int *__userpurge std::string::string@( unsigned int **a1@, unsigned int **this, const std::string *a3) { unsigned int *result; // eax unsigned int *v5; // ecx char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF result = *this; v5 = *this - 3; if ( (*(*this - 1) & 0x80000000) != 0 ) { result = std::string::_Rep::_M_clone((int)v5, (int)v6, 0); *a1 = result; } else { if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); else ++*(result - 1); } *a1 = result; } return result; } // 15412D0: using guessed type int _CRT_MT; // 48FC30: using guessed type char var_D[13]; //----- (0048FCB0) -------------------------------------------------------- unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3) { unsigned int *result; // eax unsigned int *v5; // ecx result = *a2; v5 = *a2 - 3; if ( (*(*a2 - 1) & 0x80000000) != 0 ) { result = std::string::_Rep::_M_clone((int)v5, a3, 0); *this = result; } else { if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); else ++*(result - 1); } *this = result; } return result; } // 15412D0: using guessed type int _CRT_MT; //----- (0048FD30) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v5; // edx _DWORD *result; // eax v5 = *(_DWORD *)(*a2 - 12); if ( a3 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *(_DWORD *)(*a2 - 12)); result = std::string::_S_construct((_BYTE *)(a3 + *a2), *a2 + v5); *this = result; return result; } //----- (0048FD90) -------------------------------------------------------- _DWORD *__userpurge std::string::string@( _DWORD *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5) { int v6; // edx unsigned int v7; // eax char *v8; // eax _DWORD *result; // eax v6 = *(_DWORD *)this; v7 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; if ( v7 > a4 ) v7 = a4; v8 = (char *)a3 + v7 + v6; if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", (size_t)a3, *(_DWORD *)(*(_DWORD *)this - 12)); result = std::string::_S_construct((_BYTE *)a3 + v6, (int)v8); *a1 = result; return result; } //----- (0048FE00) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) { int v6; // edx unsigned int v7; // eax int v8; // eax _DWORD *result; // eax v6 = *a2; v7 = *(_DWORD *)(*a2 - 12) - a3; if ( v7 > a4 ) v7 = a4; v8 = v6 + a3 + v7; if ( a3 > *(_DWORD *)(*a2 - 12) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *(_DWORD *)(*a2 - 12)); result = std::string::_S_construct((_BYTE *)(a3 + v6), v8); *this = result; return result; } //----- (0048FE70) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) { _DWORD *result; // eax result = std::string::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (0048FEB0) -------------------------------------------------------- unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4) { unsigned int *result; // eax result = (unsigned int *)&unk_4E93FC; if ( a2 ) { result = std::string::_S_construct(a2, a3); *this = result; } else { *this = (unsigned int *)&unk_4E93FC; } return result; } //----- (0048FEF0) -------------------------------------------------------- void __fastcall std::string::string(_DWORD *a1) { *a1 = &unk_4E93FC; } //----- (0048FF00) -------------------------------------------------------- void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>( _DWORD *this, _BYTE *a2, _BYTE *a3, int a4) { void *result; // eax result = std::string::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); *this = result; return result; } //----- (0048FF30) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) { _DWORD *result; // eax result = std::string::_S_construct(a2, a3); *this = result; return result; } //----- (0048FF60) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) { _DWORD *result; // eax result = std::string::_S_construct(a2, a3); *this = result; return result; } //----- (0048FF90) -------------------------------------------------------- void __fastcall std::string::~string(volatile signed __int32 **a1) { volatile signed __int32 *v1; // eax int v2; // ecx v1 = *a1; if ( *a1 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 - 1); *((_DWORD *)v1 - 1) = v2 - 1; } if ( v2 <= 0 ) operator delete((void *)(v1 - 3)); } } // 15412D0: using guessed type int _CRT_MT; //----- (0048FFF0) -------------------------------------------------------- void __fastcall std::string::~string(volatile signed __int32 **a1) { volatile signed __int32 *v1; // eax int v2; // ecx v1 = *a1; if ( *a1 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 - 1); *((_DWORD *)v1 - 1) = v2 - 1; } if ( v2 <= 0 ) operator delete((void *)(v1 - 3)); } } // 15412D0: using guessed type int _CRT_MT; //----- (00490050) -------------------------------------------------------- #error "49005A: call analysis failed (funcsize=8)" //----- (00490070) -------------------------------------------------------- volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *Str) { size_t v3; // eax unsigned int v5; // [esp+8h] [ebp-14h] v3 = strlen((const char *)Str); return std::string::assign(this, Str, v3, v5); } // 49008C: variable 'v5' is possibly undefined //----- (004900B0) -------------------------------------------------------- volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *a2, size_t a3) { unsigned int v5; // [esp+8h] [ebp-14h] std::string::assign(this, a2, a3, v5); return this; } // 4900C5: variable 'v5' is possibly undefined //----- (004900E0) -------------------------------------------------------- volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, char a2) { char v4; // [esp+10h] [ebp-Ch] std::string::_M_replace_aux(this, 0, *((_DWORD *)*this - 3), 1u, a2, v4); return this; } // 490107: variable 'v4' is possibly undefined //----- (00490120) -------------------------------------------------------- char *__thiscall std::string::operator[](volatile signed __int32 **this, int a2) { volatile signed __int32 *v2; // eax v2 = *this; if ( *((int *)*this - 1) >= 0 ) { std::string::_M_leak_hard(this); v2 = *this; } return (char *)v2 + a2; } //----- (00490150) -------------------------------------------------------- unsigned int **__thiscall std::string::operator+=(unsigned int **this, std::string *Str) { size_t v3; // eax unsigned int v5; // [esp+8h] [ebp-14h] v3 = strlen((const char *)Str); return std::string::append(this, Str, v3, v5); } // 49016C: variable 'v5' is possibly undefined //----- (004901A0) -------------------------------------------------------- unsigned int **__thiscall std::string::operator+=(unsigned int **this, char a2) { int v3; // edi unsigned int *v4; // eax unsigned int v6; // [esp+4h] [ebp-28h] v3 = *(*this - 3); if ( v3 + 1 > *(*this - 2) || (int)*(*this - 1) > 0 ) std::string::reserve(this, (std::string *)(v3 + 1), v6); *((_BYTE *)*this + *(*this - 3)) = a2; v4 = *this; if ( *this != (unsigned int *)&unk_4E93FC ) { *(v4 - 1) = 0; *(v4 - 3) = v3 + 1; *((_BYTE *)v4 + v3 + 1) = 0; } return this; } // 4901C6: variable 'v6' is possibly undefined //----- (00490210) -------------------------------------------------------- int __cdecl std::__num_base::_S_format_float(std::__num_base *this, const std::ios_base *a2, char *a3) { int result; // eax char *v4; // edx int v5; // edi _BYTE *v6; // ecx int v7; // eax result = *((_DWORD *)this + 3); v4 = (char *)a2 + 1; *(_BYTE *)a2 = 37; if ( (result & 0x800) != 0 ) { *((_BYTE *)a2 + 1) = 43; v4 = (char *)a2 + 2; } if ( (result & 0x400) != 0 ) *v4++ = 35; *(_WORD *)v4 = 10798; v5 = result & 0x104; if ( (_BYTE)a3 ) { v6 = v4 + 3; v4[2] = (char)a3; if ( v5 != 4 ) goto LABEL_7; LABEL_12: *v6 = 102; v6[1] = 0; return result; } v6 = v4 + 2; if ( v5 == 4 ) goto LABEL_12; LABEL_7: v7 = (result & 0x4000) == 0 ? 0x20 : 0; if ( v5 == 256 ) result = v7 + 69; else result = v7 + 71; v6[1] = 0; *v6 = result; return result; } //----- (004902B0) -------------------------------------------------------- void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5E7C; std::exception::~exception(v2); operator delete(a1, 4u); } // 4902BC: variable 'v2' is possibly undefined // 4F5E7C: using guessed type void (__cdecl *off_4F5E7C)(std::bad_typeid *__hidden this); //----- (004902E0) -------------------------------------------------------- void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_4F5E7C; std::exception::~exception(a1); } // 4902E0: variable 'v1' is possibly undefined // 4F5E7C: using guessed type void (__cdecl *off_4F5E7C)(std::bad_typeid *__hidden this); //----- (004902F0) -------------------------------------------------------- int __cdecl std::money_base::_S_construct_pattern() { return std::money_base::_S_default_pattern; } // 4F0AC0: using guessed type int std::money_base::_S_default_pattern; //----- (00490300) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // ecx _DWORD *v6; // eax int result; // eax void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new((struct type_info *)0x44, v8); *v4 = &off_4F66C4; v4[1] = 0; v4[2] = 0; v4[3] = 0; *((_WORD *)v4 + 8) = 0; *((_BYTE *)v4 + 18) = 0; v4[5] = 0; v4[6] = 0; v4[7] = 0; v4[8] = 0; v4[9] = 0; v4[10] = 0; v4[11] = 0; v4[12] = 0; v4[13] = 0; *((_BYTE *)v4 + 67) = 0; this[2] = v4; } *((_BYTE *)v4 + 17) = 46; v5 = std::money_base::_S_atoms; *(_BYTE *)(this[2] + 18) = 44; v6 = (_DWORD *)this[2]; v6[2] = &unk_4EC62C; v6[3] = 0; v6[5] = &unk_4EC62C; v6[6] = 0; v6[7] = &unk_4EC62C; v6[8] = 0; v6[9] = &unk_4EC62C; v6[10] = 0; v6[11] = 0; v6[12] = std::money_base::_S_default_pattern; *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; for ( result = 0; result != 11; ++result ) *(_BYTE *)(this[2] + result + 56) = v5[result]; return result; } // 4903A7: variable 'v8' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4F0AC0: using guessed type int std::money_base::_S_default_pattern; // 4F66C4: using guessed type int (*off_4F66C4)(); //----- (00490420) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5E90; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5E90: using guessed type int (*off_4F5E90)(); //----- (00490480) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5E90; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5E90: using guessed type int (*off_4F5E90)(); //----- (004904E0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5E90; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5E90: using guessed type int (*off_4F5E90)(); //----- (00490540) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5E90; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5E90: using guessed type int (*off_4F5E90)(); //----- (004905A0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5E90; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5E90: using guessed type int (*off_4F5E90)(); //----- (00490600) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5E90; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5E90: using guessed type int (*off_4F5E90)(); //----- (00490660) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 490667: variable 'v2' is possibly undefined //----- (00490690) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F5E90; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 490697: variable 'v1' is possibly undefined // 4F5E90: using guessed type int (*off_4F5E90)(); //----- (004906C0) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // ecx _DWORD *v6; // eax int result; // eax void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new((struct type_info *)0x44, v8); *v4 = &off_4F66D4; v4[1] = 0; v4[2] = 0; v4[3] = 0; *((_WORD *)v4 + 8) = 0; *((_BYTE *)v4 + 18) = 0; v4[5] = 0; v4[6] = 0; v4[7] = 0; v4[8] = 0; v4[9] = 0; v4[10] = 0; v4[11] = 0; v4[12] = 0; v4[13] = 0; *((_BYTE *)v4 + 67) = 0; this[2] = v4; } *((_BYTE *)v4 + 17) = 46; v5 = std::money_base::_S_atoms; *(_BYTE *)(this[2] + 18) = 44; v6 = (_DWORD *)this[2]; v6[2] = &unk_4EC62C; v6[3] = 0; v6[5] = &unk_4EC62C; v6[6] = 0; v6[7] = &unk_4EC62C; v6[8] = 0; v6[9] = &unk_4EC62C; v6[10] = 0; v6[11] = 0; v6[12] = std::money_base::_S_default_pattern; *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; for ( result = 0; result != 11; ++result ) *(_BYTE *)(this[2] + result + 56) = v5[result]; return result; } // 490767: variable 'v8' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4F0AC0: using guessed type int std::money_base::_S_default_pattern; // 4F66D4: using guessed type int (*off_4F66D4)(); //----- (004907E0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5EC4; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5EC4: using guessed type int (*off_4F5EC4)(); //----- (00490840) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5EC4; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5EC4: using guessed type int (*off_4F5EC4)(); //----- (004908A0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5EC4; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5EC4: using guessed type int (*off_4F5EC4)(); //----- (00490900) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5EC4; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5EC4: using guessed type int (*off_4F5EC4)(); //----- (00490960) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5EC4; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5EC4: using guessed type int (*off_4F5EC4)(); //----- (004909C0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5EC4; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5EC4: using guessed type int (*off_4F5EC4)(); //----- (00490A20) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 490A27: variable 'v2' is possibly undefined //----- (00490A50) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F5EC4; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 490A57: variable 'v1' is possibly undefined // 4F5EC4: using guessed type int (*off_4F5EC4)(); //----- (00490A80) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // ebx int v6; // ecx int result; // eax void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new((struct type_info *)0x54, v8); v4[1] = 0; *v4 = &off_4F66E4; v4[2] = 0; v4[3] = 0; *((_BYTE *)v4 + 16) = 0; *(_DWORD *)((char *)v4 + 18) = 0; v4[6] = 0; v4[7] = 0; v4[8] = 0; v4[9] = 0; v4[10] = 0; v4[11] = 0; v4[12] = 0; v4[13] = 0; v4[14] = 0; *((_BYTE *)v4 + 82) = 0; this[2] = v4; } *(_DWORD *)((char *)v4 + 18) = 2883630; v4[2] = &unk_4EC62C; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_4EC62E; v4[7] = 0; v4[8] = &unk_4EC62E; v4[9] = 0; v4[10] = &unk_4EC62E; v4[11] = 0; v4[12] = 0; *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; v6 = this[2]; for ( result = 0; result != 11; ++result ) *(_WORD *)(v6 + 2 * result + 60) = v5[result]; return result; } // 490B1F: variable 'v8' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4F0AC0: using guessed type int std::money_base::_S_default_pattern; // 4F66E4: using guessed type int (*off_4F66E4)(); //----- (00490BA0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5EF8; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5EF8: using guessed type int (*off_4F5EF8)(); //----- (00490C00) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5EF8; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5EF8: using guessed type int (*off_4F5EF8)(); //----- (00490C60) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5EF8; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5EF8: using guessed type int (*off_4F5EF8)(); //----- (00490CC0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5EF8; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5EF8: using guessed type int (*off_4F5EF8)(); //----- (00490D20) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5EF8; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5EF8: using guessed type int (*off_4F5EF8)(); //----- (00490D80) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5EF8; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5EF8: using guessed type int (*off_4F5EF8)(); //----- (00490DE0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 490DE7: variable 'v2' is possibly undefined //----- (00490E10) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F5EF8; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 490E17: variable 'v1' is possibly undefined // 4F5EF8: using guessed type int (*off_4F5EF8)(); //----- (00490E40) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // ebx int v6; // ecx int result; // eax void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new((struct type_info *)0x54, v8); v4[1] = 0; *v4 = &off_4F66F4; v4[2] = 0; v4[3] = 0; *((_BYTE *)v4 + 16) = 0; *(_DWORD *)((char *)v4 + 18) = 0; v4[6] = 0; v4[7] = 0; v4[8] = 0; v4[9] = 0; v4[10] = 0; v4[11] = 0; v4[12] = 0; v4[13] = 0; v4[14] = 0; *((_BYTE *)v4 + 82) = 0; this[2] = v4; } *(_DWORD *)((char *)v4 + 18) = 2883630; v4[2] = &unk_4EC62C; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_4EC62E; v4[7] = 0; v4[8] = &unk_4EC62E; v4[9] = 0; v4[10] = &unk_4EC62E; v4[11] = 0; v4[12] = 0; *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; v6 = this[2]; for ( result = 0; result != 11; ++result ) *(_WORD *)(v6 + 2 * result + 60) = v5[result]; return result; } // 490EDF: variable 'v8' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4F0AC0: using guessed type int std::money_base::_S_default_pattern; // 4F66F4: using guessed type int (*off_4F66F4)(); //----- (00490F60) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5F2C; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5F2C: using guessed type int (*off_4F5F2C)(); //----- (00490FC0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5F2C; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5F2C: using guessed type int (*off_4F5F2C)(); //----- (00491020) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5F2C; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5F2C: using guessed type int (*off_4F5F2C)(); //----- (00491080) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5F2C; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5F2C: using guessed type int (*off_4F5F2C)(); //----- (004910E0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5F2C; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5F2C: using guessed type int (*off_4F5F2C)(); //----- (00491140) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5F2C; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5F2C: using guessed type int (*off_4F5F2C)(); //----- (004911A0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4911A7: variable 'v2' is possibly undefined //----- (004911D0) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F5F2C; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4911D7: variable 'v1' is possibly undefined // 4F5F2C: using guessed type int (*off_4F5F2C)(); //----- (00491200) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) { _DWORD *result; // eax void (__cdecl *v4)(void *); // [esp+4h] [ebp-18h] result = (_DWORD *)this[2]; if ( !result ) { result = operator new((struct type_info *)0xC8, v4); result[1] = 0; *result = &off_4F65D4; result[2] = 0; result[3] = 0; result[4] = 0; result[5] = 0; result[6] = 0; result[7] = 0; result[8] = 0; result[9] = 0; result[10] = 0; result[11] = 0; result[12] = 0; result[13] = 0; result[14] = 0; result[15] = 0; result[16] = 0; result[17] = 0; result[18] = 0; result[19] = 0; result[20] = 0; result[21] = 0; result[22] = 0; result[23] = 0; result[24] = 0; result[25] = 0; result[26] = 0; result[27] = 0; result[28] = 0; result[29] = 0; result[30] = 0; result[31] = 0; result[32] = 0; result[33] = 0; result[34] = 0; result[35] = 0; result[36] = 0; result[37] = 0; result[38] = 0; result[39] = 0; result[40] = 0; result[41] = 0; result[42] = 0; result[43] = 0; result[44] = 0; result[45] = 0; result[46] = 0; result[47] = 0; result[48] = 0; *((_BYTE *)result + 196) = 0; this[2] = result; } result[2] = "%m/%d/%y"; result[3] = "%m/%d/%y"; result[4] = "%H:%M:%S"; result[5] = "%H:%M:%S"; result[6] = &off_4EDDB6; result[7] = &off_4EDDB6; result[8] = 5168567; result[9] = &unk_4EDDBA; result[10] = &off_4EDDB6; result[11] = "Sunday"; result[12] = "Monday"; result[13] = "Tuesday"; result[14] = "Wednesday"; result[15] = "Thursday"; result[16] = "Friday"; result[17] = "Saturday"; result[18] = &off_4EDDF6; result[19] = &off_4EDDFA; result[20] = &off_4EDDFE; result[21] = &off_4EDE02; result[22] = &off_4EDE06; result[23] = &off_4EDE0A; result[24] = &off_4EDE0E; result[25] = "January"; result[26] = "February"; result[27] = "March"; result[28] = "April"; result[29] = &off_4EDE2F; result[30] = "June"; result[31] = "July"; result[32] = "August"; result[33] = "September"; result[34] = "October"; result[35] = "November"; result[36] = "December"; result[37] = &off_4EDE68; result[38] = &off_4EDE6C; result[39] = &off_4EDE70; result[40] = &off_4EDE74; result[41] = &off_4EDE2F; result[42] = &off_4EDE78; result[43] = &off_4EDE7C; result[44] = &off_4EDE80; result[45] = &off_4EDE84; result[46] = &off_4EDE88; result[47] = &off_4EDE8C; result[48] = &off_4EDE90; return result; } // 4913A1: variable 'v4' is possibly undefined // 4EDDB6: using guessed type void *off_4EDDB6; // 4EDDF6: using guessed type void *off_4EDDF6; // 4EDDFA: using guessed type void *off_4EDDFA; // 4EDDFE: using guessed type void *off_4EDDFE; // 4EDE02: using guessed type void *off_4EDE02; // 4EDE06: using guessed type void *off_4EDE06; // 4EDE0A: using guessed type void *off_4EDE0A; // 4EDE0E: using guessed type void *off_4EDE0E; // 4EDE2F: using guessed type void *off_4EDE2F; // 4EDE68: using guessed type void *off_4EDE68; // 4EDE6C: using guessed type void *off_4EDE6C; // 4EDE70: using guessed type void *off_4EDE70; // 4EDE74: using guessed type void *off_4EDE74; // 4EDE78: using guessed type void *off_4EDE78; // 4EDE7C: using guessed type void *off_4EDE7C; // 4EDE80: using guessed type void *off_4EDE80; // 4EDE84: using guessed type void *off_4EDE84; // 4EDE88: using guessed type void *off_4EDE88; // 4EDE8C: using guessed type void *off_4EDE8C; // 4EDE90: using guessed type void *off_4EDE90; // 4F65D4: using guessed type int (*off_4F65D4)(); //----- (00491540) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { *this = &off_4F5F60; this[1] = a3 != 0; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 4F5F60: using guessed type int (*off_4F5F60)(); //----- (004915A0) -------------------------------------------------------- #error "491653: call analysis failed (funcsize=61)" //----- (00491680) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { *this = &off_4F5F60; this[2] = 0; this[1] = a2 != 0; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 4F5F60: using guessed type int (*off_4F5F60)(); //----- (004916E0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { *this = &off_4F5F60; this[1] = a3 != 0; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 4F5F60: using guessed type int (*off_4F5F60)(); //----- (00491740) -------------------------------------------------------- #error "4917F3: call analysis failed (funcsize=61)" //----- (00491820) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { *this = &off_4F5F60; this[2] = 0; this[1] = a2 != 0; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 4F5F60: using guessed type int (*off_4F5F60)(); //----- (00491880) -------------------------------------------------------- void __fastcall std::__timepunct::~__timepunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::__timepunct::~__timepunct(v2); operator delete(a1); } // 491886: variable 'v2' is possibly undefined //----- (004918A0) -------------------------------------------------------- void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int **v3; // esi int v4; // ecx v2 = v1; *v1 = &off_4F5F60; v3 = (int **)v1[4]; if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) operator delete[](v3); v4 = v2[2]; if ( v4 ) (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); std::locale::facet::~facet(a1); } // 4918A2: variable 'v1' is possibly undefined // 4F5F60: using guessed type int (*off_4F5F60)(); //----- (004918F0) -------------------------------------------------------- void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int **v3; // esi int v4; // ecx v2 = v1; *v1 = &off_4F5F60; v3 = (int **)v1[4]; if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) operator delete[](v3); v4 = v2[2]; if ( v4 ) (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); std::locale::facet::~facet(a1); } // 4918F2: variable 'v1' is possibly undefined // 4F5F60: using guessed type int (*off_4F5F60)(); //----- (00491940) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) { _DWORD *result; // eax void (__cdecl *v4)(void *); // [esp+4h] [ebp-18h] result = (_DWORD *)this[2]; if ( !result ) { result = operator new((struct type_info *)0xC8, v4); result[1] = 0; *result = &off_4F65E4; result[2] = 0; result[3] = 0; result[4] = 0; result[5] = 0; result[6] = 0; result[7] = 0; result[8] = 0; result[9] = 0; result[10] = 0; result[11] = 0; result[12] = 0; result[13] = 0; result[14] = 0; result[15] = 0; result[16] = 0; result[17] = 0; result[18] = 0; result[19] = 0; result[20] = 0; result[21] = 0; result[22] = 0; result[23] = 0; result[24] = 0; result[25] = 0; result[26] = 0; result[27] = 0; result[28] = 0; result[29] = 0; result[30] = 0; result[31] = 0; result[32] = 0; result[33] = 0; result[34] = 0; result[35] = 0; result[36] = 0; result[37] = 0; result[38] = 0; result[39] = 0; result[40] = 0; result[41] = 0; result[42] = 0; result[43] = 0; result[44] = 0; result[45] = 0; result[46] = 0; result[47] = 0; result[48] = 0; *((_BYTE *)result + 196) = 0; this[2] = result; } result[2] = &off_4EDE94; result[3] = &off_4EDE94; result[4] = "%"; result[5] = "%"; result[6] = &unk_4EDEB8; result[7] = &unk_4EDEB8; result[8] = &off_4EDEBA; result[9] = &off_4EDEC0; result[10] = &unk_4EDEB8; result[11] = &off_4EDEC6; result[12] = &off_4EDED4; result[13] = &off_4EDEE2; result[14] = &off_4EDEF2; result[15] = &off_4EDF06; result[16] = &off_4EDF18; result[17] = &off_4EDF26; result[18] = &off_4EDF38; result[19] = &off_4EDF40; result[20] = &off_4EDF48; result[21] = &off_4EDF50; result[22] = &off_4EDF58; result[23] = &off_4EDF60; result[24] = &off_4EDF68; result[25] = &off_4EDF70; result[26] = &off_4EDF80; result[27] = &off_4EDF92; result[28] = &off_4EDF9E; result[29] = &off_4EDFAA; result[30] = &off_4EDFB2; result[31] = &off_4EDFBC; result[32] = &off_4EDFC6; result[33] = &off_4EDFD4; result[34] = &off_4EDFE8; result[35] = &off_4EDFF8; result[36] = &off_4EE00A; result[37] = &off_4EE01C; result[38] = &off_4EE024; result[39] = &off_4EE02C; result[40] = &off_4EE034; result[41] = &off_4EDFAA; result[42] = &off_4EE03C; result[43] = &off_4EE044; result[44] = &off_4EE04C; result[45] = &off_4EE054; result[46] = &off_4EE05C; result[47] = &off_4EE064; result[48] = &off_4EE06C; return result; } // 491AE1: variable 'v4' is possibly undefined // 4EDE94: using guessed type void *off_4EDE94; // 4EDEBA: using guessed type void *off_4EDEBA; // 4EDEC0: using guessed type void *off_4EDEC0; // 4EDEC6: using guessed type void *off_4EDEC6; // 4EDED4: using guessed type void *off_4EDED4; // 4EDEE2: using guessed type void *off_4EDEE2; // 4EDEF2: using guessed type void *off_4EDEF2; // 4EDF06: using guessed type void *off_4EDF06; // 4EDF18: using guessed type void *off_4EDF18; // 4EDF26: using guessed type void *off_4EDF26; // 4EDF38: using guessed type void *off_4EDF38; // 4EDF40: using guessed type void *off_4EDF40; // 4EDF48: using guessed type void *off_4EDF48; // 4EDF50: using guessed type void *off_4EDF50; // 4EDF58: using guessed type void *off_4EDF58; // 4EDF60: using guessed type void *off_4EDF60; // 4EDF68: using guessed type void *off_4EDF68; // 4EDF70: using guessed type void *off_4EDF70; // 4EDF80: using guessed type void *off_4EDF80; // 4EDF92: using guessed type void *off_4EDF92; // 4EDF9E: using guessed type void *off_4EDF9E; // 4EDFAA: using guessed type void *off_4EDFAA; // 4EDFB2: using guessed type void *off_4EDFB2; // 4EDFBC: using guessed type void *off_4EDFBC; // 4EDFC6: using guessed type void *off_4EDFC6; // 4EDFD4: using guessed type void *off_4EDFD4; // 4EDFE8: using guessed type void *off_4EDFE8; // 4EDFF8: using guessed type void *off_4EDFF8; // 4EE00A: using guessed type void *off_4EE00A; // 4EE01C: using guessed type void *off_4EE01C; // 4EE024: using guessed type void *off_4EE024; // 4EE02C: using guessed type void *off_4EE02C; // 4EE034: using guessed type void *off_4EE034; // 4EE03C: using guessed type void *off_4EE03C; // 4EE044: using guessed type void *off_4EE044; // 4EE04C: using guessed type void *off_4EE04C; // 4EE054: using guessed type void *off_4EE054; // 4EE05C: using guessed type void *off_4EE05C; // 4EE064: using guessed type void *off_4EE064; // 4EE06C: using guessed type void *off_4EE06C; // 4F65E4: using guessed type int (*off_4F65E4)(); //----- (00491C80) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { *this = &off_4F5F70; this[1] = a3 != 0; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 4F5F70: using guessed type int (*off_4F5F70)(); //----- (00491CE0) -------------------------------------------------------- #error "491D93: call analysis failed (funcsize=61)" //----- (00491DC0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { *this = &off_4F5F70; this[2] = 0; this[1] = a2 != 0; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 4F5F70: using guessed type int (*off_4F5F70)(); //----- (00491E20) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { *this = &off_4F5F70; this[1] = a3 != 0; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 4F5F70: using guessed type int (*off_4F5F70)(); //----- (00491E80) -------------------------------------------------------- #error "491F33: call analysis failed (funcsize=61)" //----- (00491F60) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { *this = &off_4F5F70; this[2] = 0; this[1] = a2 != 0; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 4F5F70: using guessed type int (*off_4F5F70)(); //----- (00491FC0) -------------------------------------------------------- void __fastcall std::__timepunct::~__timepunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::__timepunct::~__timepunct(v2); operator delete(a1); } // 491FC6: variable 'v2' is possibly undefined //----- (00491FE0) -------------------------------------------------------- void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int **v3; // esi int v4; // ecx v2 = v1; *v1 = &off_4F5F70; v3 = (int **)v1[4]; if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) operator delete[](v3); v4 = v2[2]; if ( v4 ) (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); std::locale::facet::~facet(a1); } // 491FE2: variable 'v1' is possibly undefined // 4F5F70: using guessed type int (*off_4F5F70)(); //----- (00492030) -------------------------------------------------------- void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int **v3; // esi int v4; // ecx v2 = v1; *v1 = &off_4F5F70; v3 = (int **)v1[4]; if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) operator delete[](v3); v4 = v2[2]; if ( v4 ) (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); std::locale::facet::~facet(a1); } // 492032: variable 'v1' is possibly undefined // 4F5F70: using guessed type int (*off_4F5F70)(); //----- (00492080) -------------------------------------------------------- int __thiscall std::logic_error::logic_error(_DWORD *this, int a2) { int result; // eax result = a2; *this = &off_4F5F80; this[1] = *(_DWORD *)(a2 + 4); *(_DWORD *)(a2 + 4) = &unk_4E93FC; return result; } // 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); //----- (004920A0) -------------------------------------------------------- _DWORD *__userpurge std::logic_error::logic_error@(int a1@, std::logic_error *this, const char *a3) { _DWORD *v3; // ecx int v5; // [esp+1Fh] [ebp-9h] BYREF v3 = (_DWORD *)(a1 + 4); *(v3 - 1) = &off_4F5F80; return std::string::string(v3, (char *)this, (int)&v5); } // 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); //----- (004920E0) -------------------------------------------------------- _DWORD *__thiscall std::logic_error::logic_error(_DWORD *this, int a2) { _DWORD *v2; // ecx unsigned int v4; // [esp+8h] [ebp-10h] v2 = this + 1; *(v2 - 1) = &off_4F5F80; return std::__cow_string::__cow_string(v2, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v4); } // 492103: variable 'v4' is possibly undefined // 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); //----- (00492120) -------------------------------------------------------- unsigned int *__userpurge std::logic_error::logic_error@( int a1@, unsigned int **this, const std::logic_error *a3) { const std::string *v4; // [esp+4h] [ebp-18h] *(_DWORD *)a1 = &off_4F5F80; return std::string::string((unsigned int **)(a1 + 4), this + 1, v4); } // 492136: variable 'v4' is possibly undefined // 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); //----- (00492150) -------------------------------------------------------- unsigned int *__userpurge std::logic_error::logic_error@(int a1@, unsigned int **this, const std::string *a3) { unsigned int **v3; // ecx const std::string *v5; // [esp+4h] [ebp-14h] v3 = (unsigned int **)(a1 + 4); *(v3 - 1) = (unsigned int *)&off_4F5F80; return std::string::string(v3, this, v5); } // 49216A: variable 'v5' is possibly undefined // 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); //----- (00492190) -------------------------------------------------------- void __fastcall std::logic_error::~logic_error(_DWORD *a1) { std::logic_error::~logic_error(a1); operator delete(a1); } //----- (004921B0) -------------------------------------------------------- void __fastcall std::logic_error::~logic_error(_DWORD *a1) { volatile signed __int32 *v1; // eax int v2; // edx std::exception *v3; // [esp+0h] [ebp-2Ch] int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF v1 = (volatile signed __int32 *)a1[1]; *a1 = &off_4F5F80; if ( v1 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 - 1); *((_DWORD *)v1 - 1) = v2 - 1; } if ( v2 <= 0 ) std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v4); } std::exception::~exception(v3); } // 4921C9: variable 'v3' is possibly undefined // 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); // 15412D0: using guessed type int _CRT_MT; // 4921B0: using guessed type int var_D[3]; //----- (00492220) -------------------------------------------------------- int *__thiscall std::logic_error::operator=(int *this, int a2) { std::string *v4; // [esp+4h] [ebp-18h] std::string::swap(this + 1, (std::string *)(a2 + 4), v4); return this; } // 492233: variable 'v4' is possibly undefined //----- (00492250) -------------------------------------------------------- unsigned int **__thiscall std::logic_error::operator=(unsigned int **this, int a2) { const std::string *v4; // [esp+4h] [ebp-18h] std::string::assign(this + 1, (unsigned int **)(a2 + 4), v4); return this; } // 492263: variable 'v4' is possibly undefined //----- (00492280) -------------------------------------------------------- _DWORD *__userpurge std::range_error::range_error@(_DWORD *a1@, std::range_error *this, const char *a3) { _DWORD *result; // eax const char *v5; // [esp+4h] [ebp-18h] result = std::runtime_error::runtime_error((int)a1, this, v5); *a1 = &off_4F5F94; return result; } // 49228D: variable 'v5' is possibly undefined // 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); //----- (004922B0) -------------------------------------------------------- _DWORD *__thiscall std::range_error::range_error(_DWORD *this, int a2) { _DWORD *result; // eax result = std::runtime_error::runtime_error(this, a2); *this = &off_4F5F94; return result; } // 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); //----- (004922E0) -------------------------------------------------------- unsigned int *__userpurge std::range_error::range_error@( _DWORD *a1@, unsigned int **this, const std::string *a3) { unsigned int *result; // eax const std::string *v5; // [esp+4h] [ebp-18h] result = std::runtime_error::runtime_error((int)a1, this, v5); *a1 = &off_4F5F94; return result; } // 4922ED: variable 'v5' is possibly undefined // 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); //----- (00492310) -------------------------------------------------------- void __fastcall std::range_error::~range_error(_DWORD *a1) { *a1 = &off_4F5F94; std::runtime_error::~runtime_error(a1); operator delete(a1); } // 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); //----- (00492330) -------------------------------------------------------- void __fastcall std::range_error::~range_error(_DWORD *a1) { *a1 = &off_4F5F94; std::runtime_error::~runtime_error(a1); } // 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); //----- (00492340) -------------------------------------------------------- int __usercall std::_Destroy_aux::__destroy *>@( int a1@, int a2, int a3) { volatile signed __int32 **v4; // ecx while ( a2 != a3 ) { v4 = (volatile signed __int32 **)(a2 + 4); a2 += 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); } return a1; } //----- (00492360) -------------------------------------------------------- int __usercall std::_Destroy_aux::__destroy *>@( int a1@, int a2, int a3) { volatile signed __int32 **v4; // ecx while ( a2 != a3 ) { v4 = (volatile signed __int32 **)(a2 + 4); a2 += 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); } return a1; } //----- (00492380) -------------------------------------------------------- int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3) { void **v4; // ecx while ( a2 != a3 ) { v4 = a2; a2 += 6; std::string::_M_dispose(v4); } return a1; } //----- (004923A0) -------------------------------------------------------- void __fastcall __spoils std::`anonymous namespace'::utf16_span( unsigned int a1, unsigned __int8 *a2, unsigned int a3, char a4) { unsigned int v4; // edi unsigned int v5; // esi unsigned int v6; // ebx unsigned int utf8_code; // eax unsigned __int8 *v9[6]; // [esp+Ch] [ebp-18h] BYREF v4 = a3; v9[1] = a2; if ( (a4 & 4) != 0 ) std::`anonymous namespace'::read_bom((int *)v9); if ( a1 <= 1 ) { v6 = 1; LABEL_11: if ( a1 == v6 ) { if ( a3 > 0xFFFE ) v4 = 0xFFFF; std::`anonymous namespace'::read_utf8_code_point(v9, v4); } } else { v5 = 0; v6 = 1; while ( 1 ) { utf8_code = std::`anonymous namespace'::read_utf8_code_point(v9, a3); if ( a3 < utf8_code ) break; if ( utf8_code <= 0xFFFF ) v6 = v5; v5 = v6 + 1; v6 += 2; if ( v6 >= a1 ) goto LABEL_11; } } } //----- (00492450) -------------------------------------------------------- int __usercall std::`anonymous namespace'::read_utf16_bom@(int result@, _DWORD *a2@) { int v2; // esi if ( (*(_BYTE *)a2 & 4) != 0 ) { v2 = result; result = std::`anonymous namespace'::read_bom( result, std::`anonymous namespace'::utf16_bom); if ( (_BYTE)result ) { *a2 &= ~1u; } else { result = std::`anonymous namespace'::read_bom( v2, std::`anonymous namespace'::utf16le_bom); if ( (_BYTE)result ) *a2 |= 1u; } } return result; } // 4F0AD4: using guessed type _WORD std::`anonymous namespace'::utf16le_bom[2]; // 4F0ADC: using guessed type _WORD std::`anonymous namespace'::utf16_bom[2]; //----- (004924A0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::write_utf8_bom@(int *a1@) { int v1; // ecx v1 = *a1; if ( (unsigned int)(a1[1] - *a1) <= 2 ) return 0; *(_BYTE *)(v1 + 2) = -65; *(_WORD *)v1 = -17425; *a1 += 3; return 1; } //----- (004924D0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::write_utf16_bom@(int a1@, char a2@
) { _WORD *v2; // ebx unsigned int v3; // ecx bool v4; // zf int v5; // edx if ( (a2 & 2) == 0 ) return 1; v2 = *(_WORD **)a1; v3 = *(_DWORD *)(a1 + 4) - *(_DWORD *)a1; v4 = (a2 & 1) == 0; v5 = 0; if ( !v4 ) { if ( v3 > 1 ) { v5 = 1; *v2 = -257; *(_DWORD *)a1 += 2; } return v5; } if ( v3 <= 1 ) return v5; *v2 = -2; *(_DWORD *)a1 += 2; return 1; } //----- (00492530) -------------------------------------------------------- int __usercall std::`anonymous namespace'::read_utf8_code_point@( unsigned __int8 **a1@, unsigned int a2@) { unsigned __int8 *v2; // ecx unsigned int v3; // edi int v4; // ebx unsigned int v5; // esi unsigned __int8 v7; // di unsigned __int8 v8; // di unsigned __int8 v9; // [esp+7h] [ebp-11h] v2 = *a1; v3 = a1[1] - *a1; if ( !v3 ) return -2; v4 = *v2; if ( (v4 & 0x80u) == 0 ) { v5 = (unsigned __int8)v4; *a1 = v2 + 1; return v5; } v5 = -1; if ( (unsigned __int8)v4 <= 0xC1u ) return v5; if ( (unsigned __int8)v4 > 0xDFu ) { if ( (unsigned __int8)v4 > 0xEFu ) { if ( (unsigned __int8)v4 <= 0xF4u ) { v5 = -2; if ( v3 > 3 ) { v8 = v2[1]; v5 = -1; if ( (v8 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xF0 || v8 > 0x8Fu) ) { if ( (_BYTE)v4 != 0xF4 || (v5 = -1, v8 <= 0x8Fu) ) { v5 = -1; v9 = v2[2]; if ( (v9 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) { v5 = (v9 << 6) + (v8 << 12) + (v4 << 18) + v2[3] - 63447168; if ( v5 <= a2 ) *a1 = v2 + 4; } } } } } } else { v5 = -2; if ( v3 > 2 ) { v7 = v2[1]; v5 = -1; if ( (v7 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xE0 || v7 > 0x9Fu) ) { v5 = -1; if ( (v2[2] & 0xC0) == 0x80 ) { v5 = (v4 << 12) + (v7 << 6) + v2[2] - 925824; if ( a2 >= v5 ) *a1 = v2 + 3; } } } } return v5; } if ( v3 != 1 ) { if ( (v2[1] & 0xC0) == 0x80 ) { v5 = (v4 << 6) + v2[1] - 12416; if ( a2 >= v5 ) *a1 = v2 + 2; } return v5; } return -2; } //----- (004926F0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::read_utf8_code_point@( unsigned __int8 **a1@, unsigned int a2@) { unsigned __int8 *v2; // ecx unsigned int v3; // edi int v4; // ebx unsigned int v5; // esi unsigned __int8 v7; // di unsigned __int8 v8; // di unsigned __int8 v9; // [esp+7h] [ebp-11h] v2 = *a1; v3 = a1[1] - *a1; if ( !v3 ) return -2; v4 = *v2; if ( (v4 & 0x80u) == 0 ) { v5 = (unsigned __int8)v4; *a1 = v2 + 1; return v5; } v5 = -1; if ( (unsigned __int8)v4 <= 0xC1u ) return v5; if ( (unsigned __int8)v4 > 0xDFu ) { if ( (unsigned __int8)v4 > 0xEFu ) { if ( (unsigned __int8)v4 <= 0xF4u ) { v5 = -2; if ( v3 > 3 ) { v8 = v2[1]; v5 = -1; if ( (v8 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xF0 || v8 > 0x8Fu) ) { if ( (_BYTE)v4 != 0xF4 || (v5 = -1, v8 <= 0x8Fu) ) { v5 = -1; v9 = v2[2]; if ( (v9 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) { v5 = (v9 << 6) + (v8 << 12) + (v4 << 18) + v2[3] - 63447168; if ( v5 <= a2 ) *a1 = v2 + 4; } } } } } } else { v5 = -2; if ( v3 > 2 ) { v7 = v2[1]; v5 = -1; if ( (v7 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xE0 || v7 > 0x9Fu) ) { v5 = -1; if ( (v2[2] & 0xC0) == 0x80 ) { v5 = (v4 << 12) + (v7 << 6) + v2[2] - 925824; if ( a2 >= v5 ) *a1 = v2 + 3; } } } } return v5; } if ( v3 != 1 ) { if ( (v2[1] & 0xC0) == 0x80 ) { v5 = (v4 << 6) + v2[1] - 12416; if ( a2 >= v5 ) *a1 = v2 + 2; } return v5; } return -2; } //----- (004928B0) -------------------------------------------------------- unsigned int __usercall std::`anonymous namespace'::read_utf16_code_point@( unsigned int result@, unsigned int a2@, char a3@) { _WORD *v3; // edi unsigned int v4; // ebx _DWORD *v5; // esi int v6; // ecx int v7; // ecx unsigned __int16 v8; // bx v3 = *(_WORD **)result; v4 = (unsigned int)(*(_DWORD *)(result + 4) - *(_DWORD *)result) >> 1; if ( !v4 ) return -2; v5 = (_DWORD *)result; LOWORD(result) = *v3; v6 = a3 & 1; if ( !v6 ) LOWORD(result) = __ROL2__(result, 8); result = (unsigned __int16)result; if ( (unsigned int)(unsigned __int16)result - 55296 > 0x3FF ) { if ( (unsigned int)(unsigned __int16)result - 56320 > 0x3FF ) { v7 = 1; goto LABEL_7; } return -1; } if ( v4 == 1 ) return -2; v8 = v3[1]; if ( !v6 ) v8 = __ROL2__(v8, 8); if ( (unsigned int)v8 - 56320 > 0x3FF ) return -1; v7 = 2; result = v8 + ((unsigned __int16)result << 10) - 56613888; LABEL_7: if ( result <= a2 ) *v5 = &v3[v7]; return result; } //----- (00492960) -------------------------------------------------------- int __usercall std::`anonymous namespace'::write_utf8_code_point@(int a1@, unsigned int a2@) { _BYTE *v3; // eax int result; // eax _BYTE *v5; // esi int v6; // ebx _BYTE *v7; // ebx _BYTE *v8; // ebx int v9; // esi if ( a2 > 0x7F ) { if ( a2 > 0x7FF ) { if ( a2 <= 0xFFFF ) { v8 = *(_BYTE **)a1; v9 = *(_DWORD *)(a1 + 4); result = 0; if ( (unsigned int)(v9 - (_DWORD)v8) > 2 ) { *v8 = (a2 >> 12) - 32; v8[1] = ((a2 >> 6) & 0x3F) + 0x80; *(_DWORD *)a1 = v8 + 3; result = 1; v8[2] = (a2 & 0x3F) + 0x80; } } else { result = 0; if ( a2 <= 0x10FFFF ) { v7 = *(_BYTE **)a1; if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) > 3 ) { *v7 = (a2 >> 18) - 16; v7[1] = ((a2 >> 12) & 0x3F) + 0x80; v7[2] = ((a2 >> 6) & 0x3F) + 0x80; *(_DWORD *)a1 = v7 + 4; result = 1; v7[3] = (a2 & 0x3F) + 0x80; } } } } else { v5 = *(_BYTE **)a1; v6 = *(_DWORD *)(a1 + 4); result = 0; if ( (unsigned int)(v6 - (_DWORD)v5) > 1 ) { *v5 = (a2 >> 6) - 64; *(_DWORD *)a1 = v5 + 2; result = 1; v5[1] = (a2 & 0x3F) + 0x80; } } } else { v3 = *(_BYTE **)a1; if ( v3 == *(_BYTE **)(a1 + 4) ) { return 0; } else { *(_DWORD *)a1 = v3 + 1; *v3 = a2; return 1; } } return result; } //----- (00492A70) -------------------------------------------------------- int __usercall std::`anonymous namespace'::write_utf8_code_point@(_BYTE **a1@, unsigned int a2@) { _BYTE *v3; // eax int result; // eax _BYTE *v5; // esi _BYTE *v6; // ebx _BYTE *v7; // eax _BYTE *v8; // esi _BYTE *v9; // ebx _BYTE *v10; // ebx _BYTE *v11; // esi _BYTE *v12; // ebx if ( a2 <= 0x7F ) { v3 = *a1; if ( v3 == a1[1] ) return 0; *a1 = v3 + 1; *v3 = a2; return 1; } if ( a2 <= 0x7FF ) { v5 = *a1; v6 = a1[1]; result = 0; if ( (unsigned int)(v6 - v5) <= 1 ) return result; *a1 = v5 + 1; *v5 = (a2 >> 6) - 64; LABEL_8: v7 = (*a1)++; *v7 = (a2 & 0x3F) + 0x80; return 1; } if ( a2 <= 0xFFFF ) { v11 = *a1; v12 = a1[1]; result = 0; if ( (unsigned int)(v12 - v11) <= 2 ) return result; *a1 = v11 + 1; *v11 = (a2 >> 12) - 32; goto LABEL_13; } result = 0; if ( a2 <= 0x10FFFF ) { v8 = *a1; if ( (unsigned int)(a1[1] - *a1) > 3 ) { *a1 = v8 + 1; *v8 = (a2 >> 18) - 16; v9 = (*a1)++; *v9 = ((a2 >> 12) & 0x3F) + 0x80; LABEL_13: v10 = (*a1)++; *v10 = ((a2 >> 6) & 0x3F) + 0x80; goto LABEL_8; } } return result; } //----- (00492B60) -------------------------------------------------------- int __usercall std::`anonymous namespace'::write_utf16_code_point@( int a1@, unsigned int a2@, char a3@) { _WORD *v3; // esi int result; // eax unsigned int v5; // ebx __int16 v6; // dx __int16 v7; // bx v3 = *(_WORD **)a1; if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) <= 3 ) return 0; v5 = a2 >> 10; v6 = (a2 & 0x3FF) - 9216; v7 = v5 - 10304; if ( (a3 & 1) == 0 ) { v7 = __ROL2__(v7, 8); v6 = __ROL2__(v6, 8); } *v3 = v7; *(_DWORD *)a1 = v3 + 2; result = 1; v3[1] = v6; return result; } //----- (00492BB0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::ucs2_in@( _DWORD *a1@, int *a2@, unsigned int a3@, char a4) { int v7; // edx unsigned int utf16_code; // eax _WORD *v9; // ecx std::`anonymous namespace'::read_utf16_bom((int)a1, &a4); if ( a3 > 0xFFFE ) a3 = 0xFFFF; if ( !((unsigned int)(a1[1] - *a1) >> 1) ) return 0; v7 = *a2; while ( 1 ) { if ( a2[1] == v7 ) return 1; utf16_code = std::`anonymous namespace'::read_utf16_code_point((unsigned int)a1, a3, a4); if ( a3 < utf16_code || utf16_code == -2 ) break; v9 = (_WORD *)*a2; v7 = *a2 + 2; *a2 = v7; *v9 = utf16_code; if ( !((unsigned int)(a1[1] - *a1) >> 1) ) return 0; } return 2; } //----- (00492C40) -------------------------------------------------------- int __usercall std::`anonymous namespace'::ucs4_in@( int *a1@, int *a2@, unsigned int a3@, char a4) { int v7; // edx unsigned int utf8_code; // eax unsigned int *v9; // ecx if ( (a4 & 4) != 0 ) std::`anonymous namespace'::read_bom(a1); if ( *a1 == a1[1] ) return 0; v7 = *a2; while ( 1 ) { if ( a2[1] == v7 ) return 1; utf8_code = std::`anonymous namespace'::read_utf8_code_point((unsigned __int8 **)a1, a3); if ( utf8_code == -2 ) return 1; if ( a3 < utf8_code ) break; v9 = (unsigned int *)*a2; v7 = *a2 + 4; *a2 = v7; *v9 = utf8_code; if ( *a1 == a1[1] ) return 0; } return 2; } //----- (00492CC0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::read_bom@(int a1@, _WORD *a2@) { _WORD *v2; // ebx v2 = *(_WORD **)a1; if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) <= 1 || *a2 != *v2 ) return 0; *(_DWORD *)a1 = v2 + 1; return 1; } //----- (00492CF0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::read_bom@(int *a1@) { int v1; // ecx v1 = *a1; if ( (unsigned int)(a1[1] - *a1) <= 2 || *(_WORD *)v1 != std::`anonymous namespace'::utf8_bom || *(_BYTE *)(v1 + 2) != 0xBF ) { return 0; } *a1 = v1 + 3; return 1; } // 4F0AD8: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (00492D30) -------------------------------------------------------- int __usercall std::`anonymous namespace'::read_bom@(int *a1@) { int v1; // ecx v1 = *a1; if ( (unsigned int)(a1[1] - *a1) <= 2 || *(_WORD *)v1 != std::`anonymous namespace'::utf8_bom || *(_BYTE *)(v1 + 2) != 0xBF ) { return 0; } *a1 = v1 + 3; return 1; } // 4F0AD8: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (00492D70) -------------------------------------------------------- int __usercall std::`anonymous namespace'::ucs2_out@( unsigned __int16 **a1@, _DWORD *a2@, unsigned int a3@, char a4) { unsigned __int16 *v4; // ebp unsigned __int16 *v5; // ecx _WORD *v6; // ebx unsigned int v7; // ecx __int16 v8; // si v4 = a1[1]; v5 = *a1; if ( *a1 == v4 ) return 0; v6 = (_WORD *)*a2; while ( 1 ) { if ( !((unsigned int)(a2[1] - (_DWORD)v6) >> 1) ) return v4 != v5; v7 = *v5; v8 = v7; if ( v7 - 55296 <= 0x3FF || v7 > a3 ) break; if ( (a4 & 1) == 0 ) v8 = __ROL2__(v7, 8); *v6 = v8; v4 = a1[1]; v6 = (_WORD *)(*a2 + 2); v5 = *a1 + 1; *a2 = v6; *a1 = v5; if ( v4 == v5 ) return 0; } return 2; } //----- (00492E00) -------------------------------------------------------- int __usercall std::`anonymous namespace'::utf16_in@( int *a1@, _DWORD *a2@, unsigned int a3@, char a4, int a5) { int v8; // edi _WORD *v9; // eax __int16 v10; // cx unsigned int utf8_code; // eax __int16 v12; // dx int v14; // [esp+0h] [ebp-18h] if ( (a4 & 4) != 0 ) std::`anonymous namespace'::read_bom(a1); v8 = a1[1]; v14 = *a1; if ( v8 != *a1 ) { while ( *a2 != a2[1] ) { utf8_code = std::`anonymous namespace'::read_utf8_code_point((unsigned __int8 **)a1, a3); v12 = utf8_code; if ( utf8_code == -2 ) return a5 + 1; if ( a3 < utf8_code ) return 2; if ( utf8_code <= 0xFFFF ) { v9 = (_WORD *)*a2; if ( *a2 == a2[1] ) goto LABEL_15; v10 = __ROL2__(v12, 8); if ( (a4 & 1) != 0 ) v10 = v12; *a2 = v9 + 1; *v9 = v10; } else if ( !(unsigned __int8)std::`anonymous namespace'::write_utf16_code_point( (int)a2, utf8_code, a4) ) { LABEL_15: a1[1] = v8; *a1 = v14; return 1; } v8 = a1[1]; v14 = *a1; if ( *a1 == v8 ) return 0; } } return 0; } //----- (00492EF0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::ucs2_span@( unsigned int a1@, int a2@, unsigned int a3@, char a4) { int v7; // ebx bool v8; // dl bool v9; // al std::`anonymous namespace'::read_utf16_bom(a1, &a4); if ( a3 > 0xFFFE ) a3 = 0xFFFF; v7 = a2 - 1; if ( a2 ) { do { v8 = a3 >= std::`anonymous namespace'::read_utf16_code_point(a1, a3, a4); v9 = v7-- != 0; } while ( v9 && v8 ); } return *(_DWORD *)a1; } //----- (00492F50) -------------------------------------------------------- void __fastcall __spoils std::`anonymous namespace'::ucs2_span( int a1, unsigned __int8 *a2, unsigned int a3, char a4) { unsigned int v5; // esi int v6; // ebx bool v7; // dl bool v8; // al unsigned __int8 *v9[6]; // [esp+8h] [ebp-18h] BYREF v5 = a3; v9[1] = a2; if ( (a4 & 4) != 0 ) std::`anonymous namespace'::read_bom((int *)v9); if ( a3 > 0xFFFE ) v5 = 0xFFFF; v6 = a1 - 1; if ( a1 ) { do { v7 = v5 >= std::`anonymous namespace'::read_utf8_code_point(v9, v5); v8 = v6-- != 0; } while ( v8 && v7 ); } } //----- (00492FC0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::utf16_out@( unsigned __int16 **a1@, int *a2@, unsigned int a3@, char a4, int a5) { char v6; // al int *v8; // [esp+0h] [ebp-10h] unsigned int v9; // [esp+4h] [ebp-Ch] if ( (a4 & 2) != 0 && (v9 = a3, v8 = a2, v6 = std::`anonymous namespace'::write_utf8_bom(a2), a2 = v8, a3 = v9, !v6) ) { return 1; } else { return std::`anonymous namespace'::utf16_out(a1, (_BYTE **)a2, a3, a5); } } //----- (00493010) -------------------------------------------------------- int __usercall std::`anonymous namespace'::utf16_out@( unsigned __int16 **a1@, _BYTE **a2@, unsigned int a3@, int a4) { unsigned __int16 *i; // eax int v8; // eax int v9; // ebp unsigned int v10; // edx for ( i = *a1; ; *a1 = i ) { if ( a1[1] == i ) return 0; v10 = *i; if ( v10 - 55296 <= 0x3FF ) { if ( a4 == 1 ) return 2; if ( (unsigned int)(a1[1] - i) <= 1 ) return 0; v8 = i[1]; if ( (unsigned int)(v8 - 56320) > 0x3FF ) return 2; v9 = 2; v10 = v8 + (v10 << 10) - 56613888; if ( v10 > a3 ) return 2; } else { if ( v10 - 56320 <= 0x3FF ) return 2; v9 = 1; if ( v10 > a3 ) return 2; } if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(a2, v10) ) break; i = &(*a1)[v9]; } return 1; } //----- (004930C0) -------------------------------------------------------- int __fastcall std::__basic_file::fd(int a1) { return *(_DWORD *)(*(_DWORD *)a1 + 16); } //----- (004930D0) -------------------------------------------------------- int __fastcall std::__basic_file::file(int a1) { return *(_DWORD *)a1; } //----- (004930E0) -------------------------------------------------------- _BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char a3, int a4) { unsigned int v4; // edx const char *Mode; // eax FILE *v7; // eax v4 = (a3 & 0x3D) - 1; if ( v4 > 0x3B ) return 0; Mode = (&CSWTCH_20)[v4]; if ( !Mode ) return 0; if ( *(_DWORD *)this ) return 0; v7 = fopen(FileName, Mode); *(_DWORD *)this = v7; if ( !v7 ) return 0; this[4] = 1; return this; } //----- (00493140) -------------------------------------------------------- FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char a3) { FILE *v4; // ecx unsigned int v5; // edx char *v6; // esi int v7; // eax char v8; // dl FILE *v9; // eax wchar_t Mode[2]; // [esp+18h] [ebp-14h] BYREF int v12; // [esp+1Ch] [ebp-10h] v4 = 0; v5 = (a3 & 0x3D) - 1; if ( v5 > 0x3B ) return v4; v6 = (&CSWTCH_20)[v5]; if ( !v6 ) return v4; v4 = *(FILE **)this; if ( !*(_DWORD *)this ) { *(_DWORD *)Mode = 0; v7 = 0; v12 = 0; v8 = *v6; do { while ( 1 ) { while ( 1 ) { while ( v8 == 98 ) { Mode[v7++] = 98; v8 = v6[v7]; if ( !v8 ) goto LABEL_10; } if ( v8 > 98 ) break; if ( v8 == 43 ) { Mode[v7++] = 43; v8 = v6[v7]; if ( !v8 ) goto LABEL_10; } else { if ( v8 != 97 ) return v4; Mode[v7++] = 97; v8 = v6[v7]; if ( !v8 ) goto LABEL_10; } } if ( v8 != 114 ) break; Mode[v7++] = 114; v8 = v6[v7]; if ( !v8 ) goto LABEL_10; } if ( v8 != 119 ) return v4; Mode[v7++] = 119; v8 = v6[v7]; } while ( v8 ); LABEL_10: v9 = _wfopen(FileName, Mode); *(_DWORD *)this = v9; v4 = v9; if ( v9 ) { this[4] = 1; return (FILE *)this; } return v4; } return 0; } //----- (00493290) -------------------------------------------------------- int __fastcall std::__basic_file::sync(FILE **a1) { return fflush(*a1); } //----- (004932B0) -------------------------------------------------------- int __fastcall std::__basic_file::close(int a1) { int v3; // eax if ( !*(_DWORD *)a1 ) return 0; if ( *(_BYTE *)(a1 + 4) ) { v3 = fclose(*(FILE **)a1); *(_DWORD *)a1 = 0; if ( v3 ) return 0; else return a1; } else { *(_DWORD *)a1 = 0; return a1; } } //----- (00493310) -------------------------------------------------------- int __thiscall std::__basic_file::xsgetn(void *this, void *DstBuf, unsigned int MaxCharCount) { int v4; // ebx do v4 = read(*(_DWORD *)(*(_DWORD *)this + 16), DstBuf, MaxCharCount); while ( v4 == -1 && *_errno() == 4 ); return v4; } //----- (00493360) -------------------------------------------------------- unsigned int __thiscall std::__basic_file::xsputn(void *this, char *a2, unsigned int a3) { return `anonymous namespace'::xwrite(*(_DWORD *)(*(_DWORD *)this + 16), a2, a3); } //----- (00493380) -------------------------------------------------------- __int64 __thiscall std::__basic_file::seekoff(void *this, __int64 Offset, int Origin) { if ( (unsigned __int64)(Offset + 0x80000000LL) >> 32 ) return -1LL; else return lseek(*(_DWORD *)(*(_DWORD *)this + 16), Offset, Origin); } //----- (004933E0) -------------------------------------------------------- _BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3) { int v4; // edi _BYTE *result; // eax if ( !*(_DWORD *)this && Stream ) { v4 = *_errno(); *_errno() = 0; do { if ( !fflush(Stream) ) { *_errno() = v4; result = this; *(_DWORD *)this = Stream; this[4] = 0; return result; } } while ( *_errno() == 4 ); *_errno() = v4; } return 0; } //----- (00493460) -------------------------------------------------------- _BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, int FileHandle, char a3) { unsigned int v3; // eax const char *Format; // eax _BYTE *v5; // ebx FILE *v7; // eax v3 = (a3 & 0x3D) - 1; if ( v3 > 0x3B ) return 0; Format = (&CSWTCH_20)[v3]; if ( !Format ) return 0; if ( *(_DWORD *)this ) return 0; v7 = fdopen(FileHandle, Format); *(_DWORD *)this = v7; if ( !v7 ) return 0; this[4] = 1; v5 = this; if ( !FileHandle ) setvbuf(v7, 0, 4, 0); return v5; } //----- (004934E0) -------------------------------------------------------- unsigned int __thiscall std::__basic_file::xsputn_2( void *this, char *a2, unsigned int a3, char *a4, unsigned int a5) { int v5; // eax unsigned int result; // eax v5 = *(_DWORD *)(*(_DWORD *)this + 16); if ( !a3 ) return a3 + `anonymous namespace'::xwrite(v5, a4, a5); result = `anonymous namespace'::xwrite(v5, a2, a3); if ( a3 == result ) { v5 = *(_DWORD *)(*(_DWORD *)this + 16); return a3 + `anonymous namespace'::xwrite(v5, a4, a5); } return result; } //----- (00493530) -------------------------------------------------------- int __fastcall std::__basic_file::showmanyc(int a1) { int result; // eax _off_t st_size; // ebx struct _stat32 Stat; // [esp+1Ch] [ebp-30h] BYREF result = fstat(*(_DWORD *)(*(_DWORD *)a1 + 16), &Stat); if ( result ) return 0; if ( (Stat.st_mode & 0xF000) == 0x8000 ) { st_size = Stat.st_size; return st_size - lseek(*(_DWORD *)(*(_DWORD *)a1 + 16), 0, 1); } return result; } //----- (004935B0) -------------------------------------------------------- void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2) { *(_DWORD *)this = 0; this[4] = 0; } //----- (004935D0) -------------------------------------------------------- _DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_4E93FC; return result; } //----- (004935F0) -------------------------------------------------------- _DWORD *__userpurge std::__cow_string::__cow_string@( _DWORD *a1@, std::__cow_string *this, const char *a3, unsigned int a4) { char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF return std::string::string(a1, this, (int)a3, (int)v5); } // 4935F0: using guessed type char var_D[13]; //----- (00493620) -------------------------------------------------------- _DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, int a2) { unsigned int v3; // [esp+8h] [ebp-14h] return std::__cow_string::__cow_string(this, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v3); } // 493633: variable 'v3' is possibly undefined //----- (00493650) -------------------------------------------------------- unsigned int *__userpurge std::__cow_string::__cow_string@( unsigned int **a1@, unsigned int **this, const std::__cow_string *a3) { const std::string *v4; // [esp+4h] [ebp-18h] return std::string::string(a1, this, v4); } // 49365A: variable 'v4' is possibly undefined //----- (00493680) -------------------------------------------------------- void __fastcall std::__cow_string::__cow_string(_DWORD *a1) { *a1 = &unk_4E93FC; } //----- (00493690) -------------------------------------------------------- void __fastcall std::__cow_string::~__cow_string(volatile signed __int32 **a1) { volatile signed __int32 *v1; // eax int v2; // edx int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF v1 = *a1; if ( *a1 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 - 1); *((_DWORD *)v1 - 1) = v2 - 1; } if ( v2 <= 0 ) std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v3); } } // 15412D0: using guessed type int _CRT_MT; // 493690: using guessed type int var_D[3]; //----- (004936F0) -------------------------------------------------------- int *__thiscall std::__cow_string::operator=(int *this, std::string *a2) { std::string *v4; // [esp+4h] [ebp-18h] std::string::swap(this, a2, v4); return this; } // 4936FD: variable 'v4' is possibly undefined //----- (00493710) -------------------------------------------------------- unsigned int **__thiscall std::__cow_string::operator=(unsigned int **this, unsigned int **a2) { const std::string *v4; // [esp+4h] [ebp-18h] std::string::assign(this, a2, v4); return this; } // 49371D: variable 'v4' is possibly undefined //----- (00493730) -------------------------------------------------------- volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr( _DWORD *this, _DWORD *a2) { volatile signed __int32 *result; // eax result = (volatile signed __int32 *)a2[1]; *this = *a2; this[1] = result; if ( result ) return __gnu_cxx::__atomic_add_dispatch(result + 1); return result; } //----- (00493754) -------------------------------------------------------- volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr( _DWORD *this, _DWORD *a2) { volatile signed __int32 *result; // eax result = (volatile signed __int32 *)a2[1]; *this = *a2; this[1] = result; if ( result ) return __gnu_cxx::__atomic_add_dispatch(result + 1); return result; } //----- (00493778) -------------------------------------------------------- volatile signed __int32 **__thiscall std::__shared_ptr::operator=( volatile signed __int32 **this, volatile signed __int32 **a2) { volatile signed __int32 **v3; // ecx volatile signed __int32 *v4; // eax v3 = this + 1; v4 = a2[1]; *(v3 - 1) = *a2; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, v4); return this; } //----- (004937A4) -------------------------------------------------------- volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr( _DWORD *this, _DWORD *a2) { volatile signed __int32 *result; // eax result = (volatile signed __int32 *)a2[1]; *this = *a2; this[1] = result; if ( result ) return __gnu_cxx::__atomic_add_dispatch(result + 1); return result; } //----- (004937C8) -------------------------------------------------------- volatile signed __int32 **__thiscall std::__shared_ptr::operator=( volatile signed __int32 **this, volatile signed __int32 **a2) { volatile signed __int32 **v3; // ecx volatile signed __int32 *v4; // eax v3 = this + 1; v4 = a2[1]; *(v3 - 1) = *a2; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, v4); return this; } //----- (00493800) -------------------------------------------------------- _DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax int v3; // ebx result = a2; *this = this + 2; if ( (_DWORD *)*result == result + 2 ) { this[2] = a2[2]; this[3] = a2[3]; this[4] = a2[4]; this[5] = a2[5]; } else { *this = *a2; this[2] = a2[2]; } v3 = a2[1]; *a2 = a2 + 2; a2[1] = 0; this[1] = v3; *((_BYTE *)a2 + 8) = 0; return result; } //----- (00493860) -------------------------------------------------------- unsigned int __userpurge std::__sso_string::__sso_string@( void **a1@, std::__sso_string *this, const char *a3, unsigned int a4) { int v5; // [esp+8h] [ebp-14h] *a1 = a1 + 2; LOBYTE(v5) = 0; return std::string::_M_construct(a1, (unsigned __int8 *)this, (size_t)&a3[(_DWORD)this], v5); } // 49387E: variable 'v5' is possibly undefined //----- (00493890) -------------------------------------------------------- _BYTE *__thiscall std::__sso_string::__sso_string(_DWORD *this, int a2) { int v3; // [esp+8h] [ebp-14h] *this = this + 2; LOBYTE(v3) = 0; return std::string::_M_construct(this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v3); } // 4938B0: variable 'v3' is possibly undefined //----- (004938C0) -------------------------------------------------------- _BYTE *__userpurge std::__sso_string::__sso_string@( _DWORD *a1@, std::__sso_string *this, const std::__sso_string *a3) { int v4; // [esp+8h] [ebp-14h] *a1 = a1 + 2; LOBYTE(v4) = 0; return std::string::_M_construct(a1, *(_BYTE **)this, *(_DWORD *)this + *((_DWORD *)this + 1), v4); } // 4938E0: variable 'v4' is possibly undefined //----- (004938F0) -------------------------------------------------------- unsigned int __userpurge std::__sso_string::__sso_string@( void **a1@, std::__sso_string **this, const std::string *a3) { unsigned int v4; // [esp+8h] [ebp-14h] return std::__sso_string::__sso_string(a1, *this, *((const char **)*this - 3), v4); } // 493903: variable 'v4' is possibly undefined //----- (00493920) -------------------------------------------------------- int __fastcall std::__sso_string::__sso_string(int a1) { int result; // eax result = a1 + 8; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; return result; } //----- (00493940) -------------------------------------------------------- void __fastcall std::__sso_string::~__sso_string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (00493970) -------------------------------------------------------- _DWORD *__thiscall std::__sso_string::operator=(_DWORD *this, int a2) { _BYTE *v3; // eax _BYTE *Src; // ecx int v5; // edx int v6; // ebp v3 = (_BYTE *)*this; Src = *(_BYTE **)a2; v5 = *(_DWORD *)(a2 + 4); if ( *(_DWORD *)a2 != a2 + 8 ) { if ( v3 == (_BYTE *)(this + 2) ) { *this = Src; this[1] = v5; this[2] = *(_DWORD *)(a2 + 8); } else { *this = Src; v6 = this[2]; this[1] = v5; this[2] = *(_DWORD *)(a2 + 8); if ( v3 ) { *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v6; goto LABEL_5; } } *(_DWORD *)a2 = a2 + 8; v3 = (_BYTE *)(a2 + 8); goto LABEL_5; } if ( v5 ) { if ( v5 == 1 ) *v3 = *(_BYTE *)(a2 + 8); else memcpy(v3, Src, *(_DWORD *)(a2 + 4)); v5 = *(_DWORD *)(a2 + 4); v3 = (_BYTE *)*this; } this[1] = v5; v3[v5] = 0; v3 = *(_BYTE **)a2; LABEL_5: *(_DWORD *)(a2 + 4) = 0; *v3 = 0; return this; } //----- (00493A20) -------------------------------------------------------- void *__thiscall std::__sso_string::operator=(void *this, int a2) { std::string::_M_assign((int)this, a2); return this; } //----- (00493A40) -------------------------------------------------------- unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::ctype::ctype(this, 0, 0, a3); *this = &off_4F5FA8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F5FA8: using guessed type int (*off_4F5FA8)(); //----- (00493AE0) -------------------------------------------------------- unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { return std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (00493AF0) -------------------------------------------------------- unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { return std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (00493B00) -------------------------------------------------------- void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5FA8; std::ctype::~ctype(v2); operator delete(a1); } // 493B0C: variable 'v2' is possibly undefined // 4F5FA8: using guessed type int (*off_4F5FA8)(); //----- (00493B20) -------------------------------------------------------- void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5FA8; std::ctype::~ctype(a1); } // 493B20: variable 'v1' is possibly undefined // 4F5FA8: using guessed type int (*off_4F5FA8)(); //----- (00493B30) -------------------------------------------------------- char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) { char result; // al bool v5; // zf result = std::ctype::ctype(this, a3); *this = &off_4F5FD8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); return std::ctype::_M_initialize_ctype((int)this); } } return result; } // 4F5FD8: using guessed type int (*off_4F5FD8)(); //----- (00493BC0) -------------------------------------------------------- char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { return std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (00493BD0) -------------------------------------------------------- char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { return std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (00493BE0) -------------------------------------------------------- void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6A88; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); *a1 = &unk_4F688C; std::locale::facet::~facet(v2); operator delete(a1); } // 493BFF: variable 'v2' is possibly undefined // 4F6A88: using guessed type int (*off_4F6A88)(); //----- (00493C20) -------------------------------------------------------- void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx v2 = v1; *v1 = &off_4F6A88; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); *v2 = &unk_4F688C; std::locale::facet::~facet(a1); } // 493C24: variable 'v1' is possibly undefined // 4F6A88: using guessed type int (*off_4F6A88)(); //----- (00493C50) -------------------------------------------------------- _DWORD *__userpurge std::domain_error::domain_error@(_DWORD *a1@, std::domain_error *this, const char *a3) { _DWORD *result; // eax const char *v5; // [esp+4h] [ebp-18h] result = std::logic_error::logic_error((int)a1, this, v5); *a1 = &off_4F6018; return result; } // 493C5D: variable 'v5' is possibly undefined // 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); //----- (00493C80) -------------------------------------------------------- _DWORD *__thiscall std::domain_error::domain_error(_DWORD *this, int a2) { _DWORD *result; // eax result = std::logic_error::logic_error(this, a2); *this = &off_4F6018; return result; } // 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); //----- (00493CB0) -------------------------------------------------------- unsigned int *__userpurge std::domain_error::domain_error@( _DWORD *a1@, unsigned int **this, const std::string *a3) { unsigned int *result; // eax const std::string *v5; // [esp+4h] [ebp-18h] result = std::logic_error::logic_error((int)a1, this, v5); *a1 = &off_4F6018; return result; } // 493CBD: variable 'v5' is possibly undefined // 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); //----- (00493CE0) -------------------------------------------------------- void __fastcall std::domain_error::~domain_error(_DWORD *a1) { *a1 = &off_4F6018; std::logic_error::~logic_error(a1); operator delete(a1); } // 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); //----- (00493D00) -------------------------------------------------------- void __fastcall std::domain_error::~domain_error(_DWORD *a1) { *a1 = &off_4F6018; std::logic_error::~logic_error(a1); } // 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); //----- (00493D10) -------------------------------------------------------- _DWORD *__userpurge std::length_error::length_error@(_DWORD *a1@, std::length_error *this, const char *a3) { _DWORD *result; // eax const char *v5; // [esp+4h] [ebp-18h] result = std::logic_error::logic_error((int)a1, this, v5); *a1 = &off_4F602C; return result; } // 493D1D: variable 'v5' is possibly undefined // 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); //----- (00493D40) -------------------------------------------------------- _DWORD *__thiscall std::length_error::length_error(_DWORD *this, int a2) { _DWORD *result; // eax result = std::logic_error::logic_error(this, a2); *this = &off_4F602C; return result; } // 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); //----- (00493D70) -------------------------------------------------------- unsigned int *__userpurge std::length_error::length_error@( _DWORD *a1@, unsigned int **this, const std::string *a3) { unsigned int *result; // eax const std::string *v5; // [esp+4h] [ebp-18h] result = std::logic_error::logic_error((int)a1, this, v5); *a1 = &off_4F602C; return result; } // 493D7D: variable 'v5' is possibly undefined // 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); //----- (00493DA0) -------------------------------------------------------- void __fastcall std::length_error::~length_error(_DWORD *a1) { *a1 = &off_4F602C; std::logic_error::~logic_error(a1); operator delete(a1); } // 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); //----- (00493DC0) -------------------------------------------------------- void __fastcall std::length_error::~length_error(_DWORD *a1) { *a1 = &off_4F602C; std::logic_error::~logic_error(a1); } // 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); //----- (00493DD0) -------------------------------------------------------- _DWORD *__userpurge std::out_of_range::out_of_range@(_DWORD *a1@, std::out_of_range *this, const char *a3) { _DWORD *result; // eax const char *v5; // [esp+4h] [ebp-18h] result = std::logic_error::logic_error((int)a1, this, v5); *a1 = &off_4F6040; return result; } // 493DDD: variable 'v5' is possibly undefined // 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); //----- (00493E00) -------------------------------------------------------- _DWORD *__thiscall std::out_of_range::out_of_range(_DWORD *this, int a2) { _DWORD *result; // eax result = std::logic_error::logic_error(this, a2); *this = &off_4F6040; return result; } // 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); //----- (00493E30) -------------------------------------------------------- unsigned int *__userpurge std::out_of_range::out_of_range@( _DWORD *a1@, unsigned int **this, const std::string *a3) { unsigned int *result; // eax const std::string *v5; // [esp+4h] [ebp-18h] result = std::logic_error::logic_error((int)a1, this, v5); *a1 = &off_4F6040; return result; } // 493E3D: variable 'v5' is possibly undefined // 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); //----- (00493E60) -------------------------------------------------------- void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) { *a1 = &off_4F6040; std::logic_error::~logic_error(a1); operator delete(a1); } // 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); //----- (00493E80) -------------------------------------------------------- void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) { *a1 = &off_4F6040; std::logic_error::~logic_error(a1); } // 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); //----- (00493E90) -------------------------------------------------------- void __fastcall std::system_error::~system_error(_DWORD *a1) { *a1 = &off_4F6054; std::runtime_error::~runtime_error(a1); operator delete(a1); } // 4F6054: using guessed type void (__cdecl *off_4F6054)(std::system_error *__hidden this); //----- (00493EB0) -------------------------------------------------------- void __fastcall std::system_error::~system_error(_DWORD *a1) { *a1 = &off_4F6054; std::runtime_error::~runtime_error(a1); } // 4F6054: using guessed type void (__cdecl *off_4F6054)(std::system_error *__hidden this); //----- (00493EC0) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get( int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10) { int result; // eax switch ( a10 ) { case 'd': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 'u': case 'v': case 'x': case 'y': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'm': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 't': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'w': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( a2, a3, a4, a5, a6, a7, a8, a9); break; } return result; } //----- (00494030) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get( int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10) { int result; // eax switch ( a10 ) { case 'd': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 'u': case 'v': case 'x': case 'y': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'm': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 't': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'w': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( a2, a3, a4, a5, a6, a7, a8, a9); break; } return result; } //----- (004941A0) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get( int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10) { int result; // eax switch ( a10 ) { case 'd': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 'u': case 'v': case 'x': case 'y': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'm': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 't': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'w': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( a2, a3, a4, a5, a6, a7, a8, a9); break; } return result; } //----- (00494310) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get( int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10) { int result; // eax switch ( a10 ) { case 'd': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 'u': case 'v': case 'x': case 'y': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'm': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 't': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, a8, a9); break; case 'w': result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( a2, a3, a4, a5, a6, a7, a8, a9); break; } return result; } //----- (00494480) -------------------------------------------------------- int __cdecl std::__facet_shims::__money_get( int a1, int *a2, int a3, std::string *a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, int a11) { int v11; // eax int result; // eax int v13; // esi unsigned int *v14; // ecx int v15; // esi void (__cdecl *v16)(int); // eax int v17; // eax const std::string *v18; // [esp+4h] [ebp-54h] int v19; // [esp+2Ch] [ebp-2Ch] int v20; // [esp+3Bh] [ebp-1Dh] BYREF unsigned int *v21[7]; // [esp+3Ch] [ebp-1Ch] BYREF v11 = *a2; if ( a10 ) return (*(int (__stdcall **)(int, std::string *, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( a3, a4, a5, a6, a7, a8, a9, a10); v21[0] = (unsigned int *)&unk_4E93FC; v13 = ((__int64 (__stdcall *)(int, std::string *, int, int, _DWORD, int, _DWORD *, unsigned int **))*(_DWORD *)(v11 + 12))( a3, a4, a5, a6, a7, a8, a9, v21); if ( *a9 ) { v14 = v21[0]; } else { v16 = *(void (__cdecl **)(int))(a11 + 24); if ( v16 ) v16(a11); std::string::string((unsigned int **)a11, v21, v18); v14 = v21[0]; v17 = *(v21[0] - 3); *(_DWORD *)(a11 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; *(_DWORD *)(a11 + 4) = v17; } result = v13; if ( v14 != (unsigned int *)&unk_4E93FC ) { if ( _CRT_MT ) { v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v14 - 1, 0xFFFFFFFF); } else { v15 = *(v14 - 1); *(v14 - 1) = v15 - 1; } if ( v15 <= 0 ) { v19 = result; std::string::_Rep::_M_destroy(v14 - 3, (int)&v20); return v19; } } return result; } // 494593: variable 'v18' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004945F0) -------------------------------------------------------- int __cdecl std::__facet_shims::__money_get( int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, _DWORD *a11) { int v11; // eax int result; // eax int v13; // edi void (__cdecl *v14)(_DWORD *); // eax int v15; // edx int v16; // [esp+8h] [ebp-60h] void *v17; // [esp+38h] [ebp-30h] BYREF int v18; // [esp+3Ch] [ebp-2Ch] char v19[40]; // [esp+40h] [ebp-28h] BYREF v11 = *a2; if ( a10 ) return (*(int (__stdcall **)(int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( a3, a4, a5, a6, a7, a8, a9, a10); v17 = v19; v18 = 0; v19[0] = 0; v13 = ((__int64 (__stdcall *)(int, int, int, int, _DWORD, int, _DWORD *, void **))*(_DWORD *)(v11 + 12))( a3, a4, a5, a6, a7, a8, a9, &v17); if ( !*a9 ) { v14 = (void (__cdecl *)(_DWORD *))a11[6]; if ( v14 ) v14(a11); v15 = v18; *a11 = a11 + 2; LOBYTE(v16) = 0; std::string::_M_construct(a11, v17, (int)v17 + v15, v16); a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; } result = v13; if ( v17 != v19 ) { operator delete(v17); return v13; } return result; } // 494701: variable 'v16' is possibly undefined //----- (00494730) -------------------------------------------------------- int __cdecl std::__facet_shims::__money_get( int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, _DWORD *a11) { int v11; // eax int result; // eax int v13; // esi volatile signed __int32 *v14; // ecx int v15; // esi void (__cdecl *v16)(_DWORD *); // eax int v17; // eax int v18; // [esp+2Ch] [ebp-2Ch] int v19; // [esp+3Bh] [ebp-1Dh] BYREF _DWORD v20[7]; // [esp+3Ch] [ebp-1Ch] BYREF v11 = *a2; if ( a10 ) return (*(int (__stdcall **)(int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( a3, a4, a5, a6, a7, a8, a9, a10); v20[0] = &unk_4E93EC; v13 = ((__int64 (__stdcall *)(int, int, int, int, _DWORD, int, _DWORD *, _DWORD *))*(_DWORD *)(v11 + 12))( a3, a4, a5, a6, a7, a8, a9, v20); if ( *a9 ) { v14 = (volatile signed __int32 *)v20[0]; } else { v16 = (void (__cdecl *)(_DWORD *))a11[6]; if ( v16 ) v16(a11); std::wstring::basic_string(a11, v20); v14 = (volatile signed __int32 *)v20[0]; v17 = *(_DWORD *)(v20[0] - 12); a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; a11[1] = v17; } result = v13; if ( v14 != (volatile signed __int32 *)&unk_4E93EC ) { if ( _CRT_MT ) { v15 = _InterlockedExchangeAdd(v14 - 1, 0xFFFFFFFF); } else { v15 = *((_DWORD *)v14 - 1); *((_DWORD *)v14 - 1) = v15 - 1; } if ( v15 <= 0 ) { v18 = result; std::wstring::_Rep::_M_destroy((void *)(v14 - 3), (int)&v19); return v18; } } return result; } // 15412D0: using guessed type int _CRT_MT; //----- (004948A0) -------------------------------------------------------- int __cdecl std::__facet_shims::__money_get( int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, int a11) { int v11; // eax int result; // eax int v13; // esi void (__cdecl *v14)(int); // eax int v15; // edx int v16; // [esp+8h] [ebp-60h] wchar_t *v17; // [esp+38h] [ebp-30h] BYREF int v18; // [esp+3Ch] [ebp-2Ch] __int16 v19[20]; // [esp+40h] [ebp-28h] BYREF v11 = *a2; if ( a10 ) return (*(int (__stdcall **)(int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( a3, a4, a5, a6, a7, a8, a9, a10); v17 = (wchar_t *)v19; v19[0] = 0; v18 = 0; v13 = ((__int64 (__stdcall *)(int, int, int, int, _DWORD, int, _DWORD *, wchar_t **))*(_DWORD *)(v11 + 12))( a3, a4, a5, a6, a7, a8, a9, &v17); if ( !*a9 ) { v14 = *(void (__cdecl **)(int))(a11 + 24); if ( v14 ) v14(a11); v15 = v18; *(_DWORD *)a11 = a11 + 8; LOBYTE(v16) = 0; std::wstring::_M_construct((wchar_t **)a11, v17, (int)&v17[v15], v16); *(_DWORD *)(a11 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; } result = v13; if ( v17 != (wchar_t *)v19 ) { operator delete(v17); return v13; } return result; } // 4949BA: variable 'v16' is possibly undefined //----- (004949F0) -------------------------------------------------------- int __cdecl std::__facet_shims::__money_put( int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, char a7, long double a8, int a9) { int result; // eax int v10; // esi int v12; // [esp+20h] [ebp-38h] void *v13; // [esp+2Ch] [ebp-2Ch] char v14; // [esp+3Bh] [ebp-1Dh] BYREF _DWORD v15[7]; // [esp+3Ch] [ebp-1Ch] BYREF if ( !a9 ) return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( a2, a3, a4, a5, a6, a7, LODWORD(a8), DWORD1(a8), HIDWORD(a8)); if ( !*(_DWORD *)(a9 + 24) ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); std::string::string(v15, *(_BYTE **)a9, *(_DWORD *)(a9 + 4), (int)&v14); result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD *))(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, v15); v13 = (void *)(v15[0] - 12); if ( (_UNKNOWN *)v15[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v10 = _InterlockedExchangeAdd((volatile signed __int32 *)(v15[0] - 4), 0xFFFFFFFF); } else { v10 = *(_DWORD *)(v15[0] - 4); *(_DWORD *)(v15[0] - 4) = v10 - 1; } if ( v10 <= 0 ) { v12 = result; std::string::_Rep::_M_destroy(v13, (int)&v14); return v12; } } return result; } // 15412D0: using guessed type int _CRT_MT; //----- (00494B50) -------------------------------------------------------- int __cdecl std::__facet_shims::__money_put( int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, char a7, long double a8, int a9) { unsigned __int8 *v9; // ecx int result; // eax int v11; // [esp+8h] [ebp-60h] int v13; // [esp+28h] [ebp-40h] void *v14[2]; // [esp+38h] [ebp-30h] BYREF char v15[40]; // [esp+40h] [ebp-28h] BYREF if ( !a9 ) return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( a2, a3, a4, a5, a6, a7, LODWORD(a8), DWORD1(a8), HIDWORD(a8)); if ( !*(_DWORD *)(a9 + 24) ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); v9 = *(unsigned __int8 **)a9; LOBYTE(v11) = 0; v14[0] = v15; std::string::_M_construct(v14, v9, (size_t)&v9[*(_DWORD *)(a9 + 4)], v11); result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, void **))(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, v14); if ( v14[0] != v15 ) { v13 = result; operator delete(v14[0]); return v13; } return result; } // 494B96: variable 'v11' is possibly undefined //----- (00494C70) -------------------------------------------------------- int __cdecl std::__facet_shims::__money_put( int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, unsigned __int16 a7, long double a8, int a9) { int result; // eax int v10; // esi int v12; // [esp+20h] [ebp-38h] void *v13; // [esp+2Ch] [ebp-2Ch] char v14; // [esp+3Bh] [ebp-1Dh] BYREF _DWORD v15[7]; // [esp+3Ch] [ebp-1Ch] BYREF if ( !a9 ) return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( a2, a3, a4, a5, a6, a7, LODWORD(a8), DWORD1(a8), HIDWORD(a8)); if ( !*(_DWORD *)(a9 + 24) ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); std::wstring::basic_string(v15, *(const wchar_t **)a9, *(_DWORD *)(a9 + 4), (int)&v14); result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD *))(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, v15); v13 = (void *)(v15[0] - 12); if ( (_UNKNOWN *)v15[0] != &unk_4E93EC ) { if ( _CRT_MT ) { v10 = _InterlockedExchangeAdd((volatile signed __int32 *)(v15[0] - 4), 0xFFFFFFFF); } else { v10 = *(_DWORD *)(v15[0] - 4); *(_DWORD *)(v15[0] - 4) = v10 - 1; } if ( v10 <= 0 ) { v12 = result; std::wstring::_Rep::_M_destroy(v13, (int)&v14); return v12; } } return result; } // 15412D0: using guessed type int _CRT_MT; //----- (00494DD0) -------------------------------------------------------- int __cdecl std::__facet_shims::__money_put( int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, unsigned __int16 a7, long double a8, int a9) { int result; // eax wchar_t *v10; // [esp+0h] [ebp-68h] int v11; // [esp+4h] [ebp-64h] int v12; // [esp+8h] [ebp-60h] int v14; // [esp+28h] [ebp-40h] void *v15[2]; // [esp+38h] [ebp-30h] BYREF char v16[40]; // [esp+40h] [ebp-28h] BYREF if ( !a9 ) return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( a2, a3, a4, a5, a6, a7, LODWORD(a8), DWORD1(a8), HIDWORD(a8)); if ( !*(_DWORD *)(a9 + 24) ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); LOBYTE(v12) = 0; v10 = *(wchar_t **)a9; v11 = *(_DWORD *)a9 + 2 * *(_DWORD *)(a9 + 4); v15[0] = v16; std::wstring::_M_construct((wchar_t **)v15, v10, v11, v12); result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, void **))(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, v15); if ( v15[0] != v16 ) { v14 = result; operator delete(v15[0]); return v14; } return result; } // 494E1A: variable 'v12' is possibly undefined //----- (00494EF0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F5360; v3 = (volatile signed __int32 *)a1[3]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F6BD0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v5); operator delete(a1); } // 494F2E: variable 'v5' is possibly undefined // 4F5360: using guessed type int (*off_4F5360)(); // 4F6BD0: using guessed type int (*off_4F6BD0)(); // 15412D0: using guessed type int _CRT_MT; //----- (00494F50) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F537C; v3 = (volatile signed __int32 *)a1[3]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F5C58; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v5); operator delete(a1); } // 494F8E: variable 'v5' is possibly undefined // 4F537C: using guessed type int (*off_4F537C)(); // 4F5C58: using guessed type int (*off_4F5C58)(); // 15412D0: using guessed type int _CRT_MT; //----- (00494FB0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F5360; v4 = (volatile signed __int32 *)v1[3]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F6BD0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); std::locale::facet::~facet(a1); } // 494FB1: variable 'v1' is possibly undefined // 4F5360: using guessed type int (*off_4F5360)(); // 4F6BD0: using guessed type int (*off_4F6BD0)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495010) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F537C; v4 = (volatile signed __int32 *)v1[3]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F5C58; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); std::locale::facet::~facet(a1); } // 495011: variable 'v1' is possibly undefined // 4F537C: using guessed type int (*off_4F537C)(); // 4F5C58: using guessed type int (*off_4F5C58)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495070) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F5398; v3 = (volatile signed __int32 *)a1[3]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F6BEC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v5); operator delete(a1); } // 4950AE: variable 'v5' is possibly undefined // 4F5398: using guessed type int (*off_4F5398)(); // 4F6BEC: using guessed type int (*off_4F6BEC)(); // 15412D0: using guessed type int _CRT_MT; //----- (004950D0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F53B4; v3 = (volatile signed __int32 *)a1[3]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F5C74; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v5); operator delete(a1); } // 49510E: variable 'v5' is possibly undefined // 4F53B4: using guessed type int (*off_4F53B4)(); // 4F5C74: using guessed type int (*off_4F5C74)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495130) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F5398; v4 = (volatile signed __int32 *)v1[3]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F6BEC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); std::locale::facet::~facet(a1); } // 495131: variable 'v1' is possibly undefined // 4F5398: using guessed type int (*off_4F5398)(); // 4F6BEC: using guessed type int (*off_4F6BEC)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495190) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F53B4; v4 = (volatile signed __int32 *)v1[3]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F5C74; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); std::locale::facet::~facet(a1); } // 495191: variable 'v1' is possibly undefined // 4F53B4: using guessed type int (*off_4F53B4)(); // 4F5C74: using guessed type int (*off_4F5C74)(); // 15412D0: using guessed type int _CRT_MT; //----- (004951F0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F53D0; v3 = (volatile signed __int32 *)a1[4]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::messages::~messages(v5); operator delete(a1); } // 49521D: variable 'v5' is possibly undefined // 4F53D0: using guessed type int (*off_4F53D0)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495240) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F53EC; v3 = (volatile signed __int32 *)a1[4]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::messages::~messages(v5); operator delete(a1); } // 49526D: variable 'v5' is possibly undefined // 4F53EC: using guessed type int (*off_4F53EC)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495290) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = _CRT_MT; *v1 = &off_4F53D0; v3 = (volatile signed __int32 *)v1[4]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::messages::~messages(a1); } // 49529B: variable 'v1' is possibly undefined // 4F53D0: using guessed type int (*off_4F53D0)(); // 15412D0: using guessed type int _CRT_MT; //----- (004952E0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = _CRT_MT; *v1 = &off_4F53EC; v3 = (volatile signed __int32 *)v1[4]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::messages::~messages(a1); } // 4952EB: variable 'v1' is possibly undefined // 4F53EC: using guessed type int (*off_4F53EC)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495330) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F5408; v3 = (volatile signed __int32 *)a1[4]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::messages::~messages(v5); operator delete(a1); } // 49535D: variable 'v5' is possibly undefined // 4F5408: using guessed type int (*off_4F5408)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495380) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F5424; v3 = (volatile signed __int32 *)a1[4]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::messages::~messages(v5); operator delete(a1); } // 4953AD: variable 'v5' is possibly undefined // 4F5424: using guessed type int (*off_4F5424)(); // 15412D0: using guessed type int _CRT_MT; //----- (004953D0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = _CRT_MT; *v1 = &off_4F5408; v3 = (volatile signed __int32 *)v1[4]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::messages::~messages(a1); } // 4953DB: variable 'v1' is possibly undefined // 4F5408: using guessed type int (*off_4F5408)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495420) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = _CRT_MT; *v1 = &off_4F5424; v3 = (volatile signed __int32 *)v1[4]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::messages::~messages(a1); } // 49542B: variable 'v1' is possibly undefined // 4F5424: using guessed type int (*off_4F5424)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495470) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = a1[4]; *a1 = &off_4F5440; v3 = (volatile signed __int32 *)a1[3]; *(_DWORD *)(v2 + 12) = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::numpunct::~numpunct(v5); operator delete(a1); } // 4954A7: variable 'v5' is possibly undefined // 4F5440: using guessed type int (*off_4F5440)(); // 15412D0: using guessed type int _CRT_MT; //----- (004954D0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = a1[4]; *a1 = &off_4F5464; v3 = (volatile signed __int32 *)a1[3]; *(_DWORD *)(v2 + 12) = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::numpunct::~numpunct(v5); operator delete(a1); } // 495507: variable 'v5' is possibly undefined // 4F5464: using guessed type int (*off_4F5464)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495530) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = v1[4]; *v1 = &off_4F5440; v3 = (volatile signed __int32 *)v1[3]; *(_DWORD *)(v2 + 12) = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::numpunct::~numpunct(a1); } // 495536: variable 'v1' is possibly undefined // 4F5440: using guessed type int (*off_4F5440)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495580) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = v1[4]; *v1 = &off_4F5464; v3 = (volatile signed __int32 *)v1[3]; *(_DWORD *)(v2 + 12) = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::numpunct::~numpunct(a1); } // 495586: variable 'v1' is possibly undefined // 4F5464: using guessed type int (*off_4F5464)(); // 15412D0: using guessed type int _CRT_MT; //----- (004955D0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = a1[4]; *a1 = &off_4F5488; v3 = (volatile signed __int32 *)a1[3]; *(_DWORD *)(v2 + 12) = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::numpunct::~numpunct(v5); operator delete(a1); } // 495607: variable 'v5' is possibly undefined // 4F5488: using guessed type int (*off_4F5488)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495630) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = a1[4]; *a1 = &off_4F54AC; v3 = (volatile signed __int32 *)a1[3]; *(_DWORD *)(v2 + 12) = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::numpunct::~numpunct(v5); operator delete(a1); } // 495667: variable 'v5' is possibly undefined // 4F54AC: using guessed type int (*off_4F54AC)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495690) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = v1[4]; *v1 = &off_4F5488; v3 = (volatile signed __int32 *)v1[3]; *(_DWORD *)(v2 + 12) = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::numpunct::~numpunct(a1); } // 495696: variable 'v1' is possibly undefined // 4F5488: using guessed type int (*off_4F5488)(); // 15412D0: using guessed type int _CRT_MT; //----- (004956E0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = v1[4]; *v1 = &off_4F54AC; v3 = (volatile signed __int32 *)v1[3]; *(_DWORD *)(v2 + 12) = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::numpunct::~numpunct(a1); } // 4956E6: variable 'v1' is possibly undefined // 4F54AC: using guessed type int (*off_4F54AC)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495730) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F54D0; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F6D84; std::locale::facet::~facet(v5); operator delete(a1); } // 495763: variable 'v5' is possibly undefined // 4F54D0: using guessed type int (*off_4F54D0)(); // 4F6D84: using guessed type int (*off_4F6D84)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495790) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F54F8; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F5D10; std::locale::facet::~facet(v5); operator delete(a1); } // 4957C3: variable 'v5' is possibly undefined // 4F54F8: using guessed type int (*off_4F54F8)(); // 4F5D10: using guessed type int (*off_4F5D10)(); // 15412D0: using guessed type int _CRT_MT; //----- (004957F0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F54D0; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F6D84; std::locale::facet::~facet(a1); } // 4957F1: variable 'v1' is possibly undefined // 4F54D0: using guessed type int (*off_4F54D0)(); // 4F6D84: using guessed type int (*off_4F6D84)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495840) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F54F8; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F5D10; std::locale::facet::~facet(a1); } // 495841: variable 'v1' is possibly undefined // 4F54F8: using guessed type int (*off_4F54F8)(); // 4F5D10: using guessed type int (*off_4F5D10)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495890) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F5524; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F6DAC; std::locale::facet::~facet(v5); operator delete(a1); } // 4958C3: variable 'v5' is possibly undefined // 4F5524: using guessed type int (*off_4F5524)(); // 4F6DAC: using guessed type int (*off_4F6DAC)(); // 15412D0: using guessed type int _CRT_MT; //----- (004958F0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F554C; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F5D3C; std::locale::facet::~facet(v5); operator delete(a1); } // 495923: variable 'v5' is possibly undefined // 4F554C: using guessed type int (*off_4F554C)(); // 4F5D3C: using guessed type int (*off_4F5D3C)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495950) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F5524; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F6DAC; std::locale::facet::~facet(a1); } // 495951: variable 'v1' is possibly undefined // 4F5524: using guessed type int (*off_4F5524)(); // 4F6DAC: using guessed type int (*off_4F6DAC)(); // 15412D0: using guessed type int _CRT_MT; //----- (004959A0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F554C; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F5D3C; std::locale::facet::~facet(a1); } // 4959A1: variable 'v1' is possibly undefined // 4F554C: using guessed type int (*off_4F554C)(); // 4F5D3C: using guessed type int (*off_4F5D3C)(); // 15412D0: using guessed type int _CRT_MT; //----- (004959F0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F5578; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F6E44; std::locale::facet::~facet(v5); operator delete(a1); } // 495A23: variable 'v5' is possibly undefined // 4F5578: using guessed type int (*off_4F5578)(); // 4F6E44: using guessed type int (*off_4F6E44)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495A50) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F5590; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F5D68; std::locale::facet::~facet(v5); operator delete(a1); } // 495A83: variable 'v5' is possibly undefined // 4F5590: using guessed type int (*off_4F5590)(); // 4F5D68: using guessed type int (*off_4F5D68)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495AB0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F5578; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F6E44; std::locale::facet::~facet(a1); } // 495AB1: variable 'v1' is possibly undefined // 4F5578: using guessed type int (*off_4F5578)(); // 4F6E44: using guessed type int (*off_4F6E44)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495B00) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F5590; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F5D68; std::locale::facet::~facet(a1); } // 495B01: variable 'v1' is possibly undefined // 4F5590: using guessed type int (*off_4F5590)(); // 4F5D68: using guessed type int (*off_4F5D68)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495B50) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F55A8; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F6E5C; std::locale::facet::~facet(v5); operator delete(a1); } // 495B83: variable 'v5' is possibly undefined // 4F55A8: using guessed type int (*off_4F55A8)(); // 4F6E5C: using guessed type int (*off_4F6E5C)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495BB0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F55C0; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F5D80; std::locale::facet::~facet(v5); operator delete(a1); } // 495BE3: variable 'v5' is possibly undefined // 4F55C0: using guessed type int (*off_4F55C0)(); // 4F5D80: using guessed type int (*off_4F5D80)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495C10) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F55A8; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F6E5C; std::locale::facet::~facet(a1); } // 495C11: variable 'v1' is possibly undefined // 4F55A8: using guessed type int (*off_4F55A8)(); // 4F6E5C: using guessed type int (*off_4F6E5C)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495C60) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F55C0; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F5D80; std::locale::facet::~facet(a1); } // 495C61: variable 'v1' is possibly undefined // 4F55C0: using guessed type int (*off_4F55C0)(); // 4F5D80: using guessed type int (*off_4F5D80)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495CB0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F55D8; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F6E74; std::locale::facet::~facet(v5); operator delete(a1); } // 495CE3: variable 'v5' is possibly undefined // 4F55D8: using guessed type int (*off_4F55D8)(); // 4F6E74: using guessed type int (*off_4F6E74)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495D10) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F55F0; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F5D98; std::locale::facet::~facet(v5); operator delete(a1); } // 495D43: variable 'v5' is possibly undefined // 4F55F0: using guessed type int (*off_4F55F0)(); // 4F5D98: using guessed type int (*off_4F5D98)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495D70) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F55D8; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F6E74; std::locale::facet::~facet(a1); } // 495D71: variable 'v1' is possibly undefined // 4F55D8: using guessed type int (*off_4F55D8)(); // 4F6E74: using guessed type int (*off_4F6E74)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495DC0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F55F0; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F5D98; std::locale::facet::~facet(a1); } // 495DC1: variable 'v1' is possibly undefined // 4F55F0: using guessed type int (*off_4F55F0)(); // 4F5D98: using guessed type int (*off_4F5D98)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495E10) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F5608; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F6E8C; std::locale::facet::~facet(v5); operator delete(a1); } // 495E43: variable 'v5' is possibly undefined // 4F5608: using guessed type int (*off_4F5608)(); // 4F6E8C: using guessed type int (*off_4F6E8C)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495E70) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *a1 = &off_4F5620; v3 = (volatile signed __int32 *)a1[2]; if ( v2 ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); *a1 = &off_4F5DB0; std::locale::facet::~facet(v5); operator delete(a1); } // 495EA3: variable 'v5' is possibly undefined // 4F5620: using guessed type int (*off_4F5620)(); // 4F5DB0: using guessed type int (*off_4F5DB0)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495ED0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F5608; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F6E8C; std::locale::facet::~facet(a1); } // 495ED1: variable 'v1' is possibly undefined // 4F5608: using guessed type int (*off_4F5608)(); // 4F6E8C: using guessed type int (*off_4F6E8C)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495F20) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx int v3; // eax volatile signed __int32 *v4; // ecx signed __int32 v5; // eax v2 = v1; v3 = _CRT_MT; *v1 = &off_4F5620; v4 = (volatile signed __int32 *)v1[2]; if ( v3 ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); *v2 = &off_4F5DB0; std::locale::facet::~facet(a1); } // 495F21: variable 'v1' is possibly undefined // 4F5620: using guessed type int (*off_4F5620)(); // 4F5DB0: using guessed type int (*off_4F5DB0)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495F70) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = (_DWORD *)a1[4]; *a1 = &off_4F5638; v3 = (volatile signed __int32 *)a1[3]; v2[3] = 0; v2[6] = 0; v2[8] = 0; v2[10] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(v5); operator delete(a1); } // 495FBC: variable 'v5' is possibly undefined // 4F5638: using guessed type int (*off_4F5638)(); // 15412D0: using guessed type int _CRT_MT; //----- (00495FE0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = (_DWORD *)a1[4]; *a1 = &off_4F566C; v3 = (volatile signed __int32 *)a1[3]; v2[3] = 0; v2[6] = 0; v2[8] = 0; v2[10] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(v5); operator delete(a1); } // 49602C: variable 'v5' is possibly undefined // 4F566C: using guessed type int (*off_4F566C)(); // 15412D0: using guessed type int _CRT_MT; //----- (00496050) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)v1[4]; *v1 = &off_4F5638; v3 = (volatile signed __int32 *)v1[3]; v2[3] = 0; v2[6] = 0; v2[8] = 0; v2[10] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(a1); } // 496056: variable 'v1' is possibly undefined // 4F5638: using guessed type int (*off_4F5638)(); // 15412D0: using guessed type int _CRT_MT; //----- (004960C0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)v1[4]; *v1 = &off_4F566C; v3 = (volatile signed __int32 *)v1[3]; v2[3] = 0; v2[6] = 0; v2[8] = 0; v2[10] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(a1); } // 4960C6: variable 'v1' is possibly undefined // 4F566C: using guessed type int (*off_4F566C)(); // 15412D0: using guessed type int _CRT_MT; //----- (00496130) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = (_DWORD *)a1[4]; *a1 = &off_4F56A0; v3 = (volatile signed __int32 *)a1[3]; v2[3] = 0; v2[6] = 0; v2[8] = 0; v2[10] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(v5); operator delete(a1); } // 49617C: variable 'v5' is possibly undefined // 4F56A0: using guessed type int (*off_4F56A0)(); // 15412D0: using guessed type int _CRT_MT; //----- (004961A0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = (_DWORD *)a1[4]; *a1 = &off_4F56D4; v3 = (volatile signed __int32 *)a1[3]; v2[3] = 0; v2[6] = 0; v2[8] = 0; v2[10] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(v5); operator delete(a1); } // 4961EC: variable 'v5' is possibly undefined // 4F56D4: using guessed type int (*off_4F56D4)(); // 15412D0: using guessed type int _CRT_MT; //----- (00496210) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)v1[4]; *v1 = &off_4F56A0; v3 = (volatile signed __int32 *)v1[3]; v2[3] = 0; v2[6] = 0; v2[8] = 0; v2[10] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(a1); } // 496216: variable 'v1' is possibly undefined // 4F56A0: using guessed type int (*off_4F56A0)(); // 15412D0: using guessed type int _CRT_MT; //----- (00496280) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)v1[4]; *v1 = &off_4F56D4; v3 = (volatile signed __int32 *)v1[3]; v2[3] = 0; v2[6] = 0; v2[8] = 0; v2[10] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(a1); } // 496286: variable 'v1' is possibly undefined // 4F56D4: using guessed type int (*off_4F56D4)(); // 15412D0: using guessed type int _CRT_MT; //----- (004962F0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = (_DWORD *)a1[4]; *a1 = &off_4F5708; v3 = (volatile signed __int32 *)a1[3]; v2[3] = 0; v2[7] = 0; v2[9] = 0; v2[11] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(v5); operator delete(a1); } // 49633C: variable 'v5' is possibly undefined // 4F5708: using guessed type int (*off_4F5708)(); // 15412D0: using guessed type int _CRT_MT; //----- (00496360) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = (_DWORD *)a1[4]; *a1 = &off_4F573C; v3 = (volatile signed __int32 *)a1[3]; v2[3] = 0; v2[7] = 0; v2[9] = 0; v2[11] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(v5); operator delete(a1); } // 4963AC: variable 'v5' is possibly undefined // 4F573C: using guessed type int (*off_4F573C)(); // 15412D0: using guessed type int _CRT_MT; //----- (004963D0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)v1[4]; *v1 = &off_4F5708; v3 = (volatile signed __int32 *)v1[3]; v2[3] = 0; v2[7] = 0; v2[9] = 0; v2[11] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(a1); } // 4963D6: variable 'v1' is possibly undefined // 4F5708: using guessed type int (*off_4F5708)(); // 15412D0: using guessed type int _CRT_MT; //----- (00496440) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)v1[4]; *v1 = &off_4F573C; v3 = (volatile signed __int32 *)v1[3]; v2[3] = 0; v2[7] = 0; v2[9] = 0; v2[11] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(a1); } // 496446: variable 'v1' is possibly undefined // 4F573C: using guessed type int (*off_4F573C)(); // 15412D0: using guessed type int _CRT_MT; //----- (004964B0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = (_DWORD *)a1[4]; *a1 = &off_4F5770; v3 = (volatile signed __int32 *)a1[3]; v2[3] = 0; v2[7] = 0; v2[9] = 0; v2[11] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(v5); operator delete(a1); } // 4964FC: variable 'v5' is possibly undefined // 4F5770: using guessed type int (*off_4F5770)(); // 15412D0: using guessed type int _CRT_MT; //----- (00496520) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *v5; // [esp+0h] [ebp-1Ch] v2 = (_DWORD *)a1[4]; *a1 = &off_4F57A4; v3 = (volatile signed __int32 *)a1[3]; v2[3] = 0; v2[7] = 0; v2[9] = 0; v2[11] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(v5); operator delete(a1); } // 49656C: variable 'v5' is possibly undefined // 4F57A4: using guessed type int (*off_4F57A4)(); // 15412D0: using guessed type int _CRT_MT; //----- (00496590) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)v1[4]; *v1 = &off_4F5770; v3 = (volatile signed __int32 *)v1[3]; v2[3] = 0; v2[7] = 0; v2[9] = 0; v2[11] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(a1); } // 496596: variable 'v1' is possibly undefined // 4F5770: using guessed type int (*off_4F5770)(); // 15412D0: using guessed type int _CRT_MT; //----- (00496600) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)v1[4]; *v1 = &off_4F57A4; v3 = (volatile signed __int32 *)v1[3]; v2[3] = 0; v2[7] = 0; v2[9] = 0; v2[11] = 0; if ( _CRT_MT ) { v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); } else { v4 = *((_DWORD *)v3 + 1); *((_DWORD *)v3 + 1) = v4 - 1; } if ( v4 == 1 ) (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); std::moneypunct::~moneypunct(a1); } // 496606: variable 'v1' is possibly undefined // 4F57A4: using guessed type int (*off_4F57A4)(); // 15412D0: using guessed type int _CRT_MT; //----- (00496670) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1) { volatile signed __int32 *v1; // eax int v2; // edx int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF v1 = *a1; if ( *a1 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 - 1); *((_DWORD *)v1 - 1) = v2 - 1; } if ( v2 <= 0 ) std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v3); } } // 15412D0: using guessed type int _CRT_MT; // 496670: using guessed type int var_D[3]; //----- (004966D0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (00496700) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1) { volatile signed __int32 *v1; // eax int v2; // edx int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF v1 = *a1; if ( *a1 != (volatile signed __int32 *)&unk_4E93EC ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 - 1); *((_DWORD *)v1 - 1) = v2 - 1; } if ( v2 <= 0 ) std::wstring::_Rep::_M_destroy((void *)(v1 - 3), (int)v3); } } // 15412D0: using guessed type int _CRT_MT; // 496700: using guessed type int var_D[3]; //----- (00496760) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (00496790) -------------------------------------------------------- void __cdecl std::__facet_shims::__messages_get( int a1, int a2, int a3, std::string *a4, int a5, int a6, _BYTE *a7, int a8) { void (__cdecl *v8)(int); // eax volatile signed __int32 *v9; // eax int v10; // edx void *v11; // ecx void *v12; // ecx int v13; // edx int v14; // edx const std::string *v15; // [esp+4h] [ebp-44h] char v16; // [esp+26h] [ebp-22h] BYREF char v17[5]; // [esp+27h] [ebp-21h] BYREF int v18[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::string::string(&v17[1], a7, a8, (int)&v16); (*(void (__thiscall **)(int *, int, std::string *, int, int, char *))(*(_DWORD *)a2 + 12))( v18, a2, a4, a5, a6, &v17[1]); v8 = *(void (__cdecl **)(int))(a3 + 24); if ( v8 ) v8(a3); std::string::string((unsigned int **)a3, (unsigned int **)v18, v15); v9 = (volatile signed __int32 *)v18[0]; v10 = *(_DWORD *)(v18[0] - 12); v11 = (void *)(v18[0] - 12); *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; *(_DWORD *)(a3 + 4) = v10; if ( v9 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v13 = _InterlockedExchangeAdd(v9 - 1, 0xFFFFFFFF); } else { v13 = *((_DWORD *)v9 - 1); *((_DWORD *)v9 - 1) = v13 - 1; } if ( v13 <= 0 ) std::string::_Rep::_M_destroy(v11, (int)v17); } v12 = (void *)(*(_DWORD *)&v17[1] - 12); if ( *(_UNKNOWN **)&v17[1] != &unk_4E93FC ) { if ( _CRT_MT ) { v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v17[1] - 4), 0xFFFFFFFF); } else { v14 = *(_DWORD *)(*(_DWORD *)&v17[1] - 4); *(_DWORD *)(*(_DWORD *)&v17[1] - 4) = v14 - 1; } if ( v14 <= 0 ) std::string::_Rep::_M_destroy(v12, (int)v18); } } // 4967FB: variable 'v15' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004968F0) -------------------------------------------------------- void __cdecl std::__facet_shims::__messages_get( int a1, int a2, _DWORD *a3, int a4, int a5, int a6, unsigned __int8 *a7, int a8) { void (__cdecl *v8)(_DWORD *); // eax void *v9; // edx char *v10; // eax int v11; // [esp+8h] [ebp-60h] int v12; // [esp+8h] [ebp-60h] void *v13[2]; // [esp+20h] [ebp-48h] BYREF char v14[16]; // [esp+28h] [ebp-40h] BYREF void *v15[2]; // [esp+38h] [ebp-30h] BYREF char v16; // [esp+40h] [ebp-28h] BYREF v13[0] = v14; LOBYTE(v11) = 0; std::string::_M_construct(v13, a7, (size_t)&a7[a8], v11); (*(void (__thiscall **)(void **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(v15, a2, a4, a5, a6, v13); v8 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v8 ) v8(a3); v9 = v15[1]; *a3 = a3 + 2; LOBYTE(v12) = 0; std::string::_M_construct(a3, (_BYTE *)v15[0], (int)v15[0] + (unsigned int)v9, v12); v10 = (char *)v15[0]; a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; if ( v10 != &v16 ) operator delete(v10); if ( v13[0] != v14 ) operator delete(v13[0]); } // 49691C: variable 'v11' is possibly undefined // 496975: variable 'v12' is possibly undefined //----- (004969E0) -------------------------------------------------------- void __cdecl std::__facet_shims::__messages_get( int a1, int a2, _DWORD *a3, int a4, int a5, int a6, const wchar_t *a7, int a8) { void (__cdecl *v8)(_DWORD *); // eax volatile signed __int32 *v9; // eax int v10; // edx void *v11; // ecx void *v12; // ecx int v13; // edx int v14; // edx char v15; // [esp+26h] [ebp-22h] BYREF char v16[5]; // [esp+27h] [ebp-21h] BYREF int v17[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wstring::basic_string(&v16[1], a7, a8, (int)&v15); (*(void (__thiscall **)(int *, int, int, int, int, char *))(*(_DWORD *)a2 + 12))(v17, a2, a4, a5, a6, &v16[1]); v8 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v8 ) v8(a3); std::wstring::basic_string(a3, v17); v9 = (volatile signed __int32 *)v17[0]; v10 = *(_DWORD *)(v17[0] - 12); v11 = (void *)(v17[0] - 12); a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; a3[1] = v10; if ( v9 != (volatile signed __int32 *)&unk_4E93EC ) { if ( _CRT_MT ) { v13 = _InterlockedExchangeAdd(v9 - 1, 0xFFFFFFFF); } else { v13 = *((_DWORD *)v9 - 1); *((_DWORD *)v9 - 1) = v13 - 1; } if ( v13 <= 0 ) std::wstring::_Rep::_M_destroy(v11, (int)v16); } v12 = (void *)(*(_DWORD *)&v16[1] - 12); if ( *(_UNKNOWN **)&v16[1] != &unk_4E93EC ) { if ( _CRT_MT ) { v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v16[1] - 4), 0xFFFFFFFF); } else { v14 = *(_DWORD *)(*(_DWORD *)&v16[1] - 4); *(_DWORD *)(*(_DWORD *)&v16[1] - 4) = v14 - 1; } if ( v14 <= 0 ) std::wstring::_Rep::_M_destroy(v12, (int)v17); } } // 15412D0: using guessed type int _CRT_MT; //----- (00496B40) -------------------------------------------------------- void __cdecl std::__facet_shims::__messages_get( int a1, int a2, int a3, int a4, int a5, int a6, wchar_t *a7, int a8) { void (__cdecl *v8)(int); // eax wchar_t *v9; // edx wchar_t *v10; // eax int v11; // [esp+8h] [ebp-60h] int v12; // [esp+8h] [ebp-60h] void *v13[2]; // [esp+20h] [ebp-48h] BYREF char v14[16]; // [esp+28h] [ebp-40h] BYREF wchar_t *v15[2]; // [esp+38h] [ebp-30h] BYREF char v16; // [esp+40h] [ebp-28h] BYREF v13[0] = v14; LOBYTE(v11) = 0; std::wstring::_M_construct((wchar_t **)v13, a7, (int)&a7[a8], v11); (*(void (__thiscall **)(wchar_t **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(v15, a2, a4, a5, a6, v13); v8 = *(void (__cdecl **)(int))(a3 + 24); if ( v8 ) v8(a3); v9 = v15[1]; *(_DWORD *)a3 = a3 + 8; LOBYTE(v12) = 0; std::wstring::_M_construct((wchar_t **)a3, v15[0], (int)&v15[0][(_DWORD)v9], v12); v10 = v15[0]; *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; if ( v10 != (wchar_t *)&v16 ) operator delete(v10); if ( v13[0] != v14 ) operator delete(v13[0]); } // 496B6D: variable 'v11' is possibly undefined // 496BC7: variable 'v12' is possibly undefined //----- (00496C30) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5) { int result; // eax void *v6; // ecx int v7; // ebx int v8; // [esp+1Ch] [ebp-2Ch] char v9; // [esp+2Bh] [ebp-1Dh] BYREF _DWORD v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::string::string(v10, a3, a4, (int)&v9); result = (*(int (__thiscall **)(int, _DWORD *, int))(*(_DWORD *)a2 + 8))(a2, v10, a5); v6 = (void *)(v10[0] - 12); if ( (_UNKNOWN *)v10[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v7 = _InterlockedExchangeAdd((volatile signed __int32 *)(v10[0] - 4), 0xFFFFFFFF); } else { v7 = *(_DWORD *)(v10[0] - 4); *(_DWORD *)(v10[0] - 4) = v7 - 1; } if ( v7 <= 0 ) { v8 = result; std::string::_Rep::_M_destroy(v6, (int)&v9); return v8; } } return result; } // 15412D0: using guessed type int _CRT_MT; //----- (00496CF0) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5) { int v5; // ebx int v7; // [esp+8h] [ebp-40h] void *v8[2]; // [esp+18h] [ebp-30h] BYREF char v9[40]; // [esp+20h] [ebp-28h] BYREF v8[0] = v9; LOBYTE(v7) = 0; std::string::_M_construct(v8, a3, (size_t)&a3[a4], v7); v5 = (*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, v8, a5); if ( v8[0] != v9 ) operator delete(v8[0]); return v5; } // 496D1B: variable 'v7' is possibly undefined //----- (00496D70) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5) { int result; // eax void *v6; // ecx int v7; // ebx int v8; // [esp+1Ch] [ebp-2Ch] char v9; // [esp+2Bh] [ebp-1Dh] BYREF _DWORD v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::string::string(v10, a3, a4, (int)&v9); result = (*(int (__thiscall **)(int, _DWORD *, int))(*(_DWORD *)a2 + 8))(a2, v10, a5); v6 = (void *)(v10[0] - 12); if ( (_UNKNOWN *)v10[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v7 = _InterlockedExchangeAdd((volatile signed __int32 *)(v10[0] - 4), 0xFFFFFFFF); } else { v7 = *(_DWORD *)(v10[0] - 4); *(_DWORD *)(v10[0] - 4) = v7 - 1; } if ( v7 <= 0 ) { v8 = result; std::string::_Rep::_M_destroy(v6, (int)&v9); return v8; } } return result; } // 15412D0: using guessed type int _CRT_MT; //----- (00496E30) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5) { int v5; // ebx int v7; // [esp+8h] [ebp-40h] void *v8[2]; // [esp+18h] [ebp-30h] BYREF char v9[40]; // [esp+20h] [ebp-28h] BYREF v8[0] = v9; LOBYTE(v7) = 0; std::string::_M_construct(v8, a3, (size_t)&a3[a4], v7); v5 = (*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, v8, a5); if ( v8[0] != v9 ) operator delete(v8[0]); return v5; } // 496E5B: variable 'v7' is possibly undefined //----- (00496EB0) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (00496ED0) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (00496EF0) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (00496F10) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (00496F30) -------------------------------------------------------- int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) { return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); } //----- (00496F70) -------------------------------------------------------- int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) { return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); } //----- (00496FB0) -------------------------------------------------------- int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) { return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); } //----- (00496FF0) -------------------------------------------------------- int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) { return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); } //----- (00497030) -------------------------------------------------------- void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, std::string *a4, int a5) { void (__cdecl *v5)(int); // eax unsigned int *v6; // eax int v7; // edx unsigned int *v8; // ecx int v9; // edx const std::string *v10; // [esp+4h] [ebp-24h] int v11; // [esp+1Bh] [ebp-Dh] BYREF unsigned int *v12[3]; // [esp+1Ch] [ebp-Ch] BYREF (*(void (__thiscall **)(unsigned int **, int, std::string *, int))(*(_DWORD *)a2 + 12))(v12, a2, a4, a5); v5 = *(void (__cdecl **)(int))(a3 + 24); if ( v5 ) v5(a3); std::string::string((unsigned int **)a3, v12, v10); v6 = v12[0]; v7 = *(v12[0] - 3); v8 = v12[0] - 3; *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; *(_DWORD *)(a3 + 4) = v7; if ( v6 != (unsigned int *)&unk_4E93FC ) { if ( _CRT_MT ) { v9 = _InterlockedExchangeAdd((volatile signed __int32 *)v6 - 1, 0xFFFFFFFF); } else { v9 = *(v6 - 1); *(v6 - 1) = v9 - 1; } if ( v9 <= 0 ) std::string::_Rep::_M_destroy(v8, (int)&v11); } } // 49706D: variable 'v10' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (00497100) -------------------------------------------------------- void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) { void (__cdecl *v5)(_DWORD *); // eax void *v6; // edx char *v7; // eax int v8; // [esp+8h] [ebp-30h] void *v9[2]; // [esp+18h] [ebp-20h] BYREF char v10; // [esp+20h] [ebp-18h] BYREF (*(void (__thiscall **)(void **, int, int, int))(*(_DWORD *)a2 + 12))(v9, a2, a4, a5); v5 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v5 ) v5(a3); v6 = v9[1]; *a3 = a3 + 2; LOBYTE(v8) = 0; std::string::_M_construct(a3, (_BYTE *)v9[0], (int)v9[0] + (unsigned int)v6, v8); v7 = (char *)v9[0]; a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; if ( v7 != &v10 ) operator delete(v7); } // 497150: variable 'v8' is possibly undefined //----- (004971A0) -------------------------------------------------------- void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) { void (__cdecl *v5)(_DWORD *); // eax volatile signed __int32 *v6; // eax int v7; // edx void *v8; // ecx int v9; // edx int v10; // [esp+1Bh] [ebp-Dh] BYREF _DWORD v11[3]; // [esp+1Ch] [ebp-Ch] BYREF (*(void (__thiscall **)(_DWORD *, int, int, int))(*(_DWORD *)a2 + 12))(v11, a2, a4, a5); v5 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v5 ) v5(a3); std::wstring::basic_string(a3, v11); v6 = (volatile signed __int32 *)v11[0]; v7 = *(_DWORD *)(v11[0] - 12); v8 = (void *)(v11[0] - 12); a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; a3[1] = v7; if ( v6 != (volatile signed __int32 *)&unk_4E93EC ) { if ( _CRT_MT ) { v9 = _InterlockedExchangeAdd(v6 - 1, 0xFFFFFFFF); } else { v9 = *((_DWORD *)v6 - 1); *((_DWORD *)v6 - 1) = v9 - 1; } if ( v9 <= 0 ) std::wstring::_Rep::_M_destroy(v8, (int)&v10); } } // 15412D0: using guessed type int _CRT_MT; //----- (00497270) -------------------------------------------------------- void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, int a4, int a5) { void (__cdecl *v5)(int); // eax wchar_t *v6; // edx wchar_t *v7; // eax int v8; // [esp+8h] [ebp-30h] wchar_t *v9[2]; // [esp+18h] [ebp-20h] BYREF char v10; // [esp+20h] [ebp-18h] BYREF (*(void (__thiscall **)(wchar_t **, int, int, int))(*(_DWORD *)a2 + 12))(v9, a2, a4, a5); v5 = *(void (__cdecl **)(int))(a3 + 24); if ( v5 ) v5(a3); v6 = v9[1]; *(_DWORD *)a3 = a3 + 8; LOBYTE(v8) = 0; std::wstring::_M_construct((wchar_t **)a3, v9[0], (int)&v9[0][(_DWORD)v6], v8); v7 = v9[0]; *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; if ( v7 != (wchar_t *)&v10 ) operator delete(v7); } // 4972C1: variable 'v8' is possibly undefined //----- (00497310) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (00497320) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (00497330) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (00497340) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (00497350) -------------------------------------------------------- void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) { char v3; // al int v4; // eax std::string *v5; // edi void *v6; // ecx std::string *v7; // edi void *v8; // ecx char *v9; // edi std::string *v10; // esi volatile signed __int32 *v11; // eax int v12; // edx int v13; // edx int v14; // edx unsigned int v15; // [esp+Ch] [ebp-3Ch] unsigned int v16; // [esp+Ch] [ebp-3Ch] unsigned int v17; // [esp+Ch] [ebp-3Ch] char *v18; // [esp+1Ch] [ebp-2Ch] char *v19; // [esp+1Ch] [ebp-2Ch] char v20; // [esp+2Bh] [ebp-1Dh] BYREF _DWORD v21[7]; // [esp+2Ch] [ebp-1Ch] BYREF *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 8) = 0; *(_BYTE *)(a3 + 37) = v3; v4 = *a2; *(_DWORD *)(a3 + 20) = 0; *(_DWORD *)(a3 + 28) = 0; *(_BYTE *)(a3 + 100) = 1; (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v21, a2); v18 = *(char **)(v21[0] - 12); v5 = (std::string *)operator new[]((unsigned int)(v18 + 1)); std::string::copy(v21, v5, v18, 0, v15); *(_DWORD *)(a3 + 8) = v5; v18[(_DWORD)v5] = 0; *(_DWORD *)(a3 + 12) = v18; v6 = (void *)(v21[0] - 12); if ( (_UNKNOWN *)v21[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd((volatile signed __int32 *)(v21[0] - 4), 0xFFFFFFFF); } else { v12 = *(_DWORD *)(v21[0] - 4); *(_DWORD *)(v21[0] - 4) = v12 - 1; } if ( v12 <= 0 ) std::string::_Rep::_M_destroy(v6, (int)&v20); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v21, a2); v19 = *(char **)(v21[0] - 12); v7 = (std::string *)operator new[]((unsigned int)(v19 + 1)); std::string::copy(v21, v7, v19, 0, v16); *(_DWORD *)(a3 + 20) = v7; v19[(_DWORD)v7] = 0; *(_DWORD *)(a3 + 24) = v19; v8 = (void *)(v21[0] - 12); if ( (_UNKNOWN *)v21[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v13 = _InterlockedExchangeAdd((volatile signed __int32 *)(v21[0] - 4), 0xFFFFFFFF); } else { v13 = *(_DWORD *)(v21[0] - 4); *(_DWORD *)(v21[0] - 4) = v13 - 1; } if ( v13 <= 0 ) std::string::_Rep::_M_destroy(v8, (int)&v20); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v21, a2); v9 = *(char **)(v21[0] - 12); v10 = (std::string *)operator new[]((unsigned int)(v9 + 1)); std::string::copy(v21, v10, v9, 0, v17); v11 = (volatile signed __int32 *)v21[0]; v9[(_DWORD)v10] = 0; *(_DWORD *)(a3 + 28) = v10; *(_DWORD *)(a3 + 32) = v9; if ( v11 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v14 = _InterlockedExchangeAdd(v11 - 1, 0xFFFFFFFF); } else { v14 = *((_DWORD *)v11 - 1); *((_DWORD *)v11 - 1) = v14 - 1; } if ( v14 <= 0 ) std::string::_Rep::_M_destroy((void *)(v11 - 3), (int)&v20); } } // 4973C5: variable 'v15' is possibly undefined // 497424: variable 'v16' is possibly undefined // 49747D: variable 'v17' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004975A0) -------------------------------------------------------- void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) { char v3; // al int v4; // eax _BYTE *v5; // edi _BYTE *v6; // edi int v7; // edi _BYTE *v8; // esi char *v9; // eax unsigned int v10; // [esp+1Ch] [ebp-3Ch] unsigned int v11; // [esp+1Ch] [ebp-3Ch] void *v12; // [esp+28h] [ebp-30h] BYREF int v13; // [esp+2Ch] [ebp-2Ch] char v14[40]; // [esp+30h] [ebp-28h] BYREF *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 8) = 0; *(_BYTE *)(a3 + 37) = v3; v4 = *a2; *(_DWORD *)(a3 + 20) = 0; *(_DWORD *)(a3 + 28) = 0; *(_BYTE *)(a3 + 100) = 1; (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v12, a2); v10 = v13; v5 = (_BYTE *)operator new[](v13 + 1); std::string::copy(&v12, v5, v10, 0); *(_DWORD *)(a3 + 8) = v5; v5[v10] = 0; *(_DWORD *)(a3 + 12) = v10; if ( v12 != v14 ) operator delete(v12); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v12, a2); v11 = v13; v6 = (_BYTE *)operator new[](v13 + 1); std::string::copy(&v12, v6, v11, 0); *(_DWORD *)(a3 + 20) = v6; v6[v11] = 0; *(_DWORD *)(a3 + 24) = v11; if ( v12 != v14 ) operator delete(v12); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v12, a2); v7 = v13; v8 = (_BYTE *)operator new[](v13 + 1); std::string::copy(&v12, v8, v7, 0); v9 = (char *)v12; v8[v7] = 0; *(_DWORD *)(a3 + 28) = v8; *(_DWORD *)(a3 + 32) = v7; if ( v9 != v14 ) operator delete(v9); } //----- (00497720) -------------------------------------------------------- void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) { __int16 v3; // ax int v4; // eax std::string *v5; // edi void *v6; // ecx int v7; // eax wchar_t *v8; // edi volatile signed __int32 *v9; // eax unsigned int v10; // edi unsigned int v11; // edi wchar_t *v12; // esi void *v13; // ecx int v14; // edx int v15; // edx int v16; // edx unsigned int v17; // [esp+Ch] [ebp-3Ch] int v18; // [esp+18h] [ebp-30h] char *v19; // [esp+1Ch] [ebp-2Ch] char *v20; // [esp+1Ch] [ebp-2Ch] char *v21; // [esp+1Ch] [ebp-2Ch] char v22; // [esp+2Bh] [ebp-1Dh] BYREF _DWORD v23[7]; // [esp+2Ch] [ebp-1Ch] BYREF *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 8) = 0; *(_WORD *)(a3 + 38) = v3; v4 = *a2; *(_DWORD *)(a3 + 20) = 0; *(_DWORD *)(a3 + 28) = 0; *(_BYTE *)(a3 + 164) = 1; (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v23, a2); v19 = *(char **)(v23[0] - 12); v5 = (std::string *)operator new[]((unsigned int)(v19 + 1)); std::string::copy(v23, v5, v19, 0, v17); *(_DWORD *)(a3 + 8) = v5; v19[(_DWORD)v5] = 0; *(_DWORD *)(a3 + 12) = v19; v6 = (void *)(v23[0] - 12); if ( (_UNKNOWN *)v23[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF); } else { v14 = *(_DWORD *)(v23[0] - 4); *(_DWORD *)(v23[0] - 4) = v14 - 1; } if ( v14 <= 0 ) std::string::_Rep::_M_destroy(v6, (int)&v22); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v23, a2); v20 = *(char **)(v23[0] - 12); v7 = (int)(v20 + 1); if ( (unsigned int)(v20 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v18 = v7; v8 = (wchar_t *)operator new[](2 * v7); std::wstring::copy(v23, v8, (unsigned int)v20, 0); *(_DWORD *)(a3 + 20) = v8; *(_DWORD *)(a3 + 24) = v20; v9 = (volatile signed __int32 *)v23[0]; v8[v18 - 1] = 0; if ( v9 != (volatile signed __int32 *)&unk_4E93EC ) { if ( _CRT_MT ) { v15 = _InterlockedExchangeAdd(v9 - 1, 0xFFFFFFFF); } else { v15 = *((_DWORD *)v9 - 1); *((_DWORD *)v9 - 1) = v15 - 1; } if ( v15 <= 0 ) std::wstring::_Rep::_M_destroy((void *)(v9 - 3), (int)&v22); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v23, a2); v10 = *(_DWORD *)(v23[0] - 12) + 1; v21 = *(char **)(v23[0] - 12); if ( v10 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v11 = v10; v12 = (wchar_t *)operator new[](v11 * 2); std::wstring::copy(v23, v12, (unsigned int)v21, 0); *(_DWORD *)(a3 + 28) = v12; v12[v11 - 1] = 0; *(_DWORD *)(a3 + 32) = v21; v13 = (void *)(v23[0] - 12); if ( (_UNKNOWN *)v23[0] != &unk_4E93EC ) { if ( _CRT_MT ) { v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF); } else { v16 = *(_DWORD *)(v23[0] - 4); *(_DWORD *)(v23[0] - 4) = v16 - 1; } if ( v16 <= 0 ) std::wstring::_Rep::_M_destroy(v13, (int)&v22); } } // 49779A: variable 'v17' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004979E0) -------------------------------------------------------- void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) { __int16 v3; // ax int v4; // eax _BYTE *v5; // edi int v6; // eax wchar_t *v7; // edi char *v8; // eax int v9; // edi int v10; // eax wchar_t *v11; // esi int v12; // [esp+18h] [ebp-40h] unsigned int v13; // [esp+1Ch] [ebp-3Ch] unsigned int v14; // [esp+1Ch] [ebp-3Ch] int v15; // [esp+1Ch] [ebp-3Ch] void *v16; // [esp+28h] [ebp-30h] BYREF int v17; // [esp+2Ch] [ebp-2Ch] char v18[40]; // [esp+30h] [ebp-28h] BYREF *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 8) = 0; *(_WORD *)(a3 + 38) = v3; v4 = *a2; *(_DWORD *)(a3 + 20) = 0; *(_DWORD *)(a3 + 28) = 0; *(_BYTE *)(a3 + 164) = 1; (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v16, a2); v13 = v17; v5 = (_BYTE *)operator new[](v17 + 1); std::string::copy(&v16, v5, v13, 0); *(_DWORD *)(a3 + 8) = v5; v5[v13] = 0; *(_DWORD *)(a3 + 12) = v13; if ( v16 != v18 ) operator delete(v16); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v16, a2); v14 = v17; v6 = v17 + 1; if ( (unsigned int)(v17 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v12 = v6; v7 = (wchar_t *)operator new[](2 * v6); std::wstring::copy(&v16, v7, v14, 0); *(_DWORD *)(a3 + 20) = v7; *(_DWORD *)(a3 + 24) = v14; v8 = (char *)v16; v7[v12 - 1] = 0; if ( v8 != v18 ) operator delete(v8); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v16, a2); v9 = v17; v10 = v17 + 1; if ( (unsigned int)(v17 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v15 = v10; v11 = (wchar_t *)operator new[](2 * v10); std::wstring::copy(&v16, v11, v9, 0); *(_DWORD *)(a3 + 32) = v9; *(_DWORD *)(a3 + 28) = v11; v11[v15 - 1] = 0; if ( v16 != v18 ) operator delete(v16); } //----- (00497B90) -------------------------------------------------------- int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax std::string *v5; // edi void *v6; // ecx std::string *v7; // edi void *v8; // ecx std::string *v9; // edi void *v10; // ecx std::string *v11; // edi void *v12; // ecx int result; // eax int v14; // edx int v15; // edx int v16; // edx int v17; // edx unsigned int v18; // [esp+Ch] [ebp-3Ch] unsigned int v19; // [esp+Ch] [ebp-3Ch] unsigned int v20; // [esp+Ch] [ebp-3Ch] unsigned int v21; // [esp+Ch] [ebp-3Ch] char *v22; // [esp+1Ch] [ebp-2Ch] char *v23; // [esp+1Ch] [ebp-2Ch] char *v24; // [esp+1Ch] [ebp-2Ch] char *v25; // [esp+1Ch] [ebp-2Ch] char v26; // [esp+2Bh] [ebp-1Dh] BYREF _DWORD v27[7]; // [esp+2Ch] [ebp-1Ch] BYREF *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 44) = v3; v4 = *a2; *(_DWORD *)(a3 + 20) = 0; *(_DWORD *)(a3 + 28) = 0; *(_DWORD *)(a3 + 36) = 0; *(_BYTE *)(a3 + 67) = 1; (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v27, a2); v22 = *(char **)(v27[0] - 12); v5 = (std::string *)operator new[]((unsigned int)(v22 + 1)); std::string::copy(v27, v5, v22, 0, v18); *(_DWORD *)(a3 + 8) = v5; v22[(_DWORD)v5] = 0; *(_DWORD *)(a3 + 12) = v22; v6 = (void *)(v27[0] - 12); if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); } else { v14 = *(_DWORD *)(v27[0] - 4); *(_DWORD *)(v27[0] - 4) = v14 - 1; } if ( v14 <= 0 ) std::string::_Rep::_M_destroy(v6, (int)&v26); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v27, a2); v23 = *(char **)(v27[0] - 12); v7 = (std::string *)operator new[]((unsigned int)(v23 + 1)); std::string::copy(v27, v7, v23, 0, v19); *(_DWORD *)(a3 + 20) = v7; v23[(_DWORD)v7] = 0; *(_DWORD *)(a3 + 24) = v23; v8 = (void *)(v27[0] - 12); if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v15 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); } else { v15 = *(_DWORD *)(v27[0] - 4); *(_DWORD *)(v27[0] - 4) = v15 - 1; } if ( v15 <= 0 ) std::string::_Rep::_M_destroy(v8, (int)&v26); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v27, a2); v24 = *(char **)(v27[0] - 12); v9 = (std::string *)operator new[]((unsigned int)(v24 + 1)); std::string::copy(v27, v9, v24, 0, v20); *(_DWORD *)(a3 + 28) = v9; v24[(_DWORD)v9] = 0; *(_DWORD *)(a3 + 32) = v24; v10 = (void *)(v27[0] - 12); if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); } else { v16 = *(_DWORD *)(v27[0] - 4); *(_DWORD *)(v27[0] - 4) = v16 - 1; } if ( v16 <= 0 ) std::string::_Rep::_M_destroy(v10, (int)&v26); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v27, a2); v25 = *(char **)(v27[0] - 12); v11 = (std::string *)operator new[]((unsigned int)(v25 + 1)); std::string::copy(v27, v11, v25, 0, v21); *(_DWORD *)(a3 + 36) = v11; v25[(_DWORD)v11] = 0; *(_DWORD *)(a3 + 40) = v25; v12 = (void *)(v27[0] - 12); if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); } else { v17 = *(_DWORD *)(v27[0] - 4); *(_DWORD *)(v27[0] - 4) = v17 - 1; } if ( v17 <= 0 ) std::string::_Rep::_M_destroy(v12, (int)&v26); } *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); *(_DWORD *)(a3 + 52) = result; return result; } // 497C16: variable 'v18' is possibly undefined // 497C75: variable 'v19' is possibly undefined // 497CD4: variable 'v20' is possibly undefined // 497D33: variable 'v21' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (00497EC0) -------------------------------------------------------- int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax _BYTE *v5; // edi _BYTE *v6; // edi _BYTE *v7; // edi _BYTE *v8; // edi int result; // eax int v10; // [esp+1Ch] [ebp-3Ch] int v11; // [esp+1Ch] [ebp-3Ch] int v12; // [esp+1Ch] [ebp-3Ch] int v13; // [esp+1Ch] [ebp-3Ch] void *v14; // [esp+28h] [ebp-30h] BYREF int v15; // [esp+2Ch] [ebp-2Ch] char v16[40]; // [esp+30h] [ebp-28h] BYREF *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 44) = v3; v4 = *a2; *(_DWORD *)(a3 + 20) = 0; *(_DWORD *)(a3 + 28) = 0; *(_DWORD *)(a3 + 36) = 0; *(_BYTE *)(a3 + 67) = 1; (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v14, a2); v10 = v15; v5 = (_BYTE *)operator new[](v15 + 1); std::string::copy(&v14, v5, v10, 0); *(_DWORD *)(a3 + 8) = v5; v5[v10] = 0; *(_DWORD *)(a3 + 12) = v10; if ( v14 != v16 ) operator delete(v14); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v14, a2); v11 = v15; v6 = (_BYTE *)operator new[](v15 + 1); std::string::copy(&v14, v6, v11, 0); *(_DWORD *)(a3 + 20) = v6; v6[v11] = 0; *(_DWORD *)(a3 + 24) = v11; if ( v14 != v16 ) operator delete(v14); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v14, a2); v12 = v15; v7 = (_BYTE *)operator new[](v15 + 1); std::string::copy(&v14, v7, v12, 0); *(_DWORD *)(a3 + 28) = v7; v7[v12] = 0; *(_DWORD *)(a3 + 32) = v12; if ( v14 != v16 ) operator delete(v14); (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v14, a2); v13 = v15; v8 = (_BYTE *)operator new[](v15 + 1); std::string::copy(&v14, v8, v13, 0); *(_DWORD *)(a3 + 36) = v8; v8[v13] = 0; *(_DWORD *)(a3 + 40) = v13; if ( v14 != v16 ) operator delete(v14); *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); *(_DWORD *)(a3 + 52) = result; return result; } //----- (004980D0) -------------------------------------------------------- int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax std::string *v5; // edi void *v6; // ecx std::string *v7; // edi void *v8; // ecx std::string *v9; // edi void *v10; // ecx std::string *v11; // edi void *v12; // ecx int result; // eax int v14; // edx int v15; // edx int v16; // edx int v17; // edx unsigned int v18; // [esp+Ch] [ebp-3Ch] unsigned int v19; // [esp+Ch] [ebp-3Ch] unsigned int v20; // [esp+Ch] [ebp-3Ch] unsigned int v21; // [esp+Ch] [ebp-3Ch] char *v22; // [esp+1Ch] [ebp-2Ch] char *v23; // [esp+1Ch] [ebp-2Ch] char *v24; // [esp+1Ch] [ebp-2Ch] char *v25; // [esp+1Ch] [ebp-2Ch] char v26; // [esp+2Bh] [ebp-1Dh] BYREF _DWORD v27[7]; // [esp+2Ch] [ebp-1Ch] BYREF *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 44) = v3; v4 = *a2; *(_DWORD *)(a3 + 20) = 0; *(_DWORD *)(a3 + 28) = 0; *(_DWORD *)(a3 + 36) = 0; *(_BYTE *)(a3 + 67) = 1; (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v27, a2); v22 = *(char **)(v27[0] - 12); v5 = (std::string *)operator new[]((unsigned int)(v22 + 1)); std::string::copy(v27, v5, v22, 0, v18); *(_DWORD *)(a3 + 8) = v5; v22[(_DWORD)v5] = 0; *(_DWORD *)(a3 + 12) = v22; v6 = (void *)(v27[0] - 12); if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); } else { v14 = *(_DWORD *)(v27[0] - 4); *(_DWORD *)(v27[0] - 4) = v14 - 1; } if ( v14 <= 0 ) std::string::_Rep::_M_destroy(v6, (int)&v26); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v27, a2); v23 = *(char **)(v27[0] - 12); v7 = (std::string *)operator new[]((unsigned int)(v23 + 1)); std::string::copy(v27, v7, v23, 0, v19); *(_DWORD *)(a3 + 20) = v7; v23[(_DWORD)v7] = 0; *(_DWORD *)(a3 + 24) = v23; v8 = (void *)(v27[0] - 12); if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v15 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); } else { v15 = *(_DWORD *)(v27[0] - 4); *(_DWORD *)(v27[0] - 4) = v15 - 1; } if ( v15 <= 0 ) std::string::_Rep::_M_destroy(v8, (int)&v26); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v27, a2); v24 = *(char **)(v27[0] - 12); v9 = (std::string *)operator new[]((unsigned int)(v24 + 1)); std::string::copy(v27, v9, v24, 0, v20); *(_DWORD *)(a3 + 28) = v9; v24[(_DWORD)v9] = 0; *(_DWORD *)(a3 + 32) = v24; v10 = (void *)(v27[0] - 12); if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); } else { v16 = *(_DWORD *)(v27[0] - 4); *(_DWORD *)(v27[0] - 4) = v16 - 1; } if ( v16 <= 0 ) std::string::_Rep::_M_destroy(v10, (int)&v26); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v27, a2); v25 = *(char **)(v27[0] - 12); v11 = (std::string *)operator new[]((unsigned int)(v25 + 1)); std::string::copy(v27, v11, v25, 0, v21); *(_DWORD *)(a3 + 36) = v11; v25[(_DWORD)v11] = 0; *(_DWORD *)(a3 + 40) = v25; v12 = (void *)(v27[0] - 12); if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); } else { v17 = *(_DWORD *)(v27[0] - 4); *(_DWORD *)(v27[0] - 4) = v17 - 1; } if ( v17 <= 0 ) std::string::_Rep::_M_destroy(v12, (int)&v26); } *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); *(_DWORD *)(a3 + 52) = result; return result; } // 498156: variable 'v18' is possibly undefined // 4981B5: variable 'v19' is possibly undefined // 498214: variable 'v20' is possibly undefined // 498273: variable 'v21' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (00498400) -------------------------------------------------------- int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax _BYTE *v5; // edi _BYTE *v6; // edi _BYTE *v7; // edi _BYTE *v8; // edi int result; // eax int v10; // [esp+1Ch] [ebp-3Ch] int v11; // [esp+1Ch] [ebp-3Ch] int v12; // [esp+1Ch] [ebp-3Ch] int v13; // [esp+1Ch] [ebp-3Ch] void *v14; // [esp+28h] [ebp-30h] BYREF int v15; // [esp+2Ch] [ebp-2Ch] char v16[40]; // [esp+30h] [ebp-28h] BYREF *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 44) = v3; v4 = *a2; *(_DWORD *)(a3 + 20) = 0; *(_DWORD *)(a3 + 28) = 0; *(_DWORD *)(a3 + 36) = 0; *(_BYTE *)(a3 + 67) = 1; (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v14, a2); v10 = v15; v5 = (_BYTE *)operator new[](v15 + 1); std::string::copy(&v14, v5, v10, 0); *(_DWORD *)(a3 + 8) = v5; v5[v10] = 0; *(_DWORD *)(a3 + 12) = v10; if ( v14 != v16 ) operator delete(v14); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v14, a2); v11 = v15; v6 = (_BYTE *)operator new[](v15 + 1); std::string::copy(&v14, v6, v11, 0); *(_DWORD *)(a3 + 20) = v6; v6[v11] = 0; *(_DWORD *)(a3 + 24) = v11; if ( v14 != v16 ) operator delete(v14); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v14, a2); v12 = v15; v7 = (_BYTE *)operator new[](v15 + 1); std::string::copy(&v14, v7, v12, 0); *(_DWORD *)(a3 + 28) = v7; v7[v12] = 0; *(_DWORD *)(a3 + 32) = v12; if ( v14 != v16 ) operator delete(v14); (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v14, a2); v13 = v15; v8 = (_BYTE *)operator new[](v15 + 1); std::string::copy(&v14, v8, v13, 0); *(_DWORD *)(a3 + 36) = v8; v8[v13] = 0; *(_DWORD *)(a3 + 40) = v13; if ( v14 != v16 ) operator delete(v14); *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); *(_DWORD *)(a3 + 52) = result; return result; } //----- (00498610) -------------------------------------------------------- int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax std::string *v5; // edi void *v6; // ecx int v7; // eax wchar_t *v8; // edi void *v9; // ecx int v10; // eax wchar_t *v11; // edi volatile signed __int32 *v12; // eax int v13; // eax wchar_t *v14; // edi void *v15; // ecx int result; // eax int v17; // edx int v18; // edx int v19; // edx int v20; // edx unsigned int v21; // [esp+Ch] [ebp-3Ch] int v22; // [esp+18h] [ebp-30h] int v23; // [esp+18h] [ebp-30h] int v24; // [esp+18h] [ebp-30h] char *v25; // [esp+1Ch] [ebp-2Ch] char *v26; // [esp+1Ch] [ebp-2Ch] char *v27; // [esp+1Ch] [ebp-2Ch] char *v28; // [esp+1Ch] [ebp-2Ch] char v29; // [esp+2Bh] [ebp-1Dh] BYREF _DWORD v30[7]; // [esp+2Ch] [ebp-1Ch] BYREF *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 48) = v3; v4 = *a2; *(_DWORD *)(a3 + 24) = 0; *(_DWORD *)(a3 + 32) = 0; *(_DWORD *)(a3 + 40) = 0; *(_BYTE *)(a3 + 82) = 1; (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v30, a2); v25 = *(char **)(v30[0] - 12); v5 = (std::string *)operator new[]((unsigned int)(v25 + 1)); std::string::copy(v30, v5, v25, 0, v21); *(_DWORD *)(a3 + 8) = v5; v25[(_DWORD)v5] = 0; *(_DWORD *)(a3 + 12) = v25; v6 = (void *)(v30[0] - 12); if ( (_UNKNOWN *)v30[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); } else { v17 = *(_DWORD *)(v30[0] - 4); *(_DWORD *)(v30[0] - 4) = v17 - 1; } if ( v17 <= 0 ) std::string::_Rep::_M_destroy(v6, (int)&v29); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v30, a2); v26 = *(char **)(v30[0] - 12); v7 = (int)(v26 + 1); if ( (unsigned int)(v26 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v22 = v7; v8 = (wchar_t *)operator new[](2 * v7); std::wstring::copy(v30, v8, (unsigned int)v26, 0); *(_DWORD *)(a3 + 24) = v8; v8[v22 - 1] = 0; *(_DWORD *)(a3 + 28) = v26; v9 = (void *)(v30[0] - 12); if ( (_UNKNOWN *)v30[0] != &unk_4E93EC ) { if ( _CRT_MT ) { v18 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); } else { v18 = *(_DWORD *)(v30[0] - 4); *(_DWORD *)(v30[0] - 4) = v18 - 1; } if ( v18 <= 0 ) std::wstring::_Rep::_M_destroy(v9, (int)&v29); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v30, a2); v27 = *(char **)(v30[0] - 12); v10 = (int)(v27 + 1); if ( (unsigned int)(v27 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v23 = v10; v11 = (wchar_t *)operator new[](2 * v10); std::wstring::copy(v30, v11, (unsigned int)v27, 0); *(_DWORD *)(a3 + 32) = v11; *(_DWORD *)(a3 + 36) = v27; v12 = (volatile signed __int32 *)v30[0]; v11[v23 - 1] = 0; if ( v12 != (volatile signed __int32 *)&unk_4E93EC ) { if ( _CRT_MT ) { v19 = _InterlockedExchangeAdd(v12 - 1, 0xFFFFFFFF); } else { v19 = *((_DWORD *)v12 - 1); *((_DWORD *)v12 - 1) = v19 - 1; } if ( v19 <= 0 ) std::wstring::_Rep::_M_destroy((void *)(v12 - 3), (int)&v29); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v30, a2); v28 = *(char **)(v30[0] - 12); v13 = (int)(v28 + 1); if ( (unsigned int)(v28 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v24 = v13; v14 = (wchar_t *)operator new[](2 * v13); std::wstring::copy(v30, v14, (unsigned int)v28, 0); *(_DWORD *)(a3 + 40) = v14; v14[v24 - 1] = 0; *(_DWORD *)(a3 + 44) = v28; v15 = (void *)(v30[0] - 12); if ( (_UNKNOWN *)v30[0] != &unk_4E93EC ) { if ( _CRT_MT ) { v20 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); } else { v20 = *(_DWORD *)(v30[0] - 4); *(_DWORD *)(v30[0] - 4) = v20 - 1; } if ( v20 <= 0 ) std::wstring::_Rep::_M_destroy(v15, (int)&v29); } *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); *(_DWORD *)(a3 + 56) = result; return result; } // 498698: variable 'v21' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004989B0) -------------------------------------------------------- int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax _BYTE *v5; // edi int v6; // eax wchar_t *v7; // edi int v8; // eax wchar_t *v9; // edi char *v10; // eax int v11; // eax wchar_t *v12; // edi int result; // eax int v14; // [esp+18h] [ebp-40h] int v15; // [esp+18h] [ebp-40h] int v16; // [esp+18h] [ebp-40h] int v17; // [esp+1Ch] [ebp-3Ch] int v18; // [esp+1Ch] [ebp-3Ch] int v19; // [esp+1Ch] [ebp-3Ch] int v20; // [esp+1Ch] [ebp-3Ch] void *v21; // [esp+28h] [ebp-30h] BYREF int v22; // [esp+2Ch] [ebp-2Ch] char v23[40]; // [esp+30h] [ebp-28h] BYREF *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 48) = v3; v4 = *a2; *(_DWORD *)(a3 + 24) = 0; *(_DWORD *)(a3 + 32) = 0; *(_DWORD *)(a3 + 40) = 0; *(_BYTE *)(a3 + 82) = 1; (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v21, a2); v17 = v22; v5 = (_BYTE *)operator new[](v22 + 1); std::string::copy(&v21, v5, v17, 0); *(_DWORD *)(a3 + 8) = v5; v5[v17] = 0; *(_DWORD *)(a3 + 12) = v17; if ( v21 != v23 ) operator delete(v21); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v21, a2); v18 = v22; v6 = v22 + 1; if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v14 = v6; v7 = (wchar_t *)operator new[](2 * v6); std::wstring::copy(&v21, v7, v18, 0); *(_DWORD *)(a3 + 24) = v7; v7[v14 - 1] = 0; *(_DWORD *)(a3 + 28) = v18; if ( v21 != v23 ) operator delete(v21); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v21, a2); v19 = v22; v8 = v22 + 1; if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v15 = v8; v9 = (wchar_t *)operator new[](2 * v8); std::wstring::copy(&v21, v9, v19, 0); *(_DWORD *)(a3 + 32) = v9; *(_DWORD *)(a3 + 36) = v19; v10 = (char *)v21; v9[v15 - 1] = 0; if ( v10 != v23 ) operator delete(v10); (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v21, a2); v20 = v22; v11 = v22 + 1; if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v16 = v11; v12 = (wchar_t *)operator new[](2 * v11); std::wstring::copy(&v21, v12, v20, 0); *(_DWORD *)(a3 + 40) = v12; v12[v16 - 1] = 0; *(_DWORD *)(a3 + 44) = v20; if ( v21 != v23 ) operator delete(v21); *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); *(_DWORD *)(a3 + 56) = result; return result; } //----- (00498C20) -------------------------------------------------------- int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax std::string *v5; // edi void *v6; // ecx int v7; // eax wchar_t *v8; // edi void *v9; // ecx int v10; // eax wchar_t *v11; // edi volatile signed __int32 *v12; // eax int v13; // eax wchar_t *v14; // edi void *v15; // ecx int result; // eax int v17; // edx int v18; // edx int v19; // edx int v20; // edx unsigned int v21; // [esp+Ch] [ebp-3Ch] int v22; // [esp+18h] [ebp-30h] int v23; // [esp+18h] [ebp-30h] int v24; // [esp+18h] [ebp-30h] char *v25; // [esp+1Ch] [ebp-2Ch] char *v26; // [esp+1Ch] [ebp-2Ch] char *v27; // [esp+1Ch] [ebp-2Ch] char *v28; // [esp+1Ch] [ebp-2Ch] char v29; // [esp+2Bh] [ebp-1Dh] BYREF _DWORD v30[7]; // [esp+2Ch] [ebp-1Ch] BYREF *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 48) = v3; v4 = *a2; *(_DWORD *)(a3 + 24) = 0; *(_DWORD *)(a3 + 32) = 0; *(_DWORD *)(a3 + 40) = 0; *(_BYTE *)(a3 + 82) = 1; (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v30, a2); v25 = *(char **)(v30[0] - 12); v5 = (std::string *)operator new[]((unsigned int)(v25 + 1)); std::string::copy(v30, v5, v25, 0, v21); *(_DWORD *)(a3 + 8) = v5; v25[(_DWORD)v5] = 0; *(_DWORD *)(a3 + 12) = v25; v6 = (void *)(v30[0] - 12); if ( (_UNKNOWN *)v30[0] != &unk_4E93FC ) { if ( _CRT_MT ) { v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); } else { v17 = *(_DWORD *)(v30[0] - 4); *(_DWORD *)(v30[0] - 4) = v17 - 1; } if ( v17 <= 0 ) std::string::_Rep::_M_destroy(v6, (int)&v29); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v30, a2); v26 = *(char **)(v30[0] - 12); v7 = (int)(v26 + 1); if ( (unsigned int)(v26 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v22 = v7; v8 = (wchar_t *)operator new[](2 * v7); std::wstring::copy(v30, v8, (unsigned int)v26, 0); *(_DWORD *)(a3 + 24) = v8; v8[v22 - 1] = 0; *(_DWORD *)(a3 + 28) = v26; v9 = (void *)(v30[0] - 12); if ( (_UNKNOWN *)v30[0] != &unk_4E93EC ) { if ( _CRT_MT ) { v18 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); } else { v18 = *(_DWORD *)(v30[0] - 4); *(_DWORD *)(v30[0] - 4) = v18 - 1; } if ( v18 <= 0 ) std::wstring::_Rep::_M_destroy(v9, (int)&v29); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v30, a2); v27 = *(char **)(v30[0] - 12); v10 = (int)(v27 + 1); if ( (unsigned int)(v27 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v23 = v10; v11 = (wchar_t *)operator new[](2 * v10); std::wstring::copy(v30, v11, (unsigned int)v27, 0); *(_DWORD *)(a3 + 32) = v11; *(_DWORD *)(a3 + 36) = v27; v12 = (volatile signed __int32 *)v30[0]; v11[v23 - 1] = 0; if ( v12 != (volatile signed __int32 *)&unk_4E93EC ) { if ( _CRT_MT ) { v19 = _InterlockedExchangeAdd(v12 - 1, 0xFFFFFFFF); } else { v19 = *((_DWORD *)v12 - 1); *((_DWORD *)v12 - 1) = v19 - 1; } if ( v19 <= 0 ) std::wstring::_Rep::_M_destroy((void *)(v12 - 3), (int)&v29); } (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v30, a2); v28 = *(char **)(v30[0] - 12); v13 = (int)(v28 + 1); if ( (unsigned int)(v28 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v24 = v13; v14 = (wchar_t *)operator new[](2 * v13); std::wstring::copy(v30, v14, (unsigned int)v28, 0); *(_DWORD *)(a3 + 40) = v14; v14[v24 - 1] = 0; *(_DWORD *)(a3 + 44) = v28; v15 = (void *)(v30[0] - 12); if ( (_UNKNOWN *)v30[0] != &unk_4E93EC ) { if ( _CRT_MT ) { v20 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); } else { v20 = *(_DWORD *)(v30[0] - 4); *(_DWORD *)(v30[0] - 4) = v20 - 1; } if ( v20 <= 0 ) std::wstring::_Rep::_M_destroy(v15, (int)&v29); } *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); *(_DWORD *)(a3 + 56) = result; return result; } // 498CA8: variable 'v21' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (00498FC0) -------------------------------------------------------- int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax _BYTE *v5; // edi int v6; // eax wchar_t *v7; // edi int v8; // eax wchar_t *v9; // edi char *v10; // eax int v11; // eax wchar_t *v12; // edi int result; // eax int v14; // [esp+18h] [ebp-40h] int v15; // [esp+18h] [ebp-40h] int v16; // [esp+18h] [ebp-40h] int v17; // [esp+1Ch] [ebp-3Ch] int v18; // [esp+1Ch] [ebp-3Ch] int v19; // [esp+1Ch] [ebp-3Ch] int v20; // [esp+1Ch] [ebp-3Ch] void *v21; // [esp+28h] [ebp-30h] BYREF int v22; // [esp+2Ch] [ebp-2Ch] char v23[40]; // [esp+30h] [ebp-28h] BYREF *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 48) = v3; v4 = *a2; *(_DWORD *)(a3 + 24) = 0; *(_DWORD *)(a3 + 32) = 0; *(_DWORD *)(a3 + 40) = 0; *(_BYTE *)(a3 + 82) = 1; (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v21, a2); v17 = v22; v5 = (_BYTE *)operator new[](v22 + 1); std::string::copy(&v21, v5, v17, 0); *(_DWORD *)(a3 + 8) = v5; v5[v17] = 0; *(_DWORD *)(a3 + 12) = v17; if ( v21 != v23 ) operator delete(v21); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v21, a2); v18 = v22; v6 = v22 + 1; if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v14 = v6; v7 = (wchar_t *)operator new[](2 * v6); std::wstring::copy(&v21, v7, v18, 0); *(_DWORD *)(a3 + 24) = v7; v7[v14 - 1] = 0; *(_DWORD *)(a3 + 28) = v18; if ( v21 != v23 ) operator delete(v21); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v21, a2); v19 = v22; v8 = v22 + 1; if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v15 = v8; v9 = (wchar_t *)operator new[](2 * v8); std::wstring::copy(&v21, v9, v19, 0); *(_DWORD *)(a3 + 32) = v9; *(_DWORD *)(a3 + 36) = v19; v10 = (char *)v21; v9[v15 - 1] = 0; if ( v10 != v23 ) operator delete(v10); (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v21, a2); v20 = v22; v11 = v22 + 1; if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v16 = v11; v12 = (wchar_t *)operator new[](2 * v11); std::wstring::copy(&v21, v12, v20, 0); *(_DWORD *)(a3 + 40) = v12; v12[v16 - 1] = 0; *(_DWORD *)(a3 + 44) = v20; if ( v21 != v23 ) operator delete(v21); *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); *(_DWORD *)(a3 + 56) = result; return result; } //----- (00499230) -------------------------------------------------------- void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, const char *a3) { void (__cdecl ***v4)(_anonymous_namespace_::io_error_category *__hidden); // esi int (__thiscall *v5)(int, int, int); // eax unsigned int *v6; // eax void *v7; // ecx size_t v8; // eax unsigned int *v9; // eax void *v10; // ecx char *v11; // eax std::runtime_error *v12[2]; // [esp+28h] [ebp-60h] BYREF char v13[16]; // [esp+30h] [ebp-58h] BYREF void *v14[2]; // [esp+40h] [ebp-48h] BYREF int v15[4]; // [esp+48h] [ebp-40h] BYREF void *v16[2]; // [esp+58h] [ebp-30h] BYREF int v17[10]; // [esp+60h] [ebp-28h] BYREF v4 = `anonymous namespace'::__io_category_instance(); v5 = (int (__thiscall *)(int, int, int))(*v4)[4]; if ( v5 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) { v12[0] = (std::runtime_error *)v13; v12[1] = 0; v13[0] = 0; std::string::_M_replace((unsigned int *)v12, 0, 0, "iostream error", 0xEu); } else { v5((int)v12, (int)v4, 1); } v6 = std::string::_M_replace((unsigned int *)v12, 0, 0, ": ", 2u); v14[0] = v15; if ( (unsigned int *)*v6 == v6 + 2 ) { v15[0] = v6[2]; v15[1] = v6[3]; v15[2] = v6[4]; v15[3] = v6[5]; } else { v14[0] = (void *)*v6; v15[0] = v6[2]; } v7 = (void *)v6[1]; *((_BYTE *)v6 + 8) = 0; v14[1] = v7; *v6 = (unsigned int)(v6 + 2); v6[1] = 0; v8 = strlen((const char *)this); v9 = std::string::_M_replace((unsigned int *)v14, 0, 0, (char *)this, v8); v16[0] = v17; if ( (unsigned int *)*v9 == v9 + 2 ) { v17[0] = v9[2]; v17[1] = v9[3]; v17[2] = v9[4]; v17[3] = v9[5]; } else { v16[0] = (void *)*v9; v17[0] = v9[2]; } v10 = (void *)v9[1]; *((_BYTE *)v9 + 8) = 0; v16[1] = v10; *v9 = (unsigned int)(v9 + 2); v9[1] = 0; std::runtime_error::runtime_error(a1, (int)v16); if ( v16[0] != v17 ) operator delete(v16[0]); if ( v14[0] != v15 ) operator delete(v14[0]); if ( (char *)v12[0] != v13 ) operator delete(v12[0]); a1[2] = 1; a1[3] = v4; *a1 = &off_4F6068; v11 = (char *)std::runtime_error::what((int)a1); std::__construct_ios_failure(a1 + 4, v11); } // 4F6068: using guessed type void (__cdecl *off_4F6068)(std::__ios_failure *__hidden this); //----- (00499480) -------------------------------------------------------- void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, int a3, int a4) { void (__cdecl ***v5)(_anonymous_namespace_::system_error_category *__hidden); // esi int (__thiscall *v6)(int, int, int); // eax unsigned int *v7; // eax void *v8; // ecx size_t v9; // eax unsigned int *v10; // eax void *v11; // ecx char *v12; // eax std::runtime_error *v13; // [esp+28h] [ebp-60h] BYREF int v14; // [esp+2Ch] [ebp-5Ch] char v15[16]; // [esp+30h] [ebp-58h] BYREF void *v16[2]; // [esp+40h] [ebp-48h] BYREF int v17[4]; // [esp+48h] [ebp-40h] BYREF void *v18[2]; // [esp+58h] [ebp-30h] BYREF int v19[10]; // [esp+60h] [ebp-28h] BYREF if ( a3 ) { v5 = std::_V2::system_category(); v6 = (int (__thiscall *)(int, int, int))(*v5)[4]; if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) { v15[0] = 0; v13 = (std::runtime_error *)v15; v14 = 0; if ( a3 != 1 ) { std::string::_M_replace((unsigned int *)&v13, 0, 0, "Unknown error", 0xDu); goto LABEL_5; } goto LABEL_18; } } else { v5 = `anonymous namespace'::__io_category_instance(); v6 = (int (__thiscall *)(int, int, int))(*v5)[4]; if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) { v14 = 0; v13 = (std::runtime_error *)v15; v15[0] = 0; LABEL_18: std::string::_M_replace((unsigned int *)&v13, 0, 0, "iostream error", 0xEu); a3 = 1; goto LABEL_5; } a3 = 1; } v6((int)&v13, (int)v5, a3); LABEL_5: v7 = std::string::_M_replace((unsigned int *)&v13, 0, 0, ": ", 2u); v16[0] = v17; if ( (unsigned int *)*v7 == v7 + 2 ) { v17[0] = v7[2]; v17[1] = v7[3]; v17[2] = v7[4]; v17[3] = v7[5]; } else { v16[0] = (void *)*v7; v17[0] = v7[2]; } v8 = (void *)v7[1]; *((_BYTE *)v7 + 8) = 0; v16[1] = v8; *v7 = (unsigned int)(v7 + 2); v7[1] = 0; v9 = strlen((const char *)this); v10 = std::string::_M_replace((unsigned int *)v16, 0, 0, (char *)this, v9); v18[0] = v19; if ( (unsigned int *)*v10 == v10 + 2 ) { v19[0] = v10[2]; v19[1] = v10[3]; v19[2] = v10[4]; v19[3] = v10[5]; } else { v18[0] = (void *)*v10; v19[0] = v10[2]; } v11 = (void *)v10[1]; *((_BYTE *)v10 + 8) = 0; v18[1] = v11; *v10 = (unsigned int)(v10 + 2); v10[1] = 0; std::runtime_error::runtime_error(a1, (int)v18); if ( v18[0] != v19 ) operator delete(v18[0]); if ( v16[0] != v17 ) operator delete(v16[0]); if ( v13 != (std::runtime_error *)v15 ) operator delete(v13); a1[3] = v5; *a1 = &off_4F6068; a1[2] = a3; v12 = (char *)std::runtime_error::what((int)a1); std::__construct_ios_failure(a1 + 4, v12); } // 4F6068: using guessed type void (__cdecl *off_4F6068)(std::__ios_failure *__hidden this); //----- (00499750) -------------------------------------------------------- void __fastcall std::__ios_failure::~__ios_failure(int a1) { *(_DWORD *)a1 = &off_4F6068; std::__destroy_ios_failure((int (__fastcall ***)(_DWORD))(a1 + 16)); *(_DWORD *)a1 = &off_4F5DC8; std::system_error::~system_error((_DWORD *)a1); operator delete((void *)a1); } // 4F5DC8: using guessed type int (*off_4F5DC8)(); // 4F6068: using guessed type void (__cdecl *off_4F6068)(std::__ios_failure *__hidden this); //----- (00499790) -------------------------------------------------------- void __fastcall std::__ios_failure::~__ios_failure(int a1) { *(_DWORD *)a1 = &off_4F6068; std::__destroy_ios_failure((int (__fastcall ***)(_DWORD))(a1 + 16)); *(_DWORD *)a1 = &off_4F5DC8; std::system_error::~system_error((_DWORD *)a1); } // 4F5DC8: using guessed type int (*off_4F5DC8)(); // 4F6068: using guessed type void (__cdecl *off_4F6068)(std::__ios_failure *__hidden this); //----- (004997C0) -------------------------------------------------------- void __fastcall std::bad_exception::~bad_exception(void *a1) { operator delete(a1, 4u); } //----- (004997F0) -------------------------------------------------------- unsigned int __thiscall std::filebuf::_M_set_buffer(_DWORD *this, int a2) { unsigned int v2; // eax int v3; // ebx int v4; // edx unsigned int result; // eax v2 = this[12]; v3 = (v2 >> 3) & 1; if ( (v2 & 0x10) != 0 ) LOBYTE(v2) = 1; v4 = this[16]; result = v2 & 1; this[1] = v4; this[2] = v4; if ( a2 > 0 && (_BYTE)v3 ) { this[3] = a2 + v4; LABEL_6: this[5] = 0; this[4] = 0; this[6] = 0; return result; } this[3] = v4; if ( a2 ) goto LABEL_6; if ( !(_BYTE)result ) goto LABEL_6; result = this[17]; if ( result <= 1 ) goto LABEL_6; result = v4 + result - 1; this[5] = v4; this[4] = v4; this[6] = result; return result; } //----- (00499870) -------------------------------------------------------- int __thiscall std::filebuf::_M_get_ext_pos(int this, int a2) { if ( (*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(this + 88) + 24))(*(_DWORD *)(this + 88)) ) return *(_DWORD *)(this + 8) - *(_DWORD *)(this + 12); else return *(_DWORD *)(this + 92) + (*(int (__thiscall **)(_DWORD, int, _DWORD, _DWORD, int))(**(_DWORD **)(this + 88) + 28))( *(_DWORD *)(this + 88), a2, *(_DWORD *)(this + 92), *(_DWORD *)(this + 100), *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) - *(_DWORD *)(this + 104); } //----- (004998D0) -------------------------------------------------------- int __fastcall std::filebuf::_M_create_pback(int a1) { int v1; // eax int result; // eax if ( !*(_BYTE *)(a1 + 84) ) { v1 = *(_DWORD *)(a1 + 8); *(_BYTE *)(a1 + 84) = 1; *(_DWORD *)(a1 + 76) = v1; *(_DWORD *)(a1 + 80) = *(_DWORD *)(a1 + 12); *(_DWORD *)(a1 + 4) = a1 + 75; *(_DWORD *)(a1 + 8) = a1 + 75; result = a1 + 76; *(_DWORD *)(a1 + 12) = a1 + 76; } return result; } //----- (00499900) -------------------------------------------------------- int __fastcall std::filebuf::_M_destroy_pback(int a1) { bool v1; // zf int v2; // ebx int v3; // edx int result; // eax if ( *(_BYTE *)(a1 + 84) ) { v1 = *(_DWORD *)(a1 + 8) == *(_DWORD *)(a1 + 4); v2 = *(_DWORD *)(a1 + 64); v3 = *(_DWORD *)(a1 + 80); *(_BYTE *)(a1 + 84) = 0; result = *(_DWORD *)(a1 + 76) + !v1; *(_DWORD *)(a1 + 4) = v2; *(_DWORD *)(a1 + 76) = result; *(_DWORD *)(a1 + 8) = result; *(_DWORD *)(a1 + 12) = v3; } return result; } //----- (00499940) -------------------------------------------------------- int __fastcall std::filebuf::_M_terminate_output(_DWORD *a1) { int v1; // esi int v3; // eax int v4; // ecx _DWORD **v5; // eax _DWORD *v6; // ebx _DWORD **v7; // ebp unsigned int v8; // eax unsigned int v9; // esi unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] void *v12; // [esp+2Ch] [ebp-B4h] int v13; // [esp+30h] [ebp-B0h] int v14; // [esp+40h] [ebp-A0h] BYREF char v15[128]; // [esp+44h] [ebp-9Ch] BYREF char v16[28]; // [esp+C4h] [ebp-1Ch] BYREF v1 = 1; if ( a1[4] < a1[5] ) { v3 = (*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, -1); LOBYTE(v3) = v3 != -1; v1 = v3; } if ( *((_BYTE *)a1 + 74) ) { v4 = a1[22]; if ( !v4 ) std::__throw_bad_cast(); v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); if ( !v11 ) { if ( (_BYTE)v1 ) { v12 = a1 + 10; v5 = (_DWORD **)a1; v6 = a1 + 14; v7 = v5; while ( 1 ) { v8 = (*(int (__thiscall **)(_DWORD *, _DWORD *, char *, char *, int *))(*v7[22] + 12))( v7[22], v6, v15, v16, &v14); v9 = v8; if ( v8 == 2 ) break; if ( v8 <= 1 && v14 - (int)v15 > 0 ) { v13 = v14 - (_DWORD)v15; if ( v13 != std::__basic_file::xsputn(v12, v15, v14 - (_DWORD)v15) ) return v11; if ( v9 == 1 ) continue; } return ((int (__thiscall *)(_DWORD **, int))(*v7)[13])(v7, -1) != -1; } return v11; } } } return v1; } // 499940: using guessed type char var_1C[28]; //----- (00499A50) -------------------------------------------------------- bool __thiscall std::filebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3) { int v4; // ecx unsigned int v5; // esi int v6; // eax void *v7; // esp void *v8; // esp unsigned int v9; // eax unsigned int v10; // eax int v12; // esi char v13; // [esp+20h] [ebp-38h] int v14; // [esp+38h] [ebp-20h] BYREF int v15; // [esp+3Ch] [ebp-1Ch] BYREF char v16[24]; // [esp+40h] [ebp-18h] BYREF v4 = this[22]; v5 = a3; if ( !v4 ) std::__throw_bad_cast(); if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) goto LABEL_5; v6 = 16 * ((a3 * (*(int (__thiscall **)(_DWORD))(*(_DWORD *)this[22] + 32))(this[22]) + 27) >> 4); v7 = alloca(v6); v8 = alloca(v6); v9 = (*(int (__thiscall **)(_DWORD, _DWORD *, char *, char *))(*(_DWORD *)this[22] + 8))( this[22], this + 14, a2, &a2[a3]); if ( v9 > 1 ) { if ( v9 == 3 ) { LABEL_5: v10 = std::__basic_file::xsputn(this + 10, a2, a3); return v10 == v5; } LABEL_11: std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::_M_convert_to_external conversion error"); } v13 = v9; v5 = v14 - (_DWORD)v16; v10 = std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16); if ( v14 - (_DWORD)v16 != v10 || (v13 & 1) == 0 ) return v10 == v5; if ( (*(int (__thiscall **)(_DWORD, int *, int, _DWORD, int *, char *, int, int *))(*(_DWORD *)this[22] + 8))( this[22], &v15, v15, this[5], &v15, v16, v14, &v14) == 2 ) goto LABEL_11; v12 = v14 - (_DWORD)v16; return std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16) == v12; } //----- (00499BC0) -------------------------------------------------------- void __fastcall std::filebuf::_M_destroy_internal_buffer(int a1) { if ( *(_BYTE *)(a1 + 72) ) { if ( *(_DWORD *)(a1 + 64) ) operator delete[](*(void **)(a1 + 64)); *(_DWORD *)(a1 + 64) = 0; *(_BYTE *)(a1 + 72) = 0; } if ( *(_DWORD *)(a1 + 92) ) operator delete[](*(void **)(a1 + 92)); *(_DWORD *)(a1 + 92) = 0; *(_DWORD *)(a1 + 96) = 0; *(_DWORD *)(a1 + 100) = 0; *(_DWORD *)(a1 + 104) = 0; } //----- (00499C20) -------------------------------------------------------- void __fastcall std::filebuf::_M_allocate_internal_buffer(int a1) { if ( !*(_BYTE *)(a1 + 72) && !*(_DWORD *)(a1 + 64) ) { *(_DWORD *)(a1 + 64) = operator new[](*(_DWORD *)(a1 + 68)); *(_BYTE *)(a1 + 72) = 1; } } //----- (00499C60) -------------------------------------------------------- char *__thiscall std::filebuf::open(char *this, char *a2, int a3) { _BYTE *v3; // esi v3 = this + 40; if ( std::__basic_file::is_open((_DWORD *)this + 10) ) return 0; std::__basic_file::open(v3, a2, a3, 436); if ( !std::__basic_file::is_open(v3) ) return 0; else return std::filebuf::open(this, a3); } //----- (00499CD0) -------------------------------------------------------- char *__thiscall std::filebuf::open(char *this, int a2) { int v3; // eax int v4; // eax _DWORD v6[7]; // [esp+20h] [ebp-1Ch] BYREF v3 = *((_DWORD *)this + 16); if ( !this[72] && !v3 ) { v3 = operator new[](*((_DWORD *)this + 17)); this[72] = 1; *((_DWORD *)this + 16) = v3; } *((_DWORD *)this + 1) = v3; *((_DWORD *)this + 2) = v3; *((_DWORD *)this + 3) = v3; v4 = *((_DWORD *)this + 13); *((_DWORD *)this + 12) = a2; *(_WORD *)(this + 73) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 14) = v4; *((_DWORD *)this + 15) = v4; if ( (a2 & 2) == 0 ) return this; (*(void (__thiscall **)(_DWORD *, char *, _DWORD, _DWORD, int, int))(*(_DWORD *)this + 16))(v6, this, 0, 0, 2, a2); if ( (v6[0] & v6[1]) != -1 ) return this; std::filebuf::close((int)this); return 0; } //----- (00499DA0) -------------------------------------------------------- char *__thiscall std::filebuf::open(char *this, wchar_t *a2, int a3) { _BYTE *v3; // esi v3 = this + 40; if ( std::__basic_file::is_open((_DWORD *)this + 10) ) return 0; std::__basic_file::open(v3, a2, a3); if ( !std::__basic_file::is_open(v3) ) return 0; else return std::filebuf::open(this, a3); } //----- (00499E10) -------------------------------------------------------- char *__thiscall std::filebuf::open(char *this, char *a2, int a3) { return std::filebuf::open(this, *(char **)a2, a3); } //----- (00499E20) -------------------------------------------------------- int __thiscall std::filebuf::swap(int this, int a2) { int v3; // eax int v4; // edx int v5; // eax int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // edx int v11; // eax int v12; // edx int v13; // eax int v14; // eax char v15; // dl int v16; // edx int v17; // eax int v18; // edx int v19; // eax int v20; // edx int v21; // eax int v22; // edx int v23; // eax int v24; // edx int v25; // eax int v26; // edx int v27; // eax int v28; // edx int v29; // eax int v30; // edx int v31; // eax int v32; // edx int v33; // eax int v34; // edx int v35; // eax int v36; // edx int v37; // eax int v38; // eax int result; // eax const std::locale *v40; // [esp+4h] [ebp-48h] volatile signed __int32 **v41; // [esp+1Ch] [ebp-30h] _DWORD *v42[8]; // [esp+2Ch] [ebp-20h] BYREF v3 = *(_DWORD *)(this + 4); *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = v3; v5 = *(_DWORD *)(this + 8); *(_DWORD *)(this + 8) = v4; v6 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a2 + 8) = v5; v7 = *(_DWORD *)(this + 12); *(_DWORD *)(this + 12) = v6; v8 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 12) = v7; v9 = *(_DWORD *)(this + 16); *(_DWORD *)(this + 16) = v8; v10 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 16) = v9; v11 = *(_DWORD *)(this + 20); *(_DWORD *)(this + 20) = v10; v12 = *(_DWORD *)(a2 + 24); *(_DWORD *)(a2 + 20) = v11; v13 = *(_DWORD *)(this + 24); *(_DWORD *)(this + 24) = v12; *(_DWORD *)(a2 + 24) = v13; v41 = (volatile signed __int32 **)(this + 28); std::locale::locale((volatile signed __int32 **)v42, (volatile signed __int32 **)(this + 28), v40); std::locale::operator=(v41, (volatile signed __int32 **)(a2 + 28)); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v42); std::locale::~locale(v42); v14 = *(_DWORD *)(this + 40); *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); v15 = *(_BYTE *)(a2 + 44); *(_DWORD *)(a2 + 40) = v14; LOBYTE(v14) = *(_BYTE *)(this + 44); *(_BYTE *)(this + 44) = v15; v16 = *(_DWORD *)(a2 + 48); *(_BYTE *)(a2 + 44) = v14; v17 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 48) = v16; v18 = *(_DWORD *)(a2 + 52); *(_DWORD *)(a2 + 48) = v17; v19 = *(_DWORD *)(this + 52); *(_DWORD *)(this + 52) = v18; v20 = *(_DWORD *)(a2 + 56); *(_DWORD *)(a2 + 52) = v19; v21 = *(_DWORD *)(this + 56); *(_DWORD *)(this + 56) = v20; v22 = *(_DWORD *)(a2 + 60); *(_DWORD *)(a2 + 56) = v21; v23 = *(_DWORD *)(this + 60); *(_DWORD *)(this + 60) = v22; v24 = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 60) = v23; v25 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 64) = v24; v26 = *(_DWORD *)(a2 + 68); *(_DWORD *)(a2 + 64) = v25; v27 = *(_DWORD *)(this + 68); *(_DWORD *)(this + 68) = v26; *(_DWORD *)(a2 + 68) = v27; LOBYTE(v27) = *(_BYTE *)(this + 72); *(_BYTE *)(this + 72) = *(_BYTE *)(a2 + 72); v28 = *(_DWORD *)(a2 + 92); *(_BYTE *)(a2 + 72) = v27; v29 = *(_DWORD *)(this + 92); *(_DWORD *)(this + 92) = v28; v30 = *(_DWORD *)(a2 + 96); *(_DWORD *)(a2 + 92) = v29; v31 = *(_DWORD *)(this + 96); *(_DWORD *)(this + 96) = v30; v32 = *(_DWORD *)(a2 + 100); *(_DWORD *)(a2 + 96) = v31; v33 = *(_DWORD *)(this + 100); *(_DWORD *)(this + 100) = v32; v34 = *(_DWORD *)(a2 + 104); *(_DWORD *)(a2 + 100) = v33; v35 = *(_DWORD *)(this + 104); *(_DWORD *)(this + 104) = v34; LOBYTE(v34) = *(_BYTE *)(a2 + 73); *(_DWORD *)(a2 + 104) = v35; LOBYTE(v35) = *(_BYTE *)(this + 73); *(_BYTE *)(this + 73) = v34; LOBYTE(v34) = *(_BYTE *)(a2 + 74); *(_BYTE *)(a2 + 73) = v35; LOBYTE(v35) = *(_BYTE *)(this + 74); *(_BYTE *)(this + 74) = v34; v36 = *(_DWORD *)(a2 + 76); *(_BYTE *)(a2 + 74) = v35; v37 = *(_DWORD *)(this + 76); *(_DWORD *)(this + 76) = v36; *(_DWORD *)(a2 + 76) = v37; v38 = *(_DWORD *)(this + 80); *(_DWORD *)(this + 80) = *(_DWORD *)(a2 + 80); LOBYTE(v36) = *(_BYTE *)(a2 + 84); *(_DWORD *)(a2 + 80) = v38; result = *(unsigned __int8 *)(this + 84); *(_BYTE *)(this + 84) = v36; *(_BYTE *)(a2 + 84) = result; return result; } // 499E88: variable 'v40' is possibly undefined //----- (00499FB0) -------------------------------------------------------- int __fastcall std::filebuf::sync(_DWORD *a1) { if ( a1[4] >= a1[5] ) return 0; else return -((*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, -1) == -1); } //----- (00499FF0) -------------------------------------------------------- int __fastcall std::filebuf::close(int a1) { int v1; // esi char v3; // di int v4; // eax int v5; // eax v1 = a1 + 40; if ( !std::__basic_file::is_open((_DWORD *)(a1 + 40)) ) return 0; v3 = std::filebuf::_M_terminate_output((_DWORD *)a1); *(_DWORD *)(a1 + 48) = 0; *(_BYTE *)(a1 + 84) = 0; std::filebuf::_M_destroy_internal_buffer(a1); *(_WORD *)(a1 + 73) = 0; v4 = *(_DWORD *)(a1 + 64); *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 4) = v4; *(_DWORD *)(a1 + 8) = v4; *(_DWORD *)(a1 + 12) = v4; v5 = *(_DWORD *)(a1 + 52); *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 56) = v5; *(_DWORD *)(a1 + 60) = v5; if ( !std::__basic_file::close(v1) ) return 0; if ( v3 == 1 ) return a1; else return 0; } //----- (0049A0B0) -------------------------------------------------------- char __thiscall std::filebuf::imbue(int this, int a2) { void *v3; // esi int v4; // eax int v5; // ecx int v6; // ecx int v7; // edi const void *Src; // eax int v9; // edi size_t Size; // edi int v11; // eax size_t v12; // edi int v13; // eax int v15; // [esp+30h] [ebp-1Ch] BYREF int v16; // [esp+34h] [ebp-18h] if ( (unsigned __int8)std::has_facet>(a2) ) v3 = std::use_facet>(a2); else v3 = 0; LOBYTE(v4) = std::__basic_file::is_open((_DWORD *)(this + 40)); if ( !(_BYTE)v4 ) goto LABEL_13; if ( !*(_BYTE *)(this + 73) && !*(_BYTE *)(this + 74) ) { *(_DWORD *)(this + 88) = v3; return v4; } v5 = *(_DWORD *)(this + 88); if ( !v5 ) goto LABEL_24; v4 = (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 20))(v5); if ( v4 == -1 ) goto LABEL_18; if ( !*(_BYTE *)(this + 73) ) { if ( !*(_BYTE *)(this + 74) ) goto LABEL_13; LOBYTE(v4) = std::filebuf::_M_terminate_output((_DWORD *)this); if ( (_BYTE)v4 ) { v4 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 4) = v4; *(_DWORD *)(this + 8) = v4; *(_DWORD *)(this + 12) = v4; *(_DWORD *)(this + 24) = 0; goto LABEL_13; } LABEL_18: *(_DWORD *)(this + 88) = 0; return v4; } v6 = *(_DWORD *)(this + 88); if ( !v6 ) LABEL_24: std::__throw_bad_cast(); LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); if ( !(_BYTE)v4 ) { v7 = *(_DWORD *)(this + 92); Src = (const void *)(v7 + (*(int (__thiscall **)(_DWORD, int, int, _DWORD, int))(**(_DWORD **)(this + 88) + 28))( *(_DWORD *)(this + 88), this + 60, v7, *(_DWORD *)(this + 100), *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4))); v9 = *(_DWORD *)(this + 104); *(_DWORD *)(this + 100) = Src; Size = v9 - (_DWORD)Src; if ( Size ) memmove(*(void **)(this + 92), Src, Size); v11 = *(_DWORD *)(this + 92); *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; v12 = v11 + Size; *(_DWORD *)(this + 100) = v11; v13 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 104) = v12; *(_DWORD *)(this + 4) = v13; *(_DWORD *)(this + 8) = v13; *(_DWORD *)(this + 12) = v13; v4 = *(_DWORD *)(this + 52); *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 56) = v4; *(_DWORD *)(this + 60) = v4; goto LABEL_13; } if ( !v3 ) goto LABEL_18; LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); if ( !(_BYTE)v4 ) { (*(void (__thiscall **)(int *, int, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( &v15, this, 0, 0, 1, *(_DWORD *)(this + 48)); LOBYTE(v4) = v15 & v16; if ( (v15 & v16) == -1 ) goto LABEL_18; } LABEL_13: *(_DWORD *)(this + 88) = v3; return v4; } //----- (0049A290) -------------------------------------------------------- int __thiscall std::filebuf::setbuf(int this, __int64 a2) { if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) return this; if ( !a2 ) { *(_DWORD *)(this + 68) = 1; return this; } if ( !(_DWORD)a2 || SHIDWORD(a2) <= 0 ) return this; *(_QWORD *)(this + 64) = a2; return this; } //----- (0049A2F0) -------------------------------------------------------- int __thiscall std::filebuf::xsgetn(_DWORD *this, char *a2, signed int a3) { char *v4; // edi signed int v5; // esi int v6; // eax int v7; // ebp char *v8; // ecx bool v9; // zf int v10; // edx int v11; // ecx int v12; // eax unsigned int v13; // eax int v14; // ecx char v15; // al int v17; // eax const void *Src; // eax size_t Size; // edx int i; // eax int v21; // eax int *v22; // eax int v23; // [esp+1Ch] [ebp-20h] int v24; // [esp+1Ch] [ebp-20h] v4 = a2; v5 = a3; if ( *((_BYTE *)this + 84) ) { v6 = this[2]; v7 = 0; v8 = (char *)this[1]; if ( a3 <= 0 || v8 != (char *)v6 ) goto LABEL_4; v5 = a3 - 1; *a2 = *v8; v6 = this[2] + 1; v9 = *((_BYTE *)this + 84) == 0; this[2] = v6; if ( !v9 ) { v8 = (char *)this[1]; v4 = a2 + 1; v7 = 1; LABEL_4: v9 = v6 == (_DWORD)v8; v10 = this[16]; v11 = this[20]; *((_BYTE *)this + 84) = 0; v12 = this[19] + !v9; this[1] = v10; this[19] = v12; this[2] = v12; this[3] = v11; goto LABEL_5; } v4 = a2 + 1; v7 = 1; } else if ( *((_BYTE *)this + 74) ) { if ( (*(int (__thiscall **)(_DWORD *, int))(*this + 52))(this, -1) == -1 ) return 0; v17 = this[16]; this[5] = 0; v7 = 0; this[4] = 0; this[1] = v17; this[2] = v17; this[3] = v17; this[6] = 0; *((_BYTE *)this + 74) = 0; } else { v7 = 0; } LABEL_5: v13 = this[17]; if ( v13 < 2 ) v13 = 2; if ( v5 <= (int)(v13 - 1) ) goto LABEL_11; v14 = this[22]; if ( !v14 ) std::__throw_bad_cast(); v23 = this[12]; v15 = (*(int (__fastcall **)(int))(*(_DWORD *)v14 + 24))(v14); if ( (v23 & 8) != 0 && v15 ) { Src = (const void *)this[2]; Size = this[3] - (_DWORD)Src; if ( Size ) { v24 = this[3] - (_DWORD)Src; memcpy(v4, Src, Size); this[2] += v24; v4 += v24; v7 += v24; v5 -= v24; } for ( i = std::__basic_file::xsgetn(this + 10, v4, v5); ; i = std::__basic_file::xsgetn( this + 10, v4, v5) ) { if ( i == -1 ) { v22 = _errno(); std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", (char *)*v22); } if ( !i ) break; v7 += i; v5 -= i; if ( !v5 ) goto LABEL_28; v4 += i; } if ( !v5 ) { LABEL_28: *((_BYTE *)this + 73) = 1; return v7; } v21 = this[16]; this[5] = 0; this[4] = 0; this[1] = v21; this[2] = v21; this[3] = v21; this[6] = 0; *((_BYTE *)this + 73) = 0; } else { LABEL_11: v7 += std::streambuf::xsgetn(this, v4, v5); } return v7; } //----- (0049A510) -------------------------------------------------------- int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *a2, int a3) { int v4; // esi int v5; // ecx char v6; // si int v7; // edx int v8; // eax unsigned int v9; // ecx signed int v10; // esi signed int v11; // eax int v12; // edx int v14; // edx int v15; // ecx unsigned int v16; // ecx v4 = *(_DWORD *)(this + 48); if ( (v4 & 0x10) != 0 ) LOBYTE(v4) = 1; v5 = *(_DWORD *)(this + 88); v6 = v4 & 1; if ( !v5 ) std::__throw_bad_cast(); if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) || !v6 || *(_BYTE *)(this + 73) ) return std::streambuf::xsputn((_DWORD *)this, a2, a3); v7 = *(_DWORD *)(this + 20); v8 = *(_DWORD *)(this + 24) - v7; if ( !*(_BYTE *)(this + 74) ) { v9 = *(_DWORD *)(this + 68); if ( v9 > 1 ) v8 = v9 - 1; } if ( v8 > 1023 ) v8 = 1024; if ( a3 < v8 ) return std::streambuf::xsputn((_DWORD *)this, a2, a3); v10 = v7 - *(_DWORD *)(this + 16); v11 = std::__basic_file::xsputn_2((void *)(this + 40), *(char **)(this + 16), v10, (char *)a2, a3); if ( v10 + a3 == v11 ) { v14 = *(_DWORD *)(this + 64); v15 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v14; *(_DWORD *)(this + 8) = v14; *(_DWORD *)(this + 12) = v14; if ( ((v15 & 0x10) != 0 || (v15 & 1) != 0) && (v16 = *(_DWORD *)(this + 68), v16 > 1) ) { *(_DWORD *)(this + 20) = v14; *(_DWORD *)(this + 16) = v14; *(_DWORD *)(this + 24) = v14 + v16 - 1; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } *(_BYTE *)(this + 74) = 1; } v12 = 0; if ( v10 < v11 ) return v11 - v10; return v12; } //----- (0049A640) -------------------------------------------------------- _DWORD *__thiscall std::filebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5) { _DWORD *result; // eax __int64 v7; // rax int v8; // ecx int v9; // ecx *this = -1; this[1] = -1; this[2] = 0; if ( !(unsigned __int8)std::filebuf::_M_terminate_output((_DWORD *)a2) ) return this; v7 = std::__basic_file::seekoff((void *)(a2 + 40), a3, a4); if ( ((unsigned int)v7 & HIDWORD(v7)) == -1 ) return this; *this = v7; result = this; *(_WORD *)(a2 + 73) = 0; v8 = *(_DWORD *)(a2 + 92); *(_DWORD *)(a2 + 20) = 0; *(_DWORD *)(a2 + 104) = v8; *(_DWORD *)(a2 + 100) = v8; v9 = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 4) = v9; *(_DWORD *)(a2 + 8) = v9; *(_DWORD *)(a2 + 12) = v9; *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 56) = a5; this[2] = a5; this[1] = HIDWORD(v7); return result; } //----- (0049A6F0) -------------------------------------------------------- _DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) { int v6; // ecx int v7; // eax bool v8; // al bool v10; // zf __int64 v11; // rax __int64 v12; // rax int v13; // edx int v14; // ecx int v15; // eax unsigned int v16; // esi unsigned int v17; // edi __int64 v18; // kr00_8 __int64 ext_pos; // [esp+28h] [ebp-54h] bool v20; // [esp+34h] [ebp-48h] int v21; // [esp+34h] [ebp-48h] int v22; // [esp+3Ch] [ebp-40h] int v23; // [esp+4Ch] [ebp-30h] BYREF int v24[11]; // [esp+50h] [ebp-2Ch] BYREF v6 = *(_DWORD *)(a2 + 88); if ( v6 ) { v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); v22 = v7 & ~(v7 >> 31); v8 = v7 <= 0; } else { v22 = 0; v8 = 1; } *this = -1; this[1] = -1; this[2] = 0; v20 = v8 && a3 != 0; if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v20 ) return this; if ( a4 != 1 || a3 || *(_BYTE *)(a2 + 74) && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 88) + 24))(*(_DWORD *)(a2 + 88)) ) { if ( *(_BYTE *)(a2 + 84) ) { v10 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); *(_BYTE *)(a2 + 84) = 0; v13 = *(_DWORD *)(a2 + 80); v14 = *(_DWORD *)(a2 + 64); v15 = *(_DWORD *)(a2 + 76) + !v10; *(_DWORD *)(a2 + 76) = v15; *(_DWORD *)(a2 + 4) = v14; *(_DWORD *)(a2 + 8) = v15; *(_DWORD *)(a2 + 12) = v13; } v21 = *(_DWORD *)(a2 + 52); v23 = v21; v16 = a3 * v22; v17 = (unsigned __int64)(a3 * v22) >> 32; if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) { v23 = *(_DWORD *)(a2 + 60); v18 = std::filebuf::_M_get_ext_pos(a2, (int)&v23) + __PAIR64__(v17, v16); std::filebuf::_M_seek(v24, a2, v18, 1, v23); } else { std::filebuf::_M_seek(v24, a2, __SPAIR64__(v17, v16), a4, v21); } *this = v24[0]; this[1] = v24[1]; this[2] = v24[2]; return this; } v10 = *(_BYTE *)(a2 + 73) == 0; ext_pos = 0LL; v23 = *(_DWORD *)(a2 + 52); if ( !v10 ) { v23 = *(_DWORD *)(a2 + 60); ext_pos = std::filebuf::_M_get_ext_pos(a2, (int)&v23); } if ( *(_BYTE *)(a2 + 74) ) ext_pos = *(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16); v11 = std::__basic_file::seekoff((void *)(a2 + 40), 0LL, 1); if ( ((unsigned int)v11 & HIDWORD(v11)) == -1 ) return this; v12 = ext_pos + v11; *this = v12; LODWORD(v12) = v23; this[1] = HIDWORD(v12); this[2] = v12; return this; } //----- (0049A950) -------------------------------------------------------- _DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) { bool v8; // zf int v9; // edx int v10; // ecx int v11; // eax int v12[7]; // [esp+30h] [ebp-1Ch] BYREF *this = -1; this[1] = -1; this[2] = 0; if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) { if ( *(_BYTE *)(a2 + 84) ) { v8 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); *(_BYTE *)(a2 + 84) = 0; v9 = *(_DWORD *)(a2 + 80); v10 = *(_DWORD *)(a2 + 64); v11 = *(_DWORD *)(a2 + 76) + !v8; *(_DWORD *)(a2 + 76) = v11; *(_DWORD *)(a2 + 4) = v10; *(_DWORD *)(a2 + 8) = v11; *(_DWORD *)(a2 + 12) = v9; } std::filebuf::_M_seek(v12, a2, a3, 0, a4); *this = v12[0]; this[1] = v12[1]; this[2] = v12[2]; } return this; } //----- (0049AA20) -------------------------------------------------------- int __thiscall std::filebuf::overflow(int this, int a2) { int v3; // edx int v4; // eax int v5; // ecx int ext_pos; // eax char *v7; // edx char *v8; // eax int v9; // eax int v10; // edx int result; // eax unsigned int v12; // eax unsigned int v13; // edx int v14; // edx int v15; // ecx int v16[7]; // [esp+20h] [ebp-1Ch] BYREF if ( (*(_BYTE *)(this + 48) & 0x11) == 0 ) return -1; if ( *(_BYTE *)(this + 73) ) { if ( *(_BYTE *)(this + 84) ) { v3 = *(_DWORD *)(this + 80); v4 = *(_DWORD *)(this + 76) + (*(_DWORD *)(this + 8) != *(_DWORD *)(this + 4)); *(_DWORD *)(this + 76) = v4; v5 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 8) = v4; *(_DWORD *)(this + 4) = v5; *(_DWORD *)(this + 12) = v3; *(_BYTE *)(this + 84) = 0; } ext_pos = std::filebuf::_M_get_ext_pos(this, this + 60); std::filebuf::_M_seek(v16, this, ext_pos, 1, *(_DWORD *)(this + 60)); if ( (v16[0] & v16[1]) == -1 ) return -1; } v7 = *(char **)(this + 16); v8 = *(char **)(this + 20); if ( v7 >= v8 ) { v12 = *(_DWORD *)(this + 68); if ( v12 > 1 ) { v14 = *(_DWORD *)(this + 64); v15 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v14; *(_DWORD *)(this + 8) = v14; *(_DWORD *)(this + 12) = v14; if ( (v15 & 0x10) != 0 || (v15 & 1) != 0 ) { *(_DWORD *)(this + 20) = v14; *(_DWORD *)(this + 16) = v14; *(_DWORD *)(this + 24) = v14 + v12 - 1; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } *(_BYTE *)(this + 74) = 1; if ( a2 != -1 ) { **(_BYTE **)(this + 20) = a2; result = a2; ++*(_DWORD *)(this + 20); return result; } } else { LOBYTE(v16[0]) = a2; if ( a2 != -1 ) { if ( std::filebuf::_M_convert_to_external((_DWORD *)this, (char *)v16, 1u) ) { *(_BYTE *)(this + 74) = 1; return a2; } return -1; } *(_BYTE *)(this + 74) = 1; } return 0; } if ( a2 != -1 ) { *v8 = a2; v7 = *(char **)(this + 16); v8 = (char *)(*(_DWORD *)(this + 20) + 1); *(_DWORD *)(this + 20) = v8; } if ( !std::filebuf::_M_convert_to_external((_DWORD *)this, v7, v8 - v7) ) return -1; v9 = *(_DWORD *)(this + 64); v10 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v9; *(_DWORD *)(this + 8) = v9; *(_DWORD *)(this + 12) = v9; if ( ((v10 & 0x10) != 0 || (v10 & 1) != 0) && (v13 = *(_DWORD *)(this + 68), v13 > 1) ) { *(_DWORD *)(this + 20) = v9; *(_DWORD *)(this + 16) = v9; *(_DWORD *)(this + 24) = v9 + v13 - 1; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } result = a2; if ( a2 == -1 ) return 0; return result; } //----- (0049AC10) -------------------------------------------------------- int __thiscall std::filebuf::pbackfail(char *this, int a2) { unsigned int v3; // eax char v4; // di int v5; // edx int result; // eax _BYTE *v7; // eax int v8; // eax int v9; // eax int v10[7]; // [esp+24h] [ebp-1Ch] BYREF if ( (this[48] & 8) == 0 ) return -1; if ( this[74] ) { if ( (*(int (__thiscall **)(char *, int))(*(_DWORD *)this + 52))(this, -1) == -1 ) return -1; v9 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 4) = 0; v4 = this[84]; *((_DWORD *)this + 1) = v9; *((_DWORD *)this + 2) = v9; *((_DWORD *)this + 3) = v9; *((_DWORD *)this + 6) = 0; this[74] = 0; } else { v3 = *((_DWORD *)this + 2); v4 = this[84]; if ( v3 > *((_DWORD *)this + 1) ) { *((_DWORD *)this + 2) = v3 - 1; v5 = *(unsigned __int8 *)(v3 - 1); goto LABEL_5; } } (*(void (__thiscall **)(int *, char *, int, int, int, int))(*(_DWORD *)this + 16))(v10, this, -1, -1, 1, 24); if ( (v10[0] & v10[1]) == -1 ) return -1; v5 = (*(int (__fastcall **)(char *))(*(_DWORD *)this + 36))(this); if ( v5 == -1 ) return -1; LABEL_5: result = 0; if ( a2 == -1 ) return result; result = v5; if ( v5 == a2 ) return result; if ( v4 ) return -1; v7 = (_BYTE *)*((_DWORD *)this + 2); if ( !this[84] ) { *((_DWORD *)this + 19) = v7; v8 = *((_DWORD *)this + 3); *((_DWORD *)this + 3) = this + 76; *((_DWORD *)this + 20) = v8; v7 = this + 75; *((_DWORD *)this + 1) = this + 75; *((_DWORD *)this + 2) = this + 75; this[84] = 1; } this[73] = 1; *v7 = a2; return a2; } //----- (0049AD40) -------------------------------------------------------- int __fastcall std::filebuf::showmanyc(_DWORD *a1) { int v1; // esi int v2; // ebp int v4; // ecx int v5; // esi int v6; // edi int v8; // esi v1 = a1[12]; if ( (v1 & 8) == 0 ) return -1; v2 = (int)(a1 + 10); if ( !std::__basic_file::is_open(a1 + 10) ) return -1; v4 = a1[22]; v5 = v1 & 4; v6 = a1[3] - a1[2]; if ( !v4 ) std::__throw_bad_cast(); if ( (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 20))(v4) < 0 || !v5 ) return v6; v8 = std::__basic_file::showmanyc(v2); return v8 / (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1[22] + 32))(a1[22]) + v6; } //----- (0049ADD0) -------------------------------------------------------- int __fastcall std::filebuf::underflow(int a1) { unsigned __int8 *v2; // eax int result; // eax bool v4; // zf unsigned int v5; // edx int v6; // ecx unsigned int v7; // edi int v8; // ecx int v9; // eax signed int v10; // esi int v11; // ecx const void *v12; // eax unsigned int v13; // edx signed int v14; // edi signed int v15; // ecx char *v16; // ebp int v17; // ecx char *v18; // eax void *v19; // edx int v20; // esi char v21; // di int v22; // ebp char v23; // al int v24; // eax int v25; // eax int v26; // eax _BYTE *Src; // ecx unsigned int v28; // eax size_t Size; // esi int v30; // eax int *v31; // eax unsigned __int8 *v32; // edx int v33; // eax char *v34; // eax char *v35; // eax char *v36; // eax unsigned int v37; // [esp+48h] [ebp-34h] unsigned int v38; // [esp+4Ch] [ebp-30h] unsigned int v39; // [esp+4Ch] [ebp-30h] unsigned int v40; // [esp+4Ch] [ebp-30h] unsigned int v41; // [esp+4Ch] [ebp-30h] unsigned int v42; // [esp+4Ch] [ebp-30h] void *v43; // [esp+5Ch] [ebp-20h] BYREF if ( (*(_BYTE *)(a1 + 48) & 8) == 0 ) return -1; if ( *(_BYTE *)(a1 + 74) ) { result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, -1); if ( result == -1 ) return result; v2 = *(unsigned __int8 **)(a1 + 64); v4 = *(_BYTE *)(a1 + 84) == 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 4) = v2; *(_DWORD *)(a1 + 8) = v2; *(_DWORD *)(a1 + 12) = v2; *(_DWORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 74) = 0; if ( v4 ) goto LABEL_4; LABEL_9: v4 = *(_DWORD *)(a1 + 4) == (_DWORD)v2; v5 = *(_DWORD *)(a1 + 80); *(_BYTE *)(a1 + 84) = 0; v6 = *(_DWORD *)(a1 + 64); v2 = (unsigned __int8 *)(*(_DWORD *)(a1 + 76) + !v4); *(_DWORD *)(a1 + 12) = v5; *(_DWORD *)(a1 + 76) = v2; *(_DWORD *)(a1 + 4) = v6; *(_DWORD *)(a1 + 8) = v2; if ( (unsigned int)v2 < v5 ) return *v2; goto LABEL_10; } v2 = *(unsigned __int8 **)(a1 + 8); if ( *(_BYTE *)(a1 + 84) ) goto LABEL_9; LABEL_4: if ( (unsigned int)v2 < *(_DWORD *)(a1 + 12) ) return *v2; LABEL_10: v7 = *(_DWORD *)(a1 + 68); if ( v7 < 2 ) v7 = 2; v8 = *(_DWORD *)(a1 + 88); v37 = v7 - 1; if ( !v8 ) std::__throw_bad_cast(); if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) ) { v9 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 88) + 20))(*(_DWORD *)(a1 + 88)); if ( v9 <= 0 ) { v26 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 88) + 32))(*(_DWORD *)(a1 + 88)); v11 = v7 - 1; v10 = v7 + v26 - 2; } else { v10 = v37 * v9; v11 = v37 * v9; } v12 = *(const void **)(a1 + 100); v13 = 0; v14 = *(_DWORD *)(a1 + 104) - (_DWORD)v12; if ( v11 > v14 ) v13 = v11 - v14; v15 = *(_DWORD *)(a1 + 96); if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 12) == *(_DWORD *)(a1 + 4) ) { if ( !v14 ) { if ( v10 <= v15 ) { v16 = *(char **)(a1 + 92); goto LABEL_22; } v42 = v13; v36 = (char *)operator new[](v10); v13 = v42; v16 = v36; LABEL_61: if ( *(_DWORD *)(a1 + 92) ) { v39 = v13; operator delete[](*(void **)(a1 + 92)); v13 = v39; } *(_DWORD *)(a1 + 92) = v16; *(_DWORD *)(a1 + 96) = v10; LABEL_22: v17 = *(_DWORD *)(a1 + 56); v18 = &v16[v14]; *(_DWORD *)(a1 + 100) = v16; *(_DWORD *)(a1 + 104) = &v16[v14]; *(_DWORD *)(a1 + 60) = v17; if ( v13 ) { v20 = 0; goto LABEL_30; } v19 = *(void **)(a1 + 4); v20 = 0; v43 = v19; if ( v18 <= v16 ) { while ( 1 ) { LABEL_29: v18 = *(char **)(a1 + 104); v13 = 1; v14 = (signed int)&v18[-*(_DWORD *)(a1 + 92)]; LABEL_30: if ( (signed int)(v13 + v14) > *(_DWORD *)(a1 + 96) ) std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow codecvt::max_length() is not valid"); v24 = std::__basic_file::xsgetn((void *)(a1 + 40), v18, v13); if ( v24 ) { if ( v24 == -1 ) goto LABEL_49; v21 = 0; } else { v21 = 1; } v19 = *(void **)(a1 + 4); v16 = *(char **)(a1 + 100); v18 = (char *)(*(_DWORD *)(a1 + 104) + v24); *(_DWORD *)(a1 + 104) = v18; v43 = v19; if ( v18 > v16 ) break; if ( v20 == 3 ) goto LABEL_41; if ( v21 ) goto LABEL_37; } } else { v21 = 0; } v20 = (*(int (__thiscall **)(_DWORD, int, char *, char *, int, void *, unsigned int, void **))(**(_DWORD **)(a1 + 88) + 16))( *(_DWORD *)(a1 + 88), a1 + 56, v16, v18, a1 + 100, v19, (unsigned int)v19 + v37, &v43); if ( v20 != 3 ) { v22 = (int)v43 - *(_DWORD *)(a1 + 4); if ( v20 != 2 ) { v23 = v21 | (v43 != *(void **)(a1 + 4)); goto LABEL_28; } if ( (int)v43 - *(_DWORD *)(a1 + 4) <= 0 ) { if ( !v21 ) std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow invalid byte sequence in file"); goto LABEL_57; } goto LABEL_51; } v18 = *(char **)(a1 + 104); v19 = *(void **)(a1 + 4); LABEL_41: Src = *(_BYTE **)(a1 + 92); v28 = v18 - Src; v22 = v28; Size = v28; if ( v37 < v28 ) { Size = v37; v22 = v37; } else if ( !v28 ) { LABEL_43: *(_DWORD *)(a1 + 100) = Src; v20 = 3; v23 = v21 | (v22 != 0); LABEL_28: if ( !v23 ) goto LABEL_29; if ( v22 > 0 ) goto LABEL_51; if ( v21 ) { LABEL_37: v25 = *(_DWORD *)(a1 + 64); *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 4) = v25; *(_DWORD *)(a1 + 8) = v25; *(_DWORD *)(a1 + 12) = v25; *(_DWORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 73) = 0; if ( v20 == 1 ) std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow incomplete character in file"); return -1; } LABEL_49: v31 = _errno(); std::__throw_ios_failure( (std::__ios_failure *)"basic_filebuf::underflow error reading the file", (char *)*v31); } memcpy(v19, Src, Size); Src = (_BYTE *)(*(_DWORD *)(a1 + 92) + Size); goto LABEL_43; } if ( v10 <= v15 ) { v16 = *(char **)(a1 + 92); v13 = 0; LABEL_68: v40 = v13; memmove(v16, v12, v14); v16 = *(char **)(a1 + 92); v13 = v40; goto LABEL_22; } v35 = (char *)operator new[](v10); v13 = 0; v16 = v35; } else { if ( v10 <= v15 ) { v16 = *(char **)(a1 + 92); if ( !v14 ) goto LABEL_22; goto LABEL_68; } v38 = v13; v34 = (char *)operator new[](v10); v13 = v38; v16 = v34; if ( !v14 ) goto LABEL_61; } v41 = v13; memcpy(v16, *(const void **)(a1 + 100), v14); v13 = v41; goto LABEL_61; } v30 = std::__basic_file::xsgetn((void *)(a1 + 40), *(void **)(a1 + 4), v37); v22 = v30; if ( !v30 ) { LABEL_57: v33 = *(_DWORD *)(a1 + 64); *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 4) = v33; *(_DWORD *)(a1 + 8) = v33; *(_DWORD *)(a1 + 12) = v33; *(_DWORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 73) = 0; return -1; } if ( v30 <= 0 ) goto LABEL_49; LABEL_51: v32 = *(unsigned __int8 **)(a1 + 64); v4 = (*(_BYTE *)(a1 + 48) & 8) == 0; *(_DWORD *)(a1 + 4) = v32; *(_DWORD *)(a1 + 8) = v32; if ( v4 ) *(_DWORD *)(a1 + 12) = v32; else *(_DWORD *)(a1 + 12) = &v32[v22]; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 73) = 1; return *v32; } //----- (0049B260) -------------------------------------------------------- int __thiscall std::filebuf::basic_filebuf(int this, int a2) { int v3; // edx int v4; // eax int v5; // edx int v6; // edx int v7; // eax int v8; // edx int result; // eax int v10; // edx int v11; // edx int v12; // edx int v13; // edx int v14; // edx int v15; // edx int v16; // edx const std::locale *v17; // [esp+4h] [ebp-18h] std::streambuf::basic_streambuf((_DWORD *)this, a2, v17); v3 = *(_DWORD *)(a2 + 56); v4 = *(_DWORD *)(a2 + 40); *(_DWORD *)this = &off_4F6090; *(_DWORD *)(this + 56) = v3; v5 = *(_DWORD *)(a2 + 60); *(_DWORD *)(this + 40) = v4; LOBYTE(v4) = *(_BYTE *)(a2 + 44); *(_DWORD *)(this + 60) = v5; v6 = *(_DWORD *)(a2 + 64); *(_BYTE *)(this + 44) = v4; v7 = *(_DWORD *)(a2 + 48); *(_DWORD *)(this + 64) = v6; v8 = *(_DWORD *)(a2 + 68); *(_DWORD *)(this + 48) = v7; result = *(_DWORD *)(a2 + 52); *(_DWORD *)(this + 68) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 72); *(_DWORD *)(this + 32) = 0; *(_BYTE *)(this + 72) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 73); *(_DWORD *)(this + 36) = 0; *(_BYTE *)(this + 73) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 74); *(_DWORD *)(a2 + 40) = 0; *(_BYTE *)(a2 + 44) = 0; *(_DWORD *)(a2 + 48) = 0; *(_DWORD *)(this + 52) = result; *(_DWORD *)(a2 + 64) = 0; *(_DWORD *)(a2 + 68) = 1; *(_WORD *)(a2 + 72) = 0; *(_BYTE *)(a2 + 74) = 0; *(_BYTE *)(this + 74) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 75); *(_DWORD *)(a2 + 4) = 0; *(_BYTE *)(this + 75) = v8; v10 = *(_DWORD *)(a2 + 76); *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(this + 76) = v10; v11 = *(_DWORD *)(a2 + 80); *(_DWORD *)(a2 + 76) = 0; *(_DWORD *)(this + 80) = v11; LOBYTE(v11) = *(_BYTE *)(a2 + 84); *(_DWORD *)(a2 + 80) = 0; *(_BYTE *)(this + 84) = v11; v12 = *(_DWORD *)(a2 + 88); *(_BYTE *)(a2 + 84) = 0; *(_DWORD *)(this + 88) = v12; v13 = *(_DWORD *)(a2 + 92); *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(this + 92) = v13; v14 = *(_DWORD *)(a2 + 96); *(_DWORD *)(a2 + 92) = 0; *(_DWORD *)(this + 96) = v14; v15 = *(_DWORD *)(a2 + 100); *(_DWORD *)(a2 + 96) = 0; *(_DWORD *)(this + 100) = v15; v16 = *(_DWORD *)(a2 + 104); *(_DWORD *)(a2 + 100) = 0; *(_DWORD *)(a2 + 104) = 0; *(_DWORD *)(this + 104) = v16; *(_DWORD *)(a2 + 20) = 0; *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 56) = result; *(_DWORD *)(a2 + 60) = result; return result; } // 49B26E: variable 'v17' is possibly undefined // 4F6090: using guessed type int (*off_4F6090)(); //----- (0049B3A0) -------------------------------------------------------- void *__fastcall std::filebuf::basic_filebuf(int a1) { int v1; // esi _BYTE *v3; // edi void *result; // eax v1 = a1 + 28; v3 = (_BYTE *)(a1 + 40); *(_DWORD *)a1 = &off_4F6414; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; std::locale::locale((_DWORD *)(a1 + 28)); *(_DWORD *)a1 = &off_4F6090; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; std::__basic_file::__basic_file(v3, a1 + 32); *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 60) = 0; *(_DWORD *)(a1 + 64) = 0; *(_DWORD *)(a1 + 68) = 512; *(_DWORD *)(a1 + 72) = 0; *(_DWORD *)(a1 + 76) = 0; *(_DWORD *)(a1 + 80) = 0; *(_BYTE *)(a1 + 84) = 0; *(_DWORD *)(a1 + 88) = 0; *(_DWORD *)(a1 + 92) = 0; *(_DWORD *)(a1 + 96) = 0; *(_DWORD *)(a1 + 100) = 0; *(_DWORD *)(a1 + 104) = 0; result = (void *)std::has_facet>(v1); if ( (_BYTE)result ) { result = std::use_facet>(v1); *(_DWORD *)(a1 + 88) = result; } return result; } // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (0049B4C0) -------------------------------------------------------- int __thiscall std::filebuf::basic_filebuf(int this, int a2) { int v3; // edx int v4; // eax int v5; // edx int v6; // edx int v7; // eax int v8; // edx int result; // eax int v10; // edx int v11; // edx int v12; // edx int v13; // edx int v14; // edx int v15; // edx int v16; // edx const std::locale *v17; // [esp+4h] [ebp-18h] std::streambuf::basic_streambuf((_DWORD *)this, a2, v17); v3 = *(_DWORD *)(a2 + 56); v4 = *(_DWORD *)(a2 + 40); *(_DWORD *)this = &off_4F6090; *(_DWORD *)(this + 56) = v3; v5 = *(_DWORD *)(a2 + 60); *(_DWORD *)(this + 40) = v4; LOBYTE(v4) = *(_BYTE *)(a2 + 44); *(_DWORD *)(this + 60) = v5; v6 = *(_DWORD *)(a2 + 64); *(_BYTE *)(this + 44) = v4; v7 = *(_DWORD *)(a2 + 48); *(_DWORD *)(this + 64) = v6; v8 = *(_DWORD *)(a2 + 68); *(_DWORD *)(this + 48) = v7; result = *(_DWORD *)(a2 + 52); *(_DWORD *)(this + 68) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 72); *(_DWORD *)(this + 32) = 0; *(_BYTE *)(this + 72) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 73); *(_DWORD *)(this + 36) = 0; *(_BYTE *)(this + 73) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 74); *(_DWORD *)(a2 + 40) = 0; *(_BYTE *)(a2 + 44) = 0; *(_DWORD *)(a2 + 48) = 0; *(_DWORD *)(this + 52) = result; *(_DWORD *)(a2 + 64) = 0; *(_DWORD *)(a2 + 68) = 1; *(_WORD *)(a2 + 72) = 0; *(_BYTE *)(a2 + 74) = 0; *(_BYTE *)(this + 74) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 75); *(_DWORD *)(a2 + 4) = 0; *(_BYTE *)(this + 75) = v8; v10 = *(_DWORD *)(a2 + 76); *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(this + 76) = v10; v11 = *(_DWORD *)(a2 + 80); *(_DWORD *)(a2 + 76) = 0; *(_DWORD *)(this + 80) = v11; LOBYTE(v11) = *(_BYTE *)(a2 + 84); *(_DWORD *)(a2 + 80) = 0; *(_BYTE *)(this + 84) = v11; v12 = *(_DWORD *)(a2 + 88); *(_BYTE *)(a2 + 84) = 0; *(_DWORD *)(this + 88) = v12; v13 = *(_DWORD *)(a2 + 92); *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(this + 92) = v13; v14 = *(_DWORD *)(a2 + 96); *(_DWORD *)(a2 + 92) = 0; *(_DWORD *)(this + 96) = v14; v15 = *(_DWORD *)(a2 + 100); *(_DWORD *)(a2 + 96) = 0; *(_DWORD *)(this + 100) = v15; v16 = *(_DWORD *)(a2 + 104); *(_DWORD *)(a2 + 100) = 0; *(_DWORD *)(a2 + 104) = 0; *(_DWORD *)(this + 104) = v16; *(_DWORD *)(a2 + 20) = 0; *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 56) = result; *(_DWORD *)(a2 + 60) = result; return result; } // 49B4CE: variable 'v17' is possibly undefined // 4F6090: using guessed type int (*off_4F6090)(); //----- (0049B600) -------------------------------------------------------- void *__fastcall std::filebuf::basic_filebuf(int a1) { int v1; // esi _BYTE *v3; // edi void *result; // eax v1 = a1 + 28; v3 = (_BYTE *)(a1 + 40); *(_DWORD *)a1 = &off_4F6414; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; std::locale::locale((_DWORD *)(a1 + 28)); *(_DWORD *)a1 = &off_4F6090; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; std::__basic_file::__basic_file(v3, a1 + 32); *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 60) = 0; *(_DWORD *)(a1 + 64) = 0; *(_DWORD *)(a1 + 68) = 512; *(_DWORD *)(a1 + 72) = 0; *(_DWORD *)(a1 + 76) = 0; *(_DWORD *)(a1 + 80) = 0; *(_BYTE *)(a1 + 84) = 0; *(_DWORD *)(a1 + 88) = 0; *(_DWORD *)(a1 + 92) = 0; *(_DWORD *)(a1 + 96) = 0; *(_DWORD *)(a1 + 100) = 0; *(_DWORD *)(a1 + 104) = 0; result = (void *)std::has_facet>(v1); if ( (_BYTE)result ) { result = std::use_facet>(v1); *(_DWORD *)(a1 + 88) = result; } return result; } // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (0049B720) -------------------------------------------------------- void __fastcall std::filebuf::~filebuf(_DWORD **a1) { *a1 = &off_4F6090; std::filebuf::close((int)a1); std::__basic_file::~__basic_file(a1 + 10); *a1 = &off_4F6414; std::locale::~locale(a1 + 7); operator delete(a1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (0049B770) -------------------------------------------------------- void __fastcall std::filebuf::~filebuf(int a1) { *(_DWORD *)a1 = &off_4F6090; std::filebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (0049B7B0) -------------------------------------------------------- void __fastcall std::filebuf::~filebuf(int a1) { *(_DWORD *)a1 = &off_4F6090; std::filebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (0049B7F0) -------------------------------------------------------- int __thiscall std::filebuf::operator=(int this, int a2) { int v3; // eax char v4; // dl int v5; // eax int v6; // eax int v7; // eax int v8; // eax int v9; // eax int v10; // eax int v11; // eax int v12; // eax int v13; // eax int v14; // eax int v15; // eax int result; // eax std::filebuf::close(this); std::streambuf::operator=((volatile signed __int32 **)this, a2); v3 = *(_DWORD *)(this + 40); *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); v4 = *(_BYTE *)(a2 + 44); *(_DWORD *)(a2 + 40) = v3; LOBYTE(v3) = *(_BYTE *)(this + 44); *(_BYTE *)(this + 44) = v4; *(_BYTE *)(a2 + 44) = v3; v5 = *(_DWORD *)(a2 + 48); *(_DWORD *)(a2 + 48) = 0; *(_DWORD *)(this + 48) = v5; *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); v6 = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 64) = 0; *(_DWORD *)(this + 64) = v6; v7 = *(_DWORD *)(a2 + 68); *(_DWORD *)(a2 + 68) = 1; *(_DWORD *)(this + 68) = v7; LOBYTE(v7) = *(_BYTE *)(a2 + 72); *(_BYTE *)(a2 + 72) = 0; *(_BYTE *)(this + 72) = v7; v8 = *(_DWORD *)(a2 + 92); *(_DWORD *)(a2 + 92) = 0; *(_DWORD *)(this + 92) = v8; v9 = *(_DWORD *)(a2 + 96); *(_DWORD *)(a2 + 96) = 0; *(_DWORD *)(this + 96) = v9; v10 = *(_DWORD *)(a2 + 100); *(_DWORD *)(a2 + 100) = 0; *(_DWORD *)(this + 100) = v10; v11 = *(_DWORD *)(a2 + 104); *(_DWORD *)(a2 + 104) = 0; *(_DWORD *)(this + 104) = v11; LOBYTE(v11) = *(_BYTE *)(a2 + 73); *(_BYTE *)(a2 + 73) = 0; *(_BYTE *)(this + 73) = v11; LOBYTE(v11) = *(_BYTE *)(a2 + 74); *(_BYTE *)(a2 + 74) = 0; *(_BYTE *)(this + 74) = v11; v12 = *(_DWORD *)(a2 + 76); *(_DWORD *)(a2 + 76) = 0; *(_DWORD *)(this + 76) = v12; v13 = *(_DWORD *)(a2 + 80); *(_DWORD *)(a2 + 80) = 0; *(_DWORD *)(this + 80) = v13; LOBYTE(v13) = *(_BYTE *)(a2 + 84); *(_BYTE *)(a2 + 84) = 0; *(_BYTE *)(this + 84) = v13; v14 = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 20) = 0; *(_DWORD *)(a2 + 4) = v14; *(_DWORD *)(a2 + 8) = v14; *(_DWORD *)(a2 + 12) = v14; v15 = *(_DWORD *)(a2 + 52); *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 56) = v15; *(_DWORD *)(a2 + 60) = v15; result = this; *(_DWORD *)(a2 + 24) = 0; return result; } //----- (0049B910) -------------------------------------------------------- unsigned int __thiscall std::wfilebuf::_M_set_buffer(_DWORD *this, int a2) { int v2; // eax bool v3; // bl int v4; // edx unsigned int result; // eax v2 = this[12]; v3 = (v2 & 8) != 0; if ( (v2 & 0x10) != 0 ) LOBYTE(v2) = 1; v4 = this[16]; result = v2 & 1; this[1] = v4; this[2] = v4; if ( a2 > 0 && v3 ) { result = v4 + 2 * a2; this[3] = result; LABEL_6: this[5] = 0; this[4] = 0; this[6] = 0; return result; } this[3] = v4; if ( a2 ) goto LABEL_6; if ( !(_BYTE)result ) goto LABEL_6; result = this[17]; if ( result <= 1 ) goto LABEL_6; result = v4 + 2 * result - 2; this[5] = v4; this[4] = v4; this[6] = result; return result; } //----- (0049B990) -------------------------------------------------------- int __thiscall std::wfilebuf::_M_get_ext_pos(int this, int a2) { if ( (*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(this + 92) + 24))(*(_DWORD *)(this + 92)) ) return (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 12)) >> 1; else return *(_DWORD *)(this + 96) + (*(int (__thiscall **)(_DWORD, int, _DWORD, _DWORD, int))(**(_DWORD **)(this + 92) + 28))( *(_DWORD *)(this + 92), a2, *(_DWORD *)(this + 96), *(_DWORD *)(this + 104), (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1) - *(_DWORD *)(this + 108); } //----- (0049BA00) -------------------------------------------------------- int __fastcall std::wfilebuf::_M_create_pback(int a1) { int v1; // eax int result; // eax if ( !*(_BYTE *)(a1 + 88) ) { v1 = *(_DWORD *)(a1 + 8); *(_BYTE *)(a1 + 88) = 1; *(_DWORD *)(a1 + 80) = v1; *(_DWORD *)(a1 + 84) = *(_DWORD *)(a1 + 12); *(_DWORD *)(a1 + 4) = a1 + 76; *(_DWORD *)(a1 + 8) = a1 + 76; result = a1 + 78; *(_DWORD *)(a1 + 12) = a1 + 78; } return result; } //----- (0049BA30) -------------------------------------------------------- int __fastcall std::wfilebuf::_M_destroy_pback(int a1) { bool v1; // zf int v2; // eax int v3; // ebx int result; // eax int v5; // edx if ( *(_BYTE *)(a1 + 88) ) { v1 = *(_DWORD *)(a1 + 8) == *(_DWORD *)(a1 + 4); v2 = *(_DWORD *)(a1 + 80); v3 = *(_DWORD *)(a1 + 64); *(_BYTE *)(a1 + 88) = 0; result = v2 + 2 * !v1; v5 = *(_DWORD *)(a1 + 84); *(_DWORD *)(a1 + 4) = v3; *(_DWORD *)(a1 + 80) = result; *(_DWORD *)(a1 + 8) = result; *(_DWORD *)(a1 + 12) = v5; } return result; } //----- (0049BA70) -------------------------------------------------------- int __fastcall std::wfilebuf::_M_terminate_output(_DWORD *a1) { int v1; // esi int v3; // eax int v4; // ecx _DWORD **v5; // eax _DWORD *v6; // ebx _DWORD **v7; // ebp unsigned int v8; // eax unsigned int v9; // esi unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] void *v12; // [esp+2Ch] [ebp-B4h] int v13; // [esp+30h] [ebp-B0h] int v14; // [esp+40h] [ebp-A0h] BYREF char v15[128]; // [esp+44h] [ebp-9Ch] BYREF char v16[28]; // [esp+C4h] [ebp-1Ch] BYREF v1 = 1; if ( a1[4] < a1[5] ) { v3 = (*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, 0xFFFF); LOBYTE(v3) = (_WORD)v3 != 0xFFFF; v1 = v3; } if ( *((_BYTE *)a1 + 74) ) { v4 = a1[23]; if ( !v4 ) std::__throw_bad_cast(); v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); if ( !v11 ) { if ( (_BYTE)v1 ) { v12 = a1 + 10; v5 = (_DWORD **)a1; v6 = a1 + 14; v7 = v5; while ( 1 ) { v8 = (*(int (__thiscall **)(_DWORD *, _DWORD *, char *, char *, int *))(*v7[23] + 12))( v7[23], v6, v15, v16, &v14); v9 = v8; if ( v8 == 2 ) break; if ( v8 <= 1 && v14 - (int)v15 > 0 ) { v13 = v14 - (_DWORD)v15; if ( v13 != std::__basic_file::xsputn(v12, v15, v14 - (_DWORD)v15) ) return v11; if ( v9 == 1 ) continue; } return ((unsigned __int16 (__thiscall *)(_DWORD **, int))(*v7)[13])(v7, 0xFFFF) != 0xFFFF; } return v11; } } } return v1; } // 49BA70: using guessed type char var_1C[28]; //----- (0049BB80) -------------------------------------------------------- bool __thiscall std::wfilebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3) { int v4; // ecx unsigned int v5; // esi int v6; // eax void *v7; // esp void *v8; // esp unsigned int v9; // eax unsigned int v10; // eax int v12; // esi char v13; // [esp+20h] [ebp-38h] int v14; // [esp+38h] [ebp-20h] BYREF int v15; // [esp+3Ch] [ebp-1Ch] BYREF char v16[24]; // [esp+40h] [ebp-18h] BYREF v4 = this[23]; v5 = a3; if ( !v4 ) std::__throw_bad_cast(); if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) goto LABEL_5; v6 = 16 * ((a3 * (*(int (__thiscall **)(_DWORD))(*(_DWORD *)this[23] + 32))(this[23]) + 27) >> 4); v7 = alloca(v6); v8 = alloca(v6); v9 = (*(int (__thiscall **)(_DWORD, _DWORD *, char *, char *))(*(_DWORD *)this[23] + 8))( this[23], this + 14, a2, &a2[2 * a3]); if ( v9 > 1 ) { if ( v9 == 3 ) { LABEL_5: v10 = std::__basic_file::xsputn(this + 10, a2, a3); return v10 == v5; } LABEL_11: std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::_M_convert_to_external conversion error"); } v13 = v9; v5 = v14 - (_DWORD)v16; v10 = std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16); if ( v14 - (_DWORD)v16 != v10 || (v13 & 1) == 0 ) return v10 == v5; if ( (*(int (__thiscall **)(_DWORD, int *, int, _DWORD, int *, char *, int, int *))(*(_DWORD *)this[23] + 8))( this[23], &v15, v15, this[5], &v15, v16, v14, &v14) == 2 ) goto LABEL_11; v12 = v14 - (_DWORD)v16; return std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16) == v12; } //----- (0049BCF0) -------------------------------------------------------- void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int a1) { if ( *(_BYTE *)(a1 + 72) ) { if ( *(_DWORD *)(a1 + 64) ) operator delete[](*(void **)(a1 + 64)); *(_DWORD *)(a1 + 64) = 0; *(_BYTE *)(a1 + 72) = 0; } if ( *(_DWORD *)(a1 + 96) ) operator delete[](*(void **)(a1 + 96)); *(_DWORD *)(a1 + 96) = 0; *(_DWORD *)(a1 + 100) = 0; *(_DWORD *)(a1 + 104) = 0; *(_DWORD *)(a1 + 108) = 0; } //----- (0049BD50) -------------------------------------------------------- int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1) { int result; // eax if ( !*(_BYTE *)(a1 + 72) ) { result = *(_DWORD *)(a1 + 64); if ( !result ) return std::wfilebuf::_M_allocate_internal_buffer(a1); } return result; } //----- (0049BD70) -------------------------------------------------------- int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1) { unsigned int v1; // eax int result; // eax v1 = *(_DWORD *)(a1 + 68); if ( v1 > 0x3FFFFFFE ) std::wfilebuf::_M_allocate_internal_buffer(); result = operator new[](2 * v1); *(_BYTE *)(a1 + 72) = 1; *(_DWORD *)(a1 + 64) = result; return result; } //----- (0049BDA0) -------------------------------------------------------- char *__thiscall std::wfilebuf::open(int this, char *a2, int a3) { _BYTE *v3; // esi v3 = (_BYTE *)(this + 40); if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) return 0; std::__basic_file::open(v3, a2, a3, 436); if ( !std::__basic_file::is_open(v3) ) return 0; if ( !*(_BYTE *)(this + 72) && !*(_DWORD *)(this + 64) ) std::wfilebuf::_M_allocate_internal_buffer(this); return std::wfilebuf::open((char *)this, a3); } //----- (0049BE20) -------------------------------------------------------- char *__thiscall std::wfilebuf::open(char *this, int a2) { int v3; // eax int v4; // eax _DWORD v6[7]; // [esp+20h] [ebp-1Ch] BYREF *(_WORD *)(this + 73) = 0; v3 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 1) = v3; *((_DWORD *)this + 2) = v3; *((_DWORD *)this + 3) = v3; v4 = *((_DWORD *)this + 13); *((_DWORD *)this + 12) = a2; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 14) = v4; *((_DWORD *)this + 15) = v4; if ( (a2 & 2) == 0 ) return this; (*(void (__thiscall **)(_DWORD *, char *, _DWORD, _DWORD, int, int))(*(_DWORD *)this + 16))(v6, this, 0, 0, 2, a2); if ( (v6[0] & v6[1]) != -1 ) return this; std::wfilebuf::close((int)this); return 0; } //----- (0049BEC0) -------------------------------------------------------- char *__thiscall std::wfilebuf::open(int this, wchar_t *a2, int a3) { _BYTE *v3; // esi v3 = (_BYTE *)(this + 40); if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) return 0; std::__basic_file::open(v3, a2, a3); if ( !std::__basic_file::is_open(v3) ) return 0; if ( !*(_BYTE *)(this + 72) && !*(_DWORD *)(this + 64) ) std::wfilebuf::_M_allocate_internal_buffer(this); return std::wfilebuf::open((char *)this, a3); } //----- (0049BF40) -------------------------------------------------------- char *__thiscall std::wfilebuf::open(void *this, char *a2, int a3) { return std::wfilebuf::open((int)this, *(char **)a2, a3); } //----- (0049BF50) -------------------------------------------------------- int __thiscall std::wfilebuf::swap(int this, int a2) { int v3; // eax int v4; // edx int v5; // eax int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // edx int v11; // eax int v12; // edx int v13; // eax int v14; // eax char v15; // dl int v16; // edx int v17; // eax int v18; // edx int v19; // eax int v20; // edx int v21; // eax int v22; // edx int v23; // eax int v24; // edx int v25; // eax int v26; // edx int v27; // eax int v28; // edx int v29; // eax int v30; // edx int v31; // eax int v32; // edx int v33; // eax int v34; // edx int v35; // eax int v36; // edx int v37; // eax int v38; // eax int result; // eax const std::locale *v40; // [esp+4h] [ebp-48h] volatile signed __int32 **v41; // [esp+1Ch] [ebp-30h] _DWORD *v42[8]; // [esp+2Ch] [ebp-20h] BYREF v3 = *(_DWORD *)(this + 4); *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = v3; v5 = *(_DWORD *)(this + 8); *(_DWORD *)(this + 8) = v4; v6 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a2 + 8) = v5; v7 = *(_DWORD *)(this + 12); *(_DWORD *)(this + 12) = v6; v8 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 12) = v7; v9 = *(_DWORD *)(this + 16); *(_DWORD *)(this + 16) = v8; v10 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 16) = v9; v11 = *(_DWORD *)(this + 20); *(_DWORD *)(this + 20) = v10; v12 = *(_DWORD *)(a2 + 24); *(_DWORD *)(a2 + 20) = v11; v13 = *(_DWORD *)(this + 24); *(_DWORD *)(this + 24) = v12; *(_DWORD *)(a2 + 24) = v13; v41 = (volatile signed __int32 **)(this + 28); std::locale::locale((volatile signed __int32 **)v42, (volatile signed __int32 **)(this + 28), v40); std::locale::operator=(v41, (volatile signed __int32 **)(a2 + 28)); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v42); std::locale::~locale(v42); v14 = *(_DWORD *)(this + 40); *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); v15 = *(_BYTE *)(a2 + 44); *(_DWORD *)(a2 + 40) = v14; LOBYTE(v14) = *(_BYTE *)(this + 44); *(_BYTE *)(this + 44) = v15; v16 = *(_DWORD *)(a2 + 48); *(_BYTE *)(a2 + 44) = v14; v17 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 48) = v16; v18 = *(_DWORD *)(a2 + 52); *(_DWORD *)(a2 + 48) = v17; v19 = *(_DWORD *)(this + 52); *(_DWORD *)(this + 52) = v18; v20 = *(_DWORD *)(a2 + 56); *(_DWORD *)(a2 + 52) = v19; v21 = *(_DWORD *)(this + 56); *(_DWORD *)(this + 56) = v20; v22 = *(_DWORD *)(a2 + 60); *(_DWORD *)(a2 + 56) = v21; v23 = *(_DWORD *)(this + 60); *(_DWORD *)(this + 60) = v22; v24 = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 60) = v23; v25 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 64) = v24; v26 = *(_DWORD *)(a2 + 68); *(_DWORD *)(a2 + 64) = v25; v27 = *(_DWORD *)(this + 68); *(_DWORD *)(this + 68) = v26; *(_DWORD *)(a2 + 68) = v27; LOBYTE(v27) = *(_BYTE *)(this + 72); *(_BYTE *)(this + 72) = *(_BYTE *)(a2 + 72); v28 = *(_DWORD *)(a2 + 96); *(_BYTE *)(a2 + 72) = v27; v29 = *(_DWORD *)(this + 96); *(_DWORD *)(this + 96) = v28; v30 = *(_DWORD *)(a2 + 100); *(_DWORD *)(a2 + 96) = v29; v31 = *(_DWORD *)(this + 100); *(_DWORD *)(this + 100) = v30; v32 = *(_DWORD *)(a2 + 104); *(_DWORD *)(a2 + 100) = v31; v33 = *(_DWORD *)(this + 104); *(_DWORD *)(this + 104) = v32; v34 = *(_DWORD *)(a2 + 108); *(_DWORD *)(a2 + 104) = v33; v35 = *(_DWORD *)(this + 108); *(_DWORD *)(this + 108) = v34; LOBYTE(v34) = *(_BYTE *)(a2 + 73); *(_DWORD *)(a2 + 108) = v35; LOBYTE(v35) = *(_BYTE *)(this + 73); *(_BYTE *)(this + 73) = v34; LOBYTE(v34) = *(_BYTE *)(a2 + 74); *(_BYTE *)(a2 + 73) = v35; LOBYTE(v35) = *(_BYTE *)(this + 74); *(_BYTE *)(this + 74) = v34; v36 = *(_DWORD *)(a2 + 80); *(_BYTE *)(a2 + 74) = v35; v37 = *(_DWORD *)(this + 80); *(_DWORD *)(this + 80) = v36; *(_DWORD *)(a2 + 80) = v37; v38 = *(_DWORD *)(this + 84); *(_DWORD *)(this + 84) = *(_DWORD *)(a2 + 84); LOBYTE(v36) = *(_BYTE *)(a2 + 88); *(_DWORD *)(a2 + 84) = v38; result = *(unsigned __int8 *)(this + 88); *(_BYTE *)(this + 88) = v36; *(_BYTE *)(a2 + 88) = result; return result; } // 49BFB8: variable 'v40' is possibly undefined //----- (0049C0E0) -------------------------------------------------------- int __fastcall std::wfilebuf::sync(_DWORD *a1) { if ( a1[4] >= a1[5] ) return 0; else return -((*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, 0xFFFF) == 0xFFFF); } //----- (0049C120) -------------------------------------------------------- int __fastcall std::wfilebuf::close(int a1) { int v1; // esi char v3; // di int v4; // eax int v5; // eax v1 = a1 + 40; if ( !std::__basic_file::is_open((_DWORD *)(a1 + 40)) ) return 0; v3 = std::wfilebuf::_M_terminate_output((_DWORD *)a1); *(_DWORD *)(a1 + 48) = 0; *(_BYTE *)(a1 + 88) = 0; std::wfilebuf::_M_destroy_internal_buffer(a1); *(_WORD *)(a1 + 73) = 0; v4 = *(_DWORD *)(a1 + 64); *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 4) = v4; *(_DWORD *)(a1 + 8) = v4; *(_DWORD *)(a1 + 12) = v4; v5 = *(_DWORD *)(a1 + 52); *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 56) = v5; *(_DWORD *)(a1 + 60) = v5; if ( !std::__basic_file::close(v1) ) return 0; if ( v3 == 1 ) return a1; else return 0; } //----- (0049C1E0) -------------------------------------------------------- char __thiscall std::wfilebuf::imbue(int this, int a2) { void *v3; // esi int v4; // eax int v5; // ecx int v6; // ecx int v7; // edi const void *Src; // eax int v9; // edi size_t Size; // edi int v11; // eax size_t v12; // edi int v13; // eax int v15; // [esp+30h] [ebp-1Ch] BYREF int v16; // [esp+34h] [ebp-18h] if ( (unsigned __int8)std::has_facet>(a2) ) v3 = std::use_facet>(a2); else v3 = 0; LOBYTE(v4) = std::__basic_file::is_open((_DWORD *)(this + 40)); if ( !(_BYTE)v4 ) goto LABEL_13; if ( !*(_BYTE *)(this + 73) && !*(_BYTE *)(this + 74) ) { *(_DWORD *)(this + 92) = v3; return v4; } v5 = *(_DWORD *)(this + 92); if ( !v5 ) goto LABEL_24; v4 = (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 20))(v5); if ( v4 == -1 ) goto LABEL_18; if ( !*(_BYTE *)(this + 73) ) { if ( !*(_BYTE *)(this + 74) ) goto LABEL_13; LOBYTE(v4) = std::wfilebuf::_M_terminate_output((_DWORD *)this); if ( (_BYTE)v4 ) { v4 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 4) = v4; *(_DWORD *)(this + 8) = v4; *(_DWORD *)(this + 12) = v4; *(_DWORD *)(this + 24) = 0; goto LABEL_13; } LABEL_18: *(_DWORD *)(this + 92) = 0; return v4; } v6 = *(_DWORD *)(this + 92); if ( !v6 ) LABEL_24: std::__throw_bad_cast(); LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); if ( !(_BYTE)v4 ) { v7 = *(_DWORD *)(this + 96); Src = (const void *)(v7 + (*(int (__thiscall **)(_DWORD, int, int, _DWORD, int))(**(_DWORD **)(this + 92) + 28))( *(_DWORD *)(this + 92), this + 60, v7, *(_DWORD *)(this + 104), (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1)); v9 = *(_DWORD *)(this + 108); *(_DWORD *)(this + 104) = Src; Size = v9 - (_DWORD)Src; if ( Size ) memmove(*(void **)(this + 96), Src, Size); v11 = *(_DWORD *)(this + 96); *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; v12 = v11 + Size; *(_DWORD *)(this + 104) = v11; v13 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 108) = v12; *(_DWORD *)(this + 4) = v13; *(_DWORD *)(this + 8) = v13; *(_DWORD *)(this + 12) = v13; v4 = *(_DWORD *)(this + 52); *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 56) = v4; *(_DWORD *)(this + 60) = v4; goto LABEL_13; } if ( !v3 ) goto LABEL_18; LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); if ( !(_BYTE)v4 ) { (*(void (__thiscall **)(int *, int, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( &v15, this, 0, 0, 1, *(_DWORD *)(this + 48)); LOBYTE(v4) = v15 & v16; if ( (v15 & v16) == -1 ) goto LABEL_18; } LABEL_13: *(_DWORD *)(this + 92) = v3; return v4; } //----- (0049C3C0) -------------------------------------------------------- int __thiscall std::wfilebuf::setbuf(int this, __int64 a2) { if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) return this; if ( !a2 ) { *(_DWORD *)(this + 68) = 1; return this; } if ( !(_DWORD)a2 || SHIDWORD(a2) <= 0 ) return this; *(_QWORD *)(this + 64) = a2; return this; } //----- (0049C420) -------------------------------------------------------- int __thiscall std::wfilebuf::xsgetn(_DWORD *this, wchar_t *a2, signed int a3) { wchar_t *S1; // edi signed int v5; // esi wchar_t *v6; // eax int v7; // ebp wchar_t *v8; // ecx bool v9; // zf int v10; // eax int v11; // edx int v12; // eax int v13; // ecx unsigned int v14; // eax int v15; // ecx char v16; // al int v18; // eax const wchar_t *v19; // edx const wchar_t *S2; // eax int i; // eax wchar_t v22; // dx int v23; // eax int *v24; // eax int v25; // [esp+18h] [ebp-24h] int N; // [esp+18h] [ebp-24h] int v27; // [esp+1Ch] [ebp-20h] S1 = a2; v5 = a3; if ( *((_BYTE *)this + 88) ) { v6 = (wchar_t *)this[2]; v7 = 0; v8 = (wchar_t *)this[1]; if ( a3 > 0 && v6 == v8 ) { v22 = *v6; v5 = a3 - 1; ++v6; S1 = a2 + 1; v7 = 1; *a2 = v22; } v9 = v8 == v6; v10 = this[20]; v11 = this[16]; *((_BYTE *)this + 88) = 0; this[1] = v11; v12 = v10 + 2 * !v9; v13 = this[21]; this[20] = v12; this[2] = v12; this[3] = v13; LABEL_6: v14 = this[17]; if ( v14 >= 2 ) goto LABEL_7; LABEL_16: v14 = 2; goto LABEL_7; } if ( !*((_BYTE *)this + 74) ) { v7 = 0; goto LABEL_6; } if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*this + 52))(this, 0xFFFF) == 0xFFFF ) return 0; v18 = this[16]; this[5] = 0; v7 = 0; this[4] = 0; this[1] = v18; this[2] = v18; this[3] = v18; v14 = this[17]; this[6] = 0; *((_BYTE *)this + 74) = 0; if ( v14 < 2 ) goto LABEL_16; if ( v5 <= (int)(v14 - 1) ) goto LABEL_11; LABEL_7: v15 = this[23]; if ( !v15 ) std::__throw_bad_cast(); v25 = this[12]; v16 = (*(int (__fastcall **)(int))(*(_DWORD *)v15 + 24))(v15); if ( (v25 & 8) != 0 && v16 ) { v19 = (const wchar_t *)this[3]; S2 = (const wchar_t *)this[2]; if ( S2 != v19 ) { v27 = (char *)v19 - (char *)S2; N = v19 - S2; wmemcpy(S1, S2, N); this[2] += v27; S1 = (wchar_t *)((char *)S1 + v27); v7 += N; v5 -= N; } for ( i = std::__basic_file::xsgetn(this + 10, S1, v5); ; i = std::__basic_file::xsgetn( this + 10, S1, v5) ) { if ( i == -1 ) { v24 = _errno(); std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", (char *)*v24); } if ( !i ) break; v7 += i; v5 -= i; if ( !v5 ) goto LABEL_26; S1 += i; } if ( !v5 ) { LABEL_26: *((_BYTE *)this + 73) = 1; return v7; } v23 = this[16]; this[5] = 0; this[4] = 0; this[1] = v23; this[2] = v23; this[3] = v23; this[6] = 0; *((_BYTE *)this + 73) = 0; } else { LABEL_11: v7 += std::wstreambuf::xsgetn(this, S1, v5); } return v7; } //----- (0049C640) -------------------------------------------------------- int __thiscall std::wfilebuf::xsputn(int this, wchar_t *a2, int a3) { int v4; // esi int v5; // ecx char v6; // si int v7; // edx int v8; // eax unsigned int v9; // ecx int v10; // esi signed int v11; // eax int v12; // edx int v14; // edx int v15; // ecx unsigned int v16; // ecx char *v17; // [esp+0h] [ebp-2Ch] v4 = *(_DWORD *)(this + 48); if ( (v4 & 0x10) != 0 ) LOBYTE(v4) = 1; v5 = *(_DWORD *)(this + 92); v6 = v4 & 1; if ( !v5 ) std::__throw_bad_cast(); if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) || !v6 || *(_BYTE *)(this + 73) ) return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); v7 = *(_DWORD *)(this + 20); v8 = (*(_DWORD *)(this + 24) - v7) >> 1; if ( !*(_BYTE *)(this + 74) ) { v9 = *(_DWORD *)(this + 68); if ( v9 > 1 ) v8 = v9 - 1; } if ( v8 > 1023 ) v8 = 1024; if ( a3 < v8 ) return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); v17 = *(char **)(this + 16); v10 = (v7 - (int)v17) >> 1; v11 = std::__basic_file::xsputn_2((void *)(this + 40), v17, v10, (char *)a2, a3); if ( v10 + a3 == v11 ) { v14 = *(_DWORD *)(this + 64); v15 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v14; *(_DWORD *)(this + 8) = v14; *(_DWORD *)(this + 12) = v14; if ( ((v15 & 0x10) != 0 || (v15 & 1) != 0) && (v16 = *(_DWORD *)(this + 68), v16 > 1) ) { *(_DWORD *)(this + 20) = v14; *(_DWORD *)(this + 16) = v14; *(_DWORD *)(this + 24) = v14 + 2 * v16 - 2; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } *(_BYTE *)(this + 74) = 1; } v12 = 0; if ( v10 < v11 ) return v11 - v10; return v12; } //----- (0049C770) -------------------------------------------------------- _DWORD *__thiscall std::wfilebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5) { _DWORD *result; // eax __int64 v7; // rax int v8; // ecx int v9; // ecx *this = -1; this[1] = -1; this[2] = 0; if ( !(unsigned __int8)std::wfilebuf::_M_terminate_output((_DWORD *)a2) ) return this; v7 = std::__basic_file::seekoff((void *)(a2 + 40), a3, a4); if ( ((unsigned int)v7 & HIDWORD(v7)) == -1 ) return this; *this = v7; result = this; *(_WORD *)(a2 + 73) = 0; v8 = *(_DWORD *)(a2 + 96); *(_DWORD *)(a2 + 20) = 0; *(_DWORD *)(a2 + 108) = v8; *(_DWORD *)(a2 + 104) = v8; v9 = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 4) = v9; *(_DWORD *)(a2 + 8) = v9; *(_DWORD *)(a2 + 12) = v9; *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 56) = a5; this[2] = a5; this[1] = HIDWORD(v7); return result; } //----- (0049C820) -------------------------------------------------------- _DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) { int v6; // ecx int v7; // eax bool v8; // al bool v10; // zf __int64 v11; // rax __int64 v12; // rax int v13; // eax int v14; // edx unsigned int v15; // esi unsigned int v16; // edi __int64 v17; // kr00_8 __int64 ext_pos; // [esp+28h] [ebp-54h] bool v19; // [esp+34h] [ebp-48h] int v20; // [esp+34h] [ebp-48h] int v21; // [esp+3Ch] [ebp-40h] int v22; // [esp+4Ch] [ebp-30h] BYREF int v23[11]; // [esp+50h] [ebp-2Ch] BYREF v6 = *(_DWORD *)(a2 + 92); if ( v6 ) { v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); v21 = v7 & ~(v7 >> 31); v8 = v7 <= 0; } else { v21 = 0; v8 = 1; } *this = -1; this[1] = -1; this[2] = 0; v19 = v8 && a3 != 0; if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v19 ) return this; if ( a4 != 1 || a3 || *(_BYTE *)(a2 + 74) && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 92) + 24))(*(_DWORD *)(a2 + 92)) ) { if ( *(_BYTE *)(a2 + 88) ) { v10 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); *(_BYTE *)(a2 + 88) = 0; v13 = *(_DWORD *)(a2 + 80) + 2 * !v10; v14 = *(_DWORD *)(a2 + 84); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 80) = v13; *(_DWORD *)(a2 + 8) = v13; *(_DWORD *)(a2 + 12) = v14; } v20 = *(_DWORD *)(a2 + 52); v22 = v20; v15 = a3 * v21; v16 = (unsigned __int64)(a3 * v21) >> 32; if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) { v22 = *(_DWORD *)(a2 + 60); v17 = std::wfilebuf::_M_get_ext_pos(a2, (int)&v22) + __PAIR64__(v16, v15); std::wfilebuf::_M_seek(v23, a2, v17, 1, v22); } else { std::wfilebuf::_M_seek(v23, a2, __SPAIR64__(v16, v15), a4, v20); } *this = v23[0]; this[1] = v23[1]; this[2] = v23[2]; return this; } v10 = *(_BYTE *)(a2 + 73) == 0; ext_pos = 0LL; v22 = *(_DWORD *)(a2 + 52); if ( !v10 ) { v22 = *(_DWORD *)(a2 + 60); ext_pos = std::wfilebuf::_M_get_ext_pos(a2, (int)&v22); } if ( *(_BYTE *)(a2 + 74) ) ext_pos = (*(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16)) >> 1; v11 = std::__basic_file::seekoff((void *)(a2 + 40), 0LL, 1); if ( ((unsigned int)v11 & HIDWORD(v11)) == -1 ) return this; v12 = ext_pos + v11; *this = v12; LODWORD(v12) = v22; this[1] = HIDWORD(v12); this[2] = v12; return this; } //----- (0049CA90) -------------------------------------------------------- _DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) { bool v8; // zf int v9; // eax int v10; // edx int v11[7]; // [esp+30h] [ebp-1Ch] BYREF *this = -1; this[1] = -1; this[2] = 0; if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) { if ( *(_BYTE *)(a2 + 88) ) { v8 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); *(_BYTE *)(a2 + 88) = 0; v9 = *(_DWORD *)(a2 + 80) + 2 * !v8; v10 = *(_DWORD *)(a2 + 84); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 80) = v9; *(_DWORD *)(a2 + 8) = v9; *(_DWORD *)(a2 + 12) = v10; } std::wfilebuf::_M_seek(v11, a2, a3, 0, a4); *this = v11[0]; this[1] = v11[1]; this[2] = v11[2]; } return this; } //----- (0049CB60) -------------------------------------------------------- int __thiscall std::wfilebuf::overflow(int this, int a2) { int v3; // eax int v4; // edx int v5; // ecx int ext_pos; // eax char *v7; // edx char *v8; // eax int result; // eax unsigned int v10; // eax int v11; // eax int v12; // edx int v13; // edx int v14; // ecx _WORD *v15; // eax unsigned int v16; // edx int v17[7]; // [esp+20h] [ebp-1Ch] BYREF if ( (*(_BYTE *)(this + 48) & 0x11) == 0 ) return -1; if ( *(_BYTE *)(this + 73) ) { if ( *(_BYTE *)(this + 88) ) { v3 = *(_DWORD *)(this + 80) + 2 * (*(_DWORD *)(this + 8) != *(_DWORD *)(this + 4)); v4 = *(_DWORD *)(this + 84); *(_DWORD *)(this + 80) = v3; v5 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 8) = v3; *(_DWORD *)(this + 4) = v5; *(_DWORD *)(this + 12) = v4; *(_BYTE *)(this + 88) = 0; } ext_pos = std::wfilebuf::_M_get_ext_pos(this, this + 60); std::wfilebuf::_M_seek(v17, this, ext_pos, 1, *(_DWORD *)(this + 60)); if ( (v17[0] & v17[1]) == -1 ) return -1; } v7 = *(char **)(this + 16); v8 = *(char **)(this + 20); if ( v7 < v8 ) { if ( (_WORD)a2 != 0xFFFF ) { *(_WORD *)v8 = a2; v8 += 2; *(_DWORD *)(this + 20) = v8; } if ( !std::wfilebuf::_M_convert_to_external((_DWORD *)this, v7, (v8 - v7) >> 1) ) return -1; v11 = *(_DWORD *)(this + 64); v12 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v11; *(_DWORD *)(this + 8) = v11; *(_DWORD *)(this + 12) = v11; if ( ((v12 & 0x10) != 0 || (v12 & 1) != 0) && (v16 = *(_DWORD *)(this + 68), v16 > 1) ) { *(_DWORD *)(this + 20) = v11; *(_DWORD *)(this + 16) = v11; *(_DWORD *)(this + 24) = v11 + 2 * v16 - 2; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } result = a2; if ( (_WORD)a2 != 0xFFFF ) return result; return 0; } v10 = *(_DWORD *)(this + 68); if ( v10 > 1 ) { v13 = *(_DWORD *)(this + 64); v14 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v13; *(_DWORD *)(this + 8) = v13; *(_DWORD *)(this + 12) = v13; if ( (v14 & 0x10) != 0 || (v14 & 1) != 0 ) { *(_DWORD *)(this + 20) = v13; *(_DWORD *)(this + 16) = v13; *(_DWORD *)(this + 24) = v13 + 2 * v10 - 2; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } *(_BYTE *)(this + 74) = 1; if ( (_WORD)a2 != 0xFFFF ) { v15 = *(_WORD **)(this + 20); *v15 = a2; *(_DWORD *)(this + 20) = v15 + 1; return a2; } return 0; } LOWORD(v17[0]) = a2; if ( (_WORD)a2 == 0xFFFF ) { *(_BYTE *)(this + 74) = 1; return 0; } if ( !std::wfilebuf::_M_convert_to_external((_DWORD *)this, (char *)v17, 1u) ) return -1; *(_BYTE *)(this + 74) = 1; return a2; } //----- (0049CD40) -------------------------------------------------------- int __thiscall std::wfilebuf::pbackfail(char *this, int a2) { unsigned int v3; // eax char v4; // di int v5; // edx int result; // eax _WORD *v7; // eax int v8; // eax int v9; // eax int v10[7]; // [esp+24h] [ebp-1Ch] BYREF if ( (this[48] & 8) == 0 ) return -1; if ( this[74] ) { if ( (*(unsigned __int16 (__thiscall **)(char *, int))(*(_DWORD *)this + 52))(this, 0xFFFF) == 0xFFFF ) return -1; v9 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 4) = 0; v4 = this[88]; *((_DWORD *)this + 1) = v9; *((_DWORD *)this + 2) = v9; *((_DWORD *)this + 3) = v9; *((_DWORD *)this + 6) = 0; this[74] = 0; } else { v3 = *((_DWORD *)this + 2); v4 = this[88]; if ( v3 > *((_DWORD *)this + 1) ) { *((_DWORD *)this + 2) = v3 - 2; v5 = *(unsigned __int16 *)(v3 - 2); goto LABEL_5; } } (*(void (__thiscall **)(int *, char *, int, int, int, int))(*(_DWORD *)this + 16))(v10, this, -1, -1, 1, 24); if ( (v10[0] & v10[1]) == -1 ) return -1; v5 = (*(int (__fastcall **)(char *))(*(_DWORD *)this + 36))(this); if ( (_WORD)v5 == 0xFFFF ) return -1; LABEL_5: result = 0; if ( (_WORD)a2 == 0xFFFF ) return result; result = v5; if ( (_WORD)v5 == (_WORD)a2 ) return result; if ( v4 ) return -1; v7 = (_WORD *)*((_DWORD *)this + 2); if ( !this[88] ) { *((_DWORD *)this + 20) = v7; v8 = *((_DWORD *)this + 3); *((_DWORD *)this + 3) = this + 78; *((_DWORD *)this + 21) = v8; v7 = this + 76; *((_DWORD *)this + 1) = this + 76; *((_DWORD *)this + 2) = this + 76; this[88] = 1; } this[73] = 1; *v7 = a2; return a2; } //----- (0049CE70) -------------------------------------------------------- int __fastcall std::wfilebuf::showmanyc(_DWORD *a1) { int v1; // edi int v2; // ebp int v4; // ecx int v5; // edi int v6; // esi int v8; // edi v1 = a1[12]; if ( (v1 & 8) == 0 ) return -1; v2 = (int)(a1 + 10); if ( !std::__basic_file::is_open(a1 + 10) ) return -1; v4 = a1[23]; v5 = v1 & 4; v6 = (a1[3] - a1[2]) >> 1; if ( !v4 ) std::__throw_bad_cast(); if ( (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 20))(v4) < 0 || !v5 ) return v6; v8 = std::__basic_file::showmanyc(v2); return v8 / (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1[23] + 32))(a1[23]) + v6; } //----- (0049CF00) -------------------------------------------------------- int __fastcall std::wfilebuf::underflow(int a1) { unsigned __int16 *v2; // eax unsigned int v3; // edi int v4; // ecx int v5; // eax signed int v6; // esi int v7; // ecx const void *v8; // eax unsigned int v9; // edx signed int v10; // edi signed int v11; // ecx char *v12; // ebp int v13; // ecx char *v14; // eax wchar_t *S1; // edx int v16; // esi char v17; // di int v18; // ebp char v19; // al int v20; // eax int v21; // eax int result; // eax bool v23; // zf int v24; // eax int v25; // ecx unsigned int v26; // edx int v27; // eax int v28; // eax const wchar_t *S2; // ecx unsigned int v30; // eax size_t N; // esi unsigned __int16 *v32; // eax int v33; // eax int *v34; // eax char *v35; // eax char *v36; // eax char *v37; // eax unsigned int v38; // [esp+44h] [ebp-34h] unsigned int v39; // [esp+48h] [ebp-30h] unsigned int v40; // [esp+48h] [ebp-30h] unsigned int v41; // [esp+48h] [ebp-30h] unsigned int v42; // [esp+48h] [ebp-30h] unsigned int v43; // [esp+48h] [ebp-30h] wchar_t *v44; // [esp+58h] [ebp-20h] BYREF if ( (*(_BYTE *)(a1 + 48) & 8) == 0 ) return -1; if ( *(_BYTE *)(a1 + 74) ) { result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, 0xFFFF); if ( (_WORD)result == 0xFFFF ) return result; v2 = *(unsigned __int16 **)(a1 + 64); v23 = *(_BYTE *)(a1 + 88) == 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 4) = v2; *(_DWORD *)(a1 + 8) = v2; *(_DWORD *)(a1 + 12) = v2; *(_DWORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 74) = 0; if ( v23 ) { LABEL_4: if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v2 ) goto LABEL_5; return *v2; } } else { v2 = *(unsigned __int16 **)(a1 + 8); if ( !*(_BYTE *)(a1 + 88) ) goto LABEL_4; } v23 = *(_DWORD *)(a1 + 4) == (_DWORD)v2; v24 = *(_DWORD *)(a1 + 80); *(_BYTE *)(a1 + 88) = 0; v25 = *(_DWORD *)(a1 + 64); v2 = (unsigned __int16 *)(v24 + 2 * !v23); v26 = *(_DWORD *)(a1 + 84); *(_DWORD *)(a1 + 80) = v2; *(_DWORD *)(a1 + 4) = v25; *(_DWORD *)(a1 + 8) = v2; *(_DWORD *)(a1 + 12) = v26; if ( v26 > (unsigned int)v2 ) return *v2; LABEL_5: v3 = *(_DWORD *)(a1 + 68); if ( v3 < 2 ) v3 = 2; v4 = *(_DWORD *)(a1 + 92); v38 = v3 - 1; if ( !v4 ) std::__throw_bad_cast(); if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) { v5 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 92) + 20))(*(_DWORD *)(a1 + 92)); if ( v5 <= 0 ) { v33 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 92) + 32))(*(_DWORD *)(a1 + 92)); v7 = v3 - 1; v6 = v3 + v33 - 2; } else { v6 = v38 * v5; v7 = v38 * v5; } v8 = *(const void **)(a1 + 104); v9 = 0; v10 = *(_DWORD *)(a1 + 108) - (_DWORD)v8; if ( v7 > v10 ) v9 = v7 - v10; v11 = *(_DWORD *)(a1 + 100); if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 12) == *(_DWORD *)(a1 + 4) ) { if ( !v10 ) { if ( v6 <= v11 ) { v12 = *(char **)(a1 + 96); goto LABEL_17; } v43 = v9; v37 = (char *)operator new[](v6); v9 = v43; v12 = v37; LABEL_62: if ( *(_DWORD *)(a1 + 96) ) { v40 = v9; operator delete[](*(void **)(a1 + 96)); v9 = v40; } *(_DWORD *)(a1 + 96) = v12; *(_DWORD *)(a1 + 100) = v6; LABEL_17: v13 = *(_DWORD *)(a1 + 56); v14 = &v12[v10]; *(_DWORD *)(a1 + 104) = v12; *(_DWORD *)(a1 + 108) = &v12[v10]; *(_DWORD *)(a1 + 60) = v13; if ( v9 ) { v16 = 0; goto LABEL_25; } S1 = *(wchar_t **)(a1 + 4); v16 = 0; v44 = S1; if ( v14 <= v12 ) { while ( 1 ) { LABEL_24: v14 = *(char **)(a1 + 108); v9 = 1; v10 = (signed int)&v14[-*(_DWORD *)(a1 + 96)]; LABEL_25: if ( (signed int)(v9 + v10) > *(_DWORD *)(a1 + 100) ) std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow codecvt::max_length() is not valid"); v20 = std::__basic_file::xsgetn((void *)(a1 + 40), v14, v9); if ( v20 ) { if ( v20 == -1 ) goto LABEL_59; v17 = 0; } else { v17 = 1; } S1 = *(wchar_t **)(a1 + 4); v12 = *(char **)(a1 + 104); v14 = (char *)(*(_DWORD *)(a1 + 108) + v20); *(_DWORD *)(a1 + 108) = v14; v44 = S1; if ( v14 > v12 ) break; if ( v16 == 3 ) goto LABEL_44; if ( v17 ) goto LABEL_32; } } else { v17 = 0; } v16 = (*(int (__thiscall **)(_DWORD, int, char *, char *, int, wchar_t *, wchar_t *, wchar_t **))(**(_DWORD **)(a1 + 92) + 16))( *(_DWORD *)(a1 + 92), a1 + 56, v12, v14, a1 + 104, S1, &S1[v38], &v44); if ( v16 != 3 ) { v18 = ((int)v44 - *(_DWORD *)(a1 + 4)) >> 1; if ( v16 != 2 ) { v19 = v17 | (v44 != *(wchar_t **)(a1 + 4)); LABEL_23: if ( !v19 ) goto LABEL_24; if ( v18 > 0 ) goto LABEL_54; if ( !v17 ) { LABEL_59: v34 = _errno(); std::__throw_ios_failure( (std::__ios_failure *)"basic_filebuf::underflow error reading the file", (char *)*v34); } LABEL_32: v21 = *(_DWORD *)(a1 + 64); *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 4) = v21; *(_DWORD *)(a1 + 8) = v21; *(_DWORD *)(a1 + 12) = v21; *(_DWORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 73) = 0; if ( v16 == 1 ) std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow incomplete character in file"); return -1; } if ( (int)v44 - *(_DWORD *)(a1 + 4) <= 0 ) { if ( !v17 ) std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow invalid byte sequence in file"); goto LABEL_41; } goto LABEL_54; } v14 = *(char **)(a1 + 108); S1 = *(wchar_t **)(a1 + 4); LABEL_44: S2 = *(const wchar_t **)(a1 + 96); v30 = v14 - (char *)S2; v18 = v30; N = v30; if ( v38 < v30 ) { N = v38; v18 = v38; } else if ( !v30 ) { LABEL_46: *(_DWORD *)(a1 + 104) = S2; v16 = 3; v19 = v17 | (v18 != 0); goto LABEL_23; } wmemcpy(S1, S2, N); S2 = (const wchar_t *)(*(_DWORD *)(a1 + 96) + N); goto LABEL_46; } if ( v6 <= v11 ) { v12 = *(char **)(a1 + 96); v9 = 0; LABEL_73: v42 = v9; memmove(v12, v8, v10); v12 = *(char **)(a1 + 96); v9 = v42; goto LABEL_17; } v36 = (char *)operator new[](v6); v9 = 0; v12 = v36; } else { if ( v6 <= v11 ) { v12 = *(char **)(a1 + 96); if ( !v10 ) goto LABEL_17; goto LABEL_73; } v39 = v9; v35 = (char *)operator new[](v6); v9 = v39; v12 = v35; if ( !v10 ) goto LABEL_62; } v41 = v9; memcpy(v12, *(const void **)(a1 + 104), v10); v9 = v41; goto LABEL_62; } v27 = std::__basic_file::xsgetn((void *)(a1 + 40), *(void **)(a1 + 4), v38); v18 = v27; if ( !v27 ) { LABEL_41: v28 = *(_DWORD *)(a1 + 64); *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 4) = v28; *(_DWORD *)(a1 + 8) = v28; *(_DWORD *)(a1 + 12) = v28; *(_DWORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 73) = 0; return -1; } if ( v27 <= 0 ) goto LABEL_59; LABEL_54: v32 = *(unsigned __int16 **)(a1 + 64); v23 = (*(_BYTE *)(a1 + 48) & 8) == 0; *(_DWORD *)(a1 + 4) = v32; *(_DWORD *)(a1 + 8) = v32; if ( v23 ) *(_DWORD *)(a1 + 12) = v32; else *(_DWORD *)(a1 + 12) = &v32[v18]; *(_DWORD *)(a1 + 20) = 0; result = *v32; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 24) = 0; *(_BYTE *)(a1 + 73) = 1; return result; } //----- (0049D3C0) -------------------------------------------------------- int __thiscall std::wfilebuf::basic_filebuf(int this, int a2) { int v3; // edx int v4; // eax int v5; // edx int v6; // edx int v7; // eax int v8; // edx int result; // eax int v10; // edx int v11; // edx int v12; // edx int v13; // edx int v14; // edx int v15; // edx int v16; // edx const std::locale *v17; // [esp+4h] [ebp-18h] std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v17); v3 = *(_DWORD *)(a2 + 56); v4 = *(_DWORD *)(a2 + 40); *(_DWORD *)this = &off_4F60D0; *(_DWORD *)(this + 56) = v3; v5 = *(_DWORD *)(a2 + 60); *(_DWORD *)(this + 40) = v4; LOBYTE(v4) = *(_BYTE *)(a2 + 44); *(_DWORD *)(this + 60) = v5; v6 = *(_DWORD *)(a2 + 64); *(_BYTE *)(this + 44) = v4; v7 = *(_DWORD *)(a2 + 48); *(_DWORD *)(this + 64) = v6; v8 = *(_DWORD *)(a2 + 68); *(_DWORD *)(this + 48) = v7; result = *(_DWORD *)(a2 + 52); *(_DWORD *)(this + 68) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 72); *(_DWORD *)(this + 32) = 0; *(_BYTE *)(this + 72) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 73); *(_DWORD *)(this + 36) = 0; *(_BYTE *)(this + 73) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 74); *(_DWORD *)(a2 + 40) = 0; *(_BYTE *)(a2 + 44) = 0; *(_DWORD *)(a2 + 48) = 0; *(_DWORD *)(this + 52) = result; *(_DWORD *)(a2 + 64) = 0; *(_DWORD *)(a2 + 68) = 1; *(_WORD *)(a2 + 72) = 0; *(_BYTE *)(a2 + 74) = 0; *(_BYTE *)(this + 74) = v8; LOWORD(v8) = *(_WORD *)(a2 + 76); *(_DWORD *)(a2 + 4) = 0; *(_WORD *)(this + 76) = v8; v10 = *(_DWORD *)(a2 + 80); *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(this + 80) = v10; v11 = *(_DWORD *)(a2 + 84); *(_DWORD *)(a2 + 80) = 0; *(_DWORD *)(this + 84) = v11; LOBYTE(v11) = *(_BYTE *)(a2 + 88); *(_DWORD *)(a2 + 84) = 0; *(_BYTE *)(this + 88) = v11; v12 = *(_DWORD *)(a2 + 92); *(_BYTE *)(a2 + 88) = 0; *(_DWORD *)(this + 92) = v12; v13 = *(_DWORD *)(a2 + 96); *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(this + 96) = v13; v14 = *(_DWORD *)(a2 + 100); *(_DWORD *)(a2 + 96) = 0; *(_DWORD *)(this + 100) = v14; v15 = *(_DWORD *)(a2 + 104); *(_DWORD *)(a2 + 100) = 0; *(_DWORD *)(this + 104) = v15; v16 = *(_DWORD *)(a2 + 108); *(_DWORD *)(a2 + 104) = 0; *(_DWORD *)(a2 + 108) = 0; *(_DWORD *)(this + 108) = v16; *(_DWORD *)(a2 + 20) = 0; *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 56) = result; *(_DWORD *)(a2 + 60) = result; return result; } // 49D3CE: variable 'v17' is possibly undefined // 4F60D0: using guessed type int (*off_4F60D0)(); //----- (0049D500) -------------------------------------------------------- void *__fastcall std::wfilebuf::basic_filebuf(int a1) { int v1; // esi _BYTE *v3; // edi void *result; // eax v1 = a1 + 28; v3 = (_BYTE *)(a1 + 40); *(_DWORD *)a1 = &off_4F6454; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; std::locale::locale((_DWORD *)(a1 + 28)); *(_DWORD *)a1 = &off_4F60D0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; std::__basic_file::__basic_file(v3, a1 + 32); *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 60) = 0; *(_DWORD *)(a1 + 64) = 0; *(_DWORD *)(a1 + 68) = 512; *(_WORD *)(a1 + 72) = 0; *(_BYTE *)(a1 + 74) = 0; *(_WORD *)(a1 + 76) = 0; *(_DWORD *)(a1 + 80) = 0; *(_DWORD *)(a1 + 84) = 0; *(_BYTE *)(a1 + 88) = 0; *(_DWORD *)(a1 + 92) = 0; *(_DWORD *)(a1 + 96) = 0; *(_DWORD *)(a1 + 100) = 0; *(_DWORD *)(a1 + 104) = 0; *(_DWORD *)(a1 + 108) = 0; result = (void *)std::has_facet>(v1); if ( (_BYTE)result ) { result = std::use_facet>(v1); *(_DWORD *)(a1 + 92) = result; } return result; } // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (0049D630) -------------------------------------------------------- int __thiscall std::wfilebuf::basic_filebuf(int this, int a2) { int v3; // edx int v4; // eax int v5; // edx int v6; // edx int v7; // eax int v8; // edx int result; // eax int v10; // edx int v11; // edx int v12; // edx int v13; // edx int v14; // edx int v15; // edx int v16; // edx const std::locale *v17; // [esp+4h] [ebp-18h] std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v17); v3 = *(_DWORD *)(a2 + 56); v4 = *(_DWORD *)(a2 + 40); *(_DWORD *)this = &off_4F60D0; *(_DWORD *)(this + 56) = v3; v5 = *(_DWORD *)(a2 + 60); *(_DWORD *)(this + 40) = v4; LOBYTE(v4) = *(_BYTE *)(a2 + 44); *(_DWORD *)(this + 60) = v5; v6 = *(_DWORD *)(a2 + 64); *(_BYTE *)(this + 44) = v4; v7 = *(_DWORD *)(a2 + 48); *(_DWORD *)(this + 64) = v6; v8 = *(_DWORD *)(a2 + 68); *(_DWORD *)(this + 48) = v7; result = *(_DWORD *)(a2 + 52); *(_DWORD *)(this + 68) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 72); *(_DWORD *)(this + 32) = 0; *(_BYTE *)(this + 72) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 73); *(_DWORD *)(this + 36) = 0; *(_BYTE *)(this + 73) = v8; LOBYTE(v8) = *(_BYTE *)(a2 + 74); *(_DWORD *)(a2 + 40) = 0; *(_BYTE *)(a2 + 44) = 0; *(_DWORD *)(a2 + 48) = 0; *(_DWORD *)(this + 52) = result; *(_DWORD *)(a2 + 64) = 0; *(_DWORD *)(a2 + 68) = 1; *(_WORD *)(a2 + 72) = 0; *(_BYTE *)(a2 + 74) = 0; *(_BYTE *)(this + 74) = v8; LOWORD(v8) = *(_WORD *)(a2 + 76); *(_DWORD *)(a2 + 4) = 0; *(_WORD *)(this + 76) = v8; v10 = *(_DWORD *)(a2 + 80); *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(this + 80) = v10; v11 = *(_DWORD *)(a2 + 84); *(_DWORD *)(a2 + 80) = 0; *(_DWORD *)(this + 84) = v11; LOBYTE(v11) = *(_BYTE *)(a2 + 88); *(_DWORD *)(a2 + 84) = 0; *(_BYTE *)(this + 88) = v11; v12 = *(_DWORD *)(a2 + 92); *(_BYTE *)(a2 + 88) = 0; *(_DWORD *)(this + 92) = v12; v13 = *(_DWORD *)(a2 + 96); *(_DWORD *)(a2 + 12) = 0; *(_DWORD *)(this + 96) = v13; v14 = *(_DWORD *)(a2 + 100); *(_DWORD *)(a2 + 96) = 0; *(_DWORD *)(this + 100) = v14; v15 = *(_DWORD *)(a2 + 104); *(_DWORD *)(a2 + 100) = 0; *(_DWORD *)(this + 104) = v15; v16 = *(_DWORD *)(a2 + 108); *(_DWORD *)(a2 + 104) = 0; *(_DWORD *)(a2 + 108) = 0; *(_DWORD *)(this + 108) = v16; *(_DWORD *)(a2 + 20) = 0; *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 56) = result; *(_DWORD *)(a2 + 60) = result; return result; } // 49D63E: variable 'v17' is possibly undefined // 4F60D0: using guessed type int (*off_4F60D0)(); //----- (0049D770) -------------------------------------------------------- void *__fastcall std::wfilebuf::basic_filebuf(int a1) { int v1; // esi _BYTE *v3; // edi void *result; // eax v1 = a1 + 28; v3 = (_BYTE *)(a1 + 40); *(_DWORD *)a1 = &off_4F6454; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; std::locale::locale((_DWORD *)(a1 + 28)); *(_DWORD *)a1 = &off_4F60D0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; std::__basic_file::__basic_file(v3, a1 + 32); *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 60) = 0; *(_DWORD *)(a1 + 64) = 0; *(_DWORD *)(a1 + 68) = 512; *(_WORD *)(a1 + 72) = 0; *(_BYTE *)(a1 + 74) = 0; *(_WORD *)(a1 + 76) = 0; *(_DWORD *)(a1 + 80) = 0; *(_DWORD *)(a1 + 84) = 0; *(_BYTE *)(a1 + 88) = 0; *(_DWORD *)(a1 + 92) = 0; *(_DWORD *)(a1 + 96) = 0; *(_DWORD *)(a1 + 100) = 0; *(_DWORD *)(a1 + 104) = 0; *(_DWORD *)(a1 + 108) = 0; result = (void *)std::has_facet>(v1); if ( (_BYTE)result ) { result = std::use_facet>(v1); *(_DWORD *)(a1 + 92) = result; } return result; } // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (0049D8A0) -------------------------------------------------------- void __fastcall std::wfilebuf::~wfilebuf(_DWORD **a1) { *a1 = &off_4F60D0; std::wfilebuf::close((int)a1); std::__basic_file::~__basic_file(a1 + 10); *a1 = &off_4F6454; std::locale::~locale(a1 + 7); operator delete(a1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (0049D8F0) -------------------------------------------------------- void __fastcall std::wfilebuf::~wfilebuf(int a1) { *(_DWORD *)a1 = &off_4F60D0; std::wfilebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (0049D930) -------------------------------------------------------- void __fastcall std::wfilebuf::~wfilebuf(int a1) { *(_DWORD *)a1 = &off_4F60D0; std::wfilebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (0049D970) -------------------------------------------------------- int __thiscall std::wfilebuf::operator=(int this, int a2) { int v3; // eax char v4; // dl int v5; // eax int v6; // eax int v7; // eax int v8; // eax int v9; // eax int v10; // eax int v11; // eax int v12; // eax int v13; // eax int v14; // eax int v15; // eax int result; // eax std::wfilebuf::close(this); std::wstreambuf::operator=((volatile signed __int32 **)this, a2); v3 = *(_DWORD *)(this + 40); *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); v4 = *(_BYTE *)(a2 + 44); *(_DWORD *)(a2 + 40) = v3; LOBYTE(v3) = *(_BYTE *)(this + 44); *(_BYTE *)(this + 44) = v4; *(_BYTE *)(a2 + 44) = v3; v5 = *(_DWORD *)(a2 + 48); *(_DWORD *)(a2 + 48) = 0; *(_DWORD *)(this + 48) = v5; *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); v6 = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 64) = 0; *(_DWORD *)(this + 64) = v6; v7 = *(_DWORD *)(a2 + 68); *(_DWORD *)(a2 + 68) = 1; *(_DWORD *)(this + 68) = v7; LOBYTE(v7) = *(_BYTE *)(a2 + 72); *(_BYTE *)(a2 + 72) = 0; *(_BYTE *)(this + 72) = v7; v8 = *(_DWORD *)(a2 + 96); *(_DWORD *)(a2 + 96) = 0; *(_DWORD *)(this + 96) = v8; v9 = *(_DWORD *)(a2 + 100); *(_DWORD *)(a2 + 100) = 0; *(_DWORD *)(this + 100) = v9; v10 = *(_DWORD *)(a2 + 104); *(_DWORD *)(a2 + 104) = 0; *(_DWORD *)(this + 104) = v10; v11 = *(_DWORD *)(a2 + 108); *(_DWORD *)(a2 + 108) = 0; *(_DWORD *)(this + 108) = v11; LOBYTE(v11) = *(_BYTE *)(a2 + 73); *(_BYTE *)(a2 + 73) = 0; *(_BYTE *)(this + 73) = v11; LOBYTE(v11) = *(_BYTE *)(a2 + 74); *(_BYTE *)(a2 + 74) = 0; *(_BYTE *)(this + 74) = v11; v12 = *(_DWORD *)(a2 + 80); *(_DWORD *)(a2 + 80) = 0; *(_DWORD *)(this + 80) = v12; v13 = *(_DWORD *)(a2 + 84); *(_DWORD *)(a2 + 84) = 0; *(_DWORD *)(this + 84) = v13; LOBYTE(v13) = *(_BYTE *)(a2 + 88); *(_BYTE *)(a2 + 88) = 0; *(_BYTE *)(this + 88) = v13; v14 = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 20) = 0; *(_DWORD *)(a2 + 4) = v14; *(_DWORD *)(a2 + 8) = v14; *(_DWORD *)(a2 + 12) = v14; v15 = *(_DWORD *)(a2 + 52); *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 56) = v15; *(_DWORD *)(a2 + 60) = v15; result = this; *(_DWORD *)(a2 + 24) = 0; return result; } //----- (0049DA90) -------------------------------------------------------- int __thiscall std::fstream::open(char *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 12, a2, a3) == 0; v5 = *(_DWORD *)this; if ( v4 ) return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); else return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); } //----- (0049DB00) -------------------------------------------------------- int __thiscall std::fstream::open(char *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 12, a2, a3) == 0; v5 = *(_DWORD *)this; if ( v4 ) return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); else return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); } //----- (0049DB70) -------------------------------------------------------- int __thiscall std::fstream::open(char *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 12, *a2, a3) == 0; v5 = *(_DWORD *)this; if ( v4 ) return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); else return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); } //----- (0049DBE0) -------------------------------------------------------- int __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2) { int v3; // edi std::ios_base *v4; // esi int v5; // eax char v6; // dl char v7; // dl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v10); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; v8 = this[1]; *((_BYTE *)v4 + 117) = v7; this[1] = a2[1]; a2[1] = v8; return std::filebuf::swap((int)(this + 3), (int)(a2 + 3)); } // 49DC04: variable 'v10' is possibly undefined //----- (0049DC80) -------------------------------------------------------- int __fastcall std::fstream::close(_DWORD *a1) { int result; // eax result = std::filebuf::close((int)(a1 + 3)); if ( !result ) return std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (0049DCC0) -------------------------------------------------------- bool __fastcall std::fstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (0049DCD0) -------------------------------------------------------- int __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2) { _DWORD *v2; // edi int v4; // eax int v5; // eax int v6; // edx int v7; // eax int result; // eax std::ios_base *v9; // [esp+4h] [ebp-34h] char *v10; // [esp+1Ch] [ebp-1Ch] v2 = this + 30; std::ios_base::ios_base(this + 30); *this = &unk_4F0FCC; *((_WORD *)this + 118) = 0; v4 = a2[1]; this[58] = 0; this[1] = v4; v5 = *a2; this[60] = 0; v6 = *(_DWORD *)(v5 - 12); this[61] = 0; this[62] = 0; this[30] = &unk_4F0FE0; this[63] = 0; v10 = (char *)a2 + v6; std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); std::ios::_M_cache_locale(v2, (int)(this + 57)); this[60] = 0; v7 = *((_DWORD *)v10 + 28); *((_DWORD *)v10 + 28) = 0; this[58] = v7; *((_WORD *)this + 118) = *((_WORD *)v10 + 58); a2[1] = 0; *this = &off_4F6114; this[30] = off_4F613C; this[2] = off_4F6128; result = std::filebuf::basic_filebuf((int)(this + 3), (int)(a2 + 3)); this[60] = this + 3; return result; } // 49DD45: variable 'v9' is possibly undefined // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); //----- (0049DE00) -------------------------------------------------------- int __thiscall std::fstream::basic_fstream(char *this, char *a2, int a3) { int v3; // esi char *v5; // eax char *v6; // ecx v3 = (int)(this + 120); std::ios_base::ios_base((_DWORD *)this + 30); *(_DWORD *)this = &unk_4F0FCC; *((_DWORD *)this + 58) = 0; *((_WORD *)this + 118) = 0; *((_DWORD *)this + 60) = 0; *((_DWORD *)this + 61) = 0; *((_DWORD *)this + 62) = 0; *((_DWORD *)this + 63) = 0; *((_DWORD *)this + 30) = &unk_4F0FE0; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *((_DWORD *)this + 2) = &unk_4F0FF4; *((_DWORD *)this + 30) = &unk_4F1008; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F6114; *((_DWORD *)this + 30) = off_4F613C; *((_DWORD *)this + 2) = off_4F6128; std::filebuf::basic_filebuf((int)(this + 12)); std::ios::init(v3, (int)(this + 12)); v5 = std::filebuf::open(this + 12, a2, a3); v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v5 ) return std::ios::clear(v6, 0); else return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); } // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); //----- (0049DF70) -------------------------------------------------------- int __thiscall std::fstream::basic_fstream(char *this, wchar_t *a2, int a3) { int v3; // esi char *v5; // eax char *v6; // ecx v3 = (int)(this + 120); std::ios_base::ios_base((_DWORD *)this + 30); *(_DWORD *)this = &unk_4F0FCC; *((_DWORD *)this + 58) = 0; *((_WORD *)this + 118) = 0; *((_DWORD *)this + 60) = 0; *((_DWORD *)this + 61) = 0; *((_DWORD *)this + 62) = 0; *((_DWORD *)this + 63) = 0; *((_DWORD *)this + 30) = &unk_4F0FE0; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *((_DWORD *)this + 2) = &unk_4F0FF4; *((_DWORD *)this + 30) = &unk_4F1008; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F6114; *((_DWORD *)this + 30) = off_4F613C; *((_DWORD *)this + 2) = off_4F6128; std::filebuf::basic_filebuf((int)(this + 12)); std::ios::init(v3, (int)(this + 12)); v5 = std::filebuf::open(this + 12, a2, a3); v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v5 ) return std::ios::clear(v6, 0); else return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); } // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); //----- (0049E0E0) -------------------------------------------------------- int __thiscall std::fstream::basic_fstream(char *this, char **a2, int a3) { int v3; // esi char *v5; // eax char *v6; // ecx v3 = (int)(this + 120); std::ios_base::ios_base((_DWORD *)this + 30); *(_DWORD *)this = &unk_4F0FCC; *((_DWORD *)this + 58) = 0; *((_WORD *)this + 118) = 0; *((_DWORD *)this + 60) = 0; *((_DWORD *)this + 61) = 0; *((_DWORD *)this + 62) = 0; *((_DWORD *)this + 63) = 0; *((_DWORD *)this + 30) = &unk_4F0FE0; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *((_DWORD *)this + 2) = &unk_4F0FF4; *((_DWORD *)this + 30) = &unk_4F1008; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F6114; *((_DWORD *)this + 30) = off_4F613C; *((_DWORD *)this + 2) = off_4F6128; std::filebuf::basic_filebuf((int)(this + 12)); std::ios::init(v3, (int)(this + 12)); v5 = std::filebuf::open(this + 12, *a2, a3); v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v5 ) return std::ios::clear(v6, 0); else return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); } // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); //----- (0049E250) -------------------------------------------------------- BOOL __fastcall std::fstream::basic_fstream(int a1) { int v1; // esi v1 = a1 + 120; std::ios_base::ios_base((_DWORD *)(a1 + 120)); *(_DWORD *)a1 = &unk_4F0FCC; *(_DWORD *)(a1 + 232) = 0; *(_WORD *)(a1 + 236) = 0; *(_DWORD *)(a1 + 240) = 0; *(_DWORD *)(a1 + 244) = 0; *(_DWORD *)(a1 + 248) = 0; *(_DWORD *)(a1 + 252) = 0; *(_DWORD *)(a1 + 120) = &unk_4F0FE0; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_4F0FF4; *(_DWORD *)(a1 + 120) = &unk_4F1008; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_4F6114; *(_DWORD *)(a1 + 120) = off_4F613C; *(_DWORD *)(a1 + 8) = off_4F6128; std::filebuf::basic_filebuf(a1 + 12); return std::ios::init(v1, a1 + 12); } // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); //----- (0049E360) -------------------------------------------------------- int __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // edx __int16 v6; // ax int v7; // eax int v8; // edx int v9; // eax int v10; // edx int v11; // eax int v12; // edx int result; // eax std::ios_base *v14; // [esp+4h] [ebp-34h] std::ios_base *v15; // [esp+18h] [ebp-20h] int v16; // [esp+1Ch] [ebp-1Ch] v4 = a2[2]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; this[1] = a3[1]; v16 = (int)this + *(_DWORD *)(v4 - 12); v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v16, v15, v14); std::ios::_M_cache_locale((_DWORD *)v16, v16 + 108); v5 = *((_DWORD *)v15 + 28); *((_DWORD *)v15 + 28) = 0; v6 = *((_WORD *)v15 + 58); *(_DWORD *)(v16 + 120) = 0; *(_DWORD *)(v16 + 112) = v5; *(_WORD *)(v16 + 116) = v6; v7 = a2[4]; a3[1] = 0; v8 = a2[5]; this[2] = v7; *(int *)((char *)this + *(_DWORD *)(v7 - 12) + 8) = v8; v9 = a2[1]; v10 = a2[6]; *this = v9; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; this[2] = a2[7]; v11 = *a2; v12 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; this[2] = a2[9]; std::filebuf::basic_filebuf((int)(this + 3), (int)(a3 + 3)); result = *(_DWORD *)(*this - 12); *(int *)((char *)this + result + 120) = (int)(this + 3); return result; } // 49E39D: variable 'v14' is possibly undefined //----- (0049E480) -------------------------------------------------------- int __thiscall std::fstream::basic_fstream(char *this, int *a2, char *a3, int a4) { int v5; // eax int v6; // eax char *v7; // ecx int v8; // eax int v9; // edx int v10; // eax int v11; // edx char *v12; // eax char *v13; // ecx v5 = a2[2]; *(_DWORD *)this = v5; *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; *((_DWORD *)this + 1) = 0; std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); v6 = a2[4]; *((_DWORD *)this + 2) = v6; v7 = &this[*(_DWORD *)(v6 - 12) + 8]; *(_DWORD *)v7 = a2[5]; std::ios::init((int)v7, 0); v8 = a2[1]; v9 = a2[6]; *(_DWORD *)this = v8; *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; *((_DWORD *)this + 2) = a2[7]; v10 = *a2; v11 = a2[8]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; *((_DWORD *)this + 2) = a2[9]; std::filebuf::basic_filebuf((int)(this + 12)); std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); v12 = std::filebuf::open(this + 12, a3, a4); v13 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v12 ) return std::ios::clear(v13, 0); else return std::ios::clear(v13, *((_DWORD *)v13 + 5) | 4); } //----- (0049E5D0) -------------------------------------------------------- int __thiscall std::fstream::basic_fstream(char *this, int *a2, wchar_t *a3, int a4) { int v5; // eax int v6; // eax char *v7; // ecx int v8; // eax int v9; // edx int v10; // eax int v11; // edx char *v12; // eax char *v13; // ecx v5 = a2[2]; *(_DWORD *)this = v5; *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; *((_DWORD *)this + 1) = 0; std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); v6 = a2[4]; *((_DWORD *)this + 2) = v6; v7 = &this[*(_DWORD *)(v6 - 12) + 8]; *(_DWORD *)v7 = a2[5]; std::ios::init((int)v7, 0); v8 = a2[1]; v9 = a2[6]; *(_DWORD *)this = v8; *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; *((_DWORD *)this + 2) = a2[7]; v10 = *a2; v11 = a2[8]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; *((_DWORD *)this + 2) = a2[9]; std::filebuf::basic_filebuf((int)(this + 12)); std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); v12 = std::filebuf::open(this + 12, a3, a4); v13 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v12 ) return std::ios::clear(v13, 0); else return std::ios::clear(v13, *((_DWORD *)v13 + 5) | 4); } //----- (0049E720) -------------------------------------------------------- int __thiscall std::fstream::basic_fstream(char *this, int *a2, char **a3, int a4) { int v5; // eax int v6; // eax char *v7; // ecx int v8; // eax int v9; // edx int v10; // eax int v11; // edx char *v12; // eax char *v13; // ecx v5 = a2[2]; *(_DWORD *)this = v5; *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; *((_DWORD *)this + 1) = 0; std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); v6 = a2[4]; *((_DWORD *)this + 2) = v6; v7 = &this[*(_DWORD *)(v6 - 12) + 8]; *(_DWORD *)v7 = a2[5]; std::ios::init((int)v7, 0); v8 = a2[1]; v9 = a2[6]; *(_DWORD *)this = v8; *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; *((_DWORD *)this + 2) = a2[7]; v10 = *a2; v11 = a2[8]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; *((_DWORD *)this + 2) = a2[9]; std::filebuf::basic_filebuf((int)(this + 12)); std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); v12 = std::filebuf::open(this + 12, *a3, a4); v13 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v12 ) return std::ios::clear(v13, 0); else return std::ios::clear(v13, *((_DWORD *)v13 + 5) | 4); } //----- (0049E870) -------------------------------------------------------- BOOL __thiscall std::fstream::basic_fstream(int *this, int *a2) { int v3; // eax int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx int v8; // eax int v9; // edx v3 = a2[2]; *this = v3; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); v4 = a2[4]; this[2] = v4; v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); *v5 = a2[5]; std::ios::init((int)v5, 0); v6 = a2[1]; v7 = a2[6]; *this = v6; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; this[2] = a2[7]; v8 = *a2; v9 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; this[2] = a2[9]; std::filebuf::basic_filebuf((int)(this + 3)); return std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); } //----- (0049E970) -------------------------------------------------------- void __fastcall std::fstream::~fstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 3; *(v2 - 3) = &off_4F6114; v2[27] = off_4F613C; *(v2 - 1) = off_4F6128; *v2 = &off_4F6090; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 13); a1[3] = &off_4F6414; std::locale::~locale((_DWORD **)a1 + 10); a1[2] = &unk_4F0FF4; *a1 = &unk_4F0FCC; a1[1] = 0; a1[30] = &off_4F6E10; std::ios_base::~ios_base((int)(a1 + 30)); operator delete(a1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (0049E9F0) -------------------------------------------------------- void __fastcall std::fstream::~fstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 12); *(v2 - 3) = &off_4F6114; v2[27] = off_4F613C; *(v2 - 1) = off_4F6128; *v2 = &off_4F6090; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 52); *(_DWORD *)(a1 + 12) = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_4F0FF4; *(_DWORD *)a1 = &unk_4F0FCC; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 120) = &off_4F6E10; std::ios_base::~ios_base(a1 + 120); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (0049EA70) -------------------------------------------------------- int __thiscall std::fstream::~fstream(_DWORD *this, int *a2) { _DWORD *v3; // ecx int v4; // eax int v5; // eax int v6; // eax int v7; // eax int v8; // eax int result; // eax v3 = this + 3; v4 = *a2; *(v3 - 3) = *a2; *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 12) = a2[8]; v5 = a2[9]; *v3 = &off_4F6090; *(v3 - 1) = v5; std::filebuf::close((int)v3); std::__basic_file::~__basic_file(this + 13); this[3] = &off_4F6414; std::locale::~locale((_DWORD **)this + 10); v6 = a2[1]; *this = v6; *(_DWORD *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[6]; this[2] = a2[7]; v7 = a2[4]; this[2] = v7; *(_DWORD *)((char *)this + *(_DWORD *)(v7 - 12) + 8) = a2[5]; v8 = a2[2]; *this = v8; result = *(_DWORD *)(v8 - 12); *(_DWORD *)((char *)this + result) = a2[3]; this[1] = 0; return result; } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (0049EB10) -------------------------------------------------------- _DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // dl char v7; // dl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v10); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; v8 = this[1]; *((_BYTE *)v4 + 117) = v7; this[1] = a2[1]; a2[1] = v8; std::filebuf::operator=((int)(this + 3), (int)(a2 + 3)); return this; } // 49EB34: variable 'v10' is possibly undefined //----- (0049EBB0) -------------------------------------------------------- int __thiscall std::wfstream::open(int *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open((int)(this + 3), a2, a3) == 0; v5 = *this; if ( v4 ) return std::wios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (0049EC20) -------------------------------------------------------- int __thiscall std::wfstream::open(int *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open((int)(this + 3), a2, a3) == 0; v5 = *this; if ( v4 ) return std::wios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (0049EC90) -------------------------------------------------------- int __thiscall std::wfstream::open(int *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open((int)(this + 3), *a2, a3) == 0; v5 = *this; if ( v4 ) return std::wios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (0049ED00) -------------------------------------------------------- int __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2) { int v3; // edi std::ios_base *v4; // esi int v5; // eax __int16 v6; // dx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); v7 = this[1]; *((_BYTE *)v4 + 118) = v6; this[1] = a2[1]; a2[1] = v7; return std::wfilebuf::swap((int)(this + 3), (int)(a2 + 3)); } // 49ED24: variable 'v9' is possibly undefined //----- (0049EDA0) -------------------------------------------------------- int __fastcall std::wfstream::close(_DWORD *a1) { int result; // eax result = std::wfilebuf::close((int)(a1 + 3)); if ( !result ) return std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (0049EDE0) -------------------------------------------------------- bool __fastcall std::wfstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (0049EDF0) -------------------------------------------------------- int __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2) { _DWORD *v2; // edi int v4; // eax int v5; // eax int v6; // edx int v7; // eax int result; // eax std::ios_base *v9; // [esp+4h] [ebp-34h] char *v10; // [esp+1Ch] [ebp-1Ch] v2 = this + 31; std::ios_base::ios_base(this + 31); *((_BYTE *)this + 242) = 0; *((_WORD *)this + 120) = 0; v4 = a2[1]; this[59] = 0; this[1] = v4; v5 = *a2; this[61] = 0; v6 = *(_DWORD *)(v5 - 12); *this = &unk_4F101C; this[62] = 0; this[31] = &unk_4F1030; this[63] = 0; this[64] = 0; v10 = (char *)a2 + v6; std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); std::wios::_M_cache_locale(v2, (int)(this + 58)); this[61] = 0; v7 = *((_DWORD *)v10 + 28); *((_DWORD *)v10 + 28) = 0; this[59] = v7; *((_WORD *)this + 120) = *((_WORD *)v10 + 58); *((_BYTE *)this + 242) = v10[118]; a2[1] = 0; *this = &off_4F6150; this[31] = off_4F6178; this[2] = off_4F6164; result = std::wfilebuf::basic_filebuf((int)(this + 3), (int)(a2 + 3)); this[61] = this + 3; return result; } // 49EE6C: variable 'v9' is possibly undefined // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); //----- (0049EF30) -------------------------------------------------------- int __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3) { int v3; // esi char *v5; // eax _DWORD *v6; // ecx v3 = (int)(this + 31); std::ios_base::ios_base(this + 31); *((_BYTE *)this + 242) = 0; this[59] = 0; *((_WORD *)this + 120) = 0; this[61] = 0; this[62] = 0; this[63] = 0; this[64] = 0; *this = &unk_4F101C; this[31] = &unk_4F1030; this[1] = 0; std::wios::init(v3, 0); this[2] = &unk_4F1080; this[31] = &unk_4F1094; std::wios::init(v3, 0); *this = &off_4F6150; this[31] = off_4F6178; this[2] = off_4F6164; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init(v3, (int)(this + 3)); v5 = std::wfilebuf::open((int)(this + 3), a2, a3); v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v5 ) return std::wios::clear(v6, 0); else return std::wios::clear(v6, v6[5] | 4); } // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); //----- (0049F0A0) -------------------------------------------------------- int __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3) { int v3; // esi char *v5; // eax _DWORD *v6; // ecx v3 = (int)(this + 31); std::ios_base::ios_base(this + 31); *((_BYTE *)this + 242) = 0; this[59] = 0; *((_WORD *)this + 120) = 0; this[61] = 0; this[62] = 0; this[63] = 0; this[64] = 0; *this = &unk_4F101C; this[31] = &unk_4F1030; this[1] = 0; std::wios::init(v3, 0); this[2] = &unk_4F1080; this[31] = &unk_4F1094; std::wios::init(v3, 0); *this = &off_4F6150; this[31] = off_4F6178; this[2] = off_4F6164; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init(v3, (int)(this + 3)); v5 = std::wfilebuf::open((int)(this + 3), a2, a3); v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v5 ) return std::wios::clear(v6, 0); else return std::wios::clear(v6, v6[5] | 4); } // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); //----- (0049F210) -------------------------------------------------------- int __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3) { int v3; // esi char *v5; // eax _DWORD *v6; // ecx v3 = (int)(this + 31); std::ios_base::ios_base(this + 31); *((_BYTE *)this + 242) = 0; this[59] = 0; *((_WORD *)this + 120) = 0; this[61] = 0; this[62] = 0; this[63] = 0; this[64] = 0; *this = &unk_4F101C; this[31] = &unk_4F1030; this[1] = 0; std::wios::init(v3, 0); this[2] = &unk_4F1080; this[31] = &unk_4F1094; std::wios::init(v3, 0); *this = &off_4F6150; this[31] = off_4F6178; this[2] = off_4F6164; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init(v3, (int)(this + 3)); v5 = std::wfilebuf::open((int)(this + 3), *a2, a3); v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v5 ) return std::wios::clear(v6, 0); else return std::wios::clear(v6, v6[5] | 4); } // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); //----- (0049F380) -------------------------------------------------------- BOOL __fastcall std::wfstream::basic_fstream(int a1) { int v1; // esi v1 = a1 + 124; std::ios_base::ios_base((_DWORD *)(a1 + 124)); *(_BYTE *)(a1 + 242) = 0; *(_DWORD *)(a1 + 236) = 0; *(_WORD *)(a1 + 240) = 0; *(_DWORD *)(a1 + 244) = 0; *(_DWORD *)(a1 + 248) = 0; *(_DWORD *)(a1 + 252) = 0; *(_DWORD *)(a1 + 256) = 0; *(_DWORD *)a1 = &unk_4F101C; *(_DWORD *)(a1 + 124) = &unk_4F1030; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_4F1080; *(_DWORD *)(a1 + 124) = &unk_4F1094; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_4F6150; *(_DWORD *)(a1 + 124) = off_4F6178; *(_DWORD *)(a1 + 8) = off_4F6164; std::wfilebuf::basic_filebuf(a1 + 12); return std::wios::init(v1, a1 + 12); } // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); //----- (0049F4A0) -------------------------------------------------------- int __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // edx char v6; // al int v7; // edx int v8; // eax int v9; // eax int v10; // edx int v11; // eax int v12; // edx int result; // eax std::ios_base *v14; // [esp+4h] [ebp-34h] std::ios_base *v15; // [esp+18h] [ebp-20h] int v16; // [esp+1Ch] [ebp-1Ch] v4 = a2[2]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; this[1] = a3[1]; v16 = (int)this + *(_DWORD *)(v4 - 12); v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v16, v15, v14); std::wios::_M_cache_locale((_DWORD *)v16, v16 + 108); v5 = *((_DWORD *)v15 + 28); *((_DWORD *)v15 + 28) = 0; *(_DWORD *)(v16 + 120) = 0; *(_DWORD *)(v16 + 112) = v5; v6 = *((_BYTE *)v15 + 118); *(_WORD *)(v16 + 116) = *((_WORD *)v15 + 58); v7 = a2[5]; *(_BYTE *)(v16 + 118) = v6; v8 = a2[4]; a3[1] = 0; this[2] = v8; *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v7; v9 = a2[1]; v10 = a2[6]; *this = v9; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; this[2] = a2[7]; v11 = *a2; v12 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; this[2] = a2[9]; std::wfilebuf::basic_filebuf((int)(this + 3), (int)(a3 + 3)); result = *(_DWORD *)(*this - 12); *(int *)((char *)this + result + 120) = (int)(this + 3); return result; } // 49F4DD: variable 'v14' is possibly undefined //----- (0049F5C0) -------------------------------------------------------- int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4) { int v5; // eax int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx int v10; // eax int v11; // edx char *v12; // eax _DWORD *v13; // ecx v5 = a2[2]; *this = v5; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[3]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v6 = a2[4]; this[2] = v6; v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); *v7 = a2[5]; std::wios::init((int)v7, 0); v8 = a2[1]; v9 = a2[6]; *this = v8; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; this[2] = a2[7]; v10 = *a2; v11 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[9]; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); v12 = std::wfilebuf::open((int)(this + 3), a3, a4); v13 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v12 ) return std::wios::clear(v13, 0); else return std::wios::clear(v13, v13[5] | 4); } //----- (0049F710) -------------------------------------------------------- int __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4) { int v5; // eax int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx int v10; // eax int v11; // edx char *v12; // eax _DWORD *v13; // ecx v5 = a2[2]; *this = v5; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[3]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v6 = a2[4]; this[2] = v6; v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); *v7 = a2[5]; std::wios::init((int)v7, 0); v8 = a2[1]; v9 = a2[6]; *this = v8; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; this[2] = a2[7]; v10 = *a2; v11 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[9]; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); v12 = std::wfilebuf::open((int)(this + 3), a3, a4); v13 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v12 ) return std::wios::clear(v13, 0); else return std::wios::clear(v13, v13[5] | 4); } //----- (0049F860) -------------------------------------------------------- int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4) { int v5; // eax int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx int v10; // eax int v11; // edx char *v12; // eax _DWORD *v13; // ecx v5 = a2[2]; *this = v5; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[3]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v6 = a2[4]; this[2] = v6; v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); *v7 = a2[5]; std::wios::init((int)v7, 0); v8 = a2[1]; v9 = a2[6]; *this = v8; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; this[2] = a2[7]; v10 = *a2; v11 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[9]; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); v12 = std::wfilebuf::open((int)(this + 3), *a3, a4); v13 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v12 ) return std::wios::clear(v13, 0); else return std::wios::clear(v13, v13[5] | 4); } //----- (0049F9B0) -------------------------------------------------------- BOOL __thiscall std::wfstream::basic_fstream(int *this, int *a2) { int v3; // eax int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx int v8; // eax int v9; // edx v3 = a2[2]; *this = v3; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); v4 = a2[4]; this[2] = v4; v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); *v5 = a2[5]; std::wios::init((int)v5, 0); v6 = a2[1]; v7 = a2[6]; *this = v6; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; this[2] = a2[7]; v8 = *a2; v9 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; this[2] = a2[9]; std::wfilebuf::basic_filebuf((int)(this + 3)); return std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); } //----- (0049FAB0) -------------------------------------------------------- void __fastcall std::wfstream::~wfstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 3; *(v2 - 3) = &off_4F6150; v2[28] = off_4F6178; *(v2 - 1) = off_4F6164; *v2 = &off_4F60D0; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 13); a1[3] = &off_4F6454; std::locale::~locale((_DWORD **)a1 + 10); a1[2] = &unk_4F1080; *a1 = &unk_4F101C; a1[1] = 0; a1[31] = &off_4F6E20; std::ios_base::~ios_base((int)(a1 + 31)); operator delete(a1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (0049FB30) -------------------------------------------------------- void __fastcall std::wfstream::~wfstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 12); *(v2 - 3) = &off_4F6150; v2[28] = off_4F6178; *(v2 - 1) = off_4F6164; *v2 = &off_4F60D0; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 52); *(_DWORD *)(a1 + 12) = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_4F1080; *(_DWORD *)a1 = &unk_4F101C; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 124) = &off_4F6E20; std::ios_base::~ios_base(a1 + 124); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (0049FBB0) -------------------------------------------------------- int __thiscall std::wfstream::~wfstream(_DWORD *this, int *a2) { _DWORD *v3; // ecx int v4; // eax int v5; // eax int v6; // eax int v7; // eax int v8; // eax int result; // eax v3 = this + 3; v4 = *a2; *(v3 - 3) = *a2; *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 12) = a2[8]; v5 = a2[9]; *v3 = &off_4F60D0; *(v3 - 1) = v5; std::wfilebuf::close((int)v3); std::__basic_file::~__basic_file(this + 13); this[3] = &off_4F6454; std::locale::~locale((_DWORD **)this + 10); v6 = a2[1]; *this = v6; *(_DWORD *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[6]; this[2] = a2[7]; v7 = a2[4]; this[2] = v7; *(_DWORD *)((char *)this + *(_DWORD *)(v7 - 12) + 8) = a2[5]; v8 = a2[2]; *this = v8; result = *(_DWORD *)(v8 - 12); *(_DWORD *)((char *)this + result) = a2[3]; this[1] = 0; return result; } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (0049FC50) -------------------------------------------------------- _DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // dx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); v7 = this[1]; *((_BYTE *)v4 + 118) = v6; this[1] = a2[1]; a2[1] = v7; std::wfilebuf::operator=((int)(this + 3), (int)(a2 + 3)); return this; } // 49FC74: variable 'v9' is possibly undefined //----- (0049FCF0) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 48))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 49FCF0: using guessed type int var_1C[7]; //----- (0049FE20) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 8))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 49FE20: using guessed type int var_1C[7]; //----- (0049FF50) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 40))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 49FF50: using guessed type int var_1C[7]; //----- (004A0080) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 44))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 4A0080: using guessed type int var_1C[7]; //----- (004A01B0) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 36))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 4A01B0: using guessed type int var_1C[7]; //----- (004A02E0) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 20))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 4A02E0: using guessed type int var_1C[7]; //----- (004A0410) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 12))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 4A0410: using guessed type int var_1C[7]; //----- (004A0540) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 24))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 4A0540: using guessed type int var_1C[7]; //----- (004A0670) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 16))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 4A0670: using guessed type int var_1C[7]; //----- (004A07A0) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 28))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 4A07A0: using guessed type int var_1C[7]; //----- (004A08D0) -------------------------------------------------------- int *__thiscall std::wistream::_M_extract(int *this, int a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+2Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8[0] = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 32))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, v8, a2); if ( !v8[0] ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); return this; } // 4A08D0: using guessed type int var_1C[7]; //----- (004A0A00) -------------------------------------------------------- _DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3) { int v4; // ecx __int16 v5; // ax v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); if ( !v4 ) std::__throw_bad_cast(); v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 10); return std::wistream::get(this, a2, a3, v5); } //----- (004A0A50) -------------------------------------------------------- _DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3, __int16 a4) { int v6; // ecx int v8; // eax _DWORD *v9; // ebx __int16 *v10; // eax __int16 v11; // ax int v12; // edx __int16 v13; // ax __int16 *v14; // eax __int16 *v15; // edx int v16; // edx char v17[29]; // [esp+2Fh] [ebp-1Dh] BYREF this[1] = 0; std::wistream::sentry::sentry(v17, this, 1); if ( !v17[0] ) { v6 = this[1]; LABEL_3: if ( a3 > 0 ) *a2 = 0; if ( v6 ) return this; v8 = 4; goto LABEL_8; } v9 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v10 = (__int16 *)v9[2]; if ( v9[3] <= (unsigned int)v10 ) v11 = (*(int (__fastcall **)(_DWORD))(*v9 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); else v11 = *v10; v6 = this[1]; v12 = v6 + 1; if ( a3 <= v6 + 1 ) { LABEL_26: if ( v11 != -1 ) goto LABEL_3; LABEL_27: if ( a3 > 0 ) *a2 = 0; v8 = 6; if ( !v6 ) goto LABEL_8; LABEL_30: v8 = 2; goto LABEL_8; } if ( v11 == -1 ) goto LABEL_27; if ( a4 == v11 ) goto LABEL_3; while ( 1 ) { *a2++ = v11; this[1] = v12; v15 = (__int16 *)v9[2]; if ( (unsigned int)v15 < v9[3] ) { v13 = *v15; v9[2] = v15 + 1; if ( v13 == -1 ) goto LABEL_22; } else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v9 + 40))(v9) == 0xFFFF ) { LABEL_22: v16 = this[1]; if ( a3 > 0 ) { *a2 = 0; v8 = 2; if ( v16 ) goto LABEL_8; goto LABEL_24; } if ( !v16 ) { v8 = 6; goto LABEL_8; } goto LABEL_30; } v14 = (__int16 *)v9[2]; if ( (unsigned int)v14 >= v9[3] ) { v11 = (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9); v6 = this[1]; v12 = v6 + 1; if ( v6 + 1 >= a3 ) goto LABEL_26; } else { v6 = this[1]; v11 = *v14; v12 = v6 + 1; if ( v6 + 1 >= a3 ) goto LABEL_26; } if ( v11 == -1 ) break; if ( a4 == v11 ) { v8 = 0; goto LABEL_32; } } v8 = 2; LABEL_32: if ( a3 > 0 ) *a2 = 0; if ( !v6 ) { LABEL_24: v8 |= 4u; goto LABEL_8; } if ( v8 ) { LABEL_8: std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8); return this; } return this; } // 4A0A50: using guessed type char var_1D[29]; //----- (004A0CF0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2) { int v3; // ecx __int16 v4; // ax v3 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); if ( !v3 ) std::__throw_bad_cast(); v4 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, 10); return std::wistream::get(this, a2, v4); } //----- (004A0D40) -------------------------------------------------------- _DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2, __int16 a3) { _DWORD *v4; // ebx unsigned __int16 *v5; // eax unsigned __int16 v6; // ax __int16 *v7; // edx __int16 v8; // ax _WORD *v9; // eax unsigned __int16 *v10; // edx int v11; // eax char v13[25]; // [esp+2Fh] [ebp-19h] BYREF this[1] = 0; std::wistream::sentry::sentry(v13, this, 1); if ( v13[0] ) { v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v5 = (unsigned __int16 *)v4[2]; if ( v4[3] <= (unsigned int)v5 ) v6 = (*(int (__fastcall **)(_DWORD))(*v4 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); else v6 = *v5; if ( v6 != 0xFFFF ) { if ( v6 == a3 ) goto LABEL_17; while ( 1 ) { v10 = (unsigned __int16 *)a2[5]; if ( (unsigned int)v10 < a2[6] ) { *v10 = v6; a2[5] = v10 + 1; } else if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, v6) == 0xFFFF ) { goto LABEL_17; } ++this[1]; v7 = (__int16 *)v4[2]; if ( (unsigned int)v7 >= v4[3] ) { v8 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); } else { v8 = *v7; v4[2] = v7 + 1; } if ( v8 == -1 ) break; v9 = (_WORD *)v4[2]; v6 = (unsigned int)v9 >= v4[3] ? (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4) : *v9; if ( v6 == 0xFFFF ) break; if ( a3 == v6 ) goto LABEL_17; } } v11 = this[1] == 0 ? 6 : 2; goto LABEL_19; } LABEL_17: if ( !this[1] ) { v11 = 4; LABEL_19: std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v11); } return this; } // 4A0D40: using guessed type char var_19[25]; //----- (004A0F00) -------------------------------------------------------- _DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2) { _DWORD *v3; // ecx __int16 *v4; // edx __int16 v5; // ax int v7; // eax char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF this[1] = 0; std::wistream::sentry::sentry(v8, this, 1); if ( v8[0] ) { v3 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v4 = (__int16 *)v3[2]; if ( v3[3] <= (unsigned int)v4 ) { v5 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); } else { v5 = *v4; v3[2] = v4 + 1; } if ( v5 != -1 ) { this[1] = 1; *a2 = v5; return this; } v7 = this[1] == 0 ? 6 : 2; } else { if ( this[1] ) return this; v7 = 4; } std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7); return this; } // 4A0F00: using guessed type char var_D[13]; //----- (004A1020) -------------------------------------------------------- int __fastcall std::wistream::get(_DWORD *a1) { _DWORD *v2; // ecx unsigned __int16 *v3; // edx int result; // eax int v5; // eax char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF a1[1] = 0; std::wistream::sentry::sentry(v6, a1, 1); if ( v6[0] ) { v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v3 = (unsigned __int16 *)v2[2]; if ( v2[3] <= (unsigned int)v3 ) { result = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); } else { result = *v3; v2[2] = v3 + 1; } if ( (_WORD)result != 0xFFFF ) { a1[1] = 1; return result; } v5 = a1[1] == 0 ? 6 : 2; } else { if ( a1[1] ) return -1; v5 = 4; } std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v5); return -1; } // 4A1020: using guessed type char var_D[13]; //----- (004A1130) -------------------------------------------------------- int __fastcall std::wistream::peek(_DWORD *a1) { _DWORD *v2; // ecx unsigned __int16 *v3; // eax int result; // eax int v5; // [esp+1Ch] [ebp-20h] char v6[13]; // [esp+2Fh] [ebp-Dh] BYREF a1[1] = 0; std::wistream::sentry::sentry(v6, a1, 1); if ( !v6[0] ) return -1; v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v3 = (unsigned __int16 *)v2[2]; if ( v2[3] <= (unsigned int)v3 ) result = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); else result = *v3; if ( (_WORD)result == 0xFFFF ) { v5 = result; std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); return v5; } return result; } // 4A1130: using guessed type char var_D[13]; //----- (004A1220) -------------------------------------------------------- _DWORD *__thiscall std::wistream::read(_DWORD *this, int a2, int a3) { int v4; // eax char v6[5]; // [esp+1Fh] [ebp-9h] BYREF this[1] = 0; std::wistream::sentry::sentry(v6, this, 1); if ( !v6[0] ) return this; v4 = (*(int (__stdcall **)(int, int))(**(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120) + 32))(a2, a3); this[1] = v4; if ( a3 == v4 ) return this; std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 6); return this; } // 4A1220: using guessed type char var_9[5]; //----- (004A1310) -------------------------------------------------------- int __thiscall std::wistream::swap(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // dx int result; // eax std::ios_base *v8; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v8); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); result = this[1]; *((_BYTE *)v4 + 118) = v6; this[1] = a2[1]; a2[1] = result; return result; } // 4A1331: variable 'v8' is possibly undefined //----- (004A13A0) -------------------------------------------------------- int __fastcall std::wistream::sync(_DWORD *a1) { int v2; // ecx char v4[13]; // [esp+2Fh] [ebp-Dh] BYREF std::wistream::sentry::sentry(v4, a1, 1); if ( !v4[0] ) return -1; v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); if ( !v2 ) return -1; if ( (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) return 0; std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); return -1; } // 4A13A0: using guessed type char var_D[13]; //----- (004A1480) -------------------------------------------------------- _DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4, int a5) { char *v6; // edi int *v7; // eax int v8; // edi char v10; // [esp+3Fh] [ebp-39h] BYREF int v11[14]; // [esp+40h] [ebp-38h] BYREF std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); std::wistream::sentry::sentry(&v10, this, 1); if ( v10 ) { v6 = (char *)this + *(_DWORD *)(*this - 12); if ( (v6[20] & 5) == 0 ) { v7 = (int *)*((_DWORD *)v6 + 30); v11[7] = a5; v8 = *v7; v11[4] = a2; v11[6] = a4; v11[5] = a3; (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v11, v7, a2, a3, a4, a5, 8); if ( (v11[0] & v11[1]) == -1 ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); } } return this; } //----- (004A15D0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4) { char *v5; // edx char v7; // [esp+2Fh] [ebp-29h] BYREF int v8[10]; // [esp+30h] [ebp-28h] BYREF std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); std::wistream::sentry::sentry(&v7, this, 1); if ( v7 ) { v5 = (char *)this + *(_DWORD *)(*this - 12); if ( (v5[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( v8, *((_DWORD *)v5 + 30), a2, a3, a4, 8); if ( (v8[0] & v8[1]) == -1 ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); } } return this; } //----- (004A16F0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *a2) { char *v3; // edx char v5; // [esp+2Fh] [ebp-19h] BYREF int v6[6]; // [esp+30h] [ebp-18h] BYREF *this = -1; this[1] = -1; this[2] = 0; std::wistream::sentry::sentry(&v5, a2, 1); if ( v5 ) { v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); if ( (v3[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( v6, *((_DWORD *)v3 + 30), 0, 0, 1, 8); *this = v6[0]; this[1] = v6[1]; this[2] = v6[2]; } } return this; } //----- (004A17F0) -------------------------------------------------------- int *__fastcall std::wistream::unget(int *a1) { int v2; // eax _DWORD *v3; // ecx _DWORD *v4; // eax unsigned int v5; // eax unsigned int v6; // edx __int16 v7; // ax char v9[5]; // [esp+1Fh] [ebp-9h] BYREF v2 = *a1; a1[1] = 0; std::wios::clear( (int *)((char *)a1 + *(_DWORD *)(v2 - 12)), *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) & 0xFFFFFFFD); std::wistream::sentry::sentry(v9, a1, 1); if ( !v9[0] ) return a1; v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); if ( v3 ) { v5 = v3[2]; if ( v3[1] >= v5 ) { v7 = (*(int (__stdcall **)(int))(*v3 + 44))(0xFFFF); } else { v6 = v5 - 2; v7 = *(_WORD *)(v5 - 2); v3[2] = v6; } if ( v7 != -1 ) return a1; v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); } std::wios::clear(v4, v4[5] | 1); return a1; } // 4A17F0: using guessed type char var_9[5]; //----- (004A1910) -------------------------------------------------------- _DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2) { _DWORD *v3; // edi __int16 *v4; // eax __int16 v5; // ax signed int i; // edx __int16 *v7; // ecx int v8; // eax __int16 *v9; // ecx __int16 v11; // ax __int16 *v12; // eax char v13; // [esp+1Ah] [ebp-32h] char v14; // [esp+1Bh] [ebp-31h] unsigned int v15; // [esp+1Ch] [ebp-30h] char v16[29]; // [esp+2Fh] [ebp-1Dh] BYREF if ( a2 != 1 ) { this[1] = 0; std::wistream::sentry::sentry(v16, this, 1); if ( a2 <= 0 ) return this; v13 = v16[0]; if ( !v16[0] ) return this; v3 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v4 = (__int16 *)v3[2]; if ( (unsigned int)v4 >= v3[3] ) v5 = (*(int (__fastcall **)(_DWORD))(*v3 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); else v5 = *v4; v14 = 0; LABEL_7: for ( i = this[1]; a2 <= i; i = 0x80000000 ) { LABEL_14: if ( a2 != 0x7FFFFFFF ) { if ( v14 ) this[1] = 0x7FFFFFFF; if ( v5 != -1 ) return this; LABEL_29: std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); return this; } if ( v5 == -1 ) goto LABEL_27; this[1] = 0x80000000; v14 = v13; } while ( v5 != -1 ) { v7 = (__int16 *)v3[2]; v15 = v3[3]; v8 = (int)(v15 - (_DWORD)v7) >> 1; if ( v8 > a2 - i ) v8 = a2 - i; if ( v8 <= 1 ) { this[1] = i + 1; if ( v15 <= (unsigned int)v7 ) { v11 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); } else { v11 = *v7; v3[2] = v7 + 1; } if ( v11 != -1 ) { v12 = (__int16 *)v3[2]; if ( (unsigned int)v12 < v3[3] ) { v5 = *v12; i = this[1]; goto LABEL_7; } LABEL_30: v5 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); i = this[1]; goto LABEL_7; } break; } v9 = &v7[v8]; i += v8; v3[2] = v9; this[1] = i; if ( v15 <= (unsigned int)v9 ) goto LABEL_30; v5 = *v9; if ( a2 <= i ) goto LABEL_14; } LABEL_27: if ( v14 ) this[1] = 0x7FFFFFFF; goto LABEL_29; } return std::wistream::ignore(this); } // 4DBC5C: using guessed type int __stdcall std::wistream::ignore(_DWORD); // 4A1910: using guessed type char var_1D[29]; //----- (004A1AB0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2, wchar_t C) { _DWORD *v4; // ebp __int16 *v5; // eax __int16 v6; // ax signed int i; // edx const wchar_t *S; // ecx int N; // edi wchar_t *v10; // eax int v11; // edx __int16 *v12; // eax int v13; // edi unsigned int v15; // eax wchar_t v16; // ax __int16 *v17; // eax char v18; // [esp+16h] [ebp-36h] char v19; // [esp+17h] [ebp-35h] unsigned int v20; // [esp+1Ch] [ebp-30h] char v21[29]; // [esp+2Fh] [ebp-1Dh] BYREF if ( C == 0xFFFF ) return std::wistream::ignore(this, a2); this[1] = 0; std::wistream::sentry::sentry(v21, this, 1); if ( a2 <= 0 ) return this; v19 = v21[0]; if ( !v21[0] ) return this; v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v5 = (__int16 *)v4[2]; if ( v4[3] <= (unsigned int)v5 ) v6 = (*(int (__fastcall **)(_DWORD))(*v4 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); else v6 = *v5; v18 = 0; for ( i = this[1]; ; i = 0x80000000 ) { LABEL_7: if ( a2 > i ) { while ( v6 != -1 ) { if ( v6 == C ) { if ( a2 == 0x7FFFFFFF ) { if ( !v18 ) goto LABEL_31; goto LABEL_26; } if ( v18 ) goto LABEL_26; goto LABEL_29; } S = (const wchar_t *)v4[2]; v20 = v4[3]; N = (int)(v20 - (_DWORD)S) >> 1; if ( N > a2 - i ) N = a2 - i; if ( N <= 1 ) { this[1] = ++i; if ( v20 <= (unsigned int)S ) { v16 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); } else { v16 = *S; v4[2] = S + 1; } if ( v16 != 0xFFFF ) { v17 = (__int16 *)v4[2]; if ( (unsigned int)v17 < v4[3] ) { v6 = *v17; i = this[1]; goto LABEL_7; } LABEL_42: v6 = (*(int (__fastcall **)(_DWORD *, signed int))(*v4 + 36))(v4, i); i = this[1]; goto LABEL_7; } break; } v10 = wmemchr(S, C, N); v11 = v4[2]; if ( v10 ) N = ((int)v10 - v11) >> 1; v12 = (__int16 *)(v11 + 2 * N); v13 = this[1] + N; v4[2] = v12; i = v13; this[1] = v13; if ( v4[3] <= (unsigned int)v12 ) goto LABEL_42; v6 = *v12; if ( a2 <= v13 ) goto LABEL_17; } LABEL_39: if ( v18 ) this[1] = 0x7FFFFFFF; goto LABEL_41; } LABEL_17: if ( a2 != 0x7FFFFFFF ) { if ( v18 ) goto LABEL_26; goto LABEL_27; } if ( v6 == -1 ) goto LABEL_39; if ( v6 == C ) break; this[1] = 0x80000000; v18 = v19; } if ( !v18 ) goto LABEL_30; LABEL_26: this[1] = 0x7FFFFFFF; LABEL_27: if ( v6 == -1 ) { LABEL_41: std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); return this; } if ( C != v6 ) return this; LABEL_29: i = this[1]; LABEL_30: if ( i != 0x7FFFFFFF ) LABEL_31: this[1] = i + 1; v15 = v4[2]; if ( v15 >= v4[3] ) { (*(void (__fastcall **)(_DWORD *))(*v4 + 40))(v4); return this; } v4[2] = v15 + 2; return this; } // 4A1CE5: variable 'i' is possibly undefined // 4DB658: using guessed type int __stdcall std::wistream::ignore(_DWORD, _DWORD); // 4A1AB0: using guessed type char var_1D[29]; //----- (004A1D40) -------------------------------------------------------- _DWORD *__fastcall std::wistream::ignore(_DWORD *a1) { _DWORD *v2; // ecx __int16 *v3; // edx __int16 v4; // ax char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF a1[1] = 0; std::wistream::sentry::sentry(v6, a1, 1); if ( !v6[0] ) return a1; v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v3 = (__int16 *)v2[2]; if ( v2[3] <= (unsigned int)v3 ) { v4 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); } else { v4 = *v3; v2[2] = v3 + 1; } if ( v4 != -1 ) { a1[1] = 1; return a1; } std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); return a1; } // 4A1D40: using guessed type char var_D[13]; //----- (004A1E40) -------------------------------------------------------- int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) { char *v4; // ecx int result; // eax _DWORD *v6; // ebx unsigned __int16 *v7; // eax unsigned __int16 v8; // ax __int16 v9; // ax unsigned __int16 *v10; // eax __int16 *v11; // edx int v12; // [esp+1Ch] [ebp-1Ch] *this = 0; v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); result = *((_DWORD *)v4 + 5); if ( result ) return std::wios::clear(v4, result | 4); result = *((_DWORD *)v4 + 28); if ( !result ) { if ( a3 || (v4[13] & 0x10) == 0 ) { *this = 1; return result; } goto LABEL_5; } std::wostream::flush(*((_DWORD **)v4 + 28)); v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); if ( !a3 && (v4[13] & 0x10) != 0 ) { LABEL_5: v6 = (_DWORD *)*((_DWORD *)v4 + 30); v7 = (unsigned __int16 *)v6[2]; if ( v6[3] <= (unsigned int)v7 ) { v8 = (*(int (__fastcall **)(_DWORD))(*v6 + 36))(*((_DWORD *)v4 + 30)); v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); } else { v8 = *v7; } v12 = *((_DWORD *)v4 + 31); if ( !v12 ) std::__throw_bad_cast(); if ( v8 == 0xFFFF ) { LABEL_18: result = *((_DWORD *)v4 + 5) | 2; return std::wios::clear(v4, result | 4); } while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, v8) ) { v11 = (__int16 *)v6[2]; if ( (unsigned int)v11 < v6[3] ) { v9 = *v11; v6[2] = v11 + 1; if ( v9 == -1 ) goto LABEL_17; } else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == 0xFFFF ) { goto LABEL_17; } v10 = (unsigned __int16 *)v6[2]; if ( (unsigned int)v10 >= v6[3] ) v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); else v8 = *v10; if ( v8 == 0xFFFF ) { LABEL_17: v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); goto LABEL_18; } } v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); } result = *((_DWORD *)v4 + 5); if ( result ) return std::wios::clear(v4, result | 4); *this = 1; return result; } //----- (004A2020) -------------------------------------------------------- int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) { char *v4; // ecx int result; // eax _DWORD *v6; // ebx unsigned __int16 *v7; // eax unsigned __int16 v8; // ax __int16 v9; // ax unsigned __int16 *v10; // eax __int16 *v11; // edx int v12; // [esp+1Ch] [ebp-1Ch] *this = 0; v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); result = *((_DWORD *)v4 + 5); if ( result ) return std::wios::clear(v4, result | 4); result = *((_DWORD *)v4 + 28); if ( !result ) { if ( a3 || (v4[13] & 0x10) == 0 ) { *this = 1; return result; } goto LABEL_5; } std::wostream::flush(*((_DWORD **)v4 + 28)); v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); if ( !a3 && (v4[13] & 0x10) != 0 ) { LABEL_5: v6 = (_DWORD *)*((_DWORD *)v4 + 30); v7 = (unsigned __int16 *)v6[2]; if ( v6[3] <= (unsigned int)v7 ) { v8 = (*(int (__fastcall **)(_DWORD))(*v6 + 36))(*((_DWORD *)v4 + 30)); v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); } else { v8 = *v7; } v12 = *((_DWORD *)v4 + 31); if ( !v12 ) std::__throw_bad_cast(); if ( v8 == 0xFFFF ) { LABEL_18: result = *((_DWORD *)v4 + 5) | 2; return std::wios::clear(v4, result | 4); } while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, v8) ) { v11 = (__int16 *)v6[2]; if ( (unsigned int)v11 < v6[3] ) { v9 = *v11; v6[2] = v11 + 1; if ( v9 == -1 ) goto LABEL_17; } else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == 0xFFFF ) { goto LABEL_17; } v10 = (unsigned __int16 *)v6[2]; if ( (unsigned int)v10 >= v6[3] ) v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); else v8 = *v10; if ( v8 == 0xFFFF ) { LABEL_17: v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); goto LABEL_18; } } v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); } result = *((_DWORD *)v4 + 5); if ( result ) return std::wios::clear(v4, result | 4); *this = 1; return result; } //----- (004A2200) -------------------------------------------------------- _DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3) { int v4; // ecx wchar_t v5; // ax v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); if ( !v4 ) std::__throw_bad_cast(); v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 10); return std::wistream::getline(this, S1, a3, v5); } //----- (004A2250) -------------------------------------------------------- _DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3, wchar_t C) { int v5; // esi int v6; // eax int v8; // esi wchar_t *v9; // eax wchar_t v10; // ax int v11; // ebx size_t v12; // edi wchar_t *v13; // eax int v14; // edx int N; // ebx int v16; // edi wchar_t *v17; // edx const wchar_t *S; // ecx wchar_t v19; // ax wchar_t *v20; // eax unsigned int v21; // eax int v22; // esi int v23; // [esp+18h] [ebp-44h] unsigned int v24; // [esp+1Ch] [ebp-40h] wchar_t *v25; // [esp+24h] [ebp-38h] char v26[29]; // [esp+3Fh] [ebp-1Dh] BYREF this[1] = 0; std::wistream::sentry::sentry(v26, this, 1); if ( !v26[0] ) { v5 = this[1]; v23 = v5; if ( a3 > 0 ) { *S1 = 0; if ( !v5 ) { LABEL_4: v6 = 4; goto LABEL_5; } return this; } goto LABEL_6; } v8 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); v9 = *(wchar_t **)(v8 + 8); if ( (unsigned int)v9 >= *(_DWORD *)(v8 + 12) ) v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v8 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); else v10 = *v9; v11 = this[1]; v23 = v11 + 1; if ( v11 + 1 < a3 ) { if ( v10 != 0xFFFF ) { if ( v10 == C ) { LABEL_42: v21 = *(_DWORD *)(v8 + 8); this[1] = v23; if ( v21 >= *(_DWORD *)(v8 + 12) ) { (*(void (__fastcall **)(int))(*(_DWORD *)v8 + 40))(v8); v22 = this[1]; v23 = v22; if ( a3 > 0 ) { *S1 = 0; if ( !v22 ) goto LABEL_4; return this; } } else { *(_DWORD *)(v8 + 8) = v21 + 2; if ( a3 > 0 ) { *S1 = 0; if ( !v23 ) goto LABEL_4; return this; } } LABEL_6: if ( !v23 ) goto LABEL_4; return this; } while ( 1 ) { S = *(const wchar_t **)(v8 + 8); v24 = *(_DWORD *)(v8 + 12); N = a3 - v11 - 1; if ( N > (int)(v24 - (_DWORD)S) >> 1 ) N = (int)(v24 - (_DWORD)S) >> 1; if ( N > 1 ) break; v25 = S1 + 1; *S1 = v10; this[1] = v23; if ( v24 <= (unsigned int)S ) { v19 = (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 40))(v8); } else { v19 = *S; *(_DWORD *)(v8 + 8) = S + 1; } if ( v19 == 0xFFFF ) { v11 = this[1]; goto LABEL_36; } v20 = *(wchar_t **)(v8 + 8); if ( (unsigned int)v20 >= *(_DWORD *)(v8 + 12) ) { v10 = (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 36))(v8); v11 = this[1]; ++S1; goto LABEL_18; } v11 = this[1]; v10 = *v20; ++S1; v23 = v11 + 1; if ( v11 + 1 >= a3 ) goto LABEL_29; LABEL_19: if ( v10 == 0xFFFF ) { v25 = S1; LABEL_36: v6 = 2; if ( a3 > 0 ) *v25 = 0; LABEL_38: if ( !v11 ) v6 |= 4u; goto LABEL_5; } if ( C == v10 ) goto LABEL_42; } v12 = N; v13 = wmemchr(S, C, N); v14 = *(_DWORD *)(v8 + 8); if ( !v13 || (N = ((int)v13 - v14) >> 1, (v12 = N) != 0) ) { wmemcpy(S1, *(const wchar_t **)(v8 + 8), v12); v14 = *(_DWORD *)(v8 + 8); } v16 = 2 * v12; v11 = this[1] + N; S1 = (wchar_t *)((char *)S1 + v16); v17 = (wchar_t *)(v16 + v14); *(_DWORD *)(v8 + 8) = v17; this[1] = v11; if ( *(_DWORD *)(v8 + 12) <= (unsigned int)v17 ) { v10 = (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 36))(v8); v11 = this[1]; } else { v10 = *v17; } LABEL_18: v23 = v11 + 1; if ( v11 + 1 >= a3 ) goto LABEL_29; goto LABEL_19; } if ( a3 > 0 ) { LABEL_53: *S1 = 0; v6 = 2; if ( !v11 ) v6 = 6; goto LABEL_5; } LABEL_56: v6 = 2; goto LABEL_38; } LABEL_29: if ( v10 == 0xFFFF ) { v11 = this[1]; if ( a3 > 0 ) goto LABEL_53; goto LABEL_56; } if ( v10 == C ) goto LABEL_42; v11 = this[1]; if ( a3 <= 0 ) { v6 = 4; goto LABEL_38; } *S1 = 0; v6 = 4; LABEL_5: std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v6); return this; } // 4A25DA: control flows out of bounds to 4DB5C4 // 4DB5BC: using guessed type int __stdcall std::wistream::getline(_DWORD, _DWORD, _DWORD); // 4A2250: using guessed type char var_1D[29]; //----- (004A25F0) -------------------------------------------------------- int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2) { int v3; // eax _DWORD *v4; // ecx _DWORD *v5; // eax unsigned int v6; // edx __int16 v7; // ax char v9[9]; // [esp+1Fh] [ebp-9h] BYREF v3 = *this; this[1] = 0; std::wios::clear( (int *)((char *)this + *(_DWORD *)(v3 - 12)), *(int *)((char *)this + *(_DWORD *)(v3 - 12) + 20) & 0xFFFFFFFD); std::wistream::sentry::sentry(v9, this, 1); if ( !v9[0] ) return this; v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v4 ) { v6 = v4[2]; if ( v4[1] < v6 && (v7 = *(_WORD *)(v6 - 2), a2 == v7) ) v4[2] = v6 - 2; else v7 = (*(int (__stdcall **)(_DWORD))(*v4 + 44))(a2); if ( v7 != -1 ) return this; v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); } std::wios::clear(v5, v5[5] | 1); return this; } // 4A25F0: using guessed type char var_9[9]; //----- (004A2720) -------------------------------------------------------- int __thiscall std::wistream::readsome(_DWORD *this, int a2, int a3) { _DWORD *v4; // ecx int v5; // eax int v6; // edx int v7; // eax int result; // eax char v9[5]; // [esp+1Fh] [ebp-9h] BYREF this[1] = 0; std::wistream::sentry::sentry(v9, this, 1); if ( !v9[0] ) return this[1]; v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v5 = v4[3]; v6 = v4[2]; if ( v6 == v5 ) v7 = (*(int (__fastcall **)(_DWORD *))(*v4 + 28))(v4); else v7 = (v5 - v6) >> 1; if ( v7 <= 0 ) { if ( v7 == -1 ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); return this[1]; } if ( v7 > a3 ) v7 = a3; result = (*(int (__stdcall **)(int, int))(**(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120) + 32))(a2, v7); this[1] = result; return result; } // 4A2720: using guessed type char var_9[5]; //----- (004A2850) -------------------------------------------------------- int __thiscall std::wistream::basic_istream(_DWORD *this, int *a2) { int v3; // eax int v4; // eax int v5; // esi std::ios_base *v6; // esi int v7; // eax int result; // eax std::ios_base *v9; // [esp+4h] [ebp-34h] _DWORD *v10; // [esp+1Ch] [ebp-1Ch] v10 = this + 2; std::ios_base::ios_base(this + 2); *((_BYTE *)this + 126) = 0; *((_WORD *)this + 62) = 0; v3 = a2[1]; this[30] = 0; this[1] = v3; v4 = *a2; this[32] = 0; v5 = *(_DWORD *)(v4 - 12); *this = &off_4F618C; this[33] = 0; v6 = (std::ios_base *)((char *)a2 + v5); this[2] = off_4F61A0; this[34] = 0; this[35] = 0; std::ios_base::_M_move((int)v10, v6, v9); std::wios::_M_cache_locale(v10, (int)(this + 29)); this[32] = 0; v7 = *((_DWORD *)v6 + 28); *((_DWORD *)v6 + 28) = 0; this[30] = v7; *((_WORD *)this + 62) = *((_WORD *)v6 + 58); result = *((unsigned __int8 *)v6 + 118); a2[1] = 0; *((_BYTE *)this + 126) = result; return result; } // 4A28C4: variable 'v9' is possibly undefined // 4F618C: using guessed type int (*off_4F618C)(); // 4F61A0: using guessed type int (*off_4F61A0[2])(); //----- (004A2930) -------------------------------------------------------- BOOL __thiscall std::wistream::basic_istream(_DWORD *this, int a2) { int v2; // esi v2 = (int)(this + 2); std::ios_base::ios_base(this + 2); this[30] = 0; *((_WORD *)this + 62) = 0; *((_BYTE *)this + 126) = 0; this[32] = 0; this[33] = 0; this[34] = 0; this[35] = 0; *this = &off_4F618C; this[2] = off_4F61A0; this[1] = 0; return std::wios::init(v2, a2); } // 4F618C: using guessed type int (*off_4F618C)(); // 4F61A0: using guessed type int (*off_4F61A0[2])(); //----- (004A29D0) -------------------------------------------------------- BOOL __fastcall std::wistream::basic_istream(int a1) { int v1; // esi v1 = a1 + 8; std::ios_base::ios_base((_DWORD *)(a1 + 8)); *(_DWORD *)(a1 + 120) = 0; *(_WORD *)(a1 + 124) = 0; *(_BYTE *)(a1 + 126) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; *(_DWORD *)(a1 + 136) = 0; *(_DWORD *)(a1 + 140) = 0; *(_DWORD *)a1 = &off_4F618C; *(_DWORD *)(a1 + 8) = off_4F61A0; *(_DWORD *)(a1 + 4) = 0; return std::wios::init(v1, 0); } // 4F618C: using guessed type int (*off_4F618C)(); // 4F61A0: using guessed type int (*off_4F61A0[2])(); //----- (004A2A70) -------------------------------------------------------- int __thiscall std::wistream::basic_istream(int *this, int *a2, _DWORD *a3) { int v3; // eax int v4; // ebx int v5; // edx int v6; // ebx std::ios_base *v7; // esi int v8; // eax int result; // eax std::ios_base *v10; // [esp+4h] [ebp-18h] v3 = *a2; v4 = a2[1]; v5 = *(_DWORD *)(*a2 - 12); *this = *a2; *(int *)((char *)this + v5) = v4; this[1] = a3[1]; v6 = (int)this + *(_DWORD *)(v3 - 12); v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v6, v7, v10); std::wios::_M_cache_locale((_DWORD *)v6, v6 + 108); v8 = *((_DWORD *)v7 + 28); *((_DWORD *)v7 + 28) = 0; *(_DWORD *)(v6 + 112) = v8; *(_WORD *)(v6 + 116) = *((_WORD *)v7 + 58); result = *((unsigned __int8 *)v7 + 118); *(_DWORD *)(v6 + 120) = 0; *(_BYTE *)(v6 + 118) = result; a3[1] = 0; return result; } // 4A2AA0: variable 'v10' is possibly undefined //----- (004A2AF0) -------------------------------------------------------- BOOL __thiscall std::wistream::basic_istream(int *this, int *a2, int a3) { int v3; // eax int v4; // ebx int v5; // edx v3 = *a2; v4 = a2[1]; v5 = *(_DWORD *)(*a2 - 12); *this = *a2; *(int *)((char *)this + v5) = v4; this[1] = 0; return std::wios::init((int)this + *(_DWORD *)(v3 - 12), a3); } //----- (004A2B30) -------------------------------------------------------- BOOL __thiscall std::wistream::basic_istream(int *this, int *a2) { int v2; // eax int v3; // ebx int v4; // edx v2 = *a2; v3 = a2[1]; v4 = *(_DWORD *)(*a2 - 12); *this = *a2; *(int *)((char *)this + v4) = v3; this[1] = 0; return std::wios::init((int)this + *(_DWORD *)(v2 - 12), 0); } //----- (004A2B60) -------------------------------------------------------- void __fastcall std::wistream::~wistream(char *a1) { _DWORD *v2; // ecx v2 = a1 + 8; *(v2 - 2) = &off_4F618C; *(v2 - 1) = 0; *v2 = &off_4F6E20; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 4F618C: using guessed type int (*off_4F618C)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004A2B90) -------------------------------------------------------- void __fastcall std::wistream::~wistream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_4F618C; v1 = a1 + 2; *(v1 - 1) = 0; *v1 = &off_4F6E20; std::ios_base::~ios_base((int)v1); } // 4F618C: using guessed type int (*off_4F618C)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004A2BB0) -------------------------------------------------------- int __thiscall std::wistream::~wistream(int *this, int *a2) { int v2; // eax int result; // eax v2 = *a2; *this = *a2; result = *(_DWORD *)(v2 - 12); *(int *)((char *)this + result) = a2[1]; this[1] = 0; return result; } //----- (004A2BD0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // dx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); v7 = this[1]; *((_BYTE *)v4 + 118) = v6; this[1] = a2[1]; a2[1] = v7; return this; } // 4A2BF1: variable 'v9' is possibly undefined //----- (004A2C60) -------------------------------------------------------- int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (004A2C70) -------------------------------------------------------- char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004A2C90) -------------------------------------------------------- char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004A2CB0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2) { char *v3; // ecx int v4; // eax char v6; // [esp+1Eh] [ebp-Eh] BYREF char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( !v6 ) { if ( !a2 ) { v4 = 4; v3 = (char *)this + *(_DWORD *)(*this - 12); goto LABEL_9; } return this; } v3 = (char *)this + *(_DWORD *)(*this - 12); if ( !a2 ) { v4 = 4; goto LABEL_9; } if ( !std::__copy_streambufs_eof>(*((_DWORD **)v3 + 30), a2, v7) ) { v3 = (char *)this + *(_DWORD *)(*this - 12); v4 = v7[0] == 0 ? 4 : 6; goto LABEL_9; } if ( !v7[0] ) return this; v4 = 2; v3 = (char *)this + *(_DWORD *)(*this - 12); LABEL_9: std::wios::clear(v3, *((_DWORD *)v3 + 5) | v4); return this; } // 4A2CB0: using guessed type char var_D[13]; //----- (004A2E30) -------------------------------------------------------- int *__thiscall std::wistream::operator>>(int *this, _DWORD *a2) { int v3; // eax char *v4; // esi int v5; // ecx char v7; // [esp+27h] [ebp-21h] BYREF int v8; // [esp+28h] [ebp-20h] BYREF int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( !v7 ) return this; v3 = *this; v8 = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, &v8, v9); *a2 = v9[0]; if ( !v8 ) return this; std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8); return this; } // 4A2E30: using guessed type int var_1C[7]; //----- (004A2F90) -------------------------------------------------------- int *__thiscall std::wistream::operator>>(int *this, _WORD *a2) { int v3; // eax char *v4; // esi int v5; // ecx int v6; // eax char v8; // [esp+27h] [ebp-21h] BYREF int v9; // [esp+28h] [ebp-20h] BYREF int v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v8, this, 0); if ( !v8 ) return this; v3 = *this; v9 = 0; v4 = (char *)this + *(_DWORD *)(v3 - 12); v5 = *((_DWORD *)v4 + 33); if ( !v5 ) std::__throw_bad_cast(); (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( *((_DWORD *)v4 + 30), 0xFFFF, 0, 0xFFFF, v4, &v9, v10); v6 = v9; if ( v10[0] >= -32768 ) { if ( v10[0] > 0x7FFF ) { v9 |= 4u; v6 = v9; *a2 = 0x7FFF; goto LABEL_9; } *a2 = v10[0]; } else { v6 = v9 | 4; v9 |= 4u; *a2 = 0x8000; } if ( !v6 ) return this; LABEL_9: std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v6); return this; } // 4A305B: conditional instruction was optimized away because eax.4>=4u // 4A2F90: using guessed type int var_1C[7]; //----- (004A3130) -------------------------------------------------------- int *__thiscall std::wostream::put(int *this, unsigned __int16 a2) { _DWORD *v3; // ecx unsigned __int16 *v4; // eax unsigned __int16 v5; // si char *v6; // esi int v7; // ecx int v9; // [esp+18h] [ebp-20h] BYREF _DWORD *v10; // [esp+1Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v9, this); if ( (_BYTE)v9 ) { v3 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v4 = (unsigned __int16 *)v3[5]; if ( (unsigned int)v4 >= v3[6] ) { v5 = (*(int (__stdcall **)(_DWORD))(*v3 + 52))(a2); } else { *v4 = a2; v5 = a2; v3[5] = v4 + 1; } if ( v5 == 0xFFFF ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } v6 = (char *)v10 + *(_DWORD *)(*v10 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::wios::clear( (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); } } return this; } //----- (004A3280) -------------------------------------------------------- int __thiscall std::wostream::swap(_DWORD *this, _DWORD *a2) { int v2; // ebx std::ios_base *v3; // esi int v4; // eax __int16 v5; // dx int result; // eax std::ios_base *v7; // [esp+4h] [ebp-18h] v2 = (int)this + *(_DWORD *)(*this - 12); v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v2, v3, v7); std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); std::wios::_M_cache_locale(v3, (int)v3 + 108); v4 = *(_DWORD *)(v2 + 112); *(_DWORD *)(v2 + 112) = *((_DWORD *)v3 + 28); v5 = *((_WORD *)v3 + 58); *((_DWORD *)v3 + 28) = v4; LOWORD(v4) = *(_WORD *)(v2 + 116); *(_WORD *)(v2 + 116) = v5; LOBYTE(v5) = *((_BYTE *)v3 + 118); *((_WORD *)v3 + 58) = v4; result = *(unsigned __int8 *)(v2 + 118); *(_BYTE *)(v2 + 118) = v5; *((_BYTE *)v3 + 118) = result; return result; } // 4A3298: variable 'v7' is possibly undefined //----- (004A3300) -------------------------------------------------------- _DWORD *__fastcall std::wostream::flush(_DWORD *a1) { int v2; // ecx v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); if ( !v2 || (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) return a1; std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); return a1; } //----- (004A33B0) -------------------------------------------------------- _DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) { char *v6; // eax int *v7; // eax int v8; // edi int v10[14]; // [esp+40h] [ebp-38h] BYREF v6 = (char *)this + *(_DWORD *)(*this - 12); if ( (v6[20] & 5) != 0 ) return this; v7 = (int *)*((_DWORD *)v6 + 30); v10[4] = a2; v10[5] = a3; v10[7] = a5; v8 = *v7; v10[6] = a4; (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v10, v7, a2, a3, a4, a5, 16); if ( (v10[0] & v10[1]) != -1 ) return this; std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); return this; } //----- (004A34D0) -------------------------------------------------------- _DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4) { char *v5; // edx int v7[10]; // [esp+20h] [ebp-28h] BYREF v5 = (char *)this + *(_DWORD *)(*this - 12); if ( (v5[20] & 5) != 0 ) return this; (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( v7, *((_DWORD *)v5 + 30), a2, a3, a4, 16); if ( (v7[0] & v7[1]) != -1 ) return this; std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); return this; } //----- (004A35C0) -------------------------------------------------------- _DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *a2) { int v3; // eax char *v4; // edx int v6[6]; // [esp+20h] [ebp-18h] BYREF *this = -1; this[1] = -1; v3 = *a2; this[2] = 0; v4 = (char *)a2 + *(_DWORD *)(v3 - 12); if ( (v4[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v4 + 30) + 16))( v6, *((_DWORD *)v4 + 30), 0, 0, 1, 16); *this = v6[0]; this[1] = v6[1]; this[2] = v6[2]; } return this; } //----- (004A36B0) -------------------------------------------------------- int *__thiscall std::wostream::write(int *this, int a2, int a3) { char *v4; // esi int v5; // ecx int v7; // [esp+18h] [ebp-10h] BYREF _DWORD *v8; // [esp+1Ch] [ebp-Ch] std::wostream::sentry::sentry(&v7, this); if ( (_BYTE)v7 && a3 != (*(int (__stdcall **)(int, int))(**(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120) + 48))(a2, a3) ) { std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } v4 = (char *)v8 + *(_DWORD *)(*v8 - 12); if ( (v4[13] & 0x20) != 0 && !std::uncaught_exception() ) { v5 = *((_DWORD *)v4 + 30); if ( v5 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) == -1 ) std::wios::clear( (_DWORD *)((char *)v8 + *(_DWORD *)(*v8 - 12)), *(_DWORD *)((char *)v8 + *(_DWORD *)(*v8 - 12) + 20) | 1); } } return this; } //----- (004A37E0) -------------------------------------------------------- int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2) { int v3; // eax char *v4; // ecx int result; // eax *(_BYTE *)this = 0; v3 = *a2; this[1] = a2; v4 = (char *)a2 + *(_DWORD *)(v3 - 12); result = *((_DWORD *)v4 + 5); if ( *((_DWORD *)v4 + 28) ) { if ( result ) return std::wios::clear(v4, result | 4); std::wostream::flush(*((_DWORD **)v4 + 28)); result = *(int *)((char *)a2 + *(_DWORD *)(*a2 - 12) + 20); v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); } if ( result ) return std::wios::clear(v4, result | 4); *(_BYTE *)this = 1; return result; } //----- (004A3840) -------------------------------------------------------- int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2) { int v3; // eax char *v4; // ecx int result; // eax *(_BYTE *)this = 0; v3 = *a2; this[1] = a2; v4 = (char *)a2 + *(_DWORD *)(v3 - 12); result = *((_DWORD *)v4 + 5); if ( *((_DWORD *)v4 + 28) ) { if ( result ) return std::wios::clear(v4, result | 4); std::wostream::flush(*((_DWORD **)v4 + 28)); result = *(int *)((char *)a2 + *(_DWORD *)(*a2 - 12) + 20); v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); } if ( result ) return std::wios::clear(v4, result | 4); *(_BYTE *)this = 1; return result; } //----- (004A38A0) -------------------------------------------------------- char __fastcall std::wostream::sentry::~sentry(int a1) { int v1; // eax int v3; // ebx int v4; // ecx _DWORD *v5; // ecx v1 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); if ( (*(_BYTE *)(v1 + 13) & 0x20) != 0 ) { v3 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); LOBYTE(v1) = std::uncaught_exception(); if ( !(_BYTE)v1 ) { v4 = *(_DWORD *)(v3 + 120); if ( v4 ) { v1 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); if ( v1 == -1 ) { v5 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); LOBYTE(v1) = std::wios::clear(v5, v5[5] | 1); } } } } return v1; } //----- (004A3910) -------------------------------------------------------- char __fastcall std::wostream::sentry::~sentry(int a1) { int v1; // eax int v3; // ebx int v4; // ecx _DWORD *v5; // ecx v1 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); if ( (*(_BYTE *)(v1 + 13) & 0x20) != 0 ) { v3 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); LOBYTE(v1) = std::uncaught_exception(); if ( !(_BYTE)v1 ) { v4 = *(_DWORD *)(v3 + 120); if ( v4 ) { v1 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); if ( v1 == -1 ) { v5 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); LOBYTE(v1) = std::wios::clear(v5, v5[5] | 1); } } } } return v1; } //----- (004A3980) -------------------------------------------------------- int __thiscall std::wostream::_M_write(_DWORD *this, int a2, int a3) { int v4; // ecx int result; // eax v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); result = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 48))(v4, a2, a3); if ( a3 != result ) return std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); return result; } //----- (004A39D0) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, int a2) { char *v3; // esi int v4; // edi char v5; // dl char *v6; // esi int v7; // ecx int v9; // ecx unsigned __int16 v10; // ax int v11; // edx unsigned __int16 v12; // [esp+2Ah] [ebp-2Eh] int v13; // [esp+38h] [ebp-20h] BYREF _DWORD *v14; // [esp+3Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v13, this); if ( (_BYTE)v13 ) { v3 = (char *)this + *(_DWORD *)(*this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[118] ) { v12 = *((_WORD *)v3 + 58); } else { v9 = *((_DWORD *)v3 + 31); if ( !v9 ) std::__throw_bad_cast(); v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); v11 = *this; *((_WORD *)v3 + 58) = v10; v3[118] = 1; v12 = v10; v3 = (char *)this + *(_DWORD *)(v11 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int))(*(_DWORD *)v4 + 36))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v12, a2); if ( v5 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } v6 = (char *)v14 + *(_DWORD *)(*v14 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::wios::clear( (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); } } return this; } // 4A3A4F: variable 'v5' is possibly undefined //----- (004A3B70) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8 a2) { char *v3; // esi unsigned __int16 v4; // ax char v5; // dl char *v6; // esi int v7; // ecx int v9; // ecx int v10; // edx int v11; // [esp+2Ch] [ebp-2Ch] int v12; // [esp+38h] [ebp-20h] BYREF _DWORD *v13; // [esp+3Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v12, this); if ( (_BYTE)v12 ) { v3 = (char *)this + *(_DWORD *)(*this - 12); v11 = *((_DWORD *)v3 + 32); if ( !v11 ) std::__throw_bad_cast(); if ( v3[118] ) { v4 = *((_WORD *)v3 + 58); } else { v9 = *((_DWORD *)v3 + 31); if ( !v9 ) std::__throw_bad_cast(); v4 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); v10 = *this; *((_WORD *)v3 + 58) = v4; v3[118] = 1; v3 = (char *)this + *(_DWORD *)(v10 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, _DWORD))(*(_DWORD *)v11 + 8))( v11, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v4, a2); if ( v5 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } v6 = (char *)v13 + *(_DWORD *)(*v13 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::wios::clear( (_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12)), *(_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12) + 20) | 1); } } return this; } // 4A3C00: variable 'v5' is possibly undefined //----- (004A3D20) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, double a2) { char *v3; // esi int v4; // edi unsigned __int16 v5; // ax char v6; // dl char *v7; // esi int v8; // ecx int v10; // ecx int v11; // edx int v12; // [esp+38h] [ebp-20h] BYREF _DWORD *v13; // [esp+3Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v12, this); if ( (_BYTE)v12 ) { v3 = (char *)this + *(_DWORD *)(*this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[118] ) { v5 = *((_WORD *)v3 + 58); } else { v10 = *((_DWORD *)v3 + 31); if ( !v10 ) std::__throw_bad_cast(); v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); v11 = *this; *((_WORD *)v3 + 58) = v5; v3[118] = 1; v3 = (char *)this + *(_DWORD *)(v11 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v5, LODWORD(a2), HIDWORD(a2)); if ( v6 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } v7 = (char *)v13 + *(_DWORD *)(*v13 - 12); if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) { v8 = *((_DWORD *)v7 + 30); if ( v8 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) std::wios::clear( (_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12)), *(_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12) + 20) | 1); } } return this; } // 4A3DA0: variable 'v6' is possibly undefined //----- (004A3EC0) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, long double a2) { char *v3; // esi int v4; // edi unsigned __int16 v5; // ax char v6; // dl char *v7; // esi int v8; // ecx int v10; // ecx int v11; // edx int v13; // [esp+38h] [ebp-20h] BYREF _DWORD *v14; // [esp+3Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v13, this); if ( (_BYTE)v13 ) { v3 = (char *)this + *(_DWORD *)(*this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[118] ) { v5 = *((_WORD *)v3 + 58); } else { v10 = *((_DWORD *)v3 + 31); if ( !v10 ) std::__throw_bad_cast(); v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); v11 = *this; *((_WORD *)v3 + 58) = v5; v3[118] = 1; v3 = (char *)this + *(_DWORD *)(v11 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 32))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v5, LODWORD(a2), DWORD1(a2), HIDWORD(a2)); if ( v6 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } v7 = (char *)v14 + *(_DWORD *)(*v14 - 12); if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) { v8 = *((_DWORD *)v7 + 30); if ( v8 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) std::wios::clear( (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); } } return this; } // 4A3F3A: variable 'v6' is possibly undefined //----- (004A4060) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, int a2) { char *v3; // esi int v4; // edi char v5; // dl char *v6; // esi int v7; // ecx int v9; // ecx unsigned __int16 v10; // ax int v11; // edx unsigned __int16 v12; // [esp+2Ah] [ebp-2Eh] int v13; // [esp+38h] [ebp-20h] BYREF _DWORD *v14; // [esp+3Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v13, this); if ( (_BYTE)v13 ) { v3 = (char *)this + *(_DWORD *)(*this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[118] ) { v12 = *((_WORD *)v3 + 58); } else { v9 = *((_DWORD *)v3 + 31); if ( !v9 ) std::__throw_bad_cast(); v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); v11 = *this; *((_WORD *)v3 + 58) = v10; v3[118] = 1; v12 = v10; v3 = (char *)this + *(_DWORD *)(v11 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int))(*(_DWORD *)v4 + 12))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v12, a2); if ( v5 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } v6 = (char *)v14 + *(_DWORD *)(*v14 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::wios::clear( (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); } } return this; } // 4A40DF: variable 'v5' is possibly undefined //----- (004A4200) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, int a2) { char *v3; // esi int v4; // edi char v5; // dl char *v6; // esi int v7; // ecx int v9; // ecx unsigned __int16 v10; // ax int v11; // edx unsigned __int16 v12; // [esp+2Ah] [ebp-2Eh] int v13; // [esp+38h] [ebp-20h] BYREF _DWORD *v14; // [esp+3Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v13, this); if ( (_BYTE)v13 ) { v3 = (char *)this + *(_DWORD *)(*this - 12); v4 = *((_DWORD *)v3 + 32); if ( !v4 ) std::__throw_bad_cast(); if ( v3[118] ) { v12 = *((_WORD *)v3 + 58); } else { v9 = *((_DWORD *)v3 + 31); if ( !v9 ) std::__throw_bad_cast(); v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); v11 = *this; *((_WORD *)v3 + 58) = v10; v3[118] = 1; v12 = v10; v3 = (char *)this + *(_DWORD *)(v11 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int))(*(_DWORD *)v4 + 16))( v4, *((_DWORD *)v3 + 30), *((_DWORD *)v3 + 30) == 0, v3, v12, a2); if ( v5 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } v6 = (char *)v14 + *(_DWORD *)(*v14 - 12); if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) { v7 = *((_DWORD *)v6 + 30); if ( v7 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) std::wios::clear( (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); } } return this; } // 4A427F: variable 'v5' is possibly undefined //----- (004A43A0) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) { char *v4; // esi int v5; // edi char v6; // dl char *v7; // esi int v8; // ecx int v10; // ecx unsigned __int16 v11; // ax int v12; // edx unsigned __int16 v13; // [esp+2Eh] [ebp-3Ah] int v14; // [esp+48h] [ebp-20h] BYREF _DWORD *v15; // [esp+4Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v14, this); if ( (_BYTE)v14 ) { v4 = (char *)this + *(_DWORD *)(*this - 12); v5 = *((_DWORD *)v4 + 32); if ( !v5 ) std::__throw_bad_cast(); if ( v4[118] ) { v13 = *((_WORD *)v4 + 58); } else { v10 = *((_DWORD *)v4 + 31); if ( !v10 ) std::__throw_bad_cast(); v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); v12 = *this; *((_WORD *)v4 + 58) = v11; v4[118] = 1; v13 = v11; v4 = (char *)this + *(_DWORD *)(v12 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int, int))(*(_DWORD *)v5 + 20))( v5, *((_DWORD *)v4 + 30), *((_DWORD *)v4 + 30) == 0, v4, v13, a2, a3); if ( v6 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } v7 = (char *)v15 + *(_DWORD *)(*v15 - 12); if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) { v8 = *((_DWORD *)v7 + 30); if ( v8 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) std::wios::clear( (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); } } return this; } // 4A443C: variable 'v6' is possibly undefined //----- (004A4560) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) { char *v4; // esi int v5; // edi char v6; // dl char *v7; // esi int v8; // ecx int v10; // ecx unsigned __int16 v11; // ax int v12; // edx unsigned __int16 v13; // [esp+2Eh] [ebp-3Ah] int v14; // [esp+48h] [ebp-20h] BYREF _DWORD *v15; // [esp+4Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v14, this); if ( (_BYTE)v14 ) { v4 = (char *)this + *(_DWORD *)(*this - 12); v5 = *((_DWORD *)v4 + 32); if ( !v5 ) std::__throw_bad_cast(); if ( v4[118] ) { v13 = *((_WORD *)v4 + 58); } else { v10 = *((_DWORD *)v4 + 31); if ( !v10 ) std::__throw_bad_cast(); v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); v12 = *this; *((_WORD *)v4 + 58) = v11; v4[118] = 1; v13 = v11; v4 = (char *)this + *(_DWORD *)(v12 - 12); } (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int, int))(*(_DWORD *)v5 + 24))( v5, *((_DWORD *)v4 + 30), *((_DWORD *)v4 + 30) == 0, v4, v13, a2, a3); if ( v6 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } v7 = (char *)v15 + *(_DWORD *)(*v15 - 12); if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) { v8 = *((_DWORD *)v7 + 30); if ( v8 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) std::wios::clear( (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); } } return this; } // 4A45FC: variable 'v6' is possibly undefined //----- (004A4720) -------------------------------------------------------- int __thiscall std::wostream::basic_ostream(_DWORD *this, int *a2) { _DWORD *v2; // edi int v4; // eax std::ios_base *v5; // esi int v6; // eax int result; // eax std::ios_base *v8; // [esp+4h] [ebp-24h] v2 = this + 1; std::ios_base::ios_base(this + 1); this[29] = 0; *((_WORD *)this + 60) = 0; v4 = *a2; *((_BYTE *)this + 122) = 0; v5 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v4 - 12)); *this = &off_4F61B4; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; this[1] = off_4F61C8; std::ios_base::_M_move((int)v2, v5, v8); std::wios::_M_cache_locale(v2, (int)(this + 28)); v6 = *((_DWORD *)v5 + 28); this[31] = 0; *((_DWORD *)v5 + 28) = 0; this[29] = v6; *((_WORD *)this + 60) = *((_WORD *)v5 + 58); result = *((unsigned __int8 *)v5 + 118); *((_BYTE *)this + 122) = result; return result; } // 4A4785: variable 'v8' is possibly undefined // 4F61B4: using guessed type int (*off_4F61B4)(); // 4F61C8: using guessed type int (*off_4F61C8[2])(); //----- (004A47F0) -------------------------------------------------------- BOOL __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) { int v2; // esi v2 = (int)(this + 1); std::ios_base::ios_base(this + 1); this[29] = 0; *((_WORD *)this + 60) = 0; *((_BYTE *)this + 122) = 0; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; *this = &off_4F61B4; this[1] = off_4F61C8; return std::wios::init(v2, a2); } // 4F61B4: using guessed type int (*off_4F61B4)(); // 4F61C8: using guessed type int (*off_4F61C8[2])(); //----- (004A4880) -------------------------------------------------------- int __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) { int result; // eax std::ios_base::ios_base(this + 1); result = 0; *((_BYTE *)this + 122) = 0; this[29] = 0; *((_WORD *)this + 60) = 0; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; *this = &off_4F61B4; this[1] = off_4F61C8; return result; } // 4F61B4: using guessed type int (*off_4F61B4)(); // 4F61C8: using guessed type int (*off_4F61C8[2])(); //----- (004A48E0) -------------------------------------------------------- BOOL __fastcall std::wostream::basic_ostream(int a1) { int v1; // esi v1 = a1 + 4; std::ios_base::ios_base((_DWORD *)(a1 + 4)); *(_DWORD *)(a1 + 116) = 0; *(_WORD *)(a1 + 120) = 0; *(_BYTE *)(a1 + 122) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; *(_DWORD *)(a1 + 136) = 0; *(_DWORD *)a1 = &off_4F61B4; *(_DWORD *)(a1 + 4) = off_4F61C8; return std::wios::init(v1, 0); } // 4F61B4: using guessed type int (*off_4F61B4)(); // 4F61C8: using guessed type int (*off_4F61C8[2])(); //----- (004A4970) -------------------------------------------------------- int __thiscall std::wostream::basic_ostream(int *this, int *a2, _DWORD *a3) { int v3; // edx int v4; // eax _DWORD *v5; // ecx _DWORD *v6; // ebx std::ios_base *v7; // esi int v8; // eax int result; // eax std::ios_base *v10; // [esp+4h] [ebp-18h] v3 = *a2; v4 = a2[1]; *this = *a2; v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); *v5 = v4; v6 = v5; v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move((int)v5, v7, v10); std::wios::_M_cache_locale(v6, (int)(v6 + 27)); v8 = *((_DWORD *)v7 + 28); *((_DWORD *)v7 + 28) = 0; v6[28] = v8; *((_WORD *)v6 + 58) = *((_WORD *)v7 + 58); result = *((unsigned __int8 *)v7 + 118); v6[30] = 0; *((_BYTE *)v6 + 118) = result; return result; } // 4A4993: variable 'v10' is possibly undefined //----- (004A49E0) -------------------------------------------------------- BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) { int v3; // edx int v4; // eax _DWORD *v5; // ecx v3 = *a2; v4 = a2[1]; *this = *a2; v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); *v5 = v4; return std::wios::init((int)v5, a3); } //----- (004A4A10) -------------------------------------------------------- int __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) { int v3; // eax int v4; // edx int result; // eax v3 = *a2; v4 = a2[1]; *this = *a2; result = *(_DWORD *)(v3 - 12); *(int *)((char *)this + result) = v4; return result; } //----- (004A4A30) -------------------------------------------------------- BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2) { int v2; // edx int v3; // eax _DWORD *v4; // ecx v2 = *a2; v3 = a2[1]; *this = *a2; v4 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); *v4 = v3; return std::wios::init((int)v4, 0); } //----- (004A4A50) -------------------------------------------------------- void __fastcall std::wostream::~wostream(char *a1) { _DWORD *v2; // ecx v2 = a1 + 4; *(v2 - 1) = &off_4F61B4; *v2 = &off_4F6E20; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 4F61B4: using guessed type int (*off_4F61B4)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004A4A80) -------------------------------------------------------- void __fastcall std::wostream::~wostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_4F61B4; v1 = a1 + 1; *v1 = &off_4F6E20; std::ios_base::~ios_base((int)v1); } // 4F61B4: using guessed type int (*off_4F61B4)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004A4AA0) -------------------------------------------------------- int __thiscall std::wostream::~wostream(int *this, int *a2) { int v2; // eax int result; // eax v2 = *a2; *this = *a2; result = *(_DWORD *)(v2 - 12); *(int *)((char *)this + result) = a2[1]; return result; } //----- (004A4AC0) -------------------------------------------------------- _DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // dx _DWORD *result; // eax std::ios_base *v8; // [esp+4h] [ebp-18h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v8); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); result = this; *((_BYTE *)v4 + 118) = v6; return result; } // 4A4ADD: variable 'v8' is possibly undefined //----- (004A4B40) -------------------------------------------------------- int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (004A4B50) -------------------------------------------------------- char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004A4B70) -------------------------------------------------------- char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004A4BA0) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, _DWORD *a2) { char *v3; // ecx int v4; // eax char *v5; // esi int v6; // ecx char v8; // [esp+17h] [ebp-11h] BYREF int v9; // [esp+18h] [ebp-10h] BYREF _DWORD *v10; // [esp+1Ch] [ebp-Ch] std::wostream::sentry::sentry(&v9, this); if ( (_BYTE)v9 ) { v3 = (char *)this + *(_DWORD *)(*this - 12); if ( !a2 ) { v4 = 1; goto LABEL_13; } if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v3 + 30), &v8) ) { v4 = 4; v3 = (char *)this + *(_DWORD *)(*this - 12); LABEL_13: std::wios::clear(v3, *((_DWORD *)v3 + 5) | v4); } } else if ( !a2 ) { v4 = 1; v3 = (char *)this + *(_DWORD *)(*this - 12); goto LABEL_13; } v5 = (char *)v10 + *(_DWORD *)(*v10 - 12); if ( (v5[13] & 0x20) != 0 && !std::uncaught_exception() ) { v6 = *((_DWORD *)v5 + 30); if ( v6 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6) == -1 ) std::wios::clear( (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); } } return this; } //----- (004A4CF0) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2) { return std::wostream::_M_insert(this, a2); } //----- (004A4D20) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, float a2) { return std::wostream::_M_insert(this, a2); } //----- (004A4D80) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) { int v2; // eax v2 = *(int *)((char *)this + *(_DWORD *)(*this - 12) + 12) & 0x4A; if ( v2 == 64 || v2 == 8 ) return std::wostream::_M_insert(this, a2); else return std::wostream::_M_insert(this, (__int16)a2); } //----- (004A4DC0) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) { return std::wostream::_M_insert(this, a2); } //----- (004A4DF0) -------------------------------------------------------- unsigned int __userpurge std::random_device::_M_init_pretr1@( unsigned int *a1@, const void **this, const std::string *a3) { int v4; // eax unsigned int v5; // ecx int i; // edx unsigned int result; // eax _BYTE *v8; // esi char **EndPtr; // [esp+4h] [ebp-28h] char *v10; // [esp+1Ch] [ebp-10h] BYREF v4 = std::string::compare(this, (std::string *)"mt19937", (const char *)EndPtr); v5 = 5489; if ( v4 ) { v8 = *this; v5 = strtoul((const char *)*this, &v10, 0); if ( !*v8 || *v10 ) std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&)"); } *a1 = v5; for ( i = 1; ; v5 = a1[i - 1] ) { result = i + 1812433253 * (v5 ^ (v5 >> 30)); a1[i++] = result; if ( i == 624 ) break; } a1[624] = 624; return result; } // 4A4E02: variable 'EndPtr' is possibly undefined //----- (004A4E90) -------------------------------------------------------- FILE *__userpurge std::random_device::_M_init@(FILE **a1@, const void **this, const std::string *a3) { unsigned int v4; // kr00_4 unsigned int v5; // kr04_4 unsigned int v6; // kr08_4 FILE *result; // eax const char *FileName; // ebx unsigned int v18; // [esp-4h] [ebp-30h] char *Mode; // [esp+4h] [ebp-28h] char *Modea; // [esp+4h] [ebp-28h] char *Modeb; // [esp+4h] [ebp-28h] if ( !std::string::compare(this, (std::string *)"default", Mode) ) { v4 = __readeflags(); v18 = v4; v5 = __readeflags(); __writeeflags(v5 ^ 0x200000); v6 = __readeflags(); __writeeflags(v18); if ( ((v5 ^ v6) & 0x200000) == 0 ) goto LABEL_11; _EAX = 0; __asm { cpuid } if ( _EBX != 1970169159 ) goto LABEL_11; if ( _EAX ) { _EAX = 1; __asm { cpuid } FileName = "/dev/urandom"; if ( (_ECX & 0x40000000) != 0 ) { *a1 = 0; return result; } } else { LABEL_11: FileName = "/dev/urandom"; } } else { FileName = (const char *)*this; if ( std::string::compare(this, (std::string *)"/dev/urandom", Modea) && std::string::compare(this, (std::string *)"/dev/random", Modeb) ) { LABEL_10: std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&)"); } } result = fopen(FileName, "rb"); *a1 = result; if ( !result ) goto LABEL_10; return result; } // 4A4EA6: variable 'Mode' is possibly undefined // 4A4F2C: variable 'Modea' is possibly undefined // 4A4F41: variable 'Modeb' is possibly undefined //----- (004A4F80) -------------------------------------------------------- int __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2) { int result; // eax result = a2; *this = &off_4F61D8; this[1] = *(_DWORD *)(a2 + 4); *(_DWORD *)(a2 + 4) = &unk_4E93FC; return result; } // 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); //----- (004A4FA0) -------------------------------------------------------- _DWORD *__userpurge std::runtime_error::runtime_error@(int a1@, std::runtime_error *this, const char *a3) { _DWORD *v3; // ecx int v5; // [esp+1Fh] [ebp-9h] BYREF v3 = (_DWORD *)(a1 + 4); *(v3 - 1) = &off_4F61D8; return std::string::string(v3, (char *)this, (int)&v5); } // 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); //----- (004A4FE0) -------------------------------------------------------- _DWORD *__thiscall std::runtime_error::runtime_error(_DWORD *this, int a2) { _DWORD *v2; // ecx unsigned int v4; // [esp+8h] [ebp-10h] v2 = this + 1; *(v2 - 1) = &off_4F61D8; return std::__cow_string::__cow_string(v2, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v4); } // 4A5003: variable 'v4' is possibly undefined // 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); //----- (004A5020) -------------------------------------------------------- unsigned int *__userpurge std::runtime_error::runtime_error@( int a1@, unsigned int **this, const std::runtime_error *a3) { const std::string *v4; // [esp+4h] [ebp-18h] *(_DWORD *)a1 = &off_4F61D8; return std::string::string((unsigned int **)(a1 + 4), this + 1, v4); } // 4A5036: variable 'v4' is possibly undefined // 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); //----- (004A5050) -------------------------------------------------------- unsigned int *__userpurge std::runtime_error::runtime_error@( int a1@, unsigned int **this, const std::string *a3) { unsigned int **v3; // ecx const std::string *v5; // [esp+4h] [ebp-14h] v3 = (unsigned int **)(a1 + 4); *(v3 - 1) = (unsigned int *)&off_4F61D8; return std::string::string(v3, this, v5); } // 4A506A: variable 'v5' is possibly undefined // 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); //----- (004A5090) -------------------------------------------------------- void __fastcall std::runtime_error::~runtime_error(_DWORD *a1) { std::runtime_error::~runtime_error(a1); operator delete(a1); } //----- (004A50B0) -------------------------------------------------------- void __fastcall std::runtime_error::~runtime_error(_DWORD *a1) { volatile signed __int32 *v1; // eax int v2; // edx std::exception *v3; // [esp+0h] [ebp-2Ch] int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF v1 = (volatile signed __int32 *)a1[1]; *a1 = &off_4F61D8; if ( v1 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 - 1); *((_DWORD *)v1 - 1) = v2 - 1; } if ( v2 <= 0 ) std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v4); } std::exception::~exception(v3); } // 4A50C9: variable 'v3' is possibly undefined // 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); // 15412D0: using guessed type int _CRT_MT; // 4A50B0: using guessed type int var_D[3]; //----- (004A5120) -------------------------------------------------------- int *__thiscall std::runtime_error::operator=(int *this, int a2) { std::string *v4; // [esp+4h] [ebp-18h] std::string::swap(this + 1, (std::string *)(a2 + 4), v4); return this; } // 4A5133: variable 'v4' is possibly undefined //----- (004A5150) -------------------------------------------------------- unsigned int **__thiscall std::runtime_error::operator=(unsigned int **this, int a2) { const std::string *v4; // [esp+4h] [ebp-18h] std::string::assign(this + 1, (unsigned int **)(a2 + 4), v4); return this; } // 4A5163: variable 'v4' is possibly undefined //----- (004A5180) -------------------------------------------------------- int __thiscall std::ifstream::open(char *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 8, a2, a3 | 8) == 0; v5 = *(_DWORD *)this; if ( v4 ) return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); else return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); } //----- (004A51F0) -------------------------------------------------------- int __thiscall std::ifstream::open(char *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 8, a2, a3 | 8) == 0; v5 = *(_DWORD *)this; if ( v4 ) return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); else return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); } //----- (004A5260) -------------------------------------------------------- int __thiscall std::ifstream::open(char *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 8, *a2, a3 | 8) == 0; v5 = *(_DWORD *)this; if ( v4 ) return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); else return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); } //----- (004A52D0) -------------------------------------------------------- int __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2) { int v3; // edi std::ios_base *v4; // esi int v5; // eax char v6; // dl char v7; // dl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v10); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; v8 = this[1]; *((_BYTE *)v4 + 117) = v7; this[1] = a2[1]; a2[1] = v8; return std::filebuf::swap((int)(this + 2), (int)(a2 + 2)); } // 4A52F4: variable 'v10' is possibly undefined //----- (004A5370) -------------------------------------------------------- int __fastcall std::ifstream::close(_DWORD *a1) { int result; // eax result = std::filebuf::close((int)(a1 + 2)); if ( !result ) return std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (004A53B0) -------------------------------------------------------- bool __fastcall std::ifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (004A53C0) -------------------------------------------------------- int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2) { _DWORD *v2; // edi int v4; // eax int v5; // eax int v6; // edx int v7; // eax int result; // eax std::ios_base *v9; // [esp+4h] [ebp-34h] char *v10; // [esp+1Ch] [ebp-1Ch] v2 = this + 29; std::ios_base::ios_base(this + 29); *this = &unk_4F10A8; *((_WORD *)this + 116) = 0; v4 = a2[1]; this[57] = 0; this[1] = v4; v5 = *a2; this[59] = 0; v6 = *(_DWORD *)(v5 - 12); this[60] = 0; this[61] = 0; this[29] = &unk_4F10BC; this[62] = 0; v10 = (char *)a2 + v6; std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); std::ios::_M_cache_locale(v2, (int)(this + 56)); this[59] = 0; v7 = *((_DWORD *)v10 + 28); *((_DWORD *)v10 + 28) = 0; this[57] = v7; *((_WORD *)this + 116) = *((_WORD *)v10 + 58); a2[1] = 0; *this = &off_4F61F0; this[29] = off_4F6204; result = std::filebuf::basic_filebuf((int)(this + 2), (int)(a2 + 2)); this[59] = this + 2; return result; } // 4A5435: variable 'v9' is possibly undefined // 4F61F0: using guessed type int (*off_4F61F0)(); // 4F6204: using guessed type int (*off_4F6204[2])(); //----- (004A54E0) -------------------------------------------------------- int __thiscall std::ifstream::basic_ifstream(char *this, char *a2, int a3) { int v3; // esi char *v5; // eax char *v6; // ecx v3 = (int)(this + 116); std::ios_base::ios_base((_DWORD *)this + 29); *(_DWORD *)this = &unk_4F10A8; *((_DWORD *)this + 57) = 0; *((_WORD *)this + 116) = 0; *((_DWORD *)this + 59) = 0; *((_DWORD *)this + 60) = 0; *((_DWORD *)this + 61) = 0; *((_DWORD *)this + 62) = 0; *((_DWORD *)this + 29) = &unk_4F10BC; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F61F0; *((_DWORD *)this + 29) = off_4F6204; std::filebuf::basic_filebuf((int)(this + 8)); std::ios::init(v3, (int)(this + 8)); v5 = std::filebuf::open(this + 8, a2, a3 | 8); v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v5 ) return std::ios::clear(v6, 0); else return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); } // 4F61F0: using guessed type int (*off_4F61F0)(); // 4F6204: using guessed type int (*off_4F6204[2])(); //----- (004A5620) -------------------------------------------------------- int __thiscall std::ifstream::basic_ifstream(char *this, wchar_t *a2, int a3) { int v3; // esi char *v5; // eax char *v6; // ecx v3 = (int)(this + 116); std::ios_base::ios_base((_DWORD *)this + 29); *(_DWORD *)this = &unk_4F10A8; *((_DWORD *)this + 57) = 0; *((_WORD *)this + 116) = 0; *((_DWORD *)this + 59) = 0; *((_DWORD *)this + 60) = 0; *((_DWORD *)this + 61) = 0; *((_DWORD *)this + 62) = 0; *((_DWORD *)this + 29) = &unk_4F10BC; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F61F0; *((_DWORD *)this + 29) = off_4F6204; std::filebuf::basic_filebuf((int)(this + 8)); std::ios::init(v3, (int)(this + 8)); v5 = std::filebuf::open(this + 8, a2, a3 | 8); v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v5 ) return std::ios::clear(v6, 0); else return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); } // 4F61F0: using guessed type int (*off_4F61F0)(); // 4F6204: using guessed type int (*off_4F6204[2])(); //----- (004A5760) -------------------------------------------------------- int __thiscall std::ifstream::basic_ifstream(char *this, char **a2, int a3) { int v3; // esi char *v5; // eax char *v6; // ecx v3 = (int)(this + 116); std::ios_base::ios_base((_DWORD *)this + 29); *(_DWORD *)this = &unk_4F10A8; *((_DWORD *)this + 57) = 0; *((_WORD *)this + 116) = 0; *((_DWORD *)this + 59) = 0; *((_DWORD *)this + 60) = 0; *((_DWORD *)this + 61) = 0; *((_DWORD *)this + 62) = 0; *((_DWORD *)this + 29) = &unk_4F10BC; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F61F0; *((_DWORD *)this + 29) = off_4F6204; std::filebuf::basic_filebuf((int)(this + 8)); std::ios::init(v3, (int)(this + 8)); v5 = std::filebuf::open(this + 8, *a2, a3 | 8); v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v5 ) return std::ios::clear(v6, 0); else return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); } // 4F61F0: using guessed type int (*off_4F61F0)(); // 4F6204: using guessed type int (*off_4F6204[2])(); //----- (004A58A0) -------------------------------------------------------- BOOL __fastcall std::ifstream::basic_ifstream(int a1) { int v1; // esi v1 = a1 + 116; std::ios_base::ios_base((_DWORD *)(a1 + 116)); *(_DWORD *)a1 = &unk_4F10A8; *(_DWORD *)(a1 + 228) = 0; *(_WORD *)(a1 + 232) = 0; *(_DWORD *)(a1 + 236) = 0; *(_DWORD *)(a1 + 240) = 0; *(_DWORD *)(a1 + 244) = 0; *(_DWORD *)(a1 + 248) = 0; *(_DWORD *)(a1 + 116) = &unk_4F10BC; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_4F61F0; *(_DWORD *)(a1 + 116) = off_4F6204; std::filebuf::basic_filebuf(a1 + 8); return std::ios::init(v1, a1 + 8); } // 4F61F0: using guessed type int (*off_4F61F0)(); // 4F6204: using guessed type int (*off_4F6204[2])(); //----- (004A5980) -------------------------------------------------------- int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // edx __int16 v6; // ax int v7; // edx int v8; // eax int result; // eax std::ios_base *v10; // [esp+4h] [ebp-34h] std::ios_base *v11; // [esp+18h] [ebp-20h] int v12; // [esp+1Ch] [ebp-1Ch] v4 = a2[1]; *this = v4; *(_DWORD *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = a3[1]; v12 = (int)this + *(_DWORD *)(v4 - 12); v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v12, v11, v10); std::ios::_M_cache_locale((_DWORD *)v12, v12 + 108); v5 = *((_DWORD *)v11 + 28); *((_DWORD *)v11 + 28) = 0; v6 = *((_WORD *)v11 + 58); *(_DWORD *)(v12 + 120) = 0; *(_DWORD *)(v12 + 112) = v5; v7 = a2[3]; *(_WORD *)(v12 + 116) = v6; v8 = *a2; a3[1] = 0; *this = v8; *(_DWORD *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; std::filebuf::basic_filebuf((int)(this + 2), (int)(a3 + 2)); result = *(_DWORD *)(*this - 12); *(_DWORD *)((char *)this + result + 120) = this + 2; return result; } // 4A59BD: variable 'v10' is possibly undefined //----- (004A5A50) -------------------------------------------------------- int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char *a3, int a4) { char *v5; // edi int v6; // eax int v7; // eax int v8; // edx char *v9; // eax char *v10; // ecx v5 = this + 8; v6 = a2[1]; *(_DWORD *)this = v6; *(_DWORD *)&this[*(_DWORD *)(v6 - 12)] = a2[2]; *((_DWORD *)this + 1) = 0; std::ios::init((int)&this[*(_DWORD *)(v6 - 12)], 0); v7 = *a2; v8 = a2[3]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; std::filebuf::basic_filebuf((int)v5); std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); v9 = std::filebuf::open(v5, a3, a4 | 8); v10 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v9 ) return std::ios::clear(v10, 0); else return std::ios::clear(v10, *((_DWORD *)v10 + 5) | 4); } //----- (004A5B40) -------------------------------------------------------- int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, wchar_t *a3, int a4) { char *v5; // edi int v6; // eax int v7; // eax int v8; // edx char *v9; // eax char *v10; // ecx v5 = this + 8; v6 = a2[1]; *(_DWORD *)this = v6; *(_DWORD *)&this[*(_DWORD *)(v6 - 12)] = a2[2]; *((_DWORD *)this + 1) = 0; std::ios::init((int)&this[*(_DWORD *)(v6 - 12)], 0); v7 = *a2; v8 = a2[3]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; std::filebuf::basic_filebuf((int)v5); std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); v9 = std::filebuf::open(v5, a3, a4 | 8); v10 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v9 ) return std::ios::clear(v10, 0); else return std::ios::clear(v10, *((_DWORD *)v10 + 5) | 4); } //----- (004A5C30) -------------------------------------------------------- int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char **a3, int a4) { char *v5; // edi int v6; // eax int v7; // eax int v8; // edx char *v9; // eax char *v10; // ecx v5 = this + 8; v6 = a2[1]; *(_DWORD *)this = v6; *(_DWORD *)&this[*(_DWORD *)(v6 - 12)] = a2[2]; *((_DWORD *)this + 1) = 0; std::ios::init((int)&this[*(_DWORD *)(v6 - 12)], 0); v7 = *a2; v8 = a2[3]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; std::filebuf::basic_filebuf((int)v5); std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); v9 = std::filebuf::open(v5, *a3, a4 | 8); v10 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v9 ) return std::ios::clear(v10, 0); else return std::ios::clear(v10, *((_DWORD *)v10 + 5) | 4); } //----- (004A5D20) -------------------------------------------------------- BOOL __thiscall std::ifstream::basic_ifstream(int *this, int *a2) { int v3; // edi int v4; // eax int v5; // eax int v6; // edx v3 = (int)(this + 2); v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); v5 = *a2; v6 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; std::filebuf::basic_filebuf(v3); return std::ios::init((int)this + *(_DWORD *)(*this - 12), v3); } //----- (004A5DC0) -------------------------------------------------------- void __fastcall std::ifstream::~ifstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 2; *(v2 - 2) = &off_4F61F0; v2[27] = off_4F6204; *v2 = &off_4F6090; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 12); a1[2] = &off_4F6414; std::locale::~locale((_DWORD **)a1 + 9); *a1 = &unk_4F10A8; a1[1] = 0; a1[29] = &off_4F6E10; std::ios_base::~ios_base((int)(a1 + 29)); operator delete(a1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F61F0: using guessed type int (*off_4F61F0)(); // 4F6204: using guessed type int (*off_4F6204[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004A5E40) -------------------------------------------------------- void __fastcall std::ifstream::~ifstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 8); *(v2 - 2) = &off_4F61F0; v2[27] = off_4F6204; *v2 = &off_4F6090; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 48); *(_DWORD *)(a1 + 8) = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_4F10A8; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 116) = &off_4F6E10; std::ios_base::~ios_base(a1 + 116); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F61F0: using guessed type int (*off_4F61F0)(); // 4F6204: using guessed type int (*off_4F6204[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004A5EB0) -------------------------------------------------------- int __thiscall std::ifstream::~ifstream(_DWORD *this, int *a2) { _DWORD *v3; // ecx int v4; // eax int v5; // eax int result; // eax v3 = this + 2; v4 = *a2; *(v3 - 2) = *a2; *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 8) = a2[3]; *v3 = &off_4F6090; std::filebuf::close((int)v3); std::__basic_file::~__basic_file(this + 12); this[2] = &off_4F6414; std::locale::~locale((_DWORD **)this + 9); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(_DWORD *)((char *)this + result) = a2[2]; this[1] = 0; return result; } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004A5F20) -------------------------------------------------------- _DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // dl char v7; // dl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v10); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; v8 = this[1]; *((_BYTE *)v4 + 117) = v7; this[1] = a2[1]; a2[1] = v8; std::filebuf::operator=((int)(this + 2), (int)(a2 + 2)); return this; } // 4A5F44: variable 'v10' is possibly undefined //----- (004A5FC0) -------------------------------------------------------- int __thiscall std::wifstream::open(int *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8) == 0; v5 = *this; if ( v4 ) return std::wios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004A6030) -------------------------------------------------------- int __thiscall std::wifstream::open(int *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8) == 0; v5 = *this; if ( v4 ) return std::wios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004A60A0) -------------------------------------------------------- int __thiscall std::wifstream::open(int *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open((int)(this + 2), *a2, a3 | 8) == 0; v5 = *this; if ( v4 ) return std::wios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004A6110) -------------------------------------------------------- int __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2) { int v3; // edi std::ios_base *v4; // esi int v5; // eax __int16 v6; // dx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); v7 = this[1]; *((_BYTE *)v4 + 118) = v6; this[1] = a2[1]; a2[1] = v7; return std::wfilebuf::swap((int)(this + 2), (int)(a2 + 2)); } // 4A6134: variable 'v9' is possibly undefined //----- (004A61B0) -------------------------------------------------------- int __fastcall std::wifstream::close(_DWORD *a1) { int result; // eax result = std::wfilebuf::close((int)(a1 + 2)); if ( !result ) return std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (004A61F0) -------------------------------------------------------- bool __fastcall std::wifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (004A6200) -------------------------------------------------------- int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2) { _DWORD *v2; // edi int v4; // eax int v5; // eax int v6; // edx int v7; // eax int result; // eax std::ios_base *v9; // [esp+4h] [ebp-34h] char *v10; // [esp+1Ch] [ebp-1Ch] v2 = this + 30; std::ios_base::ios_base(this + 30); *((_BYTE *)this + 238) = 0; *((_WORD *)this + 118) = 0; v4 = a2[1]; this[58] = 0; this[1] = v4; v5 = *a2; this[60] = 0; v6 = *(_DWORD *)(v5 - 12); *this = &unk_4F10D0; this[61] = 0; this[30] = &unk_4F10E4; this[62] = 0; this[63] = 0; v10 = (char *)a2 + v6; std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); std::wios::_M_cache_locale(v2, (int)(this + 57)); this[60] = 0; v7 = *((_DWORD *)v10 + 28); *((_DWORD *)v10 + 28) = 0; this[58] = v7; *((_WORD *)this + 118) = *((_WORD *)v10 + 58); *((_BYTE *)this + 238) = v10[118]; a2[1] = 0; *this = &off_4F6218; this[30] = off_4F622C; result = std::wfilebuf::basic_filebuf((int)(this + 2), (int)(a2 + 2)); this[60] = this + 2; return result; } // 4A627C: variable 'v9' is possibly undefined // 4F6218: using guessed type int (*off_4F6218)(); // 4F622C: using guessed type int (*off_4F622C[2])(); //----- (004A6330) -------------------------------------------------------- int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3) { int v3; // esi char *v5; // eax _DWORD *v6; // ecx v3 = (int)(this + 30); std::ios_base::ios_base(this + 30); *((_BYTE *)this + 238) = 0; this[58] = 0; *((_WORD *)this + 118) = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[63] = 0; *this = &unk_4F10D0; this[30] = &unk_4F10E4; this[1] = 0; std::wios::init(v3, 0); *this = &off_4F6218; this[30] = off_4F622C; std::wfilebuf::basic_filebuf((int)(this + 2)); std::wios::init(v3, (int)(this + 2)); v5 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8); v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v5 ) return std::wios::clear(v6, 0); else return std::wios::clear(v6, v6[5] | 4); } // 4F6218: using guessed type int (*off_4F6218)(); // 4F622C: using guessed type int (*off_4F622C[2])(); //----- (004A6470) -------------------------------------------------------- int __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3) { int v3; // esi char *v5; // eax _DWORD *v6; // ecx v3 = (int)(this + 30); std::ios_base::ios_base(this + 30); *((_BYTE *)this + 238) = 0; this[58] = 0; *((_WORD *)this + 118) = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[63] = 0; *this = &unk_4F10D0; this[30] = &unk_4F10E4; this[1] = 0; std::wios::init(v3, 0); *this = &off_4F6218; this[30] = off_4F622C; std::wfilebuf::basic_filebuf((int)(this + 2)); std::wios::init(v3, (int)(this + 2)); v5 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8); v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v5 ) return std::wios::clear(v6, 0); else return std::wios::clear(v6, v6[5] | 4); } // 4F6218: using guessed type int (*off_4F6218)(); // 4F622C: using guessed type int (*off_4F622C[2])(); //----- (004A65B0) -------------------------------------------------------- int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3) { int v3; // esi char *v5; // eax _DWORD *v6; // ecx v3 = (int)(this + 30); std::ios_base::ios_base(this + 30); *((_BYTE *)this + 238) = 0; this[58] = 0; *((_WORD *)this + 118) = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[63] = 0; *this = &unk_4F10D0; this[30] = &unk_4F10E4; this[1] = 0; std::wios::init(v3, 0); *this = &off_4F6218; this[30] = off_4F622C; std::wfilebuf::basic_filebuf((int)(this + 2)); std::wios::init(v3, (int)(this + 2)); v5 = std::wfilebuf::open((int)(this + 2), *a2, a3 | 8); v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v5 ) return std::wios::clear(v6, 0); else return std::wios::clear(v6, v6[5] | 4); } // 4F6218: using guessed type int (*off_4F6218)(); // 4F622C: using guessed type int (*off_4F622C[2])(); //----- (004A66F0) -------------------------------------------------------- BOOL __fastcall std::wifstream::basic_ifstream(int a1) { int v1; // esi v1 = a1 + 120; std::ios_base::ios_base((_DWORD *)(a1 + 120)); *(_BYTE *)(a1 + 238) = 0; *(_DWORD *)(a1 + 232) = 0; *(_WORD *)(a1 + 236) = 0; *(_DWORD *)(a1 + 240) = 0; *(_DWORD *)(a1 + 244) = 0; *(_DWORD *)(a1 + 248) = 0; *(_DWORD *)(a1 + 252) = 0; *(_DWORD *)a1 = &unk_4F10D0; *(_DWORD *)(a1 + 120) = &unk_4F10E4; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_4F6218; *(_DWORD *)(a1 + 120) = off_4F622C; std::wfilebuf::basic_filebuf(a1 + 8); return std::wios::init(v1, a1 + 8); } // 4F6218: using guessed type int (*off_4F6218)(); // 4F622C: using guessed type int (*off_4F622C[2])(); //----- (004A67E0) -------------------------------------------------------- int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // edx char v6; // al int v7; // edx int v8; // eax int result; // eax std::ios_base *v10; // [esp+4h] [ebp-34h] std::ios_base *v11; // [esp+18h] [ebp-20h] int v12; // [esp+1Ch] [ebp-1Ch] v4 = a2[1]; *this = v4; *(_DWORD *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = a3[1]; v12 = (int)this + *(_DWORD *)(v4 - 12); v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v12, v11, v10); std::wios::_M_cache_locale((_DWORD *)v12, v12 + 108); v5 = *((_DWORD *)v11 + 28); *((_DWORD *)v11 + 28) = 0; *(_DWORD *)(v12 + 120) = 0; *(_DWORD *)(v12 + 112) = v5; v6 = *((_BYTE *)v11 + 118); *(_WORD *)(v12 + 116) = *((_WORD *)v11 + 58); v7 = a2[3]; *(_BYTE *)(v12 + 118) = v6; v8 = *a2; a3[1] = 0; *this = v8; *(_DWORD *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; std::wfilebuf::basic_filebuf((int)(this + 2), (int)(a3 + 2)); result = *(_DWORD *)(*this - 12); *(_DWORD *)((char *)this + result + 120) = this + 2; return result; } // 4A681D: variable 'v10' is possibly undefined //----- (004A68C0) -------------------------------------------------------- int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4) { int v5; // edi int v6; // eax int v7; // eax int v8; // edx char *v9; // eax _DWORD *v10; // ecx v5 = (int)(this + 2); v6 = a2[1]; *this = v6; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[2]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v6 - 12), 0); v7 = *a2; v8 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; std::wfilebuf::basic_filebuf(v5); std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); v9 = std::wfilebuf::open(v5, a3, a4 | 8); v10 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v9 ) return std::wios::clear(v10, 0); else return std::wios::clear(v10, v10[5] | 4); } //----- (004A69B0) -------------------------------------------------------- int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4) { int v5; // edi int v6; // eax int v7; // eax int v8; // edx char *v9; // eax _DWORD *v10; // ecx v5 = (int)(this + 2); v6 = a2[1]; *this = v6; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[2]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v6 - 12), 0); v7 = *a2; v8 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; std::wfilebuf::basic_filebuf(v5); std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); v9 = std::wfilebuf::open(v5, a3, a4 | 8); v10 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v9 ) return std::wios::clear(v10, 0); else return std::wios::clear(v10, v10[5] | 4); } //----- (004A6AA0) -------------------------------------------------------- int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4) { int v5; // edi int v6; // eax int v7; // eax int v8; // edx char *v9; // eax _DWORD *v10; // ecx v5 = (int)(this + 2); v6 = a2[1]; *this = v6; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[2]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v6 - 12), 0); v7 = *a2; v8 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; std::wfilebuf::basic_filebuf(v5); std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); v9 = std::wfilebuf::open(v5, *a3, a4 | 8); v10 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v9 ) return std::wios::clear(v10, 0); else return std::wios::clear(v10, v10[5] | 4); } //----- (004A6B90) -------------------------------------------------------- BOOL __thiscall std::wifstream::basic_ifstream(int *this, int *a2) { int v3; // edi int v4; // eax int v5; // eax int v6; // edx v3 = (int)(this + 2); v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); v5 = *a2; v6 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; std::wfilebuf::basic_filebuf(v3); return std::wios::init((int)this + *(_DWORD *)(*this - 12), v3); } //----- (004A6C30) -------------------------------------------------------- void __fastcall std::wifstream::~wifstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 2; *(v2 - 2) = &off_4F6218; v2[28] = off_4F622C; *v2 = &off_4F60D0; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 12); a1[2] = &off_4F6454; std::locale::~locale((_DWORD **)a1 + 9); *a1 = &unk_4F10D0; a1[1] = 0; a1[30] = &off_4F6E20; std::ios_base::~ios_base((int)(a1 + 30)); operator delete(a1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6218: using guessed type int (*off_4F6218)(); // 4F622C: using guessed type int (*off_4F622C[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004A6CB0) -------------------------------------------------------- void __fastcall std::wifstream::~wifstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 8); *(v2 - 2) = &off_4F6218; v2[28] = off_4F622C; *v2 = &off_4F60D0; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 48); *(_DWORD *)(a1 + 8) = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_4F10D0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 120) = &off_4F6E20; std::ios_base::~ios_base(a1 + 120); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6218: using guessed type int (*off_4F6218)(); // 4F622C: using guessed type int (*off_4F622C[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004A6D20) -------------------------------------------------------- int __thiscall std::wifstream::~wifstream(_DWORD *this, int *a2) { _DWORD *v3; // ecx int v4; // eax int v5; // eax int result; // eax v3 = this + 2; v4 = *a2; *(v3 - 2) = *a2; *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 8) = a2[3]; *v3 = &off_4F60D0; std::wfilebuf::close((int)v3); std::__basic_file::~__basic_file(this + 12); this[2] = &off_4F6454; std::locale::~locale((_DWORD **)this + 9); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(_DWORD *)((char *)this + result) = a2[2]; this[1] = 0; return result; } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004A6D90) -------------------------------------------------------- _DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // dx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); v7 = this[1]; *((_BYTE *)v4 + 118) = v6; this[1] = a2[1]; a2[1] = v7; std::wfilebuf::operator=((int)(this + 2), (int)(a2 + 2)); return this; } // 4A6DB4: variable 'v9' is possibly undefined //----- (004A6E30) -------------------------------------------------------- int __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // dx int result; // eax std::ios_base *v8; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v8); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); result = this[1]; *((_BYTE *)v4 + 118) = v6; this[1] = a2[1]; a2[1] = result; return result; } // 4A6E51: variable 'v8' is possibly undefined //----- (004A6EC0) -------------------------------------------------------- int __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2) { int v3; // eax int v4; // eax int v5; // esi std::ios_base *v6; // esi int v7; // eax int result; // eax std::ios_base *v9; // [esp+4h] [ebp-34h] _DWORD *v10; // [esp+1Ch] [ebp-1Ch] v10 = this + 3; std::ios_base::ios_base(this + 3); *this = &unk_4F10F8; *((_WORD *)this + 64) = 0; v3 = a2[1]; this[31] = 0; this[1] = v3; v4 = *a2; *((_BYTE *)this + 130) = 0; v5 = *(_DWORD *)(v4 - 12); this[33] = 0; this[34] = 0; v6 = (std::ios_base *)((char *)a2 + v5); this[3] = &unk_4F110C; this[35] = 0; this[36] = 0; std::ios_base::_M_move((int)v10, v6, v9); std::wios::_M_cache_locale(v10, (int)(this + 30)); this[33] = 0; v7 = *((_DWORD *)v6 + 28); *((_DWORD *)v6 + 28) = 0; this[31] = v7; *((_WORD *)this + 64) = *((_WORD *)v6 + 58); result = *((unsigned __int8 *)v6 + 118); *((_BYTE *)this + 130) = result; a2[1] = 0; *this = &off_4F6240; this[3] = off_4F6268; this[2] = off_4F6254; return result; } // 4A6F3A: variable 'v9' is possibly undefined // 4F6240: using guessed type int (*off_4F6240)(); // 4F6254: using guessed type int (*off_4F6254[2])(); // 4F6268: using guessed type int (*off_4F6268[2])(); //----- (004A6FC0) -------------------------------------------------------- BOOL __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2) { int v2; // esi BOOL result; // eax v2 = (int)(this + 3); std::ios_base::ios_base(this + 3); this[31] = 0; *((_WORD *)this + 64) = 0; *((_BYTE *)this + 130) = 0; this[33] = 0; this[34] = 0; this[35] = 0; this[36] = 0; *this = &unk_4F10F8; this[3] = &unk_4F110C; this[1] = 0; std::wios::init(v2, a2); this[2] = &unk_4F1120; this[3] = &unk_4F1134; result = std::wios::init(v2, a2); *this = &off_4F6240; this[3] = off_4F6268; this[2] = off_4F6254; return result; } // 4F6240: using guessed type int (*off_4F6240)(); // 4F6254: using guessed type int (*off_4F6254[2])(); // 4F6268: using guessed type int (*off_4F6268[2])(); //----- (004A70A0) -------------------------------------------------------- BOOL __fastcall std::wiostream::basic_iostream(int a1) { int v1; // esi BOOL result; // eax v1 = a1 + 12; std::ios_base::ios_base((_DWORD *)(a1 + 12)); *(_DWORD *)(a1 + 124) = 0; *(_WORD *)(a1 + 128) = 0; *(_BYTE *)(a1 + 130) = 0; *(_DWORD *)(a1 + 132) = 0; *(_DWORD *)(a1 + 136) = 0; *(_DWORD *)(a1 + 140) = 0; *(_DWORD *)(a1 + 144) = 0; *(_DWORD *)a1 = &unk_4F10F8; *(_DWORD *)(a1 + 12) = &unk_4F110C; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_4F1120; *(_DWORD *)(a1 + 12) = &unk_4F1134; result = std::wios::init(v1, 0); *(_DWORD *)a1 = &off_4F6240; *(_DWORD *)(a1 + 12) = off_4F6268; *(_DWORD *)(a1 + 8) = off_4F6254; return result; } // 4F6240: using guessed type int (*off_4F6240)(); // 4F6254: using guessed type int (*off_4F6254[2])(); // 4F6268: using guessed type int (*off_4F6268[2])(); //----- (004A7180) -------------------------------------------------------- int __thiscall std::wiostream::basic_iostream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // edi int v6; // edi std::ios_base *v7; // ebp int v8; // eax int v9; // eax int v10; // edx int v11; // eax int v12; // edx int result; // eax std::ios_base *v14; // [esp+4h] [ebp-28h] v4 = a2[1]; v5 = a2[2]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; this[1] = a3[1]; v6 = (int)this + *(_DWORD *)(v4 - 12); v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v6, v7, v14); std::wios::_M_cache_locale((_DWORD *)v6, v6 + 108); v8 = *((_DWORD *)v7 + 28); *(_DWORD *)(v6 + 120) = 0; *((_DWORD *)v7 + 28) = 0; *(_DWORD *)(v6 + 112) = v8; *(_WORD *)(v6 + 116) = *((_WORD *)v7 + 58); *(_BYTE *)(v6 + 118) = *((_BYTE *)v7 + 118); v9 = a2[3]; a3[1] = 0; v10 = a2[4]; this[2] = v9; *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v10; v11 = *a2; v12 = a2[5]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; result = a2[6]; this[2] = result; return result; } // 4A71B6: variable 'v14' is possibly undefined //----- (004A7230) -------------------------------------------------------- int __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3) { int v4; // eax int v5; // eax _DWORD *v6; // ecx int v7; // eax int v8; // edx int result; // eax v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v4 - 12), a3); v5 = a2[3]; this[2] = v5; v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); *v6 = a2[4]; std::wios::init((int)v6, a3); v7 = *a2; v8 = a2[5]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; result = a2[6]; this[2] = result; return result; } //----- (004A72C0) -------------------------------------------------------- int __thiscall std::wiostream::basic_iostream(int *this, int *a2) { int v3; // eax int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx int result; // eax v3 = a2[1]; *this = v3; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[2]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); v4 = a2[3]; this[2] = v4; v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); *v5 = a2[4]; std::wios::init((int)v5, 0); v6 = *a2; v7 = a2[5]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; result = a2[6]; this[2] = result; return result; } //----- (004A7350) -------------------------------------------------------- void __fastcall std::wiostream::~basic_iostream(char *a1) { _DWORD *v2; // ecx v2 = a1 + 12; *(v2 - 1) = &unk_4F1120; *(v2 - 3) = &unk_4F10F8; *(v2 - 2) = 0; *v2 = &off_4F6E20; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004A7390) -------------------------------------------------------- void __fastcall std::wiostream::~basic_iostream(int a1) { _DWORD *v1; // ecx *(_DWORD *)(a1 + 8) = &unk_4F1120; v1 = (_DWORD *)(a1 + 12); *(v1 - 3) = &unk_4F10F8; *(v1 - 2) = 0; *v1 = &off_4F6E20; std::ios_base::~ios_base((int)v1); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004A73C0) -------------------------------------------------------- int __thiscall std::wiostream::~basic_iostream(int *this, int *a2) { int v2; // edx int v3; // edx int v4; // edx int result; // eax v2 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v2 - 12)) = a2[5]; this[2] = a2[6]; v3 = a2[3]; this[2] = v3; *(int *)((char *)this + *(_DWORD *)(v3 - 12) + 8) = a2[4]; v4 = a2[1]; *this = v4; result = *(_DWORD *)(v4 - 12); *(int *)((char *)this + result) = a2[2]; this[1] = 0; return result; } //----- (004A7410) -------------------------------------------------------- _DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // dx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); v7 = this[1]; *((_BYTE *)v4 + 118) = v6; this[1] = a2[1]; a2[1] = v7; return this; } // 4A7431: variable 'v9' is possibly undefined //----- (004A74A0) -------------------------------------------------------- int __thiscall std::ofstream::open(char *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 4, a2, a3 | 0x10) == 0; v5 = *(_DWORD *)this; if ( v4 ) return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); else return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); } //----- (004A7510) -------------------------------------------------------- int __thiscall std::ofstream::open(char *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 4, a2, a3 | 0x10) == 0; v5 = *(_DWORD *)this; if ( v4 ) return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); else return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); } //----- (004A7580) -------------------------------------------------------- int __thiscall std::ofstream::open(char *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 4, *a2, a3 | 0x10) == 0; v5 = *(_DWORD *)this; if ( v4 ) return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); else return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); } //----- (004A75F0) -------------------------------------------------------- int __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // dl char v7; // dl std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; *((_BYTE *)v4 + 117) = v7; return std::filebuf::swap((int)(this + 1), (int)(a2 + 1)); } // 4A7614: variable 'v9' is possibly undefined //----- (004A7680) -------------------------------------------------------- int __fastcall std::ofstream::close(_DWORD *a1) { int result; // eax result = std::filebuf::close((int)(a1 + 1)); if ( !result ) return std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (004A76C0) -------------------------------------------------------- bool __fastcall std::ofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (004A76D0) -------------------------------------------------------- int __thiscall std::ofstream::basic_ofstream(_DWORD *this, int *a2) { _DWORD *v2; // edi int v4; // eax int v5; // edx int v6; // eax int result; // eax std::ios_base *v8; // [esp+4h] [ebp-34h] char *v9; // [esp+1Ch] [ebp-1Ch] v2 = this + 28; std::ios_base::ios_base(this + 28); *this = &unk_4F1148; *((_WORD *)this + 114) = 0; v4 = *a2; this[56] = 0; v5 = *(_DWORD *)(v4 - 12); this[58] = 0; this[59] = 0; this[28] = &unk_4F115C; this[60] = 0; this[61] = 0; v9 = (char *)a2 + v5; std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v5), v8); std::ios::_M_cache_locale(v2, (int)(this + 55)); *this = &off_4F627C; this[58] = 0; v6 = *((_DWORD *)v9 + 28); this[28] = off_4F6290; *((_DWORD *)v9 + 28) = 0; this[56] = v6; *((_WORD *)this + 114) = *((_WORD *)v9 + 58); result = std::filebuf::basic_filebuf((int)(this + 1), (int)(a2 + 1)); this[58] = this + 1; return result; } // 4A773F: variable 'v8' is possibly undefined // 4F627C: using guessed type int (*off_4F627C)(); // 4F6290: using guessed type int (*off_4F6290[2])(); //----- (004A77E0) -------------------------------------------------------- int __thiscall std::ofstream::basic_ofstream(char *this, char *a2, int a3) { int v3; // esi char *v5; // eax char *v6; // ecx v3 = (int)(this + 112); std::ios_base::ios_base((_DWORD *)this + 28); *(_DWORD *)this = &unk_4F1148; *((_DWORD *)this + 56) = 0; *((_WORD *)this + 114) = 0; *((_DWORD *)this + 58) = 0; *((_DWORD *)this + 59) = 0; *((_DWORD *)this + 60) = 0; *((_DWORD *)this + 61) = 0; *((_DWORD *)this + 28) = &unk_4F115C; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F627C; *((_DWORD *)this + 28) = off_4F6290; std::filebuf::basic_filebuf((int)(this + 4)); std::ios::init(v3, (int)(this + 4)); v5 = std::filebuf::open(this + 4, a2, a3 | 0x10); v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v5 ) return std::ios::clear(v6, 0); else return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); } // 4F627C: using guessed type int (*off_4F627C)(); // 4F6290: using guessed type int (*off_4F6290[2])(); //----- (004A7900) -------------------------------------------------------- int __thiscall std::ofstream::basic_ofstream(char *this, wchar_t *a2, int a3) { int v3; // esi char *v5; // eax char *v6; // ecx v3 = (int)(this + 112); std::ios_base::ios_base((_DWORD *)this + 28); *(_DWORD *)this = &unk_4F1148; *((_DWORD *)this + 56) = 0; *((_WORD *)this + 114) = 0; *((_DWORD *)this + 58) = 0; *((_DWORD *)this + 59) = 0; *((_DWORD *)this + 60) = 0; *((_DWORD *)this + 61) = 0; *((_DWORD *)this + 28) = &unk_4F115C; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F627C; *((_DWORD *)this + 28) = off_4F6290; std::filebuf::basic_filebuf((int)(this + 4)); std::ios::init(v3, (int)(this + 4)); v5 = std::filebuf::open(this + 4, a2, a3 | 0x10); v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v5 ) return std::ios::clear(v6, 0); else return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); } // 4F627C: using guessed type int (*off_4F627C)(); // 4F6290: using guessed type int (*off_4F6290[2])(); //----- (004A7A20) -------------------------------------------------------- int __thiscall std::ofstream::basic_ofstream(char *this, char **a2, int a3) { int v3; // esi char *v5; // eax char *v6; // ecx v3 = (int)(this + 112); std::ios_base::ios_base((_DWORD *)this + 28); *(_DWORD *)this = &unk_4F1148; *((_DWORD *)this + 56) = 0; *((_WORD *)this + 114) = 0; *((_DWORD *)this + 58) = 0; *((_DWORD *)this + 59) = 0; *((_DWORD *)this + 60) = 0; *((_DWORD *)this + 61) = 0; *((_DWORD *)this + 28) = &unk_4F115C; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F627C; *((_DWORD *)this + 28) = off_4F6290; std::filebuf::basic_filebuf((int)(this + 4)); std::ios::init(v3, (int)(this + 4)); v5 = std::filebuf::open(this + 4, *a2, a3 | 0x10); v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v5 ) return std::ios::clear(v6, 0); else return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); } // 4F627C: using guessed type int (*off_4F627C)(); // 4F6290: using guessed type int (*off_4F6290[2])(); //----- (004A7B50) -------------------------------------------------------- BOOL __fastcall std::ofstream::basic_ofstream(int a1) { int v1; // esi v1 = a1 + 112; std::ios_base::ios_base((_DWORD *)(a1 + 112)); *(_DWORD *)a1 = &unk_4F1148; *(_DWORD *)(a1 + 224) = 0; *(_WORD *)(a1 + 228) = 0; *(_DWORD *)(a1 + 232) = 0; *(_DWORD *)(a1 + 236) = 0; *(_DWORD *)(a1 + 240) = 0; *(_DWORD *)(a1 + 244) = 0; *(_DWORD *)(a1 + 112) = &unk_4F115C; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_4F627C; *(_DWORD *)(a1 + 112) = off_4F6290; std::filebuf::basic_filebuf(a1 + 4); return std::ios::init(v1, a1 + 4); } // 4F627C: using guessed type int (*off_4F627C)(); // 4F6290: using guessed type int (*off_4F6290[2])(); //----- (004A7C20) -------------------------------------------------------- int __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // esi int v6; // edx __int16 v7; // ax int v8; // edx int v9; // eax int result; // eax std::ios_base *v11; // [esp+4h] [ebp-34h] std::ios_base *v12; // [esp+1Ch] [ebp-1Ch] v4 = a2[1]; *this = v4; v5 = (int)this + *(_DWORD *)(v4 - 12); *(_DWORD *)v5 = a2[2]; v12 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v5, v12, v11); std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); *(_DWORD *)(v5 + 120) = 0; v6 = *((_DWORD *)v12 + 28); *((_DWORD *)v12 + 28) = 0; v7 = *((_WORD *)v12 + 58); *(_DWORD *)(v5 + 112) = v6; *(_WORD *)(v5 + 116) = v7; v8 = a2[3]; v9 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; std::filebuf::basic_filebuf((int)(this + 1), (int)(a3 + 1)); result = *(_DWORD *)(*this - 12); *(int *)((char *)this + result + 120) = (int)(this + 1); return result; } // 4A7C55: variable 'v11' is possibly undefined //----- (004A7CE0) -------------------------------------------------------- int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char *a3, int a4) { char *v5; // edi int v6; // eax char *v7; // ecx int v8; // eax int v9; // edx char *v10; // eax char *v11; // ecx v5 = this + 4; v6 = a2[1]; *(_DWORD *)this = v6; v7 = &this[*(_DWORD *)(v6 - 12)]; *(_DWORD *)v7 = a2[2]; std::ios::init((int)v7, 0); v8 = *a2; v9 = a2[3]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; std::filebuf::basic_filebuf((int)v5); std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); v10 = std::filebuf::open(v5, a3, a4 | 0x10); v11 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v10 ) return std::ios::clear(v11, 0); else return std::ios::clear(v11, *((_DWORD *)v11 + 5) | 4); } //----- (004A7DC0) -------------------------------------------------------- int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, wchar_t *a3, int a4) { char *v5; // edi int v6; // eax char *v7; // ecx int v8; // eax int v9; // edx char *v10; // eax char *v11; // ecx v5 = this + 4; v6 = a2[1]; *(_DWORD *)this = v6; v7 = &this[*(_DWORD *)(v6 - 12)]; *(_DWORD *)v7 = a2[2]; std::ios::init((int)v7, 0); v8 = *a2; v9 = a2[3]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; std::filebuf::basic_filebuf((int)v5); std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); v10 = std::filebuf::open(v5, a3, a4 | 0x10); v11 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v10 ) return std::ios::clear(v11, 0); else return std::ios::clear(v11, *((_DWORD *)v11 + 5) | 4); } //----- (004A7EA0) -------------------------------------------------------- int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char **a3, int a4) { char *v5; // edi int v6; // eax char *v7; // ecx int v8; // eax int v9; // edx char *v10; // eax char *v11; // ecx v5 = this + 4; v6 = a2[1]; *(_DWORD *)this = v6; v7 = &this[*(_DWORD *)(v6 - 12)]; *(_DWORD *)v7 = a2[2]; std::ios::init((int)v7, 0); v8 = *a2; v9 = a2[3]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; std::filebuf::basic_filebuf((int)v5); std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); v10 = std::filebuf::open(v5, *a3, a4 | 0x10); v11 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; if ( v10 ) return std::ios::clear(v11, 0); else return std::ios::clear(v11, *((_DWORD *)v11 + 5) | 4); } //----- (004A7F80) -------------------------------------------------------- BOOL __thiscall std::ofstream::basic_ofstream(int *this, int *a2) { int v3; // edi int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx v3 = (int)(this + 1); v4 = a2[1]; *this = v4; v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); *v5 = a2[2]; std::ios::init((int)v5, 0); v6 = *a2; v7 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; std::filebuf::basic_filebuf(v3); return std::ios::init((int)this + *(_DWORD *)(*this - 12), v3); } //----- (004A8010) -------------------------------------------------------- void __fastcall std::ofstream::~ofstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 1; *(v2 - 1) = &off_4F627C; v2[27] = off_4F6290; *v2 = &off_4F6090; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 11); a1[1] = &off_4F6414; std::locale::~locale((_DWORD **)a1 + 8); *a1 = &unk_4F1148; a1[28] = &off_4F6E10; std::ios_base::~ios_base((int)(a1 + 28)); operator delete(a1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F627C: using guessed type int (*off_4F627C)(); // 4F6290: using guessed type int (*off_4F6290[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004A8080) -------------------------------------------------------- void __fastcall std::ofstream::~ofstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 1) = &off_4F627C; v2[27] = off_4F6290; *v2 = &off_4F6090; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F1148; *(_DWORD *)(a1 + 112) = &off_4F6E10; std::ios_base::~ios_base(a1 + 112); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F627C: using guessed type int (*off_4F627C)(); // 4F6290: using guessed type int (*off_4F6290[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004A80F0) -------------------------------------------------------- int __thiscall std::ofstream::~ofstream(_DWORD *this, int *a2) { _DWORD *v3; // ecx int v4; // eax int v5; // eax int result; // eax v3 = this + 1; v4 = *a2; *(v3 - 1) = *a2; *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 4) = a2[3]; *v3 = &off_4F6090; std::filebuf::close((int)v3); std::__basic_file::~__basic_file(this + 11); this[1] = &off_4F6414; std::locale::~locale((_DWORD **)this + 8); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(_DWORD *)((char *)this + result) = a2[2]; return result; } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004A8160) -------------------------------------------------------- _DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // dl char v7; // dl std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; *((_BYTE *)v4 + 117) = v7; std::filebuf::operator=((int)(this + 1), (int)(a2 + 1)); return this; } // 4A8184: variable 'v9' is possibly undefined //----- (004A81F0) -------------------------------------------------------- int __thiscall std::wofstream::open(int *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10) == 0; v5 = *this; if ( v4 ) return std::wios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004A8260) -------------------------------------------------------- int __thiscall std::wofstream::open(int *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10) == 0; v5 = *this; if ( v4 ) return std::wios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004A82D0) -------------------------------------------------------- int __thiscall std::wofstream::open(int *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open((int)(this + 1), *a2, a3 | 0x10) == 0; v5 = *this; if ( v4 ) return std::wios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004A8340) -------------------------------------------------------- int __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // dx std::ios_base *v8; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v8); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); *((_BYTE *)v4 + 118) = v6; return std::wfilebuf::swap((int)(this + 1), (int)(a2 + 1)); } // 4A8364: variable 'v8' is possibly undefined //----- (004A83D0) -------------------------------------------------------- int __fastcall std::wofstream::close(_DWORD *a1) { int result; // eax result = std::wfilebuf::close((int)(a1 + 1)); if ( !result ) return std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (004A8410) -------------------------------------------------------- bool __fastcall std::wofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (004A8420) -------------------------------------------------------- int __thiscall std::wofstream::basic_ofstream(_DWORD *this, int *a2) { _DWORD *v2; // edi int v4; // eax int v5; // edx int v6; // eax int result; // eax std::ios_base *v8; // [esp+4h] [ebp-34h] char *v9; // [esp+1Ch] [ebp-1Ch] v2 = this + 29; std::ios_base::ios_base(this + 29); *((_BYTE *)this + 234) = 0; *((_WORD *)this + 116) = 0; v4 = *a2; this[57] = 0; v5 = *(_DWORD *)(v4 - 12); *this = &unk_4F1170; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[29] = &unk_4F1184; v9 = (char *)a2 + v5; std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v5), v8); std::wios::_M_cache_locale(v2, (int)(this + 56)); *this = &off_4F62A4; this[59] = 0; v6 = *((_DWORD *)v9 + 28); this[29] = off_4F62B8; *((_DWORD *)v9 + 28) = 0; this[57] = v6; *((_WORD *)this + 116) = *((_WORD *)v9 + 58); *((_BYTE *)this + 234) = v9[118]; result = std::wfilebuf::basic_filebuf((int)(this + 1), (int)(a2 + 1)); this[59] = this + 1; return result; } // 4A8496: variable 'v8' is possibly undefined // 4F62A4: using guessed type int (*off_4F62A4)(); // 4F62B8: using guessed type int (*off_4F62B8[2])(); //----- (004A8540) -------------------------------------------------------- int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3) { int v3; // esi char *v5; // eax _DWORD *v6; // ecx v3 = (int)(this + 29); std::ios_base::ios_base(this + 29); *((_BYTE *)this + 234) = 0; this[57] = 0; *((_WORD *)this + 116) = 0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; *this = &unk_4F1170; this[29] = &unk_4F1184; std::wios::init(v3, 0); *this = &off_4F62A4; this[29] = off_4F62B8; std::wfilebuf::basic_filebuf((int)(this + 1)); std::wios::init(v3, (int)(this + 1)); v5 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10); v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v5 ) return std::wios::clear(v6, 0); else return std::wios::clear(v6, v6[5] | 4); } // 4F62A4: using guessed type int (*off_4F62A4)(); // 4F62B8: using guessed type int (*off_4F62B8[2])(); //----- (004A8670) -------------------------------------------------------- int __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3) { int v3; // esi char *v5; // eax _DWORD *v6; // ecx v3 = (int)(this + 29); std::ios_base::ios_base(this + 29); *((_BYTE *)this + 234) = 0; this[57] = 0; *((_WORD *)this + 116) = 0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; *this = &unk_4F1170; this[29] = &unk_4F1184; std::wios::init(v3, 0); *this = &off_4F62A4; this[29] = off_4F62B8; std::wfilebuf::basic_filebuf((int)(this + 1)); std::wios::init(v3, (int)(this + 1)); v5 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10); v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v5 ) return std::wios::clear(v6, 0); else return std::wios::clear(v6, v6[5] | 4); } // 4F62A4: using guessed type int (*off_4F62A4)(); // 4F62B8: using guessed type int (*off_4F62B8[2])(); //----- (004A87A0) -------------------------------------------------------- int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3) { int v3; // esi char *v5; // eax _DWORD *v6; // ecx v3 = (int)(this + 29); std::ios_base::ios_base(this + 29); *((_BYTE *)this + 234) = 0; this[57] = 0; *((_WORD *)this + 116) = 0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; *this = &unk_4F1170; this[29] = &unk_4F1184; std::wios::init(v3, 0); *this = &off_4F62A4; this[29] = off_4F62B8; std::wfilebuf::basic_filebuf((int)(this + 1)); std::wios::init(v3, (int)(this + 1)); v5 = std::wfilebuf::open((int)(this + 1), *a2, a3 | 0x10); v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v5 ) return std::wios::clear(v6, 0); else return std::wios::clear(v6, v6[5] | 4); } // 4F62A4: using guessed type int (*off_4F62A4)(); // 4F62B8: using guessed type int (*off_4F62B8[2])(); //----- (004A88D0) -------------------------------------------------------- BOOL __fastcall std::wofstream::basic_ofstream(int a1) { int v1; // esi v1 = a1 + 116; std::ios_base::ios_base((_DWORD *)(a1 + 116)); *(_BYTE *)(a1 + 234) = 0; *(_DWORD *)(a1 + 228) = 0; *(_WORD *)(a1 + 232) = 0; *(_DWORD *)(a1 + 236) = 0; *(_DWORD *)(a1 + 240) = 0; *(_DWORD *)(a1 + 244) = 0; *(_DWORD *)(a1 + 248) = 0; *(_DWORD *)a1 = &unk_4F1170; *(_DWORD *)(a1 + 116) = &unk_4F1184; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_4F62A4; *(_DWORD *)(a1 + 116) = off_4F62B8; std::wfilebuf::basic_filebuf(a1 + 4); return std::wios::init(v1, a1 + 4); } // 4F62A4: using guessed type int (*off_4F62A4)(); // 4F62B8: using guessed type int (*off_4F62B8[2])(); //----- (004A89B0) -------------------------------------------------------- int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // esi int v6; // edx char v7; // al int v8; // edx int v9; // eax int result; // eax std::ios_base *v11; // [esp+4h] [ebp-34h] std::ios_base *v12; // [esp+1Ch] [ebp-1Ch] v4 = a2[1]; *this = v4; v5 = (int)this + *(_DWORD *)(v4 - 12); *(_DWORD *)v5 = a2[2]; v12 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v5, v12, v11); std::wios::_M_cache_locale((_DWORD *)v5, v5 + 108); *(_DWORD *)(v5 + 120) = 0; v6 = *((_DWORD *)v12 + 28); *((_DWORD *)v12 + 28) = 0; *(_DWORD *)(v5 + 112) = v6; v7 = *((_BYTE *)v12 + 118); *(_WORD *)(v5 + 116) = *((_WORD *)v12 + 58); *(_BYTE *)(v5 + 118) = v7; v8 = a2[3]; v9 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; std::wfilebuf::basic_filebuf((int)(this + 1), (int)(a3 + 1)); result = *(_DWORD *)(*this - 12); *(int *)((char *)this + result + 120) = (int)(this + 1); return result; } // 4A89E5: variable 'v11' is possibly undefined //----- (004A8A80) -------------------------------------------------------- int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4) { int v5; // edi int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx char *v10; // eax _DWORD *v11; // ecx v5 = (int)(this + 1); v6 = a2[1]; *this = v6; v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12)); *v7 = a2[2]; std::wios::init((int)v7, 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; std::wfilebuf::basic_filebuf(v5); std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); v10 = std::wfilebuf::open(v5, a3, a4 | 0x10); v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v10 ) return std::wios::clear(v11, 0); else return std::wios::clear(v11, v11[5] | 4); } //----- (004A8B60) -------------------------------------------------------- int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4) { int v5; // edi int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx char *v10; // eax _DWORD *v11; // ecx v5 = (int)(this + 1); v6 = a2[1]; *this = v6; v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12)); *v7 = a2[2]; std::wios::init((int)v7, 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; std::wfilebuf::basic_filebuf(v5); std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); v10 = std::wfilebuf::open(v5, a3, a4 | 0x10); v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v10 ) return std::wios::clear(v11, 0); else return std::wios::clear(v11, v11[5] | 4); } //----- (004A8C40) -------------------------------------------------------- int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4) { int v5; // edi int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx char *v10; // eax _DWORD *v11; // ecx v5 = (int)(this + 1); v6 = a2[1]; *this = v6; v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12)); *v7 = a2[2]; std::wios::init((int)v7, 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; std::wfilebuf::basic_filebuf(v5); std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); v10 = std::wfilebuf::open(v5, *a3, a4 | 0x10); v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v10 ) return std::wios::clear(v11, 0); else return std::wios::clear(v11, v11[5] | 4); } //----- (004A8D20) -------------------------------------------------------- BOOL __thiscall std::wofstream::basic_ofstream(int *this, int *a2) { int v3; // edi int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx v3 = (int)(this + 1); v4 = a2[1]; *this = v4; v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); *v5 = a2[2]; std::wios::init((int)v5, 0); v6 = *a2; v7 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; std::wfilebuf::basic_filebuf(v3); return std::wios::init((int)this + *(_DWORD *)(*this - 12), v3); } //----- (004A8DB0) -------------------------------------------------------- void __fastcall std::wofstream::~wofstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 1; *(v2 - 1) = &off_4F62A4; v2[28] = off_4F62B8; *v2 = &off_4F60D0; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 11); a1[1] = &off_4F6454; std::locale::~locale((_DWORD **)a1 + 8); *a1 = &unk_4F1170; a1[29] = &off_4F6E20; std::ios_base::~ios_base((int)(a1 + 29)); operator delete(a1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F62A4: using guessed type int (*off_4F62A4)(); // 4F62B8: using guessed type int (*off_4F62B8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004A8E20) -------------------------------------------------------- void __fastcall std::wofstream::~wofstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 1) = &off_4F62A4; v2[28] = off_4F62B8; *v2 = &off_4F60D0; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F1170; *(_DWORD *)(a1 + 116) = &off_4F6E20; std::ios_base::~ios_base(a1 + 116); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F62A4: using guessed type int (*off_4F62A4)(); // 4F62B8: using guessed type int (*off_4F62B8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004A8E90) -------------------------------------------------------- int __thiscall std::wofstream::~wofstream(_DWORD *this, int *a2) { _DWORD *v3; // ecx int v4; // eax int v5; // eax int result; // eax v3 = this + 1; v4 = *a2; *(v3 - 1) = *a2; *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 4) = a2[3]; *v3 = &off_4F60D0; std::wfilebuf::close((int)v3); std::__basic_file::~__basic_file(this + 11); this[1] = &off_4F6454; std::locale::~locale((_DWORD **)this + 8); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(_DWORD *)((char *)this + result) = a2[2]; return result; } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004A8F00) -------------------------------------------------------- _DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // dx std::ios_base *v8; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v8); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); *((_BYTE *)v4 + 118) = v6; std::wfilebuf::operator=((int)(this + 1), (int)(a2 + 1)); return this; } // 4A8F24: variable 'v8' is possibly undefined //----- (004A8F90) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::codecvt::codecvt(this, a3); *this = &off_4F62C8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F62C8: using guessed type int (*off_4F62C8)(); //----- (004A9030) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp unsigned __int8 result; // al bool v6; // zf v4 = *a2; result = std::codecvt::codecvt(this, a3); *this = &off_4F62C8; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); } } return result; } // 4F62C8: using guessed type int (*off_4F62C8)(); //----- (004A90D0) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp unsigned __int8 result; // al bool v6; // zf v4 = *a2; result = std::codecvt::codecvt(this, a3); *this = &off_4F62C8; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); } } return result; } // 4F62C8: using guessed type int (*off_4F62C8)(); //----- (004A9170) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::codecvt::codecvt(this, a3); *this = &off_4F62C8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F62C8: using guessed type int (*off_4F62C8)(); //----- (004A9210) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp unsigned __int8 result; // al bool v6; // zf v4 = *a2; result = std::codecvt::codecvt(this, a3); *this = &off_4F62C8; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); } } return result; } // 4F62C8: using guessed type int (*off_4F62C8)(); //----- (004A92B0) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp unsigned __int8 result; // al bool v6; // zf v4 = *a2; result = std::codecvt::codecvt(this, a3); *this = &off_4F62C8; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); } } return result; } // 4F62C8: using guessed type int (*off_4F62C8)(); //----- (004A9350) -------------------------------------------------------- void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F62C8; std::codecvt::~codecvt(v2); operator delete(a1); } // 4A935C: variable 'v2' is possibly undefined // 4F62C8: using guessed type int (*off_4F62C8)(); //----- (004A9370) -------------------------------------------------------- void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F62C8; std::codecvt::~codecvt(a1); } // 4A9370: variable 'v1' is possibly undefined // 4F62C8: using guessed type int (*off_4F62C8)(); //----- (004A9380) -------------------------------------------------------- void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F62C8; std::codecvt::~codecvt(a1); } // 4A9380: variable 'v1' is possibly undefined // 4F62C8: using guessed type int (*off_4F62C8)(); //----- (004A9390) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::codecvt::codecvt(this, a3); *this = &off_4F62F4; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F62F4: using guessed type int (*off_4F62F4)(); //----- (004A9430) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp unsigned __int8 result; // al bool v6; // zf v4 = *a2; result = std::codecvt::codecvt(this, a3); *this = &off_4F62F4; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); } } return result; } // 4F62F4: using guessed type int (*off_4F62F4)(); //----- (004A94D0) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp unsigned __int8 result; // al bool v6; // zf v4 = *a2; result = std::codecvt::codecvt(this, a3); *this = &off_4F62F4; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); } } return result; } // 4F62F4: using guessed type int (*off_4F62F4)(); //----- (004A9570) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::codecvt::codecvt(this, a3); *this = &off_4F62F4; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F62F4: using guessed type int (*off_4F62F4)(); //----- (004A9610) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp unsigned __int8 result; // al bool v6; // zf v4 = *a2; result = std::codecvt::codecvt(this, a3); *this = &off_4F62F4; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); } } return result; } // 4F62F4: using guessed type int (*off_4F62F4)(); //----- (004A96B0) -------------------------------------------------------- unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp unsigned __int8 result; // al bool v6; // zf v4 = *a2; result = std::codecvt::codecvt(this, a3); *this = &off_4F62F4; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); } } return result; } // 4F62F4: using guessed type int (*off_4F62F4)(); //----- (004A9750) -------------------------------------------------------- void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F62F4; std::codecvt::~codecvt(v2); operator delete(a1); } // 4A975C: variable 'v2' is possibly undefined // 4F62F4: using guessed type int (*off_4F62F4)(); //----- (004A9770) -------------------------------------------------------- void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F62F4; std::codecvt::~codecvt(a1); } // 4A9770: variable 'v1' is possibly undefined // 4F62F4: using guessed type int (*off_4F62F4)(); //----- (004A9780) -------------------------------------------------------- void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F62F4; std::codecvt::~codecvt(a1); } // 4A9780: variable 'v1' is possibly undefined // 4F62F4: using guessed type int (*off_4F62F4)(); //----- (004A9790) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_4F6BD0; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F6320; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; LOBYTE(c_locale) = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return c_locale; } // 4F6320: using guessed type int (*off_4F6320)(); // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004A9850) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp int c_locale; // eax bool v6; // zf v4 = *a2; *this = &off_4F6BD0; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F6320; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; LOBYTE(c_locale) = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( (std::locale::facet *)(this + 2), (int **)v4); } } return c_locale; } // 4F6320: using guessed type int (*off_4F6320)(); // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004A9920) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_4F6BD0; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F6320; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; LOBYTE(c_locale) = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return c_locale; } // 4F6320: using guessed type int (*off_4F6320)(); // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004A99E0) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp int c_locale; // eax bool v6; // zf v4 = *a2; *this = &off_4F6BD0; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F6320; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; LOBYTE(c_locale) = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( (std::locale::facet *)(this + 2), (int **)v4); } } return c_locale; } // 4F6320: using guessed type int (*off_4F6320)(); // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004A9AB0) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6BD0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4A9AC9: variable 'v2' is possibly undefined // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004A9AE0) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6BD0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4A9AE9: variable 'v1' is possibly undefined // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004A9B10) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6BD0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4A9B19: variable 'v1' is possibly undefined // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004A9B40) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_4F6BEC; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F633C; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; LOBYTE(c_locale) = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return c_locale; } // 4F633C: using guessed type int (*off_4F633C)(); // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004A9C00) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp int c_locale; // eax bool v6; // zf v4 = *a2; *this = &off_4F6BEC; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F633C; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; LOBYTE(c_locale) = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( (std::locale::facet *)(this + 2), (int **)v4); } } return c_locale; } // 4F633C: using guessed type int (*off_4F633C)(); // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004A9CD0) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_4F6BEC; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F633C; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; LOBYTE(c_locale) = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return c_locale; } // 4F633C: using guessed type int (*off_4F633C)(); // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004A9D90) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp int c_locale; // eax bool v6; // zf v4 = *a2; *this = &off_4F6BEC; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F633C; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; LOBYTE(c_locale) = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( (std::locale::facet *)(this + 2), (int **)v4); } } return c_locale; } // 4F633C: using guessed type int (*off_4F633C)(); // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004A9E60) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6BEC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4A9E79: variable 'v2' is possibly undefined // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004A9E90) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6BEC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4A9E99: variable 'v1' is possibly undefined // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004A9EC0) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6BEC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4A9EC9: variable 'v1' is possibly undefined // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004A9EF0) -------------------------------------------------------- _DWORD *__userpurge std::overflow_error::overflow_error@( _DWORD *a1@, std::overflow_error *this, const char *a3) { _DWORD *result; // eax const char *v5; // [esp+4h] [ebp-18h] result = std::runtime_error::runtime_error((int)a1, this, v5); *a1 = &off_4F6358; return result; } // 4A9EFD: variable 'v5' is possibly undefined // 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); //----- (004A9F20) -------------------------------------------------------- _DWORD *__thiscall std::overflow_error::overflow_error(_DWORD *this, int a2) { _DWORD *result; // eax result = std::runtime_error::runtime_error(this, a2); *this = &off_4F6358; return result; } // 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); //----- (004A9F50) -------------------------------------------------------- unsigned int *__userpurge std::overflow_error::overflow_error@( _DWORD *a1@, unsigned int **this, const std::string *a3) { unsigned int *result; // eax const std::string *v5; // [esp+4h] [ebp-18h] result = std::runtime_error::runtime_error((int)a1, this, v5); *a1 = &off_4F6358; return result; } // 4A9F5D: variable 'v5' is possibly undefined // 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); //----- (004A9F80) -------------------------------------------------------- void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) { *a1 = &off_4F6358; std::runtime_error::~runtime_error(a1); operator delete(a1); } // 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); //----- (004A9FA0) -------------------------------------------------------- void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) { *a1 = &off_4F6358; std::runtime_error::~runtime_error(a1); } // 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); //----- (004A9FB0) -------------------------------------------------------- void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1) { *a1 = 0; a1[1] = 0; a1[2] = a1; a1[3] = a1; a1[4] = 0; } //----- (004A9FCC) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) { operator delete(a1); } //----- (004A9FDC) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) { void **v1; // ebx v1 = *(void ***)(a1 + 12); if ( v1 ) { std::string::_M_dispose(v1 + 12); std::string::_M_dispose(v1 + 6); std::string::_M_dispose(v1); operator delete(v1); } } //----- (004AA010) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004AA018) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( void *a1) { operator delete(a1); } //----- (004AA02C) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy( void *a1) { operator delete(a1); } //----- (004AA03C) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) { void *v1; // ebx v1 = *(void **)(a1 + 12); if ( v1 ) { WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(*(_DWORD *)(a1 + 12)); operator delete(v1); } } //----- (004AA060) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter( int a1) { return 0; } //----- (004AA068) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( void *a1) { operator delete(a1); } //----- (004AA07C) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) { operator delete(a1); } //----- (004AA08C) -------------------------------------------------------- int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) { int v1; // ecx int result; // eax v1 = *(_DWORD *)(a1 + 12); if ( v1 ) return (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); return result; } //----- (004AA09C) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004AA0A4) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) { operator delete(a1); } //----- (004AA0B8) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) { operator delete(a1); } //----- (004AA0C8) -------------------------------------------------------- int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) { int v1; // ecx int result; // eax v1 = *(_DWORD *)(a1 + 12); if ( v1 ) return (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); return result; } //----- (004AA0D8) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004AA0E0) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) { operator delete(a1); } //----- (004AA0F4) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) { operator delete(a1); } //----- (004AA104) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) { volatile signed __int32 **v1; // ebx v1 = *(volatile signed __int32 ***)(a1 + 12); if ( v1 ) { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v1 + 2); operator delete(v1); } } //----- (004AA128) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004AA130) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) { operator delete(a1); } //----- (004AA144) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) { operator delete(a1); } //----- (004AA154) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) { void *v1; // ebx v1 = *(void **)(a1 + 12); if ( v1 ) { std::string::_M_dispose(*(void ***)(a1 + 12)); operator delete(v1); } } //----- (004AA178) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004AA180) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) { operator delete(a1); } //----- (004AA1A0) -------------------------------------------------------- _DWORD *__thiscall std::streambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) { _DWORD *result; // eax _DWORD *(__thiscall *v7)(_DWORD *, int, int, int, int, int); // edx result = this; v7 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int))(*(_DWORD *)a2 + 16); if ( v7 == std::streambuf::seekoff ) { *this = -1; this[1] = -1; this[2] = 0; } else { v7(this, a2, a3, a4, a5, a6); return this; } return result; } //----- (004AA220) -------------------------------------------------------- _DWORD *__thiscall std::streambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) { _DWORD *result; // eax _DWORD *(__thiscall *v8)(_DWORD *, int, int, int, int, int, int); // edx result = this; v8 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int, int))(*(_DWORD *)a2 + 20); if ( v8 == std::streambuf::seekpos ) { *this = -1; this[1] = -1; this[2] = 0; } else { v8(this, a2, a3, a4, a5, a6, a7); return this; } return result; } //----- (004AA2C0) -------------------------------------------------------- int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2) { int result; // eax result = a2; this[2] += a2; return result; } //----- (004AA2D0) -------------------------------------------------------- int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2) { int result; // eax result = a2; this[5] += a2; return result; } //----- (004AA2E0) -------------------------------------------------------- int __thiscall std::streambuf::setg(_DWORD *this, int a2, int a3, int a4) { int result; // eax this[1] = a2; this[2] = a3; result = a4; this[3] = a4; return result; } //----- (004AA300) -------------------------------------------------------- int __thiscall std::streambuf::setp(_DWORD *this, int a2, int a3) { int result; // eax this[5] = a2; this[4] = a2; result = a3; this[6] = a3; return result; } //----- (004AA320) -------------------------------------------------------- void __thiscall std::streambuf::swap(int this, int a2) { volatile signed __int32 **v2; // esi int v3; // edx int v4; // ebx int v5; // edx int v6; // ebx int v7; // edx int v8; // ebx int v9; // edx int v10; // ebx int v11; // edx int v12; // ebx int v13; // edx const std::locale *v14; // [esp+4h] [ebp-28h] _DWORD *v15[4]; // [esp+1Ch] [ebp-10h] BYREF v2 = (volatile signed __int32 **)(this + 28); v3 = *(_DWORD *)(this + 4); *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = v3; v5 = *(_DWORD *)(this + 8); *(_DWORD *)(this + 8) = v4; v6 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a2 + 8) = v5; v7 = *(_DWORD *)(this + 12); *(_DWORD *)(this + 12) = v6; v8 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 12) = v7; v9 = *(_DWORD *)(this + 16); *(_DWORD *)(this + 16) = v8; v10 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 16) = v9; v11 = *(_DWORD *)(this + 20); *(_DWORD *)(this + 20) = v10; v12 = *(_DWORD *)(a2 + 24); *(_DWORD *)(a2 + 20) = v11; v13 = *(_DWORD *)(this + 24); *(_DWORD *)(this + 24) = v12; *(_DWORD *)(a2 + 24) = v13; std::locale::locale((volatile signed __int32 **)v15, (volatile signed __int32 **)(this + 28), v14); std::locale::operator=(v2, (volatile signed __int32 **)(a2 + 28)); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v15); std::locale::~locale(v15); } // 4AA381: variable 'v14' is possibly undefined //----- (004AA3C0) -------------------------------------------------------- int std::streambuf::sync() { return 0; } //----- (004AA3D0) -------------------------------------------------------- int __thiscall std::streambuf::gbump(_DWORD *this, int a2) { int result; // eax result = a2; this[2] += a2; return result; } //----- (004AA3F0) -------------------------------------------------------- int __thiscall std::streambuf::pbump(_DWORD *this, int a2) { int result; // eax result = a2; this[5] += a2; return result; } //----- (004AA400) -------------------------------------------------------- int __fastcall std::streambuf::sgetc(_DWORD *a1) { unsigned __int8 *v1; // eax int result; // eax int (*v3)(void); // edx v1 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v1 < a1[3] ) return *v1; v3 = *(int (**)(void))(*a1 + 36); result = -1; if ( v3 != std::streambuf::underflow ) return v3(); return result; } //----- (004AA430) -------------------------------------------------------- int __fastcall std::streambuf::sgetn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); } //----- (004AA440) -------------------------------------------------------- int __thiscall std::streambuf::sputc(_DWORD *this, unsigned __int8 a2) { unsigned __int8 *v2; // eax int v3; // ebx int (__stdcall *v5)(int); // eax v2 = (unsigned __int8 *)this[5]; v3 = a2; if ( this[6] > (unsigned int)v2 ) { *v2 = a2; ++this[5]; return v3; } v5 = *(int (__stdcall **)(int))(*this + 52); if ( v5 == std::streambuf::overflow ) return -1; return v5(a2); } //----- (004AA480) -------------------------------------------------------- int __fastcall std::streambuf::sputn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); } //----- (004AA490) -------------------------------------------------------- int __fastcall std::streambuf::uflow(_DWORD *a1) { int (*v1)(); // eax unsigned __int8 *v4; // eax int v5; // edx v1 = *(int (**)())(*a1 + 36); if ( v1 == std::streambuf::underflow ) return -1; if ( v1() == -1 ) return -1; v4 = (unsigned __int8 *)a1[2]; v5 = *v4; a1[2] = v4 + 1; return v5; } //----- (004AA4E0) -------------------------------------------------------- int __fastcall std::streambuf::sbumpc(_DWORD *a1) { unsigned __int8 *v1; // eax int v2; // edx int (*v4)(void); // edx int (*v5)(); // eax unsigned __int8 *v6; // eax int v7; // edx v1 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v1 < a1[3] ) { v2 = *v1; a1[2] = v1 + 1; return v2; } v4 = *(int (**)(void))(*a1 + 40); if ( (char *)v4 != (char *)std::streambuf::uflow ) return v4(); v5 = *(int (**)())(*a1 + 36); if ( v5 == std::streambuf::underflow ) return -1; if ( v5() == -1 ) return -1; v6 = (unsigned __int8 *)a1[2]; v7 = *v6; a1[2] = v6 + 1; return v7; } //----- (004AA560) -------------------------------------------------------- int __fastcall std::streambuf::sbumpc(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } //----- (004AA570) -------------------------------------------------------- void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3) { return this; } //----- (004AA580) -------------------------------------------------------- int __fastcall std::streambuf::snextc(_DWORD *a1) { unsigned int v1; // eax unsigned int v2; // edx unsigned __int8 *v3; // eax int (*v5)(void); // edx int (*v6)(); // eax int (*v7)(); // eax int v8; // eax _DWORD *v9; // ecx unsigned __int8 *v10; // eax unsigned int v11; // edx v1 = a1[2]; v2 = a1[3]; if ( v1 < v2 ) { v3 = (unsigned __int8 *)(v1 + 1); a1[2] = v3; if ( (unsigned int)v3 < v2 ) return *v3; v7 = *(int (**)())(*a1 + 36); if ( v7 == std::streambuf::underflow ) return -1; return v7(); } v5 = *(int (**)(void))(*a1 + 40); if ( (char *)v5 == (char *)std::streambuf::uflow ) { v6 = *(int (**)())(*a1 + 36); if ( v6 == std::streambuf::underflow || v6() == -1 ) return -1; v9 = a1; v11 = a1[3]; v10 = (unsigned __int8 *)(a1[2] + 1); a1[2] = v10; } else { v8 = v5(); v9 = a1; if ( v8 == -1 ) return -1; v10 = (unsigned __int8 *)a1[2]; v11 = a1[3]; } if ( (unsigned int)v10 < v11 ) return *v10; v7 = *(int (**)())(*v9 + 36); if ( v7 == std::streambuf::underflow ) return -1; return v7(); } //----- (004AA640) -------------------------------------------------------- int (*__fastcall std::streambuf::stossc(_DWORD *a1))(void) { unsigned int v1; // eax int (*result)(void); // eax int (*v3)(void); // edx v1 = a1[2]; if ( v1 >= a1[3] ) { v3 = *(int (**)(void))(*a1 + 40); if ( (char *)v3 == (char *)std::streambuf::uflow ) { result = *(int (**)(void))(*a1 + 36); if ( result != std::streambuf::underflow ) { result = (int (*)(void))result(); if ( result != (int (*)(void))-1 ) ++a1[2]; } } else { return (int (*)(void))v3(); } } else { result = (int (*)(void))(v1 + 1); a1[2] = result; } return result; } //----- (004AA6A0) -------------------------------------------------------- int __thiscall std::streambuf::xsgetn(_DWORD *this, char *a2, int a3) { int v5; // esi const void *Src; // ecx int v7; // eax size_t Size; // ebx char *v10; // ebx int (__fastcall *v11)(_DWORD *); // edx int (*v12)(); // eax _BYTE *v13; // edx int v14; // eax char *v15; // [esp+30h] [ebp+4h] if ( a3 > 0 ) { v5 = 0; while ( 1 ) { Src = (const void *)this[2]; v7 = this[3] - (_DWORD)Src; if ( v7 ) { Size = a3 - v5; if ( a3 - v5 > v7 ) Size = this[3] - (_DWORD)Src; v5 += Size; v15 = a2; memcpy(a2, Src, Size); this[2] += Size; if ( a3 <= v5 ) return v5; v10 = &v15[Size]; } else { v10 = a2; } v11 = *(int (__fastcall **)(_DWORD *))(*this + 40); if ( v11 == std::streambuf::uflow ) { v12 = *(int (**)())(*this + 36); if ( v12 == std::streambuf::underflow || ((int (__fastcall *)(_DWORD *))v12)(this) == -1 ) return v5; v13 = (_BYTE *)this[2]; LOBYTE(v14) = *v13; this[2] = v13 + 1; } else { v14 = v11(this); if ( v14 == -1 ) return v5; } ++v5; *v10 = v14; a2 = v10 + 1; if ( a3 <= v5 ) return v5; } } return 0; } //----- (004AA770) -------------------------------------------------------- int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *a2, int a3) { int v5; // ebx void *v6; // ecx int v7; // eax size_t Size; // edx int (__stdcall *v10)(int); // eax size_t v11; // [esp+1Ch] [ebp-20h] if ( a3 > 0 ) { v5 = 0; while ( 1 ) { v6 = (void *)this[5]; v7 = this[6] - (_DWORD)v6; if ( v7 ) { Size = a3 - v5; if ( a3 - v5 > v7 ) Size = this[6] - (_DWORD)v6; v11 = Size; memcpy(v6, a2, Size); this[5] += v11; v5 += v11; if ( a3 <= v5 ) return v5; a2 += v11; } v10 = *(int (__stdcall **)(int))(*this + 52); if ( v10 != std::streambuf::overflow && ((int (__thiscall *)(_DWORD *, _DWORD))v10)(this, *a2) != -1 ) { ++v5; ++a2; if ( a3 > v5 ) continue; } return v5; } } return 0; } //----- (004AA810) -------------------------------------------------------- int __fastcall std::streambuf::pubsync(int a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*(_DWORD *)a1 + 24); if ( v1 == std::streambuf::sync ) return 0; else return v1(); } //----- (004AA830) -------------------------------------------------------- _DWORD *__thiscall std::streambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) { _DWORD *result; // eax *this = -1; result = this; this[1] = -1; this[2] = 0; return result; } //----- (004AA850) -------------------------------------------------------- _DWORD *__thiscall std::streambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) { _DWORD *result; // eax result = this; *this = -1; this[1] = -1; this[2] = 0; return result; } //----- (004AA870) -------------------------------------------------------- int __fastcall std::streambuf::sungetc(_DWORD *a1) { unsigned int v1; // eax int result; // eax int (__stdcall *v3)(int); // edx v1 = a1[2]; if ( a1[1] >= v1 ) { v3 = *(int (__stdcall **)(int))(*a1 + 44); result = -1; if ( v3 != std::streambuf::pbackfail ) return v3(-1); } else { a1[2] = v1 - 1; return *(unsigned __int8 *)(v1 - 1); } return result; } //----- (004AA8C0) -------------------------------------------------------- int __fastcall std::streambuf::in_avail(_DWORD *a1) { int result; // eax int (*v2)(void); // edx result = a1[3] - a1[2]; if ( !result ) { v2 = *(int (**)(void))(*a1 + 28); if ( v2 != std::streambuf::showmanyc ) return v2(); } return result; } //----- (004AA8F0) -------------------------------------------------------- int __stdcall std::streambuf::overflow(int a1) { return -1; } //----- (004AA900) -------------------------------------------------------- volatile signed __int32 **__thiscall std::streambuf::pubimbue( volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3) { int (__stdcall *v4)(int); // eax const std::locale *v6; // [esp+4h] [ebp-24h] std::locale::locale(this, a2 + 7, v6); v4 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); if ( v4 != std::streambuf::imbue ) ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v4)(a2, a3); std::locale::operator=(a2 + 7, a3); return this; } // 4AA914: variable 'v6' is possibly undefined // 4AA3E0: using guessed type int __stdcall std::streambuf::imbue(int); //----- (004AA970) -------------------------------------------------------- int __stdcall std::streambuf::pbackfail(int a1) { return -1; } //----- (004AA980) -------------------------------------------------------- int __thiscall std::streambuf::pubsetbuf(void *this, int a2, int a3) { int result; // eax void *(__thiscall *v4)(void *, int, int); // edx result = (int)this; v4 = *(void *(__thiscall **)(void *, int, int))(*(_DWORD *)this + 12); if ( v4 != std::streambuf::setbuf ) return ((int (__stdcall *)(int, int))v4)(a2, a3); return result; } //----- (004AA9A0) -------------------------------------------------------- int std::streambuf::showmanyc() { return 0; } //----- (004AA9B0) -------------------------------------------------------- int __thiscall std::streambuf::sputbackc(_DWORD *this, unsigned __int8 a2) { unsigned int v2; // eax int result; // eax v2 = this[2]; if ( this[1] < v2 && *(_BYTE *)(v2 - 1) == a2 ) { this[2] = v2 - 1; return *(unsigned __int8 *)(v2 - 1); } else { result = -1; if ( *(int (__stdcall **)(int))(*this + 44) != std::streambuf::pbackfail ) return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 44))(this, a2); } return result; } //----- (004AA9F0) -------------------------------------------------------- int std::streambuf::underflow() { return -1; } //----- (004AAA00) -------------------------------------------------------- volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( _DWORD *a1@, int a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_4F6414; v3 = (volatile signed __int32 **)(a1 + 7); *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); } // 4F6414: using guessed type int (*off_4F6414)(); //----- (004AAA40) -------------------------------------------------------- int __fastcall std::streambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_4F6414; v1 = a1 + 7; *(v1 - 6) = 0; *(v1 - 5) = 0; *(v1 - 4) = 0; *(v1 - 3) = 0; *(v1 - 2) = 0; *(v1 - 1) = 0; return std::locale::locale(v1); } // 4F6414: using guessed type int (*off_4F6414)(); //----- (004AAA80) -------------------------------------------------------- volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( _DWORD *a1@, int a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_4F6414; v3 = (volatile signed __int32 **)(a1 + 7); *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); } // 4F6414: using guessed type int (*off_4F6414)(); //----- (004AAAC0) -------------------------------------------------------- int __fastcall std::streambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_4F6414; v1 = a1 + 7; *(v1 - 6) = 0; *(v1 - 5) = 0; *(v1 - 4) = 0; *(v1 - 3) = 0; *(v1 - 2) = 0; *(v1 - 1) = 0; return std::locale::locale(v1); } // 4F6414: using guessed type int (*off_4F6414)(); //----- (004AAB00) -------------------------------------------------------- void __fastcall std::streambuf::~streambuf(char *a1) { _DWORD **v2; // ecx v2 = (_DWORD **)(a1 + 28); *(v2 - 7) = &off_4F6414; std::locale::~locale(v2); operator delete(a1); } // 4F6414: using guessed type int (*off_4F6414)(); //----- (004AAB30) -------------------------------------------------------- void __fastcall std::streambuf::~streambuf(int a1) { *(_DWORD *)a1 = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4F6414: using guessed type int (*off_4F6414)(); //----- (004AAB40) -------------------------------------------------------- void __fastcall std::streambuf::~streambuf(int a1) { *(_DWORD *)a1 = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4F6414: using guessed type int (*off_4F6414)(); //----- (004AAB50) -------------------------------------------------------- volatile signed __int32 **__thiscall std::streambuf::operator=(volatile signed __int32 **this, int a2) { volatile signed __int32 **v3; // ecx v3 = this + 7; *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); std::locale::operator=(v3, (volatile signed __int32 **)(a2 + 28)); return this; } //----- (004AABA0) -------------------------------------------------------- _DWORD *__thiscall std::wstreambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) { _DWORD *result; // eax _DWORD *(__thiscall *v7)(_DWORD *, int, int, int, int, int); // edx result = this; v7 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int))(*(_DWORD *)a2 + 16); if ( v7 == std::wstreambuf::seekoff ) { *this = -1; this[1] = -1; this[2] = 0; } else { v7(this, a2, a3, a4, a5, a6); return this; } return result; } //----- (004AAC20) -------------------------------------------------------- _DWORD *__thiscall std::wstreambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) { _DWORD *result; // eax _DWORD *(__thiscall *v8)(_DWORD *, int, int, int, int, int, int); // edx result = this; v8 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int, int))(*(_DWORD *)a2 + 20); if ( v8 == std::wstreambuf::seekpos ) { *this = -1; this[1] = -1; this[2] = 0; } else { v8(this, a2, a3, a4, a5, a6, a7); return this; } return result; } //----- (004AACC0) -------------------------------------------------------- int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[2] += 2 * a2; return result; } //----- (004AACD0) -------------------------------------------------------- int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[5] += 2 * a2; return result; } //----- (004AACE0) -------------------------------------------------------- int __thiscall std::wstreambuf::setg(_DWORD *this, int a2, int a3, int a4) { int result; // eax this[1] = a2; this[2] = a3; result = a4; this[3] = a4; return result; } //----- (004AAD00) -------------------------------------------------------- int __thiscall std::wstreambuf::setp(_DWORD *this, int a2, int a3) { int result; // eax this[5] = a2; this[4] = a2; result = a3; this[6] = a3; return result; } //----- (004AAD20) -------------------------------------------------------- void __thiscall std::wstreambuf::swap(int this, int a2) { volatile signed __int32 **v2; // esi int v3; // edx int v4; // ebx int v5; // edx int v6; // ebx int v7; // edx int v8; // ebx int v9; // edx int v10; // ebx int v11; // edx int v12; // ebx int v13; // edx const std::locale *v14; // [esp+4h] [ebp-28h] _DWORD *v15[4]; // [esp+1Ch] [ebp-10h] BYREF v2 = (volatile signed __int32 **)(this + 28); v3 = *(_DWORD *)(this + 4); *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = v3; v5 = *(_DWORD *)(this + 8); *(_DWORD *)(this + 8) = v4; v6 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a2 + 8) = v5; v7 = *(_DWORD *)(this + 12); *(_DWORD *)(this + 12) = v6; v8 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 12) = v7; v9 = *(_DWORD *)(this + 16); *(_DWORD *)(this + 16) = v8; v10 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 16) = v9; v11 = *(_DWORD *)(this + 20); *(_DWORD *)(this + 20) = v10; v12 = *(_DWORD *)(a2 + 24); *(_DWORD *)(a2 + 20) = v11; v13 = *(_DWORD *)(this + 24); *(_DWORD *)(this + 24) = v12; *(_DWORD *)(a2 + 24) = v13; std::locale::locale((volatile signed __int32 **)v15, (volatile signed __int32 **)(this + 28), v14); std::locale::operator=(v2, (volatile signed __int32 **)(a2 + 28)); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v15); std::locale::~locale(v15); } // 4AAD81: variable 'v14' is possibly undefined //----- (004AADC0) -------------------------------------------------------- int std::wstreambuf::sync() { return 0; } //----- (004AADD0) -------------------------------------------------------- int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[2] += 2 * a2; return result; } //----- (004AADF0) -------------------------------------------------------- int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[5] += 2 * a2; return result; } //----- (004AAE00) -------------------------------------------------------- int __fastcall std::wstreambuf::sgetc(_DWORD *a1) { unsigned __int16 *v1; // eax int result; // eax int (*v3)(void); // edx v1 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v1 < a1[3] ) return *v1; v3 = *(int (**)(void))(*a1 + 36); result = -1; if ( v3 != std::wstreambuf::underflow ) return v3(); return result; } //----- (004AAE30) -------------------------------------------------------- int __fastcall std::wstreambuf::sgetn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); } //----- (004AAE40) -------------------------------------------------------- int __thiscall std::wstreambuf::sputc(_DWORD *this, int a2) { _WORD *v2; // eax int result; // eax v2 = (_WORD *)this[5]; if ( this[6] <= (unsigned int)v2 ) { result = -1; if ( *(int (__stdcall **)(int))(*this + 52) != std::wstreambuf::overflow ) return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 52))(this, (unsigned __int16)a2); } else { *v2 = a2; this[5] = v2 + 1; return a2; } return result; } //----- (004AAE80) -------------------------------------------------------- int __fastcall std::wstreambuf::sputn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); } //----- (004AAE90) -------------------------------------------------------- int __fastcall std::wstreambuf::uflow(_DWORD *a1) { int (*v1)(); // eax unsigned __int16 *v4; // eax int v5; // edx v1 = *(int (**)())(*a1 + 36); if ( v1 == std::wstreambuf::underflow ) return -1; if ( (unsigned __int16)v1() == 0xFFFF ) return -1; v4 = (unsigned __int16 *)a1[2]; v5 = *v4; a1[2] = v4 + 1; return v5; } //----- (004AAEE0) -------------------------------------------------------- int __fastcall std::wstreambuf::sbumpc(_DWORD *a1) { unsigned __int16 *v1; // eax int v2; // edx int (*v4)(void); // edx int (*v5)(); // eax unsigned __int16 *v6; // eax int v7; // edx v1 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v1 < a1[3] ) { v2 = *v1; a1[2] = v1 + 1; return v2; } v4 = *(int (**)(void))(*a1 + 40); if ( (char *)v4 != (char *)std::wstreambuf::uflow ) return v4(); v5 = *(int (**)())(*a1 + 36); if ( v5 == std::wstreambuf::underflow ) return -1; if ( (unsigned __int16)v5() == 0xFFFF ) return -1; v6 = (unsigned __int16 *)a1[2]; v7 = *v6; a1[2] = v6 + 1; return v7; } //----- (004AAF60) -------------------------------------------------------- int __fastcall std::wstreambuf::sbumpc(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } //----- (004AAF70) -------------------------------------------------------- void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3) { return this; } //----- (004AAF80) -------------------------------------------------------- int __fastcall std::wstreambuf::snextc(_DWORD *a1) { __int16 *v1; // edx __int16 v2; // ax unsigned __int16 *v3; // eax int (*v5)(); // eax int (*v6)(void); // edx int (*v7)(); // eax __int16 v8; // ax _DWORD *v9; // ecx unsigned __int16 *v10; // eax __int16 *v11; // edx v1 = (__int16 *)a1[2]; if ( (unsigned int)v1 < a1[3] ) { v2 = *v1; a1[2] = v1 + 1; if ( v2 == -1 ) return -1; v3 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v3 < a1[3] ) return *v3; v5 = *(int (**)())(*a1 + 36); if ( v5 == std::wstreambuf::underflow ) return -1; return v5(); } v6 = *(int (**)(void))(*a1 + 40); if ( (char *)v6 == (char *)std::wstreambuf::uflow ) { v7 = *(int (**)())(*a1 + 36); if ( v7 == std::wstreambuf::underflow || (unsigned __int16)v7() == 0xFFFF ) return -1; v9 = a1; v11 = (__int16 *)a1[2]; v8 = *v11; a1[2] = v11 + 1; } else { v8 = v6(); v9 = a1; } if ( v8 == -1 ) return -1; v10 = (unsigned __int16 *)v9[2]; if ( (unsigned int)v10 < v9[3] ) return *v10; v5 = *(int (**)())(*v9 + 36); if ( v5 == std::wstreambuf::underflow ) return -1; return v5(); } //----- (004AB040) -------------------------------------------------------- int (*__fastcall std::wstreambuf::stossc(_DWORD *a1))(void) { unsigned int v1; // eax int (*result)(void); // eax int (*v3)(void); // edx v1 = a1[2]; if ( v1 >= a1[3] ) { v3 = *(int (**)(void))(*a1 + 40); if ( (char *)v3 == (char *)std::wstreambuf::uflow ) { result = *(int (**)(void))(*a1 + 36); if ( result != std::wstreambuf::underflow ) { result = (int (*)(void))result(); if ( (_WORD)result != 0xFFFF ) a1[2] += 2; } } else { return (int (*)(void))v3(); } } else { result = (int (*)(void))(v1 + 2); a1[2] = result; } return result; } //----- (004AB0A0) -------------------------------------------------------- int __thiscall std::wstreambuf::xsgetn(_DWORD *this, wchar_t *a2, int a3) { int v5; // esi const wchar_t *v6; // ebx const wchar_t *S2; // eax int v8; // ebx int v9; // ebx wchar_t *v11; // ebx int (__fastcall *v12)(_DWORD *); // edx int (*v13)(); // eax wchar_t *v14; // edx wchar_t v15; // ax size_t N; // [esp+8h] [ebp-24h] wchar_t *v17; // [esp+30h] [ebp+4h] if ( a3 > 0 ) { v5 = 0; while ( 1 ) { v6 = (const wchar_t *)this[3]; S2 = (const wchar_t *)this[2]; if ( v6 == S2 ) { v11 = a2; } else { v8 = v6 - S2; if ( v8 > a3 - v5 ) v8 = a3 - v5; N = v8; v5 += v8; v9 = v8; v17 = a2; wmemcpy(a2, S2, N); this[2] += v9 * 2; if ( a3 <= v5 ) return v5; v11 = &v17[v9]; } v12 = *(int (__fastcall **)(_DWORD *))(*this + 40); if ( v12 == std::wstreambuf::uflow ) { v13 = *(int (**)())(*this + 36); if ( v13 == std::wstreambuf::underflow || ((unsigned __int16 (__fastcall *)(_DWORD *))v13)(this) == 0xFFFF ) return v5; v14 = (wchar_t *)this[2]; v15 = *v14; this[2] = v14 + 1; } else { v15 = v12(this); } if ( v15 != 0xFFFF ) { ++v5; *v11 = v15; a2 = v11 + 1; if ( a3 > v5 ) continue; } return v5; } } return 0; } //----- (004AB170) -------------------------------------------------------- int __thiscall std::wstreambuf::xsputn(_DWORD *this, wchar_t *a2, int a3) { int v3; // esi wchar_t *v5; // ebx wchar_t *S1; // eax int v7; // ebx int v8; // ebx int (__stdcall *v10)(int); // eax size_t N; // [esp+8h] [ebp-34h] _DWORD *v12; // [esp+1Ch] [ebp-20h] _DWORD *v13; // [esp+1Ch] [ebp-20h] v3 = 0; if ( a3 > 0 ) { while ( 1 ) { v5 = (wchar_t *)this[6]; S1 = (wchar_t *)this[5]; if ( v5 != S1 ) { v7 = v5 - S1; if ( v7 > a3 - v3 ) v7 = a3 - v3; N = v7; v3 += v7; v8 = 2 * v7; v12 = this; wmemcpy(S1, a2, N); this = v12; v12[5] += v8; if ( a3 <= v3 ) return v3; a2 = (wchar_t *)((char *)a2 + v8); } v10 = *(int (__stdcall **)(int))(*this + 52); if ( v10 != std::wstreambuf::overflow ) { v13 = this; if ( (unsigned __int16)v10(*a2) != 0xFFFF ) { ++v3; ++a2; this = v13; if ( a3 > v3 ) continue; } } return v3; } } return v3; } //----- (004AB210) -------------------------------------------------------- int __fastcall std::wstreambuf::pubsync(int a1) { int (*v1)(void); // eax v1 = *(int (**)(void))(*(_DWORD *)a1 + 24); if ( v1 == std::wstreambuf::sync ) return 0; else return v1(); } //----- (004AB230) -------------------------------------------------------- _DWORD *__thiscall std::wstreambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) { _DWORD *result; // eax *this = -1; result = this; this[1] = -1; this[2] = 0; return result; } //----- (004AB250) -------------------------------------------------------- _DWORD *__thiscall std::wstreambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) { _DWORD *result; // eax result = this; *this = -1; this[1] = -1; this[2] = 0; return result; } //----- (004AB270) -------------------------------------------------------- int __fastcall std::wstreambuf::sungetc(_DWORD *a1) { unsigned int v1; // eax unsigned int v2; // edx int result; // eax int (__stdcall *v4)(int); // edx v1 = a1[2]; if ( a1[1] >= v1 ) { v4 = *(int (__stdcall **)(int))(*a1 + 44); result = -1; if ( v4 != std::wstreambuf::pbackfail ) return v4(0xFFFF); } else { v2 = v1 - 2; result = *(unsigned __int16 *)(v1 - 2); a1[2] = v2; } return result; } //----- (004AB2C0) -------------------------------------------------------- int __fastcall std::wstreambuf::in_avail(_DWORD *a1) { int v1; // eax int v2; // edx int result; // eax int (*v4)(void); // edx v1 = a1[3]; v2 = a1[2]; if ( v1 != v2 ) return (v1 - v2) >> 1; v4 = *(int (**)(void))(*a1 + 28); result = 0; if ( v4 != std::wstreambuf::showmanyc ) return v4(); return result; } //----- (004AB2F0) -------------------------------------------------------- int __stdcall std::wstreambuf::overflow(int a1) { return -1; } //----- (004AB300) -------------------------------------------------------- volatile signed __int32 **__thiscall std::wstreambuf::pubimbue( volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3) { int (__stdcall *v4)(int); // eax const std::locale *v6; // [esp+4h] [ebp-24h] std::locale::locale(this, a2 + 7, v6); v4 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); if ( v4 != std::wstreambuf::imbue ) ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v4)(a2, a3); std::locale::operator=(a2 + 7, a3); return this; } // 4AB314: variable 'v6' is possibly undefined // 4AADE0: using guessed type int __stdcall std::wstreambuf::imbue(int); //----- (004AB370) -------------------------------------------------------- int __stdcall std::wstreambuf::pbackfail(int a1) { return -1; } //----- (004AB380) -------------------------------------------------------- int __thiscall std::wstreambuf::pubsetbuf(void *this, int a2, int a3) { int result; // eax void *(__thiscall *v4)(void *, int, int); // edx result = (int)this; v4 = *(void *(__thiscall **)(void *, int, int))(*(_DWORD *)this + 12); if ( v4 != std::wstreambuf::setbuf ) return ((int (__stdcall *)(int, int))v4)(a2, a3); return result; } //----- (004AB3A0) -------------------------------------------------------- int std::wstreambuf::showmanyc() { return 0; } //----- (004AB3B0) -------------------------------------------------------- int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int a2) { unsigned int v2; // eax int result; // eax v2 = this[2]; if ( this[1] < v2 && *(_WORD *)(v2 - 2) == (_WORD)a2 ) { this[2] = v2 - 2; return a2; } else { result = -1; if ( *(int (__stdcall **)(int))(*this + 44) != std::wstreambuf::pbackfail ) return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 44))(this, (unsigned __int16)a2); } return result; } //----- (004AB3F0) -------------------------------------------------------- int std::wstreambuf::underflow() { return -1; } //----- (004AB400) -------------------------------------------------------- volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( _DWORD *a1@, int a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_4F6454; v3 = (volatile signed __int32 **)(a1 + 7); *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); } // 4F6454: using guessed type int (*off_4F6454)(); //----- (004AB440) -------------------------------------------------------- int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_4F6454; v1 = a1 + 7; *(v1 - 6) = 0; *(v1 - 5) = 0; *(v1 - 4) = 0; *(v1 - 3) = 0; *(v1 - 2) = 0; *(v1 - 1) = 0; return std::locale::locale(v1); } // 4F6454: using guessed type int (*off_4F6454)(); //----- (004AB480) -------------------------------------------------------- volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( _DWORD *a1@, int a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_4F6454; v3 = (volatile signed __int32 **)(a1 + 7); *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); } // 4F6454: using guessed type int (*off_4F6454)(); //----- (004AB4C0) -------------------------------------------------------- int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_4F6454; v1 = a1 + 7; *(v1 - 6) = 0; *(v1 - 5) = 0; *(v1 - 4) = 0; *(v1 - 3) = 0; *(v1 - 2) = 0; *(v1 - 1) = 0; return std::locale::locale(v1); } // 4F6454: using guessed type int (*off_4F6454)(); //----- (004AB500) -------------------------------------------------------- void __fastcall std::wstreambuf::~wstreambuf(char *a1) { _DWORD **v2; // ecx v2 = (_DWORD **)(a1 + 28); *(v2 - 7) = &off_4F6454; std::locale::~locale(v2); operator delete(a1); } // 4F6454: using guessed type int (*off_4F6454)(); //----- (004AB530) -------------------------------------------------------- void __fastcall std::wstreambuf::~wstreambuf(int a1) { *(_DWORD *)a1 = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4F6454: using guessed type int (*off_4F6454)(); //----- (004AB540) -------------------------------------------------------- void __fastcall std::wstreambuf::~wstreambuf(int a1) { *(_DWORD *)a1 = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4F6454: using guessed type int (*off_4F6454)(); //----- (004AB550) -------------------------------------------------------- volatile signed __int32 **__thiscall std::wstreambuf::operator=(volatile signed __int32 **this, int a2) { volatile signed __int32 **v3; // ecx v3 = this + 7; *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); std::locale::operator=(v3, (volatile signed __int32 **)(a2 + 28)); return this; } //----- (004AB5A0) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::messages::messages(this, a3); *this = &off_4F6494; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F6494: using guessed type int (*off_4F6494)(); //----- (004AB640) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { return std::messages_byname::messages_byname(this, *a2, a3); } //----- (004AB650) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::messages::messages(this, a3); *this = &off_4F6494; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F6494: using guessed type int (*off_4F6494)(); //----- (004AB6F0) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { return std::messages_byname::messages_byname(this, *a2, a3); } //----- (004AB700) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6D04; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4AB719: variable 'v2' is possibly undefined // 4F6D04: using guessed type int (*off_4F6D04)(); //----- (004AB730) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D04; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4AB739: variable 'v1' is possibly undefined // 4F6D04: using guessed type int (*off_4F6D04)(); //----- (004AB760) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D04; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4AB769: variable 'v1' is possibly undefined // 4F6D04: using guessed type int (*off_4F6D04)(); //----- (004AB790) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::messages::messages(this, a3); *this = &off_4F64B0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F64B0: using guessed type int (*off_4F64B0)(); //----- (004AB830) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { return std::messages_byname::messages_byname(this, *a2, a3); } //----- (004AB840) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::messages::messages(this, a3); *this = &off_4F64B0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F64B0: using guessed type int (*off_4F64B0)(); //----- (004AB8E0) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { return std::messages_byname::messages_byname(this, *a2, a3); } //----- (004AB8F0) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6D20; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4AB909: variable 'v2' is possibly undefined // 4F6D20: using guessed type int (*off_4F6D20)(); //----- (004AB920) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D20; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4AB929: variable 'v1' is possibly undefined // 4F6D20: using guessed type int (*off_4F6D20)(); //----- (004AB950) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D20; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4AB959: variable 'v1' is possibly undefined // 4F6D20: using guessed type int (*off_4F6D20)(); //----- (004AB980) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F6D3C; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F64CC; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::numpunct::_M_initialize_numpunct(this, v6[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F64CC: using guessed type int (*off_4F64CC)(); // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004ABA70) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F6D3C; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F64CC; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::numpunct::_M_initialize_numpunct(this, v9[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F64CC: using guessed type int (*off_4F64CC)(); // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004ABB60) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F6D3C; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F64CC; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::numpunct::_M_initialize_numpunct(this, v6[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F64CC: using guessed type int (*off_4F64CC)(); // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004ABC50) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F6D3C; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F64CC; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::numpunct::_M_initialize_numpunct(this, v9[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F64CC: using guessed type int (*off_4F64CC)(); // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004ABD40) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F64CC; std::numpunct::~numpunct(v2); operator delete(a1); } // 4ABD4C: variable 'v2' is possibly undefined // 4F64CC: using guessed type int (*off_4F64CC)(); //----- (004ABD60) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F64CC; std::numpunct::~numpunct(a1); } // 4ABD60: variable 'v1' is possibly undefined // 4F64CC: using guessed type int (*off_4F64CC)(); //----- (004ABD70) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F64CC; std::numpunct::~numpunct(a1); } // 4ABD70: variable 'v1' is possibly undefined // 4F64CC: using guessed type int (*off_4F64CC)(); //----- (004ABD80) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F6D60; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F64F0; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::numpunct::_M_initialize_numpunct(this, v6[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F64F0: using guessed type int (*off_4F64F0)(); // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004ABE70) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F6D60; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F64F0; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::numpunct::_M_initialize_numpunct(this, v9[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F64F0: using guessed type int (*off_4F64F0)(); // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004ABF60) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F6D60; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F64F0; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::numpunct::_M_initialize_numpunct(this, v6[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F64F0: using guessed type int (*off_4F64F0)(); // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004AC050) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F6D60; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F64F0; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::numpunct::_M_initialize_numpunct(this, v9[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F64F0: using guessed type int (*off_4F64F0)(); // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004AC140) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F64F0; std::numpunct::~numpunct(v2); operator delete(a1); } // 4AC14C: variable 'v2' is possibly undefined // 4F64F0: using guessed type int (*off_4F64F0)(); //----- (004AC160) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F64F0; std::numpunct::~numpunct(a1); } // 4AC160: variable 'v1' is possibly undefined // 4F64F0: using guessed type int (*off_4F64F0)(); //----- (004AC170) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F64F0; std::numpunct::~numpunct(a1); } // 4AC170: variable 'v1' is possibly undefined // 4F64F0: using guessed type int (*off_4F64F0)(); //----- (004AC180) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6514; result = a3 != 0; this[1] = result; return result; } // 4F6514: using guessed type int (*off_4F6514)(); //----- (004AC1A0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6514; result = a3 != 0; this[1] = result; return result; } // 4F6514: using guessed type int (*off_4F6514)(); //----- (004AC1C0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6514; result = a3 != 0; this[1] = result; return result; } // 4F6514: using guessed type int (*off_4F6514)(); //----- (004AC1E0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6514; result = a3 != 0; this[1] = result; return result; } // 4F6514: using guessed type int (*off_4F6514)(); //----- (004AC200) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6D84; std::locale::facet::~facet(v2); operator delete(a1); } // 4AC20C: variable 'v2' is possibly undefined // 4F6D84: using guessed type int (*off_4F6D84)(); //----- (004AC220) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D84; std::locale::facet::~facet(a1); } // 4AC220: variable 'v1' is possibly undefined // 4F6D84: using guessed type int (*off_4F6D84)(); //----- (004AC230) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D84; std::locale::facet::~facet(a1); } // 4AC230: variable 'v1' is possibly undefined // 4F6D84: using guessed type int (*off_4F6D84)(); //----- (004AC240) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F653C; result = a3 != 0; this[1] = result; return result; } // 4F653C: using guessed type int (*off_4F653C)(); //----- (004AC260) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F653C; result = a3 != 0; this[1] = result; return result; } // 4F653C: using guessed type int (*off_4F653C)(); //----- (004AC280) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F653C; result = a3 != 0; this[1] = result; return result; } // 4F653C: using guessed type int (*off_4F653C)(); //----- (004AC2A0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F653C; result = a3 != 0; this[1] = result; return result; } // 4F653C: using guessed type int (*off_4F653C)(); //----- (004AC2C0) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6DAC; std::locale::facet::~facet(v2); operator delete(a1); } // 4AC2CC: variable 'v2' is possibly undefined // 4F6DAC: using guessed type int (*off_4F6DAC)(); //----- (004AC2E0) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DAC; std::locale::facet::~facet(a1); } // 4AC2E0: variable 'v1' is possibly undefined // 4F6DAC: using guessed type int (*off_4F6DAC)(); //----- (004AC2F0) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DAC; std::locale::facet::~facet(a1); } // 4AC2F0: variable 'v1' is possibly undefined // 4F6DAC: using guessed type int (*off_4F6DAC)(); //----- (004AC300) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6564; result = a3 != 0; this[1] = result; return result; } // 4F6564: using guessed type int (*off_4F6564)(); //----- (004AC320) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6564; result = a3 != 0; this[1] = result; return result; } // 4F6564: using guessed type int (*off_4F6564)(); //----- (004AC340) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6564; result = a3 != 0; this[1] = result; return result; } // 4F6564: using guessed type int (*off_4F6564)(); //----- (004AC360) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6564; result = a3 != 0; this[1] = result; return result; } // 4F6564: using guessed type int (*off_4F6564)(); //----- (004AC380) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6564; result = a3 != 0; this[1] = result; return result; } // 4F6564: using guessed type int (*off_4F6564)(); //----- (004AC3A0) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6564; result = a3 != 0; this[1] = result; return result; } // 4F6564: using guessed type int (*off_4F6564)(); //----- (004AC3C0) -------------------------------------------------------- void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6DD4; std::locale::facet::~facet(v2); operator delete(a1); } // 4AC3CC: variable 'v2' is possibly undefined // 4F6DD4: using guessed type int (*off_4F6DD4)(); //----- (004AC3E0) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DD4; std::locale::facet::~facet(a1); } // 4AC3E0: variable 'v1' is possibly undefined // 4F6DD4: using guessed type int (*off_4F6DD4)(); //----- (004AC3F0) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DD4; std::locale::facet::~facet(a1); } // 4AC3F0: variable 'v1' is possibly undefined // 4F6DD4: using guessed type int (*off_4F6DD4)(); //----- (004AC400) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6578; result = a3 != 0; this[1] = result; return result; } // 4F6578: using guessed type int (*off_4F6578)(); //----- (004AC420) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6578; result = a3 != 0; this[1] = result; return result; } // 4F6578: using guessed type int (*off_4F6578)(); //----- (004AC440) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6578; result = a3 != 0; this[1] = result; return result; } // 4F6578: using guessed type int (*off_4F6578)(); //----- (004AC460) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6578; result = a3 != 0; this[1] = result; return result; } // 4F6578: using guessed type int (*off_4F6578)(); //----- (004AC480) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6578; result = a3 != 0; this[1] = result; return result; } // 4F6578: using guessed type int (*off_4F6578)(); //----- (004AC4A0) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F6578; result = a3 != 0; this[1] = result; return result; } // 4F6578: using guessed type int (*off_4F6578)(); //----- (004AC4C0) -------------------------------------------------------- void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6DE8; std::locale::facet::~facet(v2); operator delete(a1); } // 4AC4CC: variable 'v2' is possibly undefined // 4F6DE8: using guessed type int (*off_4F6DE8)(); //----- (004AC4E0) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DE8; std::locale::facet::~facet(a1); } // 4AC4E0: variable 'v1' is possibly undefined // 4F6DE8: using guessed type int (*off_4F6DE8)(); //----- (004AC4F0) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DE8; std::locale::facet::~facet(a1); } // 4AC4F0: variable 'v1' is possibly undefined // 4F6DE8: using guessed type int (*off_4F6DE8)(); //----- (004AC500) -------------------------------------------------------- _DWORD *__userpurge std::underflow_error::underflow_error@( _DWORD *a1@, std::underflow_error *this, const char *a3) { _DWORD *result; // eax const char *v5; // [esp+4h] [ebp-18h] result = std::runtime_error::runtime_error((int)a1, this, v5); *a1 = &off_4F658C; return result; } // 4AC50D: variable 'v5' is possibly undefined // 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); //----- (004AC530) -------------------------------------------------------- _DWORD *__thiscall std::underflow_error::underflow_error(_DWORD *this, int a2) { _DWORD *result; // eax result = std::runtime_error::runtime_error(this, a2); *this = &off_4F658C; return result; } // 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); //----- (004AC560) -------------------------------------------------------- unsigned int *__userpurge std::underflow_error::underflow_error@( _DWORD *a1@, unsigned int **this, const std::string *a3) { unsigned int *result; // eax const std::string *v5; // [esp+4h] [ebp-18h] result = std::runtime_error::runtime_error((int)a1, this, v5); *a1 = &off_4F658C; return result; } // 4AC56D: variable 'v5' is possibly undefined // 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); //----- (004AC590) -------------------------------------------------------- void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) { *a1 = &off_4F658C; std::runtime_error::~runtime_error(a1); operator delete(a1); } // 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); //----- (004AC5B0) -------------------------------------------------------- void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) { *a1 = &off_4F658C; std::runtime_error::~runtime_error(a1); } // 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); //----- (004AC5C0) -------------------------------------------------------- int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *a1) { signed __int32 v1; // eax int result; // eax signed __int32 v3; // eax int v4; // [esp-1Ch] [ebp-1Ch] int v5; // [esp-18h] [ebp-18h] int v6; // [esp-14h] [ebp-14h] volatile signed __int32 *v7; // [esp-10h] [ebp-10h] int v8; // [esp-Ch] [ebp-Ch] int v9; // [esp-8h] [ebp-8h] if ( _CRT_MT ) { v1 = _InterlockedExchangeAdd(a1 + 1, 0xFFFFFFFF); } else { v1 = *((_DWORD *)a1 + 1); *((_DWORD *)a1 + 1) = v1 - 1; } result = v1 - 1; if ( !result ) { (*(void (__stdcall **)(int, int, int, volatile signed __int32 *, int, int))(*a1 + 8))(v4, v5, v6, a1, v8, v9); if ( _CRT_MT ) { v3 = _InterlockedExchangeAdd(v7 + 2, 0xFFFFFFFF); } else { v3 = *((_DWORD *)v7 + 2); *((_DWORD *)v7 + 2) = v3 - 1; } result = v3 - 1; if ( !result ) return (*(int (__fastcall **)(volatile signed __int32 *))(*v7 + 12))(v7); } return result; } // 4AC5EA: variable 'v4' is possibly undefined // 4AC5EA: variable 'v5' is possibly undefined // 4AC5EA: variable 'v6' is possibly undefined // 4AC5EA: variable 'v8' is possibly undefined // 4AC5EA: variable 'v9' is possibly undefined // 4AC5FC: variable 'v7' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004AC620) -------------------------------------------------------- void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) { _DWORD *v3; // esi _DWORD *(__thiscall *v4)(char *, int); // eax unsigned int v5; // eax bool v6; // al _DWORD *(__thiscall *v7)(_DWORD *, int); // eax unsigned int v8; // eax _DWORD *(__thiscall *v9)(int *, int); // eax unsigned int v10; // eax int (__fastcall *v11)(int); // eax char v12; // al int (__fastcall *v13)(int); // eax char v14; // al char v15; // al char *v16; // esi void (__thiscall *v17)(_BYTE *, char *, char *, int); // eax char *v18; // esi char v19; // al void (__thiscall *v20)(_BYTE *, char *, char *, int); // eax volatile signed __int32 *v21; // ecx volatile signed __int32 *v22; // ecx unsigned int v23; // [esp+Ch] [ebp-3Ch] unsigned int v24; // [esp+Ch] [ebp-3Ch] unsigned int v25; // [esp+Ch] [ebp-3Ch] std::string *v26; // [esp+10h] [ebp-38h] std::string *v27; // [esp+14h] [ebp-34h] std::string *v28; // [esp+18h] [ebp-30h] _BYTE *v29; // [esp+1Ch] [ebp-2Ch] char v30[5]; // [esp+23h] [ebp-25h] BYREF _DWORD *v31; // [esp+28h] [ebp-20h] BYREF int v32[7]; // [esp+2Ch] [ebp-1Ch] BYREF v3 = std::use_facet>(a2); v4 = *(_DWORD *(__thiscall **)(char *, int))(*v3 + 16); if ( (char *)v4 == (char *)std::numpunct::do_grouping ) std::string::string(&v30[1], *(char **)(v3[2] + 8), (int)v32); else v4(&v30[1], (int)v3); v5 = *(_DWORD *)(*(_DWORD *)&v30[1] - 12); *(_DWORD *)(this + 12) = v5; v28 = (std::string *)operator new[](v5); std::string::copy(&v30[1], v28, *(char **)(this + 12), 0, v23); v6 = 0; if ( *(_DWORD *)(this + 12) ) v6 = (unsigned __int8)(*(_BYTE *)v28 - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v6; v7 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); if ( v7 == std::numpunct::do_truename ) std::string::string(&v31, *(char **)(v3[2] + 20), (int)v32); else v7(&v31, (int)v3); v8 = *(v31 - 3); *(_DWORD *)(this + 24) = v8; v26 = (std::string *)operator new[](v8); std::string::copy(&v31, v26, *(char **)(this + 24), 0, v24); v9 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 24); if ( v9 == std::numpunct::do_falsename ) std::string::string(v32, *(char **)(v3[2] + 28), (int)v30); else v9(v32, (int)v3); v10 = *(_DWORD *)(v32[0] - 12); *(_DWORD *)(this + 32) = v10; v27 = (std::string *)operator new[](v10); std::string::copy(v32, v27, *(char **)(this + 32), 0, v25); v11 = *(int (__fastcall **)(int))(*v3 + 8); if ( v11 == std::numpunct::do_decimal_point ) v12 = *(_BYTE *)(v3[2] + 36); else v12 = v11((int)v3); *(_BYTE *)(this + 36) = v12; v13 = *(int (__fastcall **)(int))(*v3 + 12); if ( v13 == std::numpunct::do_thousands_sep ) v14 = *(_BYTE *)(v3[2] + 37); else v14 = v13((int)v3); *(_BYTE *)(this + 37) = v14; v29 = std::use_facet>(a2); v15 = v29[28]; v16 = std::__num_base::_S_atoms_out[0]; if ( v15 == 1 ) goto LABEL_16; if ( v15 ) { v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); if ( (char *)v17 == (char *)std::ctype::do_widen ) { LABEL_16: *(_DWORD *)(this + 38) = *(_DWORD *)v16; *(_DWORD *)(this + 42) = *((_DWORD *)v16 + 1); *(_DWORD *)(this + 46) = *((_DWORD *)v16 + 2); *(_DWORD *)(this + 50) = *((_DWORD *)v16 + 3); *(_DWORD *)(this + 54) = *((_DWORD *)v16 + 4); *(_DWORD *)(this + 58) = *((_DWORD *)v16 + 5); *(_DWORD *)(this + 62) = *((_DWORD *)v16 + 6); *(_DWORD *)(this + 66) = *((_DWORD *)v16 + 7); *(_DWORD *)(this + 70) = *((_DWORD *)v16 + 8); goto LABEL_17; } } else { std::ctype::_M_widen_init((int)v29); v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); if ( (char *)v17 == (char *)std::ctype::do_widen ) goto LABEL_16; } v17(v29, v16, v16 + 36, this + 38); LABEL_17: v18 = std::__num_base::_S_atoms_in[0]; v19 = v29[28]; if ( v19 == 1 ) { LABEL_20: *(_DWORD *)(this + 74) = *(_DWORD *)v18; *(_DWORD *)(this + 78) = *((_DWORD *)v18 + 1); *(_DWORD *)(this + 82) = *((_DWORD *)v18 + 2); *(_DWORD *)(this + 86) = *((_DWORD *)v18 + 3); *(_DWORD *)(this + 90) = *((_DWORD *)v18 + 4); *(_DWORD *)(this + 94) = *((_DWORD *)v18 + 5); *(_WORD *)(this + 98) = *((_WORD *)v18 + 12); goto LABEL_21; } if ( v19 ) { v20 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); if ( (char *)v20 == (char *)std::ctype::do_widen ) goto LABEL_20; } else { std::ctype::_M_widen_init((int)v29); v20 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); if ( (char *)v20 == (char *)std::ctype::do_widen ) goto LABEL_20; } v20(v29, v18, v18 + 26, this + 74); LABEL_21: *(_BYTE *)(this + 100) = 1; *(_DWORD *)(this + 8) = v28; *(_DWORD *)(this + 20) = v26; *(_DWORD *)(this + 28) = v27; if ( (_UNKNOWN *)v32[0] == &unk_4E93FC ) { v21 = v31 - 3; if ( v31 == (_DWORD *)&unk_4E93FC ) goto LABEL_23; } else { std::string::_Rep::_M_dispose((volatile signed __int32 *)(v32[0] - 12), (int)v30); v21 = v31 - 3; if ( v31 == (_DWORD *)&unk_4E93FC ) { LABEL_23: v22 = (volatile signed __int32 *)(*(_DWORD *)&v30[1] - 12); if ( *(_UNKNOWN **)&v30[1] == &unk_4E93FC ) return; LABEL_36: std::string::_Rep::_M_dispose(v22, (int)v30); return; } } std::string::_Rep::_M_dispose(v21, (int)v30); v22 = (volatile signed __int32 *)(*(_DWORD *)&v30[1] - 12); if ( *(_UNKNOWN **)&v30[1] != &unk_4E93FC ) goto LABEL_36; } // 4AC691: variable 'v23' is possibly undefined // 4AC70F: variable 'v24' is possibly undefined // 4AC770: variable 'v25' is possibly undefined // 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; // 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; //----- (004ACB30) -------------------------------------------------------- int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_4F65A0; this[2] = 0; this[3] = 0; *((_BYTE *)this + 16) = 0; this[1] = a2 != 0; result = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; *((_WORD *)this + 18) = 0; *((_BYTE *)this + 100) = 0; return result; } // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (004ACB80) -------------------------------------------------------- int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_4F65A0; this[2] = 0; this[3] = 0; *((_BYTE *)this + 16) = 0; this[1] = a2 != 0; result = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; *((_WORD *)this + 18) = 0; *((_BYTE *)this + 100) = 0; return result; } // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (004ACBD0) -------------------------------------------------------- void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::__numpunct_cache::~__numpunct_cache(v2); operator delete(a1); } // 4ACBD7: variable 'v2' is possibly undefined //----- (004ACC00) -------------------------------------------------------- void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) { int v1; // ecx int v2; // ebx bool v3; // zf v2 = v1; v3 = *(_BYTE *)(v1 + 100) == 0; *(_DWORD *)v1 = &off_4F65A0; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( *(_DWORD *)(v2 + 20) ) operator delete[](*(void **)(v2 + 20)); if ( *(_DWORD *)(v2 + 28) ) operator delete[](*(void **)(v2 + 28)); } std::locale::facet::~facet(a1); } // 4ACC01: variable 'v1' is possibly undefined // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (004ACC50) -------------------------------------------------------- void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) { int v1; // ecx int v2; // ebx bool v3; // zf v2 = v1; v3 = *(_BYTE *)(v1 + 100) == 0; *(_DWORD *)v1 = &off_4F65A0; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( *(_DWORD *)(v2 + 20) ) operator delete[](*(void **)(v2 + 20)); if ( *(_DWORD *)(v2 + 28) ) operator delete[](*(void **)(v2 + 28)); } std::locale::facet::~facet(a1); } // 4ACC51: variable 'v1' is possibly undefined // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (004ACCA0) -------------------------------------------------------- void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) { _DWORD *v3; // esi _DWORD *(__thiscall *v4)(char *, int); // eax unsigned int v5; // eax std::string *v6; // edi bool v7; // al _DWORD *(__thiscall *v8)(_DWORD *, int); // eax unsigned int v9; // eax _DWORD *(__thiscall *v10)(int *, int); // eax unsigned int v11; // eax int v12; // edx int (__fastcall *v13)(int); // eax __int16 v14; // ax int (__fastcall *v15)(int); // eax __int16 v16; // ax void *v17; // esi volatile signed __int32 *v18; // ecx volatile signed __int32 *v19; // ecx unsigned int v20; // [esp+Ch] [ebp-3Ch] wchar_t *v21; // [esp+18h] [ebp-30h] wchar_t *v22; // [esp+1Ch] [ebp-2Ch] char v23[5]; // [esp+23h] [ebp-25h] BYREF _DWORD *v24; // [esp+28h] [ebp-20h] BYREF int v25[7]; // [esp+2Ch] [ebp-1Ch] BYREF v3 = std::use_facet>(a2); v4 = *(_DWORD *(__thiscall **)(char *, int))(*v3 + 16); if ( (char *)v4 == (char *)std::numpunct::do_grouping ) std::string::string(&v23[1], *(char **)(v3[2] + 8), (int)v25); else v4(&v23[1], (int)v3); v5 = *(_DWORD *)(*(_DWORD *)&v23[1] - 12); *(_DWORD *)(this + 12) = v5; v6 = (std::string *)operator new[](v5); std::string::copy(&v23[1], v6, *(char **)(this + 12), 0, v20); v7 = 0; if ( *(_DWORD *)(this + 12) ) v7 = (unsigned __int8)(*(_BYTE *)v6 - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v7; v8 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); if ( v8 == std::numpunct::do_truename ) std::wstring::basic_string(&v24, *(wchar_t **)(v3[2] + 20), (int)v25); else v8(&v24, (int)v3); v9 = *(v24 - 3); *(_DWORD *)(this + 24) = v9; if ( v9 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v21 = (wchar_t *)operator new[](2 * v9); std::wstring::copy(&v24, v21, *(_DWORD *)(this + 24), 0); v10 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 24); if ( v10 == std::numpunct::do_falsename ) std::wstring::basic_string(v25, *(wchar_t **)(v3[2] + 28), (int)v23); else v10(v25, (int)v3); v11 = *(_DWORD *)(v25[0] - 12); *(_DWORD *)(this + 32) = v11; if ( v11 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v22 = (wchar_t *)operator new[](2 * v11); std::wstring::copy(v25, v22, *(_DWORD *)(this + 32), 0); v12 = *v3; v13 = *(int (__fastcall **)(int))(*v3 + 8); if ( v13 == std::numpunct::do_decimal_point ) { v14 = *(_WORD *)(v3[2] + 36); } else { v14 = v13((int)v3); v12 = *v3; } *(_WORD *)(this + 36) = v14; v15 = *(int (__fastcall **)(int))(v12 + 12); if ( v15 == std::numpunct::do_thousands_sep ) v16 = *(_WORD *)(v3[2] + 38); else v16 = v15((int)v3); *(_WORD *)(this + 38) = v16; v17 = std::use_facet>(a2); (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v17 + 44))( v17, std::__num_base::_S_atoms_out[0], std::__num_base::_S_atoms_out[0] + 36, this + 40); (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v17 + 44))( v17, std::__num_base::_S_atoms_in[0], std::__num_base::_S_atoms_in[0] + 26, this + 112); *(_DWORD *)(this + 8) = v6; *(_BYTE *)(this + 164) = 1; *(_DWORD *)(this + 20) = v21; *(_DWORD *)(this + 28) = v22; if ( (_UNKNOWN *)v25[0] == &unk_4E93EC ) { v18 = v24 - 3; if ( v24 == (_DWORD *)&unk_4E93EC ) goto LABEL_17; } else { std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v25[0] - 12), (int)v23); v18 = v24 - 3; if ( v24 == (_DWORD *)&unk_4E93EC ) { LABEL_17: v19 = (volatile signed __int32 *)(*(_DWORD *)&v23[1] - 12); if ( *(_UNKNOWN **)&v23[1] == &unk_4E93FC ) return; LABEL_26: std::string::_Rep::_M_dispose(v19, (int)v23); return; } } std::wstring::_Rep::_M_dispose(v18, (int)v23); v19 = (volatile signed __int32 *)(*(_DWORD *)&v23[1] - 12); if ( *(_UNKNOWN **)&v23[1] != &unk_4E93FC ) goto LABEL_26; } // 4ACD0E: variable 'v20' is possibly undefined // 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; // 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; //----- (004AD0E0) -------------------------------------------------------- BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F65B0; this[2] = 0; this[3] = 0; result = a2 != 0; *((_BYTE *)this + 16) = 0; this[1] = result; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; *((_BYTE *)this + 164) = 0; return result; } // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (004AD140) -------------------------------------------------------- BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F65B0; this[2] = 0; this[3] = 0; result = a2 != 0; *((_BYTE *)this + 16) = 0; this[1] = result; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; *((_BYTE *)this + 164) = 0; return result; } // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (004AD1A0) -------------------------------------------------------- void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::__numpunct_cache::~__numpunct_cache(v2); operator delete(a1); } // 4AD1A7: variable 'v2' is possibly undefined //----- (004AD1D0) -------------------------------------------------------- void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) { int v1; // ecx int v2; // ebx bool v3; // zf v2 = v1; v3 = *(_BYTE *)(v1 + 164) == 0; *(_DWORD *)v1 = &off_4F65B0; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( *(_DWORD *)(v2 + 20) ) operator delete[](*(void **)(v2 + 20)); if ( *(_DWORD *)(v2 + 28) ) operator delete[](*(void **)(v2 + 28)); } std::locale::facet::~facet(a1); } // 4AD1D1: variable 'v1' is possibly undefined // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (004AD220) -------------------------------------------------------- void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) { int v1; // ecx int v2; // ebx bool v3; // zf v2 = v1; v3 = *(_BYTE *)(v1 + 164) == 0; *(_DWORD *)v1 = &off_4F65B0; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( *(_DWORD *)(v2 + 20) ) operator delete[](*(void **)(v2 + 20)); if ( *(_DWORD *)(v2 + 28) ) operator delete[](*(void **)(v2 + 28)); } std::locale::facet::~facet(a1); } // 4AD221: variable 'v1' is possibly undefined // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (004AD270) -------------------------------------------------------- _DWORD *__userpurge std::invalid_argument::invalid_argument@( _DWORD *a1@, std::invalid_argument *this, const char *a3) { _DWORD *result; // eax const char *v5; // [esp+4h] [ebp-18h] result = std::logic_error::logic_error((int)a1, this, v5); *a1 = &off_4F65C0; return result; } // 4AD27D: variable 'v5' is possibly undefined // 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); //----- (004AD2A0) -------------------------------------------------------- _DWORD *__thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2) { _DWORD *result; // eax result = std::logic_error::logic_error(this, a2); *this = &off_4F65C0; return result; } // 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); //----- (004AD2D0) -------------------------------------------------------- unsigned int *__userpurge std::invalid_argument::invalid_argument@( _DWORD *a1@, unsigned int **this, const std::string *a3) { unsigned int *result; // eax const std::string *v5; // [esp+4h] [ebp-18h] result = std::logic_error::logic_error((int)a1, this, v5); *a1 = &off_4F65C0; return result; } // 4AD2DD: variable 'v5' is possibly undefined // 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); //----- (004AD300) -------------------------------------------------------- void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) { *a1 = &off_4F65C0; std::logic_error::~logic_error(a1); operator delete(a1); } // 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); //----- (004AD320) -------------------------------------------------------- void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) { *a1 = &off_4F65C0; std::logic_error::~logic_error(a1); } // 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); //----- (004AD330) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F65D4; this[2] = 0; this[3] = 0; result = a2 != 0; this[4] = 0; this[1] = result; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; this[14] = 0; this[15] = 0; this[16] = 0; this[17] = 0; this[18] = 0; this[19] = 0; this[20] = 0; this[21] = 0; this[22] = 0; this[23] = 0; this[24] = 0; this[25] = 0; this[26] = 0; this[27] = 0; this[28] = 0; this[29] = 0; this[30] = 0; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; this[35] = 0; this[36] = 0; this[37] = 0; this[38] = 0; this[39] = 0; this[40] = 0; this[41] = 0; this[42] = 0; this[43] = 0; this[44] = 0; this[45] = 0; this[46] = 0; this[47] = 0; this[48] = 0; *((_BYTE *)this + 196) = 0; return result; } // 4F65D4: using guessed type int (*off_4F65D4)(); //----- (004AD4D0) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F65D4; this[2] = 0; this[3] = 0; result = a2 != 0; this[4] = 0; this[1] = result; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; this[14] = 0; this[15] = 0; this[16] = 0; this[17] = 0; this[18] = 0; this[19] = 0; this[20] = 0; this[21] = 0; this[22] = 0; this[23] = 0; this[24] = 0; this[25] = 0; this[26] = 0; this[27] = 0; this[28] = 0; this[29] = 0; this[30] = 0; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; this[35] = 0; this[36] = 0; this[37] = 0; this[38] = 0; this[39] = 0; this[40] = 0; this[41] = 0; this[42] = 0; this[43] = 0; this[44] = 0; this[45] = 0; this[46] = 0; this[47] = 0; this[48] = 0; *((_BYTE *)this + 196) = 0; return result; } // 4F65D4: using guessed type int (*off_4F65D4)(); //----- (004AD670) -------------------------------------------------------- void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F65D4; std::locale::facet::~facet(v2); operator delete(a1); } // 4AD67C: variable 'v2' is possibly undefined // 4F65D4: using guessed type int (*off_4F65D4)(); //----- (004AD690) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F65D4; std::locale::facet::~facet(a1); } // 4AD690: variable 'v1' is possibly undefined // 4F65D4: using guessed type int (*off_4F65D4)(); //----- (004AD6A0) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F65D4; std::locale::facet::~facet(a1); } // 4AD6A0: variable 'v1' is possibly undefined // 4F65D4: using guessed type int (*off_4F65D4)(); //----- (004AD6B0) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F65E4; this[2] = 0; this[3] = 0; result = a2 != 0; this[4] = 0; this[1] = result; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; this[14] = 0; this[15] = 0; this[16] = 0; this[17] = 0; this[18] = 0; this[19] = 0; this[20] = 0; this[21] = 0; this[22] = 0; this[23] = 0; this[24] = 0; this[25] = 0; this[26] = 0; this[27] = 0; this[28] = 0; this[29] = 0; this[30] = 0; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; this[35] = 0; this[36] = 0; this[37] = 0; this[38] = 0; this[39] = 0; this[40] = 0; this[41] = 0; this[42] = 0; this[43] = 0; this[44] = 0; this[45] = 0; this[46] = 0; this[47] = 0; this[48] = 0; *((_BYTE *)this + 196) = 0; return result; } // 4F65E4: using guessed type int (*off_4F65E4)(); //----- (004AD850) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F65E4; this[2] = 0; this[3] = 0; result = a2 != 0; this[4] = 0; this[1] = result; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; this[14] = 0; this[15] = 0; this[16] = 0; this[17] = 0; this[18] = 0; this[19] = 0; this[20] = 0; this[21] = 0; this[22] = 0; this[23] = 0; this[24] = 0; this[25] = 0; this[26] = 0; this[27] = 0; this[28] = 0; this[29] = 0; this[30] = 0; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; this[35] = 0; this[36] = 0; this[37] = 0; this[38] = 0; this[39] = 0; this[40] = 0; this[41] = 0; this[42] = 0; this[43] = 0; this[44] = 0; this[45] = 0; this[46] = 0; this[47] = 0; this[48] = 0; *((_BYTE *)this + 196) = 0; return result; } // 4F65E4: using guessed type int (*off_4F65E4)(); //----- (004AD9F0) -------------------------------------------------------- void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F65E4; std::locale::facet::~facet(v2); operator delete(a1); } // 4AD9FC: variable 'v2' is possibly undefined // 4F65E4: using guessed type int (*off_4F65E4)(); //----- (004ADA10) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F65E4; std::locale::facet::~facet(a1); } // 4ADA10: variable 'v1' is possibly undefined // 4F65E4: using guessed type int (*off_4F65E4)(); //----- (004ADA20) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F65E4; std::locale::facet::~facet(a1); } // 4ADA20: variable 'v1' is possibly undefined // 4F65E4: using guessed type int (*off_4F65E4)(); //----- (004ADA30) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5E90; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F65F4; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5E90: using guessed type int (*off_4F5E90)(); // 4F65F4: using guessed type int (*off_4F65F4)(); //----- (004ADB30) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5E90; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F65F4; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5E90: using guessed type int (*off_4F5E90)(); // 4F65F4: using guessed type int (*off_4F65F4)(); //----- (004ADC30) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5E90; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F65F4; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5E90: using guessed type int (*off_4F5E90)(); // 4F65F4: using guessed type int (*off_4F65F4)(); //----- (004ADD30) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5E90; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F65F4; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5E90: using guessed type int (*off_4F5E90)(); // 4F65F4: using guessed type int (*off_4F65F4)(); //----- (004ADE30) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F65F4; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4ADE3C: variable 'v2' is possibly undefined // 4F65F4: using guessed type int (*off_4F65F4)(); //----- (004ADE50) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F65F4; std::moneypunct::~moneypunct(a1); } // 4ADE50: variable 'v1' is possibly undefined // 4F65F4: using guessed type int (*off_4F65F4)(); //----- (004ADE60) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F65F4; std::moneypunct::~moneypunct(a1); } // 4ADE60: variable 'v1' is possibly undefined // 4F65F4: using guessed type int (*off_4F65F4)(); //----- (004ADE70) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5EC4; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F6628; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5EC4: using guessed type int (*off_4F5EC4)(); // 4F6628: using guessed type int (*off_4F6628)(); //----- (004ADF70) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5EC4; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F6628; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5EC4: using guessed type int (*off_4F5EC4)(); // 4F6628: using guessed type int (*off_4F6628)(); //----- (004AE070) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5EC4; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F6628; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5EC4: using guessed type int (*off_4F5EC4)(); // 4F6628: using guessed type int (*off_4F6628)(); //----- (004AE170) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5EC4; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F6628; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5EC4: using guessed type int (*off_4F5EC4)(); // 4F6628: using guessed type int (*off_4F6628)(); //----- (004AE270) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6628; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4AE27C: variable 'v2' is possibly undefined // 4F6628: using guessed type int (*off_4F6628)(); //----- (004AE290) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6628; std::moneypunct::~moneypunct(a1); } // 4AE290: variable 'v1' is possibly undefined // 4F6628: using guessed type int (*off_4F6628)(); //----- (004AE2A0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6628; std::moneypunct::~moneypunct(a1); } // 4AE2A0: variable 'v1' is possibly undefined // 4F6628: using guessed type int (*off_4F6628)(); //----- (004AE2B0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5EF8; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F665C; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5EF8: using guessed type int (*off_4F5EF8)(); // 4F665C: using guessed type int (*off_4F665C)(); //----- (004AE3B0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5EF8; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F665C; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5EF8: using guessed type int (*off_4F5EF8)(); // 4F665C: using guessed type int (*off_4F665C)(); //----- (004AE4B0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5EF8; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F665C; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5EF8: using guessed type int (*off_4F5EF8)(); // 4F665C: using guessed type int (*off_4F665C)(); //----- (004AE5B0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5EF8; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F665C; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5EF8: using guessed type int (*off_4F5EF8)(); // 4F665C: using guessed type int (*off_4F665C)(); //----- (004AE6B0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F665C; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4AE6BC: variable 'v2' is possibly undefined // 4F665C: using guessed type int (*off_4F665C)(); //----- (004AE6D0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F665C; std::moneypunct::~moneypunct(a1); } // 4AE6D0: variable 'v1' is possibly undefined // 4F665C: using guessed type int (*off_4F665C)(); //----- (004AE6E0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F665C; std::moneypunct::~moneypunct(a1); } // 4AE6E0: variable 'v1' is possibly undefined // 4F665C: using guessed type int (*off_4F665C)(); //----- (004AE6F0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5F2C; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F6690; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5F2C: using guessed type int (*off_4F5F2C)(); // 4F6690: using guessed type int (*off_4F6690)(); //----- (004AE7F0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5F2C; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F6690; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5F2C: using guessed type int (*off_4F5F2C)(); // 4F6690: using guessed type int (*off_4F6690)(); //----- (004AE8F0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5F2C; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F6690; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5F2C: using guessed type int (*off_4F5F2C)(); // 4F6690: using guessed type int (*off_4F6690)(); //----- (004AE9F0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5F2C; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F6690; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5F2C: using guessed type int (*off_4F5F2C)(); // 4F6690: using guessed type int (*off_4F6690)(); //----- (004AEAF0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6690; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4AEAFC: variable 'v2' is possibly undefined // 4F6690: using guessed type int (*off_4F6690)(); //----- (004AEB10) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6690; std::moneypunct::~moneypunct(a1); } // 4AEB10: variable 'v1' is possibly undefined // 4F6690: using guessed type int (*off_4F6690)(); //----- (004AEB20) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6690; std::moneypunct::~moneypunct(a1); } // 4AEB20: variable 'v1' is possibly undefined // 4F6690: using guessed type int (*off_4F6690)(); //----- (004AEB30) -------------------------------------------------------- void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) { _DWORD *v3; // esi int (__fastcall *v4)(int); // eax char v5; // al int (__fastcall *v6)(int); // eax char v7; // al int v8; // edx int (__fastcall *v9)(int); // eax int v10; // eax _DWORD *(__thiscall *v11)(char *, int); // eax unsigned int v12; // eax bool v13; // al _DWORD *(__thiscall *v14)(_DWORD *, int); // eax unsigned int v15; // eax _DWORD *(__thiscall *v16)(_DWORD *, int); // eax unsigned int v17; // eax _DWORD *(__thiscall *v18)(int *, int); // eax unsigned int v19; // eax int (__fastcall *v20)(int); // eax int v21; // eax int (__fastcall *v22)(int); // eax int v23; // eax _BYTE *v24; // esi char *v25; // edi char v26; // al void (__thiscall *v27)(_BYTE *, char *, char *, int); // eax volatile signed __int32 *v28; // ecx volatile signed __int32 *v29; // ecx unsigned int v30; // [esp+Ch] [ebp-5Ch] unsigned int v31; // [esp+Ch] [ebp-5Ch] unsigned int v32; // [esp+Ch] [ebp-5Ch] unsigned int v33; // [esp+Ch] [ebp-5Ch] std::string *v34; // [esp+20h] [ebp-48h] std::string *v35; // [esp+24h] [ebp-44h] std::string *v36; // [esp+28h] [ebp-40h] std::string *v37; // [esp+2Ch] [ebp-3Ch] char v38[5]; // [esp+3Fh] [ebp-29h] BYREF _DWORD *v39; // [esp+44h] [ebp-24h] BYREF _DWORD *v40; // [esp+48h] [ebp-20h] BYREF int v41[7]; // [esp+4Ch] [ebp-1Ch] BYREF v3 = std::use_facet>(a2); v4 = *(int (__fastcall **)(int))(*v3 + 8); if ( v4 == std::moneypunct::do_decimal_point ) v5 = *(_BYTE *)(v3[2] + 17); else v5 = v4((int)v3); *(_BYTE *)(this + 17) = v5; v6 = *(int (__fastcall **)(int))(*v3 + 12); if ( v6 == std::moneypunct::do_thousands_sep ) v7 = *(_BYTE *)(v3[2] + 18); else v7 = v6((int)v3); *(_BYTE *)(this + 18) = v7; v8 = *v3; v9 = *(int (__fastcall **)(int))(*v3 + 32); if ( v9 == std::moneypunct::do_frac_digits ) { v10 = *(_DWORD *)(v3[2] + 44); } else { v10 = v9((int)v3); v8 = *v3; } *(_DWORD *)(this + 44) = v10; v11 = *(_DWORD *(__thiscall **)(char *, int))(v8 + 16); if ( (char *)v11 == (char *)std::moneypunct::do_grouping ) std::string::string(&v38[1], *(char **)(v3[2] + 8), (int)v41); else v11(&v38[1], (int)v3); v12 = *(_DWORD *)(*(_DWORD *)&v38[1] - 12); *(_DWORD *)(this + 12) = v12; v37 = (std::string *)operator new[](v12); std::string::copy(&v38[1], v37, *(char **)(this + 12), 0, v30); v13 = 0; if ( *(_DWORD *)(this + 12) ) v13 = (unsigned __int8)(*(_BYTE *)v37 - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v13; v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); if ( v14 == std::moneypunct::do_curr_symbol ) std::string::string(&v39, *(char **)(v3[2] + 20), (int)v41); else v14(&v39, (int)v3); v15 = *(v39 - 3); *(_DWORD *)(this + 24) = v15; v34 = (std::string *)operator new[](v15); std::string::copy(&v39, v34, *(char **)(this + 24), 0, v31); v16 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 24); if ( v16 == std::moneypunct::do_positive_sign ) std::string::string(&v40, *(char **)(v3[2] + 28), (int)v41); else v16(&v40, (int)v3); v17 = *(v40 - 3); *(_DWORD *)(this + 32) = v17; v35 = (std::string *)operator new[](v17); std::string::copy(&v40, v35, *(char **)(this + 32), 0, v32); v18 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 28); if ( v18 == std::moneypunct::do_negative_sign ) std::string::string(v41, *(char **)(v3[2] + 36), (int)v38); else v18(v41, (int)v3); v19 = *(_DWORD *)(v41[0] - 12); *(_DWORD *)(this + 40) = v19; v36 = (std::string *)operator new[](v19); std::string::copy(v41, v36, *(char **)(this + 40), 0, v33); v20 = *(int (__fastcall **)(int))(*v3 + 36); if ( v20 == std::moneypunct::do_pos_format ) v21 = *(_DWORD *)(v3[2] + 48); else v21 = v20((int)v3); *(_DWORD *)(this + 48) = v21; v22 = *(int (__fastcall **)(int))(*v3 + 40); if ( v22 == std::moneypunct::do_neg_format ) v23 = *(_DWORD *)(v3[2] + 52); else v23 = v22((int)v3); *(_DWORD *)(this + 52) = v23; v24 = std::use_facet>(a2); v25 = std::money_base::_S_atoms; v26 = v24[28]; if ( v26 == 1 ) goto LABEL_24; if ( v26 ) { v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); if ( (char *)v27 == (char *)std::ctype::do_widen ) { LABEL_24: *(_DWORD *)(this + 56) = *(_DWORD *)v25; *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); *(_BYTE *)(this + 66) = v25[10]; goto LABEL_25; } } else { std::ctype::_M_widen_init((int)v24); v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); if ( (char *)v27 == (char *)std::ctype::do_widen ) goto LABEL_24; } v27(v24, v25, v25 + 11, this + 56); LABEL_25: *(_BYTE *)(this + 67) = 1; *(_DWORD *)(this + 8) = v37; *(_DWORD *)(this + 20) = v34; *(_DWORD *)(this + 28) = v35; *(_DWORD *)(this + 36) = v36; if ( (_UNKNOWN *)v41[0] != &unk_4E93FC ) std::string::_Rep::_M_dispose((volatile signed __int32 *)(v41[0] - 12), (int)v38); if ( v40 == (_DWORD *)&unk_4E93FC ) { v28 = v39 - 3; if ( v39 == (_DWORD *)&unk_4E93FC ) goto LABEL_29; } else { std::string::_Rep::_M_dispose(v40 - 3, (int)v38); v28 = v39 - 3; if ( v39 == (_DWORD *)&unk_4E93FC ) { LABEL_29: v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); if ( *(_UNKNOWN **)&v38[1] == &unk_4E93FC ) return; LABEL_44: std::string::_Rep::_M_dispose(v29, (int)v38); return; } } std::string::_Rep::_M_dispose(v28, (int)v38); v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); if ( *(_UNKNOWN **)&v38[1] != &unk_4E93FC ) goto LABEL_44; } // 4AEBEA: variable 'v30' is possibly undefined // 4AEC66: variable 'v31' is possibly undefined // 4AECC5: variable 'v32' is possibly undefined // 4AED24: variable 'v33' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; //----- (004AF110) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_4F66C4; this[2] = 0; this[3] = 0; *((_BYTE *)this + 18) = 0; this[1] = a2 != 0; result = 0; *((_WORD *)this + 8) = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; *((_BYTE *)this + 67) = 0; return result; } // 4F66C4: using guessed type int (*off_4F66C4)(); //----- (004AF190) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_4F66C4; this[2] = 0; this[3] = 0; *((_BYTE *)this + 18) = 0; this[1] = a2 != 0; result = 0; *((_WORD *)this + 8) = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; *((_BYTE *)this + 67) = 0; return result; } // 4F66C4: using guessed type int (*off_4F66C4)(); //----- (004AF210) -------------------------------------------------------- void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::__moneypunct_cache::~__moneypunct_cache(v2); operator delete(a1); } // 4AF217: variable 'v2' is possibly undefined //----- (004AF240) -------------------------------------------------------- void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) { int v1; // ecx void **v2; // ebx bool v3; // zf v2 = (void **)v1; v3 = *(_BYTE *)(v1 + 67) == 0; *(_DWORD *)v1 = &off_4F66C4; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( v2[5] ) operator delete[](v2[5]); if ( v2[7] ) operator delete[](v2[7]); if ( v2[9] ) operator delete[](v2[9]); } std::locale::facet::~facet(a1); } // 4AF241: variable 'v1' is possibly undefined // 4F66C4: using guessed type int (*off_4F66C4)(); //----- (004AF2A0) -------------------------------------------------------- void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) { int v1; // ecx void **v2; // ebx bool v3; // zf v2 = (void **)v1; v3 = *(_BYTE *)(v1 + 67) == 0; *(_DWORD *)v1 = &off_4F66C4; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( v2[5] ) operator delete[](v2[5]); if ( v2[7] ) operator delete[](v2[7]); if ( v2[9] ) operator delete[](v2[9]); } std::locale::facet::~facet(a1); } // 4AF2A1: variable 'v1' is possibly undefined // 4F66C4: using guessed type int (*off_4F66C4)(); //----- (004AF300) -------------------------------------------------------- void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) { _DWORD *v3; // esi int (__fastcall *v4)(int); // eax char v5; // al int (__fastcall *v6)(int); // eax char v7; // al int v8; // edx int (__fastcall *v9)(int); // eax int v10; // eax _DWORD *(__thiscall *v11)(char *, int); // eax unsigned int v12; // eax bool v13; // al _DWORD *(__thiscall *v14)(_DWORD *, int); // eax unsigned int v15; // eax _DWORD *(__thiscall *v16)(_DWORD *, int); // eax unsigned int v17; // eax _DWORD *(__thiscall *v18)(int *, int); // eax unsigned int v19; // eax int (__fastcall *v20)(int); // eax int v21; // eax int (__fastcall *v22)(int); // eax int v23; // eax _BYTE *v24; // esi char *v25; // edi char v26; // al void (__thiscall *v27)(_BYTE *, char *, char *, int); // eax volatile signed __int32 *v28; // ecx volatile signed __int32 *v29; // ecx unsigned int v30; // [esp+Ch] [ebp-5Ch] unsigned int v31; // [esp+Ch] [ebp-5Ch] unsigned int v32; // [esp+Ch] [ebp-5Ch] unsigned int v33; // [esp+Ch] [ebp-5Ch] std::string *v34; // [esp+20h] [ebp-48h] std::string *v35; // [esp+24h] [ebp-44h] std::string *v36; // [esp+28h] [ebp-40h] std::string *v37; // [esp+2Ch] [ebp-3Ch] char v38[5]; // [esp+3Fh] [ebp-29h] BYREF _DWORD *v39; // [esp+44h] [ebp-24h] BYREF _DWORD *v40; // [esp+48h] [ebp-20h] BYREF int v41[7]; // [esp+4Ch] [ebp-1Ch] BYREF v3 = std::use_facet>(a2); v4 = *(int (__fastcall **)(int))(*v3 + 8); if ( v4 == std::moneypunct::do_decimal_point ) v5 = *(_BYTE *)(v3[2] + 17); else v5 = v4((int)v3); *(_BYTE *)(this + 17) = v5; v6 = *(int (__fastcall **)(int))(*v3 + 12); if ( v6 == std::moneypunct::do_thousands_sep ) v7 = *(_BYTE *)(v3[2] + 18); else v7 = v6((int)v3); *(_BYTE *)(this + 18) = v7; v8 = *v3; v9 = *(int (__fastcall **)(int))(*v3 + 32); if ( v9 == std::moneypunct::do_frac_digits ) { v10 = *(_DWORD *)(v3[2] + 44); } else { v10 = v9((int)v3); v8 = *v3; } *(_DWORD *)(this + 44) = v10; v11 = *(_DWORD *(__thiscall **)(char *, int))(v8 + 16); if ( (char *)v11 == (char *)std::moneypunct::do_grouping ) std::string::string(&v38[1], *(char **)(v3[2] + 8), (int)v41); else v11(&v38[1], (int)v3); v12 = *(_DWORD *)(*(_DWORD *)&v38[1] - 12); *(_DWORD *)(this + 12) = v12; v37 = (std::string *)operator new[](v12); std::string::copy(&v38[1], v37, *(char **)(this + 12), 0, v30); v13 = 0; if ( *(_DWORD *)(this + 12) ) v13 = (unsigned __int8)(*(_BYTE *)v37 - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v13; v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); if ( v14 == std::moneypunct::do_curr_symbol ) std::string::string(&v39, *(char **)(v3[2] + 20), (int)v41); else v14(&v39, (int)v3); v15 = *(v39 - 3); *(_DWORD *)(this + 24) = v15; v34 = (std::string *)operator new[](v15); std::string::copy(&v39, v34, *(char **)(this + 24), 0, v31); v16 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 24); if ( v16 == std::moneypunct::do_positive_sign ) std::string::string(&v40, *(char **)(v3[2] + 28), (int)v41); else v16(&v40, (int)v3); v17 = *(v40 - 3); *(_DWORD *)(this + 32) = v17; v35 = (std::string *)operator new[](v17); std::string::copy(&v40, v35, *(char **)(this + 32), 0, v32); v18 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 28); if ( v18 == std::moneypunct::do_negative_sign ) std::string::string(v41, *(char **)(v3[2] + 36), (int)v38); else v18(v41, (int)v3); v19 = *(_DWORD *)(v41[0] - 12); *(_DWORD *)(this + 40) = v19; v36 = (std::string *)operator new[](v19); std::string::copy(v41, v36, *(char **)(this + 40), 0, v33); v20 = *(int (__fastcall **)(int))(*v3 + 36); if ( v20 == std::moneypunct::do_pos_format ) v21 = *(_DWORD *)(v3[2] + 48); else v21 = v20((int)v3); *(_DWORD *)(this + 48) = v21; v22 = *(int (__fastcall **)(int))(*v3 + 40); if ( v22 == std::moneypunct::do_neg_format ) v23 = *(_DWORD *)(v3[2] + 52); else v23 = v22((int)v3); *(_DWORD *)(this + 52) = v23; v24 = std::use_facet>(a2); v25 = std::money_base::_S_atoms; v26 = v24[28]; if ( v26 == 1 ) goto LABEL_24; if ( v26 ) { v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); if ( (char *)v27 == (char *)std::ctype::do_widen ) { LABEL_24: *(_DWORD *)(this + 56) = *(_DWORD *)v25; *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); *(_BYTE *)(this + 66) = v25[10]; goto LABEL_25; } } else { std::ctype::_M_widen_init((int)v24); v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); if ( (char *)v27 == (char *)std::ctype::do_widen ) goto LABEL_24; } v27(v24, v25, v25 + 11, this + 56); LABEL_25: *(_BYTE *)(this + 67) = 1; *(_DWORD *)(this + 8) = v37; *(_DWORD *)(this + 20) = v34; *(_DWORD *)(this + 28) = v35; *(_DWORD *)(this + 36) = v36; if ( (_UNKNOWN *)v41[0] != &unk_4E93FC ) std::string::_Rep::_M_dispose((volatile signed __int32 *)(v41[0] - 12), (int)v38); if ( v40 == (_DWORD *)&unk_4E93FC ) { v28 = v39 - 3; if ( v39 == (_DWORD *)&unk_4E93FC ) goto LABEL_29; } else { std::string::_Rep::_M_dispose(v40 - 3, (int)v38); v28 = v39 - 3; if ( v39 == (_DWORD *)&unk_4E93FC ) { LABEL_29: v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); if ( *(_UNKNOWN **)&v38[1] == &unk_4E93FC ) return; LABEL_44: std::string::_Rep::_M_dispose(v29, (int)v38); return; } } std::string::_Rep::_M_dispose(v28, (int)v38); v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); if ( *(_UNKNOWN **)&v38[1] != &unk_4E93FC ) goto LABEL_44; } // 4AF3BA: variable 'v30' is possibly undefined // 4AF436: variable 'v31' is possibly undefined // 4AF495: variable 'v32' is possibly undefined // 4AF4F4: variable 'v33' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; //----- (004AF8E0) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_4F66D4; this[2] = 0; this[3] = 0; *((_BYTE *)this + 18) = 0; this[1] = a2 != 0; result = 0; *((_WORD *)this + 8) = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; *((_BYTE *)this + 67) = 0; return result; } // 4F66D4: using guessed type int (*off_4F66D4)(); //----- (004AF960) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_4F66D4; this[2] = 0; this[3] = 0; *((_BYTE *)this + 18) = 0; this[1] = a2 != 0; result = 0; *((_WORD *)this + 8) = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; *((_BYTE *)this + 67) = 0; return result; } // 4F66D4: using guessed type int (*off_4F66D4)(); //----- (004AF9E0) -------------------------------------------------------- void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::__moneypunct_cache::~__moneypunct_cache(v2); operator delete(a1); } // 4AF9E7: variable 'v2' is possibly undefined //----- (004AFA10) -------------------------------------------------------- void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) { int v1; // ecx void **v2; // ebx bool v3; // zf v2 = (void **)v1; v3 = *(_BYTE *)(v1 + 67) == 0; *(_DWORD *)v1 = &off_4F66D4; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( v2[5] ) operator delete[](v2[5]); if ( v2[7] ) operator delete[](v2[7]); if ( v2[9] ) operator delete[](v2[9]); } std::locale::facet::~facet(a1); } // 4AFA11: variable 'v1' is possibly undefined // 4F66D4: using guessed type int (*off_4F66D4)(); //----- (004AFA70) -------------------------------------------------------- void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) { int v1; // ecx void **v2; // ebx bool v3; // zf v2 = (void **)v1; v3 = *(_BYTE *)(v1 + 67) == 0; *(_DWORD *)v1 = &off_4F66D4; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( v2[5] ) operator delete[](v2[5]); if ( v2[7] ) operator delete[](v2[7]); if ( v2[9] ) operator delete[](v2[9]); } std::locale::facet::~facet(a1); } // 4AFA71: variable 'v1' is possibly undefined // 4F66D4: using guessed type int (*off_4F66D4)(); //----- (004AFAD0) -------------------------------------------------------- void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) { _DWORD *v3; // eax _DWORD *v4; // edx _DWORD *v5; // esi int (__fastcall *v6)(int); // eax int (__fastcall *v7)(int); // eax int (__fastcall *v8)(int); // eax _DWORD *(__thiscall *v9)(char *, int); // eax unsigned int v10; // eax bool v11; // al _DWORD *(__thiscall *v12)(_DWORD *, int); // eax unsigned int v13; // eax _DWORD *(__thiscall *v14)(_DWORD *, int); // eax unsigned int v15; // eax _DWORD *(__thiscall *v16)(int *, int); // eax unsigned int v17; // eax int (__fastcall *v18)(int); // eax int v19; // eax int (__fastcall *v20)(int); // eax int v21; // eax void *v22; // eax volatile signed __int32 *v23; // ecx volatile signed __int32 *v24; // ecx __int16 v25; // ax __int16 v26; // ax int v27; // eax _DWORD *v28; // edx unsigned int v29; // [esp+Ch] [ebp-4Ch] wchar_t *v30; // [esp+10h] [ebp-48h] wchar_t *v31; // [esp+14h] [ebp-44h] wchar_t *v32; // [esp+18h] [ebp-40h] std::string *v33; // [esp+1Ch] [ebp-3Ch] char v34[5]; // [esp+2Fh] [ebp-29h] BYREF _DWORD *v35; // [esp+34h] [ebp-24h] BYREF _DWORD *v36; // [esp+38h] [ebp-20h] BYREF int v37[7]; // [esp+3Ch] [ebp-1Ch] BYREF v3 = std::use_facet>(a2); v4 = (_DWORD *)*v3; v5 = v3; v6 = *(int (__fastcall **)(int))(*v3 + 8); if ( v6 == std::moneypunct::do_decimal_point ) { *(_WORD *)(this + 18) = *(_WORD *)(v5[2] + 18); v7 = (int (__fastcall *)(int))v4[3]; if ( v7 == std::moneypunct::do_thousands_sep ) goto LABEL_3; } else { v25 = v6((int)v5); v4 = (_DWORD *)*v5; *(_WORD *)(this + 18) = v25; v7 = (int (__fastcall *)(int))v4[3]; if ( v7 == std::moneypunct::do_thousands_sep ) { LABEL_3: *(_WORD *)(this + 20) = *(_WORD *)(v5[2] + 20); v8 = (int (__fastcall *)(int))v4[8]; if ( v8 == std::moneypunct::do_frac_digits ) goto LABEL_4; LABEL_28: v27 = v8((int)v5); v28 = (_DWORD *)*v5; *(_DWORD *)(this + 48) = v27; v9 = (_DWORD *(__thiscall *)(char *, int))v28[4]; if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) goto LABEL_5; goto LABEL_29; } } v26 = v7((int)v5); v4 = (_DWORD *)*v5; *(_WORD *)(this + 20) = v26; v8 = (int (__fastcall *)(int))v4[8]; if ( v8 != std::moneypunct::do_frac_digits ) goto LABEL_28; LABEL_4: *(_DWORD *)(this + 48) = *(_DWORD *)(v5[2] + 48); v9 = (_DWORD *(__thiscall *)(char *, int))v4[4]; if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) { LABEL_5: std::string::string(&v34[1], *(char **)(v5[2] + 8), (int)v37); goto LABEL_6; } LABEL_29: v9(&v34[1], (int)v5); LABEL_6: v10 = *(_DWORD *)(*(_DWORD *)&v34[1] - 12); *(_DWORD *)(this + 12) = v10; v33 = (std::string *)operator new[](v10); std::string::copy(&v34[1], v33, *(char **)(this + 12), 0, v29); v11 = 0; if ( *(_DWORD *)(this + 12) ) v11 = (unsigned __int8)(*(_BYTE *)v33 - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v11; v12 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 20); if ( v12 == std::moneypunct::do_curr_symbol ) std::wstring::basic_string(&v35, *(wchar_t **)(v5[2] + 24), (int)v37); else v12(&v35, (int)v5); v13 = *(v35 - 3); *(_DWORD *)(this + 28) = v13; if ( v13 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v30 = (wchar_t *)operator new[](2 * v13); std::wstring::copy(&v35, v30, *(_DWORD *)(this + 28), 0); v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 24); if ( v14 == std::moneypunct::do_positive_sign ) std::wstring::basic_string(&v36, *(wchar_t **)(v5[2] + 32), (int)v37); else v14(&v36, (int)v5); v15 = *(v36 - 3); *(_DWORD *)(this + 36) = v15; if ( v15 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v31 = (wchar_t *)operator new[](2 * v15); std::wstring::copy(&v36, v31, *(_DWORD *)(this + 36), 0); v16 = *(_DWORD *(__thiscall **)(int *, int))(*v5 + 28); if ( v16 == std::moneypunct::do_negative_sign ) std::wstring::basic_string(v37, *(wchar_t **)(v5[2] + 40), (int)v34); else v16(v37, (int)v5); v17 = *(_DWORD *)(v37[0] - 12); *(_DWORD *)(this + 44) = v17; if ( v17 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v32 = (wchar_t *)operator new[](2 * v17); std::wstring::copy(v37, v32, *(_DWORD *)(this + 44), 0); v18 = *(int (__fastcall **)(int))(*v5 + 36); if ( v18 == std::moneypunct::do_pos_format ) v19 = *(_DWORD *)(v5[2] + 52); else v19 = v18((int)v5); *(_DWORD *)(this + 52) = v19; v20 = *(int (__fastcall **)(int))(*v5 + 40); if ( v20 == std::moneypunct::do_neg_format ) v21 = *(_DWORD *)(v5[2] + 56); else v21 = v20((int)v5); *(_DWORD *)(this + 56) = v21; v22 = std::use_facet>(a2); (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v22 + 44))( v22, std::money_base::_S_atoms, std::money_base::_S_atoms + 11, this + 60); *(_BYTE *)(this + 82) = 1; *(_DWORD *)(this + 8) = v33; *(_DWORD *)(this + 24) = v30; *(_DWORD *)(this + 32) = v31; *(_DWORD *)(this + 40) = v32; if ( (_UNKNOWN *)v37[0] == &unk_4E93EC ) { v23 = v36 - 3; if ( v36 == (_DWORD *)&unk_4E93EC ) goto LABEL_23; } else { std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v37[0] - 12), (int)v34); v23 = v36 - 3; if ( v36 == (_DWORD *)&unk_4E93EC ) goto LABEL_23; } std::wstring::_Rep::_M_dispose(v23, (int)v34); LABEL_23: if ( v35 == (_DWORD *)&unk_4E93EC ) { v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); if ( *(_UNKNOWN **)&v34[1] == &unk_4E93FC ) return; LABEL_36: std::string::_Rep::_M_dispose(v24, (int)v34); return; } std::wstring::_Rep::_M_dispose(v35 - 3, (int)v34); v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); if ( *(_UNKNOWN **)&v34[1] != &unk_4E93FC ) goto LABEL_36; } // 4AFB88: variable 'v29' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; //----- (004B00B0) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F66E4; this[2] = 0; this[3] = 0; result = a2 != 0; *((_BYTE *)this + 16) = 0; this[1] = result; *(_DWORD *)((char *)this + 18) = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; this[14] = 0; *((_BYTE *)this + 82) = 0; return result; } // 4F66E4: using guessed type int (*off_4F66E4)(); //----- (004B0130) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F66E4; this[2] = 0; this[3] = 0; result = a2 != 0; *((_BYTE *)this + 16) = 0; this[1] = result; *(_DWORD *)((char *)this + 18) = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; this[14] = 0; *((_BYTE *)this + 82) = 0; return result; } // 4F66E4: using guessed type int (*off_4F66E4)(); //----- (004B01B0) -------------------------------------------------------- void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::__moneypunct_cache::~__moneypunct_cache(v2); operator delete(a1); } // 4B01B7: variable 'v2' is possibly undefined //----- (004B01E0) -------------------------------------------------------- void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) { int v1; // ecx void **v2; // ebx bool v3; // zf v2 = (void **)v1; v3 = *(_BYTE *)(v1 + 82) == 0; *(_DWORD *)v1 = &off_4F66E4; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( v2[6] ) operator delete[](v2[6]); if ( v2[8] ) operator delete[](v2[8]); if ( v2[10] ) operator delete[](v2[10]); } std::locale::facet::~facet(a1); } // 4B01E1: variable 'v1' is possibly undefined // 4F66E4: using guessed type int (*off_4F66E4)(); //----- (004B0240) -------------------------------------------------------- void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) { int v1; // ecx void **v2; // ebx bool v3; // zf v2 = (void **)v1; v3 = *(_BYTE *)(v1 + 82) == 0; *(_DWORD *)v1 = &off_4F66E4; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( v2[6] ) operator delete[](v2[6]); if ( v2[8] ) operator delete[](v2[8]); if ( v2[10] ) operator delete[](v2[10]); } std::locale::facet::~facet(a1); } // 4B0241: variable 'v1' is possibly undefined // 4F66E4: using guessed type int (*off_4F66E4)(); //----- (004B02A0) -------------------------------------------------------- void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) { _DWORD *v3; // eax _DWORD *v4; // edx _DWORD *v5; // esi int (__fastcall *v6)(int); // eax int (__fastcall *v7)(int); // eax int (__fastcall *v8)(int); // eax _DWORD *(__thiscall *v9)(char *, int); // eax unsigned int v10; // eax bool v11; // al _DWORD *(__thiscall *v12)(_DWORD *, int); // eax unsigned int v13; // eax _DWORD *(__thiscall *v14)(_DWORD *, int); // eax unsigned int v15; // eax _DWORD *(__thiscall *v16)(int *, int); // eax unsigned int v17; // eax int (__fastcall *v18)(int); // eax int v19; // eax int (__fastcall *v20)(int); // eax int v21; // eax void *v22; // eax volatile signed __int32 *v23; // ecx volatile signed __int32 *v24; // ecx __int16 v25; // ax __int16 v26; // ax int v27; // eax _DWORD *v28; // edx unsigned int v29; // [esp+Ch] [ebp-4Ch] wchar_t *v30; // [esp+10h] [ebp-48h] wchar_t *v31; // [esp+14h] [ebp-44h] wchar_t *v32; // [esp+18h] [ebp-40h] std::string *v33; // [esp+1Ch] [ebp-3Ch] char v34[5]; // [esp+2Fh] [ebp-29h] BYREF _DWORD *v35; // [esp+34h] [ebp-24h] BYREF _DWORD *v36; // [esp+38h] [ebp-20h] BYREF int v37[7]; // [esp+3Ch] [ebp-1Ch] BYREF v3 = std::use_facet>(a2); v4 = (_DWORD *)*v3; v5 = v3; v6 = *(int (__fastcall **)(int))(*v3 + 8); if ( v6 == std::moneypunct::do_decimal_point ) { *(_WORD *)(this + 18) = *(_WORD *)(v5[2] + 18); v7 = (int (__fastcall *)(int))v4[3]; if ( v7 == std::moneypunct::do_thousands_sep ) goto LABEL_3; } else { v25 = v6((int)v5); v4 = (_DWORD *)*v5; *(_WORD *)(this + 18) = v25; v7 = (int (__fastcall *)(int))v4[3]; if ( v7 == std::moneypunct::do_thousands_sep ) { LABEL_3: *(_WORD *)(this + 20) = *(_WORD *)(v5[2] + 20); v8 = (int (__fastcall *)(int))v4[8]; if ( v8 == std::moneypunct::do_frac_digits ) goto LABEL_4; LABEL_28: v27 = v8((int)v5); v28 = (_DWORD *)*v5; *(_DWORD *)(this + 48) = v27; v9 = (_DWORD *(__thiscall *)(char *, int))v28[4]; if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) goto LABEL_5; goto LABEL_29; } } v26 = v7((int)v5); v4 = (_DWORD *)*v5; *(_WORD *)(this + 20) = v26; v8 = (int (__fastcall *)(int))v4[8]; if ( v8 != std::moneypunct::do_frac_digits ) goto LABEL_28; LABEL_4: *(_DWORD *)(this + 48) = *(_DWORD *)(v5[2] + 48); v9 = (_DWORD *(__thiscall *)(char *, int))v4[4]; if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) { LABEL_5: std::string::string(&v34[1], *(char **)(v5[2] + 8), (int)v37); goto LABEL_6; } LABEL_29: v9(&v34[1], (int)v5); LABEL_6: v10 = *(_DWORD *)(*(_DWORD *)&v34[1] - 12); *(_DWORD *)(this + 12) = v10; v33 = (std::string *)operator new[](v10); std::string::copy(&v34[1], v33, *(char **)(this + 12), 0, v29); v11 = 0; if ( *(_DWORD *)(this + 12) ) v11 = (unsigned __int8)(*(_BYTE *)v33 - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v11; v12 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 20); if ( v12 == std::moneypunct::do_curr_symbol ) std::wstring::basic_string(&v35, *(wchar_t **)(v5[2] + 24), (int)v37); else v12(&v35, (int)v5); v13 = *(v35 - 3); *(_DWORD *)(this + 28) = v13; if ( v13 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v30 = (wchar_t *)operator new[](2 * v13); std::wstring::copy(&v35, v30, *(_DWORD *)(this + 28), 0); v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 24); if ( v14 == std::moneypunct::do_positive_sign ) std::wstring::basic_string(&v36, *(wchar_t **)(v5[2] + 32), (int)v37); else v14(&v36, (int)v5); v15 = *(v36 - 3); *(_DWORD *)(this + 36) = v15; if ( v15 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v31 = (wchar_t *)operator new[](2 * v15); std::wstring::copy(&v36, v31, *(_DWORD *)(this + 36), 0); v16 = *(_DWORD *(__thiscall **)(int *, int))(*v5 + 28); if ( v16 == std::moneypunct::do_negative_sign ) std::wstring::basic_string(v37, *(wchar_t **)(v5[2] + 40), (int)v34); else v16(v37, (int)v5); v17 = *(_DWORD *)(v37[0] - 12); *(_DWORD *)(this + 44) = v17; if ( v17 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v32 = (wchar_t *)operator new[](2 * v17); std::wstring::copy(v37, v32, *(_DWORD *)(this + 44), 0); v18 = *(int (__fastcall **)(int))(*v5 + 36); if ( v18 == std::moneypunct::do_pos_format ) v19 = *(_DWORD *)(v5[2] + 52); else v19 = v18((int)v5); *(_DWORD *)(this + 52) = v19; v20 = *(int (__fastcall **)(int))(*v5 + 40); if ( v20 == std::moneypunct::do_neg_format ) v21 = *(_DWORD *)(v5[2] + 56); else v21 = v20((int)v5); *(_DWORD *)(this + 56) = v21; v22 = std::use_facet>(a2); (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v22 + 44))( v22, std::money_base::_S_atoms, std::money_base::_S_atoms + 11, this + 60); *(_BYTE *)(this + 82) = 1; *(_DWORD *)(this + 8) = v33; *(_DWORD *)(this + 24) = v30; *(_DWORD *)(this + 32) = v31; *(_DWORD *)(this + 40) = v32; if ( (_UNKNOWN *)v37[0] == &unk_4E93EC ) { v23 = v36 - 3; if ( v36 == (_DWORD *)&unk_4E93EC ) goto LABEL_23; } else { std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v37[0] - 12), (int)v34); v23 = v36 - 3; if ( v36 == (_DWORD *)&unk_4E93EC ) goto LABEL_23; } std::wstring::_Rep::_M_dispose(v23, (int)v34); LABEL_23: if ( v35 == (_DWORD *)&unk_4E93EC ) { v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); if ( *(_UNKNOWN **)&v34[1] == &unk_4E93FC ) return; LABEL_36: std::string::_Rep::_M_dispose(v24, (int)v34); return; } std::wstring::_Rep::_M_dispose(v35 - 3, (int)v34); v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); if ( *(_UNKNOWN **)&v34[1] != &unk_4E93FC ) goto LABEL_36; } // 4B0358: variable 'v29' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; //----- (004B0880) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F66F4; this[2] = 0; this[3] = 0; result = a2 != 0; *((_BYTE *)this + 16) = 0; this[1] = result; *(_DWORD *)((char *)this + 18) = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; this[14] = 0; *((_BYTE *)this + 82) = 0; return result; } // 4F66F4: using guessed type int (*off_4F66F4)(); //----- (004B0900) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F66F4; this[2] = 0; this[3] = 0; result = a2 != 0; *((_BYTE *)this + 16) = 0; this[1] = result; *(_DWORD *)((char *)this + 18) = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; this[10] = 0; this[11] = 0; this[12] = 0; this[13] = 0; this[14] = 0; *((_BYTE *)this + 82) = 0; return result; } // 4F66F4: using guessed type int (*off_4F66F4)(); //----- (004B0980) -------------------------------------------------------- void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::__moneypunct_cache::~__moneypunct_cache(v2); operator delete(a1); } // 4B0987: variable 'v2' is possibly undefined //----- (004B09B0) -------------------------------------------------------- void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) { int v1; // ecx void **v2; // ebx bool v3; // zf v2 = (void **)v1; v3 = *(_BYTE *)(v1 + 82) == 0; *(_DWORD *)v1 = &off_4F66F4; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( v2[6] ) operator delete[](v2[6]); if ( v2[8] ) operator delete[](v2[8]); if ( v2[10] ) operator delete[](v2[10]); } std::locale::facet::~facet(a1); } // 4B09B1: variable 'v1' is possibly undefined // 4F66F4: using guessed type int (*off_4F66F4)(); //----- (004B0A10) -------------------------------------------------------- void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) { int v1; // ecx void **v2; // ebx bool v3; // zf v2 = (void **)v1; v3 = *(_BYTE *)(v1 + 82) == 0; *(_DWORD *)v1 = &off_4F66F4; if ( !v3 ) { if ( *(_DWORD *)(v1 + 8) ) operator delete[](*(void **)(v1 + 8)); if ( v2[6] ) operator delete[](v2[6]); if ( v2[8] ) operator delete[](v2[8]); if ( v2[10] ) operator delete[](v2[10]); } std::locale::facet::~facet(a1); } // 4B0A11: variable 'v1' is possibly undefined // 4F66F4: using guessed type int (*off_4F66F4)(); //----- (004B0A70) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_4F68F8; std::locale::facet::~facet(v2); operator delete(a1); } // 4B0A7C: variable 'v2' is possibly undefined //----- (004B0A90) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_4F68F8; std::locale::facet::~facet(a1); } // 4B0A90: variable 'v1' is possibly undefined //----- (004B0AA0) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_4F6950; std::locale::facet::~facet(v2); operator delete(a1); } // 4B0AAC: variable 'v2' is possibly undefined //----- (004B0AC0) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_4F6950; std::locale::facet::~facet(a1); } // 4B0AC0: variable 'v1' is possibly undefined //----- (004B0AD0) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F675C; std::codecvt::~codecvt(v2); operator delete(a1); } // 4B0ADC: variable 'v2' is possibly undefined // 4F675C: using guessed type int (*off_4F675C)(); //----- (004B0AF0) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F675C; std::codecvt::~codecvt(a1); } // 4B0AF0: variable 'v1' is possibly undefined // 4F675C: using guessed type int (*off_4F675C)(); //----- (004B0B00) -------------------------------------------------------- void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1) { __cxxabiv1::__si_class_type_info *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6788; __cxxabiv1::__si_class_type_info::~__si_class_type_info(v2); operator delete(a1); } // 4B0B0C: variable 'v2' is possibly undefined // 4F6788: using guessed type void (__cdecl *off_4F6788)(std::__iosfail_type_info *__hidden this); //----- (004B0B20) -------------------------------------------------------- void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *this) { _DWORD *v1; // ecx *v1 = &off_4F6788; __cxxabiv1::__si_class_type_info::~__si_class_type_info(this); } // 4B0B20: variable 'v1' is possibly undefined // 4F6788: using guessed type void (__cdecl *off_4F6788)(std::__iosfail_type_info *__hidden this); //----- (004B0B30) -------------------------------------------------------- void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_4F68F8; std::locale::facet::~facet(v2); operator delete(a1); } // 4B0B3C: variable 'v2' is possibly undefined //----- (004B0B50) -------------------------------------------------------- void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_4F68F8; std::locale::facet::~facet(a1); } // 4B0B50: variable 'v1' is possibly undefined //----- (004B0B60) -------------------------------------------------------- void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_4F6950; std::locale::facet::~facet(v2); operator delete(a1); } // 4B0B6C: variable 'v2' is possibly undefined //----- (004B0B80) -------------------------------------------------------- void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_4F6950; std::locale::facet::~facet(a1); } // 4B0B80: variable 'v1' is possibly undefined //----- (004B0B90) -------------------------------------------------------- void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F680C; std::codecvt::~codecvt(v2); operator delete(a1); } // 4B0B9C: variable 'v2' is possibly undefined // 4F680C: using guessed type int (*off_4F680C)(); //----- (004B0BB0) -------------------------------------------------------- void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F680C; std::codecvt::~codecvt(a1); } // 4B0BB0: variable 'v1' is possibly undefined // 4F680C: using guessed type int (*off_4F680C)(); //----- (004B0BC0) -------------------------------------------------------- void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6838; std::bad_alloc::~bad_alloc(v2); operator delete(a1, 4u); } // 4B0BCC: variable 'v2' is possibly undefined // 4F6838: using guessed type void (__cdecl *off_4F6838)(std::bad_array_new_length *__hidden this); //----- (004B0BF0) -------------------------------------------------------- void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_4F6838; std::bad_alloc::~bad_alloc(a1); } // 4B0BF0: variable 'v1' is possibly undefined // 4F6838: using guessed type void (__cdecl *off_4F6838)(std::bad_array_new_length *__hidden this); //----- (004B0C00) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_4F68F8; std::locale::facet::~facet(v2); operator delete(a1); } // 4B0C0C: variable 'v2' is possibly undefined //----- (004B0C20) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_4F68F8; std::locale::facet::~facet(a1); } // 4B0C20: variable 'v1' is possibly undefined //----- (004B0C30) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_4F6950; std::locale::facet::~facet(v2); operator delete(a1); } // 4B0C3C: variable 'v2' is possibly undefined //----- (004B0C50) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_4F6950; std::locale::facet::~facet(a1); } // 4B0C50: variable 'v1' is possibly undefined //----- (004B0C60) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6A2C; std::codecvt::~codecvt(v2); operator delete(a1); } // 4B0C6C: variable 'v2' is possibly undefined // 4F6A2C: using guessed type int (*off_4F6A2C)(); //----- (004B0C80) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6A2C; std::codecvt::~codecvt(a1); } // 4B0C80: variable 'v1' is possibly undefined // 4F6A2C: using guessed type int (*off_4F6A2C)(); //----- (004B0C90) -------------------------------------------------------- void __fastcall std::_V2::error_category::~error_category(void *a1) { operator delete(a1); } //----- (004B0CB0) -------------------------------------------------------- void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this) { return `anonymous namespace'::system_category_instance; } // 4E8F44: using guessed type void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this); //----- (004B0CC0) -------------------------------------------------------- void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this) { return &`anonymous namespace'::generic_category_instance; } // 4E8F48: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); //----- (004B0CD0) -------------------------------------------------------- _DWORD *__thiscall std::map>::operator[]( _DWORD *this, int a2) { _DWORD *v2; // edx _DWORD *inserted; // ebx _DWORD *v5; // esi char v6; // al _DWORD *v7; // esi int insert_hint_unique_pos; // eax _DWORD *v9; // edx void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] _DWORD *v12; // [esp+1Ch] [ebp-1Ch] v2 = this + 1; inserted = this + 1; v5 = (_DWORD *)this[2]; while ( v5 ) { v12 = v2; v6 = std::operator<((int)(v5 + 4), a2); v2 = v12; if ( v6 ) { v5 = (_DWORD *)v5[3]; } else { inserted = v5; v5 = (_DWORD *)v5[2]; } } if ( v2 == inserted || (unsigned __int8)std::operator<(a2, (int)(inserted + 4)) ) { v7 = operator new((struct type_info *)0x30, v11); std::string::basic_string(v7 + 4, a2); v7[10] = 0; v7[11] = 0; insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( this, inserted, (int)(v7 + 4)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v9 ) { inserted = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( this, insert_hint_unique_pos, v9, v7); } else { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v7 + 11); std::string::_M_dispose((void **)v7 + 4); operator delete(v7); } } return inserted + 10; } // 4B0D34: variable 'v11' is possibly undefined // 4B0D75: variable 'v9' is possibly undefined //----- (004B0DDC) -------------------------------------------------------- _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) { _DWORD *v2; // edx _DWORD *inserted; // ebx _DWORD *v5; // esi char v6; // al char *v7; // esi int insert_hint_unique_pos; // eax _DWORD *v9; // edx void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] _DWORD *v12; // [esp+1Ch] [ebp-1Ch] v2 = this + 1; inserted = this + 1; v5 = (_DWORD *)this[2]; while ( v5 ) { v12 = v2; v6 = std::operator<((int)(v5 + 4), a2); v2 = v12; if ( v6 ) { v5 = (_DWORD *)v5[3]; } else { inserted = v5; v5 = (_DWORD *)v5[2]; } } if ( v2 == inserted || (unsigned __int8)std::operator<(a2, (int)(inserted + 4)) ) { v7 = (char *)operator new((struct type_info *)0x40, v11); std::string::basic_string((_DWORD *)v7 + 4, a2); *((_DWORD *)v7 + 10) = v7 + 48; *((_DWORD *)v7 + 11) = 0; v7[48] = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, inserted, (int)(v7 + 16)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v9 ) { inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, insert_hint_unique_pos, v9, v7); } else { std::string::_M_dispose((void **)v7 + 10); std::string::_M_dispose((void **)v7 + 4); operator delete(v7); } } return inserted + 10; } // 4B0E40: variable 'v11' is possibly undefined // 4B0E84: variable 'v9' is possibly undefined //----- (004B0EE8) -------------------------------------------------------- char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2) { _DWORD *v3; // ebx _DWORD *v4; // edx int insert_hint_unique_pos; // eax _DWORD *v6; // edx _DWORD *v7; // edi char v8; // al void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] _DWORD *v11; // [esp+18h] [ebp-20h] _DWORD *v12; // [esp+18h] [ebp-20h] _DWORD *v13; // [esp+1Ch] [ebp-1Ch] _DWORD *v14; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v4 = (_DWORD *)this[2]; v13 = this + 1; while ( v4 ) { v11 = v4; if ( (unsigned __int8)std::operator<((int)(v4 + 4), (int)a2) ) { v4 = (_DWORD *)v11[3]; } else { v3 = v11; v4 = (_DWORD *)v11[2]; } } if ( v13 == v3 || (unsigned __int8)std::operator<((int)a2, (int)(v3 + 4)) ) { v12 = v3; v3 = operator new((struct type_info *)0x34, v10); std::string::basic_string(v3 + 4, a2); v3[10] = 0; v3[11] = 0; v3[12] = 0; insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( this, v12, (int)(v3 + 4)); v7 = v6; if ( v6 ) { v8 = v13 == v6 || insert_hint_unique_pos != 0; if ( !v8 ) v8 = std::operator<((int)(v3 + 4), (int)(v6 + 4)); std::_Rb_tree_insert_and_rebalance(v8, v3, v7, v13); ++this[5]; } else { v14 = (_DWORD *)insert_hint_unique_pos; std::vector::~vector((void ***)v3 + 10); std::string::_M_dispose((void **)v3 + 4); operator delete(v3); v3 = v14; } } return (char *)(v3 + 10); } // 4B0F50: variable 'v10' is possibly undefined // 4B0F91: variable 'v6' is possibly undefined //----- (004B1008) -------------------------------------------------------- char *__thiscall std::map>::operator[](_DWORD *this, int a2) { _DWORD *v2; // edi _DWORD *v3; // ebx _DWORD *v4; // edi _DWORD *v5; // edx int insert_hint_unique_pos; // edi _DWORD *v7; // esi char v8; // al void *v10; // [esp+0h] [ebp-38h] void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] _DWORD *v13; // [esp+1Ch] [ebp-1Ch] v2 = (_DWORD *)this[2]; v13 = this + 1; v3 = this + 1; while ( v2 ) { if ( (unsigned __int8)std::operator<((int)(v2 + 4), a2) ) { v2 = (_DWORD *)v2[3]; } else { v3 = v2; v2 = (_DWORD *)v2[2]; } } if ( v13 == v3 || (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) { v4 = v3; v3 = operator new((struct type_info *)0x34, v11); std::string::basic_string(v3 + 4, a2); v3[10] = 0; v3[11] = 0; v3[12] = 0; insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( this, v4, (int)(v3 + 4)); v7 = v5; if ( v5 ) { v8 = insert_hint_unique_pos != 0 || v13 == v5; if ( !v8 ) v8 = std::operator<((int)(v3 + 4), (int)(v5 + 4)); std::_Rb_tree_insert_and_rebalance(v8, v3, v7, v13); ++this[5]; } else { std::vector::~vector((void ***)v3 + 10, 0); std::string::_M_dispose((void **)v3 + 4); v10 = v3; v3 = (_DWORD *)insert_hint_unique_pos; operator delete(v10); } } return (char *)(v3 + 10); } // 4B106D: variable 'v11' is possibly undefined // 4B10AF: variable 'v5' is possibly undefined //----- (004B1148) -------------------------------------------------------- _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) { _DWORD *v2; // edi _DWORD *v3; // ebx _DWORD *v4; // edi _DWORD *v5; // edx int insert_hint_unique_pos; // edi _DWORD *v7; // esi char v8; // al void *v10; // [esp+0h] [ebp-38h] void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] _DWORD *v13; // [esp+1Ch] [ebp-1Ch] v2 = (_DWORD *)this[2]; v13 = this + 1; v3 = this + 1; while ( v2 ) { if ( (unsigned __int8)std::operator<((int)(v2 + 4), a2) ) { v2 = (_DWORD *)v2[3]; } else { v3 = v2; v2 = (_DWORD *)v2[2]; } } if ( v13 == v3 || (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) { v4 = v3; v3 = operator new((struct type_info *)0x2C, v11); std::string::basic_string(v3 + 4, a2); v3[10] = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, v4, (int)(v3 + 4)); v7 = v5; if ( v5 ) { v8 = insert_hint_unique_pos != 0 || v13 == v5; if ( !v8 ) v8 = std::operator<((int)(v3 + 4), (int)(v5 + 4)); std::_Rb_tree_insert_and_rebalance(v8, v3, v7, v13); ++this[5]; } else { std::string::_M_dispose((void **)v3 + 4); v10 = v3; v3 = (_DWORD *)insert_hint_unique_pos; operator delete(v10); } } return v3 + 10; } // 4B11AD: variable 'v11' is possibly undefined // 4B11E1: variable 'v5' is possibly undefined //----- (004B1270) -------------------------------------------------------- _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) { _DWORD *v2; // edi _DWORD *v3; // ebx _DWORD *v4; // edi _DWORD *v5; // edx int insert_hint_unique_pos; // edi _DWORD *v7; // esi char v8; // al void *v10; // [esp+0h] [ebp-38h] void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] _DWORD *v13; // [esp+1Ch] [ebp-1Ch] v2 = (_DWORD *)this[2]; v13 = this + 1; v3 = this + 1; while ( v2 ) { if ( (unsigned __int8)std::operator<((int)(v2 + 4), a2) ) { v2 = (_DWORD *)v2[3]; } else { v3 = v2; v2 = (_DWORD *)v2[2]; } } if ( v13 == v3 || (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) { v4 = v3; v3 = operator new((struct type_info *)0x2C, v11); std::string::basic_string(v3 + 4, a2); v3[10] = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, v4, (int)(v3 + 4)); v7 = v5; if ( v5 ) { v8 = insert_hint_unique_pos != 0 || v13 == v5; if ( !v8 ) v8 = std::operator<((int)(v3 + 4), (int)(v5 + 4)); std::_Rb_tree_insert_and_rebalance(v8, v3, v7, v13); ++this[5]; } else { std::string::_M_dispose((void **)v3 + 4); v10 = v3; v3 = (_DWORD *)insert_hint_unique_pos; operator delete(v10); } } return v3 + 10; } // 4B12D5: variable 'v11' is possibly undefined // 4B1309: variable 'v5' is possibly undefined //----- (004B1398) -------------------------------------------------------- _DWORD *__thiscall std::map>>::operator[]( _DWORD *this, _DWORD *a2) { _DWORD *v3; // edi _DWORD *v4; // ebx _DWORD *v5; // eax _DWORD *v6; // edx bool v7; // al void (__cdecl *v9)(void *); // [esp+4h] [ebp-34h] _DWORD *v10; // [esp+1Ch] [ebp-1Ch] int insert_hint_unique_pos; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v4 = this + 1; v5 = (_DWORD *)this[2]; while ( v5 ) { if ( v5[4] < *a2 ) { v5 = (_DWORD *)v5[3]; } else { v4 = v5; v5 = (_DWORD *)v5[2]; } } if ( v3 == v4 || *a2 < v4[4] ) { v10 = v4; v4 = operator new((struct type_info *)0x2C, v9); v4[4] = *a2; std::_Rb_tree_header::_Rb_tree_header(v4 + 6); insert_hint_unique_pos = std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( this, v10, v4 + 4); if ( v6 ) { v7 = insert_hint_unique_pos != 0 || v3 == v6; if ( !v7 ) v7 = v4[4] < v6[4]; std::_Rb_tree_insert_and_rebalance(v7, v4, v6, v3); ++this[5]; } else { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)(v4 + 5)); operator delete(v4); v4 = (_DWORD *)insert_hint_unique_pos; } } return v4 + 5; } // 4B13E1: variable 'v9' is possibly undefined // 4B1419: variable 'v6' is possibly undefined //----- (004B1470) -------------------------------------------------------- volatile signed __int32 *__thiscall std::pair>::pair,true>( int this, int a2) { std::string::basic_string((void **)this, *(char **)a2); return std::__shared_ptr::__shared_ptr( (_DWORD *)(this + 24), (_DWORD *)(a2 + 4)); } //----- (004B14A0) -------------------------------------------------------- int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, _BYTE *a4, int a5, int a6) { char *v6; // edi size_t Size; // ebx int result; // eax size_t v9; // ebp char *v10; // esi char v11; // al char v12; // dl _BYTE *v13; // eax _BYTE *v14; // ecx int (__stdcall *v15)(unsigned __int8); // edx int (__stdcall *v16)(unsigned __int8); // edx char v17; // dl int (__stdcall *v18)(unsigned __int8); // eax char v19; // dl int (__stdcall *v20)(unsigned __int8); // eax int (__stdcall *v21)(unsigned __int8); // eax void *v22; // [esp+14h] [ebp-28h] _BYTE *v23; // [esp+1Ch] [ebp-20h] _BYTE *v24; // [esp+1Ch] [ebp-20h] _BYTE *v25; // [esp+1Ch] [ebp-20h] _BYTE *v26; // [esp+1Ch] [ebp-20h] _BYTE *v27; // [esp+1Ch] [ebp-20h] v6 = a3; v22 = a4; Size = a5 - a6; result = a1[3] & 0xB0; if ( result == 32 ) { if ( a6 ) { result = (int)memcpy(a3, a4, a6); if ( !Size ) return result; } else if ( !Size ) { return result; } return (int)memset(&a3[a6], (char)Src, Size); } v9 = a6; if ( result != 16 ) goto LABEL_3; v13 = std::use_facet>((int)(a1 + 27)); v14 = v13; if ( v13[28] ) { result = (unsigned __int8)*a4; if ( v14[74] == (_BYTE)result ) { LABEL_23: *a3 = result; v9 = a6 - 1; v6 = a3 + 1; v22 = a4 + 1; goto LABEL_3; } goto LABEL_22; } v23 = v13; std::ctype::_M_widen_init((int)v13); v14 = v23; v15 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); result = 45; if ( v15 != std::ctype::do_widen ) { result = v15(45u); v14 = v23; } if ( *a4 == (_BYTE)result ) goto LABEL_23; if ( v14[28] ) { result = (unsigned __int8)*a4; LABEL_22: if ( v14[72] == (_BYTE)result ) goto LABEL_23; LABEL_7: if ( v14[77] == (_BYTE)result && a6 > 1 ) { LABEL_9: v11 = a4[1]; if ( v11 == v14[149] ) { LABEL_44: v6 = a3 + 2; v9 = a6 - 2; *a3 = *a4; result = (unsigned __int8)a4[1]; v22 = a4 + 2; a3[1] = result; goto LABEL_3; } goto LABEL_10; } LABEL_3: v10 = &v6[Size]; if ( !Size ) { if ( !v9 ) return result; return (int)memcpy(v10, v22, v9); } goto LABEL_13; } v24 = v14; std::ctype::_M_widen_init((int)v14); v14 = v24; v16 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); result = 43; if ( v16 != std::ctype::do_widen ) { result = v16(43u); v14 = v24; } if ( *a4 == (_BYTE)result ) goto LABEL_23; if ( v14[28] ) { result = (unsigned __int8)*a4; goto LABEL_7; } v25 = v14; std::ctype::_M_widen_init((int)v14); v14 = v25; v17 = 48; v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v25 + 24); if ( v18 != std::ctype::do_widen ) { v17 = v18(48u); v14 = v25; } result = (int)a4; if ( *a4 != v17 || a6 <= 1 ) goto LABEL_3; if ( v14[28] ) goto LABEL_9; v26 = v14; std::ctype::_M_widen_init((int)v14); v14 = v26; v19 = 120; v20 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v26 + 24); if ( v20 != std::ctype::do_widen ) { v19 = v20(120u); v14 = v26; } v11 = a4[1]; if ( v11 == v19 ) goto LABEL_44; if ( v14[28] ) { LABEL_10: v12 = v14[117]; goto LABEL_11; } v27 = v14; std::ctype::_M_widen_init((int)v14); v21 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v27 + 24); if ( v21 == std::ctype::do_widen ) v12 = 88; else v12 = v21(88u); v11 = a4[1]; LABEL_11: if ( v12 == v11 ) goto LABEL_44; v10 = &a3[Size]; if ( !Size ) return (int)memcpy(v10, v22, v9); LABEL_13: result = (int)memset(v6, (char)Src, Size); if ( v9 ) return (int)memcpy(v10, v22, v9); return result; } //----- (004B17C0) -------------------------------------------------------- int __cdecl std::__pad>::_S_pad( wchar_t *S1, wchar_t *S2, wchar_t *a3, wchar_t *a4, int a5, int a6) { wchar_t *S; // edi size_t N; // ebx int result; // eax size_t v9; // ebp int v10; // edx wchar_t *v11; // esi __int16 v12; // ax __int16 v13; // ax wchar_t *v14; // [esp+30h] [ebp-30h] void *v15; // [esp+3Ch] [ebp-24h] S = a3; v14 = a4; N = a5 - a6; result = *((_DWORD *)S1 + 3) & 0xB0; if ( result == 32 ) { if ( a6 ) { result = (int)wmemcpy(a3, a4, a6); if ( !N ) return result; } else if ( !N ) { return result; } return (int)wmemset(&a3[a6], (wchar_t)S2, N); } v9 = a6; v10 = N; if ( result != 16 ) goto LABEL_3; v15 = std::use_facet>((int)(S1 + 54)); result = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(45); v10 = N; if ( *a4 == (_WORD)result || (result = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(43), v10 = N, *a4 == (_WORD)result) ) { *a3 = result; v9 = a6 - 1; S = a3 + 1; v14 = a4 + 1; goto LABEL_3; } result = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(48); v10 = N; if ( *a4 != (_WORD)result || a6 <= 1 ) { LABEL_3: v11 = &S[v10]; if ( !N ) { if ( !v9 ) return result; return (int)wmemcpy(v11, v14, v9); } goto LABEL_13; } v12 = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(120); v10 = N; if ( a4[1] == v12 || (v13 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 40))(v15, 88), v10 = N, a4[1] == v13) ) { S = a3 + 2; v9 = a6 - 2; *a3 = *a4; result = a4[1]; v14 = a4 + 2; a3[1] = result; goto LABEL_3; } v11 = &a3[N]; if ( !N ) return (int)wmemcpy(v11, v14, v9); LABEL_13: result = (int)wmemset(S, (wchar_t)S2, N); if ( v9 ) return (int)wmemcpy(v11, v14, v9); return result; } //----- (004B19E0) -------------------------------------------------------- void **std::ctype::classic_table() { return &std::ctype::classic_table(void)::_S_classic_table; } // 4F6EC0: using guessed type void *std::ctype::classic_table(void)::_S_classic_table; //----- (004B19F0) -------------------------------------------------------- int __thiscall std::ctype::ctype(_DWORD *this, void **a2, char a3, int a4) { void **v4; // eax int result; // eax v4 = a2; *this = &off_4F6A58; this[4] = 0; this[5] = 0; this[1] = a4 != 0; *((_BYTE *)this + 12) = a3 & (a2 != 0); if ( !a2 ) v4 = &std::ctype::classic_table(void)::_S_classic_table; this[6] = v4; result = 0; *(_DWORD *)((char *)this + 29) = 0; *(_DWORD *)((char *)this + 281) = 0; memset( (void *)(((unsigned int)this + 33) & 0xFFFFFFFC), 0, 4 * (((unsigned int)this - (((unsigned int)this + 33) & 0xFFFFFFFC) + 285) >> 2)); *((_BYTE *)this + 28) = 0; *(_DWORD *)((char *)this + 285) = 0; *(_DWORD *)((char *)this + 537) = 0; memset( (void *)(((unsigned int)this + 289) & 0xFFFFFFFC), 0, 4 * (((unsigned int)this - (((unsigned int)this + 289) & 0xFFFFFFFC) + 541) >> 2)); *((_BYTE *)this + 541) = 0; return result; } // 4F6A58: using guessed type int (*off_4F6A58)(); // 4F6EC0: using guessed type void *std::ctype::classic_table(void)::_S_classic_table; //----- (004B1AA0) -------------------------------------------------------- int __thiscall std::ctype::ctype(_DWORD *this, int a2, void **a3, char a4, int a5) { void **v5; // eax int result; // eax v5 = a3; *this = &off_4F6A58; this[4] = 0; this[5] = 0; this[1] = a5 != 0; *((_BYTE *)this + 12) = a4 & (a3 != 0); if ( !a3 ) v5 = &std::ctype::classic_table(void)::_S_classic_table; this[6] = v5; result = 0; *(_DWORD *)((char *)this + 29) = 0; *(_DWORD *)((char *)this + 281) = 0; memset( (void *)(((unsigned int)this + 33) & 0xFFFFFFFC), 0, 4 * (((unsigned int)this - (((unsigned int)this + 33) & 0xFFFFFFFC) + 285) >> 2)); *((_BYTE *)this + 28) = 0; *(_DWORD *)((char *)this + 285) = 0; *(_DWORD *)((char *)this + 537) = 0; memset( (void *)(((unsigned int)this + 289) & 0xFFFFFFFC), 0, 4 * (((unsigned int)this - (((unsigned int)this + 289) & 0xFFFFFFFC) + 541) >> 2)); *((_BYTE *)this + 541) = 0; return result; } // 4F6A58: using guessed type int (*off_4F6A58)(); // 4F6EC0: using guessed type void *std::ctype::classic_table(void)::_S_classic_table; //----- (004B1B50) -------------------------------------------------------- void __fastcall std::ctype::~ctype(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::ctype::~ctype(v2); operator delete(a1); } // 4B1B56: variable 'v2' is possibly undefined //----- (004B1B70) -------------------------------------------------------- void __cdecl std::ctype::~ctype(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx v2 = v1; *v1 = &off_4F6A58; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); if ( *((_BYTE *)v2 + 12) && v2[6] ) operator delete[]((void *)v2[6]); std::locale::facet::~facet(a1); } // 4B1B74: variable 'v1' is possibly undefined // 4F6A58: using guessed type int (*off_4F6A58)(); //----- (004B1BB0) -------------------------------------------------------- wctype_t __fastcall std::ctype::_M_initialize_ctype(int a1) { int WCh; // ebx int v3; // eax int i; // ebx int j; // ebx wctype_t result; // ax for ( WCh = 0; WCh != 128; ++WCh ) { v3 = wctob(WCh); if ( v3 == -1 ) { *(_BYTE *)(a1 + 12) = 0; goto LABEL_5; } *(_BYTE *)(a1 + WCh + 13) = v3; } *(_BYTE *)(a1 + 12) = 1; LABEL_5: for ( i = 0; i != 256; ++i ) *(_WORD *)(a1 + 2 * i + 142) = btowc(i); for ( j = 0; j != 16; ++j ) { *(_WORD *)(a1 + 2 * j + 654) = 1 << j; result = std::ctype::_M_convert_to_wmask(1 << j); *(_WORD *)(a1 + 2 * j + 686) = result; } return result; } //----- (004B1C50) -------------------------------------------------------- wctype_t __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3) { int v4; // eax *this = &off_4F6A88; this[1] = a3 != 0; v4 = std::locale::facet::_S_clone_c_locale(); *((_BYTE *)this + 12) = 0; this[2] = v4; return std::ctype::_M_initialize_ctype((int)this); } // 4F6A88: using guessed type int (*off_4F6A88)(); //----- (004B1C90) -------------------------------------------------------- wctype_t __thiscall std::ctype::ctype(_DWORD *this, int a2) { *this = &off_4F6A88; this[1] = a2 != 0; this[2] = std::locale::facet::_S_get_c_locale(); *((_BYTE *)this + 12) = 0; return std::ctype::_M_initialize_ctype((int)this); } // 4F6A88: using guessed type int (*off_4F6A88)(); //----- (004B1CD0) -------------------------------------------------------- void __fastcall std::ctype::~ctype(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6A88; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); *a1 = &unk_4F688C; std::locale::facet::~facet(v2); operator delete(a1); } // 4B1CEF: variable 'v2' is possibly undefined // 4F6A88: using guessed type int (*off_4F6A88)(); //----- (004B1D10) -------------------------------------------------------- void __cdecl std::ctype::~ctype(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx v2 = v1; *v1 = &off_4F6A88; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); *v2 = &unk_4F688C; std::locale::facet::~facet(a1); } // 4B1D14: variable 'v1' is possibly undefined // 4F6A88: using guessed type int (*off_4F6A88)(); //----- (004B1D40) -------------------------------------------------------- int __thiscall std::deque>::_M_push_back_aux const&>( int this, _DWORD *a2) { int v3; // edx char *v4; // eax unsigned int v5; // esi int v6; // ebx char *v7; // ecx char *v8; // ebx unsigned int v9; // eax unsigned int v10; // esi char *v11; // eax const void *v12; // ecx int v13; // eax int v14; // eax char *v15; // ebx int v16; // eax int v17; // ebx int *v18; // ecx int result; // eax void (__cdecl *v20)(void *); // [esp+4h] [ebp-34h] int v21; // [esp+14h] [ebp-24h] char *v22; // [esp+18h] [ebp-20h] int v23; // [esp+1Ch] [ebp-1Ch] v3 = *(_DWORD *)(this + 36); v4 = *(char **)(this + 20); v23 = v3 - (_DWORD)v4; v21 = (v3 - (int)v4) >> 2; if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + ((*(_DWORD *)(this + 24) - *(_DWORD *)(this + 28)) >> 3) + ((v21 - 1) << 6) == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); v5 = *(_DWORD *)(this + 4); if ( v5 - ((v3 - *(_DWORD *)this) >> 2) <= 1 ) { v6 = v21 + 2; if ( v5 <= 2 * (v21 + 2) ) { v9 = v5 + 2; if ( !v5 ) v5 = 1; v10 = v9 + v5; if ( v10 > 0x1FFFFFFF ) std::__throw_bad_alloc(); v11 = (char *)operator new((struct type_info *)(4 * v10), v20); v12 = *(const void **)(this + 20); v22 = v11; v8 = &v11[4 * ((v10 - v6) >> 1)]; v13 = *(_DWORD *)(this + 36) + 4; if ( (const void *)v13 != v12 ) memmove(v8, v12, v13 - (_DWORD)v12); operator delete(*(void **)this); *(_DWORD *)(this + 4) = v10; *(_DWORD *)this = v22; } else { v7 = (char *)(v3 + 4); v8 = (char *)(*(_DWORD *)this + 4 * ((v5 - v6) >> 1)); if ( v4 <= v8 ) { if ( v4 != v7 ) memmove(v8, v4, v3 + 4 - (_DWORD)v4); } else if ( v4 != v7 ) { memmove(v8, v4, v3 + 4 - (_DWORD)v4); } } v14 = *(_DWORD *)v8; *(_DWORD *)(this + 20) = v8; v15 = &v8[v23]; *(_DWORD *)(this + 12) = v14; *(_DWORD *)(this + 16) = v14 + 512; v16 = *(_DWORD *)v15; *(_DWORD *)(this + 36) = v15; *(_DWORD *)(this + 28) = v16; *(_DWORD *)(this + 32) = v16 + 512; } v17 = *(_DWORD *)(this + 36); *(_DWORD *)(v17 + 4) = operator new((struct type_info *)0x200, v20); std::__shared_ptr::__shared_ptr( *(_DWORD **)(this + 24), a2); v18 = (int *)(*(_DWORD *)(this + 36) + 4); result = *v18; *(_DWORD *)(this + 36) = v18; *(_DWORD *)(this + 28) = result; *(_DWORD *)(this + 32) = result + 512; *(_DWORD *)(this + 24) = result; return result; } // 4B1E2C: variable 'v20' is possibly undefined //----- (004B1EDC) -------------------------------------------------------- int __fastcall std::deque>::back(_DWORD *a1) { int v1; // eax v1 = a1[6]; if ( v1 == a1[7] ) v1 = *(_DWORD *)(a1[9] - 4) + 512; return v1 - 8; } //----- (004B1EF4) -------------------------------------------------------- int __fastcall std::deque>::pop_back(_DWORD *a1) { char *v2; // ecx int v4; // eax int v5; // ecx v2 = (char *)a1[6]; if ( v2 == (char *)a1[7] ) { operator delete(v2); v4 = a1[9]; v5 = *(_DWORD *)(v4 - 4); a1[9] = v4 - 4; a1[7] = v5; a1[8] = v5 + 512; a1[6] = v5 + 504; return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); } else { a1[6] = v2 - 8; return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); } } //----- (004B1F4C) -------------------------------------------------------- volatile signed __int32 *__thiscall std::deque>::push_back( _DWORD *this, _DWORD *a2) { int v3; // eax _DWORD *v4; // ecx volatile signed __int32 *result; // eax v3 = this[8]; v4 = (_DWORD *)this[6]; if ( v4 == (_DWORD *)(v3 - 8) ) return (volatile signed __int32 *)std::deque>::_M_push_back_aux const&>( (int)this, a2); result = std::__shared_ptr::__shared_ptr(v4, a2); this[6] += 8; return result; } //----- (004B1F84) -------------------------------------------------------- int __thiscall std::deque>::_M_push_back_aux const&>( int this, _DWORD *a2) { int v3; // ecx char *v4; // eax unsigned int v5; // esi int v6; // ebx char *v7; // edx char *v8; // ebx unsigned int v9; // eax unsigned int v10; // esi char *v11; // eax const void *v12; // edx int v13; // eax int v14; // eax char *v15; // ebx int v16; // eax int v17; // ebx _DWORD *v18; // edx int v19; // eax int *v20; // edx int result; // eax void (__cdecl *v22)(void *); // [esp+4h] [ebp-34h] int v23; // [esp+14h] [ebp-24h] char *v24; // [esp+18h] [ebp-20h] int v25; // [esp+1Ch] [ebp-1Ch] v3 = *(_DWORD *)(this + 36); v4 = *(char **)(this + 20); v25 = v3 - (_DWORD)v4; v23 = (v3 - (int)v4) >> 2; if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + ((*(_DWORD *)(this + 24) - *(_DWORD *)(this + 28)) >> 3) + ((v23 - 1) << 6) == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); v5 = *(_DWORD *)(this + 4); if ( v5 - ((v3 - *(_DWORD *)this) >> 2) <= 1 ) { v6 = v23 + 2; if ( v5 <= 2 * (v23 + 2) ) { v9 = v5 + 2; if ( !v5 ) v5 = 1; v10 = v9 + v5; if ( v10 > 0x1FFFFFFF ) std::__throw_bad_alloc(); v11 = (char *)operator new((struct type_info *)(4 * v10), v22); v12 = *(const void **)(this + 20); v24 = v11; v8 = &v11[4 * ((v10 - v6) >> 1)]; v13 = *(_DWORD *)(this + 36) + 4; if ( (const void *)v13 != v12 ) memmove(v8, v12, v13 - (_DWORD)v12); operator delete(*(void **)this); *(_DWORD *)(this + 4) = v10; *(_DWORD *)this = v24; } else { v7 = (char *)(v3 + 4); v8 = (char *)(*(_DWORD *)this + 4 * ((v5 - v6) >> 1)); if ( v4 <= v8 ) { if ( v4 != v7 ) memmove(v8, v4, v3 + 4 - (_DWORD)v4); } else if ( v4 != v7 ) { memmove(v8, v4, v3 + 4 - (_DWORD)v4); } } v14 = *(_DWORD *)v8; *(_DWORD *)(this + 20) = v8; v15 = &v8[v25]; *(_DWORD *)(this + 12) = v14; *(_DWORD *)(this + 16) = v14 + 512; v16 = *(_DWORD *)v15; *(_DWORD *)(this + 36) = v15; *(_DWORD *)(this + 28) = v16; *(_DWORD *)(this + 32) = v16 + 512; } v17 = *(_DWORD *)(this + 36); *(_DWORD *)(v17 + 4) = operator new((struct type_info *)0x200, v22); v18 = *(_DWORD **)(this + 24); *v18 = *a2; v19 = a2[1]; v18[1] = v19; if ( v19 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v19 + 4)); v20 = (int *)(*(_DWORD *)(this + 36) + 4); result = *v20; *(_DWORD *)(this + 36) = v20; *(_DWORD *)(this + 28) = result; *(_DWORD *)(this + 32) = result + 512; *(_DWORD *)(this + 24) = result; return result; } // 4B2070: variable 'v22' is possibly undefined //----- (004B2130) -------------------------------------------------------- int __fastcall std::deque>::pop_back(_DWORD *a1) { char *v2; // ecx int v4; // eax int v5; // ecx v2 = (char *)a1[6]; if ( v2 == (char *)a1[7] ) { operator delete(v2); v4 = a1[9]; v5 = *(_DWORD *)(v4 - 4); a1[9] = v4 - 4; a1[7] = v5; a1[8] = v5 + 512; a1[6] = v5 + 504; return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); } else { a1[6] = v2 - 8; return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); } } //----- (004B2188) -------------------------------------------------------- volatile signed __int32 *__thiscall std::deque>::push_back( _DWORD *this, _DWORD *a2) { _DWORD *v2; // edx volatile signed __int32 *result; // eax v2 = (_DWORD *)this[6]; if ( v2 == (_DWORD *)(this[8] - 8) ) return (volatile signed __int32 *)std::deque>::_M_push_back_aux const&>( (int)this, a2); *v2 = *a2; result = (volatile signed __int32 *)a2[1]; v2[1] = result; if ( result ) result = __gnu_cxx::__atomic_add_dispatch(result + 1); this[6] += 8; return result; } // 4B21B3: variable 'this' is possibly undefined //----- (004B21C8) -------------------------------------------------------- #error "4B2373: call analysis failed (funcsize=146)" //----- (004B239C) -------------------------------------------------------- _BYTE *__thiscall std::deque::push_back(_DWORD *this, int a2) { int v3; // eax _DWORD *v4; // ecx _BYTE *result; // eax v3 = this[8]; v4 = (_DWORD *)this[6]; if ( v4 == (_DWORD *)(v3 - 24) ) return (_BYTE *)std::deque::_M_push_back_aux(a2); result = std::string::basic_string(v4, a2); this[6] += 24; return result; } // 4B21C8: using guessed type _DWORD __stdcall std::deque::_M_push_back_aux(_DWORD); //----- (004B23E0) -------------------------------------------------------- int std::locale::_S_initialize() { int result; // eax void (*func)(void); // [esp+4h] [ebp-18h] if ( !_CRT_MT ) { result = std::locale::_S_classic; if ( std::locale::_S_classic ) return result; LABEL_5: result = std::locale::_Impl::_Impl( `anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, (unsigned int)func); std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; return result; } __gthr_win32_once(&std::locale::_S_once, std::locale::_S_initialize_once); result = std::locale::_S_classic; if ( !std::locale::_S_classic ) goto LABEL_5; return result; } // 4B2429: variable 'func' is possibly undefined // 4E831C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; // 4E9568: using guessed type int std::locale::_S_classic; // 4E9584: using guessed type int std::locale::_S_global; // 15412D0: using guessed type int _CRT_MT; //----- (004B2450) -------------------------------------------------------- void std::locale::_S_initialize_once(void) { unsigned int v0; // [esp+4h] [ebp-18h] std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, v0); std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; } // 4B245F: variable 'v0' is possibly undefined // 4E831C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; // 4E9568: using guessed type int std::locale::_S_classic; // 4E9584: using guessed type int std::locale::_S_global; //----- (004B2480) -------------------------------------------------------- std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this) { std::locale *result; // eax result = this; if ( this && (((unsigned __int8)this & 0x3F) == 0 || ((unsigned int)this & 0xFFFFFFC0) != 0) ) { if ( (unsigned int)this - 1 > 4 ) std::__throw_runtime_error((std::runtime_error *)"locale::_S_normalize_category category not found"); return (std::locale *)CSWTCH_107[(_DWORD)this - 1]; } return result; } // 4F0948: using guessed type int CSWTCH_107[6]; //----- (004B24C0) -------------------------------------------------------- int __userpurge std::locale::_Impl::_M_init_extra@( int a1@, std::locale::_Impl *this, std::locale::facet **a3) { int v4; // eax int v5; // ecx int v6; // edi int v7; // eax int v8; // ecx int v9; // eax int v10; // esi int v11; // eax int v12; // ecx int v13; // edi int v14; // edi int v15; // edi int v16; // eax int v17; // ebx int result; // eax int v19; // [esp+1Ch] [ebp-2Ch] int v20; // [esp+1Ch] [ebp-2Ch] int v21; // [esp+1Ch] [ebp-2Ch] int v22; // [esp+1Ch] [ebp-2Ch] int v23; // [esp+1Ch] [ebp-2Ch] int v24; // [esp+1Ch] [ebp-2Ch] int v25; // [esp+1Ch] [ebp-2Ch] int v26; // [esp+1Ch] [ebp-2Ch] int v27; // [esp+1Ch] [ebp-2Ch] int v28; // [esp+20h] [ebp-28h] int v29; // [esp+24h] [ebp-24h] int v30; // [esp+24h] [ebp-24h] int v31; // [esp+28h] [ebp-20h] int v32; // [esp+28h] [ebp-20h] int v33; // [esp+28h] [ebp-20h] int v34; // [esp+28h] [ebp-20h] int v35; // [esp+28h] [ebp-20h] int v36; // [esp+28h] [ebp-20h] int v37; // [esp+28h] [ebp-20h] int v38; // [esp+28h] [ebp-20h] int v39; // [esp+28h] [ebp-20h] int v40; // [esp+2Ch] [ebp-1Ch] v4 = *(_DWORD *)this; v5 = *((_DWORD *)this + 2); std::`anonymous namespace'::numpunct_c = (int)&off_4F6D3C; v6 = *((_DWORD *)this + 1); v40 = v5; v29 = v4; dword_4E9448 = 1; dword_4E944C = v4; std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_c, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_4E9448, 1u); else ++dword_4E9448; v31 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v31 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_c; dword_4E94C0 = 1; std::`anonymous namespace'::collate_c = (int)&off_4F6BD0; dword_4E94C4 = std::locale::facet::_S_get_c_locale(); if ( _CRT_MT ) _InterlockedAdd(&dword_4E94C0, 1u); else ++dword_4E94C0; v32 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v32 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_c; dword_4E9490 = 1; std::`anonymous namespace'::moneypunct_cf = (int)&off_4F5E90; dword_4E9494 = v6; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_cf, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_4E9490, 1u); else ++dword_4E9490; v33 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v33 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_cf; dword_4E949C = 1; std::`anonymous namespace'::moneypunct_ct = (int)&off_4F5EC4; dword_4E94A0 = v40; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_ct, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_4E949C, 1u); else ++dword_4E949C; v34 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v34 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_ct; dword_4E9470 = 1; std::`anonymous namespace'::money_get_c = (int)&off_4F6E44; if ( _CRT_MT ) _InterlockedAdd(&dword_4E9470, 1u); else dword_4E9470 = 2; v35 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v35 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = &std::`anonymous namespace'::money_get_c; dword_4E9480 = 1; std::`anonymous namespace'::money_put_c = (int)&off_4F6E74; if ( _CRT_MT ) _InterlockedAdd(&dword_4E9480, 1u); else dword_4E9480 = 2; v36 = *(_DWORD *)(a1 + 4); v7 = std::locale::id::_M_id(&std::money_put>::id); v8 = _CRT_MT; *(_DWORD *)(v36 + 4 * v7) = &std::`anonymous namespace'::money_put_c; dword_4E9460 = 1; std::`anonymous namespace'::time_get_c = (int)&off_4F6D84; if ( v8 ) _InterlockedAdd(&dword_4E9460, 1u); else dword_4E9460 = 2; v37 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v37 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = &std::`anonymous namespace'::time_get_c; std::messages::messages(&std::`anonymous namespace'::messages_c, 1); if ( _CRT_MT ) _InterlockedAdd(dword_4E9428, 1u); else ++dword_4E9428[0]; v38 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v38 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_c; v9 = *((_DWORD *)this + 3); dword_4E9454 = 1; v10 = *((_DWORD *)this + 5); v39 = *((_DWORD *)this + 4); v28 = v9; std::`anonymous namespace'::numpunct_w = (int)&off_4F6D60; dword_4E9458 = v9; std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_w, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_4E9454, 1u); else ++dword_4E9454; v19 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v19 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_w; dword_4E94CC = 1; std::`anonymous namespace'::collate_w = (int)&off_4F6BEC; dword_4E94D0 = std::locale::facet::_S_get_c_locale(); if ( _CRT_MT ) _InterlockedAdd(&dword_4E94CC, 1u); else ++dword_4E94CC; v20 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v20 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_w; dword_4E94A8 = 1; std::`anonymous namespace'::moneypunct_wf = (int)&off_4F5EF8; dword_4E94AC = v39; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wf, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_4E94A8, 1u); else ++dword_4E94A8; v21 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v21 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wf; dword_4E94B4 = 1; std::`anonymous namespace'::moneypunct_wt = (int)&off_4F5F2C; dword_4E94B8 = v10; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wt, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_4E94B4, 1u); else ++dword_4E94B4; v22 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v22 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wt; dword_4E9478 = 1; std::`anonymous namespace'::money_get_w = (int)&off_4F6E5C; if ( _CRT_MT ) _InterlockedAdd(&dword_4E9478, 1u); else dword_4E9478 = 2; v23 = *(_DWORD *)(a1 + 4); v11 = std::locale::id::_M_id(&std::money_get>::id); v12 = _CRT_MT; *(_DWORD *)(v23 + 4 * v11) = &std::`anonymous namespace'::money_get_w; dword_4E9488 = 1; std::`anonymous namespace'::money_put_w = (int)&off_4F6E8C; if ( v12 ) _InterlockedAdd(&dword_4E9488, 1u); else dword_4E9488 = 2; v24 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v24 + 4 * std::locale::id::_M_id(std::money_put>::id)) = &std::`anonymous namespace'::money_put_w; dword_4E9468 = 1; std::`anonymous namespace'::time_get_w = (int)&off_4F6DAC; if ( _CRT_MT ) _InterlockedAdd(&dword_4E9468, 1u); else dword_4E9468 = 2; v25 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v25 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = &std::`anonymous namespace'::time_get_w; std::messages::messages(&std::`anonymous namespace'::messages_w, 1); if ( _CRT_MT ) _InterlockedAdd(dword_4E9438, 1u); else ++dword_4E9438[0]; v26 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v26 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_w; v27 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v27 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v29; v30 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v30 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v6; v13 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v13 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v40; v14 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v14 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v28; v15 = *(_DWORD *)(a1 + 12); v16 = std::locale::id::_M_id(&std::moneypunct::id); v17 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v15 + 4 * v16) = v39; result = std::locale::id::_M_id(&std::moneypunct::id); *(_DWORD *)(v17 + 4 * result) = v10; return result; } // 4E940C: using guessed type int std::moneypunct::id; // 4E9410: using guessed type int std::moneypunct::id; // 4E9414: using guessed type int std::moneypunct::id; // 4E9418: using guessed type int std::moneypunct::id; // 4E9424: using guessed type _DWORD std::`anonymous namespace'::messages_c; // 4E9428: using guessed type signed __int32 dword_4E9428[3]; // 4E9434: using guessed type _DWORD std::`anonymous namespace'::messages_w; // 4E9438: using guessed type signed __int32 dword_4E9438[3]; // 4E9444: using guessed type int std::`anonymous namespace'::numpunct_c; // 4E9448: using guessed type int dword_4E9448; // 4E944C: using guessed type int dword_4E944C; // 4E9450: using guessed type int std::`anonymous namespace'::numpunct_w; // 4E9454: using guessed type int dword_4E9454; // 4E9458: using guessed type int dword_4E9458; // 4E945C: using guessed type int std::`anonymous namespace'::time_get_c; // 4E9460: using guessed type int dword_4E9460; // 4E9464: using guessed type int std::`anonymous namespace'::time_get_w; // 4E9468: using guessed type int dword_4E9468; // 4E946C: using guessed type int std::`anonymous namespace'::money_get_c; // 4E9470: using guessed type int dword_4E9470; // 4E9474: using guessed type int std::`anonymous namespace'::money_get_w; // 4E9478: using guessed type int dword_4E9478; // 4E947C: using guessed type int std::`anonymous namespace'::money_put_c; // 4E9480: using guessed type int dword_4E9480; // 4E9484: using guessed type int std::`anonymous namespace'::money_put_w; // 4E9488: using guessed type int dword_4E9488; // 4E948C: using guessed type int std::`anonymous namespace'::moneypunct_cf; // 4E9490: using guessed type int dword_4E9490; // 4E9494: using guessed type int dword_4E9494; // 4E9498: using guessed type int std::`anonymous namespace'::moneypunct_ct; // 4E949C: using guessed type int dword_4E949C; // 4E94A0: using guessed type int dword_4E94A0; // 4E94A4: using guessed type int std::`anonymous namespace'::moneypunct_wf; // 4E94A8: using guessed type int dword_4E94A8; // 4E94AC: using guessed type int dword_4E94AC; // 4E94B0: using guessed type int std::`anonymous namespace'::moneypunct_wt; // 4E94B4: using guessed type int dword_4E94B4; // 4E94B8: using guessed type int dword_4E94B8; // 4E94BC: using guessed type int std::`anonymous namespace'::collate_c; // 4E94C0: using guessed type int dword_4E94C0; // 4E94C4: using guessed type int dword_4E94C4; // 4E94C8: using guessed type int std::`anonymous namespace'::collate_w; // 4E94CC: using guessed type int dword_4E94CC; // 4E94D0: using guessed type int dword_4E94D0; // 4E95E0: using guessed type int std::collate::id; // 4E95E4: using guessed type int std::collate::id; // 4E9600: using guessed type int std::messages::id; // 4E9604: using guessed type int std::messages::id; // 4E9608: using guessed type int std::numpunct::id; // 4E960C: using guessed type int std::numpunct::id; // 4E9610: using guessed type int std::time_get>::id; // 4E9614: using guessed type int std::time_get>::id; // 4E9620: using guessed type int std::money_get>::id; // 4E9624: using guessed type int std::money_get>::id; // 4E9628: using guessed type int std::money_put>::id; // 4E962C: using guessed type int std::money_put>::id[5]; // 4F5E90: using guessed type int (*off_4F5E90)(); // 4F5EC4: using guessed type int (*off_4F5EC4)(); // 4F5EF8: using guessed type int (*off_4F5EF8)(); // 4F5F2C: using guessed type int (*off_4F5F2C)(); // 4F6BD0: using guessed type int (*off_4F6BD0)(); // 4F6BEC: using guessed type int (*off_4F6BEC)(); // 4F6D3C: using guessed type int (*off_4F6D3C)(); // 4F6D60: using guessed type int (*off_4F6D60)(); // 4F6D84: using guessed type int (*off_4F6D84)(); // 4F6DAC: using guessed type int (*off_4F6DAC)(); // 4F6E44: using guessed type int (*off_4F6E44)(); // 4F6E5C: using guessed type int (*off_4F6E5C)(); // 4F6E74: using guessed type int (*off_4F6E74)(); // 4F6E8C: using guessed type int (*off_4F6E8C)(); // 15412D0: using guessed type int _CRT_MT; //----- (004B2BC0) -------------------------------------------------------- int __userpurge std::locale::_Impl::_M_init_extra@( int a1@, std::locale::_Impl *this, int *a3, int **a4, const char *a5, const char *a6) { _DWORD *v7; // esi int v8; // eax void *v9; // esi _DWORD *v10; // esi int v11; // eax _DWORD *v12; // esi int v13; // eax void *v14; // eax void *v15; // eax void *v16; // eax int v17; // ecx volatile signed __int32 *v18; // esi _DWORD *v19; // esi int v20; // eax void *v21; // esi _DWORD *v22; // esi int v23; // eax _DWORD *v24; // esi int v25; // eax void *v26; // eax void *v27; // eax int v28; // ecx void *v29; // eax int v30; // edx volatile signed __int32 *v31; // esi int v32; // ebx int result; // eax void (__cdecl *v34)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v35)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v36)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v37)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v38)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v39)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v40)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v41)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v42)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v43)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v44)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v45)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v46)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v47)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v48)(void *); // [esp+4h] [ebp-44h] void (__cdecl *v49)(void *); // [esp+4h] [ebp-44h] int v50; // [esp+1Ch] [ebp-2Ch] int v51; // [esp+1Ch] [ebp-2Ch] int v52; // [esp+1Ch] [ebp-2Ch] int v53; // [esp+1Ch] [ebp-2Ch] int v54; // [esp+1Ch] [ebp-2Ch] int v55; // [esp+1Ch] [ebp-2Ch] int v56; // [esp+1Ch] [ebp-2Ch] int v57; // [esp+1Ch] [ebp-2Ch] int v58; // [esp+1Ch] [ebp-2Ch] int v59; // [esp+1Ch] [ebp-2Ch] int v60; // [esp+1Ch] [ebp-2Ch] int v61; // [esp+1Ch] [ebp-2Ch] int v62; // [esp+1Ch] [ebp-2Ch] int v63; // [esp+1Ch] [ebp-2Ch] int v64; // [esp+1Ch] [ebp-2Ch] v7 = operator new((struct type_info *)0xC, v34); v8 = *(_DWORD *)this; v7[1] = 0; *v7 = &off_4F6D3C; v7[2] = 0; std::numpunct::_M_initialize_numpunct(v7, v8); if ( _CRT_MT ) _InterlockedAdd(v7 + 1, 1u); else ++v7[1]; v50 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v50 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v7; v9 = operator new((struct type_info *)0xC, v35); *((_DWORD *)v9 + 1) = 0; *(_DWORD *)v9 = &off_4F6BD0; *((_DWORD *)v9 + 2) = std::locale::facet::_S_clone_c_locale(); if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)v9 + 1, 1u); else ++*((_DWORD *)v9 + 1); v51 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v51 + 4 * std::locale::id::_M_id(&std::collate::id)) = v9; v10 = operator new((struct type_info *)0xC, v36); v11 = *(_DWORD *)this; v10[1] = 0; *v10 = &off_4F5E90; v10[2] = 0; std::moneypunct::_M_initialize_moneypunct(v10, v11, 0); if ( _CRT_MT ) _InterlockedAdd(v10 + 1, 1u); else ++v10[1]; v52 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v52 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v10; v12 = operator new((struct type_info *)0xC, v37); v13 = *(_DWORD *)this; v12[1] = 0; *v12 = &off_4F5EC4; v12[2] = 0; std::moneypunct::_M_initialize_moneypunct(v12, v13, 0); if ( _CRT_MT ) _InterlockedAdd(v12 + 1, 1u); else ++v12[1]; v53 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v53 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v12; v14 = operator new((struct type_info *)8, v38); *((_DWORD *)v14 + 1) = 0; *(_DWORD *)v14 = &off_4F6E44; if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)v14 + 1, 1u); else *((_DWORD *)v14 + 1) = 1; v54 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v54 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v14; v15 = operator new((struct type_info *)8, v39); *((_DWORD *)v15 + 1) = 0; *(_DWORD *)v15 = &off_4F6E74; if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)v15 + 1, 1u); else *((_DWORD *)v15 + 1) = 1; v55 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v55 + 4 * std::locale::id::_M_id(&std::money_put>::id)) = v15; v16 = operator new((struct type_info *)8, v40); v17 = _CRT_MT; *((_DWORD *)v16 + 1) = 0; *(_DWORD *)v16 = &off_4F6D84; if ( v17 ) _InterlockedAdd((volatile signed __int32 *)v16 + 1, 1u); else *((_DWORD *)v16 + 1) = 1; v56 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v56 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v16; v18 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v41); std::messages::messages(v18, *(_DWORD *)this, (int)a4, 0); if ( _CRT_MT ) _InterlockedAdd(v18 + 1, 1u); else ++*((_DWORD *)v18 + 1); v57 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v57 + 4 * std::locale::id::_M_id(&std::messages::id)) = v18; v19 = operator new((struct type_info *)0xC, v42); v20 = *(_DWORD *)this; v19[1] = 0; *v19 = &off_4F6D60; v19[2] = 0; std::numpunct::_M_initialize_numpunct(v19, v20); if ( _CRT_MT ) _InterlockedAdd(v19 + 1, 1u); else ++v19[1]; v58 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v58 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v19; v21 = operator new((struct type_info *)0xC, v43); *((_DWORD *)v21 + 1) = 0; *(_DWORD *)v21 = &off_4F6BEC; *((_DWORD *)v21 + 2) = std::locale::facet::_S_clone_c_locale(); if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)v21 + 1, 1u); else ++*((_DWORD *)v21 + 1); v59 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v59 + 4 * std::locale::id::_M_id(&std::collate::id)) = v21; v22 = operator new((struct type_info *)0xC, v44); v22[1] = 0; v23 = *a3; *v22 = &off_4F5EF8; v22[2] = 0; std::moneypunct::_M_initialize_moneypunct(v22, v23, (int)a5); if ( _CRT_MT ) _InterlockedAdd(v22 + 1, 1u); else ++v22[1]; v60 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v60 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v22; v24 = operator new((struct type_info *)0xC, v45); v24[1] = 0; v25 = *a3; *v24 = &off_4F5F2C; v24[2] = 0; std::moneypunct::_M_initialize_moneypunct(v24, v25, (int)a5); if ( _CRT_MT ) _InterlockedAdd(v24 + 1, 1u); else ++v24[1]; v61 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v61 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v24; v26 = operator new((struct type_info *)8, v46); *((_DWORD *)v26 + 1) = 0; *(_DWORD *)v26 = &off_4F6E5C; if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)v26 + 1, 1u); else *((_DWORD *)v26 + 1) = 1; v62 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v62 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v26; v27 = operator new((struct type_info *)8, v47); v28 = _CRT_MT; *((_DWORD *)v27 + 1) = 0; *(_DWORD *)v27 = &off_4F6E8C; if ( v28 ) _InterlockedAdd((volatile signed __int32 *)v27 + 1, 1u); else *((_DWORD *)v27 + 1) = 1; v63 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v63 + 4 * std::locale::id::_M_id(std::money_put>::id)) = v27; v29 = operator new((struct type_info *)8, v48); v30 = _CRT_MT; *((_DWORD *)v29 + 1) = 0; *(_DWORD *)v29 = &off_4F6DAC; if ( v30 ) _InterlockedAdd((volatile signed __int32 *)v29 + 1, 1u); else *((_DWORD *)v29 + 1) = 1; v64 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v64 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v29; v31 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v49); std::messages::messages(v31, *(_DWORD *)this, (int)a4, 0); if ( _CRT_MT ) _InterlockedAdd(v31 + 1, 1u); else ++*((_DWORD *)v31 + 1); v32 = *(_DWORD *)(a1 + 4); result = std::locale::id::_M_id(&std::messages::id); *(_DWORD *)(v32 + 4 * result) = v31; return result; } // 4B2BD5: variable 'v34' is possibly undefined // 4B2C2E: variable 'v35' is possibly undefined // 4B2C83: variable 'v36' is possibly undefined // 4B2CE3: variable 'v37' is possibly undefined // 4B2D43: variable 'v38' is possibly undefined // 4B2D88: variable 'v39' is possibly undefined // 4B2DCD: variable 'v40' is possibly undefined // 4B2E13: variable 'v41' is possibly undefined // 4B2E67: variable 'v42' is possibly undefined // 4B2EBF: variable 'v43' is possibly undefined // 4B2F14: variable 'v44' is possibly undefined // 4B2F76: variable 'v45' is possibly undefined // 4B2FD8: variable 'v46' is possibly undefined // 4B301D: variable 'v47' is possibly undefined // 4B3063: variable 'v48' is possibly undefined // 4B30A9: variable 'v49' is possibly undefined // 4E940C: using guessed type int std::moneypunct::id; // 4E9410: using guessed type int std::moneypunct::id; // 4E9414: using guessed type int std::moneypunct::id; // 4E9418: using guessed type int std::moneypunct::id; // 4E95E0: using guessed type int std::collate::id; // 4E95E4: using guessed type int std::collate::id; // 4E9600: using guessed type int std::messages::id; // 4E9604: using guessed type int std::messages::id; // 4E9608: using guessed type int std::numpunct::id; // 4E960C: using guessed type int std::numpunct::id; // 4E9610: using guessed type int std::time_get>::id; // 4E9614: using guessed type int std::time_get>::id; // 4E9620: using guessed type int std::money_get>::id; // 4E9624: using guessed type int std::money_get>::id; // 4E9628: using guessed type int std::money_put>::id; // 4E962C: using guessed type int std::money_put>::id[5]; // 4F5E90: using guessed type int (*off_4F5E90)(); // 4F5EC4: using guessed type int (*off_4F5EC4)(); // 4F5EF8: using guessed type int (*off_4F5EF8)(); // 4F5F2C: using guessed type int (*off_4F5F2C)(); // 4F6BD0: using guessed type int (*off_4F6BD0)(); // 4F6BEC: using guessed type int (*off_4F6BEC)(); // 4F6D3C: using guessed type int (*off_4F6D3C)(); // 4F6D60: using guessed type int (*off_4F6D60)(); // 4F6D84: using guessed type int (*off_4F6D84)(); // 4F6DAC: using guessed type int (*off_4F6DAC)(); // 4F6E44: using guessed type int (*off_4F6E44)(); // 4F6E5C: using guessed type int (*off_4F6E5C)(); // 4F6E74: using guessed type int (*off_4F6E74)(); // 4F6E8C: using guessed type int (*off_4F6E8C)(); // 15412D0: using guessed type int _CRT_MT; //----- (004B3230) -------------------------------------------------------- void __userpurge std::locale::_Impl::_M_install_cache( int a1@, std::locale::_Impl *this, const std::locale::facet *a3, unsigned int a4) { int v5; // ebx int *v6; // ecx int **v7; // edx const std::locale::facet *v8; // eax int v9; // edx int *v10; // ecx int v11; // eax int v12; // edx int v13; // ebx _DWORD *v14; // ecx void (__fastcall *v15)(void *); // eax int v16; // ecx volatile signed __int32 *v17; // ebp int v18; // edx _DWORD *exception; // eax v5 = (int)a3; if ( !(_BYTE)`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) { if ( _CRT_MT ) __gthr_win32_mutex_init_function(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); __cxa_guard_release(&`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); atexit(__tcf_0_2); } if ( _CRT_MT && __gthr_win32_mutex_lock(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) { exception = __cxa_allocate_exception(4u); *exception = &off_4F5338; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); } v6 = std::locale::_S_twinned_facets; if ( std::locale::_S_twinned_facets ) { while ( 1 ) { v8 = (const std::locale::facet *)std::locale::id::_M_id(v6); v10 = *(int **)(v9 + 4); if ( v8 == a3 ) { v11 = std::locale::id::_M_id(v10); goto LABEL_9; } if ( (const std::locale::facet *)std::locale::id::_M_id(v10) == a3 ) break; v6 = v7[2]; if ( !v6 ) goto LABEL_15; } v18 = std::locale::id::_M_id(*v7); v11 = (int)a3; v5 = v18; LABEL_9: v12 = *(_DWORD *)(a1 + 12); v13 = 4 * v5; v14 = (_DWORD *)(v12 + v13); if ( *(_DWORD *)(v12 + v13) ) goto LABEL_10; LABEL_16: v17 = (volatile signed __int32 *)((char *)this + 4); if ( _CRT_MT ) { _InterlockedAdd(v17, 1u); v16 = _CRT_MT; v12 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v12 + v13) = this; if ( v11 == -1 ) goto LABEL_13; if ( v16 ) { _InterlockedAdd(v17, 1u); v16 = _CRT_MT; *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * v11) = this; goto LABEL_13; } } else { ++*((_DWORD *)this + 1); *v14 = this; if ( v11 == -1 ) return; } ++*((_DWORD *)this + 1); *(_DWORD *)(v12 + 4 * v11) = this; return; } LABEL_15: v12 = *(_DWORD *)(a1 + 12); v13 = 4 * (_DWORD)a3; v11 = -1; v14 = (_DWORD *)(v12 + 4 * (_DWORD)a3); if ( !*v14 ) goto LABEL_16; LABEL_10: if ( this ) { v15 = *(void (__fastcall **)(void *))(*(_DWORD *)this + 4); if ( v15 == std::locale::facet::~facet ) { operator delete(this); v16 = _CRT_MT; goto LABEL_13; } v15(this); } v16 = _CRT_MT; LABEL_13: if ( v16 ) { if ( __gthr_win32_mutex_unlock(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) std::locale::_Impl::_M_install_cache(this, (void (__cdecl *)(void *))a3); } } // 4B328D: variable 'v7' is possibly undefined // 4B329C: variable 'v9' is possibly undefined // 4F0B00: using guessed type int *std::locale::_S_twinned_facets; // 4F1308: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; // 4F5338: using guessed type void (__cdecl *off_4F5338)(__gnu_cxx::__concurrence_lock_error *__hidden this); // 15412D0: using guessed type int _CRT_MT; //----- (004B3440) -------------------------------------------------------- const std::locale::id *__userpurge std::locale::_Impl::_M_install_facet@( _DWORD *a1@, std::locale::_Impl *this, const std::locale::id *a3, const std::locale::facet *a4) { const std::locale::id *result; // eax unsigned int v6; // esi unsigned int v7; // edi int v8; // eax unsigned int v9; // ebp int *v10; // eax int v11; // edx int *v12; // ecx int v13; // ebx _DWORD *v14; // eax int v15; // eax unsigned int v16; // ebp int v17; // edi int *v18; // edx int v19; // ecx int *v20; // eax int v21; // ebx _DWORD *v22; // eax volatile signed __int32 **v23; // edi volatile signed __int32 *v24; // eax int *v25; // ecx int **v26; // edx int v27; // edx int v28; // esi int v29; // edx int v30; // ebp _DWORD *v31; // esi _DWORD *v32; // ecx signed __int32 v33; // eax int v34; // edx int v35; // edx unsigned int v36; // esi volatile signed __int32 *v37; // ecx signed __int32 v38; // eax void (*v39)(void); // eax void (__fastcall *v40)(void *); // edx int v41; // esi std::locale::facet **v42; // edx signed __int32 v43; // eax void (__fastcall *v44)(void *); // eax const std::locale::id *v45; // [esp+4h] [ebp-48h] unsigned int v46; // [esp+1Ch] [ebp-30h] int v47; // [esp+20h] [ebp-2Ch] void *v48; // [esp+24h] [ebp-28h] _DWORD *v49; // [esp+28h] [ebp-24h] void *v50; // [esp+28h] [ebp-24h] _DWORD *v51; // [esp+2Ch] [ebp-20h] result = a3; if ( !a3 ) return result; v6 = std::locale::id::_M_id((int *)this); if ( a1[2] - 1 < v6 ) { v46 = v6 + 4; v48 = (void *)a1[1]; v7 = -1; if ( v6 + 4 <= 0x1FFFFFFF ) v7 = 4 * (v6 + 4); v8 = operator new[](v7); v9 = a1[2]; v47 = v8; if ( v9 ) { v10 = (int *)a1[1]; v11 = v47; v49 = a1; v12 = &v10[v9]; do { v13 = *v10++; v11 += 4; *(_DWORD *)(v11 - 4) = v13; } while ( v10 != v12 ); a1 = v49; } if ( v46 > v9 ) { v14 = (_DWORD *)(v47 + 4 * v9); do *v14++ = 0; while ( v14 != (_DWORD *)(v47 + 4 * v6 + 16) ); } v50 = (void *)a1[3]; v15 = operator new[](v7); v16 = a1[2]; v17 = v15; if ( v16 ) { v18 = (int *)a1[3]; v51 = a1; v19 = v15; v20 = &v18[v16]; do { v21 = *v18++; v19 += 4; *(_DWORD *)(v19 - 4) = v21; } while ( v20 != v18 ); a1 = v51; } if ( v46 > v16 ) { v22 = (_DWORD *)(v17 + 4 * v16); do *v22++ = 0; while ( (_DWORD *)(v17 + 4 * v6 + 16) != v22 ); } a1[3] = v17; a1[2] = v46; a1[1] = v47; if ( v48 ) operator delete[](v48); if ( v50 ) operator delete[](v50); } if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)a3 + 1, 1u); else ++*((_DWORD *)a3 + 1); v23 = (volatile signed __int32 **)(a1[1] + 4 * v6); v24 = *v23; if ( !*v23 ) goto LABEL_39; v25 = std::locale::_S_twinned_facets; if ( !std::locale::_S_twinned_facets ) { LABEL_37: if ( _CRT_MT ) goto LABEL_52; goto LABEL_38; } while ( 1 ) { if ( std::locale::id::_M_id(v25) == v6 ) { v28 = a1[1]; v30 = v28 + 4 * std::locale::id::_M_id(*(int **)(v27 + 4)); if ( !*(_DWORD *)v30 ) goto LABEL_51; v31 = std::locale::facet::_M_sso_shim((volatile signed __int32 *)a3, *(std::locale::facet **)(v29 + 4), v45); if ( _CRT_MT ) { _InterlockedAdd(v31 + 1, 1u); v32 = *(_DWORD **)v30; if ( _CRT_MT ) { v33 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v30 + 4), 0xFFFFFFFF); LABEL_35: if ( v33 == 1 ) { v44 = *(void (__fastcall **)(void *))(*v32 + 4); if ( v44 != std::locale::facet::~facet ) goto LABEL_71; LABEL_63: operator delete(v32); } goto LABEL_36; } } else { ++v31[1]; v32 = *(_DWORD **)v30; } v33 = v32[1]; v32[1] = v33 - 1; goto LABEL_35; } if ( std::locale::id::_M_id(*(int **)(v27 + 4)) == v6 ) break; v25 = v26[2]; if ( !v25 ) goto LABEL_51; } v41 = a1[1]; v30 = v41 + 4 * std::locale::id::_M_id(*v26); if ( *(_DWORD *)v30 ) { v31 = std::locale::facet::_M_cow_shim((volatile signed __int32 *)a3, *v42, v45); if ( !_CRT_MT ) { ++v31[1]; v32 = *(_DWORD **)v30; goto LABEL_60; } _InterlockedAdd(v31 + 1, 1u); v32 = *(_DWORD **)v30; if ( _CRT_MT ) { v43 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v30 + 4), 0xFFFFFFFF); } else { LABEL_60: v43 = v32[1]; v32[1] = v43 - 1; } if ( v43 == 1 ) { v44 = *(void (__fastcall **)(void *))(*v32 + 4); if ( v44 == std::locale::facet::~facet ) goto LABEL_63; LABEL_71: ((void (*)(void))v44)(); } LABEL_36: *(_DWORD *)v30 = v31; v24 = *v23; goto LABEL_37; } LABEL_51: v24 = *v23; if ( _CRT_MT ) { LABEL_52: if ( _InterlockedExchangeAdd(v24 + 1, 0xFFFFFFFF) == 1 ) goto LABEL_53; goto LABEL_39; } LABEL_38: v34 = *((_DWORD *)v24 + 1); *((_DWORD *)v24 + 1) = v34 - 1; if ( v34 == 1 ) { LABEL_53: v40 = *(void (__fastcall **)(void *))(*v24 + 4); if ( v40 == std::locale::facet::~facet ) operator delete((void *)v24); else v40((void *)v24); } LABEL_39: result = a3; v35 = a1[2]; *v23 = (volatile signed __int32 *)a3; if ( v35 ) { result = (const std::locale::id *)a1[3]; v36 = 0; do { v37 = (volatile signed __int32 *)*((_DWORD *)result + v36); if ( v37 ) { if ( _CRT_MT ) { v38 = _InterlockedExchangeAdd(v37 + 1, 0xFFFFFFFF); } else { v38 = *((_DWORD *)v37 + 1); *((_DWORD *)v37 + 1) = v38 - 1; } if ( v38 == 1 ) { v39 = *(void (**)(void))(*v37 + 4); if ( (char *)v39 == (char *)std::locale::facet::~facet ) operator delete((void *)v37); else v39(); } result = (const std::locale::id *)a1[3]; *((_DWORD *)result + v36) = 0; } ++v36; } while ( a1[2] > v36 ); } return result; } // 4B35B0: variable 'v27' is possibly undefined // 4B35C0: variable 'v26' is possibly undefined // 4B35F0: variable 'v29' is possibly undefined // 4B35FA: variable 'v45' is possibly undefined // 4B376E: variable 'v42' is possibly undefined // 4D9E60: using guessed type void __stdcall __noreturn std::locale::_Impl::_M_install_facet(_DWORD, _DWORD); // 4F0B00: using guessed type int *std::locale::_S_twinned_facets; // 15412D0: using guessed type int _CRT_MT; //----- (004B3850) -------------------------------------------------------- const std::locale::id *__userpurge std::locale::_Impl::_M_replace_facet@( _DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, const std::locale::id *a4) { unsigned int v5; // eax std::locale::_Impl *v6; // ecx const std::locale::id *v7; // eax v5 = std::locale::id::_M_id((int *)a3); if ( *((_DWORD *)this + 2) - 1 < v5 || (v7 = *(const std::locale::id **)(*((_DWORD *)this + 1) + 4 * v5)) == 0 ) std::__throw_runtime_error((std::runtime_error *)"locale::_Impl::_M_replace_facet"); return std::locale::_Impl::_M_install_facet(a1, v6, v7, a4); } // 4B3887: variable 'v6' is possibly undefined //----- (004B38A0) -------------------------------------------------------- const std::locale::_Impl *__userpurge std::locale::_Impl::_M_replace_category@( _DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl **a3, const std::locale::id *const *a4) { const std::locale::_Impl **v4; // ebx const std::locale::_Impl *result; // eax const std::locale::id *v7; // [esp+8h] [ebp-14h] v4 = a3; for ( result = *a3; *v4; result = *v4 ) { ++v4; std::locale::_Impl::_M_replace_facet(a1, this, result, v7); } return result; } // 4B38CC: variable 'v7' is possibly undefined //----- (004B38F0) -------------------------------------------------------- void *__userpurge std::locale::_Impl::_Impl@( _DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, unsigned int a4) { unsigned int v4; // edx unsigned int v6; // eax int v7; // eax unsigned int v8; // esi unsigned int v9; // edx int v10; // edx int v11; // ecx int v12; // eax int v13; // edx int v14; // edx int v15; // ecx _DWORD *v16; // eax _DWORD *v17; // edx int i; // esi void *result; // eax unsigned int Size; // ebp int v21; // eax int v22; // edx const void *Src; // edx void *v24; // eax _DWORD *v25; // [esp+1Ch] [ebp-20h] v4 = -1; a1[1] = 0; a1[3] = 0; a1[4] = 0; *a1 = a3; v6 = *((_DWORD *)this + 2); a1[2] = v6; if ( v6 <= 0x1FFFFFFF ) v4 = 4 * v6; v7 = operator new[](v4); v8 = a1[2]; a1[1] = v7; v9 = v8; if ( v8 ) { v10 = 0; while ( 1 ) { v11 = *(_DWORD *)(*((_DWORD *)this + 1) + 4 * v10); *(_DWORD *)(v7 + 4 * v10) = v11; if ( !v11 ) goto LABEL_6; if ( !_CRT_MT ) break; _InterlockedAdd((volatile signed __int32 *)(v11 + 4), 1u); v8 = a1[2]; if ( v8 <= ++v10 ) { LABEL_11: v9 = -1; if ( v8 <= 0x1FFFFFFF ) v9 = 4 * v8; goto LABEL_13; } LABEL_7: v7 = a1[1]; } ++*(_DWORD *)(v11 + 4); v8 = a1[2]; LABEL_6: if ( v8 <= ++v10 ) goto LABEL_11; goto LABEL_7; } LABEL_13: v12 = operator new[](v9); v13 = a1[2]; a1[3] = v12; if ( v13 ) { v14 = 0; while ( 1 ) { v15 = *(_DWORD *)(*((_DWORD *)this + 3) + 4 * v14); *(_DWORD *)(v12 + 4 * v14) = v15; if ( !v15 ) goto LABEL_16; if ( !_CRT_MT ) break; _InterlockedAdd((volatile signed __int32 *)(v15 + 4), 1u); if ( a1[2] <= (unsigned int)++v14 ) goto LABEL_21; LABEL_17: v12 = a1[3]; } ++*(_DWORD *)(v15 + 4); LABEL_16: if ( a1[2] <= (unsigned int)++v14 ) goto LABEL_21; goto LABEL_17; } LABEL_21: v16 = (_DWORD *)operator new[](0x18u); a1[4] = v16; v17 = v16 + 6; do *v16++ = 0; while ( v17 != v16 ); for ( i = 0; i != 24; i += 4 ) { result = *(void **)(*((_DWORD *)this + 4) + i); if ( !result ) break; Size = strlen(*(const char **)(*((_DWORD *)this + 4) + i)) + 1; v25 = (_DWORD *)(i + a1[4]); v21 = operator new[](Size); v22 = *((_DWORD *)this + 4); *v25 = v21; Src = *(const void **)(v22 + i); v24 = *(void **)(a1[4] + i); result = memcpy(v24, Src, Size); } return result; } // 4D9E3C: using guessed type void __stdcall __noreturn std::locale::_Impl::_Impl(_DWORD, _DWORD); // 15412D0: using guessed type int _CRT_MT; //----- (004B3A80) -------------------------------------------------------- int __userpurge std::locale::_Impl::_Impl@(_DWORD *a1@, std::locale::_Impl *this, unsigned int a3) { _DWORD *v4; // eax _DWORD *v5; // eax int *v6; // eax int v7; // esi int v8; // esi int v9; // esi int v10; // esi int v11; // esi int v12; // esi int v13; // esi int v14; // eax int v15; // ebx int result; // eax std::locale::facet **v17; // [esp+4h] [ebp-34h] const std::locale::facet *v18; // [esp+8h] [ebp-30h] const std::locale::facet *v19; // [esp+8h] [ebp-30h] const std::locale::facet *v20; // [esp+8h] [ebp-30h] const std::locale::facet *v21; // [esp+8h] [ebp-30h] const std::locale::facet *v22; // [esp+8h] [ebp-30h] const std::locale::facet *v23; // [esp+8h] [ebp-30h] const std::locale::facet *v24; // [esp+8h] [ebp-30h] const std::locale::facet *v25; // [esp+8h] [ebp-30h] const std::locale::facet *v26; // [esp+8h] [ebp-30h] const std::locale::facet *v27; // [esp+8h] [ebp-30h] const std::locale::facet *v28; // [esp+8h] [ebp-30h] const std::locale::facet *v29; // [esp+8h] [ebp-30h] const std::locale::facet *v30; // [esp+8h] [ebp-30h] const std::locale::facet *v31; // [esp+8h] [ebp-30h] const std::locale::facet *v32; // [esp+8h] [ebp-30h] const std::locale::facet *v33; // [esp+8h] [ebp-30h] const std::locale::facet *v34; // [esp+8h] [ebp-30h] const std::locale::facet *v35; // [esp+8h] [ebp-30h] const std::locale::facet *v36; // [esp+8h] [ebp-30h] const std::locale::facet *v37; // [esp+8h] [ebp-30h] const std::locale::facet *v38; // [esp+8h] [ebp-30h] const std::locale::facet *v39; // [esp+8h] [ebp-30h] const std::locale::facet *v40; // [esp+8h] [ebp-30h] const std::locale::facet *v41; // [esp+8h] [ebp-30h] const std::locale::facet *v42; // [esp+8h] [ebp-30h] const std::locale::facet *v43; // [esp+8h] [ebp-30h] const std::locale::facet *v44; // [esp+8h] [ebp-30h] const std::locale::facet *v45; // [esp+8h] [ebp-30h] const std::locale::facet *v46; // [esp+8h] [ebp-30h] const std::locale::facet *v47; // [esp+8h] [ebp-30h] const std::locale::facet *v48; // [esp+8h] [ebp-30h] const std::locale::facet *v49; // [esp+8h] [ebp-30h] int v50[8]; // [esp+18h] [ebp-20h] BYREF a1[2] = 48; *a1 = this; v4 = &`anonymous namespace'::facet_vec; do *v4++ = 0; while ( v4 != (_DWORD *)&`anonymous namespace'::num_get_c ); a1[1] = &`anonymous namespace'::facet_vec; v5 = &`anonymous namespace'::cache_vec; do *v5++ = 0; while ( `anonymous namespace'::codecvt_c != v5 ); a1[3] = &`anonymous namespace'::cache_vec; v6 = &`anonymous namespace'::name_vec; do *v6++ = 0; while ( v6 != (int *)&unk_4E8D5C ); a1[4] = &`anonymous namespace'::name_vec; `anonymous namespace'::name_vec = (int)&`anonymous namespace'::name_c; `anonymous namespace'::name_c = *(_WORD *)std::locale::facet::_S_get_c_name(); std::ctype::ctype(`anonymous namespace'::ctype_c, 0, 0, 1); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::ctype::id, (const std::locale::id *)`anonymous namespace'::ctype_c, v18); std::codecvt::codecvt(`anonymous namespace'::codecvt_c, 1); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)`anonymous namespace'::codecvt_c, v19); dword_4E83A4 = 1; word_4E83C4 = 0; `anonymous namespace'::numpunct_cache_c = (int)&off_4F65A0; dword_4E83A8 = 0; dword_4E83AC = 0; byte_4E83B0 = 0; dword_4E83B4 = 0; dword_4E83B8 = 0; dword_4E83BC = 0; dword_4E83C0 = 0; byte_4E8404 = 0; dword_4E828C = 1; `anonymous namespace'::numpunct_c = &off_4F5CC8; dword_4E8290 = (int)&`anonymous namespace'::numpunct_cache_c; std::numpunct::_M_initialize_numpunct(&`anonymous namespace'::numpunct_c, 0); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::numpunct::id, (const std::locale::id *)&`anonymous namespace'::numpunct_c, v20); dword_4E8F24 = 1; `anonymous namespace'::num_get_c = &off_4F6C08; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::num_get>::id, (const std::locale::id *)&`anonymous namespace'::num_get_c, v21); dword_4E8F34 = 1; `anonymous namespace'::num_put_c = &off_4F6C80; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::num_put>::id, (const std::locale::id *)&`anonymous namespace'::num_put_c, v22); dword_4E8E3C = 1; `anonymous namespace'::collate_c = &off_4F5C58; dword_4E8E40 = std::locale::facet::_S_get_c_locale(); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::collate::id, (const std::locale::id *)&`anonymous namespace'::collate_c, v23); `anonymous namespace'::moneypunct_cache_cf = (int)&off_4F66C4; dword_4E86A4 = 1; dword_4E86A8 = 0; dword_4E86AC = 0; word_4E86B0 = 0; byte_4E86B2 = 0; dword_4E86B4 = 0; dword_4E86B8 = 0; dword_4E86BC = 0; dword_4E86C0 = 0; dword_4E86C4 = 0; dword_4E86C8 = 0; dword_4E86CC = 0; dword_4E86D0 = 0; dword_4E86D4 = 0; byte_4E86E3 = 0; dword_4E8334 = 1; `anonymous namespace'::moneypunct_cf = &off_4F5810; dword_4E8338 = (int)&`anonymous namespace'::moneypunct_cache_cf; std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_cf, 0, 0); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::moneypunct::id, (const std::locale::id *)&`anonymous namespace'::moneypunct_cf, v24); `anonymous namespace'::moneypunct_cache_ct = (int)&off_4F66D4; dword_4E8704 = 1; dword_4E8708 = 0; dword_4E870C = 0; word_4E8710 = 0; byte_4E8712 = 0; dword_4E8714 = 0; dword_4E8718 = 0; dword_4E871C = 0; dword_4E8720 = 0; dword_4E8724 = 0; dword_4E8728 = 0; dword_4E872C = 0; dword_4E8730 = 0; dword_4E8734 = 0; byte_4E8743 = 0; dword_4E8340 = 1; `anonymous namespace'::moneypunct_ct = &off_4F5844; dword_4E8344 = (int)&`anonymous namespace'::moneypunct_cache_ct; std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_ct, 0, 0); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::moneypunct::id, (const std::locale::id *)&`anonymous namespace'::moneypunct_ct, v25); dword_4E82D4 = 1; `anonymous namespace'::money_get_c = &off_4F5D68; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::money_get>::id, (const std::locale::id *)&`anonymous namespace'::money_get_c, v26); dword_4E82E4 = 1; `anonymous namespace'::money_put_c = &off_4F5D98; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::money_put>::id, (const std::locale::id *)&`anonymous namespace'::money_put_c, v27); dword_4E84E4 = 1; `anonymous namespace'::timepunct_cache_c = (int)&off_4F65D4; dword_4E84E8 = 0; dword_4E84EC = 0; dword_4E84F0 = 0; dword_4E84F4 = 0; dword_4E84F8 = 0; dword_4E84FC = 0; dword_4E8500 = 0; dword_4E8504 = 0; dword_4E8508 = 0; dword_4E850C = 0; dword_4E8510 = 0; dword_4E8514 = 0; dword_4E8518 = 0; dword_4E851C = 0; dword_4E8520 = 0; dword_4E8524 = 0; dword_4E8528 = 0; dword_4E852C = 0; dword_4E8530 = 0; dword_4E8534 = 0; dword_4E8538 = 0; dword_4E853C = 0; dword_4E8540 = 0; dword_4E8544 = 0; dword_4E8548 = 0; dword_4E854C = 0; dword_4E8550 = 0; dword_4E8554 = 0; dword_4E8558 = 0; dword_4E855C = 0; dword_4E8560 = 0; dword_4E8564 = 0; dword_4E8568 = 0; dword_4E856C = 0; dword_4E8570 = 0; dword_4E8574 = 0; dword_4E8578 = 0; dword_4E857C = 0; dword_4E8580 = 0; dword_4E8584 = 0; dword_4E8588 = 0; dword_4E858C = 0; dword_4E8590 = 0; dword_4E8594 = 0; dword_4E8598 = 0; dword_4E859C = 0; dword_4E85A0 = 0; byte_4E85A4 = 0; std::__timepunct::__timepunct( `anonymous namespace'::timepunct_c, (int)&`anonymous namespace'::timepunct_cache_c, 1); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::__timepunct::id, (const std::locale::id *)`anonymous namespace'::timepunct_c, v28); dword_4E82A4 = 1; `anonymous namespace'::time_get_c = &off_4F5D10; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::time_get>::id, (const std::locale::id *)&`anonymous namespace'::time_get_c, v29); dword_4E82B4 = 1; `anonymous namespace'::time_put_c = &off_4F6DD4; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::time_put>::id, (const std::locale::id *)&`anonymous namespace'::time_put_c, v30); std::messages::messages(`anonymous namespace'::messages_c, 1); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::messages::id, (const std::locale::id *)`anonymous namespace'::messages_c, v31); std::ctype::ctype(`anonymous namespace'::ctype_w, 1); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::ctype::id, (const std::locale::id *)`anonymous namespace'::ctype_w, v32); std::codecvt::codecvt(`anonymous namespace'::codecvt_w, 1); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)`anonymous namespace'::codecvt_w, v33); dword_4E8424 = 1; `anonymous namespace'::numpunct_cache_w = (int)&off_4F65B0; dword_4E8428 = 0; dword_4E842C = 0; byte_4E8430 = 0; dword_4E8434 = 0; dword_4E8438 = 0; dword_4E843C = 0; dword_4E8440 = 0; dword_4E8444 = 0; byte_4E84C4 = 0; dword_4E8298 = 1; `anonymous namespace'::numpunct_w = &off_4F5CEC; dword_4E829C = (int)&`anonymous namespace'::numpunct_cache_w; std::numpunct::_M_initialize_numpunct(&`anonymous namespace'::numpunct_w, 0); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::numpunct::id, (const std::locale::id *)&`anonymous namespace'::numpunct_w, v34); dword_4E8F2C = 1; `anonymous namespace'::num_get_w = &off_4F6C44; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::num_get>::id, (const std::locale::id *)&`anonymous namespace'::num_get_w, v35); dword_4E8F3C = 1; `anonymous namespace'::num_put_w = &off_4F6CB0; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::num_put>::id, (const std::locale::id *)&`anonymous namespace'::num_put_w, v36); dword_4E8E48 = 1; `anonymous namespace'::collate_w = &off_4F5C74; dword_4E8E4C = std::locale::facet::_S_get_c_locale(); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::collate::id, (const std::locale::id *)&`anonymous namespace'::collate_w, v37); dword_4E8764 = 1; `anonymous namespace'::moneypunct_cache_wf = (int)&off_4F66E4; dword_4E8768 = 0; dword_4E876C = 0; byte_4E8770 = 0; dword_4E8772 = 0; dword_4E8778 = 0; dword_4E877C = 0; dword_4E8780 = 0; dword_4E8784 = 0; dword_4E8788 = 0; dword_4E878C = 0; dword_4E8790 = 0; dword_4E8794 = 0; dword_4E8798 = 0; byte_4E87B2 = 0; dword_4E834C = 1; `anonymous namespace'::moneypunct_wf = &off_4F5878; dword_4E8350 = (int)&`anonymous namespace'::moneypunct_cache_wf; std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_wf, 0, 0); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::moneypunct::id, (const std::locale::id *)&`anonymous namespace'::moneypunct_wf, v38); dword_4E87C4 = 1; `anonymous namespace'::moneypunct_cache_wt = (int)&off_4F66F4; dword_4E87C8 = 0; dword_4E87CC = 0; byte_4E87D0 = 0; dword_4E87D2 = 0; dword_4E87D8 = 0; dword_4E87DC = 0; dword_4E87E0 = 0; dword_4E87E4 = 0; dword_4E87E8 = 0; dword_4E87EC = 0; dword_4E87F0 = 0; dword_4E87F4 = 0; dword_4E87F8 = 0; byte_4E8812 = 0; dword_4E8358 = 1; `anonymous namespace'::moneypunct_wt = &off_4F58AC; dword_4E835C = (int)&`anonymous namespace'::moneypunct_cache_wt; std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_wt, 0, 0); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::moneypunct::id, (const std::locale::id *)&`anonymous namespace'::moneypunct_wt, v39); dword_4E82DC = 1; `anonymous namespace'::money_get_w = &off_4F5D80; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::money_get>::id, (const std::locale::id *)&`anonymous namespace'::money_get_w, v40); dword_4E82EC = 1; `anonymous namespace'::money_put_w = &off_4F5DB0; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::money_put>::id, (const std::locale::id *)&`anonymous namespace'::money_put_w, v41); dword_4E85C4 = 1; `anonymous namespace'::timepunct_cache_w = (int)&off_4F65E4; dword_4E85C8 = 0; dword_4E85CC = 0; dword_4E85D0 = 0; dword_4E85D4 = 0; dword_4E85D8 = 0; dword_4E85DC = 0; dword_4E85E0 = 0; dword_4E85E4 = 0; dword_4E85E8 = 0; dword_4E85EC = 0; dword_4E85F0 = 0; dword_4E85F4 = 0; dword_4E85F8 = 0; dword_4E85FC = 0; dword_4E8600 = 0; dword_4E8604 = 0; dword_4E8608 = 0; dword_4E860C = 0; dword_4E8610 = 0; dword_4E8614 = 0; dword_4E8618 = 0; dword_4E861C = 0; dword_4E8620 = 0; dword_4E8624 = 0; dword_4E8628 = 0; dword_4E862C = 0; dword_4E8630 = 0; dword_4E8634 = 0; dword_4E8638 = 0; dword_4E863C = 0; dword_4E8640 = 0; dword_4E8644 = 0; dword_4E8648 = 0; dword_4E864C = 0; dword_4E8650 = 0; dword_4E8654 = 0; dword_4E8658 = 0; dword_4E865C = 0; dword_4E8660 = 0; dword_4E8664 = 0; dword_4E8668 = 0; dword_4E866C = 0; dword_4E8670 = 0; dword_4E8674 = 0; dword_4E8678 = 0; dword_4E867C = 0; dword_4E8680 = 0; byte_4E8684 = 0; std::__timepunct::__timepunct( `anonymous namespace'::timepunct_w, (int)&`anonymous namespace'::timepunct_cache_w, 1); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::__timepunct::id, (const std::locale::id *)`anonymous namespace'::timepunct_w, v42); dword_4E82AC = 1; `anonymous namespace'::time_get_w = &off_4F5D3C; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::time_get>::id, (const std::locale::id *)&`anonymous namespace'::time_get_w, v43); dword_4E82BC = 1; `anonymous namespace'::time_put_w = &off_4F6DE8; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::time_put>::id, (const std::locale::id *)&`anonymous namespace'::time_put_w, v44); std::messages::messages(`anonymous namespace'::messages_w, 1); std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::messages::id, (const std::locale::id *)`anonymous namespace'::messages_w, v45); dword_4E82C4 = 1; `anonymous namespace'::codecvt_c16 = &off_4F6B4C; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c16, v46); dword_4E82CC = 1; `anonymous namespace'::codecvt_c32 = &off_4F6AF4; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c32, v47); dword_4E8364 = 1; `anonymous namespace'::codecvt_c16_c8 = &off_4F6B20; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c16_c8, v48); dword_4E836C = 1; `anonymous namespace'::codecvt_c32_c8 = &off_4F6AC8; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c32_c8, v49); v50[0] = (int)&`anonymous namespace'::numpunct_cache_c; v50[1] = (int)&`anonymous namespace'::moneypunct_cache_cf; v50[2] = (int)&`anonymous namespace'::moneypunct_cache_ct; v50[3] = (int)&`anonymous namespace'::numpunct_cache_w; v50[4] = (int)&`anonymous namespace'::moneypunct_cache_wf; v50[5] = (int)&`anonymous namespace'::moneypunct_cache_wt; std::locale::_Impl::_M_init_extra((int)a1, (std::locale::_Impl *)v50, v17); v7 = a1[3]; *(_DWORD *)(v7 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_c; v8 = a1[3]; *(_DWORD *)(v8 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_cf; v9 = a1[3]; *(_DWORD *)(v9 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_ct; v10 = a1[3]; *(_DWORD *)(v10 + 4 * std::locale::id::_M_id(&std::__timepunct::id)) = &`anonymous namespace'::timepunct_cache_c; v11 = a1[3]; *(_DWORD *)(v11 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_w; v12 = a1[3]; *(_DWORD *)(v12 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_wf; v13 = a1[3]; v14 = std::locale::id::_M_id(&std::moneypunct::id); v15 = a1[3]; *(_DWORD *)(v13 + 4 * v14) = &`anonymous namespace'::moneypunct_cache_wt; result = std::locale::id::_M_id(&std::__timepunct::id); *(_DWORD *)(v15 + 4 * result) = &`anonymous namespace'::timepunct_cache_w; return result; } // 4B3B4C: variable 'v18' is possibly undefined // 4B3B79: variable 'v19' is possibly undefined // 4B3C2B: variable 'v20' is possibly undefined // 4B3C58: variable 'v21' is possibly undefined // 4B3C85: variable 'v22' is possibly undefined // 4B3CBC: variable 'v23' is possibly undefined // 4B3DA8: variable 'v24' is possibly undefined // 4B3E93: variable 'v25' is possibly undefined // 4B3EC0: variable 'v26' is possibly undefined // 4B3EED: variable 'v27' is possibly undefined // 4B4113: variable 'v28' is possibly undefined // 4B4140: variable 'v29' is possibly undefined // 4B416D: variable 'v30' is possibly undefined // 4B419A: variable 'v31' is possibly undefined // 4B41C7: variable 'v32' is possibly undefined // 4B41F4: variable 'v33' is possibly undefined // 4B42A7: variable 'v34' is possibly undefined // 4B42D4: variable 'v35' is possibly undefined // 4B4301: variable 'v36' is possibly undefined // 4B4338: variable 'v37' is possibly undefined // 4B4425: variable 'v38' is possibly undefined // 4B4512: variable 'v39' is possibly undefined // 4B453F: variable 'v40' is possibly undefined // 4B456C: variable 'v41' is possibly undefined // 4B4792: variable 'v42' is possibly undefined // 4B47BF: variable 'v43' is possibly undefined // 4B47EC: variable 'v44' is possibly undefined // 4B4819: variable 'v45' is possibly undefined // 4B4846: variable 'v46' is possibly undefined // 4B4873: variable 'v47' is possibly undefined // 4B48A0: variable 'v48' is possibly undefined // 4B48CD: variable 'v49' is possibly undefined // 4B4907: variable 'v17' is possibly undefined // 4E8268: using guessed type _DWORD `anonymous namespace'::messages_c[4]; // 4E8278: using guessed type _DWORD `anonymous namespace'::messages_w[4]; // 4E828C: using guessed type int dword_4E828C; // 4E8290: using guessed type int dword_4E8290; // 4E8298: using guessed type int dword_4E8298; // 4E829C: using guessed type int dword_4E829C; // 4E82A4: using guessed type int dword_4E82A4; // 4E82AC: using guessed type int dword_4E82AC; // 4E82B4: using guessed type int dword_4E82B4; // 4E82BC: using guessed type int dword_4E82BC; // 4E82C4: using guessed type int dword_4E82C4; // 4E82CC: using guessed type int dword_4E82CC; // 4E82D4: using guessed type int dword_4E82D4; // 4E82DC: using guessed type int dword_4E82DC; // 4E82E4: using guessed type int dword_4E82E4; // 4E82EC: using guessed type int dword_4E82EC; // 4E82F0: using guessed type _DWORD `anonymous namespace'::timepunct_c[5]; // 4E8304: using guessed type _DWORD `anonymous namespace'::timepunct_w[5]; // 4E8334: using guessed type int dword_4E8334; // 4E8338: using guessed type int dword_4E8338; // 4E8340: using guessed type int dword_4E8340; // 4E8344: using guessed type int dword_4E8344; // 4E834C: using guessed type int dword_4E834C; // 4E8350: using guessed type int dword_4E8350; // 4E8358: using guessed type int dword_4E8358; // 4E835C: using guessed type int dword_4E835C; // 4E8364: using guessed type int dword_4E8364; // 4E836C: using guessed type int dword_4E836C; // 4E83A0: using guessed type int `anonymous namespace'::numpunct_cache_c; // 4E83A4: using guessed type int dword_4E83A4; // 4E83A8: using guessed type int dword_4E83A8; // 4E83AC: using guessed type int dword_4E83AC; // 4E83B0: using guessed type char byte_4E83B0; // 4E83B4: using guessed type int dword_4E83B4; // 4E83B8: using guessed type int dword_4E83B8; // 4E83BC: using guessed type int dword_4E83BC; // 4E83C0: using guessed type int dword_4E83C0; // 4E83C4: using guessed type __int16 word_4E83C4; // 4E8404: using guessed type char byte_4E8404; // 4E8420: using guessed type int `anonymous namespace'::numpunct_cache_w; // 4E8424: using guessed type int dword_4E8424; // 4E8428: using guessed type int dword_4E8428; // 4E842C: using guessed type int dword_4E842C; // 4E8430: using guessed type char byte_4E8430; // 4E8434: using guessed type int dword_4E8434; // 4E8438: using guessed type int dword_4E8438; // 4E843C: using guessed type int dword_4E843C; // 4E8440: using guessed type int dword_4E8440; // 4E8444: using guessed type int dword_4E8444; // 4E84C4: using guessed type char byte_4E84C4; // 4E84E0: using guessed type int `anonymous namespace'::timepunct_cache_c; // 4E84E4: using guessed type int dword_4E84E4; // 4E84E8: using guessed type int dword_4E84E8; // 4E84EC: using guessed type int dword_4E84EC; // 4E84F0: using guessed type int dword_4E84F0; // 4E84F4: using guessed type int dword_4E84F4; // 4E84F8: using guessed type int dword_4E84F8; // 4E84FC: using guessed type int dword_4E84FC; // 4E8500: using guessed type int dword_4E8500; // 4E8504: using guessed type int dword_4E8504; // 4E8508: using guessed type int dword_4E8508; // 4E850C: using guessed type int dword_4E850C; // 4E8510: using guessed type int dword_4E8510; // 4E8514: using guessed type int dword_4E8514; // 4E8518: using guessed type int dword_4E8518; // 4E851C: using guessed type int dword_4E851C; // 4E8520: using guessed type int dword_4E8520; // 4E8524: using guessed type int dword_4E8524; // 4E8528: using guessed type int dword_4E8528; // 4E852C: using guessed type int dword_4E852C; // 4E8530: using guessed type int dword_4E8530; // 4E8534: using guessed type int dword_4E8534; // 4E8538: using guessed type int dword_4E8538; // 4E853C: using guessed type int dword_4E853C; // 4E8540: using guessed type int dword_4E8540; // 4E8544: using guessed type int dword_4E8544; // 4E8548: using guessed type int dword_4E8548; // 4E854C: using guessed type int dword_4E854C; // 4E8550: using guessed type int dword_4E8550; // 4E8554: using guessed type int dword_4E8554; // 4E8558: using guessed type int dword_4E8558; // 4E855C: using guessed type int dword_4E855C; // 4E8560: using guessed type int dword_4E8560; // 4E8564: using guessed type int dword_4E8564; // 4E8568: using guessed type int dword_4E8568; // 4E856C: using guessed type int dword_4E856C; // 4E8570: using guessed type int dword_4E8570; // 4E8574: using guessed type int dword_4E8574; // 4E8578: using guessed type int dword_4E8578; // 4E857C: using guessed type int dword_4E857C; // 4E8580: using guessed type int dword_4E8580; // 4E8584: using guessed type int dword_4E8584; // 4E8588: using guessed type int dword_4E8588; // 4E858C: using guessed type int dword_4E858C; // 4E8590: using guessed type int dword_4E8590; // 4E8594: using guessed type int dword_4E8594; // 4E8598: using guessed type int dword_4E8598; // 4E859C: using guessed type int dword_4E859C; // 4E85A0: using guessed type int dword_4E85A0; // 4E85A4: using guessed type char byte_4E85A4; // 4E85C0: using guessed type int `anonymous namespace'::timepunct_cache_w; // 4E85C4: using guessed type int dword_4E85C4; // 4E85C8: using guessed type int dword_4E85C8; // 4E85CC: using guessed type int dword_4E85CC; // 4E85D0: using guessed type int dword_4E85D0; // 4E85D4: using guessed type int dword_4E85D4; // 4E85D8: using guessed type int dword_4E85D8; // 4E85DC: using guessed type int dword_4E85DC; // 4E85E0: using guessed type int dword_4E85E0; // 4E85E4: using guessed type int dword_4E85E4; // 4E85E8: using guessed type int dword_4E85E8; // 4E85EC: using guessed type int dword_4E85EC; // 4E85F0: using guessed type int dword_4E85F0; // 4E85F4: using guessed type int dword_4E85F4; // 4E85F8: using guessed type int dword_4E85F8; // 4E85FC: using guessed type int dword_4E85FC; // 4E8600: using guessed type int dword_4E8600; // 4E8604: using guessed type int dword_4E8604; // 4E8608: using guessed type int dword_4E8608; // 4E860C: using guessed type int dword_4E860C; // 4E8610: using guessed type int dword_4E8610; // 4E8614: using guessed type int dword_4E8614; // 4E8618: using guessed type int dword_4E8618; // 4E861C: using guessed type int dword_4E861C; // 4E8620: using guessed type int dword_4E8620; // 4E8624: using guessed type int dword_4E8624; // 4E8628: using guessed type int dword_4E8628; // 4E862C: using guessed type int dword_4E862C; // 4E8630: using guessed type int dword_4E8630; // 4E8634: using guessed type int dword_4E8634; // 4E8638: using guessed type int dword_4E8638; // 4E863C: using guessed type int dword_4E863C; // 4E8640: using guessed type int dword_4E8640; // 4E8644: using guessed type int dword_4E8644; // 4E8648: using guessed type int dword_4E8648; // 4E864C: using guessed type int dword_4E864C; // 4E8650: using guessed type int dword_4E8650; // 4E8654: using guessed type int dword_4E8654; // 4E8658: using guessed type int dword_4E8658; // 4E865C: using guessed type int dword_4E865C; // 4E8660: using guessed type int dword_4E8660; // 4E8664: using guessed type int dword_4E8664; // 4E8668: using guessed type int dword_4E8668; // 4E866C: using guessed type int dword_4E866C; // 4E8670: using guessed type int dword_4E8670; // 4E8674: using guessed type int dword_4E8674; // 4E8678: using guessed type int dword_4E8678; // 4E867C: using guessed type int dword_4E867C; // 4E8680: using guessed type int dword_4E8680; // 4E8684: using guessed type char byte_4E8684; // 4E86A0: using guessed type int `anonymous namespace'::moneypunct_cache_cf; // 4E86A4: using guessed type int dword_4E86A4; // 4E86A8: using guessed type int dword_4E86A8; // 4E86AC: using guessed type int dword_4E86AC; // 4E86B0: using guessed type __int16 word_4E86B0; // 4E86B2: using guessed type char byte_4E86B2; // 4E86B4: using guessed type int dword_4E86B4; // 4E86B8: using guessed type int dword_4E86B8; // 4E86BC: using guessed type int dword_4E86BC; // 4E86C0: using guessed type int dword_4E86C0; // 4E86C4: using guessed type int dword_4E86C4; // 4E86C8: using guessed type int dword_4E86C8; // 4E86CC: using guessed type int dword_4E86CC; // 4E86D0: using guessed type int dword_4E86D0; // 4E86D4: using guessed type int dword_4E86D4; // 4E86E3: using guessed type char byte_4E86E3; // 4E8700: using guessed type int `anonymous namespace'::moneypunct_cache_ct; // 4E8704: using guessed type int dword_4E8704; // 4E8708: using guessed type int dword_4E8708; // 4E870C: using guessed type int dword_4E870C; // 4E8710: using guessed type __int16 word_4E8710; // 4E8712: using guessed type char byte_4E8712; // 4E8714: using guessed type int dword_4E8714; // 4E8718: using guessed type int dword_4E8718; // 4E871C: using guessed type int dword_4E871C; // 4E8720: using guessed type int dword_4E8720; // 4E8724: using guessed type int dword_4E8724; // 4E8728: using guessed type int dword_4E8728; // 4E872C: using guessed type int dword_4E872C; // 4E8730: using guessed type int dword_4E8730; // 4E8734: using guessed type int dword_4E8734; // 4E8743: using guessed type char byte_4E8743; // 4E8760: using guessed type int `anonymous namespace'::moneypunct_cache_wf; // 4E8764: using guessed type int dword_4E8764; // 4E8768: using guessed type int dword_4E8768; // 4E876C: using guessed type int dword_4E876C; // 4E8770: using guessed type char byte_4E8770; // 4E8772: using guessed type int dword_4E8772; // 4E8778: using guessed type int dword_4E8778; // 4E877C: using guessed type int dword_4E877C; // 4E8780: using guessed type int dword_4E8780; // 4E8784: using guessed type int dword_4E8784; // 4E8788: using guessed type int dword_4E8788; // 4E878C: using guessed type int dword_4E878C; // 4E8790: using guessed type int dword_4E8790; // 4E8794: using guessed type int dword_4E8794; // 4E8798: using guessed type int dword_4E8798; // 4E87B2: using guessed type char byte_4E87B2; // 4E87C0: using guessed type int `anonymous namespace'::moneypunct_cache_wt; // 4E87C4: using guessed type int dword_4E87C4; // 4E87C8: using guessed type int dword_4E87C8; // 4E87CC: using guessed type int dword_4E87CC; // 4E87D0: using guessed type char byte_4E87D0; // 4E87D2: using guessed type int dword_4E87D2; // 4E87D8: using guessed type int dword_4E87D8; // 4E87DC: using guessed type int dword_4E87DC; // 4E87E0: using guessed type int dword_4E87E0; // 4E87E4: using guessed type int dword_4E87E4; // 4E87E8: using guessed type int dword_4E87E8; // 4E87EC: using guessed type int dword_4E87EC; // 4E87F0: using guessed type int dword_4E87F0; // 4E87F4: using guessed type int dword_4E87F4; // 4E87F8: using guessed type int dword_4E87F8; // 4E8812: using guessed type char byte_4E8812; // 4E8820: using guessed type __int16 `anonymous namespace'::name_c; // 4E8840: using guessed type _DWORD `anonymous namespace'::ctype_c[136]; // 4E8A60: using guessed type _DWORD `anonymous namespace'::ctype_w[184]; // 4E8D44: using guessed type int `anonymous namespace'::name_vec; // 4E8E20: using guessed type _DWORD `anonymous namespace'::codecvt_c[3]; // 4E8E2C: using guessed type _DWORD `anonymous namespace'::codecvt_w[3]; // 4E8E3C: using guessed type int dword_4E8E3C; // 4E8E40: using guessed type int dword_4E8E40; // 4E8E48: using guessed type int dword_4E8E48; // 4E8E4C: using guessed type int dword_4E8E4C; // 4E8F24: using guessed type int dword_4E8F24; // 4E8F2C: using guessed type int dword_4E8F2C; // 4E8F34: using guessed type int dword_4E8F34; // 4E8F3C: using guessed type int dword_4E8F3C; // 4E941C: using guessed type int std::__timepunct::id; // 4E9420: using guessed type int std::__timepunct::id; // 4E9588: using guessed type int std::moneypunct::id; // 4E958C: using guessed type int std::moneypunct::id; // 4E9590: using guessed type int std::moneypunct::id; // 4E9594: using guessed type int std::moneypunct::id; // 4E95A8: using guessed type int std::numpunct::id; // 4E95AC: using guessed type int std::numpunct::id; // 4F5810: using guessed type int (*off_4F5810)(); // 4F5844: using guessed type int (*off_4F5844)(); // 4F5878: using guessed type int (*off_4F5878)(); // 4F58AC: using guessed type int (*off_4F58AC)(); // 4F5C58: using guessed type int (*off_4F5C58)(); // 4F5C74: using guessed type int (*off_4F5C74)(); // 4F5CC8: using guessed type int (*off_4F5CC8)(); // 4F5CEC: using guessed type int (*off_4F5CEC)(); // 4F5D10: using guessed type int (*off_4F5D10)(); // 4F5D3C: using guessed type int (*off_4F5D3C)(); // 4F5D68: using guessed type int (*off_4F5D68)(); // 4F5D80: using guessed type int (*off_4F5D80)(); // 4F5D98: using guessed type int (*off_4F5D98)(); // 4F5DB0: using guessed type int (*off_4F5DB0)(); // 4F65A0: using guessed type int (*off_4F65A0)(); // 4F65B0: using guessed type int (*off_4F65B0)(); // 4F65D4: using guessed type int (*off_4F65D4)(); // 4F65E4: using guessed type int (*off_4F65E4)(); // 4F66C4: using guessed type int (*off_4F66C4)(); // 4F66D4: using guessed type int (*off_4F66D4)(); // 4F66E4: using guessed type int (*off_4F66E4)(); // 4F66F4: using guessed type int (*off_4F66F4)(); // 4F6AC8: using guessed type int (*off_4F6AC8)(); // 4F6AF4: using guessed type int (*off_4F6AF4)(); // 4F6B20: using guessed type int (*off_4F6B20)(); // 4F6B4C: using guessed type int (*off_4F6B4C)(); // 4F6C08: using guessed type int (*off_4F6C08)(); // 4F6C44: using guessed type int (*off_4F6C44)(); // 4F6C80: using guessed type int (*off_4F6C80)(); // 4F6CB0: using guessed type int (*off_4F6CB0)(); // 4F6DD4: using guessed type int (*off_4F6DD4)(); // 4F6DE8: using guessed type int (*off_4F6DE8)(); //----- (004B4A10) -------------------------------------------------------- void __fastcall std::locale::_Impl::~_Impl(_DWORD *a1) { _DWORD *v2; // eax unsigned int v3; // esi volatile signed __int32 *v4; // ecx signed __int32 v5; // eax void (*v6)(void); // eax _DWORD *v7; // eax unsigned int v8; // esi volatile signed __int32 *v9; // ecx signed __int32 v10; // eax void (*v11)(void); // eax char *v12; // edx int v13; // esi v2 = (_DWORD *)a1[1]; if ( v2 ) { if ( !a1[2] ) goto LABEL_13; v3 = 0; do { v4 = (volatile signed __int32 *)v2[v3]; if ( v4 ) { if ( _CRT_MT ) { v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); } else { v5 = *((_DWORD *)v4 + 1); *((_DWORD *)v4 + 1) = v5 - 1; } if ( v5 == 1 ) { v6 = *(void (**)(void))(*v4 + 4); if ( (char *)v6 == (char *)std::locale::facet::~facet ) operator delete((void *)v4); else v6(); } v2 = (_DWORD *)a1[1]; } ++v3; } while ( a1[2] > v3 ); if ( v2 ) LABEL_13: operator delete[](v2); } v7 = (_DWORD *)a1[3]; if ( v7 ) { if ( !a1[2] ) goto LABEL_26; v8 = 0; do { v9 = (volatile signed __int32 *)v7[v8]; if ( v9 ) { if ( _CRT_MT ) { v10 = _InterlockedExchangeAdd(v9 + 1, 0xFFFFFFFF); } else { v10 = *((_DWORD *)v9 + 1); *((_DWORD *)v9 + 1) = v10 - 1; } if ( v10 == 1 ) { v11 = *(void (**)(void))(*v9 + 4); if ( (char *)v11 == (char *)std::locale::facet::~facet ) operator delete((void *)v9); else v11(); } v7 = (_DWORD *)a1[3]; } ++v8; } while ( a1[2] > v8 ); if ( v7 ) LABEL_26: operator delete[](v7); } v12 = (char *)a1[4]; v13 = 0; if ( v12 ) { do { if ( *(_DWORD *)&v12[v13] ) { operator delete[](*(void **)&v12[v13]); v12 = (char *)a1[4]; } v13 += 4; } while ( v13 != 24 ); if ( v12 ) operator delete[](v12); } } // 4D9DEC: using guessed type int std::locale::_Impl::~_Impl(void); // 15412D0: using guessed type int _CRT_MT; //----- (004B4B90) -------------------------------------------------------- int *const *std::locale::facet::_S_get_c_name() { return &std::locale::facet::_S_c_name; } //----- (004B4BA0) -------------------------------------------------------- int std::locale::facet::_S_get_c_locale() { int result; // eax if ( _CRT_MT ) { __gthr_win32_once(&std::locale::facet::_S_once, std::locale::facet::_S_initialize_once); return std::locale::facet::_S_c_locale; } else { result = std::locale::facet::_S_c_locale; if ( !std::locale::facet::_S_c_locale ) { std::locale::facet::_S_create_c_locale( (std::locale::facet *)&std::locale::facet::_S_c_locale, (int **)&std::locale::facet::_S_c_name); return std::locale::facet::_S_c_locale; } } return result; } // 4E9570: using guessed type int std::locale::facet::_S_c_locale; // 15412D0: using guessed type int _CRT_MT; //----- (004B4C10) -------------------------------------------------------- int __cdecl std::locale::facet::_S_clone_c_locale() { return 0; } //----- (004B4C20) -------------------------------------------------------- int **__cdecl std::locale::facet::_S_create_c_locale(std::locale::facet *this, int **a2) { int **result; // eax result = a2; *(_DWORD *)this = 0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) std::__throw_runtime_error((std::runtime_error *)"locale::facet::_S_create_c_locale name not valid"); return result; } //----- (004B4C60) -------------------------------------------------------- void std::locale::facet::_S_initialize_once(void) { std::locale::facet::_S_create_c_locale( (std::locale::facet *)&std::locale::facet::_S_c_locale, (int **)&std::locale::facet::_S_c_name); } // 4E9570: using guessed type int std::locale::facet::_S_c_locale; //----- (004B4C90) -------------------------------------------------------- std::locale::facet *__cdecl std::locale::facet::_S_destroy_c_locale(std::locale::facet *this) { std::locale::facet *result; // eax result = this; *(_DWORD *)this = 0; return result; } //----- (004B4CA0) -------------------------------------------------------- int __cdecl std::locale::facet::_S_lc_ctype_c_locale() { return 0; } //----- (004B4CB0) -------------------------------------------------------- void __fastcall std::locale::facet::~facet(void *a1) { operator delete(a1); } //----- (004B4CD0) -------------------------------------------------------- std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **a2) { __gthread_mutex_t *locale_mutex; // eax std::locale *v3; // edi volatile signed __int32 *v4; // eax std::locale::_Impl *v6; // [esp+4h] [ebp-44h] __gthread_mutex_t *mutex; // [esp+14h] [ebp-34h] char *Locale[2]; // [esp+18h] [ebp-30h] BYREF char v9; // [esp+20h] [ebp-28h] BYREF std::locale::_S_initialize(); locale_mutex = `anonymous namespace'::get_locale_mutex(); mutex = locale_mutex; if ( !_CRT_MT ) { v3 = (std::locale *)std::locale::_S_global; v4 = *a2; if ( *a2 == (volatile signed __int32 *)std::locale::_S_classic ) goto LABEL_4; goto LABEL_3; } if ( __gthr_win32_mutex_lock(locale_mutex) ) __gnu_cxx::__throw_concurrence_lock_error(); v4 = (volatile signed __int32 *)std::locale::_S_classic; v3 = (std::locale *)std::locale::_S_global; if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) { if ( !_CRT_MT ) { v4 = *a2; LABEL_3: ++*v4; goto LABEL_4; } _InterlockedAdd(*a2, 1u); v4 = *a2; } LABEL_4: std::locale::_S_global = (int)v4; std::locale::name[abi:cxx11]((int)Locale, (int *)a2); if ( std::string::compare((int)Locale, "*") ) setlocale(0, Locale[0]); if ( Locale[0] != &v9 ) operator delete(Locale[0]); if ( _CRT_MT && __gthr_win32_mutex_unlock(mutex) ) std::locale::global(this, (void (__cdecl *)(void *))a2); std::locale::locale(this, v3, v6); return this; } // 4B4D56: variable 'v6' is possibly undefined // 4E9568: using guessed type int std::locale::_S_classic; // 4E9584: using guessed type int std::locale::_S_global; // 15412D0: using guessed type int _CRT_MT; //----- (004B4E00) -------------------------------------------------------- _DWORD *std::locale::classic() { std::locale::_Impl *v1; // [esp+4h] [ebp-18h] std::locale::_S_initialize(); std::locale::locale(&`anonymous namespace'::c_locale, (std::locale *)std::locale::_S_classic, v1); return &`anonymous namespace'::c_locale; } // 4B4E15: variable 'v1' is possibly undefined // 4E8D40: using guessed type _DWORD `anonymous namespace'::c_locale; // 4E9568: using guessed type int std::locale::_S_classic; //----- (004B4E30) -------------------------------------------------------- std::locale *__userpurge std::locale::locale@(_DWORD *a1@, std::locale *this, std::locale::_Impl *a3) { std::locale *result; // eax result = this; *a1 = this; return result; } //----- (004B4E40) -------------------------------------------------------- volatile signed __int32 *__userpurge std::locale::locale@( volatile signed __int32 **a1@, volatile signed __int32 **this, const std::locale *a3) { volatile signed __int32 *result; // eax result = *this; *a1 = *this; if ( result != (volatile signed __int32 *)std::locale::_S_classic ) { if ( _CRT_MT ) _InterlockedAdd(result, 1u); else ++*result; } return result; } // 4E9568: using guessed type int std::locale::_S_classic; // 15412D0: using guessed type int _CRT_MT; //----- (004B4E70) -------------------------------------------------------- int __fastcall std::locale::locale(_DWORD *a1) { int result; // eax __gthread_mutex_t *mutex; // esi _DWORD *v4; // eax _DWORD *exception; // eax *a1 = 0; std::locale::_S_initialize(); result = std::locale::_S_global; *a1 = std::locale::_S_global; if ( result != std::locale::_S_classic ) { mutex = `anonymous namespace'::get_locale_mutex(); v4 = (_DWORD *)std::locale::_S_global; if ( !_CRT_MT ) goto LABEL_3; if ( __gthr_win32_mutex_lock(mutex) ) __gnu_cxx::__throw_concurrence_lock_error(); v4 = (_DWORD *)std::locale::_S_global; if ( _CRT_MT ) { _InterlockedAdd((volatile signed __int32 *)std::locale::_S_global, 1u); v4 = (_DWORD *)std::locale::_S_global; } else { LABEL_3: ++*v4; } *a1 = v4; result = _CRT_MT; if ( _CRT_MT ) { result = __gthr_win32_mutex_unlock(mutex); if ( result ) { exception = __cxa_allocate_exception(4u); *exception = &off_4F534C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } } } return result; } // 4E9568: using guessed type int std::locale::_S_classic; // 4E9584: using guessed type int std::locale::_S_global; // 4F1314: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 4F534C: using guessed type void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); // 15412D0: using guessed type int _CRT_MT; //----- (004B4F20) -------------------------------------------------------- void __fastcall std::locale::~locale(_DWORD **a1) { _DWORD *v1; // ebx int v2; // eax v1 = *a1; if ( *a1 != (_DWORD *)std::locale::_S_classic ) { if ( !_CRT_MT ) { v2 = (*v1)--; if ( v2 != 1 ) return; LABEL_6: std::locale::_Impl::~_Impl(v1); operator delete(v1); return; } if ( _InterlockedExchangeAdd(v1, 0xFFFFFFFF) == 1 ) goto LABEL_6; } } // 4E9568: using guessed type int std::locale::_S_classic; // 15412D0: using guessed type int _CRT_MT; //----- (004B4F80) -------------------------------------------------------- volatile signed __int32 **__thiscall std::locale::operator=( volatile signed __int32 **this, volatile signed __int32 **a2) { volatile signed __int32 **result; // eax int v3; // ecx volatile signed __int32 *v4; // edx volatile signed __int32 *v5; // ebx volatile signed __int32 v6; // edx volatile signed __int32 **v7; // [esp+1Ch] [ebp-10h] result = this; v3 = std::locale::_S_classic; v4 = *a2; if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) { if ( _CRT_MT ) { _InterlockedAdd(v4, 1u); v3 = std::locale::_S_classic; } else { ++*v4; } } v5 = *result; if ( *result == (volatile signed __int32 *)v3 ) goto LABEL_7; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd(v5, 0xFFFFFFFF) != 1 ) goto LABEL_7; } else { v6 = (*v5)--; if ( v6 != 1 ) { LABEL_7: *result = *a2; return result; } } v7 = result; std::locale::_Impl::~_Impl(v5); operator delete((void *)v5); result = v7; *v7 = *a2; return result; } // 4E9568: using guessed type int std::locale::_S_classic; // 15412D0: using guessed type int _CRT_MT; //----- (004B5020) -------------------------------------------------------- char *__thiscall std::vector>::_M_realloc_insert const&>( char **this, char *a2, _DWORD *a3) { int v3; // ebx int v4; // eax bool v5; // cf unsigned int v6; // ebx char *v7; // edi _DWORD *v8; // esi char *i; // eax char *v10; // esi char *v11; // edx _DWORD *v12; // ecx volatile signed __int32 **v13; // ecx char *v14; // esi char *result; // eax void (__cdecl *v16)(void *); // [esp+4h] [ebp-44h] char *v17; // [esp+18h] [ebp-30h] char *v18; // [esp+1Ch] [ebp-2Ch] _DWORD *v19; // [esp+20h] [ebp-28h] char *v20; // [esp+20h] [ebp-28h] char *v21; // [esp+24h] [ebp-24h] char *v23; // [esp+2Ch] [ebp-1Ch] v21 = this[1]; v23 = *this; v3 = (v21 - *this) >> 3; if ( v3 == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = (v21 - *this) >> 3; if ( !v3 ) v4 = 1; v5 = __CFADD__(v4, v3); v6 = v4 + v3; if ( v5 ) goto LABEL_8; v7 = 0; if ( v6 ) { if ( v6 <= 0xFFFFFFF ) { LABEL_9: v7 = (char *)operator new((struct type_info *)(8 * v6), v16); goto LABEL_10; } LABEL_8: v6 = 0xFFFFFFF; goto LABEL_9; } LABEL_10: v8 = v7; std::__shared_ptr::__shared_ptr(&v7[a2 - v23], a3); for ( i = v23; a2 != i; i = v20 + 8 ) { v12 = v8; v8 += 2; v20 = i; std::__shared_ptr::__shared_ptr(v12, i); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v20 + 1); } v10 = i; v11 = &v7[i - v23 + 8]; v19 = v11; while ( v10 != v21 ) { v17 = i; v18 = v11; std::__shared_ptr::__shared_ptr(v11, v10); v13 = (volatile signed __int32 **)(v10 + 4); v10 += 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v13); i = v17; v11 = v18 + 8; } v14 = (char *)v19 + v10 - i; if ( v23 ) operator delete(v23); *this = v7; this[1] = v14; result = &v7[8 * v6]; this[2] = result; return result; } // 4B508D: variable 'v16' is possibly undefined //----- (004B5140) -------------------------------------------------------- char *__thiscall std::vector>::push_back(char **this, _DWORD *a2) { char *v3; // ecx char *result; // eax v3 = this[1]; if ( v3 == this[2] ) return std::vector>::_M_realloc_insert const&>( this, v3, a2); result = (char *)std::__shared_ptr::__shared_ptr(v3, a2); this[1] += 8; return result; } //----- (004B517C) -------------------------------------------------------- char *__thiscall std::vector>::_M_realloc_insert const&>( char **this, char *a2, _DWORD *a3) { int v3; // eax int v4; // edx bool v5; // cf unsigned int v6; // eax int v7; // edi _DWORD *v8; // ebx int v9; // eax _DWORD *v10; // ebx char *i; // esi int v12; // eax volatile signed __int32 **v13; // ecx char *v14; // ebx _DWORD *v15; // edx int v16; // eax volatile signed __int32 **v17; // ecx char *v18; // ebx char *result; // eax void (__cdecl *v20)(void *); // [esp+4h] [ebp-44h] _DWORD *v21; // [esp+18h] [ebp-30h] _DWORD *v22; // [esp+18h] [ebp-30h] char *v23; // [esp+1Ch] [ebp-2Ch] char *v25; // [esp+28h] [ebp-20h] _DWORD *v26; // [esp+2Ch] [ebp-1Ch] v23 = this[1]; v25 = *this; v3 = (v23 - *this) >> 3; if ( v3 == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = (v23 - *this) >> 3; if ( !v3 ) v4 = 1; v5 = __CFADD__(v4, v3); v6 = v4 + v3; v7 = v6; if ( v5 ) goto LABEL_8; v26 = 0; if ( !v6 ) goto LABEL_10; if ( v6 > 0xFFFFFFF ) LABEL_8: v7 = 0xFFFFFFF; v26 = operator new((struct type_info *)(8 * v7), v20); LABEL_10: v8 = (_DWORD *)((char *)v26 + a2 - v25); *v8 = *a3; v9 = a3[1]; v8[1] = v9; if ( v9 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v9 + 4)); v10 = v26; for ( i = v25; a2 != i; i += 8 ) { *v10 = *(_DWORD *)i; v12 = *((_DWORD *)i + 1); v10[1] = v12; if ( v12 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v12 + 4)); v13 = (volatile signed __int32 **)(i + 4); v10 += 2; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v13); } v14 = i; v15 = (_DWORD *)((char *)v26 + i - v25 + 8); while ( v14 != v23 ) { *v15 = *(_DWORD *)v14; v16 = *((_DWORD *)v14 + 1); v15[1] = v16; if ( v16 ) { v21 = v15; __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v16 + 4)); v15 = v21; } v17 = (volatile signed __int32 **)(v14 + 4); v22 = v15; v14 += 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v17); v15 = v22 + 2; } v18 = &v14[(char *)v26 - v25 + 8]; if ( v25 ) operator delete(v25); this[1] = v18; *this = (char *)v26; result = (char *)&v26[2 * v7]; this[2] = result; return result; } // 4B51F2: variable 'v20' is possibly undefined //----- (004B52C4) -------------------------------------------------------- char *__thiscall std::vector>::push_back(int this, _DWORD *a2) { int v2; // edx char *result; // eax v2 = *(_DWORD *)(this + 4); if ( v2 == *(_DWORD *)(this + 8) ) return std::vector>::_M_realloc_insert const&>( (char **)this, (char *)v2, a2); result = (char *)a2[1]; *(_DWORD *)v2 = *a2; *(_DWORD *)(v2 + 4) = result; if ( result ) result = (char *)__gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)result + 1); *(_DWORD *)(this + 4) += 8; return result; } // 4B52EC: variable 'this' is possibly undefined //----- (004B5308) -------------------------------------------------------- volatile signed __int32 *__thiscall std::vector>::vector( volatile signed __int32 **this, volatile signed __int32 **a2) { int v3; // esi volatile signed __int32 *v4; // edx volatile signed __int32 *result; // eax volatile signed __int32 *v6; // ecx volatile signed __int32 *v7; // esi volatile signed __int32 *v8; // edi void (__cdecl *v9)(void *); // [esp+4h] [ebp-34h] volatile signed __int32 *v10; // [esp+1Ch] [ebp-1Ch] v3 = (char *)a2[1] - (char *)*a2; *this = 0; this[1] = 0; this[2] = 0; if ( v3 >> 3 ) { if ( (unsigned int)(v3 >> 3) > 0xFFFFFFF ) std::__throw_bad_alloc(); v4 = (volatile signed __int32 *)operator new((struct type_info *)v3, v9); } else { v4 = 0; } result = *a2; *this = v4; this[1] = v4; v10 = result; v6 = result; this[2] = (volatile signed __int32 *)((char *)v4 + v3); v7 = a2[1]; v8 = v4; while ( v7 != v6 ) { *v8 = *v6; result = (volatile signed __int32 *)*((_DWORD *)v6 + 1); *((_DWORD *)v8 + 1) = result; if ( result ) result = __gnu_cxx::__atomic_add_dispatch(result + 1); v8 += 2; v6 += 2; } this[1] = (volatile signed __int32 *)((char *)v4 + (char *)v7 - (char *)v10); return result; } // 4B5345: variable 'v9' is possibly undefined // 4B5383: variable 'v6' is possibly undefined // 4B538B: variable 'v4' is possibly undefined //----- (004B539C) -------------------------------------------------------- char *__thiscall std::vector>::_M_realloc_insert const&>( char **this, char *a2, _DWORD *a3) { int v3; // ebx int v4; // eax bool v5; // cf unsigned int v6; // ebx char *v7; // edi _DWORD *v8; // esi char *i; // eax char *v10; // esi char *v11; // edx _DWORD *v12; // ecx volatile signed __int32 **v13; // ecx char *v14; // esi char *result; // eax void (__cdecl *v16)(void *); // [esp+4h] [ebp-44h] char *v17; // [esp+18h] [ebp-30h] char *v18; // [esp+1Ch] [ebp-2Ch] _DWORD *v19; // [esp+20h] [ebp-28h] char *v20; // [esp+20h] [ebp-28h] char *v21; // [esp+24h] [ebp-24h] char *v23; // [esp+2Ch] [ebp-1Ch] v21 = this[1]; v23 = *this; v3 = (v21 - *this) >> 3; if ( v3 == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = (v21 - *this) >> 3; if ( !v3 ) v4 = 1; v5 = __CFADD__(v4, v3); v6 = v4 + v3; if ( v5 ) goto LABEL_8; v7 = 0; if ( v6 ) { if ( v6 <= 0xFFFFFFF ) { LABEL_9: v7 = (char *)operator new((struct type_info *)(8 * v6), v16); goto LABEL_10; } LABEL_8: v6 = 0xFFFFFFF; goto LABEL_9; } LABEL_10: v8 = v7; std::__shared_ptr::__shared_ptr(&v7[a2 - v23], a3); for ( i = v23; a2 != i; i = v20 + 8 ) { v12 = v8; v8 += 2; v20 = i; std::__shared_ptr::__shared_ptr(v12, i); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v20 + 1); } v10 = i; v11 = &v7[i - v23 + 8]; v19 = v11; while ( v10 != v21 ) { v17 = i; v18 = v11; std::__shared_ptr::__shared_ptr(v11, v10); v13 = (volatile signed __int32 **)(v10 + 4); v10 += 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v13); i = v17; v11 = v18 + 8; } v14 = (char *)v19 + v10 - i; if ( v23 ) operator delete(v23); *this = v7; this[1] = v14; result = &v7[8 * v6]; this[2] = result; return result; } // 4B5409: variable 'v16' is possibly undefined //----- (004B54BC) -------------------------------------------------------- char *__thiscall std::vector>::push_back(char **this, _DWORD *a2) { char *v3; // ecx char *result; // eax v3 = this[1]; if ( v3 == this[2] ) return std::vector>::_M_realloc_insert const&>( this, v3, a2); result = (char *)std::__shared_ptr::__shared_ptr(v3, a2); this[1] += 8; return result; } //----- (004B54F8) -------------------------------------------------------- int __thiscall std::vector::_M_realloc_insert( void ***this, char *a2, volatile signed __int32 **a3) { int v3; // esi int v5; // eax char *v6; // esi void **v7; // ebx char *i; // eax char *v9; // eax unsigned int v10; // ebx char *v11; // ebx char *j; // eax void *v13; // edx void **v14; // ecx int result; // eax void (__cdecl *v16)(void *); // [esp+4h] [ebp-44h] char *v17; // [esp+18h] [ebp-30h] void **v18; // [esp+1Ch] [ebp-2Ch] char *v19; // [esp+20h] [ebp-28h] char *v20; // [esp+20h] [ebp-28h] char *v21; // [esp+24h] [ebp-24h] unsigned int v22; // [esp+28h] [ebp-20h] void **v23; // [esp+2Ch] [ebp-1Ch] v21 = (char *)this[1]; v23 = *this; v3 = -1431655765 * ((v21 - (char *)*this) >> 2); if ( v3 == 178956970 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = -1431655765 * ((v21 - (char *)*this) >> 2); if ( !v3 ) v5 = 1; v22 = v5 - 1431655765 * ((v21 - (char *)*this) >> 2); if ( __CFADD__(v5, v3) ) goto LABEL_8; v6 = 0; if ( v22 ) { if ( v22 <= 0xAAAAAAA ) { LABEL_9: v6 = (char *)operator new((struct type_info *)(12 * v22), v16); goto LABEL_10; } LABEL_8: v22 = 178956970; goto LABEL_9; } LABEL_10: v7 = v23; std::vector>::vector((volatile signed __int32 **)&v6[a2 - (char *)v23], a3); for ( i = v6; ; i = v20 ) { v9 = i + 12; if ( a2 == (char *)v7 ) break; v13 = *v7; v14 = v7; v20 = v9; v7 += 3; *((_DWORD *)v9 - 3) = v13; *((_DWORD *)v9 - 2) = *(v7 - 2); *((_DWORD *)v9 - 1) = *(v7 - 1); *(v7 - 1) = 0; *(v7 - 2) = 0; *(v7 - 3) = 0; std::vector>::~vector(v14); } v10 = (715827883 * ((unsigned int)(a2 - (char *)v23) >> 2)) & 0x3FFFFFFF; v18 = &v23[3 * v10]; v19 = &v6[12 * v10 + 12]; v11 = v19; for ( j = (char *)v18; v21 != j; j = v17 + 12 ) { v17 = j; v11 += 12; *((_DWORD *)v11 - 3) = *(_DWORD *)j; *((_DWORD *)v11 - 2) = *((_DWORD *)j + 1); *((_DWORD *)v11 - 1) = *((_DWORD *)j + 2); *((_DWORD *)j + 2) = 0; *((_DWORD *)j + 1) = 0; *(_DWORD *)j = 0; std::vector>::~vector((void **)j); } if ( v23 ) operator delete(v23); result = 12 * v22; *this = (void **)v6; this[1] = (void **)&v19[12 * ((715827883 * ((unsigned int)(v21 - (char *)v18) >> 2)) & 0x3FFFFFFF)]; this[2] = (void **)&v6[12 * v22]; return result; } // 4B556F: variable 'v16' is possibly undefined //----- (004B56B0) -------------------------------------------------------- volatile signed __int32 *__thiscall std::vector::push_back( int this, volatile signed __int32 **a2) { char *v3; // ecx volatile signed __int32 *result; // eax v3 = *(char **)(this + 4); if ( v3 == *(char **)(this + 8) ) return (volatile signed __int32 *)std::vector::_M_realloc_insert( (void ***)this, v3, a2); result = std::vector>::vector((volatile signed __int32 **)v3, a2); *(_DWORD *)(this + 4) += 12; return result; } //----- (004B56EC) -------------------------------------------------------- char **__thiscall std::vector::_M_realloc_insert(char **this, char *a2, _DWORD *a3) { int v3; // ebx int v4; // eax bool v5; // cf unsigned int v6; // ebx char *v7; // edi int v8; // eax _DWORD *v9; // edi _DWORD *v10; // eax char *v11; // esi char **result; // eax void (__cdecl *v13)(void *); // [esp+4h] [ebp-34h] char *v14; // [esp+10h] [ebp-28h] char *v16; // [esp+18h] [ebp-20h] char *v17; // [esp+1Ch] [ebp-1Ch] v14 = this[1]; v16 = *this; v3 = -373475417 * ((v14 - *this) >> 2); if ( v3 == 23342213 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = -373475417 * ((v14 - *this) >> 2); if ( !v3 ) v4 = 1; v5 = __CFADD__(v4, v3); v6 = v4 - 373475417 * ((v14 - *this) >> 2); if ( v5 ) goto LABEL_8; v17 = 0; if ( !v6 ) goto LABEL_10; if ( v6 > 0x1642C85 ) LABEL_8: v6 = 23342213; v17 = (char *)operator new((struct type_info *)(92 * v6), v13); LABEL_10: v7 = &v17[a2 - v16]; *(_DWORD *)v7 = *a3; *((_DWORD *)v7 + 1) = a3[1]; v8 = a3[2]; *((_DWORD *)v7 + 2) = v8; if ( v8 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v8 + 4)); v9 = v7 + 28; *(v9 - 4) = a3[3]; *(v9 - 3) = a3[4]; *(v9 - 2) = a3[5]; *(v9 - 1) = a3[6]; qmemcpy(v9, a3 + 7, 0x40u); v10 = std::__relocate_a_1>(v16, a2, v17); v11 = (char *)std::__relocate_a_1>(a2, v14, v10 + 23); if ( v16 ) operator delete(v16); this[1] = v11; *this = v17; result = this; this[2] = &v17[92 * v6]; return result; } // 4B5763: variable 'v13' is possibly undefined //----- (004B5800) -------------------------------------------------------- char **__thiscall std::vector::push_back(char **this, WXSS::Token *a2) { char *v3; // ecx char **result; // eax int v5; // edx const WXSS::Token *v6; // [esp+4h] [ebp-14h] v3 = this[1]; if ( v3 == this[2] ) return std::vector::_M_realloc_insert(this, v3, a2); result = (char **)WXSS::Token::Token(v3, a2, v6); *(_DWORD *)(v5 + 4) += 92; return result; } // 4B5816: variable 'v6' is possibly undefined // 4B581B: variable 'v5' is possibly undefined //----- (004B5838) -------------------------------------------------------- void __thiscall std::vector::emplace_back(void ***this, _DWORD *a2) { void (__cdecl *v3)(void *); // edx unsigned int v4; // edi void **v5; // esi _DWORD *v6; // eax char *v7; // [esp+10h] [ebp-28h] void **v8; // [esp+14h] [ebp-24h] void **v9; // [esp+18h] [ebp-20h] void **v10; // [esp+1Ch] [ebp-1Ch] void **v11; // [esp+1Ch] [ebp-1Ch] v10 = this[1]; if ( v10 == this[2] ) { v4 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); v9 = *this; v8 = this[1]; v7 = (char *)((char *)v10 - (char *)*this); if ( v4 ) { if ( v4 > 0x5555555 ) std::__throw_bad_alloc(); v5 = (void **)operator new((struct type_info *)(24 * v4), v3); } else { v5 = 0; } std::string::basic_string(&v7[(_DWORD)v5], a2); v6 = std::__relocate_a_1>(v9, v10, v5); v11 = (void **)std::__relocate_a_1>(v10, v8, v6 + 6); std::_Vector_base::_M_deallocate(v9); *this = v5; this[2] = &v5[6 * v4]; this[1] = v11; } else { std::string::basic_string(v10, a2); this[1] += 6; } } // 4B58A9: variable 'v3' is possibly undefined //----- (004B5908) -------------------------------------------------------- #error "4B59BB: call analysis failed (funcsize=71)" //----- (004B59E8) -------------------------------------------------------- _BYTE *__thiscall std::vector::push_back(_DWORD *this, int a2) { _DWORD *v3; // ecx _BYTE *result; // eax v3 = (_DWORD *)this[1]; if ( v3 == (_DWORD *)this[2] ) return (_BYTE *)std::vector::_M_realloc_insert(v3, a2); result = std::string::basic_string(v3, a2); this[1] += 24; return result; } // 4B5908: using guessed type _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); //----- (004B5A24) -------------------------------------------------------- _DWORD *__thiscall std::vector>::emplace_back>( char **this, _DWORD *a2) { char *v3; // ecx _DWORD *v4; // ecx _DWORD *result; // eax v3 = this[1]; if ( v3 == this[2] ) return (_DWORD *)std::vector>::_M_realloc_insert>( this, v3, a2); v4 = v3 + 4; *(v4 - 1) = *a2; result = std::string::basic_string(v4, a2 + 1); this[1] += 28; return result; } //----- (004B5A6C) -------------------------------------------------------- int __thiscall std::vector>::_M_realloc_insert>( char **this, char *a2, _DWORD *a3) { int v3; // eax int v5; // esi bool v6; // cf unsigned int v7; // eax int v8; // esi char *v9; // ebx char *v10; // eax char *v11; // ebx char *v12; // eax unsigned int v13; // ebx char *v14; // eax char *v15; // ebx void **v16; // edx void **v17; // edx char *v18; // ebx int result; // eax void (__cdecl *v20)(void *); // [esp+4h] [ebp-44h] char *v21; // [esp+14h] [ebp-34h] void **v22; // [esp+18h] [ebp-30h] char *v23; // [esp+1Ch] [ebp-2Ch] char *v24; // [esp+1Ch] [ebp-2Ch] char *v25; // [esp+20h] [ebp-28h] void **v26; // [esp+20h] [ebp-28h] char *v27; // [esp+24h] [ebp-24h] char *v28; // [esp+28h] [ebp-20h] char *v29; // [esp+2Ch] [ebp-1Ch] v27 = this[1]; v29 = *this; v3 = -1227133513 * ((v27 - *this) >> 2); if ( v3 == 76695844 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = -1227133513 * ((v27 - v29) >> 2); if ( !v3 ) v5 = 1; v6 = __CFADD__(v5, v3); v7 = v5 - 1227133513 * ((v27 - v29) >> 2); v8 = v7; if ( v6 ) goto LABEL_8; v28 = 0; if ( v7 ) { if ( v7 <= 0x4924924 ) { LABEL_9: v28 = (char *)operator new((struct type_info *)(28 * v8), v20); goto LABEL_10; } LABEL_8: v8 = 76695844; goto LABEL_9; } LABEL_10: v9 = &v28[a2 - v29]; *(_DWORD *)v9 = *a3; std::string::basic_string((_DWORD *)v9 + 1, a3 + 1); v10 = v28; v11 = v29; while ( 1 ) { v12 = v10 + 28; if ( a2 == v11 ) break; v24 = v12; *((_DWORD *)v12 - 7) = *(_DWORD *)v11; v16 = (void **)(v11 + 4); v11 += 28; v26 = v16; std::string::basic_string((_DWORD *)v12 - 6, v16); std::string::_M_dispose(v26); v10 = v24; } v13 = (920350135 * ((unsigned int)(a2 - v29) >> 2)) & 0x3FFFFFFF; v23 = &v29[28 * v13]; v25 = &v28[28 * v13 + 28]; v14 = v25; v15 = v23; while ( v15 != v27 ) { v21 = v14; *(_DWORD *)v14 = *(_DWORD *)v15; v17 = (void **)(v15 + 4); v15 += 28; v22 = v17; std::string::basic_string((_DWORD *)v14 + 1, v17); std::string::_M_dispose(v22); v14 = v21 + 28; } v18 = &v25[28 * ((920350135 * ((unsigned int)(v15 - v23) >> 2)) & 0x3FFFFFFF)]; if ( v29 ) operator delete(v29); this[1] = v18; *this = v28; result = 28 * v8; this[2] = &v28[28 * v8]; return result; } // 4B5ADF: variable 'v20' is possibly undefined //----- (004B5BE8) -------------------------------------------------------- char **__thiscall std::vector>>::emplace_back>>( int this, _DWORD *a2) { int v3; // esi char **result; // eax v3 = *(_DWORD *)(this + 4); if ( v3 == *(_DWORD *)(this + 8) ) return std::vector>>::_M_realloc_insert>>( (char **)this, (char *)v3, a2); std::string::basic_string((_DWORD *)v3, a2); result = (char **)std::__shared_ptr::__shared_ptr( (_DWORD *)(v3 + 24), a2 + 6); *(_DWORD *)(this + 4) += 32; return result; } //----- (004B5C38) -------------------------------------------------------- char **__thiscall std::vector>>::_M_realloc_insert>>( char **this, char *a2, _DWORD *a3) { int v3; // edi int v4; // eax bool v5; // cf unsigned int v6; // edi _DWORD *v7; // ebx _DWORD *v8; // ebx char *i; // esi _DWORD *v10; // ebx _DWORD *v11; // eax _DWORD *v12; // ecx int v13; // ecx int v14; // ecx char *v15; // ebx char **result; // eax void (__cdecl *v17)(void *); // [esp+4h] [ebp-44h] _DWORD *v18; // [esp+18h] [ebp-30h] char *v19; // [esp+20h] [ebp-28h] char *v21; // [esp+28h] [ebp-20h] _DWORD *v22; // [esp+2Ch] [ebp-1Ch] v19 = this[1]; v21 = *this; v3 = (v19 - *this) >> 5; if ( v3 == 0x3FFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = (v19 - *this) >> 5; if ( !v3 ) v4 = 1; v5 = __CFADD__(v4, v3); v6 = v4 + v3; if ( v5 ) goto LABEL_8; v22 = 0; if ( v6 ) { if ( v6 <= 0x3FFFFFF ) { LABEL_9: v22 = operator new((struct type_info *)(32 * v6), v17); goto LABEL_10; } LABEL_8: v6 = 0x3FFFFFF; goto LABEL_9; } LABEL_10: v7 = (_DWORD *)((char *)v22 + a2 - v21); std::string::basic_string(v7, a3); std::__shared_ptr::__shared_ptr(v7 + 6, a3 + 6); v8 = v22; for ( i = v21; a2 != i; i += 32 ) { std::string::basic_string(v8, i); v12 = v8 + 6; v8 += 8; std::__shared_ptr::__shared_ptr(v12, (_DWORD *)i + 6); v13 = (int)i; std::pair>::~pair(v13); } v10 = i; v11 = (_DWORD *)((char *)v22 + i - v21 + 32); while ( v10 != (_DWORD *)v19 ) { v18 = v11; std::string::basic_string(v11, v10); std::__shared_ptr::__shared_ptr(v18 + 6, v10 + 6); v14 = (int)v10; v10 += 8; std::pair>::~pair(v14); v11 = v18 + 8; } v15 = (char *)v10 + (char *)v22 - v21 + 32; if ( v21 ) operator delete(v21); this[1] = v15; *this = (char *)v22; result = this; this[2] = (char *)&v22[8 * v6]; return result; } // 4B5CAB: variable 'v17' is possibly undefined //----- (004B5D88) -------------------------------------------------------- int __thiscall std::vector>::_M_realloc_insert>( char **this, char *a2, _DWORD *a3) { int v3; // eax int v5; // esi bool v6; // cf unsigned int v7; // eax int v8; // esi char *v9; // ebx char *v10; // eax char *v11; // ebx char *v12; // eax unsigned int v13; // ebx char *v14; // eax char *v15; // ebx void **v16; // edx void **v17; // edx char *v18; // ebx int result; // eax void (__cdecl *v20)(void *); // [esp+4h] [ebp-44h] char *v21; // [esp+14h] [ebp-34h] void **v22; // [esp+18h] [ebp-30h] char *v23; // [esp+1Ch] [ebp-2Ch] char *v24; // [esp+1Ch] [ebp-2Ch] char *v25; // [esp+20h] [ebp-28h] void **v26; // [esp+20h] [ebp-28h] char *v27; // [esp+24h] [ebp-24h] char *v28; // [esp+28h] [ebp-20h] char *v29; // [esp+2Ch] [ebp-1Ch] v27 = this[1]; v29 = *this; v3 = -1227133513 * ((v27 - *this) >> 2); if ( v3 == 76695844 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = -1227133513 * ((v27 - v29) >> 2); if ( !v3 ) v5 = 1; v6 = __CFADD__(v5, v3); v7 = v5 - 1227133513 * ((v27 - v29) >> 2); v8 = v7; if ( v6 ) goto LABEL_8; v28 = 0; if ( v7 ) { if ( v7 <= 0x4924924 ) { LABEL_9: v28 = (char *)operator new((struct type_info *)(28 * v8), v20); goto LABEL_10; } LABEL_8: v8 = 76695844; goto LABEL_9; } LABEL_10: v9 = &v28[a2 - v29]; *(_DWORD *)v9 = *a3; std::string::basic_string((_DWORD *)v9 + 1, a3 + 1); v10 = v28; v11 = v29; while ( 1 ) { v12 = v10 + 28; if ( a2 == v11 ) break; v24 = v12; *((_DWORD *)v12 - 7) = *(_DWORD *)v11; v16 = (void **)(v11 + 4); v11 += 28; v26 = v16; std::string::basic_string((_DWORD *)v12 - 6, v16); std::string::_M_dispose(v26); v10 = v24; } v13 = (920350135 * ((unsigned int)(a2 - v29) >> 2)) & 0x3FFFFFFF; v23 = &v29[28 * v13]; v25 = &v28[28 * v13 + 28]; v14 = v25; v15 = v23; while ( v15 != v27 ) { v21 = v14; *(_DWORD *)v14 = *(_DWORD *)v15; v17 = (void **)(v15 + 4); v15 += 28; v22 = v17; std::string::basic_string((_DWORD *)v14 + 1, v17); std::string::_M_dispose(v22); v14 = v21 + 28; } v18 = &v25[28 * ((920350135 * ((unsigned int)(v15 - v23) >> 2)) & 0x3FFFFFFF)]; if ( v29 ) operator delete(v29); this[1] = v18; *this = v28; result = 28 * v8; this[2] = &v28[28 * v8]; return result; } // 4B5DFB: variable 'v20' is possibly undefined //----- (004B5F10) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // ecx _DWORD *v6; // eax int result; // eax void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new((struct type_info *)0x44, v8); *v4 = &off_4F66C4; v4[1] = 0; v4[2] = 0; v4[3] = 0; *((_WORD *)v4 + 8) = 0; *((_BYTE *)v4 + 18) = 0; v4[5] = 0; v4[6] = 0; v4[7] = 0; v4[8] = 0; v4[9] = 0; v4[10] = 0; v4[11] = 0; v4[12] = 0; v4[13] = 0; *((_BYTE *)v4 + 67) = 0; this[2] = v4; } *((_BYTE *)v4 + 17) = 46; v5 = std::money_base::_S_atoms; *(_BYTE *)(this[2] + 18) = 44; v6 = (_DWORD *)this[2]; v6[2] = &unk_4EC628; v6[3] = 0; v6[5] = &unk_4EC628; v6[6] = 0; v6[7] = &unk_4EC628; v6[8] = 0; v6[9] = &unk_4EC628; v6[10] = 0; v6[11] = 0; v6[12] = std::money_base::_S_default_pattern; *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; for ( result = 0; result != 11; ++result ) *(_BYTE *)(this[2] + result + 56) = v5[result]; return result; } // 4B5FB7: variable 'v8' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4F0AC0: using guessed type int std::money_base::_S_default_pattern; // 4F66C4: using guessed type int (*off_4F66C4)(); //----- (004B6030) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5810; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5810: using guessed type int (*off_4F5810)(); //----- (004B6090) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5810; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5810: using guessed type int (*off_4F5810)(); //----- (004B60F0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5810; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5810: using guessed type int (*off_4F5810)(); //----- (004B6150) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5810; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5810: using guessed type int (*off_4F5810)(); //----- (004B61B0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5810; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5810: using guessed type int (*off_4F5810)(); //----- (004B6210) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5810; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5810: using guessed type int (*off_4F5810)(); //----- (004B6270) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4B6277: variable 'v2' is possibly undefined //----- (004B62A0) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F5810; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4B62A7: variable 'v1' is possibly undefined // 4F5810: using guessed type int (*off_4F5810)(); //----- (004B62D0) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // ecx _DWORD *v6; // eax int result; // eax void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new((struct type_info *)0x44, v8); *v4 = &off_4F66D4; v4[1] = 0; v4[2] = 0; v4[3] = 0; *((_WORD *)v4 + 8) = 0; *((_BYTE *)v4 + 18) = 0; v4[5] = 0; v4[6] = 0; v4[7] = 0; v4[8] = 0; v4[9] = 0; v4[10] = 0; v4[11] = 0; v4[12] = 0; v4[13] = 0; *((_BYTE *)v4 + 67) = 0; this[2] = v4; } *((_BYTE *)v4 + 17) = 46; v5 = std::money_base::_S_atoms; *(_BYTE *)(this[2] + 18) = 44; v6 = (_DWORD *)this[2]; v6[2] = &unk_4EC628; v6[3] = 0; v6[5] = &unk_4EC628; v6[6] = 0; v6[7] = &unk_4EC628; v6[8] = 0; v6[9] = &unk_4EC628; v6[10] = 0; v6[11] = 0; v6[12] = std::money_base::_S_default_pattern; *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; for ( result = 0; result != 11; ++result ) *(_BYTE *)(this[2] + result + 56) = v5[result]; return result; } // 4B6377: variable 'v8' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4F0AC0: using guessed type int std::money_base::_S_default_pattern; // 4F66D4: using guessed type int (*off_4F66D4)(); //----- (004B63F0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5844; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5844: using guessed type int (*off_4F5844)(); //----- (004B6450) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5844; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5844: using guessed type int (*off_4F5844)(); //----- (004B64B0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5844; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5844: using guessed type int (*off_4F5844)(); //----- (004B6510) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5844; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5844: using guessed type int (*off_4F5844)(); //----- (004B6570) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5844; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5844: using guessed type int (*off_4F5844)(); //----- (004B65D0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5844; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5844: using guessed type int (*off_4F5844)(); //----- (004B6630) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4B6637: variable 'v2' is possibly undefined //----- (004B6660) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F5844; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4B6667: variable 'v1' is possibly undefined // 4F5844: using guessed type int (*off_4F5844)(); //----- (004B6690) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // ebx int v6; // ecx int result; // eax void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new((struct type_info *)0x54, v8); v4[1] = 0; *v4 = &off_4F66E4; v4[2] = 0; v4[3] = 0; *((_BYTE *)v4 + 16) = 0; *(_DWORD *)((char *)v4 + 18) = 0; v4[6] = 0; v4[7] = 0; v4[8] = 0; v4[9] = 0; v4[10] = 0; v4[11] = 0; v4[12] = 0; v4[13] = 0; v4[14] = 0; *((_BYTE *)v4 + 82) = 0; this[2] = v4; } *(_DWORD *)((char *)v4 + 18) = 2883630; v4[2] = &unk_4EC628; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_4EC62A; v4[7] = 0; v4[8] = &unk_4EC62A; v4[9] = 0; v4[10] = &unk_4EC62A; v4[11] = 0; v4[12] = 0; *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; v6 = this[2]; for ( result = 0; result != 11; ++result ) *(_WORD *)(v6 + 2 * result + 60) = v5[result]; return result; } // 4B672F: variable 'v8' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4F0AC0: using guessed type int std::money_base::_S_default_pattern; // 4F66E4: using guessed type int (*off_4F66E4)(); //----- (004B67B0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5878; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5878: using guessed type int (*off_4F5878)(); //----- (004B6810) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5878; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5878: using guessed type int (*off_4F5878)(); //----- (004B6870) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5878; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5878: using guessed type int (*off_4F5878)(); //----- (004B68D0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F5878; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5878: using guessed type int (*off_4F5878)(); //----- (004B6930) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F5878; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F5878: using guessed type int (*off_4F5878)(); //----- (004B6990) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F5878; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F5878: using guessed type int (*off_4F5878)(); //----- (004B69F0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4B69F7: variable 'v2' is possibly undefined //----- (004B6A20) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F5878; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4B6A27: variable 'v1' is possibly undefined // 4F5878: using guessed type int (*off_4F5878)(); //----- (004B6A50) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // ebx int v6; // ecx int result; // eax void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new((struct type_info *)0x54, v8); v4[1] = 0; *v4 = &off_4F66F4; v4[2] = 0; v4[3] = 0; *((_BYTE *)v4 + 16) = 0; *(_DWORD *)((char *)v4 + 18) = 0; v4[6] = 0; v4[7] = 0; v4[8] = 0; v4[9] = 0; v4[10] = 0; v4[11] = 0; v4[12] = 0; v4[13] = 0; v4[14] = 0; *((_BYTE *)v4 + 82) = 0; this[2] = v4; } *(_DWORD *)((char *)v4 + 18) = 2883630; v4[2] = &unk_4EC628; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_4EC62A; v4[7] = 0; v4[8] = &unk_4EC62A; v4[9] = 0; v4[10] = &unk_4EC62A; v4[11] = 0; v4[12] = 0; *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; v6 = this[2]; for ( result = 0; result != 11; ++result ) *(_WORD *)(v6 + 2 * result + 60) = v5[result]; return result; } // 4B6AEF: variable 'v8' is possibly undefined // 4E9408: using guessed type char *std::money_base::_S_atoms; // 4F0AC0: using guessed type int std::money_base::_S_default_pattern; // 4F66F4: using guessed type int (*off_4F66F4)(); //----- (004B6B70) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F58AC; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F58AC: using guessed type int (*off_4F58AC)(); //----- (004B6BD0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F58AC; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F58AC: using guessed type int (*off_4F58AC)(); //----- (004B6C30) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F58AC; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F58AC: using guessed type int (*off_4F58AC)(); //----- (004B6C90) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_4F58AC; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F58AC: using guessed type int (*off_4F58AC)(); //----- (004B6CF0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_4F58AC; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 4F58AC: using guessed type int (*off_4F58AC)(); //----- (004B6D50) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_4F58AC; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 4F58AC: using guessed type int (*off_4F58AC)(); //----- (004B6DB0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4B6DB7: variable 'v2' is possibly undefined //----- (004B6DE0) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F58AC; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4B6DE7: variable 'v1' is possibly undefined // 4F58AC: using guessed type int (*off_4F58AC)(); //----- (004B6E10) -------------------------------------------------------- void __thiscall std::string::_M_destroy(void **this, int a2) { operator delete(*this); } //----- (004B6E30) -------------------------------------------------------- void __fastcall std::string::_M_dispose(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004B6E60) -------------------------------------------------------- unsigned int *__thiscall std::string::_M_replace(unsigned int *this, size_t a2, size_t a3, char *Src, size_t a5) { unsigned int v5; // eax unsigned int v7; // edi unsigned int v8; // ecx bool v9; // cl unsigned int v10; // eax unsigned int v12; // eax size_t v13; // eax size_t v14; // ebp size_t v15; // edx _BYTE *v16; // esi unsigned int v17; // [esp+1Ch] [ebp-30h] bool v18; // [esp+1Ch] [ebp-30h] _BYTE *v19; // [esp+20h] [ebp-2Ch] size_t Size; // [esp+28h] [ebp-24h] size_t v21; // [esp+2Ch] [ebp-20h] v5 = this[1]; if ( a5 > a3 + 0x3FFFFFFF - v5 ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); v21 = a5 - a3; v7 = v5 + a5 - a3; v17 = *this; if ( (unsigned int *)*this == this + 2 ) v8 = 15; else v8 = this[2]; if ( v8 < v7 ) { std::string::_M_mutate((int)this, a2, a3, Src, a5); goto LABEL_12; } v19 = (_BYTE *)(a2 + v17); Size = v5 - (a3 + a2); v9 = a3 != a5 && v5 != a3 + a2; if ( v17 <= (unsigned int)Src && (unsigned int)Src <= v17 + v5 ) { if ( a5 && a3 >= a5 ) { if ( a5 != 1 ) { v18 = a3 != a5 && v5 != a3 + a2; memmove(v19, Src, a5); if ( !v18 ) goto LABEL_12; goto LABEL_18; } *v19 = *Src; } if ( !v9 ) { LABEL_20: if ( a3 >= a5 ) goto LABEL_12; v12 = (unsigned int)&v19[a3]; if ( &v19[a3] < &Src[a5] ) { if ( v12 > (unsigned int)Src ) { v13 = v12 - (_DWORD)Src; v14 = v13; if ( v13 == 1 ) { *v19 = *Src; } else if ( v13 ) { memmove(v19, Src, v13); } v15 = a5 - v14; v16 = &v19[a5]; if ( a5 - v14 == 1 ) { v19[v14] = *v16; } else if ( v15 ) { memcpy(&v19[v14], v16, v15); } } else if ( a5 == 1 ) { *v19 = Src[v21]; } else { memcpy(v19, &Src[v21], a5); } goto LABEL_12; } if ( a5 != 1 ) { memmove(v19, Src, a5); goto LABEL_12; } LABEL_26: *v19 = *Src; goto LABEL_12; } LABEL_18: if ( Size == 1 ) v19[a5] = v19[a3]; else memmove(&v19[a5], &v19[a3], Size); goto LABEL_20; } if ( v9 ) { if ( Size == 1 ) v19[a5] = v19[a3]; else memmove(&v19[a5], &v19[a3], Size); } if ( a5 ) { if ( a5 != 1 ) { memcpy(v19, Src, a5); goto LABEL_12; } goto LABEL_26; } LABEL_12: v10 = *this; this[1] = v7; *(_BYTE *)(v10 + v7) = 0; return this; } //----- (004B7160) -------------------------------------------------------- int __cdecl std::string::_S_compare(int a1, int a2) { return a1 - a2; } //----- (004B7170) -------------------------------------------------------- int __thiscall std::string::_M_capacity(_DWORD *this, int a2) { int result; // eax result = a2; this[2] = a2; return result; } //----- (004B7180) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004B7190) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004B71A0) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004B71B0) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004B71C0) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t a2, char a3) { size_t Size; // edx char v5; // si _BYTE *result; // eax size_t v7; // edx Size = a2; v5 = a3; if ( a2 > 0xF ) { result = std::string::_M_create(&a2, 0); *this = result; Size = a2; this[2] = a2; } else { result = (_BYTE *)*this; } if ( !Size ) goto LABEL_6; if ( Size != 1 ) { memset(result, v5, Size); Size = a2; result = (_BYTE *)*this; LABEL_6: this[1] = Size; result[Size] = 0; return result; } *result = v5; v7 = a2; result = (_BYTE *)*this; this[1] = a2; result[v7] = 0; return result; } //----- (004B7260) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>( _DWORD *this, _BYTE *Src, int a3, int a4) { size_t Size; // ebx _BYTE *result; // eax unsigned int v7; // ebx unsigned int v8; // ebx unsigned int v9[4]; // [esp+1Ch] [ebp-10h] BYREF Size = a3 - (_DWORD)Src; v9[0] = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { result = std::string::_M_create(v9, 0); *this = result; this[2] = v9[0]; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; v7 = v9[0]; result = (_BYTE *)*this; this[1] = v9[0]; result[v7] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); v8 = v9[0]; result = (_BYTE *)*this; this[1] = v9[0]; result[v8] = 0; return result; } // 4B7260: using guessed type unsigned int var_10[4]; //----- (004B7300) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>( _DWORD *this, _BYTE *Src, int a3, int a4) { size_t Size; // ebx _BYTE *result; // eax unsigned int v7; // ebx unsigned int v8; // ebx unsigned int v9[4]; // [esp+1Ch] [ebp-10h] BYREF Size = a3 - (_DWORD)Src; v9[0] = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { result = std::string::_M_create(v9, 0); *this = result; this[2] = v9[0]; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; v7 = v9[0]; result = (_BYTE *)*this; this[1] = v9[0]; result[v7] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); v8 = v9[0]; result = (_BYTE *)*this; this[1] = v9[0]; result[v8] = 0; return result; } // 4B7300: using guessed type unsigned int var_10[4]; //----- (004B73A0) -------------------------------------------------------- unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *a2, size_t Size, int a4) { unsigned int result; // eax _BYTE *v6; // edx unsigned int v7[7]; // [esp+1Ch] [ebp-1Ch] BYREF if ( !a2 && Size ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v7[0] = Size - (_DWORD)a2; if ( Size - (unsigned int)a2 > 0xF ) { *this = std::string::_M_create(v7, 0); this[2] = (void *)v7[0]; } std::string::_S_copy_chars(*this, a2, Size); result = v7[0]; v6 = *this; this[1] = (void *)v7[0]; v6[result] = 0; return result; } // 4B73A0: using guessed type unsigned int var_1C[7]; //----- (004B7420) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4) { size_t Size; // ebx _BYTE *result; // eax unsigned int v7; // ebx unsigned int v8; // ebx unsigned int v9[4]; // [esp+1Ch] [ebp-10h] BYREF if ( a3 ) { if ( !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); } Size = a3 - (_DWORD)Src; v9[0] = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { result = std::string::_M_create(v9, 0); *this = result; this[2] = v9[0]; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; v7 = v9[0]; result = (_BYTE *)*this; this[1] = v9[0]; result[v7] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); v8 = v9[0]; result = (_BYTE *)*this; this[1] = v9[0]; result[v8] = 0; return result; } // 4B7420: using guessed type unsigned int var_10[4]; //----- (004B74E0) -------------------------------------------------------- int __fastcall std::string::_M_local_data(int a1) { return a1 + 8; } //----- (004B74F0) -------------------------------------------------------- int __thiscall std::string::_M_set_length(int *this, int a2) { int result; // eax int v3; // edx result = a2; v3 = *this; this[1] = a2; *(_BYTE *)(v3 + a2) = 0; return result; } //----- (004B7500) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) { int result; // eax result = Size - (_DWORD)a2; if ( Size - (_DWORD)a2 == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)memcpy(a1, a2, Size - (_DWORD)a2); } return result; } //----- (004B7540) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) { int result; // eax result = Size - (_DWORD)a2; if ( Size - (_DWORD)a2 == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)memcpy(a1, a2, Size - (_DWORD)a2); } return result; } //----- (004B7580) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) { int result; // eax result = Size - (_DWORD)a2; if ( Size - (_DWORD)a2 == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)memcpy(a1, a2, Size - (_DWORD)a2); } return result; } //----- (004B75C0) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) { int result; // eax result = Size - (_DWORD)a2; if ( Size - (_DWORD)a2 == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)memcpy(a1, a2, Size - (_DWORD)a2); } return result; } //----- (004B7600) -------------------------------------------------------- void __fastcall std::string::shrink_to_fit(_DWORD *a1) { unsigned int v1; // eax if ( (_DWORD *)*a1 == a1 + 2 ) v1 = 15; else v1 = a1[2]; if ( a1[1] < v1 ) std::string::reserve(a1, 0); } // 4B7600: could not find valid save-restore pair for ebp //----- (004B7650) -------------------------------------------------------- _DWORD *__thiscall std::string::_M_replace_aux(_DWORD *this, size_t a2, int a3, size_t a4, char a5) { int v6; // edx _DWORD *v7; // eax unsigned int v8; // esi unsigned int v9; // ebp size_t Size; // edx size_t v11; // eax _BYTE *Src; // ecx _BYTE *v13; // eax _BYTE *v14; // eax v6 = this[1]; if ( a4 > a3 + 0x3FFFFFFF - v6 ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); v7 = (_DWORD *)*this; v8 = v6 + a4 - a3; if ( (_DWORD *)*this == this + 2 ) v9 = 15; else v9 = this[2]; if ( v9 < v8 ) { std::string::_M_mutate((int)this, a2, a3, 0, a4); v7 = (_DWORD *)*this; if ( !a4 ) goto LABEL_13; } else { Size = v6 - (a3 + a2); if ( !Size || a3 == a4 ) { LABEL_9: if ( !a4 ) goto LABEL_13; goto LABEL_10; } v11 = (size_t)v7 + a2; Src = (_BYTE *)(v11 + a3); v13 = (_BYTE *)(a4 + v11); if ( Size != 1 ) { memmove(v13, Src, Size); v7 = (_DWORD *)*this; goto LABEL_9; } *v13 = *Src; v7 = (_DWORD *)*this; if ( !a4 ) goto LABEL_13; } LABEL_10: v14 = (char *)v7 + a2; if ( a4 == 1 ) *v14 = a5; else memset(v14, a5, a4); v7 = (_DWORD *)*this; LABEL_13: this[1] = v8; *((_BYTE *)v7 + v8) = 0; return this; } //----- (004B7770) -------------------------------------------------------- int __fastcall std::string::_M_get_allocator(int a1) { return a1; } //----- (004B7780) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t a2, char a3) { return std::string::_M_construct(this, a2, a3); } //----- (004B7790) -------------------------------------------------------- unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2) { if ( a2 >= this[1] ) std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); return *this + a2; } //----- (004B77C0) -------------------------------------------------------- int __fastcall std::string::end(_DWORD *a1) { return a1[1] + *a1; } //----- (004B77D0) -------------------------------------------------------- int __fastcall std::string::back(_DWORD *a1) { return *a1 + a1[1] - 1; } //----- (004B77E0) -------------------------------------------------------- _DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (004B77F0) -------------------------------------------------------- _BYTE *__thiscall std::string::swap(_DWORD *this, _DWORD *a2) { _BYTE *result; // eax _BYTE *v3; // edi _BYTE *v4; // esi _BYTE *v5; // edx int v6; // ebp int v7; // edx int v8; // esi int v9; // edx int v10; // edi int v11; // ebp int v12; // edi int v13; // [esp+0h] [ebp-28h] int v14; // [esp+4h] [ebp-24h] result = a2; if ( this != a2 ) { v3 = (_BYTE *)*this; v4 = (_BYTE *)*a2; v5 = a2 + 2; if ( this + 2 == (_DWORD *)*this ) { if ( v5 == v4 ) { v8 = a2[1]; if ( this[1] ) { if ( !v8 ) { a2[2] = this[2]; a2[3] = this[3]; a2[4] = this[4]; a2[5] = this[5]; a2[1] = this[1]; result = (_BYTE *)*this; this[1] = 0; *result = 0; return result; } v11 = a2[2]; v12 = a2[3]; v13 = a2[4]; v14 = a2[5]; a2[2] = this[2]; a2[3] = this[3]; a2[4] = this[4]; a2[5] = this[5]; v9 = this[1]; this[3] = v12; this[2] = v11; this[4] = v13; this[5] = v14; v8 = a2[1]; } else { if ( v8 ) { this[2] = a2[2]; this[3] = a2[3]; this[4] = a2[4]; this[5] = a2[5]; this[1] = a2[1]; a2[1] = 0; result = (_BYTE *)*a2; *(_BYTE *)*a2 = 0; return result; } v9 = 0; } } else { v10 = a2[2]; a2[2] = this[2]; a2[3] = this[3]; a2[4] = this[4]; a2[5] = this[5]; *this = v4; *a2 = v5; v9 = this[1]; this[2] = v10; v8 = a2[1]; } } else { v6 = this[2]; if ( v5 == v4 ) { this[2] = a2[2]; this[3] = a2[3]; this[4] = a2[4]; this[5] = a2[5]; *a2 = v3; *this = this + 2; } else { *this = v4; v7 = a2[2]; *a2 = v3; this[2] = v7; } a2[2] = v6; v8 = a2[1]; v9 = this[1]; } this[1] = v8; a2[1] = v9; } return result; } //----- (004B7960) -------------------------------------------------------- int __fastcall std::string::begin(int a1) { return *(_DWORD *)a1; } //----- (004B7970) -------------------------------------------------------- _BYTE *__fastcall std::string::clear(int a1) { _BYTE *result; // eax result = *(_BYTE **)a1; *(_DWORD *)(a1 + 4) = 0; *result = 0; return result; } //----- (004B7980) -------------------------------------------------------- int __thiscall std::string::erase(int *this, int a2) { int v3; // ebx v3 = a2 - *this; std::string::_M_erase(this, v3, 1); return v3 + *this; } //----- (004B79B0) -------------------------------------------------------- int __thiscall std::string::erase(int *this, _BYTE *a2, int a3) { int v4; // esi v4 = (int)&a2[-*this]; if ( a3 == this[1] + *this ) { this[1] = v4; *a2 = 0; } else { std::string::_M_erase(this, v4, a3 - (_DWORD)a2); } return v4 + *this; } //----- (004B7A10) -------------------------------------------------------- int __thiscall std::string::erase(int *this, int a2) { int v3; // ebx v3 = a2 - *this; std::string::_M_erase(this, v3, 1); return v3 + *this; } //----- (004B7A40) -------------------------------------------------------- int __thiscall std::string::erase(int *this, _BYTE *a2, int a3) { int v4; // esi v4 = (int)&a2[-*this]; if ( a3 == this[1] + *this ) { this[1] = v4; *a2 = 0; } else { std::string::_M_erase(this, v4, a3 - (_DWORD)a2); } return v4 + *this; } //----- (004B7AA0) -------------------------------------------------------- int *__thiscall std::string::erase(int *this, unsigned int a2, unsigned int a3) { int *result; // eax unsigned int v4; // ebx unsigned int v5; // ebx int v6; // ecx result = this; v4 = this[1]; if ( a2 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", a2, v4); if ( a3 == -1 ) { v6 = *this; result[1] = a2; *(_BYTE *)(v6 + a2) = 0; } else if ( a3 ) { v5 = v4 - a2; if ( v5 > a3 ) v5 = a3; std::string::_M_erase(this, a2, v5); return this; } return result; } //----- (004B7B20) -------------------------------------------------------- int __fastcall std::string::front(int a1) { return *(_DWORD *)a1; } //----- (004B7B30) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, char *Str) { unsigned int v3; // eax v3 = strlen(Str); if ( 0x3FFFFFFF - this[1] < v3 ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::string::_M_append(this, Str, v3); } //----- (004B7B80) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3) { if ( a3 > 0x3FFFFFFF - this[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::string::_M_append(this, a2, a3); } //----- (004B7BB0) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, int a2) { return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); } //----- (004B7BE0) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, size_t a4) { size_t v4; // ebx v4 = a2[1] - a3; if ( v4 > a4 ) v4 = a4; if ( a3 > a2[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::append", a3, a2[1]); return std::string::_M_append(this, (_BYTE *)(*a2 + a3), v4); } //----- (004B7C40) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3) { if ( a3 > 0x3FFFFFFF - this[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::string::_M_append(this, a2, a3); } //----- (004B7C70) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3) { return std::string::_M_replace_aux(this, this[1], 0, a2, a3); } //----- (004B7CA0) -------------------------------------------------------- _DWORD *__thiscall std::string::assign(_DWORD *this, int a2) { _BYTE *v3; // eax _BYTE *Src; // ecx int v5; // edx int v6; // ebp v3 = (_BYTE *)*this; Src = *(_BYTE **)a2; v5 = *(_DWORD *)(a2 + 4); if ( *(_DWORD *)a2 != a2 + 8 ) { if ( v3 == (_BYTE *)(this + 2) ) { *this = Src; this[1] = v5; this[2] = *(_DWORD *)(a2 + 8); } else { *this = Src; v6 = this[2]; this[1] = v5; this[2] = *(_DWORD *)(a2 + 8); if ( v3 ) { *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v6; goto LABEL_5; } } *(_DWORD *)a2 = a2 + 8; v3 = (_BYTE *)(a2 + 8); goto LABEL_5; } if ( v5 ) { if ( v5 == 1 ) *v3 = *(_BYTE *)(a2 + 8); else memcpy(v3, Src, *(_DWORD *)(a2 + 4)); v5 = *(_DWORD *)(a2 + 4); v3 = (_BYTE *)*this; } this[1] = v5; v3[v5] = 0; v3 = *(_BYTE **)a2; LABEL_5: *(_DWORD *)(a2 + 4) = 0; *v3 = 0; return this; } //----- (004B7D50) -------------------------------------------------------- unsigned int *__thiscall std::string::assign(unsigned int *this, char *Str) { size_t v3; // eax v3 = strlen(Str); return std::string::_M_replace(this, 0, this[1], Str, v3); } //----- (004B7D90) -------------------------------------------------------- unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3) { return std::string::_M_replace(this, 0, this[1], a2, a3); } //----- (004B7DC0) -------------------------------------------------------- void *__thiscall std::string::assign(void *this, int a2) { std::string::_M_assign((int)this, a2); return this; } //----- (004B7DE0) -------------------------------------------------------- unsigned int *__thiscall std::string::assign(unsigned int *this, _DWORD *a2, unsigned int a3, size_t a4) { size_t v4; // ebx v4 = a2[1] - a3; if ( v4 > a4 ) v4 = a4; if ( a3 > a2[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::assign", a3, a2[1]); return std::string::_M_replace(this, 0, this[1], (char *)(*a2 + a3), v4); } //----- (004B7E50) -------------------------------------------------------- unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3) { return std::string::_M_replace(this, 0, this[1], a2, a3); } //----- (004B7E80) -------------------------------------------------------- _DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3) { return std::string::_M_replace_aux(this, 0, this[1], a2, a3); } //----- (004B7EB0) -------------------------------------------------------- size_t __thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4) { size_t v5; // eax size_t v6; // ebx v5 = this[1]; v6 = a2 - *this; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); std::string::_M_replace(this, v6, 0, a3, a4); return v6 + *this; } //----- (004B7F20) -------------------------------------------------------- size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3) { size_t v4; // ebx v4 = a2 - *this; std::string::_M_replace_aux(this, v4, 0, 1u, a3); return v4 + *this; } //----- (004B7F60) -------------------------------------------------------- size_t __thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4) { size_t v5; // ebx v5 = a2 - *this; std::string::_M_replace_aux(this, v5, 0, a3, a4); return v5 + *this; } //----- (004B7FA0) -------------------------------------------------------- unsigned int *__thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4) { size_t v4; // eax v4 = a2 - *this; if ( v4 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v4, this[1]); return std::string::_M_replace(this, v4, 0, a3, a4); } //----- (004B8000) -------------------------------------------------------- size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3) { size_t v4; // ebx v4 = a2 - *this; std::string::_M_replace_aux(this, v4, 0, 1u, a3); return v4 + *this; } //----- (004B8040) -------------------------------------------------------- _DWORD *__thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4) { return std::string::_M_replace_aux(this, a2 - *this, 0, a3, a4); } //----- (004B8080) -------------------------------------------------------- unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *Str) { size_t v4; // eax v4 = strlen(Str); if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::string::_M_replace(this, a2, 0, Str, v4); } //----- (004B80F0) -------------------------------------------------------- unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *a3, size_t a4) { if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::string::_M_replace(this, a2, 0, a3, a4); } //----- (004B8150) -------------------------------------------------------- unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, int a3) { if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::string::_M_replace(this, a2, 0, *(char **)a3, *(_DWORD *)(a3 + 4)); } //----- (004B81B0) -------------------------------------------------------- unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, _DWORD *a3, char *a4, size_t a5) { size_t v5; // ebx v5 = a3[1] - (_DWORD)a4; if ( v5 > a5 ) v5 = a5; if ( (unsigned int)a4 > a3[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", (size_t)a4, a3[1]); if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::string::_M_replace(this, a2, 0, &a4[*a3], v5); } //----- (004B8240) -------------------------------------------------------- _DWORD *__thiscall std::string::insert(_DWORD *this, unsigned int a2, size_t a3, char a4) { if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", a2, this[1]); return std::string::_M_replace_aux(this, a2, 0, a3, a4); } //----- (004B82A0) -------------------------------------------------------- unsigned int *__thiscall std::string::insert<__gnu_cxx::__normal_iterator>( unsigned int *this, int a2, char *a3, int a4) { size_t v4; // eax v4 = a2 - *this; if ( v4 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v4, this[1]); return std::string::_M_replace(this, v4, 0, a3, a4 - (_DWORD)a3); } //----- (004B8300) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + a2[1]; return result; } //----- (004B8310) -------------------------------------------------------- _DWORD *__thiscall std::string::resize(int *this, _DWORD *a2) { return std::string::resize(this, a2, 0); } //----- (004B8330) -------------------------------------------------------- _DWORD *__thiscall std::string::resize(int *this, _DWORD *a2, char a3) { size_t v3; // edx _DWORD *result; // eax int v5; // edx v3 = this[1]; result = a2; if ( v3 < (unsigned int)a2 ) return std::string::_M_replace_aux(this, v3, 0, (size_t)a2 - v3, a3); if ( v3 > (unsigned int)a2 ) { v5 = *this; this[1] = (int)a2; *((_BYTE *)a2 + v5) = 0; } return result; } //----- (004B8380) -------------------------------------------------------- int __thiscall std::string::_M_data(_DWORD *this, int a2) { int result; // eax result = a2; *this = a2; return result; } //----- (004B8390) -------------------------------------------------------- size_t __cdecl std::string::_S_copy(void *a1, const void *Src, size_t Size) { size_t result; // eax result = Size; if ( Size == 1 ) { result = *(unsigned __int8 *)Src; *(_BYTE *)a1 = result; } else if ( Size ) { return (size_t)memcpy(a1, Src, Size); } return result; } //----- (004B83C0) -------------------------------------------------------- size_t __cdecl std::string::_S_move(void *a1, const void *Src, size_t Size) { size_t result; // eax result = Size; if ( Size == 1 ) { result = *(unsigned __int8 *)Src; *(_BYTE *)a1 = result; } else if ( Size ) { return (size_t)memmove(a1, Src, Size); } return result; } //----- (004B83F0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // esi size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); } //----- (004B8470) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // esi size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); } //----- (004B84F0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4) { size_t v4; // ebx size_t v5; // edx size_t v6; // eax v4 = this[1]; v5 = a2 - *this; v6 = v4 - v5; if ( a3 - a2 <= v4 - v5 ) v6 = a3 - a2; if ( v5 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, v4); return std::string::_M_replace(this, v5, v6, *(char **)a4, *(_DWORD *)(a4 + 4)); } //----- (004B8570) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str) { size_t v5; // eax size_t v6; // ecx size_t v7; // edx size_t v8; // esi v5 = strlen(Str); v6 = this[1]; v7 = a2 - *this; v8 = v6 - v7; if ( a3 - a2 <= v6 - v7 ) v8 = a3 - a2; if ( v7 > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v7, v6); return std::string::_M_replace(this, v7, v8, Str, v5); } //----- (004B85F0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // esi size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); } //----- (004B8670) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // ebx size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5); } //----- (004B86E0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // esi size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); } //----- (004B8760) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // ebx size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5); } //----- (004B87D0) -------------------------------------------------------- _DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5) { return std::string::_M_replace_aux(this, a2 - *this, a3 - a2, a4, a5); } //----- (004B87F0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // esi size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); } //----- (004B8870) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str) { size_t v5; // eax size_t v6; // ecx size_t v7; // edx size_t v8; // esi v5 = strlen(Str); v6 = this[1]; v7 = a2 - *this; v8 = v6 - v7; if ( a3 - a2 <= v6 - v7 ) v8 = a3 - a2; if ( v7 > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v7, v6); return std::string::_M_replace(this, v7, v8, Str, v5); } //----- (004B88F0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // esi size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); } //----- (004B8970) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // ebx size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5); } //----- (004B89E0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4) { size_t v4; // ebx size_t v5; // edx size_t v6; // eax v4 = this[1]; v5 = a2 - *this; v6 = v4 - v5; if ( a3 - a2 <= v4 - v5 ) v6 = a3 - a2; if ( v5 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, v4); return std::string::_M_replace(this, v5, v6, *(char **)a4, *(_DWORD *)(a4 + 4)); } //----- (004B8A60) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // esi size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); } //----- (004B8AE0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // esi size_t v6; // edx size_t v7; // eax v5 = this[1]; v6 = a2 - *this; v7 = v5 - v6; if ( a3 - a2 <= v5 - v6 ) v7 = a3 - a2; if ( v6 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, v5); return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); } //----- (004B8B60) -------------------------------------------------------- _DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5) { return std::string::_M_replace_aux(this, a2 - *this, a3 - a2, a4, a5); } //----- (004B8B80) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *Str) { size_t v5; // eax size_t v6; // edx v5 = strlen(Str); v6 = this[1] - a2; if ( v6 > a3 ) v6 = a3; if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::string::_M_replace(this, a2, v6, Str, v5); } //----- (004B8BF0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace( unsigned int *this, unsigned int a2, unsigned int a3, char *a4, size_t a5) { size_t v5; // edx v5 = this[1] - a2; if ( v5 > a3 ) v5 = a3; if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::string::_M_replace(this, a2, v5, a4, a5); } //----- (004B8C50) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, size_t a3, int a4) { size_t v4; // eax v4 = this[1] - a2; if ( v4 > a3 ) v4 = a3; if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::string::_M_replace(this, a2, v4, *(char **)a4, *(_DWORD *)(a4 + 4)); } //----- (004B8CC0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace( unsigned int *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) { size_t v6; // ebx size_t v7; // esi v6 = a4[1] - a5; if ( v6 > a6 ) v6 = a6; if ( a5 > a4[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a5, a4[1]); v7 = this[1] - a2; if ( v7 > a3 ) v7 = a3; if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::string::_M_replace(this, a2, v7, (char *)(*a4 + a5), v6); } //----- (004B8D60) -------------------------------------------------------- _DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, char a5) { unsigned int v5; // edx v5 = this[1] - a2; if ( v5 > a3 ) v5 = a3; if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::string::_M_replace_aux(this, a2, v5, a4, a5); } //----- (004B8DD0) -------------------------------------------------------- void __thiscall std::string::reserve(_DWORD *this, unsigned int a2) { unsigned int v3; // ecx unsigned int v4; // eax _BYTE *v5; // edi _BYTE *v6; // esi unsigned int v7; // edx _BYTE *v8; // eax _BYTE *Src; // ebp _BYTE *v10; // edi int v11; // eax unsigned int v12; // eax v3 = this[1]; v4 = a2; if ( a2 < v3 ) { a2 = v3; v4 = v3; } v5 = (_BYTE *)*this; v6 = this + 2; if ( this + 2 == (_DWORD *)*this ) v7 = 15; else v7 = this[2]; if ( v7 != v4 ) { if ( v7 > 0xF ) { if ( v4 > 0xF ) goto LABEL_8; } else if ( v7 < v4 ) { LABEL_8: v8 = std::string::_M_create(&a2, v7); Src = (_BYTE *)*this; v10 = v8; v11 = this[1]; if ( v11 ) { if ( v11 != -1 ) memcpy(v10, Src, v11 + 1); } else { *v10 = *Src; } if ( Src != v6 ) operator delete(Src); v12 = a2; *this = v10; this[2] = v12; return; } if ( v6 != v5 ) { if ( v3 ) { if ( v3 != -1 ) memcpy(this + 2, v5, v3 + 1); } else { *((_BYTE *)this + 8) = *v5; } operator delete(v5); *this = v6; } } } //----- (004B8EE0) -------------------------------------------------------- int __thiscall std::string::_M_erase(int *this, int a2, int a3) { int v4; // eax int v5; // ecx _BYTE *Src; // edx _BYTE *v7; // ecx int result; // eax v4 = this[1]; v5 = *this; if ( v4 != a2 + a3 && a3 ) { Src = (_BYTE *)(v5 + a2 + a3); v7 = (_BYTE *)(a2 + v5); if ( v4 - (a2 + a3) == 1 ) *v7 = *Src; else memmove(v7, Src, v4 - (a2 + a3)); v5 = *this; v4 = this[1]; } result = v4 - a3; this[1] = result; *(_BYTE *)(v5 + result) = 0; return result; } //----- (004B8F50) -------------------------------------------------------- int __fastcall std::string::pop_back(int *a1) { return std::string::_M_erase(a1, a1[1] - 1, 1); } //----- (004B8F70) -------------------------------------------------------- _DWORD *__thiscall std::string::_M_append(_DWORD *this, _BYTE *Src, size_t Size) { _DWORD *v4; // edi size_t v5; // ecx _DWORD *v6; // eax unsigned int v7; // esi unsigned int v8; // edi _BYTE *v9; // eax v4 = this + 2; v5 = this[1]; v6 = (_DWORD *)*this; v7 = v5 + Size; if ( (_DWORD *)*this == v4 ) v8 = 15; else v8 = this[2]; if ( v7 > v8 ) { std::string::_M_mutate((int)this, v5, 0, Src, Size); v6 = (_DWORD *)*this; } else if ( Size ) { v9 = (char *)v6 + v5; if ( Size == 1 ) *v9 = *Src; else memcpy(v9, Src, Size); v6 = (_DWORD *)*this; } this[1] = v7; *((_BYTE *)v6 + v7) = 0; return this; } //----- (004B9010) -------------------------------------------------------- void __thiscall std::string::_M_assign(int this, int a2) { _BYTE *v2; // esi size_t Size; // edi unsigned int v5; // eax _BYTE *Src; // eax unsigned int v7; // eax int v8; // [esp+1Ch] [ebp-30h] unsigned int v9[8]; // [esp+2Ch] [ebp-20h] BYREF if ( this != a2 ) { v2 = *(_BYTE **)this; Size = *(_DWORD *)(a2 + 4); if ( this + 8 == *(_DWORD *)this ) v5 = 15; else v5 = *(_DWORD *)(this + 8); if ( v5 < Size ) { v8 = this + 8; v9[0] = *(_DWORD *)(a2 + 4); v2 = std::string::_M_create(v9, v5); if ( v8 != *(_DWORD *)this ) operator delete(*(void **)this); v7 = v9[0]; *(_DWORD *)this = v2; *(_DWORD *)(this + 8) = v7; if ( !Size ) goto LABEL_9; } else if ( !Size ) { LABEL_9: *(_DWORD *)(this + 4) = Size; v2[Size] = 0; return; } Src = *(_BYTE **)a2; if ( Size == 1 ) *v2 = *Src; else memcpy(v2, Src, Size); v2 = *(_BYTE **)this; goto LABEL_9; } } // 4B9010: using guessed type unsigned int var_20[8]; //----- (004B90D0) -------------------------------------------------------- void *__stdcall std::string::_M_create(unsigned int *a1, unsigned int a2) { unsigned int v2; // eax unsigned int v3; // edx void (__cdecl *v5)(void *); // [esp+4h] [ebp-18h] v2 = *a1; if ( *a1 > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); if ( v2 > a2 ) { v3 = 2 * a2; if ( v2 < 2 * a2 ) { if ( v3 > 0x3FFFFFFF ) { *a1 = 0x3FFFFFFF; return operator new((struct type_info *)0x40000000, v5); } *a1 = v3; v2 = 2 * a2; } } return operator new((struct type_info *)(v2 + 1), v5); } // 4B9104: variable 'v5' is possibly undefined //----- (004B9140) -------------------------------------------------------- int __thiscall std::string::_M_length(_DWORD *this, int a2) { int result; // eax result = a2; this[1] = a2; return result; } //----- (004B9150) -------------------------------------------------------- size_t __thiscall std::string::_M_mutate(int this, size_t Size, int a3, _BYTE *a4, size_t a5) { _BYTE *v6; // edi unsigned int v7; // eax _BYTE *v8; // eax _BYTE *v9; // ecx _BYTE *v10; // ebp _BYTE *v11; // esi size_t result; // eax _BYTE *Src; // [esp+4h] [ebp-48h] size_t v14; // [esp+14h] [ebp-38h] size_t v15; // [esp+18h] [ebp-34h] _BYTE *v16; // [esp+18h] [ebp-34h] _BYTE *v17; // [esp+1Ch] [ebp-30h] _BYTE *v18; // [esp+1Ch] [ebp-30h] size_t v19[8]; // [esp+2Ch] [ebp-20h] BYREF v15 = Size + a3; v14 = *(_DWORD *)(this + 4) - (Size + a3); v6 = (_BYTE *)(this + 8); v19[0] = *(_DWORD *)(this + 4) + a5 - a3; if ( this + 8 == *(_DWORD *)this ) v7 = 15; else v7 = *(_DWORD *)(this + 8); v8 = std::string::_M_create(v19, v7); v9 = *(_BYTE **)this; v10 = v8; if ( Size ) { if ( Size == 1 ) { *v8 = *v9; } else { v17 = *(_BYTE **)this; memcpy(v8, *(const void **)this, Size); v9 = v17; } } if ( a4 && a5 ) { if ( a5 == 1 ) { v10[Size] = *a4; } else { v18 = v9; memcpy(&v10[Size], a4, a5); v9 = v18; } } if ( v14 ) { v11 = &v10[a5 + Size]; if ( v14 == 1 ) { *v11 = v9[v15]; } else { Src = &v9[v15]; v16 = v9; memcpy(v11, Src, v14); v9 = v16; } } if ( v6 != v9 ) operator delete(v9); result = v19[0]; *(_DWORD *)this = v10; *(_DWORD *)(this + 8) = result; return result; } // 4B9150: using guessed type size_t var_20[8]; //----- (004B92A0) -------------------------------------------------------- void *__cdecl std::string::_S_assign(_BYTE *a1, void *Val, size_t Size) { void *result; // eax result = Val; if ( Val == (void *)1 ) { *a1 = Size; } else if ( Val ) { return memset(a1, (char)Size, (size_t)Val); } return result; } //----- (004B92E0) -------------------------------------------------------- _DWORD *__thiscall std::string::push_back(_DWORD *this, char a2) { size_t v3; // esi _DWORD *v4; // eax unsigned int v5; // edi unsigned int v6; // edx _DWORD *result; // eax v3 = this[1]; v4 = (_DWORD *)*this; v5 = v3 + 1; if ( (_DWORD *)*this == this + 2 ) v6 = 15; else v6 = this[2]; if ( v5 > v6 ) { std::string::_M_mutate((int)this, v3, 0, 0, 1u); v4 = (_DWORD *)*this; } *((_BYTE *)v4 + v3) = a2; result = (_DWORD *)*this; this[1] = v5; *((_BYTE *)result + v3 + 1) = 0; return result; } //----- (004B9360) -------------------------------------------------------- _DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax int v3; // ebx result = a2; *this = this + 2; if ( result + 2 == (_DWORD *)*result ) { this[2] = a2[2]; this[3] = a2[3]; this[4] = a2[4]; this[5] = a2[5]; } else { *this = *a2; this[2] = a2[2]; } v3 = a2[1]; *a2 = a2 + 2; a2[1] = 0; *((_BYTE *)a2 + 8) = 0; this[1] = v3; return result; } //----- (004B93C0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) { _BYTE *result; // eax int v4; // ebx int v5; // ebx int v6; // edx result = (_BYTE *)a2; *this = this + 2; if ( result + 8 == *(_BYTE **)result ) { this[2] = *(_DWORD *)(a2 + 8); this[3] = *(_DWORD *)(a2 + 12); this[4] = *(_DWORD *)(a2 + 16); this[5] = *(_DWORD *)(a2 + 20); v6 = *(_DWORD *)(a2 + 4); *(_DWORD *)(a2 + 4) = 0; result = *(_BYTE **)a2; this[1] = v6; *result = 0; } else { *this = *(_DWORD *)a2; v4 = *(_DWORD *)(a2 + 4); *(_DWORD *)a2 = a2 + 8; this[1] = v4; v5 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = 0; *(_BYTE *)(a2 + 8) = 0; this[2] = v5; } return result; } //----- (004B9430) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3) { size_t Size; // eax int v6; // [esp+8h] [ebp-14h] *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; return std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); } // 4B9461: variable 'v6' is possibly undefined //----- (004B9480) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); } //----- (004B94A0) -------------------------------------------------------- char *__thiscall std::string::basic_string(_DWORD *this, int a2) { char *result; // eax result = (char *)(this + 2); this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; return result; } //----- (004B94C0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2) { int v3; // [esp+8h] [ebp-14h] *this = this + 2; LOBYTE(v3) = 0; return std::string::_M_construct(this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v3); } // 4B94E0: variable 'v3' is possibly undefined //----- (004B94F0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) { int v4; // [esp+8h] [ebp-14h] *this = this + 2; LOBYTE(v4) = 0; return std::string::_M_construct<__gnu_cxx::__normal_iterator>( this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v4); } // 4B9510: variable 'v4' is possibly undefined //----- (004B9520) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) { size_t v4; // eax *this = this + 2; v4 = a2[1]; if ( Size > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", Size, a2[1]); LOBYTE(a4) = 0; return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), *a2 + v4, a4); } //----- (004B9570) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) { unsigned int v4; // esi size_t v5; // eax unsigned int v6; // eax *this = this + 2; v4 = a4; v5 = a2[1]; if ( Size > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", Size, a2[1]); v6 = v5 - Size; LOBYTE(a4) = 0; if ( v6 > v4 ) v6 = v4; return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), Size + *a2 + v6, a4); } //----- (004B95D0) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) { unsigned int v5; // eax unsigned int v6; // eax int v8; // [esp+8h] [ebp-14h] *this = this + 2; v5 = a2[1]; if ( a3 > v5 ) std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); v6 = v5 - a3; LOBYTE(v8) = 0; if ( v6 > a4 ) v6 = a4; return std::string::_M_construct(this, (unsigned __int8 *)(a3 + *a2), a3 + *a2 + v6, v8); } // 4B9605: variable 'v8' is possibly undefined //----- (004B9640) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); } //----- (004B9660) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4) { *this = this + 2; return std::string::_M_construct(this, a2, a3); } //----- (004B9690) -------------------------------------------------------- int __fastcall std::string::basic_string(int a1) { int result; // eax result = a1 + 8; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; return result; } //----- (004B96B0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( _DWORD *this, _BYTE *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::string::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); } //----- (004B96C0) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string( void **this, unsigned __int8 *a2, size_t a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::string::_M_construct(this, a2, a3, a4); } //----- (004B96D0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::string::_M_construct(this, a2, a3, a4); } //----- (004B96E0) -------------------------------------------------------- _DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax int v3; // ebx result = a2; *this = this + 2; if ( result + 2 == (_DWORD *)*result ) { this[2] = a2[2]; this[3] = a2[3]; this[4] = a2[4]; this[5] = a2[5]; } else { *this = *a2; this[2] = a2[2]; } v3 = a2[1]; *a2 = a2 + 2; a2[1] = 0; *((_BYTE *)a2 + 8) = 0; this[1] = v3; return result; } //----- (004B9740) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) { _BYTE *result; // eax int v4; // ebx int v5; // ebx int v6; // edx result = (_BYTE *)a2; *this = this + 2; if ( result + 8 == *(_BYTE **)result ) { this[2] = *(_DWORD *)(a2 + 8); this[3] = *(_DWORD *)(a2 + 12); this[4] = *(_DWORD *)(a2 + 16); this[5] = *(_DWORD *)(a2 + 20); v6 = *(_DWORD *)(a2 + 4); *(_DWORD *)(a2 + 4) = 0; result = *(_BYTE **)a2; this[1] = v6; *result = 0; } else { *this = *(_DWORD *)a2; v4 = *(_DWORD *)(a2 + 4); *(_DWORD *)a2 = a2 + 8; this[1] = v4; v5 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = 0; *(_BYTE *)(a2 + 8) = 0; this[2] = v5; } return result; } //----- (004B97B0) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3) { size_t Size; // eax int v6; // [esp+8h] [ebp-14h] *this = this + 2; Size = -1; if ( Str ) Size = (size_t)&Str[strlen(Str)]; LOBYTE(v6) = 0; return std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); } // 4B97E1: variable 'v6' is possibly undefined //----- (004B9800) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); } //----- (004B9820) -------------------------------------------------------- char *__thiscall std::string::basic_string(_DWORD *this, int a2) { char *result; // eax result = (char *)(this + 2); this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; return result; } //----- (004B9840) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2) { int v3; // [esp+8h] [ebp-14h] *this = this + 2; LOBYTE(v3) = 0; return std::string::_M_construct(this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v3); } // 4B9860: variable 'v3' is possibly undefined //----- (004B9870) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) { int v4; // [esp+8h] [ebp-14h] *this = this + 2; LOBYTE(v4) = 0; return std::string::_M_construct<__gnu_cxx::__normal_iterator>( this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v4); } // 4B9890: variable 'v4' is possibly undefined //----- (004B98A0) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) { size_t v4; // eax *this = this + 2; v4 = a2[1]; if ( Size > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", Size, a2[1]); LOBYTE(a4) = 0; return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), *a2 + v4, a4); } //----- (004B98F0) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) { unsigned int v4; // esi size_t v5; // eax unsigned int v6; // eax *this = this + 2; v4 = a4; v5 = a2[1]; if ( Size > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", Size, a2[1]); v6 = v5 - Size; LOBYTE(a4) = 0; if ( v6 > v4 ) v6 = v4; return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), Size + *a2 + v6, a4); } //----- (004B9950) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) { unsigned int v5; // eax unsigned int v6; // eax int v8; // [esp+8h] [ebp-14h] *this = this + 2; v5 = a2[1]; if ( a3 > v5 ) std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); v6 = v5 - a3; LOBYTE(v8) = 0; if ( v6 > a4 ) v6 = a4; return std::string::_M_construct(this, (unsigned __int8 *)(a3 + *a2), a3 + *a2 + v6, v8); } // 4B9985: variable 'v8' is possibly undefined //----- (004B99C0) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); } //----- (004B99E0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4) { *this = this + 2; return std::string::_M_construct(this, a2, a3); } //----- (004B9A10) -------------------------------------------------------- int __fastcall std::string::basic_string(int a1) { int result; // eax result = a1 + 8; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; return result; } //----- (004B9A30) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( _DWORD *this, _BYTE *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::string::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); } //----- (004B9A40) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string( void **this, unsigned __int8 *a2, size_t a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::string::_M_construct(this, a2, a3, a4); } //----- (004B9A50) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::string::_M_construct(this, a2, a3, a4); } //----- (004B9A60) -------------------------------------------------------- void __fastcall std::string::~string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004B9A90) -------------------------------------------------------- void __fastcall std::string::~string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004B9AC0) -------------------------------------------------------- _DWORD *__thiscall std::string::operator=(_DWORD *this, _DWORD *a2) { _BYTE *v3; // eax _DWORD *v4; // ecx int v5; // edx int v6; // ebp v3 = (_BYTE *)*this; v4 = (_DWORD *)*a2; v5 = a2[1]; if ( a2 + 2 != (_DWORD *)*a2 ) { if ( v3 == (_BYTE *)(this + 2) ) { *this = v4; this[1] = v5; this[2] = a2[2]; } else { *this = v4; v6 = this[2]; this[1] = v5; this[2] = a2[2]; if ( v3 ) { *a2 = v3; a2[2] = v6; goto LABEL_5; } } *a2 = a2 + 2; v3 = a2 + 2; goto LABEL_5; } if ( v5 ) { if ( v5 == 1 ) *v3 = *((_BYTE *)a2 + 8); else memcpy(v3, a2 + 2, a2[1]); v3 = (_BYTE *)*this; v5 = a2[1]; } this[1] = v5; v3[v5] = 0; v3 = (_BYTE *)*a2; LABEL_5: a2[1] = 0; *v3 = 0; return this; } //----- (004B9B70) -------------------------------------------------------- unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) { size_t v3; // eax v3 = strlen(Str); return std::string::_M_replace(this, 0, this[1], Str, v3); } //----- (004B9BB0) -------------------------------------------------------- void *__thiscall std::string::operator=(void *this, int a2) { std::string::_M_assign((int)this, a2); return this; } //----- (004B9BD0) -------------------------------------------------------- unsigned int *__thiscall std::string::operator=(unsigned int *this, char *a2, size_t a3) { std::string::_M_replace(this, 0, this[1], a2, a3); return this; } //----- (004B9C10) -------------------------------------------------------- _DWORD *__thiscall std::string::operator=(_DWORD *this, char a2) { std::string::_M_replace_aux(this, 0, this[1], 1u, a2); return this; } //----- (004B9C50) -------------------------------------------------------- int __thiscall std::string::operator[](_DWORD *this, int a2) { return a2 + *this; } //----- (004B9C60) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str) { unsigned int v3; // eax v3 = strlen(Str); if ( v3 > 0x3FFFFFFF - this[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::string::_M_append(this, Str, v3); } //----- (004B9CB0) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) { return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); } //----- (004B9CE0) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *a2, size_t a3) { if ( a3 > 0x3FFFFFFF - this[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::string::_M_append(this, a2, a3); } //----- (004B9D10) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, char a2) { _DWORD *result; // eax char *v3; // ecx size_t v4; // ebx char *v5; // edx unsigned int v6; // esi unsigned int v7; // ecx int v8; // edx _DWORD *v9; // [esp+1Ch] [ebp-10h] result = this; v3 = (char *)(this + 2); v4 = *((_DWORD *)v3 - 1); v5 = (char *)*((_DWORD *)v3 - 2); v6 = v4 + 1; if ( v5 == v3 ) v7 = 15; else v7 = result[2]; if ( v6 > v7 ) { v9 = result; std::string::_M_mutate((int)result, v4, 0, 0, 1u); result = v9; v5 = (char *)*v9; } v5[v4] = a2; v8 = *result; result[1] = v6; *(_BYTE *)(v8 + v4 + 1) = 0; return result; } //----- (004B9D90) -------------------------------------------------------- void __thiscall std::wstring::_M_destroy(void **this, int a2) { operator delete(*this); } //----- (004B9DB0) -------------------------------------------------------- void __fastcall std::wstring::_M_dispose(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004B9DE0) -------------------------------------------------------- int __thiscall std::wstring::_M_replace(int this, size_t a2, size_t a3, wchar_t *a4, size_t a5) { int v5; // eax unsigned int v7; // edi unsigned int v8; // ecx bool v9; // cl const wchar_t *S2; // edx const wchar_t *v11; // eax size_t v13; // ecx wchar_t *v14; // eax int v15; // eax int v16; // esi size_t v17; // esi const wchar_t *v18; // [esp+1Ch] [ebp-30h] bool v19; // [esp+1Ch] [ebp-30h] int v20; // [esp+1Ch] [ebp-30h] wchar_t *S1; // [esp+20h] [ebp-2Ch] size_t N; // [esp+28h] [ebp-24h] size_t v23; // [esp+2Ch] [ebp-20h] v5 = *(_DWORD *)(this + 4); if ( a5 > a3 + 0x1FFFFFFF - v5 ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); v23 = a5 - a3; v7 = v5 + a5 - a3; v18 = *(const wchar_t **)this; if ( *(_DWORD *)this == this + 8 ) v8 = 7; else v8 = *(_DWORD *)(this + 8); if ( v8 < v7 ) { std::wstring::_M_mutate((const wchar_t **)this, a2, a3, a4, a5); goto LABEL_12; } S1 = (wchar_t *)&v18[a2]; N = v5 - (a3 + a2); v9 = a3 != a5 && v5 != a3 + a2; if ( v18 <= a4 && a4 <= &v18[v5] ) { if ( a5 && a3 >= a5 ) { if ( a5 != 1 ) { v19 = a3 != a5 && v5 != a3 + a2; wmemmove(S1, a4, a5); if ( !v19 ) goto LABEL_12; goto LABEL_18; } *S1 = *a4; } if ( !v9 ) { LABEL_20: if ( a3 >= a5 ) goto LABEL_12; v13 = a5; v14 = &S1[a3]; if ( v14 < &a4[a5] ) { if ( v14 > a4 ) { v15 = (char *)v14 - (char *)a4; v20 = v15; v16 = v15 >> 1; if ( v15 >> 1 == 1 ) { *S1 = *a4; } else if ( v16 ) { wmemmove(S1, a4, v15 >> 1); v13 = a5; } v17 = a5 - v16; if ( v17 == 1 ) { *(wchar_t *)((char *)S1 + v20) = S1[v13]; } else if ( v17 ) { wmemcpy((wchar_t *)((char *)S1 + v20), &S1[v13], v17); } } else if ( a5 == 1 ) { *S1 = a4[v23]; } else { wmemcpy(S1, &a4[v23], a5); } goto LABEL_12; } if ( a5 != 1 ) { wmemmove(S1, a4, a5); goto LABEL_12; } LABEL_26: *S1 = *a4; goto LABEL_12; } LABEL_18: if ( N == 1 ) S1[a5] = S1[a3]; else wmemmove(&S1[a5], &S1[a3], N); goto LABEL_20; } if ( v9 ) { S2 = &S1[a3]; if ( N == 1 ) S1[a5] = *S2; else wmemmove(&S1[a5], S2, N); } if ( a5 ) { if ( a5 != 1 ) { wmemcpy(S1, a4, a5); goto LABEL_12; } goto LABEL_26; } LABEL_12: v11 = *(const wchar_t **)this; *(_DWORD *)(this + 4) = v7; v11[v7] = 0; return this; } //----- (004BA100) -------------------------------------------------------- int __cdecl std::wstring::_S_compare(int a1, int a2) { return a1 - a2; } //----- (004BA110) -------------------------------------------------------- int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2) { int result; // eax result = a2; this[2] = a2; return result; } //----- (004BA120) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004BA130) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004BA140) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004BA150) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004BA160) -------------------------------------------------------- wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, size_t a2, wchar_t a3) { size_t N; // edx wchar_t C; // si wchar_t *result; // eax N = a2; C = a3; if ( a2 > 7 ) { result = (wchar_t *)std::wstring::_M_create(&a2, 0); *this = result; N = a2; this[2] = (wchar_t *)a2; } else { result = *this; } if ( N ) { if ( N == 1 ) { *result = C; } else { wmemset(result, C, N); N = a2; result = *this; } } this[1] = (wchar_t *)N; result[N] = 0; return result; } //----- (004BA1E0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( wchar_t **this, wchar_t *S2, int a3, int a4) { unsigned int N; // ebx wchar_t *result; // eax int v7; // edx unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF N = (a3 - (int)S2) >> 1; v8[0] = N; if ( N > 7 ) { result = (wchar_t *)std::wstring::_M_create(v8, 0); *this = result; this[2] = (wchar_t *)v8[0]; goto LABEL_8; } result = *this; v7 = (a3 - (int)S2) >> 1; if ( N != 1 ) { if ( !N ) goto LABEL_4; LABEL_8: wmemcpy(result, S2, N); v7 = v8[0]; result = *this; goto LABEL_4; } *result = *S2; LABEL_4: this[1] = (wchar_t *)v7; result[v7] = 0; return result; } // 4BA1E0: using guessed type unsigned int var_10[4]; //----- (004BA270) -------------------------------------------------------- wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( wchar_t **this, wchar_t *S2, int a3, int a4) { unsigned int N; // ebx wchar_t *result; // eax int v7; // edx unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF N = (a3 - (int)S2) >> 1; v8[0] = N; if ( N > 7 ) { result = (wchar_t *)std::wstring::_M_create(v8, 0); *this = result; this[2] = (wchar_t *)v8[0]; goto LABEL_8; } result = *this; v7 = (a3 - (int)S2) >> 1; if ( N != 1 ) { if ( !N ) goto LABEL_4; LABEL_8: wmemcpy(result, S2, N); v7 = v8[0]; result = *this; goto LABEL_4; } *result = *S2; LABEL_4: this[1] = (wchar_t *)v7; result[v7] = 0; return result; } // 4BA270: using guessed type unsigned int var_10[4]; //----- (004BA300) -------------------------------------------------------- wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4) { unsigned int N; // ebx unsigned int v6; // edx wchar_t *result; // eax wchar_t *v8; // [esp+1Ch] [ebp-10h] BYREF if ( a3 && !S2 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); N = (a3 - (int)S2) >> 1; v8 = (wchar_t *)N; v6 = N; if ( N > 7 ) { result = (wchar_t *)std::wstring::_M_create((unsigned int *)&v8, 0); *this = result; this[2] = v8; goto LABEL_10; } result = *this; if ( N != 1 ) { if ( !N ) goto LABEL_6; LABEL_10: wmemcpy(result, S2, N); v6 = (unsigned int)v8; result = *this; goto LABEL_6; } *result = *S2; LABEL_6: this[1] = (wchar_t *)v6; result[v6] = 0; return result; } //----- (004BA3B0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4) { unsigned int N; // ebx unsigned int v6; // edx wchar_t *result; // eax wchar_t *v8; // [esp+1Ch] [ebp-10h] BYREF if ( a3 && !S2 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); N = (a3 - (int)S2) >> 1; v8 = (wchar_t *)N; v6 = N; if ( N > 7 ) { result = (wchar_t *)std::wstring::_M_create((unsigned int *)&v8, 0); *this = result; this[2] = v8; goto LABEL_10; } result = *this; if ( N != 1 ) { if ( !N ) goto LABEL_6; LABEL_10: wmemcpy(result, S2, N); v6 = (unsigned int)v8; result = *this; goto LABEL_6; } *result = *S2; LABEL_6: this[1] = (wchar_t *)v6; result[v6] = 0; return result; } //----- (004BA460) -------------------------------------------------------- int __fastcall std::wstring::_M_local_data(int a1) { return a1 + 8; } //----- (004BA470) -------------------------------------------------------- int __thiscall std::wstring::_M_set_length(int *this, int a2) { int result; // eax int v3; // edx result = a2; v3 = *this; this[1] = a2; *(_WORD *)(v3 + 2 * a2) = 0; return result; } //----- (004BA490) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) { int result; // eax result = (int)(N - (_DWORD)a2) >> 1; if ( result == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); } return result; } //----- (004BA4D0) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) { int result; // eax result = (int)(N - (_DWORD)a2) >> 1; if ( result == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); } return result; } //----- (004BA510) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) { int result; // eax result = (int)(N - (_DWORD)a2) >> 1; if ( result == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); } return result; } //----- (004BA550) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) { int result; // eax result = (int)(N - (_DWORD)a2) >> 1; if ( result == 1 ) { result = *a2; *a1 = result; } else if ( result ) { return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); } return result; } //----- (004BA590) -------------------------------------------------------- void __fastcall std::wstring::shrink_to_fit(_DWORD *a1) { unsigned int v1; // eax if ( (_DWORD *)*a1 == a1 + 2 ) v1 = 7; else v1 = a1[2]; if ( a1[1] < v1 ) std::wstring::reserve((int)a1, 0); } // 4BA590: could not find valid save-restore pair for ebp //----- (004BA5E0) -------------------------------------------------------- int __thiscall std::wstring::_M_replace_aux(int this, size_t a2, int a3, size_t a4, wchar_t a5) { int v6; // eax const wchar_t *v7; // ecx unsigned int v8; // esi unsigned int v9; // ebp size_t N; // eax const wchar_t *v11; // ebp const wchar_t *S2; // edx wchar_t *S1; // ebp v6 = *(_DWORD *)(this + 4); if ( a4 > a3 + 0x1FFFFFFF - v6 ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); v7 = *(const wchar_t **)this; v8 = v6 + a4 - a3; if ( *(_DWORD *)this == this + 8 ) v9 = 7; else v9 = *(_DWORD *)(this + 8); if ( v9 < v8 ) { std::wstring::_M_mutate((const wchar_t **)this, a2, a3, 0, a4); v7 = *(const wchar_t **)this; if ( !a4 ) goto LABEL_12; } else { N = v6 - (a3 + a2); if ( !N || a3 == a4 ) { LABEL_9: if ( !a4 ) goto LABEL_12; goto LABEL_10; } v11 = &v7[a2]; S2 = &v11[a3]; S1 = (wchar_t *)&v11[a4]; if ( N != 1 ) { wmemmove(S1, S2, N); v7 = *(const wchar_t **)this; goto LABEL_9; } *S1 = *S2; if ( !a4 ) goto LABEL_12; } LABEL_10: if ( a4 == 1 ) { v7[a2] = a5; } else { wmemset((wchar_t *)&v7[a2], a5, a4); v7 = *(const wchar_t **)this; } LABEL_12: *(_DWORD *)(this + 4) = v8; v7[v8] = 0; return this; } //----- (004BA710) -------------------------------------------------------- int __fastcall std::wstring::_M_get_allocator(int a1) { return a1; } //----- (004BA720) -------------------------------------------------------- wchar_t *__thiscall std::wstring::_M_construct_aux_2(wchar_t **this, size_t a2, wchar_t a3) { return std::wstring::_M_construct(this, a2, a3); } //----- (004BA730) -------------------------------------------------------- int __thiscall std::wstring::at(_DWORD *this, unsigned int a2) { if ( a2 >= this[1] ) std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); return *this + 2 * a2; } //----- (004BA760) -------------------------------------------------------- int __fastcall std::wstring::end(_DWORD *a1) { return *a1 + 2 * a1[1]; } //----- (004BA770) -------------------------------------------------------- int __fastcall std::wstring::back(_DWORD *a1) { return *a1 + 2 * a1[1] - 2; } //----- (004BA780) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (004BA790) -------------------------------------------------------- void __thiscall std::wstring::swap(wchar_t **this, int a2) { wchar_t *v2; // eax wchar_t *S2; // ebp wchar_t *v5; // edi wchar_t *v6; // ecx wchar_t *v7; // edx wchar_t *v8; // eax wchar_t *v9; // edx wchar_t *v10; // eax wchar_t *v11; // eax wchar_t *v12; // [esp+1Ch] [ebp-30h] wchar_t *v13; // [esp+1Ch] [ebp-30h] wchar_t S1[22]; // [esp+20h] [ebp-2Ch] BYREF if ( this != (wchar_t **)a2 ) { v2 = *this; S2 = (wchar_t *)(this + 2); v5 = (wchar_t *)(a2 + 8); v6 = *(wchar_t **)a2; if ( S2 == v2 ) { if ( v5 == v6 ) { v8 = *(wchar_t **)(a2 + 4); if ( this[1] ) { if ( !v8 ) { wmemcpy((wchar_t *)(a2 + 8), S2, 8u); *(_DWORD *)(a2 + 4) = this[1]; v10 = *this; this[1] = 0; *v10 = 0; return; } wmemcpy(S1, (const wchar_t *)(a2 + 8), 8u); wmemcpy((wchar_t *)(a2 + 8), S2, 8u); wmemcpy(S2, S1, 8u); v8 = *(wchar_t **)(a2 + 4); v9 = this[1]; } else { if ( v8 ) { wmemcpy(S2, (const wchar_t *)(a2 + 8), 8u); this[1] = *(wchar_t **)(a2 + 4); v11 = *(wchar_t **)a2; *(_DWORD *)(a2 + 4) = 0; *v11 = 0; return; } v9 = 0; } } else { v12 = *(wchar_t **)(a2 + 8); wmemcpy((wchar_t *)(a2 + 8), S2, 8u); *this = *(wchar_t **)a2; v8 = *(wchar_t **)(a2 + 4); *(_DWORD *)a2 = v5; this[2] = v12; v9 = this[1]; } } else { v7 = this[2]; if ( v5 == v6 ) { v13 = this[2]; wmemcpy(S2, (const wchar_t *)(a2 + 8), 8u); v7 = v13; *(_DWORD *)a2 = *this; *this = S2; } else { *this = v6; *(_DWORD *)a2 = v2; this[2] = *(wchar_t **)(a2 + 8); } *(_DWORD *)(a2 + 8) = v7; v8 = *(wchar_t **)(a2 + 4); v9 = this[1]; } this[1] = v8; *(_DWORD *)(a2 + 4) = v9; } } //----- (004BA910) -------------------------------------------------------- int __fastcall std::wstring::begin(int a1) { return *(_DWORD *)a1; } //----- (004BA920) -------------------------------------------------------- _WORD *__fastcall std::wstring::clear(int a1) { _WORD *result; // eax result = *(_WORD **)a1; *(_DWORD *)(a1 + 4) = 0; *result = 0; return result; } //----- (004BA930) -------------------------------------------------------- int __thiscall std::wstring::erase(int *this, int a2) { int v3; // ebx v3 = a2 - *this; std::wstring::_M_erase(this, v3 >> 1, 1); return v3 + *this; } //----- (004BA960) -------------------------------------------------------- _WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) { _WORD *result; // eax int v5; // esi int v6; // edi int v7; // ecx result = a2; v5 = (int)a2 - *this; v6 = *this + 2 * this[1]; v7 = v5 >> 1; if ( a3 == v6 ) { this[1] = v7; *a2 = 0; } else { std::wstring::_M_erase(this, v7, (a3 - (int)a2) >> 1); return (_WORD *)(v5 + *this); } return result; } //----- (004BA9D0) -------------------------------------------------------- int __thiscall std::wstring::erase(int *this, int a2) { int v3; // ebx v3 = a2 - *this; std::wstring::_M_erase(this, v3 >> 1, 1); return v3 + *this; } //----- (004BAA00) -------------------------------------------------------- _WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) { _WORD *result; // eax int v5; // esi int v6; // edi int v7; // ecx result = a2; v5 = (int)a2 - *this; v6 = *this + 2 * this[1]; v7 = v5 >> 1; if ( a3 == v6 ) { this[1] = v7; *a2 = 0; } else { std::wstring::_M_erase(this, v7, (a3 - (int)a2) >> 1); return (_WORD *)(v5 + *this); } return result; } //----- (004BAA70) -------------------------------------------------------- int *__thiscall std::wstring::erase(int *this, unsigned int a2, unsigned int a3) { int *result; // eax unsigned int v4; // ebx unsigned int v5; // ebx int v6; // ecx result = this; v4 = this[1]; if ( a2 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", a2, v4); if ( a3 == -1 ) { v6 = *this; result[1] = a2; *(_WORD *)(v6 + 2 * a2) = 0; } else if ( a3 ) { v5 = v4 - a2; if ( v5 > a3 ) v5 = a3; std::wstring::_M_erase(this, a2, v5); return this; } return result; } //----- (004BAB00) -------------------------------------------------------- int __fastcall std::wstring::front(int a1) { return *(_DWORD *)a1; } //----- (004BAB10) -------------------------------------------------------- int __thiscall std::wstring::append(_DWORD *this, wchar_t *String) { unsigned int v3; // eax v3 = wcslen(String); if ( v3 > 0x1FFFFFFF - this[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::wstring::_M_append((int)this, String, v3); } //----- (004BAB60) -------------------------------------------------------- int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3) { if ( a3 > 0x1FFFFFFF - this[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::wstring::_M_append((int)this, a2, a3); } //----- (004BAB90) -------------------------------------------------------- int __thiscall std::wstring::append(void *this, int a2) { return std::wstring::_M_append((int)this, *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); } //----- (004BABC0) -------------------------------------------------------- int __thiscall std::wstring::append(void *this, _DWORD *a2, unsigned int a3, size_t a4) { size_t v4; // edx v4 = a2[1] - a3; if ( v4 > a4 ) v4 = a4; if ( a3 > a2[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::append", a3, a2[1]); return std::wstring::_M_append((int)this, (wchar_t *)(*a2 + 2 * a3), v4); } //----- (004BAC20) -------------------------------------------------------- int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3) { if ( a3 > 0x1FFFFFFF - this[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::wstring::_M_append((int)this, a2, a3); } //----- (004BAC50) -------------------------------------------------------- int __thiscall std::wstring::append(size_t *this, size_t a2, __int16 a3) { return std::wstring::_M_replace_aux((int)this, this[1], 0, a2, a3); } //----- (004BAC80) -------------------------------------------------------- wchar_t **__thiscall std::wstring::assign(wchar_t **this, int a2) { wchar_t *S1; // eax wchar_t *v4; // edi wchar_t *v5; // ecx wchar_t *v6; // edx wchar_t *v7; // ebp wchar_t *v9; // [esp+1Ch] [ebp-20h] S1 = *this; v4 = *(wchar_t **)a2; v5 = (wchar_t *)(a2 + 8); v6 = *(wchar_t **)(a2 + 4); if ( *(_DWORD *)a2 != a2 + 8 ) { v9 = *(wchar_t **)(a2 + 8); if ( S1 == (wchar_t *)(this + 2) ) { *this = v4; this[1] = v6; this[2] = v9; } else { *this = v4; v7 = this[2]; this[1] = v6; this[2] = v9; if ( S1 ) { *(_DWORD *)a2 = S1; *(_DWORD *)(a2 + 8) = v7; goto LABEL_5; } } *(_DWORD *)a2 = v5; S1 = (wchar_t *)(a2 + 8); goto LABEL_5; } if ( v6 ) { if ( v6 == (wchar_t *)1 ) { *S1 = *(_WORD *)(a2 + 8); } else { wmemcpy(S1, (const wchar_t *)(a2 + 8), *(_DWORD *)(a2 + 4)); v6 = *(wchar_t **)(a2 + 4); S1 = *this; v5 = *(wchar_t **)a2; } } this[1] = v6; S1[(_DWORD)v6] = 0; S1 = v5; LABEL_5: *(_DWORD *)(a2 + 4) = 0; *S1 = 0; return this; } //----- (004BAD40) -------------------------------------------------------- int __thiscall std::wstring::assign(size_t *this, wchar_t *String) { size_t v3; // eax v3 = wcslen(String); return std::wstring::_M_replace((int)this, 0, this[1], String, v3); } //----- (004BAD80) -------------------------------------------------------- int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3) { return std::wstring::_M_replace((int)this, 0, this[1], a2, a3); } //----- (004BADB0) -------------------------------------------------------- void *__thiscall std::wstring::assign(void *this, int a2) { std::wstring::_M_assign((int)this, a2); return this; } //----- (004BADD0) -------------------------------------------------------- int __thiscall std::wstring::assign(size_t *this, _DWORD *a2, unsigned int a3, size_t a4) { size_t v4; // edx v4 = a2[1] - a3; if ( v4 > a4 ) v4 = a4; if ( a3 > a2[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::assign", a3, a2[1]); return std::wstring::_M_replace((int)this, 0, this[1], (wchar_t *)(*a2 + 2 * a3), v4); } //----- (004BAE40) -------------------------------------------------------- int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3) { return std::wstring::_M_replace((int)this, 0, this[1], a2, a3); } //----- (004BAE70) -------------------------------------------------------- int __thiscall std::wstring::assign(int *this, size_t a2, __int16 a3) { return std::wstring::_M_replace_aux((int)this, 0, this[1], a2, a3); } //----- (004BAEA0) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, int a4) { int v5; // esi unsigned int v6; // ecx v5 = a2 - *this; v6 = this[1]; if ( v5 >> 1 > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5 >> 1, v6); std::wstring::_M_replace((int)this, v5 >> 1, 0, a3, (2 * a4) >> 1); return v5 + *this; } //----- (004BAF10) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4) { int v5; // ebx v5 = a2 - *this; std::wstring::_M_replace_aux((int)this, v5 >> 1, 0, a3, a4); return v5 + *this; } //----- (004BAF60) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3) { int v4; // ebx v4 = a2 - *this; std::wstring::_M_replace_aux((int)this, v4 >> 1, 0, 1u, a3); return v4 + *this; } //----- (004BAFB0) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, size_t a4) { unsigned int v4; // eax v4 = (a2 - *this) >> 1; if ( v4 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v4, this[1]); return std::wstring::_M_replace((int)this, v4, 0, a3, a4); } //----- (004BB010) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4) { return std::wstring::_M_replace_aux((int)this, (a2 - *this) >> 1, 0, a3, a4); } //----- (004BB050) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3) { int v4; // ebx v4 = a2 - *this; std::wstring::_M_replace_aux((int)this, v4 >> 1, 0, 1u, a3); return v4 + *this; } //----- (004BB0A0) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *String) { size_t v4; // eax v4 = wcslen(String); if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::wstring::_M_replace((int)this, a2, 0, String, v4); } //----- (004BB110) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *a3, size_t a4) { if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::wstring::_M_replace((int)this, a2, 0, a3, a4); } //----- (004BB170) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, int a3) { if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::wstring::_M_replace((int)this, a2, 0, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); } //----- (004BB1D0) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, _DWORD *a3, unsigned int a4, size_t a5) { size_t v5; // edi v5 = a3[1] - a4; if ( v5 > a5 ) v5 = a5; if ( a4 > a3[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", a4, a3[1]); if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::wstring::_M_replace((int)this, a2, 0, (wchar_t *)(*a3 + 2 * a4), v5); } //----- (004BB260) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, size_t a3, __int16 a4) { if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", a2, this[1]); return std::wstring::_M_replace_aux((int)this, a2, 0, a3, a4); } //----- (004BB2C0) -------------------------------------------------------- int __thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>( _DWORD *this, int a2, wchar_t *a3, int a4) { unsigned int v4; // eax v4 = (a2 - *this) >> 1; if ( v4 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v4, this[1]); return std::wstring::_M_replace((int)this, v4, 0, a3, (a4 - (int)a3) >> 1); } //----- (004BB330) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * a2[1]; return result; } //----- (004BB350) -------------------------------------------------------- int __thiscall std::wstring::resize(int *this, unsigned int a2) { return std::wstring::resize(this, a2, 0); } //----- (004BB370) -------------------------------------------------------- int __thiscall std::wstring::resize(int *this, unsigned int a2, wchar_t a3) { size_t v3; // edx int result; // eax int v5; // edx v3 = this[1]; result = a2; if ( v3 < a2 ) return std::wstring::_M_replace_aux((int)this, v3, 0, a2 - v3, a3); if ( v3 > a2 ) { v5 = *this; this[1] = a2; *(_WORD *)(v5 + 2 * a2) = 0; } return result; } //----- (004BB3D0) -------------------------------------------------------- int __thiscall std::wstring::_M_data(_DWORD *this, int a2) { int result; // eax result = a2; *this = a2; return result; } //----- (004BB3E0) -------------------------------------------------------- size_t __cdecl std::wstring::_S_copy(wchar_t *S1, const wchar_t *S2, size_t N) { size_t result; // eax result = N; if ( N == 1 ) { result = *S2; *S1 = result; } else if ( N ) { return (size_t)wmemcpy(S1, S2, N); } return result; } //----- (004BB410) -------------------------------------------------------- size_t __cdecl std::wstring::_S_move(wchar_t *S1, const wchar_t *S2, size_t N) { size_t result; // eax result = N; if ( N == 1 ) { result = *S2; *S1 = result; } else if ( N ) { return (size_t)wmemmove(S1, S2, N); } return result; } //----- (004BB440) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); } //----- (004BB4B0) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); } //----- (004BB520) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4) { unsigned int v4; // edx unsigned int v5; // eax v4 = (a2 - *this) >> 1; v5 = (a3 - a2) >> 1; if ( v5 > this[1] - v4 ) v5 = this[1] - v4; if ( v4 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v4, this[1]); return std::wstring::_M_replace((int)this, v4, v5, *(wchar_t **)a4, *(_DWORD *)(a4 + 4)); } //----- (004BB5A0) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String) { size_t v5; // eax unsigned int v6; // ebx unsigned int v7; // edx v5 = wcslen(String); v6 = (a2 - *this) >> 1; v7 = (a3 - a2) >> 1; if ( v7 > this[1] - v6 ) v7 = this[1] - v6; if ( v6 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, this[1]); return std::wstring::_M_replace((int)this, v6, v7, String, v5); } //----- (004BB620) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); } //----- (004BB690) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, a5); } //----- (004BB700) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); } //----- (004BB770) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, a5); } //----- (004BB7E0) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5) { return std::wstring::_M_replace_aux((int)this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); } //----- (004BB810) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); } //----- (004BB880) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String) { size_t v5; // eax unsigned int v6; // ebx unsigned int v7; // edx v5 = wcslen(String); v6 = (a2 - *this) >> 1; v7 = (a3 - a2) >> 1; if ( v7 > this[1] - v6 ) v7 = this[1] - v6; if ( v6 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v6, this[1]); return std::wstring::_M_replace((int)this, v6, v7, String, v5); } //----- (004BB900) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); } //----- (004BB970) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, a5); } //----- (004BB9E0) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4) { unsigned int v4; // edx unsigned int v5; // eax v4 = (a2 - *this) >> 1; v5 = (a3 - a2) >> 1; if ( v5 > this[1] - v4 ) v5 = this[1] - v4; if ( v4 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v4, this[1]); return std::wstring::_M_replace((int)this, v4, v5, *(wchar_t **)a4, *(_DWORD *)(a4 + 4)); } //----- (004BBA60) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); } //----- (004BBAD0) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (a2 - *this) >> 1; v6 = (a3 - a2) >> 1; if ( v6 > this[1] - v5 ) v6 = this[1] - v5; if ( v5 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v5, this[1]); return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); } //----- (004BBB40) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5) { return std::wstring::_M_replace_aux((int)this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); } //----- (004BBB70) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) { size_t v5; // eax size_t v6; // edx v5 = wcslen(String); v6 = this[1] - a2; if ( v6 > a3 ) v6 = a3; if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::wstring::_M_replace((int)this, a2, v6, String, v5); } //----- (004BBBE0) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *a4, size_t a5) { size_t v5; // edx v5 = this[1] - a2; if ( v5 > a3 ) v5 = a3; if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::wstring::_M_replace((int)this, a2, v5, a4, a5); } //----- (004BBC40) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, int a4) { size_t v4; // eax v4 = this[1] - a2; if ( v4 > a3 ) v4 = a3; if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::wstring::_M_replace((int)this, a2, v4, *(wchar_t **)a4, *(_DWORD *)(a4 + 4)); } //----- (004BBCB0) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) { size_t v6; // ebx size_t v7; // eax v6 = a4[1] - a5; if ( v6 > a6 ) v6 = a6; if ( a5 > a4[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a5, a4[1]); v7 = this[1] - a2; if ( v7 > a3 ) v7 = a3; if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::wstring::_M_replace((int)this, a2, v7, (wchar_t *)(*a4 + 2 * a5), v6); } //----- (004BBD50) -------------------------------------------------------- int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, wchar_t a5) { unsigned int v5; // edx v5 = this[1] - a2; if ( v5 > a3 ) v5 = a3; if ( a2 > this[1] ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, this[1]); return std::wstring::_M_replace_aux((int)this, a2, v5, a4, a5); } //----- (004BBDC0) -------------------------------------------------------- void __thiscall std::wstring::reserve(int this, unsigned int a2) { unsigned int v3; // ecx unsigned int v4; // eax wchar_t *v5; // edi wchar_t *v6; // esi unsigned int v7; // edx wchar_t *v8; // eax int v9; // edx wchar_t *S1; // edi wchar_t *S2; // eax unsigned int v12; // eax v3 = *(_DWORD *)(this + 4); v4 = a2; if ( a2 < v3 ) { a2 = v3; v4 = v3; } v5 = *(wchar_t **)this; v6 = (wchar_t *)(this + 8); if ( this + 8 == *(_DWORD *)this ) v7 = 7; else v7 = *(_DWORD *)(this + 8); if ( v7 != v4 ) { if ( v7 > 7 ) { if ( v4 > 7 ) goto LABEL_8; } else if ( v4 > v7 ) { LABEL_8: v8 = (wchar_t *)std::wstring::_M_create(&a2, v7); v9 = *(_DWORD *)(this + 4); S1 = v8; S2 = *(wchar_t **)this; if ( v9 ) { if ( v9 != -1 ) { wmemcpy(S1, S2, v9 + 1); S2 = *(wchar_t **)this; } } else { *S1 = *S2; } if ( v6 != S2 ) operator delete(S2); v12 = a2; *(_DWORD *)this = S1; *(_DWORD *)(this + 8) = v12; return; } if ( v6 != v5 ) { if ( v3 ) { if ( v3 != -1 ) { wmemcpy((wchar_t *)(this + 8), *(const wchar_t **)this, v3 + 1); v5 = *(wchar_t **)this; } } else { *(_WORD *)(this + 8) = *v5; } operator delete(v5); *(_DWORD *)this = v6; } } } //----- (004BBEE0) -------------------------------------------------------- int __thiscall std::wstring::_M_erase(int *this, int a2, int a3) { int v4; // eax int v5; // ecx wchar_t *S1; // edi int result; // eax v4 = this[1]; v5 = *this; if ( v4 != a2 + a3 && a3 ) { S1 = (wchar_t *)(v5 + 2 * a2); if ( v4 - (a2 + a3) == 1 ) { *S1 = *(_WORD *)(v5 + 2 * (a2 + a3)); } else { wmemmove(S1, (const wchar_t *)(v5 + 2 * (a2 + a3)), v4 - (a2 + a3)); v5 = *this; v4 = this[1]; } } result = v4 - a3; this[1] = result; *(_WORD *)(v5 + 2 * result) = 0; return result; } //----- (004BBF50) -------------------------------------------------------- int __fastcall std::wstring::pop_back(int *a1) { return std::wstring::_M_erase(a1, a1[1] - 1, 1); } //----- (004BBF70) -------------------------------------------------------- int __thiscall std::wstring::_M_append(int this, wchar_t *S2, size_t N) { int v4; // edi size_t v5; // ecx const wchar_t *v6; // eax unsigned int v7; // esi unsigned int v8; // edi wchar_t *S1; // ecx v4 = this + 8; v5 = *(_DWORD *)(this + 4); v6 = *(const wchar_t **)this; v7 = v5 + N; if ( *(_DWORD *)this == v4 ) v8 = 7; else v8 = *(_DWORD *)(this + 8); if ( v7 > v8 ) { std::wstring::_M_mutate((const wchar_t **)this, v5, 0, S2, N); v6 = *(const wchar_t **)this; } else if ( N ) { S1 = (wchar_t *)&v6[v5]; if ( N == 1 ) { *S1 = *S2; } else { wmemcpy(S1, S2, N); v6 = *(const wchar_t **)this; } } *(_DWORD *)(this + 4) = v7; v6[v7] = 0; return this; } //----- (004BC010) -------------------------------------------------------- void __thiscall std::wstring::_M_assign(int this, int a2) { wchar_t *S1; // esi size_t N; // edi unsigned int v5; // eax const wchar_t *S2; // eax unsigned int v7; // eax int v8; // [esp+1Ch] [ebp-30h] unsigned int v9[8]; // [esp+2Ch] [ebp-20h] BYREF if ( this != a2 ) { S1 = *(wchar_t **)this; N = *(_DWORD *)(a2 + 4); if ( this + 8 == *(_DWORD *)this ) v5 = 7; else v5 = *(_DWORD *)(this + 8); if ( v5 < N ) { v8 = this + 8; v9[0] = *(_DWORD *)(a2 + 4); S1 = (wchar_t *)std::wstring::_M_create(v9, v5); if ( v8 != *(_DWORD *)this ) operator delete(*(void **)this); v7 = v9[0]; *(_DWORD *)this = S1; *(_DWORD *)(this + 8) = v7; if ( !N ) goto LABEL_8; } else if ( !N ) { LABEL_8: *(_DWORD *)(this + 4) = N; S1[N] = 0; return; } S2 = *(const wchar_t **)a2; if ( N == 1 ) { *S1 = *S2; } else { wmemcpy(S1, S2, N); S1 = *(wchar_t **)this; } goto LABEL_8; } } // 4BC010: using guessed type unsigned int var_20[8]; //----- (004BC0D0) -------------------------------------------------------- void *__stdcall std::wstring::_M_create(unsigned int *a1, unsigned int a2) { unsigned int v2; // eax unsigned int v3; // edx void (__cdecl *v5)(void *); // [esp+4h] [ebp-18h] v2 = *a1; if ( *a1 > 0x1FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); if ( v2 > a2 ) { v3 = 2 * a2; if ( v2 < 2 * a2 ) { if ( v3 > 0x1FFFFFFF ) { *a1 = 0x1FFFFFFF; return operator new((struct type_info *)0x40000000, v5); } *a1 = v3; v2 = 2 * a2; } } return operator new((struct type_info *)(2 * (v2 + 1)), v5); } // 4BC106: variable 'v5' is possibly undefined //----- (004BC140) -------------------------------------------------------- int __thiscall std::wstring::_M_length(_DWORD *this, int a2) { int result; // eax result = a2; this[1] = a2; return result; } //----- (004BC150) -------------------------------------------------------- const wchar_t *__thiscall std::wstring::_M_mutate(const wchar_t **this, size_t N, int a3, wchar_t *a4, size_t a5) { const wchar_t *v6; // edx unsigned int v7; // eax wchar_t *S1; // esi const wchar_t *S2; // eax wchar_t *v10; // eax const wchar_t *v11; // ebp wchar_t *v12; // ebx const wchar_t *result; // eax size_t v14; // [esp+18h] [ebp-34h] wchar_t *v15; // [esp+1Ch] [ebp-30h] unsigned int v16[8]; // [esp+2Ch] [ebp-20h] BYREF v6 = this[1]; v16[0] = (unsigned int)v6 + a5 - a3; v14 = (size_t)v6 - N - a3; v15 = (wchar_t *)(this + 2); if ( this + 2 == (const wchar_t **)*this ) v7 = 7; else v7 = (unsigned int)this[2]; S1 = (wchar_t *)std::wstring::_M_create(v16, v7); if ( N ) { S2 = *this; if ( N == 1 ) *S1 = *S2; else wmemcpy(S1, S2, N); } if ( a4 && a5 ) { if ( a5 == 1 ) S1[N] = *a4; else wmemcpy(&S1[N], a4, a5); } v10 = (wchar_t *)*this; if ( v14 ) { v11 = &v10[N + a3]; v12 = &S1[a5 + N]; if ( v14 == 1 ) { *v12 = *v11; } else { wmemcpy(v12, v11, v14); v10 = (wchar_t *)*this; } } if ( v15 != v10 ) operator delete(v10); result = (const wchar_t *)v16[0]; *this = S1; this[2] = result; return result; } // 4BC150: using guessed type unsigned int var_20[8]; //----- (004BC290) -------------------------------------------------------- wchar_t *__cdecl std::wstring::_S_assign(wchar_t *a1, size_t C, size_t N) { wchar_t *result; // eax result = (wchar_t *)C; if ( C == 1 ) { *a1 = N; } else if ( C ) { return wmemset(a1, N, C); } return result; } // 4BC290: using guessed type size_t C; //----- (004BC2D0) -------------------------------------------------------- const wchar_t *__thiscall std::wstring::push_back(int this, wchar_t a2) { size_t v3; // esi const wchar_t *result; // eax unsigned int v5; // edi unsigned int v6; // edx v3 = *(_DWORD *)(this + 4); result = *(const wchar_t **)this; v5 = v3 + 1; if ( *(_DWORD *)this == this + 8 ) v6 = 7; else v6 = *(_DWORD *)(this + 8); if ( v5 > v6 ) { std::wstring::_M_mutate((const wchar_t **)this, v3, 0, 0, 1u); result = *(const wchar_t **)this; } result[v3] = a2; *(_DWORD *)(this + 4) = v5; result[v3 + 1] = 0; return result; } //----- (004BC350) -------------------------------------------------------- int __thiscall std::wstring::basic_string(wchar_t *this, int a2) { int v3; // eax int result; // eax *(_DWORD *)this = this + 4; if ( a2 + 8 == *(_DWORD *)a2 ) { wmemcpy(this + 4, (const wchar_t *)(a2 + 8), 8u); } else { *(_DWORD *)this = *(_DWORD *)a2; *((_DWORD *)this + 2) = *(_DWORD *)(a2 + 8); } v3 = *(_DWORD *)(a2 + 4); *(_DWORD *)a2 = a2 + 8; *(_DWORD *)(a2 + 4) = 0; *((_DWORD *)this + 1) = v3; result = 0; *(_WORD *)(a2 + 8) = 0; return result; } //----- (004BC3B0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3) { wchar_t *S1; // ecx int v5; // edx _WORD *result; // eax int v7; // edx int v8; // eax S1 = this + 4; *(_DWORD *)this = S1; if ( a2 + 8 == *(_DWORD *)a2 ) { wmemcpy(S1, (const wchar_t *)(a2 + 8), 8u); v8 = *(_DWORD *)(a2 + 4); *(_DWORD *)(a2 + 4) = 0; *((_DWORD *)this + 1) = v8; result = *(_WORD **)a2; **(_WORD **)a2 = 0; } else { *(_DWORD *)this = *(_DWORD *)a2; v5 = *(_DWORD *)(a2 + 4); *(_DWORD *)a2 = a2 + 8; result = 0; *((_DWORD *)this + 1) = v5; v7 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = 0; *(_WORD *)(a2 + 8) = 0; *((_DWORD *)this + 2) = v7; } return result; } //----- (004BC420) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3) { int v3; // eax size_t v4; // eax int v6; // [esp+8h] [ebp-24h] wchar_t **v7; // [esp+1Ch] [ebp-10h] *this = (wchar_t *)(this + 2); v3 = -2; if ( String ) { v7 = this; v4 = wcslen(String); this = v7; v3 = (int)&String[v4]; } LOBYTE(v6) = 0; return std::wstring::_M_construct(this, String, v3, v6); } // 4BC455: variable 'v6' is possibly undefined //----- (004BC470) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = (wchar_t *)(this + 2); return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (004BC490) -------------------------------------------------------- int __thiscall std::wstring::basic_string(_DWORD *this, int a2) { int result; // eax this[1] = 0; *this = this + 2; result = 0; *((_WORD *)this + 4) = 0; return result; } //----- (004BC4B0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2) { int v3; // [esp+8h] [ebp-14h] *this = (wchar_t *)(this + 2); LOBYTE(v3) = 0; return std::wstring::_M_construct(this, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); } // 4BC4D0: variable 'v3' is possibly undefined //----- (004BC4E0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3) { int v4; // [esp+8h] [ebp-14h] *this = (wchar_t *)(this + 2); LOBYTE(v4) = 0; return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( this, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v4); } // 4BC500: variable 'v4' is possibly undefined //----- (004BC510) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) { unsigned int v4; // eax *this = (wchar_t *)(this + 2); v4 = *((_DWORD *)a2 + 1); if ( a3 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *((_DWORD *)a2 + 1)); LOBYTE(a4) = 0; return std::wstring::_M_construct( this, (wchar_t *)(*(_DWORD *)a2 + 2 * a3), *(_DWORD *)a2 + 2 * a3 + 2 * (v4 - a3), a4); } //----- (004BC570) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) { unsigned int v4; // esi unsigned int v5; // eax unsigned int v6; // eax *this = (wchar_t *)(this + 2); v4 = a4; v5 = *((_DWORD *)a2 + 1); if ( a3 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *((_DWORD *)a2 + 1)); v6 = v5 - a3; LOBYTE(a4) = 0; if ( v6 > v4 ) v6 = v4; return std::wstring::_M_construct( this, (wchar_t *)(*(_DWORD *)a2 + 2 * a3), *(_DWORD *)a2 + 2 * a3 + 2 * v6, a4); } //----- (004BC5E0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) { unsigned int v5; // eax unsigned int v6; // eax int v8; // [esp+8h] [ebp-14h] *this = (wchar_t *)(this + 2); v5 = a2[1]; if ( a3 > v5 ) std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); v6 = v5 - a3; LOBYTE(v8) = 0; if ( v6 > a4 ) v6 = a4; return std::wstring::_M_construct(this, (wchar_t *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); } // 4BC617: variable 'v8' is possibly undefined //----- (004BC650) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = (wchar_t *)(this + 2); return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (004BC670) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4) { *this = (wchar_t *)(this + 2); return std::wstring::_M_construct(this, a2, a3); } //----- (004BC6A0) -------------------------------------------------------- int __fastcall std::wstring::basic_string(int a1) { int result; // eax *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; result = 0; *(_WORD *)(a1 + 8) = 0; return result; } //----- (004BC6C0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( wchar_t **this, wchar_t *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = (wchar_t *)(this + 2); return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); } //----- (004BC6D0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = (wchar_t *)(this + 2); return std::wstring::_M_construct(this, a2, a3, a4); } //----- (004BC6E0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = (wchar_t *)(this + 2); return std::wstring::_M_construct(this, a2, a3, a4); } //----- (004BC6F0) -------------------------------------------------------- int __thiscall std::wstring::basic_string(wchar_t *this, int a2) { int v3; // eax int result; // eax *(_DWORD *)this = this + 4; if ( a2 + 8 == *(_DWORD *)a2 ) { wmemcpy(this + 4, (const wchar_t *)(a2 + 8), 8u); } else { *(_DWORD *)this = *(_DWORD *)a2; *((_DWORD *)this + 2) = *(_DWORD *)(a2 + 8); } v3 = *(_DWORD *)(a2 + 4); *(_DWORD *)a2 = a2 + 8; *(_DWORD *)(a2 + 4) = 0; *((_DWORD *)this + 1) = v3; result = 0; *(_WORD *)(a2 + 8) = 0; return result; } //----- (004BC750) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3) { wchar_t *S1; // ecx int v5; // edx _WORD *result; // eax int v7; // edx int v8; // eax S1 = this + 4; *(_DWORD *)this = S1; if ( a2 + 8 == *(_DWORD *)a2 ) { wmemcpy(S1, (const wchar_t *)(a2 + 8), 8u); v8 = *(_DWORD *)(a2 + 4); *(_DWORD *)(a2 + 4) = 0; *((_DWORD *)this + 1) = v8; result = *(_WORD **)a2; **(_WORD **)a2 = 0; } else { *(_DWORD *)this = *(_DWORD *)a2; v5 = *(_DWORD *)(a2 + 4); *(_DWORD *)a2 = a2 + 8; result = 0; *((_DWORD *)this + 1) = v5; v7 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = 0; *(_WORD *)(a2 + 8) = 0; *((_DWORD *)this + 2) = v7; } return result; } //----- (004BC7C0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3) { int v3; // eax size_t v4; // eax int v6; // [esp+8h] [ebp-24h] wchar_t **v7; // [esp+1Ch] [ebp-10h] *this = (wchar_t *)(this + 2); v3 = -2; if ( String ) { v7 = this; v4 = wcslen(String); this = v7; v3 = (int)&String[v4]; } LOBYTE(v6) = 0; return std::wstring::_M_construct(this, String, v3, v6); } // 4BC7F5: variable 'v6' is possibly undefined //----- (004BC810) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = (wchar_t *)(this + 2); return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (004BC830) -------------------------------------------------------- int __thiscall std::wstring::basic_string(_DWORD *this, int a2) { int result; // eax this[1] = 0; *this = this + 2; result = 0; *((_WORD *)this + 4) = 0; return result; } //----- (004BC850) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2) { int v3; // [esp+8h] [ebp-14h] *this = (wchar_t *)(this + 2); LOBYTE(v3) = 0; return std::wstring::_M_construct(this, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); } // 4BC870: variable 'v3' is possibly undefined //----- (004BC880) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3) { int v4; // [esp+8h] [ebp-14h] *this = (wchar_t *)(this + 2); LOBYTE(v4) = 0; return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( this, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v4); } // 4BC8A0: variable 'v4' is possibly undefined //----- (004BC8B0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) { unsigned int v4; // eax *this = (wchar_t *)(this + 2); v4 = *((_DWORD *)a2 + 1); if ( a3 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *((_DWORD *)a2 + 1)); LOBYTE(a4) = 0; return std::wstring::_M_construct( this, (wchar_t *)(*(_DWORD *)a2 + 2 * a3), *(_DWORD *)a2 + 2 * a3 + 2 * (v4 - a3), a4); } //----- (004BC910) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) { unsigned int v4; // esi unsigned int v5; // eax unsigned int v6; // eax *this = (wchar_t *)(this + 2); v4 = a4; v5 = *((_DWORD *)a2 + 1); if ( a3 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::basic_string", a3, *((_DWORD *)a2 + 1)); v6 = v5 - a3; LOBYTE(a4) = 0; if ( v6 > v4 ) v6 = v4; return std::wstring::_M_construct( this, (wchar_t *)(*(_DWORD *)a2 + 2 * a3), *(_DWORD *)a2 + 2 * a3 + 2 * v6, a4); } //----- (004BC980) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) { unsigned int v5; // eax unsigned int v6; // eax int v8; // [esp+8h] [ebp-14h] *this = (wchar_t *)(this + 2); v5 = a2[1]; if ( a3 > v5 ) std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); v6 = v5 - a3; LOBYTE(v8) = 0; if ( v6 > a4 ) v6 = a4; return std::wstring::_M_construct(this, (wchar_t *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); } // 4BC9B7: variable 'v8' is possibly undefined //----- (004BC9F0) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = (wchar_t *)(this + 2); return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (004BCA10) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4) { *this = (wchar_t *)(this + 2); return std::wstring::_M_construct(this, a2, a3); } //----- (004BCA40) -------------------------------------------------------- int __fastcall std::wstring::basic_string(int a1) { int result; // eax *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; result = 0; *(_WORD *)(a1 + 8) = 0; return result; } //----- (004BCA60) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( wchar_t **this, wchar_t *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = (wchar_t *)(this + 2); return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); } //----- (004BCA70) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = (wchar_t *)(this + 2); return std::wstring::_M_construct(this, a2, a3, a4); } //----- (004BCA80) -------------------------------------------------------- wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = (wchar_t *)(this + 2); return std::wstring::_M_construct(this, a2, a3, a4); } //----- (004BCA90) -------------------------------------------------------- void __fastcall std::wstring::~wstring(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004BCAC0) -------------------------------------------------------- void __fastcall std::wstring::~wstring(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004BCAF0) -------------------------------------------------------- wchar_t **__thiscall std::wstring::operator=(wchar_t **this, int a2) { wchar_t *S1; // eax const wchar_t *S2; // edx wchar_t *v5; // ecx wchar_t *v6; // ebp wchar_t *v8; // [esp+1Ch] [ebp-20h] S1 = *this; S2 = *(const wchar_t **)a2; v5 = *(wchar_t **)(a2 + 4); if ( a2 + 8 != *(_DWORD *)a2 ) { v8 = *(wchar_t **)(a2 + 8); if ( S1 == (wchar_t *)(this + 2) ) { *this = (wchar_t *)S2; this[1] = v5; this[2] = v8; } else { *this = (wchar_t *)S2; v6 = this[2]; this[1] = v5; this[2] = v8; if ( S1 ) { *(_DWORD *)a2 = S1; *(_DWORD *)(a2 + 8) = v6; goto LABEL_5; } } *(_DWORD *)a2 = a2 + 8; S1 = (wchar_t *)(a2 + 8); goto LABEL_5; } if ( v5 ) { if ( v5 == (wchar_t *)1 ) { *S1 = *S2; } else { wmemcpy(S1, S2, *(_DWORD *)(a2 + 4)); S1 = *this; v5 = *(wchar_t **)(a2 + 4); S2 = *(const wchar_t **)a2; } } this[1] = v5; S1[(_DWORD)v5] = 0; S1 = (wchar_t *)S2; LABEL_5: *(_DWORD *)(a2 + 4) = 0; *S1 = 0; return this; } //----- (004BCBA0) -------------------------------------------------------- int __thiscall std::wstring::operator=(size_t *this, wchar_t *String) { size_t v3; // eax v3 = wcslen(String); return std::wstring::_M_replace((int)this, 0, this[1], String, v3); } //----- (004BCBE0) -------------------------------------------------------- void *__thiscall std::wstring::operator=(void *this, int a2) { std::wstring::_M_assign((int)this, a2); return this; } //----- (004BCC00) -------------------------------------------------------- size_t *__thiscall std::wstring::operator=(size_t *this, wchar_t *a2, size_t a3) { std::wstring::_M_replace((int)this, 0, this[1], a2, a3); return this; } //----- (004BCC40) -------------------------------------------------------- int *__thiscall std::wstring::operator=(int *this, wchar_t a2) { std::wstring::_M_replace_aux((int)this, 0, this[1], 1u, a2); return this; } //----- (004BCC80) -------------------------------------------------------- int __thiscall std::wstring::operator[](_DWORD *this, int a2) { return *this + 2 * a2; } //----- (004BCC90) -------------------------------------------------------- int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String) { unsigned int v3; // eax v3 = wcslen(String); if ( v3 > 0x1FFFFFFF - this[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::wstring::_M_append((int)this, String, v3); } //----- (004BCCE0) -------------------------------------------------------- int __thiscall std::wstring::operator+=(void *this, int a2) { return std::wstring::_M_append((int)this, *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); } //----- (004BCD10) -------------------------------------------------------- int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *a2, size_t a3) { if ( a3 > 0x1FFFFFFF - this[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::wstring::_M_append((int)this, a2, a3); } //----- (004BCD40) -------------------------------------------------------- _DWORD *__thiscall std::wstring::operator+=(char *this, __int16 a2) { _DWORD *result; // eax char *v3; // ecx size_t v4; // ebx char *v5; // edx unsigned int v6; // esi unsigned int v7; // ecx _DWORD *v8; // [esp+1Ch] [ebp-10h] result = this; v3 = this + 8; v4 = *((_DWORD *)v3 - 1); v5 = (char *)*((_DWORD *)v3 - 2); v6 = v4 + 1; if ( v5 == v3 ) v7 = 7; else v7 = result[2]; if ( v6 > v7 ) { v8 = result; std::wstring::_M_mutate((const wchar_t **)result, v4, 0, 0, 1u); result = v8; v5 = (char *)*v8; } *(_WORD *)&v5[2 * v4] = a2; result[1] = v6; *(_WORD *)&v5[2 * v4 + 2] = 0; return result; } //----- (004BCDC0) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_4F5C58; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F58E0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; LOBYTE(c_locale) = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return c_locale; } // 4F58E0: using guessed type int (*off_4F58E0)(); // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004BCE80) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp int c_locale; // eax bool v6; // zf v4 = *a2; *this = &off_4F5C58; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F58E0; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; LOBYTE(c_locale) = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( (std::locale::facet *)(this + 2), (int **)v4); } } return c_locale; } // 4F58E0: using guessed type int (*off_4F58E0)(); // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004BCF50) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_4F5C58; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F58E0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; LOBYTE(c_locale) = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return c_locale; } // 4F58E0: using guessed type int (*off_4F58E0)(); // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004BD010) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp int c_locale; // eax bool v6; // zf v4 = *a2; *this = &off_4F5C58; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F58E0; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; LOBYTE(c_locale) = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( (std::locale::facet *)(this + 2), (int **)v4); } } return c_locale; } // 4F58E0: using guessed type int (*off_4F58E0)(); // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004BD0E0) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5C58; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4BD0F9: variable 'v2' is possibly undefined // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004BD110) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C58; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4BD119: variable 'v1' is possibly undefined // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004BD140) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C58; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4BD149: variable 'v1' is possibly undefined // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004BD170) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_4F5C74; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F58FC; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; LOBYTE(c_locale) = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return c_locale; } // 4F58FC: using guessed type int (*off_4F58FC)(); // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004BD230) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp int c_locale; // eax bool v6; // zf v4 = *a2; *this = &off_4F5C74; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F58FC; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; LOBYTE(c_locale) = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( (std::locale::facet *)(this + 2), (int **)v4); } } return c_locale; } // 4F58FC: using guessed type int (*off_4F58FC)(); // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004BD300) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_4F5C74; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F58FC; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; LOBYTE(c_locale) = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return c_locale; } // 4F58FC: using guessed type int (*off_4F58FC)(); // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004BD3C0) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) { int v4; // ebp int c_locale; // eax bool v6; // zf v4 = *a2; *this = &off_4F5C74; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_4F58FC; if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) { v6 = strcmp((const char *)v4, "POSIX") == 0; LOBYTE(c_locale) = !v6; if ( !v6 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( (std::locale::facet *)(this + 2), (int **)v4); } } return c_locale; } // 4F58FC: using guessed type int (*off_4F58FC)(); // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004BD490) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5C74; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4BD4A9: variable 'v2' is possibly undefined // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004BD4C0) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C74; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4BD4C9: variable 'v1' is possibly undefined // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004BD4F0) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C74; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4BD4F9: variable 'v1' is possibly undefined // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004BD520) -------------------------------------------------------- unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) { int v3; // ebx unsigned int result; // eax int v5; // esi unsigned int v6; // edi this[2] = -1; this[3] = -1; v3 = a2[9]; *this = a3; result = a2[1]; this[4] = -1; v5 = a2[4]; this[5] = -1; this[6] = -1; this[7] = -1; this[8] = -1; this[9] = -1; this[10] = -1; this[11] = -1; this[12] = -1; this[13] = -1; if ( !result ) { if ( !v5 ) return result; goto LABEL_3; } *((_QWORD *)this + 1) = (int)(result - v3); *((_QWORD *)this + 2) = a2[2] - v3; result = a2[3]; *((_QWORD *)this + 3) = (int)(result - v3); if ( v5 ) { LABEL_3: *((_QWORD *)this + 4) = v5 - v3; v6 = a2[5]; *((_QWORD *)this + 5) = (int)(v6 - v5); *((_QWORD *)this + 6) = a2[6] - v3; if ( result < v6 ) result = v6; } if ( result ) { result -= v3; a2[10] = result; } return result; } //----- (004BD610) -------------------------------------------------------- unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) { int v3; // ebx unsigned int result; // eax int v5; // esi unsigned int v6; // edi this[2] = -1; this[3] = -1; v3 = a2[9]; *this = a3; result = a2[1]; this[4] = -1; v5 = a2[4]; this[5] = -1; this[6] = -1; this[7] = -1; this[8] = -1; this[9] = -1; this[10] = -1; this[11] = -1; this[12] = -1; this[13] = -1; if ( !result ) { if ( !v5 ) return result; goto LABEL_3; } *((_QWORD *)this + 1) = (int)(result - v3); *((_QWORD *)this + 2) = a2[2] - v3; result = a2[3]; *((_QWORD *)this + 3) = (int)(result - v3); if ( v5 ) { LABEL_3: *((_QWORD *)this + 4) = v5 - v3; v6 = a2[5]; *((_QWORD *)this + 5) = (int)(v6 - v5); *((_QWORD *)this + 6) = a2[6] - v3; if ( result < v6 ) result = v6; } if ( result ) { result -= v3; a2[10] = result; } return result; } //----- (004BD700) -------------------------------------------------------- int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) { int v1; // eax _DWORD *v2; // esi int v3; // ebx int v4; // edx int v5; // edi int v6; // edi int result; // eax __int64 v8; // rax int v9; // ebp int v10; // ebx int v11; // ecx v1 = *(_DWORD *)(a1 + 8); v2 = *(_DWORD **)a1; v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) { v4 = *(_DWORD *)(a1 + 24); v5 = *(_DWORD *)(a1 + 16); v2[1] = v3 + v1; v2[2] = v3 + v5; v2[3] = v3 + v4; } v6 = *(_DWORD *)(a1 + 32); result = v6 & *(_DWORD *)(a1 + 36); if ( result != -1 ) { v8 = *(_QWORD *)(a1 + 40); v9 = v3 + *(_DWORD *)(a1 + 48); v10 = v6 + v3; v2[4] = v10; v2[6] = v9; if ( v8 > 0x7FFFFFFF ) { v11 = v10 + 0x7FFFFFFF; do { v10 = v11; v8 -= 0x7FFFFFFFLL; v11 += 0x7FFFFFFF; } while ( v8 > 0x7FFFFFFF ); } result = v10 + v8; v2[5] = result; } return result; } //----- (004BD790) -------------------------------------------------------- int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) { int v1; // eax _DWORD *v2; // esi int v3; // ebx int v4; // edx int v5; // edi int v6; // edi int result; // eax __int64 v8; // rax int v9; // ebp int v10; // ebx int v11; // ecx v1 = *(_DWORD *)(a1 + 8); v2 = *(_DWORD **)a1; v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) { v4 = *(_DWORD *)(a1 + 24); v5 = *(_DWORD *)(a1 + 16); v2[1] = v3 + v1; v2[2] = v3 + v5; v2[3] = v3 + v4; } v6 = *(_DWORD *)(a1 + 32); result = v6 & *(_DWORD *)(a1 + 36); if ( result != -1 ) { v8 = *(_QWORD *)(a1 + 40); v9 = v3 + *(_DWORD *)(a1 + 48); v10 = v6 + v3; v2[4] = v10; v2[6] = v9; if ( v8 > 0x7FFFFFFF ) { v11 = v10 + 0x7FFFFFFF; do { v10 = v11; v8 -= 0x7FFFFFFFLL; v11 += 0x7FFFFFFF; } while ( v8 > 0x7FFFFFFF ); } result = v10 + v8; v2[5] = result; } return result; } //----- (004BD820) -------------------------------------------------------- unsigned int __fastcall std::stringbuf::_M_update_egptr(int a1) { unsigned int result; // eax result = *(_DWORD *)(a1 + 20); if ( result && result > *(_DWORD *)(a1 + 12) ) { if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) { *(_DWORD *)(a1 + 4) = result; *(_DWORD *)(a1 + 8) = result; } *(_DWORD *)(a1 + 12) = result; } return result; } //----- (004BD850) -------------------------------------------------------- int __thiscall std::stringbuf::_M_stringbuf_init(int this, int a2) { unsigned int v2; // edx v2 = 0; *(_DWORD *)(this + 32) = a2; if ( (a2 & 3) != 0 ) v2 = *(_DWORD *)(this + 40); return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v2); } //----- (004BD890) -------------------------------------------------------- int __thiscall std::stringbuf::str(int this, int a2) { unsigned int v3; // eax std::string::_M_replace((unsigned int *)(this + 36), 0, *(_DWORD *)(this + 40), *(char **)a2, *(_DWORD *)(a2 + 4)); v3 = 0; if ( (*(_BYTE *)(this + 32) & 3) != 0 ) v3 = *(_DWORD *)(this + 40); return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v3); } //----- (004BD8F0) -------------------------------------------------------- int __thiscall std::stringbuf::swap(_DWORD *this, int a2) { int v3; // eax int v4; // edx int v5; // ecx unsigned int v6; // edi unsigned int v7; // eax int v8; // edi int v9; // edx int v10; // edx int v11; // eax int v12; // edx int v13; // eax int v14; // edx int v15; // eax int v16; // edx int v17; // eax int v18; // edx int v19; // eax int v20; // eax _DWORD *v21; // edx int v22; // esi int v23; // eax int v24; // ebx int v25; // edi __int64 v26; // rcx int v27; // eax int v28; // esi _DWORD *v29; // edx int v30; // esi int v31; // eax int v32; // ebx int result; // eax int v34; // edi __int64 v35; // rcx int v36; // eax int v37; // esi const std::locale *v38; // [esp+4h] [ebp-B4h] const std::locale *v39; // [esp+4h] [ebp-B4h] const std::locale *v40; // [esp+4h] [ebp-B4h] const std::locale *v41; // [esp+4h] [ebp-B4h] unsigned int v42; // [esp+10h] [ebp-A8h] int v43; // [esp+14h] [ebp-A4h] unsigned int v44; // [esp+18h] [ebp-A0h] unsigned int v45; // [esp+1Ch] [ebp-9Ch] _DWORD *v46; // [esp+24h] [ebp-94h] BYREF _DWORD *v47; // [esp+28h] [ebp-90h] BYREF _DWORD *v48; // [esp+2Ch] [ebp-8Ch] BYREF _DWORD *v49; // [esp+30h] [ebp-88h] __int64 v50; // [esp+38h] [ebp-80h] int v51; // [esp+40h] [ebp-78h] int v52; // [esp+44h] [ebp-74h] __int64 v53; // [esp+48h] [ebp-70h] __int64 v54; // [esp+50h] [ebp-68h] __int64 v55; // [esp+58h] [ebp-60h] int v56; // [esp+60h] [ebp-58h] int v57; // [esp+64h] [ebp-54h] _DWORD *v58; // [esp+68h] [ebp-50h] __int64 v59; // [esp+70h] [ebp-48h] int v60; // [esp+78h] [ebp-40h] int v61; // [esp+7Ch] [ebp-3Ch] __int64 v62; // [esp+80h] [ebp-38h] __int64 v63; // [esp+88h] [ebp-30h] __int64 v64; // [esp+90h] [ebp-28h] int v65; // [esp+98h] [ebp-20h] int v66; // [esp+9Ch] [ebp-1Ch] v3 = this[1]; v50 = -1LL; v4 = this[9]; v49 = (_DWORD *)a2; v5 = this[4]; v51 = -1; v52 = -1; v53 = -1LL; v54 = -1LL; v55 = -1LL; v56 = -1; v57 = -1; v43 = v3; if ( !v3 ) { v45 = 0; if ( !v5 ) goto LABEL_7; goto LABEL_3; } v50 = v3 - v4; v51 = this[2] - v4; v52 = v51 >> 31; v45 = this[3]; v53 = (int)(v45 - v4); if ( v5 ) { LABEL_3: v54 = v5 - v4; v6 = this[5]; v55 = (int)(v6 - v5); v56 = this[6] - v4; v57 = v56 >> 31; if ( v45 < v6 ) v45 = v6; } if ( v45 ) this[10] = v45 - v4; LABEL_7: v7 = *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)(a2 + 16); v58 = this; v59 = -1LL; v9 = *(_DWORD *)(a2 + 36); v60 = -1; v61 = -1; v62 = -1LL; v63 = -1LL; v64 = -1LL; v65 = -1; v66 = -1; v44 = v7; if ( !v7 ) { if ( !v8 ) goto LABEL_13; goto LABEL_9; } v59 = (int)(v7 - v9); v60 = *(_DWORD *)(a2 + 8) - v9; v61 = v60 >> 31; v7 = *(_DWORD *)(a2 + 12); v62 = (int)(v7 - v9); if ( v8 ) { LABEL_9: v63 = v8 - v9; v42 = *(_DWORD *)(a2 + 20); v64 = (int)(v42 - v8); v65 = *(_DWORD *)(a2 + 24) - v9; v66 = v65 >> 31; if ( v7 < v42 ) v7 = v42; } if ( v7 ) *(_DWORD *)(a2 + 40) = v7 - v9; LABEL_13: this[1] = v44; v10 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = v43; v11 = this[2]; this[2] = v10; v12 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a2 + 8) = v11; v13 = this[3]; this[3] = v12; v14 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 12) = v13; v15 = this[4]; this[4] = v14; v16 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 16) = v15; v17 = this[5]; this[5] = v16; v18 = *(_DWORD *)(a2 + 24); *(_DWORD *)(a2 + 20) = v17; v19 = this[6]; this[6] = v18; *(_DWORD *)(a2 + 24) = v19; std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)this + 7, v38); std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)(a2 + 28)); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v48); std::locale::~locale(&v48); std::locale::locale((volatile signed __int32 **)&v46, (volatile signed __int32 **)(a2 + 28), v39); std::locale::locale((volatile signed __int32 **)&v47, (volatile signed __int32 **)this + 7, v40); (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v46); std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v46); std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)(a2 + 28), v41); (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)a2 + 8))(a2, &v47); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v47); std::locale::~locale(&v48); std::locale::~locale(&v47); std::locale::~locale(&v46); v20 = this[8]; this[8] = *(_DWORD *)(a2 + 32); *(_DWORD *)(a2 + 32) = v20; std::string::swap(this + 9, (_DWORD *)(a2 + 36)); v21 = v58; v22 = v58[9]; if ( ((unsigned int)v59 & HIDWORD(v59)) != -1 ) { v23 = v62; v24 = v60; v58[1] = v22 + v59; v21[2] = v22 + v24; v21[3] = v22 + v23; } if ( ((unsigned int)v63 & HIDWORD(v63)) != -1 ) { v25 = v65; v26 = v64; v27 = v22 + v63; v21[4] = v22 + v63; v21[6] = v22 + v25; if ( v26 > 0x7FFFFFFF ) { v28 = v27 + 0x7FFFFFFF; do { v27 = v28; v26 -= 0x7FFFFFFFLL; v28 += 0x7FFFFFFF; } while ( v26 > 0x7FFFFFFF ); } v21[5] = v26 + v27; } v29 = v49; v30 = v49[9]; if ( ((unsigned int)v50 & HIDWORD(v50)) != -1 ) { v31 = v53; v32 = v51; v49[1] = v30 + v50; v29[2] = v30 + v32; v29[3] = v30 + v31; } result = v54; if ( ((unsigned int)v54 & HIDWORD(v54)) != -1 ) { v34 = v56; v35 = v55; v36 = v30 + v54; v29[4] = v30 + v54; v29[6] = v30 + v34; if ( v35 > 0x7FFFFFFF ) { v37 = v36 + 0x7FFFFFFF; do { v36 = v37; v35 -= 0x7FFFFFFFLL; v37 += 0x7FFFFFFF; } while ( v35 > 0x7FFFFFFF ); } result = v35 + v36; v29[5] = result; } return result; } // 4BDB52: variable 'v38' is possibly undefined // 4BDB8F: variable 'v39' is possibly undefined // 4BDBA6: variable 'v40' is possibly undefined // 4BDBE0: variable 'v41' is possibly undefined //----- (004BDE00) -------------------------------------------------------- _DWORD *__thiscall std::stringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3) { _BYTE *v4; // eax int v5; // ecx if ( !a2 || a3 < 0 ) return this; v4 = (_BYTE *)this[9]; this[10] = 0; *v4 = 0; std::stringbuf::_M_sync(this, a2, a3, 0); return (_DWORD *)v5; } // 4BDE48: variable 'v5' is possibly undefined //----- (004BDE50) -------------------------------------------------------- int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) { _DWORD *v4; // edi int v5; // esi int result; // eax int v7; // ebx int v8; // ebp int v9; // ebp int v10; // edx __int64 v11; // rax _DWORD *v12; // [esp+0h] [ebp-1Ch] int v13; // [esp+4h] [ebp-18h] v4 = (_DWORD *)this[9]; v5 = this[8] & 0x10; v12 = a2; result = (int)a2 + this[10]; v7 = this[8] & 8; v13 = result; if ( v4 == this + 11 ) v8 = 15; else v8 = this[11]; v9 = (int)a2 + v8; if ( a2 != v4 ) { v10 = a3; a3 = 0; v13 = v10 + result; result = v13; v9 = v13; } if ( v7 ) { this[1] = a2; this[2] = (char *)a2 + a3; result = v13; this[3] = v13; } if ( v5 ) { this[6] = v9; this[4] = a2; if ( a4 > 0x7FFFFFFFuLL ) { v11 = a4 - 0x7FFFFFFFLL; if ( (a4 + 1) | HIDWORD(v11) ) { v12 = (_DWORD *)((char *)a2 + 0x7FFFFFFF); } else { v12 = (_DWORD *)((char *)a2 - 2); LODWORD(v11) = 1; } a4 = v11; } result = (int)v12 + a4; this[5] = (char *)v12 + a4; if ( !v7 ) { result = v13; this[1] = v13; this[2] = v13; this[3] = v13; } } return result; } //----- (004BDF50) -------------------------------------------------------- unsigned int *__thiscall std::stringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5) { unsigned int *result; // eax bool v6; // cl unsigned int v7; // ebx int v8; // ebp unsigned int v9; // esi _DWORD *v10; // edi int v11; // edi unsigned int v12; // esi unsigned int v13; // edx int v14; // ebx __int64 v15; // [esp+0h] [ebp-34h] unsigned __int8 v16; // [esp+8h] [ebp-2Ch] char v17; // [esp+16h] [ebp-1Eh] char v18; // [esp+16h] [ebp-1Eh] unsigned __int8 v19; // [esp+17h] [ebp-1Dh] int v20; // [esp+18h] [ebp-1Ch] result = this; *this = -1; this[1] = -1; this[2] = 0; v15 = a3; v20 = a2[8] & 8; v6 = (a5 & v20) != 0; v7 = (a5 & a2[8]) >> 4; v16 = (a4 != 1) & v7 & v6; v17 = ((a5 >> 3) ^ 1) & 1 & v7; v19 = v6 & ((a5 >> 4) ^ 1); if ( v19 ) { v8 = a2[1]; if ( !v8 && a3 ) return result; v18 = v16 | v17; } else { v8 = a2[4]; if ( !v8 && a3 ) return result; v18 = v16 | v17; if ( !v18 ) return result; } v9 = a2[5]; if ( v9 ) { v10 = a2; if ( v9 > a2[3] ) { if ( !v20 ) { v10 = a2; a2[1] = v9; a2[2] = v9; } v10[3] = v9; } } if ( a4 == 1 ) { v11 = (unsigned __int64)(a3 + (int)(v9 - v8)) >> 32; v12 = a3 + v9 - v8; v15 = a2[2] - v8 + a3; } else { v11 = HIDWORD(a3); v12 = a3; if ( a4 == 2 ) { v15 = a2[3] - v8 + a3; v11 = HIDWORD(v15); v12 = v15; } } if ( v16 | v19 && v15 >= 0 && a2[3] - v8 >= v15 ) { result[2] = 0; v14 = a2[1] + v15; *result = v15; a2[2] = v14; result[1] = HIDWORD(v15); } if ( v11 >= 0 && v18 && a2[3] - v8 >= __SPAIR64__(v11, v12) ) { *result = v12; result[1] = v11; v13 = a2[4] + v12; result[2] = 0; a2[5] = v13; } return result; } //----- (004BE190) -------------------------------------------------------- _DWORD *__thiscall std::stringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6) { _DWORD *result; // eax int v7; // ecx int v8; // ebx unsigned int v9; // ebp int v10; // [esp+0h] [ebp-2Ch] result = this; *this = -1; this[1] = -1; this[2] = 0; v7 = a2[8] & 8; v10 = a6 & a2[8]; if ( (v7 & a6) != 0 ) v8 = a2[1]; else v8 = a2[4]; if ( (!a3 || v8) && (v10 & 0x18) != 0 ) { v9 = a2[5]; if ( v9 && a2[3] < v9 ) { if ( !v7 ) { a2[1] = v9; a2[2] = v9; } a2[3] = v9; } if ( a3 >= 0 && a2[3] - v8 >= a3 ) { if ( (v7 & a6) != 0 ) a2[2] = a3 + a2[1]; if ( (v10 & 0x10) != 0 ) a2[5] = a2[4] + a3; *(_QWORD *)result = a3; result[2] = a4; } } return result; } //----- (004BE270) -------------------------------------------------------- int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) { __int64 v4; // rax int v5; // ebx int result; // eax v4 = a4; this[6] = a3; v5 = a2; for ( this[4] = a2; v4 > 0x7FFFFFFF; v4 -= 0x7FFFFFFFLL ) v5 += 0x7FFFFFFF; result = v5 + v4; this[5] = result; return result; } //----- (004BE2D0) -------------------------------------------------------- int __thiscall std::stringbuf::overflow(int this, int a2) { int v2; // esi int v4; // ecx unsigned int v5; // edi _BYTE *v6; // edx int result; // eax _BYTE *v8; // edx int v9; // edi int v10; // eax int v11; // esi int v12; // eax unsigned int v13; // eax int v14; // eax size_t v15; // esi _BYTE *v16; // eax unsigned int v17; // edx int v18; // [esp+18h] [ebp-40h] unsigned int v19; // [esp+1Ch] [ebp-3Ch] unsigned int v20; // [esp+1Ch] [ebp-3Ch] void *v21; // [esp+28h] [ebp-30h] BYREF size_t v22; // [esp+2Ch] [ebp-2Ch] int v23[10]; // [esp+30h] [ebp-28h] BYREF v2 = *(_DWORD *)(this + 32); if ( (v2 & 0x10) == 0 ) return -1; if ( a2 == -1 ) return 0; v4 = *(_DWORD *)(this + 36); if ( v4 == this + 44 ) v19 = 15; else v19 = *(_DWORD *)(this + 44); v5 = *(_DWORD *)(this + 24); v18 = *(_DWORD *)(this + 16); v6 = *(_BYTE **)(this + 20); if ( v5 - v18 >= v19 ) { if ( (unsigned int)v6 < v5 ) { *v6 = a2; LABEL_8: ++*(_DWORD *)(this + 20); return a2; } if ( v19 != 0x3FFFFFFF ) { v22 = 0; v21 = v23; LOBYTE(v23[0]) = 0; v13 = 2 * v19; if ( 2 * v19 <= 0x3FFFFFFF ) { if ( v13 < 0x200 ) v13 = 512; } else { v13 = 0x3FFFFFFF; } std::string::reserve(&v21, v13); v14 = *(_DWORD *)(this + 16); v15 = v22; if ( v14 ) { std::string::_M_replace((unsigned int *)&v21, 0, v22, *(char **)(this + 16), *(_DWORD *)(this + 24) - v14); v15 = v22; } v20 = v15 + 1; v16 = v21; if ( v21 == v23 ) v17 = 15; else v17 = v23[0]; if ( v20 > v17 ) { std::string::_M_mutate((int)&v21, v15, 0, 0, 1u); v16 = v21; } v16[v15] = a2; v22 = v15 + 1; *((_BYTE *)v21 + v20) = 0; std::string::swap((_DWORD *)(this + 36), &v21); std::stringbuf::_M_sync( (_DWORD *)this, *(_DWORD **)(this + 36), *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4), *(_DWORD *)(this + 20) - *(_DWORD *)(this + 16)); if ( v21 != v23 ) operator delete(v21); goto LABEL_8; } return -1; } *(_DWORD *)(this + 16) = v4; v8 = &v6[v4 - v18]; *(_DWORD *)(this + 20) = v8; *(_DWORD *)(this + 24) = v4 + v19; if ( (v2 & 8) != 0 ) { v9 = *(_DWORD *)(this + 4); v10 = *(_DWORD *)(this + 12); *(_DWORD *)(this + 4) = v4; v11 = v4 + v10 - v9 + 1; v12 = *(_DWORD *)(this + 8); *(_DWORD *)(this + 12) = v11; *(_DWORD *)(this + 8) = v4 + v12 - v9; } *v8 = a2; result = a2; ++*(_DWORD *)(this + 20); return result; } //----- (004BE530) -------------------------------------------------------- int __thiscall std::stringbuf::pbackfail(int this, int a2) { unsigned int v2; // edx int result; // eax char v4; // bl v2 = *(_DWORD *)(this + 8); result = a2; if ( v2 <= *(_DWORD *)(this + 4) ) return -1; if ( a2 == -1 ) { result = 0; *(_DWORD *)(this + 8) = v2 - 1; return result; } v4 = *(_BYTE *)(v2 - 1); if ( (*(_BYTE *)(this + 32) & 0x10) == 0 && v4 != (_BYTE)a2 ) return -1; *(_DWORD *)(this + 8) = v2 - 1; if ( v4 != (_BYTE)a2 ) *(_BYTE *)(v2 - 1) = a2; return result; } //----- (004BE580) -------------------------------------------------------- int __fastcall std::stringbuf::showmanyc(int a1) { unsigned int v1; // edx unsigned int v2; // eax if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) return -1; v1 = *(_DWORD *)(a1 + 20); v2 = *(_DWORD *)(a1 + 12); if ( v1 ) { if ( v1 > v2 ) { *(_DWORD *)(a1 + 12) = v1; v2 = v1; } } return v2 - *(_DWORD *)(a1 + 8); } //----- (004BE5B0) -------------------------------------------------------- int __fastcall std::stringbuf::underflow(int a1) { unsigned int v1; // eax unsigned int v2; // edx unsigned __int8 *v3; // eax if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) return -1; v1 = *(_DWORD *)(a1 + 20); v2 = *(_DWORD *)(a1 + 12); if ( v1 ) { if ( v1 > v2 ) { *(_DWORD *)(a1 + 12) = v1; v2 = v1; } } v3 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v3 < v2 ) return *v3; else return -1; } //----- (004BE5F0) -------------------------------------------------------- int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2) { unsigned int v3; // eax int v4; // ecx int v5; // eax _DWORD *v6; // edx int v7; // edx int v8; // eax int v9; // ecx int v10; // eax const std::locale *v12; // [esp+4h] [ebp-74h] int v13; // [esp+1Ch] [ebp-5Ch] __int64 v15; // [esp+30h] [ebp-48h] int v16; // [esp+38h] [ebp-40h] int v17; // [esp+40h] [ebp-38h] __int64 v18; // [esp+48h] [ebp-30h] int v19; // [esp+50h] [ebp-28h] int v20; // [esp+58h] [ebp-20h] v15 = -1LL; v16 = -1; v13 = a2[9]; v3 = a2[1]; v17 = -1; v18 = -1LL; v19 = -1; v20 = -1; if ( !v3 ) { v4 = a2[4]; if ( !v4 ) goto LABEL_7; goto LABEL_3; } v15 = (int)(v3 - v13); v16 = a2[2] - v13; v3 = a2[3]; v17 = v3 - v13; v4 = a2[4]; if ( v4 ) { LABEL_3: v18 = v4 - v13; v19 = a2[5] - v4; v20 = a2[6] - v13; if ( v3 < a2[5] ) v3 = a2[5]; } if ( v3 ) a2[10] = v3 - v13; LABEL_7: std::streambuf::basic_streambuf(this, (int)a2, v12); v5 = a2[8]; *this = &off_4F5918; this[9] = this + 11; v6 = (_DWORD *)a2[9]; this[8] = v5; if ( v6 == a2 + 11 ) { this[11] = a2[11]; this[12] = a2[12]; this[13] = a2[13]; this[14] = a2[14]; } else { this[9] = v6; this[11] = a2[11]; } v7 = a2[10]; a2[9] = a2 + 11; a2[10] = 0; this[10] = v7; *((_BYTE *)a2 + 44) = 0; v8 = this[9]; if ( ((unsigned int)v15 & HIDWORD(v15)) != -1 ) { this[1] = v8 + v15; this[2] = v8 + v16; this[3] = v8 + v17; } if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) { v9 = v8 + v20; v10 = v18 + v8; this[6] = v9; this[4] = v10; this[5] = v19 + v10; } return std::stringbuf::_M_sync(a2, (_DWORD *)a2[9], 0, 0); } // 4BE77E: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4BE6DF: variable 'v12' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); //----- (004BE830) -------------------------------------------------------- _DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3) { int v4; // eax _DWORD *v5; // edx _DWORD *result; // eax int v7; // edx const std::locale *v8; // [esp+4h] [ebp-18h] std::streambuf::basic_streambuf(this, (int)a2, v8); v4 = a2[8]; *this = &off_4F5918; this[9] = this + 11; v5 = (_DWORD *)a2[9]; this[8] = v4; result = a2 + 11; if ( v5 == a2 + 11 ) { this[11] = a2[11]; this[12] = a2[12]; this[13] = a2[13]; this[14] = a2[14]; } else { this[9] = v5; this[11] = a2[11]; } v7 = a2[10]; a2[9] = result; a2[10] = 0; this[10] = v7; *((_BYTE *)a2 + 44) = 0; return result; } // 4BE83E: variable 'v8' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); //----- (004BE8B0) -------------------------------------------------------- int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3) { int v4; // eax unsigned __int8 *v5; // edx unsigned int v6; // eax int v8; // [esp+8h] [ebp-30h] *(_DWORD *)this = &off_4F6414; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; std::locale::locale((_DWORD *)(this + 28)); *(_DWORD *)this = &off_4F5918; v4 = *(_DWORD *)(a2 + 4); v5 = *(unsigned __int8 **)a2; *(_DWORD *)(this + 32) = 0; LOBYTE(v8) = 0; *(_DWORD *)(this + 36) = this + 44; std::string::_M_construct((void **)(this + 36), v5, (size_t)&v5[v4], v8); *(_DWORD *)(this + 32) = a3; v6 = 0; if ( (a3 & 3) != 0 ) v6 = *(_DWORD *)(this + 40); return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v6); } // 4BE92D: variable 'v8' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004BE980) -------------------------------------------------------- char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx char *result; // eax v3 = this + 7; *(v3 - 7) = &off_4F6414; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_4F5918; this[10] = 0; this[8] = a2; result = (char *)(this + 11); this[9] = this + 11; *((_BYTE *)this + 44) = 0; return result; } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004BE9F0) -------------------------------------------------------- int __fastcall std::stringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_4F6414; *(v2 - 6) = 0; *(v2 - 5) = 0; *(v2 - 4) = 0; *(v2 - 3) = 0; *(v2 - 2) = 0; *(v2 - 1) = 0; std::locale::locale(v2); result = a1 + 44; *(_BYTE *)(a1 + 44) = 0; *(_DWORD *)a1 = &off_4F5918; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 36) = a1 + 44; *(_DWORD *)(a1 + 40) = 0; return result; } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004BEA60) -------------------------------------------------------- int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2) { unsigned int v3; // eax int v4; // ecx int v5; // eax _DWORD *v6; // edx int v7; // edx int v8; // eax int v9; // ecx int v10; // eax const std::locale *v12; // [esp+4h] [ebp-74h] int v13; // [esp+1Ch] [ebp-5Ch] __int64 v15; // [esp+30h] [ebp-48h] int v16; // [esp+38h] [ebp-40h] int v17; // [esp+40h] [ebp-38h] __int64 v18; // [esp+48h] [ebp-30h] int v19; // [esp+50h] [ebp-28h] int v20; // [esp+58h] [ebp-20h] v15 = -1LL; v16 = -1; v13 = a2[9]; v3 = a2[1]; v17 = -1; v18 = -1LL; v19 = -1; v20 = -1; if ( !v3 ) { v4 = a2[4]; if ( !v4 ) goto LABEL_7; goto LABEL_3; } v15 = (int)(v3 - v13); v16 = a2[2] - v13; v3 = a2[3]; v17 = v3 - v13; v4 = a2[4]; if ( v4 ) { LABEL_3: v18 = v4 - v13; v19 = a2[5] - v4; v20 = a2[6] - v13; if ( v3 < a2[5] ) v3 = a2[5]; } if ( v3 ) a2[10] = v3 - v13; LABEL_7: std::streambuf::basic_streambuf(this, (int)a2, v12); v5 = a2[8]; *this = &off_4F5918; this[9] = this + 11; v6 = (_DWORD *)a2[9]; this[8] = v5; if ( v6 == a2 + 11 ) { this[11] = a2[11]; this[12] = a2[12]; this[13] = a2[13]; this[14] = a2[14]; } else { this[9] = v6; this[11] = a2[11]; } v7 = a2[10]; a2[9] = a2 + 11; a2[10] = 0; this[10] = v7; *((_BYTE *)a2 + 44) = 0; v8 = this[9]; if ( ((unsigned int)v15 & HIDWORD(v15)) != -1 ) { this[1] = v8 + v15; this[2] = v8 + v16; this[3] = v8 + v17; } if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) { v9 = v8 + v20; v10 = v18 + v8; this[6] = v9; this[4] = v10; this[5] = v19 + v10; } return std::stringbuf::_M_sync(a2, (_DWORD *)a2[9], 0, 0); } // 4BEBEE: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4BEB4F: variable 'v12' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); //----- (004BECA0) -------------------------------------------------------- _DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3) { int v4; // eax _DWORD *v5; // edx _DWORD *result; // eax int v7; // edx const std::locale *v8; // [esp+4h] [ebp-18h] std::streambuf::basic_streambuf(this, (int)a2, v8); v4 = a2[8]; *this = &off_4F5918; this[9] = this + 11; v5 = (_DWORD *)a2[9]; this[8] = v4; result = a2 + 11; if ( v5 == a2 + 11 ) { this[11] = a2[11]; this[12] = a2[12]; this[13] = a2[13]; this[14] = a2[14]; } else { this[9] = v5; this[11] = a2[11]; } v7 = a2[10]; a2[9] = result; a2[10] = 0; this[10] = v7; *((_BYTE *)a2 + 44) = 0; return result; } // 4BECAE: variable 'v8' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); //----- (004BED20) -------------------------------------------------------- int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3) { int v4; // eax unsigned __int8 *v5; // edx unsigned int v6; // eax int v8; // [esp+8h] [ebp-30h] *(_DWORD *)this = &off_4F6414; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; std::locale::locale((_DWORD *)(this + 28)); *(_DWORD *)this = &off_4F5918; v4 = *(_DWORD *)(a2 + 4); v5 = *(unsigned __int8 **)a2; *(_DWORD *)(this + 32) = 0; LOBYTE(v8) = 0; *(_DWORD *)(this + 36) = this + 44; std::string::_M_construct((void **)(this + 36), v5, (size_t)&v5[v4], v8); *(_DWORD *)(this + 32) = a3; v6 = 0; if ( (a3 & 3) != 0 ) v6 = *(_DWORD *)(this + 40); return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v6); } // 4BED9D: variable 'v8' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004BEDF0) -------------------------------------------------------- char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx char *result; // eax v3 = this + 7; *(v3 - 7) = &off_4F6414; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_4F5918; this[10] = 0; this[8] = a2; result = (char *)(this + 11); this[9] = this + 11; *((_BYTE *)this + 44) = 0; return result; } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004BEE60) -------------------------------------------------------- int __fastcall std::stringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_4F6414; *(v2 - 6) = 0; *(v2 - 5) = 0; *(v2 - 4) = 0; *(v2 - 3) = 0; *(v2 - 2) = 0; *(v2 - 1) = 0; std::locale::locale(v2); result = a1 + 44; *(_BYTE *)(a1 + 44) = 0; *(_DWORD *)a1 = &off_4F5918; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 36) = a1 + 44; *(_DWORD *)(a1 + 40) = 0; return result; } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004BEED0) -------------------------------------------------------- void __fastcall std::stringbuf::~stringbuf(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[9]; *a1 = &off_4F5918; if ( v2 != a1 + 11 ) operator delete(v2); *a1 = &off_4F6414; std::locale::~locale((_DWORD **)a1 + 7); operator delete(a1); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004BEF10) -------------------------------------------------------- void __fastcall std::stringbuf::~stringbuf(int a1) { void *v2; // eax v2 = *(void **)(a1 + 36); *(_DWORD *)a1 = &off_4F5918; if ( v2 != (void *)(a1 + 44) ) operator delete(v2); *(_DWORD *)a1 = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004BEF40) -------------------------------------------------------- int __thiscall std::stringbuf::operator=(int this, int a2) { unsigned int v2; // eax int v3; // edx int v4; // ecx unsigned int v5; // edi const void *v6; // edx _BYTE *v7; // eax int v8; // ebx _DWORD *v9; // edx int v10; // eax int v11; // esi int v12; // edi int v13; // edi unsigned int v14; // esi int v15; // ebx int v16; // eax bool v17; // cc int v18; // ecx bool v19; // cf int v21; // ecx const std::locale *v22; // [esp+4h] [ebp-74h] const std::locale *v23; // [esp+4h] [ebp-74h] int v24; // [esp+18h] [ebp-60h] _DWORD *v26; // [esp+20h] [ebp-58h] BYREF _DWORD *v27; // [esp+24h] [ebp-54h] BYREF _DWORD *v28; // [esp+28h] [ebp-50h] __int64 v29; // [esp+30h] [ebp-48h] int v30; // [esp+38h] [ebp-40h] int v31; // [esp+3Ch] [ebp-3Ch] __int64 v32; // [esp+40h] [ebp-38h] __int64 v33; // [esp+48h] [ebp-30h] __int64 v34; // [esp+50h] [ebp-28h] int v35; // [esp+58h] [ebp-20h] int v36; // [esp+5Ch] [ebp-1Ch] v28 = (_DWORD *)this; v2 = *(_DWORD *)(a2 + 4); v29 = -1LL; v3 = *(_DWORD *)(a2 + 36); v30 = -1; v4 = *(_DWORD *)(a2 + 16); v31 = -1; v32 = -1LL; v33 = -1LL; v34 = -1LL; v35 = -1; v36 = -1; if ( !v2 ) { if ( !v4 ) goto LABEL_7; goto LABEL_3; } v29 = (int)(v2 - v3); v30 = *(_DWORD *)(a2 + 8) - v3; v31 = v30 >> 31; v2 = *(_DWORD *)(a2 + 12); v32 = (int)(v2 - v3); if ( v4 ) { LABEL_3: v33 = v4 - v3; v5 = *(_DWORD *)(a2 + 20); v34 = (int)(v5 - v4); v35 = *(_DWORD *)(a2 + 24) - v3; v36 = v35 >> 31; if ( v2 < v5 ) v2 = v5; } if ( v2 ) *(_DWORD *)(a2 + 40) = v2 - v3; LABEL_7: std::streambuf::operator=((volatile signed __int32 **)this, a2); std::locale::locale((volatile signed __int32 **)&v26, (volatile signed __int32 **)(a2 + 28), v22); std::locale::locale((volatile signed __int32 **)&v27, (volatile signed __int32 **)(this + 28), v23); (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)this + 8))(this, &v26); std::locale::operator=((volatile signed __int32 **)(this + 28), (volatile signed __int32 **)&v26); std::locale::~locale(&v27); std::locale::~locale(&v26); v6 = *(const void **)(a2 + 36); *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); v7 = *(_BYTE **)(this + 36); if ( v6 == (const void *)(a2 + 44) ) { v21 = *(_DWORD *)(a2 + 40); if ( v21 ) { if ( v21 == 1 ) *v7 = *(_BYTE *)(a2 + 44); else memcpy(v7, v6, *(_DWORD *)(a2 + 40)); v21 = *(_DWORD *)(a2 + 40); v7 = *(_BYTE **)(this + 36); } *(_DWORD *)(this + 40) = v21; v7[v21] = 0; v7 = *(_BYTE **)(a2 + 36); } else { v24 = *(_DWORD *)(a2 + 40); if ( v7 == (_BYTE *)(this + 44) ) { *(_DWORD *)(this + 36) = v6; *(_DWORD *)(this + 40) = v24; *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); } else { v8 = *(_DWORD *)(this + 44); *(_DWORD *)(this + 36) = v6; *(_DWORD *)(this + 40) = v24; *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); if ( v7 ) { *(_DWORD *)(a2 + 36) = v7; *(_DWORD *)(a2 + 44) = v8; goto LABEL_11; } } *(_DWORD *)(a2 + 36) = a2 + 44; v7 = (_BYTE *)(a2 + 44); } LABEL_11: *(_DWORD *)(a2 + 40) = 0; *v7 = 0; std::stringbuf::_M_sync((_DWORD *)a2, *(_DWORD **)(a2 + 36), 0, 0); v9 = v28; v10 = v28[9]; if ( ((unsigned int)v29 & HIDWORD(v29)) != -1 ) { v11 = v32; v12 = v30; v28[1] = v10 + v29; v9[2] = v10 + v12; v9[3] = v10 + v11; } if ( ((unsigned int)v33 & HIDWORD(v33)) != -1 ) { v13 = HIDWORD(v34); v14 = v34; v15 = v10 + v35; v16 = v33 + v10; v17 = v34 > 0x7FFFFFFF; v9[4] = v16; v9[6] = v15; if ( v17 ) { v18 = v16 + 0x7FFFFFFF; do { v19 = __CFADD__(v14, -2147483647); v14 -= 0x7FFFFFFF; v16 = v18; v13 = v19 + v13 - 1; v18 += 0x7FFFFFFF; } while ( __SPAIR64__(v13, v14) > 0x7FFFFFFF ); } v9[5] = v14 + v16; } return this; } // 4BF03E: variable 'v22' is possibly undefined // 4BF04C: variable 'v23' is possibly undefined //----- (004BF270) -------------------------------------------------------- unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) { int v3; // ebx unsigned int result; // eax int v5; // esi unsigned int v6; // edi this[2] = -1; this[3] = -1; v3 = a2[9]; *this = a3; result = a2[1]; this[4] = -1; v5 = a2[4]; this[5] = -1; this[6] = -1; this[7] = -1; this[8] = -1; this[9] = -1; this[10] = -1; this[11] = -1; this[12] = -1; this[13] = -1; if ( !result ) { if ( !v5 ) return result; goto LABEL_3; } *((_QWORD *)this + 1) = (int)(result - v3) >> 1; *((_QWORD *)this + 2) = (a2[2] - v3) >> 1; result = a2[3]; *((_QWORD *)this + 3) = (int)(result - v3) >> 1; if ( v5 ) { LABEL_3: *((_QWORD *)this + 4) = __PAIR64__((v5 - v3) >> 31, (v5 - v3) >> 1); v6 = a2[5]; *((_QWORD *)this + 5) = (int)(v6 - v5) >> 1; *((_QWORD *)this + 6) = (a2[6] - v3) >> 1; if ( result < v6 ) result = v6; } if ( result ) { result = (int)(result - v3) >> 1; a2[10] = result; } return result; } //----- (004BF370) -------------------------------------------------------- unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) { int v3; // ebx unsigned int result; // eax int v5; // esi unsigned int v6; // edi this[2] = -1; this[3] = -1; v3 = a2[9]; *this = a3; result = a2[1]; this[4] = -1; v5 = a2[4]; this[5] = -1; this[6] = -1; this[7] = -1; this[8] = -1; this[9] = -1; this[10] = -1; this[11] = -1; this[12] = -1; this[13] = -1; if ( !result ) { if ( !v5 ) return result; goto LABEL_3; } *((_QWORD *)this + 1) = (int)(result - v3) >> 1; *((_QWORD *)this + 2) = (a2[2] - v3) >> 1; result = a2[3]; *((_QWORD *)this + 3) = (int)(result - v3) >> 1; if ( v5 ) { LABEL_3: *((_QWORD *)this + 4) = __PAIR64__((v5 - v3) >> 31, (v5 - v3) >> 1); v6 = a2[5]; *((_QWORD *)this + 5) = (int)(v6 - v5) >> 1; *((_QWORD *)this + 6) = (a2[6] - v3) >> 1; if ( result < v6 ) result = v6; } if ( result ) { result = (int)(result - v3) >> 1; a2[10] = result; } return result; } //----- (004BF470) -------------------------------------------------------- int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) { int v1; // eax _DWORD *v2; // esi int v3; // ebx int v4; // edx int v5; // edi int v6; // edi int result; // eax __int64 v8; // rax int v9; // ecx int v10; // ebx int v11; // ecx v1 = *(_DWORD *)(a1 + 8); v2 = *(_DWORD **)a1; v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) { v4 = *(_DWORD *)(a1 + 24); v5 = *(_DWORD *)(a1 + 16); v2[1] = v3 + 2 * v1; v2[2] = v3 + 2 * v5; v2[3] = v3 + 2 * v4; } v6 = *(_DWORD *)(a1 + 32); result = v6 & *(_DWORD *)(a1 + 36); if ( result != -1 ) { v8 = *(_QWORD *)(a1 + 40); v9 = v3 + 2 * *(_DWORD *)(a1 + 48); v10 = v3 + 2 * v6; v2[6] = v9; v2[4] = v10; if ( v8 > 0x7FFFFFFF ) { v11 = v10 - 2; do { v10 = v11; v8 -= 0x7FFFFFFFLL; v11 -= 2; } while ( v8 > 0x7FFFFFFF ); } result = v10 + 2 * v8; v2[5] = result; } return result; } //----- (004BF500) -------------------------------------------------------- int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) { int v1; // eax _DWORD *v2; // esi int v3; // ebx int v4; // edx int v5; // edi int v6; // edi int result; // eax __int64 v8; // rax int v9; // ecx int v10; // ebx int v11; // ecx v1 = *(_DWORD *)(a1 + 8); v2 = *(_DWORD **)a1; v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) { v4 = *(_DWORD *)(a1 + 24); v5 = *(_DWORD *)(a1 + 16); v2[1] = v3 + 2 * v1; v2[2] = v3 + 2 * v5; v2[3] = v3 + 2 * v4; } v6 = *(_DWORD *)(a1 + 32); result = v6 & *(_DWORD *)(a1 + 36); if ( result != -1 ) { v8 = *(_QWORD *)(a1 + 40); v9 = v3 + 2 * *(_DWORD *)(a1 + 48); v10 = v3 + 2 * v6; v2[6] = v9; v2[4] = v10; if ( v8 > 0x7FFFFFFF ) { v11 = v10 - 2; do { v10 = v11; v8 -= 0x7FFFFFFFLL; v11 -= 2; } while ( v8 > 0x7FFFFFFF ); } result = v10 + 2 * v8; v2[5] = result; } return result; } //----- (004BF590) -------------------------------------------------------- unsigned int __fastcall std::wstringbuf::_M_update_egptr(int a1) { unsigned int result; // eax result = *(_DWORD *)(a1 + 20); if ( result && result > *(_DWORD *)(a1 + 12) ) { if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) { *(_DWORD *)(a1 + 4) = result; *(_DWORD *)(a1 + 8) = result; } *(_DWORD *)(a1 + 12) = result; } return result; } //----- (004BF5C0) -------------------------------------------------------- int __thiscall std::wstringbuf::_M_stringbuf_init(int this, int a2) { unsigned int v2; // edx v2 = 0; *(_DWORD *)(this + 32) = a2; if ( (a2 & 3) != 0 ) v2 = *(_DWORD *)(this + 40); return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v2); } //----- (004BF600) -------------------------------------------------------- int __thiscall std::wstringbuf::str(int this, int a2) { unsigned int v3; // eax std::wstring::_M_replace(this + 36, 0, *(_DWORD *)(this + 40), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); v3 = 0; if ( (*(_BYTE *)(this + 32) & 3) != 0 ) v3 = *(_DWORD *)(this + 40); return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v3); } //----- (004BF660) -------------------------------------------------------- int __thiscall std::wstringbuf::swap(_DWORD *this, int a2) { int v3; // eax int v4; // edx int v5; // ecx unsigned int v6; // edi unsigned int v7; // eax int v8; // edi int v9; // edx int v10; // edx int v11; // eax int v12; // edx int v13; // eax int v14; // edx int v15; // eax int v16; // edx int v17; // eax int v18; // edx int v19; // eax int v20; // eax _DWORD *v21; // ecx int v22; // ebx int v23; // edx int v24; // esi __int64 v25; // rax int v26; // edi int v27; // ebx bool v28; // cf int v29; // esi _DWORD *v30; // ecx int v31; // ebx int v32; // edx int v33; // esi int result; // eax __int64 v35; // rax int v36; // edi int v37; // ebx int v38; // esi const std::locale *v39; // [esp+4h] [ebp-B4h] const std::locale *v40; // [esp+4h] [ebp-B4h] const std::locale *v41; // [esp+4h] [ebp-B4h] const std::locale *v42; // [esp+4h] [ebp-B4h] unsigned int v43; // [esp+10h] [ebp-A8h] int v44; // [esp+14h] [ebp-A4h] unsigned int v45; // [esp+18h] [ebp-A0h] unsigned int v46; // [esp+1Ch] [ebp-9Ch] _DWORD *v47; // [esp+24h] [ebp-94h] BYREF _DWORD *v48; // [esp+28h] [ebp-90h] BYREF _DWORD *v49; // [esp+2Ch] [ebp-8Ch] BYREF _DWORD *v50; // [esp+30h] [ebp-88h] int v51; // [esp+38h] [ebp-80h] int v52; // [esp+3Ch] [ebp-7Ch] int v53; // [esp+40h] [ebp-78h] int v54; // [esp+44h] [ebp-74h] int v55; // [esp+48h] [ebp-70h] int v56; // [esp+4Ch] [ebp-6Ch] int v57; // [esp+50h] [ebp-68h] int v58; // [esp+54h] [ebp-64h] __int64 v59; // [esp+58h] [ebp-60h] int v60; // [esp+60h] [ebp-58h] int v61; // [esp+64h] [ebp-54h] _DWORD *v62; // [esp+68h] [ebp-50h] int v63; // [esp+70h] [ebp-48h] int v64; // [esp+74h] [ebp-44h] int v65; // [esp+78h] [ebp-40h] int v66; // [esp+7Ch] [ebp-3Ch] __int64 v67; // [esp+80h] [ebp-38h] int v68; // [esp+88h] [ebp-30h] int v69; // [esp+8Ch] [ebp-2Ch] __int64 v70; // [esp+90h] [ebp-28h] int v71; // [esp+98h] [ebp-20h] int v72; // [esp+9Ch] [ebp-1Ch] v3 = this[1]; v51 = -1; v4 = this[9]; v52 = -1; v50 = (_DWORD *)a2; v5 = this[4]; v53 = -1; v54 = -1; v55 = -1; v56 = -1; v57 = -1; v58 = -1; v59 = -1LL; v60 = -1; v61 = -1; v44 = v3; if ( !v3 ) { v46 = 0; if ( !v5 ) goto LABEL_7; goto LABEL_3; } v51 = (v3 - v4) >> 1; v52 = (v3 - v4) >> 31; v53 = (this[2] - v4) >> 1; v54 = v53 >> 31; v46 = this[3]; v55 = (int)(v46 - v4) >> 1; v56 = (int)(v46 - v4) >> 31; if ( v5 ) { LABEL_3: v57 = (v5 - v4) >> 1; v58 = (v5 - v4) >> 31; v6 = this[5]; v59 = (int)(v6 - v5) >> 1; v60 = (this[6] - v4) >> 1; v61 = v60 >> 31; if ( v46 < v6 ) v46 = v6; } if ( v46 ) this[10] = (int)(v46 - v4) >> 1; LABEL_7: v7 = *(_DWORD *)(a2 + 4); v8 = *(_DWORD *)(a2 + 16); v62 = this; v63 = -1; v9 = *(_DWORD *)(a2 + 36); v64 = -1; v65 = -1; v66 = -1; v67 = -1LL; v68 = -1; v69 = -1; v70 = -1LL; v71 = -1; v72 = -1; v45 = v7; if ( !v7 ) { if ( !v8 ) goto LABEL_13; goto LABEL_9; } v63 = (int)(v7 - v9) >> 1; v64 = (int)(v7 - v9) >> 31; v65 = (*(_DWORD *)(a2 + 8) - v9) >> 1; v66 = v65 >> 31; v7 = *(_DWORD *)(a2 + 12); v67 = (int)(v7 - v9) >> 1; if ( v8 ) { LABEL_9: v68 = (v8 - v9) >> 1; v69 = (v8 - v9) >> 31; v43 = *(_DWORD *)(a2 + 20); v70 = (int)(v43 - v8) >> 1; v71 = (*(_DWORD *)(a2 + 24) - v9) >> 1; v72 = v71 >> 31; if ( v7 < v43 ) v7 = v43; } if ( v7 ) *(_DWORD *)(a2 + 40) = (int)(v7 - v9) >> 1; LABEL_13: this[1] = v45; v10 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = v44; v11 = this[2]; this[2] = v10; v12 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a2 + 8) = v11; v13 = this[3]; this[3] = v12; v14 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 12) = v13; v15 = this[4]; this[4] = v14; v16 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 16) = v15; v17 = this[5]; this[5] = v16; v18 = *(_DWORD *)(a2 + 24); *(_DWORD *)(a2 + 20) = v17; v19 = this[6]; this[6] = v18; *(_DWORD *)(a2 + 24) = v19; std::locale::locale((volatile signed __int32 **)&v49, (volatile signed __int32 **)this + 7, v39); std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)(a2 + 28)); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v49); std::locale::~locale(&v49); std::locale::locale((volatile signed __int32 **)&v47, (volatile signed __int32 **)(a2 + 28), v40); std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)this + 7, v41); (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v47); std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v47); std::locale::locale((volatile signed __int32 **)&v49, (volatile signed __int32 **)(a2 + 28), v42); (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)a2 + 8))(a2, &v48); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v48); std::locale::~locale(&v49); std::locale::~locale(&v48); std::locale::~locale(&v47); v20 = this[8]; this[8] = *(_DWORD *)(a2 + 32); *(_DWORD *)(a2 + 32) = v20; std::wstring::swap((wchar_t **)this + 9, a2 + 36); v21 = v62; v22 = v62[9]; if ( (v63 & v64) != -1 ) { v23 = v67; v24 = v65; v62[1] = v22 + 2 * v63; v21[2] = v22 + 2 * v24; v21[3] = v22 + 2 * v23; } if ( (v68 & v69) != -1 ) { v25 = v70; v26 = v22 + 2 * v71; v27 = v22 + 2 * v68; v28 = (unsigned int)v70 > 0x7FFFFFFF; v21[4] = v27; v21[6] = v26; if ( v28 + HIDWORD(v25) > 0 ) { v29 = v27 - 2; do { v27 = v29; v25 -= 0x7FFFFFFFLL; v29 -= 2; } while ( v25 > 0x7FFFFFFF ); } v21[5] = v27 + 2 * v25; } v30 = v50; v31 = v50[9]; if ( (v51 & v52) != -1 ) { v32 = v55; v33 = v53; v50[1] = v31 + 2 * v51; v30[2] = v31 + 2 * v33; v30[3] = v31 + 2 * v32; } result = v57 & v58; if ( (v57 & v58) != -1 ) { v35 = v59; v36 = v31 + 2 * v60; v37 = v31 + 2 * v57; v28 = (unsigned int)v59 > 0x7FFFFFFF; v30[4] = v37; v30[6] = v36; if ( v28 + HIDWORD(v35) > 0 ) { v38 = v37 - 2; do { v37 = v38; v35 -= 0x7FFFFFFFLL; v38 -= 2; } while ( v35 > 0x7FFFFFFF ); } result = v37 + 2 * v35; v30[5] = result; } return result; } // 4BF8DE: variable 'v39' is possibly undefined // 4BF91B: variable 'v40' is possibly undefined // 4BF932: variable 'v41' is possibly undefined // 4BF96C: variable 'v42' is possibly undefined //----- (004BFB80) -------------------------------------------------------- _DWORD *__thiscall std::wstringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3) { _WORD *v4; // eax int v5; // ecx if ( !a2 || a3 < 0 ) return this; v4 = (_WORD *)this[9]; this[10] = 0; *v4 = 0; std::wstringbuf::_M_sync(this, a2, a3, 0); return (_DWORD *)v5; } // 4BFBCA: variable 'v5' is possibly undefined //----- (004BFBE0) -------------------------------------------------------- int __thiscall std::wstringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) { int result; // eax _DWORD *v5; // esi int v6; // ebx int v7; // edx int v8; // edi int v9; // edi int v10; // esi int v11; // edi int v12; // [esp+0h] [ebp-1Ch] result = (int)a2; v5 = (_DWORD *)this[9]; v6 = this[8] & 0x10; v7 = (int)a2 + 2 * this[10]; v12 = this[8] & 8; if ( v5 == this + 11 ) v8 = 14; else v8 = 2 * this[11]; v9 = (int)a2 + v8; if ( a2 != v5 ) { v10 = a3; a3 = 0; v7 += 2 * v10; v9 = v7; } if ( v12 ) { this[1] = a2; this[3] = v7; this[2] = (char *)a2 + 2 * a3; } if ( v6 ) { this[6] = v9; this[4] = a2; if ( a4 > 0x7FFFFFFF ) { v11 = a4 - 0x7FFFFFFF; if ( (((unsigned __int64)a4 - 0x7FFFFFFF) >> 32) | (a4 + 1) ) { result = (int)a2 - 2; } else { result = (int)(a2 - 1); v11 = 1; } a4 = v11; } this[5] = result + 2 * a4; result = v12; if ( !v12 ) { this[1] = v7; this[2] = v7; this[3] = v7; } } return result; } //----- (004BFCD0) -------------------------------------------------------- unsigned int *__thiscall std::wstringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5) { unsigned int *result; // eax bool v6; // cl unsigned int v7; // ebx int v8; // ebp unsigned int v9; // esi _DWORD *v10; // edi int v11; // edi unsigned int v12; // esi int v13; // edx int v14; // edx int v15; // esi bool v16; // cf __int64 v17; // [esp+0h] [ebp-34h] unsigned __int8 v18; // [esp+8h] [ebp-2Ch] char v19; // [esp+16h] [ebp-1Eh] char v20; // [esp+16h] [ebp-1Eh] unsigned __int8 v21; // [esp+17h] [ebp-1Dh] int v22; // [esp+18h] [ebp-1Ch] result = this; *this = -1; this[1] = -1; this[2] = 0; v17 = a3; v22 = a2[8] & 8; v6 = (a5 & v22) != 0; v7 = (a5 & a2[8]) >> 4; v18 = (a4 != 1) & v7 & v6; v19 = ((a5 >> 3) ^ 1) & 1 & v7; v21 = v6 & ((a5 >> 4) ^ 1); if ( v21 ) { v8 = a2[1]; if ( !v8 && a3 ) return result; v20 = v18 | v19; } else { v8 = a2[4]; if ( !v8 && a3 ) return result; v20 = v18 | v19; if ( !v20 ) return result; } v9 = a2[5]; if ( v9 ) { v10 = a2; if ( v9 > a2[3] ) { if ( !v22 ) { v10 = a2; a2[1] = v9; a2[2] = v9; } v10[3] = v9; } } if ( a4 == 1 ) { v11 = (unsigned __int64)(a3 + ((int)(v9 - v8) >> 1)) >> 32; v12 = a3 + ((int)(v9 - v8) >> 1); v17 = ((a2[2] - v8) >> 1) + a3; } else { v11 = HIDWORD(a3); v12 = a3; if ( a4 == 2 ) { v15 = (a2[3] - v8) >> 1; v16 = __CFADD__(v15, (_DWORD)a3); LODWORD(v17) = v15 + a3; v12 = v15 + a3; HIDWORD(v17) = ((a2[3] - v8) >> 31) + v16 + HIDWORD(a3); v11 = HIDWORD(v17); } } if ( v18 | v21 && v17 >= 0 && (a2[3] - v8) >> 1 >= v17 ) { result[2] = 0; v14 = a2[1] + 2 * v17; result[1] = HIDWORD(v17); a2[2] = v14; *result = v17; } if ( v11 >= 0 && v20 && __SPAIR64__((a2[3] - v8) >> 31, (a2[3] - v8) >> 1) >= __SPAIR64__(v11, v12) ) { *result = v12; result[1] = v11; v13 = a2[4] + 2 * v12; result[2] = 0; a2[5] = v13; } return result; } //----- (004BFF20) -------------------------------------------------------- _DWORD *__thiscall std::wstringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6) { _DWORD *result; // eax int v7; // ecx int v8; // ebx unsigned int v9; // ebp int v10; // [esp+0h] [ebp-2Ch] result = this; *this = -1; this[1] = -1; this[2] = 0; v7 = a2[8] & 8; v10 = a6 & a2[8]; if ( (v7 & a6) != 0 ) v8 = a2[1]; else v8 = a2[4]; if ( (!a3 || v8) && (v10 & 0x18) != 0 ) { v9 = a2[5]; if ( v9 && a2[3] < v9 ) { if ( !v7 ) { a2[1] = v9; a2[2] = v9; } a2[3] = v9; } if ( a3 >= 0 && __SPAIR64__((a2[3] - v8) >> 31, (a2[3] - v8) >> 1) >= a3 ) { if ( (v7 & a6) != 0 ) a2[2] = a2[1] + 2 * a3; if ( (v10 & 0x10) != 0 ) a2[5] = a2[4] + 2 * a3; *(_QWORD *)result = a3; result[2] = a4; } } return result; } //----- (004C0010) -------------------------------------------------------- int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) { __int64 v4; // rax int v5; // ebx int result; // eax v4 = a4; this[6] = a3; v5 = a2; for ( this[4] = a2; v4 > 0x7FFFFFFF; v4 -= 0x7FFFFFFFLL ) v5 -= 2; result = v5 + 2 * v4; this[5] = result; return result; } //----- (004C0070) -------------------------------------------------------- int __thiscall std::wstringbuf::overflow(int this, int a2) { int v2; // edi unsigned int v4; // edx _WORD *v5; // eax int v7; // edx int v8; // edx unsigned int v9; // edx wchar_t *v10; // edx _WORD *v11; // eax unsigned int v12; // edx int v13; // [esp+14h] [ebp-44h] unsigned int v14; // [esp+18h] [ebp-40h] size_t v15; // [esp+1Ch] [ebp-3Ch] int v16; // [esp+1Ch] [ebp-3Ch] void *v17; // [esp+28h] [ebp-30h] BYREF int v18; // [esp+2Ch] [ebp-2Ch] int v19[10]; // [esp+30h] [ebp-28h] BYREF v13 = *(_DWORD *)(this + 32); if ( (v13 & 0x10) == 0 ) return -1; if ( (_WORD)a2 != 0xFFFF ) { v2 = *(_DWORD *)(this + 36); if ( v2 == this + 44 ) v4 = 7; else v4 = *(_DWORD *)(this + 44); v14 = *(_DWORD *)(this + 24); v15 = *(_DWORD *)(this + 16); v5 = *(_WORD **)(this + 20); if ( (int)(v14 - v15) >> 1 < v4 ) { *(_DWORD *)(this + 16) = v2; v5 = (_WORD *)((char *)v5 + v2 - v15); *(_DWORD *)(this + 24) = v2 + 2 * v4; *(_DWORD *)(this + 20) = v5; if ( (v13 & 8) != 0 ) { v7 = *(_DWORD *)(this + 8); *(_DWORD *)(this + 12) = v2 + *(_DWORD *)(this + 12) - *(_DWORD *)(this + 4) + 2; v8 = v2 + v7 - *(_DWORD *)(this + 4); *(_DWORD *)(this + 4) = v2; *(_DWORD *)(this + 8) = v8; } goto LABEL_7; } if ( (unsigned int)v5 < v14 ) { LABEL_7: *v5 = a2; LABEL_8: *(_DWORD *)(this + 20) = v5 + 1; return a2; } if ( v4 != 0x1FFFFFFF ) { v9 = 2 * v4; v18 = 0; v17 = v19; LOWORD(v19[0]) = 0; if ( v9 <= 0x1FFFFFFF ) { if ( v9 < 0x200 ) v9 = 512; } else { v9 = 0x1FFFFFFF; } std::wstring::reserve((int)&v17, v9); v10 = *(wchar_t **)(this + 16); v16 = v18; if ( v10 ) { std::wstring::_M_replace((int)&v17, 0, v18, v10, (*(_DWORD *)(this + 24) - (int)v10) >> 1); v16 = v18; } v11 = v17; if ( v17 == v19 ) v12 = 7; else v12 = v19[0]; if ( v16 + 1 > v12 ) { std::wstring::_M_mutate((const wchar_t **)&v17, v16, 0, 0, 1u); v11 = v17; } v11[v16] = a2; v18 = v16 + 1; v11[v16 + 1] = 0; std::wstring::swap((wchar_t **)(this + 36), (int)&v17); std::wstringbuf::_M_sync( (_DWORD *)this, *(_DWORD **)(this + 36), (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1, (*(_DWORD *)(this + 20) - *(_DWORD *)(this + 16)) >> 1); if ( v17 != v19 ) operator delete(v17); v5 = *(_WORD **)(this + 20); goto LABEL_8; } return -1; } return 0; } //----- (004C02D0) -------------------------------------------------------- int __thiscall std::wstringbuf::pbackfail(int this, int a2) { unsigned int v2; // eax int v3; // edx int v4; // esi v2 = *(_DWORD *)(this + 8); v3 = -1; if ( v2 <= *(_DWORD *)(this + 4) ) return v3; if ( (_WORD)a2 == 0xFFFF ) { *(_DWORD *)(this + 8) = v2 - 2; return 0; } v4 = *(unsigned __int16 *)(v2 - 2); if ( (*(_BYTE *)(this + 32) & 0x10) == 0 && (_WORD)v4 != (_WORD)a2 ) return v3; *(_DWORD *)(this + 8) = v2 - 2; v3 = v4; if ( (_WORD)v4 == (_WORD)a2 ) return v3; *(_WORD *)(v2 - 2) = a2; return a2; } //----- (004C0330) -------------------------------------------------------- int __fastcall std::wstringbuf::showmanyc(int a1) { unsigned int v1; // edx unsigned int v2; // eax if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) return -1; v1 = *(_DWORD *)(a1 + 20); v2 = *(_DWORD *)(a1 + 12); if ( v1 ) { if ( v1 > v2 ) { *(_DWORD *)(a1 + 12) = v1; v2 = v1; } } return (int)(v2 - *(_DWORD *)(a1 + 8)) >> 1; } //----- (004C0360) -------------------------------------------------------- int __fastcall std::wstringbuf::underflow(int a1) { unsigned int v1; // eax unsigned int v2; // edx unsigned __int16 *v3; // eax if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) return -1; v1 = *(_DWORD *)(a1 + 20); v2 = *(_DWORD *)(a1 + 12); if ( v1 ) { if ( v1 > v2 ) { *(_DWORD *)(a1 + 12) = v1; v2 = v1; } } v3 = *(unsigned __int16 **)(a1 + 8); if ( v2 > (unsigned int)v3 ) return *v3; else return -1; } //----- (004C0390) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2) { unsigned int v3; // eax int v4; // ecx int v5; // eax int v6; // eax int v7; // eax int v8; // esi int v9; // edi int v10; // esi const std::locale *v12; // [esp+4h] [ebp-74h] int v13; // [esp+1Ch] [ebp-5Ch] int v15; // [esp+30h] [ebp-48h] int v16; // [esp+34h] [ebp-44h] int v17; // [esp+38h] [ebp-40h] int v18; // [esp+40h] [ebp-38h] int v19; // [esp+48h] [ebp-30h] int v20; // [esp+4Ch] [ebp-2Ch] int v21; // [esp+50h] [ebp-28h] int v22; // [esp+58h] [ebp-20h] v15 = -1; v16 = -1; v17 = -1; v13 = *(_DWORD *)(a2 + 36); v3 = *(_DWORD *)(a2 + 4); v18 = -1; v19 = -1; v20 = -1; v21 = -1; v22 = -1; if ( !v3 ) { v4 = *(_DWORD *)(a2 + 16); if ( !v4 ) goto LABEL_7; goto LABEL_3; } v15 = (int)(v3 - v13) >> 1; v16 = (int)(v3 - v13) >> 31; v17 = (*(_DWORD *)(a2 + 8) - v13) >> 1; v3 = *(_DWORD *)(a2 + 12); v18 = (int)(v3 - v13) >> 1; v4 = *(_DWORD *)(a2 + 16); if ( v4 ) { LABEL_3: v19 = (v4 - v13) >> 1; v20 = (v4 - v13) >> 31; v21 = (*(_DWORD *)(a2 + 20) - v4) >> 1; v22 = (*(_DWORD *)(a2 + 24) - v13) >> 1; if ( v3 < *(_DWORD *)(a2 + 20) ) v3 = *(_DWORD *)(a2 + 20); } if ( v3 ) *(_DWORD *)(a2 + 40) = (int)(v3 - v13) >> 1; LABEL_7: std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v12); v5 = *(_DWORD *)(a2 + 32); *(_DWORD *)this = &off_4F5958; *(_DWORD *)(this + 36) = this + 44; *(_DWORD *)(this + 32) = v5; v6 = *(_DWORD *)(a2 + 36); if ( v6 == a2 + 44 ) { wmemcpy((wchar_t *)(this + 44), (const wchar_t *)(a2 + 44), 8u); } else { *(_DWORD *)(this + 36) = v6; *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); } v7 = *(_DWORD *)(a2 + 40); *(_DWORD *)(a2 + 36) = a2 + 44; *(_DWORD *)(a2 + 40) = 0; *(_DWORD *)(this + 40) = v7; *(_WORD *)(a2 + 44) = 0; v8 = *(_DWORD *)(this + 36); if ( (v15 & v16) != -1 ) { *(_DWORD *)(this + 4) = v8 + 2 * v15; *(_DWORD *)(this + 8) = v8 + 2 * v17; *(_DWORD *)(this + 12) = v8 + 2 * v18; } if ( (v20 & v19) != -1 ) { v9 = v8 + 2 * v22; v10 = v8 + 2 * v19; *(_DWORD *)(this + 24) = v9; *(_DWORD *)(this + 16) = v10; *(_DWORD *)(this + 20) = v10 + 2 * v21; } return std::wstringbuf::_M_sync((_DWORD *)a2, *(_DWORD **)(a2 + 36), 0, 0); } // 4C053F: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C048D: variable 'v12' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); //----- (004C0600) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3) { const wchar_t *v4; // edi int v5; // eax _DWORD *v6; // eax int v7; // eax int result; // eax wchar_t *S2; // [esp+4h] [ebp-18h] v4 = (const wchar_t *)(a2 + 11); std::wstreambuf::basic_streambuf((_DWORD *)this, (int)a2, (const std::locale *)S2); v5 = a2[8]; *(_DWORD *)this = &off_4F5958; *(_DWORD *)(this + 36) = this + 44; *(_DWORD *)(this + 32) = v5; v6 = (_DWORD *)a2[9]; if ( v6 == a2 + 11 ) { wmemcpy((wchar_t *)(this + 44), v4, 8u); } else { *(_DWORD *)(this + 36) = v6; *(_DWORD *)(this + 44) = a2[11]; } v7 = a2[10]; a2[9] = v4; a2[10] = 0; *(_DWORD *)(this + 40) = v7; result = 0; *((_WORD *)a2 + 22) = 0; return result; } // 4C0612: variable 'S2' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); //----- (004C0680) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3) { int v4; // edx unsigned int v5; // eax wchar_t *v7; // [esp+0h] [ebp-28h] int v8; // [esp+8h] [ebp-20h] *(_DWORD *)this = &off_4F6454; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; std::locale::locale((_DWORD *)(this + 28)); *(_DWORD *)this = &off_4F5958; *(_DWORD *)(this + 32) = 0; v4 = *(_DWORD *)(a2 + 4); LOBYTE(v8) = 0; v7 = *(wchar_t **)a2; *(_DWORD *)(this + 36) = this + 44; std::wstring::_M_construct((wchar_t **)(this + 36), v7, (int)&v7[v4], v8); *(_DWORD *)(this + 32) = a3; v5 = 0; if ( (a3 & 3) != 0 ) v5 = *(_DWORD *)(this + 40); return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v5); } // 4C06F8: variable 'v8' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C0750) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx int result; // eax v3 = this + 7; *(v3 - 7) = &off_4F6454; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_4F5958; this[10] = 0; this[8] = a2; this[9] = this + 11; result = 0; *((_WORD *)this + 22) = 0; return result; } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C07C0) -------------------------------------------------------- int __fastcall std::wstringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_4F6454; *(v2 - 6) = 0; *(v2 - 5) = 0; *(v2 - 4) = 0; *(v2 - 3) = 0; *(v2 - 2) = 0; *(v2 - 1) = 0; std::locale::locale(v2); *(_DWORD *)a1 = &off_4F5958; *(_DWORD *)(a1 + 36) = a1 + 44; result = 0; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 40) = 0; *(_WORD *)(a1 + 44) = 0; return result; } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C0830) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2) { unsigned int v3; // eax int v4; // ecx int v5; // eax int v6; // eax int v7; // eax int v8; // esi int v9; // edi int v10; // esi const std::locale *v12; // [esp+4h] [ebp-74h] int v13; // [esp+1Ch] [ebp-5Ch] int v15; // [esp+30h] [ebp-48h] int v16; // [esp+34h] [ebp-44h] int v17; // [esp+38h] [ebp-40h] int v18; // [esp+40h] [ebp-38h] int v19; // [esp+48h] [ebp-30h] int v20; // [esp+4Ch] [ebp-2Ch] int v21; // [esp+50h] [ebp-28h] int v22; // [esp+58h] [ebp-20h] v15 = -1; v16 = -1; v17 = -1; v13 = *(_DWORD *)(a2 + 36); v3 = *(_DWORD *)(a2 + 4); v18 = -1; v19 = -1; v20 = -1; v21 = -1; v22 = -1; if ( !v3 ) { v4 = *(_DWORD *)(a2 + 16); if ( !v4 ) goto LABEL_7; goto LABEL_3; } v15 = (int)(v3 - v13) >> 1; v16 = (int)(v3 - v13) >> 31; v17 = (*(_DWORD *)(a2 + 8) - v13) >> 1; v3 = *(_DWORD *)(a2 + 12); v18 = (int)(v3 - v13) >> 1; v4 = *(_DWORD *)(a2 + 16); if ( v4 ) { LABEL_3: v19 = (v4 - v13) >> 1; v20 = (v4 - v13) >> 31; v21 = (*(_DWORD *)(a2 + 20) - v4) >> 1; v22 = (*(_DWORD *)(a2 + 24) - v13) >> 1; if ( v3 < *(_DWORD *)(a2 + 20) ) v3 = *(_DWORD *)(a2 + 20); } if ( v3 ) *(_DWORD *)(a2 + 40) = (int)(v3 - v13) >> 1; LABEL_7: std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v12); v5 = *(_DWORD *)(a2 + 32); *(_DWORD *)this = &off_4F5958; *(_DWORD *)(this + 36) = this + 44; *(_DWORD *)(this + 32) = v5; v6 = *(_DWORD *)(a2 + 36); if ( v6 == a2 + 44 ) { wmemcpy((wchar_t *)(this + 44), (const wchar_t *)(a2 + 44), 8u); } else { *(_DWORD *)(this + 36) = v6; *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); } v7 = *(_DWORD *)(a2 + 40); *(_DWORD *)(a2 + 36) = a2 + 44; *(_DWORD *)(a2 + 40) = 0; *(_DWORD *)(this + 40) = v7; *(_WORD *)(a2 + 44) = 0; v8 = *(_DWORD *)(this + 36); if ( (v15 & v16) != -1 ) { *(_DWORD *)(this + 4) = v8 + 2 * v15; *(_DWORD *)(this + 8) = v8 + 2 * v17; *(_DWORD *)(this + 12) = v8 + 2 * v18; } if ( (v20 & v19) != -1 ) { v9 = v8 + 2 * v22; v10 = v8 + 2 * v19; *(_DWORD *)(this + 24) = v9; *(_DWORD *)(this + 16) = v10; *(_DWORD *)(this + 20) = v10 + 2 * v21; } return std::wstringbuf::_M_sync((_DWORD *)a2, *(_DWORD **)(a2 + 36), 0, 0); } // 4C09DF: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C092D: variable 'v12' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); //----- (004C0AA0) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3) { const wchar_t *v4; // edi int v5; // eax _DWORD *v6; // eax int v7; // eax int result; // eax wchar_t *S2; // [esp+4h] [ebp-18h] v4 = (const wchar_t *)(a2 + 11); std::wstreambuf::basic_streambuf((_DWORD *)this, (int)a2, (const std::locale *)S2); v5 = a2[8]; *(_DWORD *)this = &off_4F5958; *(_DWORD *)(this + 36) = this + 44; *(_DWORD *)(this + 32) = v5; v6 = (_DWORD *)a2[9]; if ( v6 == a2 + 11 ) { wmemcpy((wchar_t *)(this + 44), v4, 8u); } else { *(_DWORD *)(this + 36) = v6; *(_DWORD *)(this + 44) = a2[11]; } v7 = a2[10]; a2[9] = v4; a2[10] = 0; *(_DWORD *)(this + 40) = v7; result = 0; *((_WORD *)a2 + 22) = 0; return result; } // 4C0AB2: variable 'S2' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); //----- (004C0B20) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3) { int v4; // edx unsigned int v5; // eax wchar_t *v7; // [esp+0h] [ebp-28h] int v8; // [esp+8h] [ebp-20h] *(_DWORD *)this = &off_4F6454; *(_DWORD *)(this + 4) = 0; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 12) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 24) = 0; std::locale::locale((_DWORD *)(this + 28)); *(_DWORD *)this = &off_4F5958; *(_DWORD *)(this + 32) = 0; v4 = *(_DWORD *)(a2 + 4); LOBYTE(v8) = 0; v7 = *(wchar_t **)a2; *(_DWORD *)(this + 36) = this + 44; std::wstring::_M_construct((wchar_t **)(this + 36), v7, (int)&v7[v4], v8); *(_DWORD *)(this + 32) = a3; v5 = 0; if ( (a3 & 3) != 0 ) v5 = *(_DWORD *)(this + 40); return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v5); } // 4C0B98: variable 'v8' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C0BF0) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx int result; // eax v3 = this + 7; *(v3 - 7) = &off_4F6454; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_4F5958; this[10] = 0; this[8] = a2; this[9] = this + 11; result = 0; *((_WORD *)this + 22) = 0; return result; } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C0C60) -------------------------------------------------------- int __fastcall std::wstringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_4F6454; *(v2 - 6) = 0; *(v2 - 5) = 0; *(v2 - 4) = 0; *(v2 - 3) = 0; *(v2 - 2) = 0; *(v2 - 1) = 0; std::locale::locale(v2); *(_DWORD *)a1 = &off_4F5958; *(_DWORD *)(a1 + 36) = a1 + 44; result = 0; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 40) = 0; *(_WORD *)(a1 + 44) = 0; return result; } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C0CD0) -------------------------------------------------------- void __fastcall std::wstringbuf::~wstringbuf(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[9]; *a1 = &off_4F5958; if ( v2 != a1 + 11 ) operator delete(v2); *a1 = &off_4F6454; std::locale::~locale((_DWORD **)a1 + 7); operator delete(a1); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C0D10) -------------------------------------------------------- void __fastcall std::wstringbuf::~wstringbuf(int a1) { void *v2; // eax v2 = *(void **)(a1 + 36); *(_DWORD *)a1 = &off_4F5958; if ( v2 != (void *)(a1 + 44) ) operator delete(v2); *(_DWORD *)a1 = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C0D40) -------------------------------------------------------- int __thiscall std::wstringbuf::operator=(int this, int a2) { unsigned int v2; // eax int v3; // edx int v4; // ecx unsigned int v5; // edi int v6; // ecx wchar_t *v7; // edx wchar_t *v8; // eax int v9; // ebx _DWORD *v10; // ecx int v11; // esi int v12; // edx int v13; // edi __int64 v14; // rax int v15; // edi int v16; // esi int v17; // edi int v19; // ecx const std::locale *v20; // [esp+4h] [ebp-74h] const std::locale *v21; // [esp+4h] [ebp-74h] int v22; // [esp+18h] [ebp-60h] _DWORD *v24; // [esp+20h] [ebp-58h] BYREF _DWORD *v25; // [esp+24h] [ebp-54h] BYREF _DWORD *v26; // [esp+28h] [ebp-50h] int v27; // [esp+30h] [ebp-48h] int v28; // [esp+34h] [ebp-44h] int v29; // [esp+38h] [ebp-40h] int v30; // [esp+3Ch] [ebp-3Ch] __int64 v31; // [esp+40h] [ebp-38h] int v32; // [esp+48h] [ebp-30h] int v33; // [esp+4Ch] [ebp-2Ch] __int64 v34; // [esp+50h] [ebp-28h] int v35; // [esp+58h] [ebp-20h] int v36; // [esp+5Ch] [ebp-1Ch] v26 = (_DWORD *)this; v2 = *(_DWORD *)(a2 + 4); v27 = -1; v28 = -1; v3 = *(_DWORD *)(a2 + 36); v29 = -1; v4 = *(_DWORD *)(a2 + 16); v30 = -1; v31 = -1LL; v32 = -1; v33 = -1; v34 = -1LL; v35 = -1; v36 = -1; if ( !v2 ) { if ( !v4 ) goto LABEL_7; goto LABEL_3; } v27 = (int)(v2 - v3) >> 1; v28 = (int)(v2 - v3) >> 31; v29 = (*(_DWORD *)(a2 + 8) - v3) >> 1; v30 = v29 >> 31; v2 = *(_DWORD *)(a2 + 12); v31 = (int)(v2 - v3) >> 1; if ( v4 ) { LABEL_3: v32 = (v4 - v3) >> 1; v33 = (v4 - v3) >> 31; v5 = *(_DWORD *)(a2 + 20); v34 = (int)(v5 - v4) >> 1; v35 = (*(_DWORD *)(a2 + 24) - v3) >> 1; v36 = v35 >> 31; if ( v2 < v5 ) v2 = v5; } if ( v2 ) *(_DWORD *)(a2 + 40) = (int)(v2 - v3) >> 1; LABEL_7: std::wstreambuf::operator=((volatile signed __int32 **)this, a2); std::locale::locale((volatile signed __int32 **)&v24, (volatile signed __int32 **)(a2 + 28), v20); std::locale::locale((volatile signed __int32 **)&v25, (volatile signed __int32 **)(this + 28), v21); (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)this + 8))(this, &v24); std::locale::operator=((volatile signed __int32 **)(this + 28), (volatile signed __int32 **)&v24); std::locale::~locale(&v25); std::locale::~locale(&v24); v6 = *(_DWORD *)(a2 + 36); v7 = (wchar_t *)(a2 + 44); *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); v8 = *(wchar_t **)(this + 36); if ( v6 == a2 + 44 ) { v19 = *(_DWORD *)(a2 + 40); if ( v19 ) { if ( v19 == 1 ) { *v8 = *(_WORD *)(a2 + 44); } else { wmemcpy(v8, (const wchar_t *)(a2 + 44), *(_DWORD *)(a2 + 40)); v19 = *(_DWORD *)(a2 + 40); v7 = *(wchar_t **)(a2 + 36); v8 = *(wchar_t **)(this + 36); } } *(_DWORD *)(this + 40) = v19; v8[v19] = 0; v8 = v7; } else { v22 = *(_DWORD *)(a2 + 40); if ( v8 == (wchar_t *)(this + 44) ) { *(_DWORD *)(this + 36) = v6; *(_DWORD *)(this + 40) = v22; *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); } else { v9 = *(_DWORD *)(this + 44); *(_DWORD *)(this + 36) = v6; *(_DWORD *)(this + 40) = v22; *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); if ( v8 ) { *(_DWORD *)(a2 + 36) = v8; *(_DWORD *)(a2 + 44) = v9; goto LABEL_11; } } *(_DWORD *)(a2 + 36) = v7; v8 = (wchar_t *)(a2 + 44); } LABEL_11: *(_DWORD *)(a2 + 40) = 0; *v8 = 0; std::wstringbuf::_M_sync((_DWORD *)a2, v8, 0, 0); v10 = v26; v11 = v26[9]; if ( (v27 & v28) != -1 ) { v12 = v31; v13 = v29; v26[1] = v11 + 2 * v27; v10[2] = v11 + 2 * v13; v10[3] = v11 + 2 * v12; } if ( (v33 & v32) != -1 ) { v14 = v34; v15 = v11 + 2 * v35; v16 = v11 + 2 * v32; v10[6] = v15; v10[4] = v16; if ( v14 > 0x7FFFFFFF ) { v17 = v16 - 2; do { v16 = v17; v14 -= 0x7FFFFFFFLL; v17 -= 2; } while ( v14 > 0x7FFFFFFF ); } v10[5] = v16 + 2 * v14; } return this; } // 4C0E4C: variable 'v20' is possibly undefined // 4C0E5A: variable 'v21' is possibly undefined //----- (004C1070) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::messages::messages(this, a3); *this = &off_4F5998; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F5998: using guessed type int (*off_4F5998)(); //----- (004C1110) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { return std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (004C1120) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::messages::messages(this, a3); *this = &off_4F5998; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F5998: using guessed type int (*off_4F5998)(); //----- (004C11C0) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { return std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (004C11D0) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5C90; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4C11E9: variable 'v2' is possibly undefined // 4F5C90: using guessed type int (*off_4F5C90)(); //----- (004C1200) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C90; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4C1209: variable 'v1' is possibly undefined // 4F5C90: using guessed type int (*off_4F5C90)(); //----- (004C1230) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C90; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4C1239: variable 'v1' is possibly undefined // 4F5C90: using guessed type int (*off_4F5C90)(); //----- (004C1260) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::messages::messages(this, a3); *this = &off_4F59B4; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F59B4: using guessed type int (*off_4F59B4)(); //----- (004C1300) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { return std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (004C1310) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { unsigned __int8 result; // al bool v5; // zf result = std::messages::messages(this, a3); *this = &off_4F59B4; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { v5 = strcmp((const char *)a2, "POSIX") == 0; result = !v5; if ( !v5 ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); } } return result; } // 4F59B4: using guessed type int (*off_4F59B4)(); //----- (004C13B0) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { return std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (004C13C0) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5CAC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4C13D9: variable 'v2' is possibly undefined // 4F5CAC: using guessed type int (*off_4F5CAC)(); //----- (004C13F0) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5CAC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4C13F9: variable 'v1' is possibly undefined // 4F5CAC: using guessed type int (*off_4F5CAC)(); //----- (004C1420) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5CAC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4C1429: variable 'v1' is possibly undefined // 4F5CAC: using guessed type int (*off_4F5CAC)(); //----- (004C1450) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5CC8; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F59D0; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::numpunct::_M_initialize_numpunct(this, v6[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F59D0: using guessed type int (*off_4F59D0)(); // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004C1540) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5CC8; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F59D0; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::numpunct::_M_initialize_numpunct(this, v9[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F59D0: using guessed type int (*off_4F59D0)(); // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004C1630) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5CC8; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F59D0; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::numpunct::_M_initialize_numpunct(this, v6[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F59D0: using guessed type int (*off_4F59D0)(); // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004C1720) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5CC8; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F59D0; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::numpunct::_M_initialize_numpunct(this, v9[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F59D0: using guessed type int (*off_4F59D0)(); // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004C1810) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F59D0; std::numpunct::~numpunct(v2); operator delete(a1); } // 4C181C: variable 'v2' is possibly undefined // 4F59D0: using guessed type int (*off_4F59D0)(); //----- (004C1830) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F59D0; std::numpunct::~numpunct(a1); } // 4C1830: variable 'v1' is possibly undefined // 4F59D0: using guessed type int (*off_4F59D0)(); //----- (004C1840) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F59D0; std::numpunct::~numpunct(a1); } // 4C1840: variable 'v1' is possibly undefined // 4F59D0: using guessed type int (*off_4F59D0)(); //----- (004C1850) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5CEC; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F59F4; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::numpunct::_M_initialize_numpunct(this, v6[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F59F4: using guessed type int (*off_4F59F4)(); // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004C1940) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5CEC; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F59F4; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::numpunct::_M_initialize_numpunct(this, v9[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F59F4: using guessed type int (*off_4F59F4)(); // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004C1A30) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5CEC; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F59F4; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::numpunct::_M_initialize_numpunct(this, v6[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F59F4: using guessed type int (*off_4F59F4)(); // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004C1B20) -------------------------------------------------------- unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5CEC; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_4F59F4; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::numpunct::_M_initialize_numpunct(this, v9[0]); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F59F4: using guessed type int (*off_4F59F4)(); // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004C1C10) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F59F4; std::numpunct::~numpunct(v2); operator delete(a1); } // 4C1C1C: variable 'v2' is possibly undefined // 4F59F4: using guessed type int (*off_4F59F4)(); //----- (004C1C30) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F59F4; std::numpunct::~numpunct(a1); } // 4C1C30: variable 'v1' is possibly undefined // 4F59F4: using guessed type int (*off_4F59F4)(); //----- (004C1C40) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F59F4; std::numpunct::~numpunct(a1); } // 4C1C40: variable 'v1' is possibly undefined // 4F59F4: using guessed type int (*off_4F59F4)(); //----- (004C1C50) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F5A18; result = a3 != 0; this[1] = result; return result; } // 4F5A18: using guessed type int (*off_4F5A18)(); //----- (004C1C70) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F5A18; result = a3 != 0; this[1] = result; return result; } // 4F5A18: using guessed type int (*off_4F5A18)(); //----- (004C1C90) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F5A18; result = a3 != 0; this[1] = result; return result; } // 4F5A18: using guessed type int (*off_4F5A18)(); //----- (004C1CB0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F5A18; result = a3 != 0; this[1] = result; return result; } // 4F5A18: using guessed type int (*off_4F5A18)(); //----- (004C1CD0) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5D10; std::locale::facet::~facet(v2); operator delete(a1); } // 4C1CDC: variable 'v2' is possibly undefined // 4F5D10: using guessed type int (*off_4F5D10)(); //----- (004C1CF0) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D10; std::locale::facet::~facet(a1); } // 4C1CF0: variable 'v1' is possibly undefined // 4F5D10: using guessed type int (*off_4F5D10)(); //----- (004C1D00) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D10; std::locale::facet::~facet(a1); } // 4C1D00: variable 'v1' is possibly undefined // 4F5D10: using guessed type int (*off_4F5D10)(); //----- (004C1D10) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F5A44; result = a3 != 0; this[1] = result; return result; } // 4F5A44: using guessed type int (*off_4F5A44)(); //----- (004C1D30) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F5A44; result = a3 != 0; this[1] = result; return result; } // 4F5A44: using guessed type int (*off_4F5A44)(); //----- (004C1D50) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F5A44; result = a3 != 0; this[1] = result; return result; } // 4F5A44: using guessed type int (*off_4F5A44)(); //----- (004C1D70) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_4F5A44; result = a3 != 0; this[1] = result; return result; } // 4F5A44: using guessed type int (*off_4F5A44)(); //----- (004C1D90) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5D3C; std::locale::facet::~facet(v2); operator delete(a1); } // 4C1D9C: variable 'v2' is possibly undefined // 4F5D3C: using guessed type int (*off_4F5D3C)(); //----- (004C1DB0) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D3C; std::locale::facet::~facet(a1); } // 4C1DB0: variable 'v1' is possibly undefined // 4F5D3C: using guessed type int (*off_4F5D3C)(); //----- (004C1DC0) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D3C; std::locale::facet::~facet(a1); } // 4C1DC0: variable 'v1' is possibly undefined // 4F5D3C: using guessed type int (*off_4F5D3C)(); //----- (004C1DD0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5810; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5A70; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5810: using guessed type int (*off_4F5810)(); // 4F5A70: using guessed type int (*off_4F5A70)(); //----- (004C1ED0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5810; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5A70; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5810: using guessed type int (*off_4F5810)(); // 4F5A70: using guessed type int (*off_4F5A70)(); //----- (004C1FD0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5810; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5A70; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5810: using guessed type int (*off_4F5810)(); // 4F5A70: using guessed type int (*off_4F5A70)(); //----- (004C20D0) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5810; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5A70; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5810: using guessed type int (*off_4F5810)(); // 4F5A70: using guessed type int (*off_4F5A70)(); //----- (004C21D0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5A70; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4C21DC: variable 'v2' is possibly undefined // 4F5A70: using guessed type int (*off_4F5A70)(); //----- (004C21F0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5A70; std::moneypunct::~moneypunct(a1); } // 4C21F0: variable 'v1' is possibly undefined // 4F5A70: using guessed type int (*off_4F5A70)(); //----- (004C2200) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5A70; std::moneypunct::~moneypunct(a1); } // 4C2200: variable 'v1' is possibly undefined // 4F5A70: using guessed type int (*off_4F5A70)(); //----- (004C2210) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5844; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5AA4; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5844: using guessed type int (*off_4F5844)(); // 4F5AA4: using guessed type int (*off_4F5AA4)(); //----- (004C2310) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5844; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5AA4; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5844: using guessed type int (*off_4F5844)(); // 4F5AA4: using guessed type int (*off_4F5AA4)(); //----- (004C2410) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5844; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5AA4; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5844: using guessed type int (*off_4F5844)(); // 4F5AA4: using guessed type int (*off_4F5AA4)(); //----- (004C2510) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5844; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5AA4; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5844: using guessed type int (*off_4F5844)(); // 4F5AA4: using guessed type int (*off_4F5AA4)(); //----- (004C2610) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5AA4; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4C261C: variable 'v2' is possibly undefined // 4F5AA4: using guessed type int (*off_4F5AA4)(); //----- (004C2630) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5AA4; std::moneypunct::~moneypunct(a1); } // 4C2630: variable 'v1' is possibly undefined // 4F5AA4: using guessed type int (*off_4F5AA4)(); //----- (004C2640) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5AA4; std::moneypunct::~moneypunct(a1); } // 4C2640: variable 'v1' is possibly undefined // 4F5AA4: using guessed type int (*off_4F5AA4)(); //----- (004C2650) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5878; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5AD8; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5878: using guessed type int (*off_4F5878)(); // 4F5AD8: using guessed type int (*off_4F5AD8)(); //----- (004C2750) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5878; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5AD8; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5878: using guessed type int (*off_4F5878)(); // 4F5AD8: using guessed type int (*off_4F5AD8)(); //----- (004C2850) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F5878; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5AD8; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F5878: using guessed type int (*off_4F5878)(); // 4F5AD8: using guessed type int (*off_4F5AD8)(); //----- (004C2950) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F5878; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5AD8; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F5878: using guessed type int (*off_4F5878)(); // 4F5AD8: using guessed type int (*off_4F5AD8)(); //----- (004C2A50) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5AD8; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4C2A5C: variable 'v2' is possibly undefined // 4F5AD8: using guessed type int (*off_4F5AD8)(); //----- (004C2A70) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5AD8; std::moneypunct::~moneypunct(a1); } // 4C2A70: variable 'v1' is possibly undefined // 4F5AD8: using guessed type int (*off_4F5AD8)(); //----- (004C2A80) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5AD8; std::moneypunct::~moneypunct(a1); } // 4C2A80: variable 'v1' is possibly undefined // 4F5AD8: using guessed type int (*off_4F5AD8)(); //----- (004C2A90) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F58AC; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5B0C; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F58AC: using guessed type int (*off_4F58AC)(); // 4F5B0C: using guessed type int (*off_4F5B0C)(); //----- (004C2B90) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F58AC; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5B0C; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F58AC: using guessed type int (*off_4F58AC)(); // 4F5B0C: using guessed type int (*off_4F5B0C)(); //----- (004C2C90) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { bool v4; // zf unsigned __int8 result; // al int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = &off_4F58AC; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5B0C; if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) { v4 = strcmp((const char *)a2, "POSIX") == 0; result = !v4; if ( !v4 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); } } return result; } // 4F58AC: using guessed type int (*off_4F58AC)(); // 4F5B0C: using guessed type int (*off_4F5B0C)(); //----- (004C2D90) -------------------------------------------------------- unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) { int **v4; // eax int **v5; // edi bool v6; // zf unsigned __int8 result; // al int **v8; // [esp+1Ch] [ebp-2Ch] int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF v4 = *a2; *this = &off_4F58AC; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_4F5B0C; if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) { v6 = strcmp((const char *)v8, "POSIX") == 0; result = !v6; if ( !v6 ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); } } return result; } // 4F58AC: using guessed type int (*off_4F58AC)(); // 4F5B0C: using guessed type int (*off_4F5B0C)(); //----- (004C2E90) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5B0C; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4C2E9C: variable 'v2' is possibly undefined // 4F5B0C: using guessed type int (*off_4F5B0C)(); //----- (004C2EB0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5B0C; std::moneypunct::~moneypunct(a1); } // 4C2EB0: variable 'v1' is possibly undefined // 4F5B0C: using guessed type int (*off_4F5B0C)(); //----- (004C2EC0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5B0C; std::moneypunct::~moneypunct(a1); } // 4C2EC0: variable 'v1' is possibly undefined // 4F5B0C: using guessed type int (*off_4F5B0C)(); //----- (004C2ED0) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2) { _DWORD *v2; // esi unsigned int v4; // eax v2 = (_DWORD *)(this + 12); std::string::_M_replace((unsigned int *)(this + 48), 0, *(_DWORD *)(this + 52), *(char **)a2, *(_DWORD *)(a2 + 4)); v4 = 0; if ( (*(_BYTE *)(this + 44) & 3) != 0 ) v4 = *(_DWORD *)(this + 52); return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 48), 0, v4); } //----- (004C2F40) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::swap( _DWORD *this, _DWORD *a2) { int v3; // edi std::ios_base *v4; // esi int v5; // eax char v6; // dl char v7; // dl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v10); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; v8 = this[1]; *((_BYTE *)v4 + 117) = v7; this[1] = a2[1]; a2[1] = v8; return std::stringbuf::swap(this + 3, (int)(a2 + 3)); } // 4C2F64: variable 'v10' is possibly undefined //----- (004C2FE0) -------------------------------------------------------- char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream( _DWORD *this, _DWORD *a2) { int v3; // eax int v4; // eax int v5; // esi std::ios_base *v6; // esi int v7; // eax int v8; // edx unsigned int v9; // eax int v10; // ecx int v11; // eax _DWORD *v12; // edx int v13; // edx int v14; // eax int v15; // ecx int v16; // eax char *result; // eax std::ios_base *v18; // [esp+4h] [ebp-84h] const std::locale *v19; // [esp+4h] [ebp-84h] _DWORD *v20; // [esp+1Ch] [ebp-6Ch] _DWORD *v21; // [esp+20h] [ebp-68h] _DWORD *v22; // [esp+28h] [ebp-60h] __int64 v23; // [esp+40h] [ebp-48h] int v24; // [esp+48h] [ebp-40h] int v25; // [esp+50h] [ebp-38h] __int64 v26; // [esp+58h] [ebp-30h] int v27; // [esp+60h] [ebp-28h] int v28; // [esp+68h] [ebp-20h] v21 = this + 18; std::ios_base::ios_base(this + 18); *this = &unk_4F0DC4; *((_WORD *)this + 94) = 0; v3 = a2[1]; this[46] = 0; this[1] = v3; v4 = *a2; this[48] = 0; v5 = *(_DWORD *)(v4 - 12); this[49] = 0; this[50] = 0; v6 = (std::ios_base *)((char *)a2 + v5); this[18] = &unk_4F0DD8; this[51] = 0; std::ios_base::_M_move((int)v21, v6, v18); std::ios::_M_cache_locale(v21, (int)(this + 45)); v7 = *((_DWORD *)v6 + 28); *((_DWORD *)v6 + 28) = 0; this[48] = 0; this[46] = v7; v20 = a2 + 3; *((_WORD *)this + 94) = *((_WORD *)v6 + 58); v8 = a2[12]; v22 = this + 3; v9 = a2[4]; a2[1] = 0; v23 = -1LL; *this = &off_4F5B44; this[18] = off_4F5B6C; this[2] = off_4F5B58; v24 = -1; v25 = -1; v26 = -1LL; v27 = -1; v28 = -1; if ( !v9 ) { v10 = a2[7]; if ( !v10 ) goto LABEL_7; goto LABEL_3; } v23 = (int)(v9 - v8); v24 = a2[5] - v8; v9 = a2[6]; v25 = v9 - v8; v10 = a2[7]; if ( v10 ) { LABEL_3: v26 = v10 - v8; v27 = a2[8] - v10; v28 = a2[9] - v8; if ( v9 < a2[8] ) v9 = a2[8]; } if ( v9 ) a2[13] = v9 - v8; LABEL_7: std::streambuf::basic_streambuf(v22, (int)v20, v19); this[3] = &off_4F5918; v11 = a2[11]; this[12] = this + 14; this[11] = v11; v12 = (_DWORD *)a2[12]; if ( v12 == a2 + 14 ) { this[14] = a2[14]; this[15] = a2[15]; this[16] = a2[16]; this[17] = a2[17]; } else { this[12] = v12; this[14] = a2[14]; } v13 = a2[13]; a2[12] = a2 + 14; a2[13] = 0; this[13] = v13; *((_BYTE *)a2 + 56) = 0; v14 = this[12]; if ( ((unsigned int)v23 & HIDWORD(v23)) != -1 ) { this[4] = v14 + v23; this[5] = v14 + v24; this[6] = v14 + v25; } if ( ((unsigned int)v26 & HIDWORD(v26)) != -1 ) { v15 = v14 + v28; v16 = v26 + v14; this[9] = v15; this[7] = v16; this[8] = v27 + v16; } std::stringbuf::_M_sync(v20, (_DWORD *)a2[12], 0, 0); result = (char *)(this + 3); this[48] = v22; return result; } // 4C3254: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C3059: variable 'v18' is possibly undefined // 4C31A9: variable 'v19' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F5B44: using guessed type int (*off_4F5B44)(); // 4F5B58: using guessed type int (*off_4F5B58[2])(); // 4F5B6C: using guessed type int (*off_4F5B6C[2])(); //----- (004C3370) -------------------------------------------------------- BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( char *this, int a2, int a3) { int v3; // esi unsigned __int8 *v5; // edx int v6; // eax unsigned int v7; // eax int v9; // [esp+8h] [ebp-30h] v3 = (int)(this + 72); std::ios_base::ios_base((_DWORD *)this + 18); *(_DWORD *)this = &unk_4F0DC4; *((_DWORD *)this + 46) = 0; *((_WORD *)this + 94) = 0; *((_DWORD *)this + 48) = 0; *((_DWORD *)this + 49) = 0; *((_DWORD *)this + 50) = 0; *((_DWORD *)this + 51) = 0; *((_DWORD *)this + 18) = &unk_4F0DD8; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *((_DWORD *)this + 2) = &unk_4F0DEC; *((_DWORD *)this + 18) = &unk_4F0E00; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F5B44; *((_DWORD *)this + 18) = off_4F5B6C; *((_DWORD *)this + 2) = off_4F5B58; *((_DWORD *)this + 3) = &off_4F6414; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; *((_DWORD *)this + 8) = 0; *((_DWORD *)this + 9) = 0; std::locale::locale((_DWORD *)this + 10); *((_DWORD *)this + 3) = &off_4F5918; v5 = *(unsigned __int8 **)a2; v6 = *(_DWORD *)(a2 + 4); *((_DWORD *)this + 11) = 0; LOBYTE(v9) = 0; *((_DWORD *)this + 12) = this + 56; std::string::_M_construct((void **)this + 12, v5, (size_t)&v5[v6], v9); *((_DWORD *)this + 11) = a3; v7 = 0; if ( (a3 & 3) != 0 ) v7 = *((_DWORD *)this + 13); std::stringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v7); return std::ios::init(v3, (int)(this + 12)); } // 4C348A: variable 'v9' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F5B44: using guessed type int (*off_4F5B44)(); // 4F5B58: using guessed type int (*off_4F5B58[2])(); // 4F5B6C: using guessed type int (*off_4F5B6C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C3530) -------------------------------------------------------- BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( _DWORD *this, int a2) { int v2; // esi v2 = (int)(this + 18); std::ios_base::ios_base(this + 18); *this = &unk_4F0DC4; this[46] = 0; *((_WORD *)this + 94) = 0; this[48] = 0; this[49] = 0; this[50] = 0; this[51] = 0; this[18] = &unk_4F0DD8; this[1] = 0; std::ios::init(v2, 0); this[2] = &unk_4F0DEC; this[18] = &unk_4F0E00; std::ios::init(v2, 0); *this = &off_4F5B44; this[18] = off_4F5B6C; this[2] = off_4F5B58; this[3] = &off_4F6414; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); *((_BYTE *)this + 56) = 0; this[3] = &off_4F5918; this[11] = a2; this[12] = this + 14; this[13] = 0; return std::ios::init(v2, (int)(this + 3)); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5B44: using guessed type int (*off_4F5B44)(); // 4F5B58: using guessed type int (*off_4F5B58[2])(); // 4F5B6C: using guessed type int (*off_4F5B6C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C36A0) -------------------------------------------------------- BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1) { int v1; // esi v1 = a1 + 72; std::ios_base::ios_base((_DWORD *)(a1 + 72)); *(_DWORD *)a1 = &unk_4F0DC4; *(_DWORD *)(a1 + 184) = 0; *(_WORD *)(a1 + 188) = 0; *(_DWORD *)(a1 + 192) = 0; *(_DWORD *)(a1 + 196) = 0; *(_DWORD *)(a1 + 200) = 0; *(_DWORD *)(a1 + 204) = 0; *(_DWORD *)(a1 + 72) = &unk_4F0DD8; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_4F0DEC; *(_DWORD *)(a1 + 72) = &unk_4F0E00; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_4F5B44; *(_DWORD *)(a1 + 72) = off_4F5B6C; *(_DWORD *)(a1 + 8) = off_4F5B58; *(_DWORD *)(a1 + 12) = &off_4F6414; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 28) = 0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; std::locale::locale((_DWORD *)(a1 + 40)); *(_BYTE *)(a1 + 56) = 0; *(_DWORD *)(a1 + 12) = &off_4F5918; *(_DWORD *)(a1 + 44) = 24; *(_DWORD *)(a1 + 48) = a1 + 56; *(_DWORD *)(a1 + 52) = 0; return std::ios::init(v1, a1 + 12); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5B44: using guessed type int (*off_4F5B44)(); // 4F5B58: using guessed type int (*off_4F5B58[2])(); // 4F5B6C: using guessed type int (*off_4F5B6C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C3810) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // esi int v6; // edx __int16 v7; // ax int v8; // eax int v9; // edx int v10; // eax int v11; // edx int v12; // eax int v13; // edx unsigned int v14; // eax int v15; // ecx int v16; // eax _DWORD *v17; // edx int v18; // edx int v19; // eax int v20; // edi int v21; // eax int result; // eax std::ios_base *v23; // [esp+4h] [ebp-84h] const std::locale *v24; // [esp+4h] [ebp-84h] _DWORD *v25; // [esp+1Ch] [ebp-6Ch] std::ios_base *v26; // [esp+20h] [ebp-68h] int v27; // [esp+20h] [ebp-68h] _DWORD *v28; // [esp+28h] [ebp-60h] __int64 v29; // [esp+40h] [ebp-48h] int v30; // [esp+48h] [ebp-40h] int v31; // [esp+50h] [ebp-38h] __int64 v32; // [esp+58h] [ebp-30h] int v33; // [esp+60h] [ebp-28h] int v34; // [esp+68h] [ebp-20h] v4 = a2[2]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; this[1] = a3[1]; v26 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); v5 = (int)this + *(_DWORD *)(v4 - 12); std::ios_base::_M_move(v5, v26, v23); std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); *(_DWORD *)(v5 + 120) = 0; v6 = *((_DWORD *)v26 + 28); *((_DWORD *)v26 + 28) = 0; v7 = *((_WORD *)v26 + 58); *(_DWORD *)(v5 + 112) = v6; *(_WORD *)(v5 + 116) = v7; v8 = a2[4]; v9 = a2[5]; a3[1] = 0; this[2] = v8; *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v9; v10 = a2[1]; v11 = a2[6]; *this = v10; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[7]; v12 = *a2; v13 = a2[8]; *this = *a2; v29 = -1LL; *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; v25 = a3 + 3; this[2] = a2[9]; v28 = this + 3; v30 = -1; v27 = a3[12]; v14 = a3[4]; v31 = -1; v32 = -1LL; v33 = -1; v34 = -1; if ( !v14 ) { v15 = a3[7]; if ( !v15 ) goto LABEL_7; goto LABEL_3; } v29 = (int)(v14 - v27); v30 = a3[5] - v27; v14 = a3[6]; v31 = v14 - v27; v15 = a3[7]; if ( v15 ) { LABEL_3: v32 = v15 - v27; v33 = a3[8] - v15; v34 = a3[9] - v27; if ( v14 < a3[8] ) v14 = a3[8]; } if ( v14 ) a3[13] = v14 - v27; LABEL_7: std::streambuf::basic_streambuf(v28, (int)v25, v24); this[3] = (int)&off_4F5918; v16 = a3[11]; this[12] = (int)(this + 14); this[11] = v16; v17 = (_DWORD *)a3[12]; if ( v17 == a3 + 14 ) { this[14] = a3[14]; this[15] = a3[15]; this[16] = a3[16]; this[17] = a3[17]; } else { this[12] = (int)v17; this[14] = a3[14]; } v18 = a3[13]; a3[12] = a3 + 14; a3[13] = 0; this[13] = v18; *((_BYTE *)a3 + 56) = 0; v19 = this[12]; if ( ((unsigned int)v29 & HIDWORD(v29)) != -1 ) { this[4] = v19 + v29; this[5] = v19 + v30; this[6] = v19 + v31; } if ( ((unsigned int)v32 & HIDWORD(v32)) != -1 ) { v20 = v19 + v34; v21 = v32 + v19; this[9] = v20; this[7] = v21; this[8] = v33 + v21; } std::stringbuf::_M_sync(v25, (_DWORD *)a3[12], 0, 0); result = *(_DWORD *)(*this - 12); *(int *)((char *)this + result + 120) = (int)v28; return result; } // 4C3A77: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C384A: variable 'v23' is possibly undefined // 4C39C0: variable 'v24' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); //----- (004C3B80) -------------------------------------------------------- BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( char *this, int *a2, int a3, int a4) { int v5; // eax int v6; // eax char *v7; // ecx int v8; // eax int v9; // edx int v10; // eax int v11; // edx int v12; // eax unsigned __int8 *v13; // edx int v14; // eax unsigned int v15; // eax int v17; // [esp+8h] [ebp-30h] v5 = a2[2]; *(_DWORD *)this = v5; *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; *((_DWORD *)this + 1) = 0; std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); v6 = a2[4]; *((_DWORD *)this + 2) = v6; v7 = &this[*(_DWORD *)(v6 - 12) + 8]; *(_DWORD *)v7 = a2[5]; std::ios::init((int)v7, 0); v8 = a2[1]; v9 = a2[6]; *(_DWORD *)this = v8; *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; *((_DWORD *)this + 2) = a2[7]; v10 = *a2; v11 = a2[8]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; v12 = a2[9]; *((_DWORD *)this + 3) = &off_4F6414; *((_DWORD *)this + 2) = v12; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; *((_DWORD *)this + 8) = 0; *((_DWORD *)this + 9) = 0; std::locale::locale((_DWORD *)this + 10); *((_DWORD *)this + 3) = &off_4F5918; v13 = *(unsigned __int8 **)a3; v14 = *(_DWORD *)(a3 + 4); *((_DWORD *)this + 11) = 0; LOBYTE(v17) = 0; *((_DWORD *)this + 12) = this + 56; std::string::_M_construct((void **)this + 12, v13, (size_t)&v13[v14], v17); *((_DWORD *)this + 11) = a4; v15 = 0; if ( (a4 & 3) != 0 ) v15 = *((_DWORD *)this + 13); std::stringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v15); return std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); } // 4C3C71: variable 'v17' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C3D30) -------------------------------------------------------- BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2, int a3) { int v4; // eax int v5; // eax _DWORD *v6; // ecx int v7; // eax int v8; // edx int v9; // eax int v10; // edx int v11; // eax int v12; // eax v4 = a2[2]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); v5 = a2[4]; this[2] = v5; v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); *v6 = a2[5]; std::ios::init((int)v6, 0); v7 = a2[1]; v8 = a2[6]; *this = v7; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; this[2] = a2[7]; v9 = *a2; v10 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; v11 = a2[9]; this[3] = (int)&off_4F6414; this[2] = v11; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); *((_BYTE *)this + 56) = 0; this[13] = 0; this[11] = a3; this[12] = (int)(this + 14); v12 = *this; this[3] = (int)&off_4F5918; return std::ios::init((int)this + *(_DWORD *)(v12 - 12), (int)(this + 3)); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C3E90) -------------------------------------------------------- BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2) { int v3; // eax int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx int v8; // eax int v9; // edx int v10; // eax int v11; // eax int v12; // ecx v3 = a2[2]; *this = v3; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); v4 = a2[4]; this[2] = v4; v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); *v5 = a2[5]; std::ios::init((int)v5, 0); v6 = a2[1]; v7 = a2[6]; *this = v6; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; this[2] = a2[7]; v8 = *a2; v9 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; v10 = a2[9]; this[3] = (int)&off_4F6414; this[2] = v10; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); *((_BYTE *)this + 56) = 0; this[12] = (int)(this + 14); v11 = *this; this[13] = 0; this[3] = (int)&off_4F5918; v12 = *(_DWORD *)(v11 - 12); this[11] = 24; return std::ios::init((int)this + v12, (int)(this + 3)); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C3FF0) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[12]; *a1 = &off_4F5B44; a1[18] = off_4F5B6C; a1[2] = off_4F5B58; a1[3] = &off_4F5918; if ( v2 != a1 + 14 ) operator delete(v2); a1[3] = &off_4F6414; std::locale::~locale((_DWORD **)a1 + 10); a1[2] = &unk_4F0DEC; *a1 = &unk_4F0DC4; a1[1] = 0; a1[18] = &off_4F6E10; std::ios_base::~ios_base((int)(a1 + 18)); operator delete(a1); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5B44: using guessed type int (*off_4F5B44)(); // 4F5B58: using guessed type int (*off_4F5B58[2])(); // 4F5B6C: using guessed type int (*off_4F5B6C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004C4070) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1) { void *v2; // eax v2 = *(void **)(a1 + 48); *(_DWORD *)a1 = &off_4F5B44; *(_DWORD *)(a1 + 72) = off_4F5B6C; *(_DWORD *)(a1 + 8) = off_4F5B58; *(_DWORD *)(a1 + 12) = &off_4F5918; if ( v2 != (void *)(a1 + 56) ) operator delete(v2); *(_DWORD *)(a1 + 12) = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_4F0DEC; *(_DWORD *)a1 = &unk_4F0DC4; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 72) = &off_4F6E10; std::ios_base::~ios_base(a1 + 72); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5B44: using guessed type int (*off_4F5B44)(); // 4F5B58: using guessed type int (*off_4F5B58[2])(); // 4F5B6C: using guessed type int (*off_4F5B6C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004C40E0) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream( char *this, int *a2) { int v3; // eax int v4; // eax int v5; // eax int v6; // eax int v7; // eax int result; // eax v3 = *a2; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[8]; v4 = a2[9]; *((_DWORD *)this + 3) = &off_4F5918; *((_DWORD *)this + 2) = v4; if ( *((char **)this + 12) != this + 56 ) operator delete(*((void **)this + 12)); *((_DWORD *)this + 3) = &off_4F6414; std::locale::~locale((_DWORD **)this + 10); v5 = a2[1]; *(_DWORD *)this = v5; *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[6]; *((_DWORD *)this + 2) = a2[7]; v6 = a2[4]; *((_DWORD *)this + 2) = v6; *(_DWORD *)&this[*(_DWORD *)(v6 - 12) + 8] = a2[5]; v7 = a2[2]; *(_DWORD *)this = v7; result = *(_DWORD *)(v7 - 12); *(_DWORD *)&this[result] = a2[3]; *((_DWORD *)this + 1) = 0; return result; } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C4170) -------------------------------------------------------- char *__thiscall std::basic_stringstream,std::allocator>::operator=( char *this, int a2) { int v2; // esi int v3; // edi int v4; // eax int v5; // edx int v6; // edx int v7; // eax int v8; // edx unsigned int v9; // eax int v10; // ecx char *v11; // eax const void *v12; // edx int v13; // esi _DWORD *v14; // edx int v15; // eax int v16; // ebx int v17; // edi __int64 v18; // rcx int v19; // edi int v20; // eax int v21; // edi int v23; // ecx std::ios_base *v24; // [esp+4h] [ebp-74h] const std::locale *v25; // [esp+4h] [ebp-74h] const std::locale *v26; // [esp+4h] [ebp-74h] unsigned int v27; // [esp+10h] [ebp-68h] int v28; // [esp+14h] [ebp-64h] _DWORD *v30; // [esp+20h] [ebp-58h] BYREF _DWORD *v31; // [esp+24h] [ebp-54h] BYREF _DWORD *v32; // [esp+28h] [ebp-50h] __int64 v33; // [esp+30h] [ebp-48h] int v34; // [esp+38h] [ebp-40h] int v35; // [esp+3Ch] [ebp-3Ch] __int64 v36; // [esp+40h] [ebp-38h] __int64 v37; // [esp+48h] [ebp-30h] __int64 v38; // [esp+50h] [ebp-28h] int v39; // [esp+58h] [ebp-20h] int v40; // [esp+5Ch] [ebp-1Ch] v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); std::ios_base::_M_swap(v2, (std::ios_base *)v3, v24); std::ios::_M_cache_locale((_DWORD *)v2, v2 + 108); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); v4 = *(_DWORD *)(v2 + 112); v5 = *(_DWORD *)(v3 + 112); v33 = -1LL; *(_DWORD *)(v2 + 112) = v5; *(_DWORD *)(v3 + 112) = v4; LOBYTE(v4) = *(_BYTE *)(v3 + 116); LOBYTE(v5) = *(_BYTE *)(v2 + 116); v34 = -1; *(_BYTE *)(v2 + 116) = v4; LOBYTE(v4) = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 116) = v5; LOBYTE(v5) = *(_BYTE *)(v2 + 117); *(_BYTE *)(v2 + 117) = v4; *(_BYTE *)(v3 + 117) = v5; v6 = *(_DWORD *)(a2 + 4); v35 = -1; v7 = *((_DWORD *)this + 1); LODWORD(v36) = -1; *((_DWORD *)this + 1) = v6; *(_DWORD *)(a2 + 4) = v7; v32 = this + 12; HIDWORD(v36) = -1; v37 = -1LL; v38 = -1LL; v39 = -1; v40 = -1; v8 = *(_DWORD *)(a2 + 48); v9 = *(_DWORD *)(a2 + 16); if ( !v9 ) { v10 = *(_DWORD *)(a2 + 28); if ( !v10 ) goto LABEL_7; goto LABEL_3; } v33 = (int)(v9 - v8); v34 = *(_DWORD *)(a2 + 20) - v8; v35 = v34 >> 31; v9 = *(_DWORD *)(a2 + 24); v36 = (int)(v9 - v8); v10 = *(_DWORD *)(a2 + 28); if ( v10 ) { LABEL_3: v37 = v10 - v8; v27 = *(_DWORD *)(a2 + 32); v38 = (int)(v27 - v10); v39 = *(_DWORD *)(a2 + 36) - v8; v40 = v39 >> 31; if ( v9 < v27 ) v9 = v27; } if ( v9 ) *(_DWORD *)(a2 + 52) = v9 - v8; LABEL_7: std::streambuf::operator=((volatile signed __int32 **)this + 3, a2 + 12); std::locale::locale((volatile signed __int32 **)&v31, (volatile signed __int32 **)(a2 + 40), v25); std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)this + 10, v26); std::locale::operator=((volatile signed __int32 **)this + 10, (volatile signed __int32 **)&v31); std::locale::~locale(&v30); std::locale::~locale(&v31); *((_DWORD *)this + 11) = *(_DWORD *)(a2 + 44); v11 = (char *)*((_DWORD *)this + 12); v12 = *(const void **)(a2 + 48); if ( v12 == (const void *)(a2 + 56) ) { v23 = *(_DWORD *)(a2 + 52); if ( v23 ) { if ( v23 == 1 ) *v11 = *(_BYTE *)(a2 + 56); else memcpy(v11, v12, *(_DWORD *)(a2 + 52)); v23 = *(_DWORD *)(a2 + 52); v11 = (char *)*((_DWORD *)this + 12); } *((_DWORD *)this + 13) = v23; v11[v23] = 0; v11 = *(char **)(a2 + 48); } else { v28 = *(_DWORD *)(a2 + 52); if ( v11 == this + 56 ) { *((_DWORD *)this + 12) = v12; *((_DWORD *)this + 13) = v28; *((_DWORD *)this + 14) = *(_DWORD *)(a2 + 56); } else { v13 = *((_DWORD *)this + 14); *((_DWORD *)this + 12) = v12; *((_DWORD *)this + 13) = v28; *((_DWORD *)this + 14) = *(_DWORD *)(a2 + 56); if ( v11 ) { *(_DWORD *)(a2 + 48) = v11; *(_DWORD *)(a2 + 56) = v13; goto LABEL_11; } } *(_DWORD *)(a2 + 48) = a2 + 56; v11 = (char *)(a2 + 56); } LABEL_11: *(_DWORD *)(a2 + 52) = 0; *v11 = 0; std::stringbuf::_M_sync((_DWORD *)(a2 + 12), *(_DWORD **)(a2 + 48), 0, 0); v14 = v32; v15 = v32[9]; if ( ((unsigned int)v33 & HIDWORD(v33)) != -1 ) { v16 = v36; v17 = v34; v32[1] = v15 + v33; v14[2] = v15 + v17; v14[3] = v15 + v16; } if ( ((unsigned int)v37 & HIDWORD(v37)) != -1 ) { v18 = v38; v19 = v15 + v39; v20 = v37 + v15; v14[6] = v19; v14[4] = v20; if ( v18 > 0x7FFFFFFF ) { v21 = v20 + 0x7FFFFFFF; do { v20 = v21; v18 -= 0x7FFFFFFFLL; v21 += 0x7FFFFFFF; } while ( v18 > 0x7FFFFFFF ); } v14[5] = v18 + v20; } return this; } // 4C4190: variable 'v24' is possibly undefined // 4C42EE: variable 'v25' is possibly undefined // 4C4302: variable 'v26' is possibly undefined //----- (004C4500) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::str( int this, int a2) { _DWORD *v2; // esi unsigned int v4; // eax v2 = (_DWORD *)(this + 12); std::wstring::_M_replace(this + 48, 0, *(_DWORD *)(this + 52), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); v4 = 0; if ( (*(_BYTE *)(this + 44) & 3) != 0 ) v4 = *(_DWORD *)(this + 52); return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 48), 0, v4); } //----- (004C4570) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::swap( _DWORD *this, _DWORD *a2) { int v3; // edi std::ios_base *v4; // esi int v5; // eax __int16 v6; // dx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); v7 = this[1]; *((_BYTE *)v4 + 118) = v6; this[1] = a2[1]; a2[1] = v7; return std::wstringbuf::swap(this + 3, (int)(a2 + 3)); } // 4C4594: variable 'v9' is possibly undefined //----- (004C4610) -------------------------------------------------------- char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream( char *this, int *a2) { int v3; // eax int v4; // eax int v5; // esi int v6; // esi int v7; // eax int v8; // edx unsigned int v9; // eax int v10; // ecx unsigned int v11; // esi int v12; // eax int *v13; // eax int v14; // eax int v15; // edx int v16; // ecx int v17; // edx char *result; // eax std::ios_base *v19; // [esp+4h] [ebp-84h] const std::locale *v20; // [esp+4h] [ebp-84h] _DWORD *v21; // [esp+1Ch] [ebp-6Ch] _DWORD *v22; // [esp+20h] [ebp-68h] _DWORD *v23; // [esp+28h] [ebp-60h] int v24; // [esp+40h] [ebp-48h] int v25; // [esp+44h] [ebp-44h] int v26; // [esp+48h] [ebp-40h] int v27; // [esp+50h] [ebp-38h] int v28; // [esp+58h] [ebp-30h] int v29; // [esp+5Ch] [ebp-2Ch] __int64 v30; // [esp+60h] [ebp-28h] int v31; // [esp+68h] [ebp-20h] v22 = this + 72; std::ios_base::ios_base((_DWORD *)this + 18); v3 = a2[1]; *(_DWORD *)this = &unk_4F0E14; *((_DWORD *)this + 46) = 0; *((_DWORD *)this + 1) = v3; v4 = *a2; *((_WORD *)this + 94) = 0; v5 = *(_DWORD *)(v4 - 12); this[190] = 0; *((_DWORD *)this + 48) = 0; v6 = (int)a2 + v5; *((_DWORD *)this + 49) = 0; *((_DWORD *)this + 50) = 0; *((_DWORD *)this + 51) = 0; *((_DWORD *)this + 18) = &unk_4F0E28; std::ios_base::_M_move((int)v22, (std::ios_base *)v6, v19); std::wios::_M_cache_locale(v22, (int)(this + 180)); v7 = *(_DWORD *)(v6 + 112); *(_DWORD *)(v6 + 112) = 0; *((_DWORD *)this + 48) = 0; *((_DWORD *)this + 46) = v7; v21 = a2 + 3; v8 = a2[12]; *((_WORD *)this + 94) = *(_WORD *)(v6 + 116); v24 = -1; this[190] = *(_BYTE *)(v6 + 118); v23 = this + 12; v9 = a2[4]; a2[1] = 0; v25 = -1; *(_DWORD *)this = &off_4F5B80; *((_DWORD *)this + 18) = off_4F5BA8; *((_DWORD *)this + 2) = off_4F5B94; v26 = -1; v27 = -1; v28 = -1; v29 = -1; LODWORD(v30) = -1; v31 = -1; if ( !v9 ) { v10 = a2[7]; if ( !v10 ) goto LABEL_7; goto LABEL_3; } v24 = (int)(v9 - v8) >> 1; v25 = (int)(v9 - v8) >> 31; v26 = (a2[5] - v8) >> 1; v9 = a2[6]; v27 = (int)(v9 - v8) >> 1; v10 = a2[7]; if ( v10 ) { LABEL_3: v11 = a2[8]; v28 = (v10 - v8) >> 1; v29 = (v10 - v8) >> 31; v30 = (int)(v11 - v10) >> 1; v31 = (a2[9] - v8) >> 1; if ( v9 < v11 ) v9 = a2[8]; } if ( v9 ) a2[13] = (int)(v9 - v8) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(v23, (int)v21, v20); *((_DWORD *)this + 3) = &off_4F5958; v12 = a2[11]; *((_DWORD *)this + 12) = this + 56; *((_DWORD *)this + 11) = v12; v13 = (int *)a2[12]; if ( v13 == a2 + 14 ) { wmemcpy((wchar_t *)this + 28, (const wchar_t *)a2 + 28, 8u); } else { *((_DWORD *)this + 12) = v13; *((_DWORD *)this + 14) = a2[14]; } v14 = a2[13]; a2[12] = (int)(a2 + 14); a2[13] = 0; *((_DWORD *)this + 13) = v14; *((_WORD *)a2 + 28) = 0; v15 = *((_DWORD *)this + 12); if ( (v24 & v25) != -1 ) { *((_DWORD *)this + 4) = v15 + 2 * v24; *((_DWORD *)this + 5) = v15 + 2 * v26; *((_DWORD *)this + 6) = v15 + 2 * v27; } if ( (v28 & v29) != -1 ) { v16 = v15 + 2 * v31; v17 = v15 + 2 * v28; *((_DWORD *)this + 9) = v16; *((_DWORD *)this + 7) = v17; *((_DWORD *)this + 8) = 2 * v30 + v17; } std::wstringbuf::_M_sync(v21, (_DWORD *)a2[12], 0, 0); result = this + 12; *((_DWORD *)this + 48) = v23; return result; } // 4C48B6: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C4690: variable 'v19' is possibly undefined // 4C47F8: variable 'v20' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F5B80: using guessed type int (*off_4F5B80)(); // 4F5B94: using guessed type int (*off_4F5B94[2])(); // 4F5BA8: using guessed type int (*off_4F5BA8[2])(); //----- (004C49B0) -------------------------------------------------------- BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( char *this, int a2, int a3) { int v3; // esi wchar_t *v5; // edx int v6; // eax unsigned int v7; // eax int v9; // [esp+8h] [ebp-30h] v3 = (int)(this + 72); std::ios_base::ios_base((_DWORD *)this + 18); this[190] = 0; *((_DWORD *)this + 46) = 0; *((_WORD *)this + 94) = 0; *((_DWORD *)this + 48) = 0; *((_DWORD *)this + 49) = 0; *((_DWORD *)this + 50) = 0; *((_DWORD *)this + 51) = 0; *(_DWORD *)this = &unk_4F0E14; *((_DWORD *)this + 18) = &unk_4F0E28; *((_DWORD *)this + 1) = 0; std::wios::init(v3, 0); *((_DWORD *)this + 2) = &unk_4F0E78; *((_DWORD *)this + 18) = &unk_4F0E8C; std::wios::init(v3, 0); *(_DWORD *)this = &off_4F5B80; *((_DWORD *)this + 18) = off_4F5BA8; *((_DWORD *)this + 2) = off_4F5B94; *((_DWORD *)this + 3) = &off_4F6454; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; *((_DWORD *)this + 8) = 0; *((_DWORD *)this + 9) = 0; std::locale::locale((_DWORD *)this + 10); *((_DWORD *)this + 3) = &off_4F5958; v5 = *(wchar_t **)a2; v6 = *(_DWORD *)(a2 + 4); *((_DWORD *)this + 11) = 0; LOBYTE(v9) = 0; *((_DWORD *)this + 12) = this + 56; std::wstring::_M_construct((wchar_t **)this + 12, v5, (int)&v5[v6], v9); *((_DWORD *)this + 11) = a3; v7 = 0; if ( (a3 & 3) != 0 ) v7 = *((_DWORD *)this + 13); std::wstringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v7); return std::wios::init(v3, (int)(this + 12)); } // 4C4AD4: variable 'v9' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F5B80: using guessed type int (*off_4F5B80)(); // 4F5B94: using guessed type int (*off_4F5B94[2])(); // 4F5BA8: using guessed type int (*off_4F5BA8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C4B80) -------------------------------------------------------- BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( _DWORD *this, int a2) { int v2; // esi v2 = (int)(this + 18); std::ios_base::ios_base(this + 18); *((_BYTE *)this + 190) = 0; this[46] = 0; *((_WORD *)this + 94) = 0; this[48] = 0; this[49] = 0; this[50] = 0; this[51] = 0; *this = &unk_4F0E14; this[18] = &unk_4F0E28; this[1] = 0; std::wios::init(v2, 0); this[2] = &unk_4F0E78; this[18] = &unk_4F0E8C; std::wios::init(v2, 0); *this = &off_4F5B80; this[18] = off_4F5BA8; this[2] = off_4F5B94; this[3] = &off_4F6454; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); this[3] = &off_4F5958; this[11] = a2; this[12] = this + 14; this[13] = 0; *((_WORD *)this + 28) = 0; return std::wios::init(v2, (int)(this + 3)); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5B80: using guessed type int (*off_4F5B80)(); // 4F5B94: using guessed type int (*off_4F5B94[2])(); // 4F5BA8: using guessed type int (*off_4F5BA8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C4CF0) -------------------------------------------------------- BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream( int a1) { int v1; // esi v1 = a1 + 72; std::ios_base::ios_base((_DWORD *)(a1 + 72)); *(_BYTE *)(a1 + 190) = 0; *(_DWORD *)(a1 + 184) = 0; *(_WORD *)(a1 + 188) = 0; *(_DWORD *)(a1 + 192) = 0; *(_DWORD *)(a1 + 196) = 0; *(_DWORD *)(a1 + 200) = 0; *(_DWORD *)(a1 + 204) = 0; *(_DWORD *)a1 = &unk_4F0E14; *(_DWORD *)(a1 + 72) = &unk_4F0E28; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_4F0E78; *(_DWORD *)(a1 + 72) = &unk_4F0E8C; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_4F5B80; *(_DWORD *)(a1 + 72) = off_4F5BA8; *(_DWORD *)(a1 + 8) = off_4F5B94; *(_DWORD *)(a1 + 12) = &off_4F6454; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 28) = 0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; std::locale::locale((_DWORD *)(a1 + 40)); *(_DWORD *)(a1 + 48) = a1 + 56; *(_DWORD *)(a1 + 12) = &off_4F5958; *(_DWORD *)(a1 + 44) = 24; *(_DWORD *)(a1 + 52) = 0; *(_WORD *)(a1 + 56) = 0; return std::wios::init(v1, a1 + 12); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5B80: using guessed type int (*off_4F5B80)(); // 4F5B94: using guessed type int (*off_4F5B94[2])(); // 4F5BA8: using guessed type int (*off_4F5BA8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C4E60) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( char *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // esi int v8; // edx char v9; // al int v10; // edx int v11; // eax int v12; // eax int v13; // edx int v14; // eax int v15; // edx unsigned int v16; // eax int v17; // ecx int v18; // eax const wchar_t *v19; // edi _DWORD *v20; // eax int v21; // eax int v22; // edx int v23; // ecx int v24; // edx int result; // eax std::ios_base *v26; // [esp+4h] [ebp-84h] const std::locale *v27; // [esp+4h] [ebp-84h] _DWORD *v28; // [esp+1Ch] [ebp-6Ch] std::ios_base *v29; // [esp+20h] [ebp-68h] int v30; // [esp+20h] [ebp-68h] _DWORD *v31; // [esp+28h] [ebp-60h] int v32; // [esp+40h] [ebp-48h] int v33; // [esp+44h] [ebp-44h] int v34; // [esp+48h] [ebp-40h] int v35; // [esp+50h] [ebp-38h] int v36; // [esp+58h] [ebp-30h] int v37; // [esp+5Ch] [ebp-2Ch] int v38; // [esp+60h] [ebp-28h] int v39; // [esp+68h] [ebp-20h] v4 = a2[2]; v5 = a2[3]; v6 = *(_DWORD *)(v4 - 12); *(_DWORD *)this = v4; *(_DWORD *)&this[v6] = v5; *((_DWORD *)this + 1) = a3[1]; v29 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); v7 = (int)&this[*(_DWORD *)(v4 - 12)]; std::ios_base::_M_move(v7, v29, v26); std::wios::_M_cache_locale((_DWORD *)v7, v7 + 108); *(_DWORD *)(v7 + 120) = 0; v8 = *((_DWORD *)v29 + 28); *((_DWORD *)v29 + 28) = 0; *(_DWORD *)(v7 + 112) = v8; v9 = *((_BYTE *)v29 + 118); *(_WORD *)(v7 + 116) = *((_WORD *)v29 + 58); v10 = a2[5]; *(_BYTE *)(v7 + 118) = v9; v11 = a2[4]; a3[1] = 0; *((_DWORD *)this + 2) = v11; v28 = a3 + 3; *(_DWORD *)&this[*(_DWORD *)(v11 - 12) + 8] = v10; v12 = a2[1]; v13 = a2[6]; *(_DWORD *)this = v12; *(_DWORD *)&this[*(_DWORD *)(v12 - 12)] = v13; *((_DWORD *)this + 2) = a2[7]; v14 = *a2; v15 = a2[8]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v14 - 12)] = v15; *((_DWORD *)this + 2) = a2[9]; v31 = this + 12; v32 = -1; v30 = a3[12]; v16 = a3[4]; v33 = -1; v34 = -1; v35 = -1; v36 = -1; v37 = -1; v38 = -1; v39 = -1; if ( !v16 ) { v17 = a3[7]; if ( !v17 ) goto LABEL_7; goto LABEL_3; } v32 = (int)(v16 - v30) >> 1; v33 = (int)(v16 - v30) >> 31; v34 = (a3[5] - v30) >> 1; v16 = a3[6]; v35 = (int)(v16 - v30) >> 1; v17 = a3[7]; if ( v17 ) { LABEL_3: v36 = (v17 - v30) >> 1; v37 = (v17 - v30) >> 31; v38 = (a3[8] - v17) >> 1; v39 = (a3[9] - v30) >> 1; if ( v16 < a3[8] ) v16 = a3[8]; } if ( v16 ) a3[13] = (int)(v16 - v30) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(v31, (int)v28, v27); *((_DWORD *)this + 3) = &off_4F5958; v18 = a3[11]; *((_DWORD *)this + 12) = this + 56; v19 = (const wchar_t *)(a3 + 14); *((_DWORD *)this + 11) = v18; v20 = (_DWORD *)a3[12]; if ( v20 == a3 + 14 ) { wmemcpy((wchar_t *)this + 28, v19, 8u); } else { *((_DWORD *)this + 12) = v20; *((_DWORD *)this + 14) = a3[14]; } v21 = a3[13]; a3[12] = v19; a3[13] = 0; *((_DWORD *)this + 13) = v21; *((_WORD *)a3 + 28) = 0; v22 = *((_DWORD *)this + 12); if ( (v32 & v33) != -1 ) { *((_DWORD *)this + 4) = v22 + 2 * v32; *((_DWORD *)this + 5) = v22 + 2 * v34; *((_DWORD *)this + 6) = v22 + 2 * v35; } if ( (v36 & v37) != -1 ) { v23 = v22 + 2 * v39; v24 = v22 + 2 * v36; *((_DWORD *)this + 9) = v23; *((_DWORD *)this + 7) = v24; *((_DWORD *)this + 8) = 2 * v38 + v24; } std::wstringbuf::_M_sync(v28, (_DWORD *)a3[12], 0, 0); result = *(_DWORD *)(*(_DWORD *)this - 12); *(_DWORD *)&this[result + 120] = v31; return result; } // 4C50E7: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C4E9E: variable 'v26' is possibly undefined // 4C5029: variable 'v27' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); //----- (004C51E0) -------------------------------------------------------- BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( char *this, int *a2, int a3, int a4) { int v5; // eax int v6; // eax char *v7; // ecx int v8; // eax int v9; // edx int v10; // eax int v11; // edx int v12; // eax wchar_t *v13; // edx int v14; // eax unsigned int v15; // eax int v17; // [esp+8h] [ebp-30h] v5 = a2[2]; *(_DWORD *)this = v5; *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; *((_DWORD *)this + 1) = 0; std::wios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); v6 = a2[4]; *((_DWORD *)this + 2) = v6; v7 = &this[*(_DWORD *)(v6 - 12) + 8]; *(_DWORD *)v7 = a2[5]; std::wios::init((int)v7, 0); v8 = a2[1]; v9 = a2[6]; *(_DWORD *)this = v8; *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; *((_DWORD *)this + 2) = a2[7]; v10 = *a2; v11 = a2[8]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; v12 = a2[9]; *((_DWORD *)this + 3) = &off_4F6454; *((_DWORD *)this + 2) = v12; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; *((_DWORD *)this + 8) = 0; *((_DWORD *)this + 9) = 0; std::locale::locale((_DWORD *)this + 10); *((_DWORD *)this + 3) = &off_4F5958; v13 = *(wchar_t **)a3; v14 = *(_DWORD *)(a3 + 4); *((_DWORD *)this + 11) = 0; LOBYTE(v17) = 0; *((_DWORD *)this + 12) = this + 56; std::wstring::_M_construct((wchar_t **)this + 12, v13, (int)&v13[v14], v17); *((_DWORD *)this + 11) = a4; v15 = 0; if ( (a4 & 3) != 0 ) v15 = *((_DWORD *)this + 13); std::wstringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v15); return std::wios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); } // 4C52D4: variable 'v17' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C5390) -------------------------------------------------------- BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2, int a3) { int v4; // eax int v5; // eax _DWORD *v6; // ecx int v7; // eax int v8; // edx int v9; // eax int v10; // edx int v11; // eax v4 = a2[2]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); v5 = a2[4]; this[2] = v5; v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); *v6 = a2[5]; std::wios::init((int)v6, 0); v7 = a2[1]; v8 = a2[6]; *this = v7; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; this[2] = a2[7]; v9 = *a2; v10 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; v11 = a2[9]; this[3] = (int)&off_4F6454; this[2] = v11; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); this[13] = 0; this[3] = (int)&off_4F5958; this[11] = a3; this[12] = (int)(this + 14); *((_WORD *)this + 28) = 0; return std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C54F0) -------------------------------------------------------- BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2) { int v3; // eax int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx int v8; // eax int v9; // edx int v10; // eax int v11; // eax int v12; // ecx v3 = a2[2]; *this = v3; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); v4 = a2[4]; this[2] = v4; v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); *v5 = a2[5]; std::wios::init((int)v5, 0); v6 = a2[1]; v7 = a2[6]; *this = v6; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; this[2] = a2[7]; v8 = *a2; v9 = a2[8]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; v10 = a2[9]; this[3] = (int)&off_4F6454; this[2] = v10; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); this[13] = 0; this[12] = (int)(this + 14); *((_WORD *)this + 28) = 0; v11 = *this; this[3] = (int)&off_4F5958; v12 = *(_DWORD *)(v11 - 12); this[11] = 24; return std::wios::init((int)this + v12, (int)(this + 3)); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C5650) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[12]; *a1 = &off_4F5B80; a1[18] = off_4F5BA8; a1[2] = off_4F5B94; a1[3] = &off_4F5958; if ( v2 != a1 + 14 ) operator delete(v2); a1[3] = &off_4F6454; std::locale::~locale((_DWORD **)a1 + 10); a1[2] = &unk_4F0E78; *a1 = &unk_4F0E14; a1[1] = 0; a1[18] = &off_4F6E20; std::ios_base::~ios_base((int)(a1 + 18)); operator delete(a1); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5B80: using guessed type int (*off_4F5B80)(); // 4F5B94: using guessed type int (*off_4F5B94[2])(); // 4F5BA8: using guessed type int (*off_4F5BA8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004C56D0) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *v2; // eax v2 = *(void **)(a1 + 48); *(_DWORD *)a1 = &off_4F5B80; *(_DWORD *)(a1 + 72) = off_4F5BA8; *(_DWORD *)(a1 + 8) = off_4F5B94; *(_DWORD *)(a1 + 12) = &off_4F5958; if ( v2 != (void *)(a1 + 56) ) operator delete(v2); *(_DWORD *)(a1 + 12) = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_4F0E78; *(_DWORD *)a1 = &unk_4F0E14; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 72) = &off_4F6E20; std::ios_base::~ios_base(a1 + 72); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5B80: using guessed type int (*off_4F5B80)(); // 4F5B94: using guessed type int (*off_4F5B94[2])(); // 4F5BA8: using guessed type int (*off_4F5BA8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004C5740) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream( char *this, int *a2) { int v3; // eax int v4; // eax int v5; // eax int v6; // eax int v7; // eax int result; // eax v3 = *a2; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[8]; v4 = a2[9]; *((_DWORD *)this + 3) = &off_4F5958; *((_DWORD *)this + 2) = v4; if ( *((char **)this + 12) != this + 56 ) operator delete(*((void **)this + 12)); *((_DWORD *)this + 3) = &off_4F6454; std::locale::~locale((_DWORD **)this + 10); v5 = a2[1]; *(_DWORD *)this = v5; *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[6]; *((_DWORD *)this + 2) = a2[7]; v6 = a2[4]; *((_DWORD *)this + 2) = v6; *(_DWORD *)&this[*(_DWORD *)(v6 - 12) + 8] = a2[5]; v7 = a2[2]; *(_DWORD *)this = v7; result = *(_DWORD *)(v7 - 12); *(_DWORD *)&this[result] = a2[3]; *((_DWORD *)this + 1) = 0; return result; } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C57D0) -------------------------------------------------------- char *__thiscall std::basic_stringstream,std::allocator>::operator=( char *this, int a2) { int v2; // esi int v3; // edi int v4; // eax int v5; // edx int v6; // edx int v7; // eax int v8; // edx unsigned int v9; // eax int v10; // ecx unsigned int v11; // esi int v12; // ecx wchar_t *v13; // eax wchar_t *v14; // edx int v15; // esi _DWORD *v16; // ecx int v17; // ebx int v18; // edx int v19; // edi __int64 v20; // rax int v21; // edi int v22; // ebx int v23; // edi int v25; // eax int v26; // ecx std::ios_base *v27; // [esp+4h] [ebp-74h] const std::locale *v28; // [esp+4h] [ebp-74h] const std::locale *v29; // [esp+4h] [ebp-74h] int v30; // [esp+14h] [ebp-64h] _DWORD *v32; // [esp+20h] [ebp-58h] BYREF _DWORD *v33; // [esp+24h] [ebp-54h] BYREF _DWORD *v34; // [esp+28h] [ebp-50h] int v35; // [esp+30h] [ebp-48h] int v36; // [esp+34h] [ebp-44h] int v37; // [esp+38h] [ebp-40h] int v38; // [esp+3Ch] [ebp-3Ch] __int64 v39; // [esp+40h] [ebp-38h] int v40; // [esp+48h] [ebp-30h] int v41; // [esp+4Ch] [ebp-2Ch] __int64 v42; // [esp+50h] [ebp-28h] int v43; // [esp+58h] [ebp-20h] int v44; // [esp+5Ch] [ebp-1Ch] v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); std::ios_base::_M_swap(v2, (std::ios_base *)v3, v27); std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); v4 = *(_DWORD *)(v2 + 112); v5 = *(_DWORD *)(v3 + 112); v35 = -1; v36 = -1; *(_DWORD *)(v2 + 112) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_DWORD *)(v3 + 112) = v4; LOWORD(v4) = *(_WORD *)(v2 + 116); *(_WORD *)(v2 + 116) = v5; LOBYTE(v5) = *(_BYTE *)(v2 + 118); *(_WORD *)(v3 + 116) = v4; LOBYTE(v4) = *(_BYTE *)(v3 + 118); v37 = -1; *(_BYTE *)(v2 + 118) = v4; *(_BYTE *)(v3 + 118) = v5; v6 = *(_DWORD *)(a2 + 4); v38 = -1; v7 = *((_DWORD *)this + 1); LODWORD(v39) = -1; *((_DWORD *)this + 1) = v6; *(_DWORD *)(a2 + 4) = v7; v34 = this + 12; HIDWORD(v39) = -1; v40 = -1; v41 = -1; v42 = -1LL; v43 = -1; v44 = -1; v8 = *(_DWORD *)(a2 + 48); v9 = *(_DWORD *)(a2 + 16); if ( !v9 ) { v10 = *(_DWORD *)(a2 + 28); if ( !v10 ) goto LABEL_7; goto LABEL_3; } v35 = (int)(v9 - v8) >> 1; v36 = (int)(v9 - v8) >> 31; v37 = (*(_DWORD *)(a2 + 20) - v8) >> 1; v38 = v37 >> 31; v9 = *(_DWORD *)(a2 + 24); v39 = (int)(v9 - v8) >> 1; v10 = *(_DWORD *)(a2 + 28); if ( v10 ) { LABEL_3: v40 = (v10 - v8) >> 1; v41 = (v10 - v8) >> 31; v11 = *(_DWORD *)(a2 + 32); v42 = (int)(v11 - v10) >> 1; v43 = (*(_DWORD *)(a2 + 36) - v8) >> 1; v44 = v43 >> 31; if ( v9 < v11 ) v9 = v11; } if ( v9 ) *(_DWORD *)(a2 + 52) = (int)(v9 - v8) >> 1; LABEL_7: std::wstreambuf::operator=((volatile signed __int32 **)this + 3, a2 + 12); std::locale::locale((volatile signed __int32 **)&v33, (volatile signed __int32 **)(a2 + 40), v28); std::locale::locale((volatile signed __int32 **)&v32, (volatile signed __int32 **)this + 10, v29); std::locale::operator=((volatile signed __int32 **)this + 10, (volatile signed __int32 **)&v33); std::locale::~locale(&v32); std::locale::~locale(&v33); v12 = *(_DWORD *)(a2 + 48); *((_DWORD *)this + 11) = *(_DWORD *)(a2 + 44); v13 = (wchar_t *)*((_DWORD *)this + 12); v14 = (wchar_t *)(a2 + 56); if ( v12 == a2 + 56 ) { v26 = *(_DWORD *)(a2 + 52); if ( v26 ) { if ( v26 == 1 ) { *v13 = *(_WORD *)(a2 + 56); } else { wmemcpy(v13, (const wchar_t *)(a2 + 56), *(_DWORD *)(a2 + 52)); v26 = *(_DWORD *)(a2 + 52); v14 = *(wchar_t **)(a2 + 48); v13 = (wchar_t *)*((_DWORD *)this + 12); } } *((_DWORD *)this + 13) = v26; v13[v26] = 0; v13 = v14; } else { v30 = *(_DWORD *)(a2 + 52); if ( v13 == (wchar_t *)(this + 56) ) { *((_DWORD *)this + 13) = v30; v25 = *(_DWORD *)(a2 + 56); *((_DWORD *)this + 12) = v12; *((_DWORD *)this + 14) = v25; } else { v15 = *((_DWORD *)this + 14); *((_DWORD *)this + 12) = v12; *((_DWORD *)this + 13) = v30; *((_DWORD *)this + 14) = *(_DWORD *)(a2 + 56); if ( v13 ) { *(_DWORD *)(a2 + 48) = v13; *(_DWORD *)(a2 + 56) = v15; goto LABEL_11; } } *(_DWORD *)(a2 + 48) = v14; v13 = (wchar_t *)(a2 + 56); } LABEL_11: *(_DWORD *)(a2 + 52) = 0; *v13 = 0; std::wstringbuf::_M_sync((_DWORD *)(a2 + 12), v13, 0, 0); v16 = v34; v17 = v34[9]; if ( (v35 & v36) != -1 ) { v18 = v39; v19 = v37; v34[1] = v17 + 2 * v35; v16[2] = v17 + 2 * v19; v16[3] = v17 + 2 * v18; } if ( (v41 & v40) != -1 ) { v20 = v42; v21 = v17 + 2 * v43; v22 = v17 + 2 * v40; v16[6] = v21; v16[4] = v22; if ( v20 > 0x7FFFFFFF ) { v23 = v22 - 2; do { v22 = v23; v20 -= 0x7FFFFFFFLL; v23 -= 2; } while ( v20 > 0x7FFFFFFF ); } v16[5] = v22 + 2 * v20; } return this; } // 4C57F0: variable 'v27' is possibly undefined // 4C595A: variable 'v28' is possibly undefined // 4C596E: variable 'v29' is possibly undefined //----- (004C5B60) -------------------------------------------------------- int __thiscall std::istringstream::str(int this, int a2) { _DWORD *v2; // esi unsigned int v4; // eax v2 = (_DWORD *)(this + 8); std::string::_M_replace((unsigned int *)(this + 44), 0, *(_DWORD *)(this + 48), *(char **)a2, *(_DWORD *)(a2 + 4)); v4 = 0; if ( (*(_BYTE *)(this + 40) & 3) != 0 ) v4 = *(_DWORD *)(this + 48); return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 44), 0, v4); } //----- (004C5BD0) -------------------------------------------------------- int __thiscall std::istringstream::swap(_DWORD *this, _DWORD *a2) { int v3; // edi std::ios_base *v4; // esi int v5; // eax char v6; // dl char v7; // dl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v10); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; v8 = this[1]; *((_BYTE *)v4 + 117) = v7; this[1] = a2[1]; a2[1] = v8; return std::stringbuf::swap(this + 2, (int)(a2 + 2)); } // 4C5BF4: variable 'v10' is possibly undefined //----- (004C5C70) -------------------------------------------------------- char *__thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2) { int v3; // eax int v4; // eax int v5; // esi std::ios_base *v6; // esi int v7; // eax int v8; // edx unsigned int v9; // eax int v10; // ecx int v11; // eax _DWORD *v12; // edx int v13; // edx int v14; // eax int v15; // ecx int v16; // eax char *result; // eax std::ios_base *v18; // [esp+4h] [ebp-84h] const std::locale *v19; // [esp+4h] [ebp-84h] _DWORD *v20; // [esp+1Ch] [ebp-6Ch] _DWORD *v21; // [esp+20h] [ebp-68h] _DWORD *v22; // [esp+28h] [ebp-60h] __int64 v23; // [esp+40h] [ebp-48h] int v24; // [esp+48h] [ebp-40h] int v25; // [esp+50h] [ebp-38h] __int64 v26; // [esp+58h] [ebp-30h] int v27; // [esp+60h] [ebp-28h] int v28; // [esp+68h] [ebp-20h] v21 = this + 17; std::ios_base::ios_base(this + 17); *this = &unk_4F0EA0; *((_WORD *)this + 92) = 0; v3 = a2[1]; this[45] = 0; this[1] = v3; v4 = *a2; this[47] = 0; v5 = *(_DWORD *)(v4 - 12); this[48] = 0; this[49] = 0; v6 = (std::ios_base *)((char *)a2 + v5); this[17] = &unk_4F0EB4; this[50] = 0; std::ios_base::_M_move((int)v21, v6, v18); std::ios::_M_cache_locale(v21, (int)(this + 44)); v7 = *((_DWORD *)v6 + 28); *((_DWORD *)v6 + 28) = 0; this[47] = 0; this[45] = v7; v20 = a2 + 2; *((_WORD *)this + 92) = *((_WORD *)v6 + 58); v8 = a2[11]; v22 = this + 2; v9 = a2[3]; a2[1] = 0; v23 = -1LL; *this = &off_4F5BBC; this[17] = off_4F5BD0; v24 = -1; v25 = -1; v26 = -1LL; v27 = -1; v28 = -1; if ( !v9 ) { v10 = a2[6]; if ( !v10 ) goto LABEL_7; goto LABEL_3; } v23 = (int)(v9 - v8); v24 = a2[4] - v8; v9 = a2[5]; v25 = v9 - v8; v10 = a2[6]; if ( v10 ) { LABEL_3: v26 = v10 - v8; v27 = a2[7] - v10; v28 = a2[8] - v8; if ( v9 < a2[7] ) v9 = a2[7]; } if ( v9 ) a2[12] = v9 - v8; LABEL_7: std::streambuf::basic_streambuf(v22, (int)v20, v19); this[2] = &off_4F5918; v11 = a2[10]; this[11] = this + 13; this[10] = v11; v12 = (_DWORD *)a2[11]; if ( v12 == a2 + 13 ) { this[13] = a2[13]; this[14] = a2[14]; this[15] = a2[15]; this[16] = a2[16]; } else { this[11] = v12; this[13] = a2[13]; } v13 = a2[12]; a2[11] = a2 + 13; a2[12] = 0; this[12] = v13; *((_BYTE *)a2 + 52) = 0; v14 = this[11]; if ( ((unsigned int)v23 & HIDWORD(v23)) != -1 ) { this[3] = v14 + v23; this[4] = v14 + v24; this[5] = v14 + v25; } if ( ((unsigned int)v26 & HIDWORD(v26)) != -1 ) { v15 = v14 + v28; v16 = v26 + v14; this[8] = v15; this[6] = v16; this[7] = v27 + v16; } std::stringbuf::_M_sync(v20, (_DWORD *)a2[11], 0, 0); result = (char *)(this + 2); this[47] = v22; return result; } // 4C5EDD: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C5CE9: variable 'v18' is possibly undefined // 4C5E32: variable 'v19' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F5BBC: using guessed type int (*off_4F5BBC)(); // 4F5BD0: using guessed type int (*off_4F5BD0[2])(); //----- (004C5FE0) -------------------------------------------------------- BOOL __thiscall std::istringstream::basic_istringstream(char *this, int a2, int a3) { int v3; // esi int v5; // eax unsigned __int8 *v6; // edx unsigned int v7; // eax int v9; // [esp+8h] [ebp-30h] v3 = (int)(this + 68); std::ios_base::ios_base((_DWORD *)this + 17); *(_DWORD *)this = &unk_4F0EA0; *((_DWORD *)this + 45) = 0; *((_WORD *)this + 92) = 0; *((_DWORD *)this + 47) = 0; *((_DWORD *)this + 48) = 0; *((_DWORD *)this + 49) = 0; *((_DWORD *)this + 50) = 0; *((_DWORD *)this + 17) = &unk_4F0EB4; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F5BBC; *((_DWORD *)this + 17) = off_4F5BD0; *((_DWORD *)this + 2) = &off_4F6414; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; *((_DWORD *)this + 8) = 0; std::locale::locale((_DWORD *)this + 9); *((_DWORD *)this + 2) = &off_4F5918; *((_DWORD *)this + 10) = 0; v5 = *(_DWORD *)(a2 + 4); v6 = *(unsigned __int8 **)a2; LOBYTE(v9) = 0; *((_DWORD *)this + 11) = this + 52; std::string::_M_construct((void **)this + 11, v6, (size_t)&v6[v5], v9); *((_DWORD *)this + 10) = a3 | 8; v7 = 0; if ( (a3 & 3) != 0 ) v7 = *((_DWORD *)this + 12); std::stringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v7); return std::ios::init(v3, (int)(this + 8)); } // 4C60DA: variable 'v9' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F5BBC: using guessed type int (*off_4F5BBC)(); // 4F5BD0: using guessed type int (*off_4F5BD0[2])(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C6170) -------------------------------------------------------- BOOL __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2) { int v2; // esi v2 = (int)(this + 17); std::ios_base::ios_base(this + 17); *this = &unk_4F0EA0; this[45] = 0; *((_WORD *)this + 92) = 0; this[47] = 0; this[48] = 0; this[49] = 0; this[50] = 0; this[17] = &unk_4F0EB4; this[1] = 0; std::ios::init(v2, 0); *this = &off_4F5BBC; this[17] = off_4F5BD0; this[2] = &off_4F6414; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; std::locale::locale(this + 9); *((_BYTE *)this + 52) = 0; this[2] = &off_4F5918; this[12] = 0; this[10] = a2 | 8; this[11] = this + 13; return std::ios::init(v2, (int)(this + 2)); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5BBC: using guessed type int (*off_4F5BBC)(); // 4F5BD0: using guessed type int (*off_4F5BD0[2])(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C62A0) -------------------------------------------------------- BOOL __fastcall std::istringstream::basic_istringstream(int a1) { int v1; // esi v1 = a1 + 68; std::ios_base::ios_base((_DWORD *)(a1 + 68)); *(_DWORD *)a1 = &unk_4F0EA0; *(_DWORD *)(a1 + 180) = 0; *(_WORD *)(a1 + 184) = 0; *(_DWORD *)(a1 + 188) = 0; *(_DWORD *)(a1 + 192) = 0; *(_DWORD *)(a1 + 196) = 0; *(_DWORD *)(a1 + 200) = 0; *(_DWORD *)(a1 + 68) = &unk_4F0EB4; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_4F5BBC; *(_DWORD *)(a1 + 68) = off_4F5BD0; *(_DWORD *)(a1 + 8) = &off_4F6414; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 28) = 0; *(_DWORD *)(a1 + 32) = 0; std::locale::locale((_DWORD *)(a1 + 36)); *(_BYTE *)(a1 + 52) = 0; *(_DWORD *)(a1 + 8) = &off_4F5918; *(_DWORD *)(a1 + 40) = 8; *(_DWORD *)(a1 + 44) = a1 + 52; *(_DWORD *)(a1 + 48) = 0; return std::ios::init(v1, a1 + 8); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5BBC: using guessed type int (*off_4F5BBC)(); // 4F5BD0: using guessed type int (*off_4F5BD0[2])(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C63D0) -------------------------------------------------------- int __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3) { int v3; // eax int v4; // esi int v5; // edx __int16 v6; // ax int v7; // edx int v8; // eax int v9; // edx unsigned int v10; // eax int v11; // ecx unsigned int v12; // esi _DWORD *v13; // edx int v14; // edx int v15; // eax int v16; // ecx int v17; // eax int result; // eax std::ios_base *v19; // [esp+4h] [ebp-84h] const std::locale *v20; // [esp+4h] [ebp-84h] std::ios_base *v21; // [esp+20h] [ebp-68h] _DWORD *v22; // [esp+28h] [ebp-60h] __int64 v24; // [esp+40h] [ebp-48h] int v25; // [esp+48h] [ebp-40h] int v26; // [esp+50h] [ebp-38h] __int64 v27; // [esp+58h] [ebp-30h] int v28; // [esp+60h] [ebp-28h] int v29; // [esp+68h] [ebp-20h] v3 = a2[1]; *this = v3; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[2]; this[1] = a3[1]; v4 = (int)this + *(_DWORD *)(v3 - 12); v21 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v4, v21, v19); std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); *(_DWORD *)(v4 + 120) = 0; v5 = *((_DWORD *)v21 + 28); *((_DWORD *)v21 + 28) = 0; v6 = *((_WORD *)v21 + 58); *(_DWORD *)(v4 + 112) = v5; *(_WORD *)(v4 + 116) = v6; a3[1] = 0; v7 = a2[3]; v8 = *a2; *this = *a2; v24 = -1LL; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; v9 = a3[11]; v22 = this + 2; v25 = -1; v26 = -1; v27 = -1LL; v28 = -1; v29 = -1; v10 = a3[3]; if ( !v10 ) { v11 = a3[6]; if ( !v11 ) goto LABEL_7; goto LABEL_3; } v24 = (int)(v10 - v9); v25 = a3[4] - v9; v10 = a3[5]; v26 = v10 - v9; v11 = a3[6]; if ( v11 ) { LABEL_3: v12 = a3[7]; v27 = v11 - v9; v28 = v12 - v11; v29 = a3[8] - v9; if ( v10 < v12 ) v10 = a3[7]; } if ( v10 ) a3[12] = v10 - v9; LABEL_7: std::streambuf::basic_streambuf(v22, (int)(a3 + 2), v20); this[10] = a3[10]; this[2] = (int)&off_4F5918; this[11] = (int)(this + 13); v13 = (_DWORD *)a3[11]; if ( v13 == a3 + 13 ) { this[13] = a3[13]; this[14] = a3[14]; this[15] = a3[15]; this[16] = a3[16]; } else { this[11] = (int)v13; this[13] = a3[13]; } v14 = a3[12]; a3[11] = a3 + 13; a3[12] = 0; this[12] = v14; *((_BYTE *)a3 + 52) = 0; v15 = this[11]; if ( ((unsigned int)v24 & HIDWORD(v24)) != -1 ) { this[3] = v15 + v24; this[4] = v15 + v25; this[5] = v15 + v26; } if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) { v16 = v15 + v29; v17 = v27 + v15; this[8] = v16; this[6] = v17; this[7] = v28 + v17; } std::stringbuf::_M_sync(a3 + 2, (_DWORD *)a3[11], 0, 0); result = *(_DWORD *)(*this - 12); *(int *)((char *)this + result + 120) = (int)v22; return result; } // 4C65F4: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C640F: variable 'v19' is possibly undefined // 4C654B: variable 'v20' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); //----- (004C66E0) -------------------------------------------------------- BOOL __thiscall std::istringstream::basic_istringstream(char *this, int *a2, int a3, int a4) { int v5; // eax int v6; // edi int v7; // eax int v8; // ecx int v9; // eax unsigned __int8 *v10; // edx unsigned int v11; // eax int v13; // [esp+8h] [ebp-30h] v5 = a2[1]; v6 = a2[2]; *(_DWORD *)this = v5; *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = v6; *((_DWORD *)this + 1) = 0; std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); v7 = *a2; v8 = a2[3]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; *((_DWORD *)this + 2) = &off_4F6414; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; *((_DWORD *)this + 8) = 0; std::locale::locale((_DWORD *)this + 9); *((_DWORD *)this + 2) = &off_4F5918; *((_DWORD *)this + 10) = 0; v9 = *(_DWORD *)(a3 + 4); v10 = *(unsigned __int8 **)a3; LOBYTE(v13) = 0; *((_DWORD *)this + 11) = this + 52; std::string::_M_construct((void **)this + 11, v10, (size_t)&v10[v9], v13); *((_DWORD *)this + 10) = a4 | 8; v11 = 0; if ( (a4 & 3) != 0 ) v11 = *((_DWORD *)this + 12); std::stringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v11); return std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 8)); } // 4C6799: variable 'v13' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C6830) -------------------------------------------------------- BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3) { int v4; // edi int v5; // eax int v6; // eax int v7; // edx v4 = (int)(this + 2); v5 = a2[1]; *this = v5; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[2]; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); v6 = *a2; v7 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; this[2] = (int)&off_4F6414; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; std::locale::locale(this + 9); *((_BYTE *)this + 52) = 0; this[12] = 0; this[2] = (int)&off_4F5918; this[10] = a3 | 8; this[11] = (int)(this + 13); return std::ios::init((int)this + *(_DWORD *)(*this - 12), v4); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C6920) -------------------------------------------------------- BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2) { int v3; // edi int v4; // eax int v5; // eax int v6; // edx int v7; // eax int v8; // ecx v3 = (int)(this + 2); v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); v5 = *a2; v6 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; this[2] = (int)&off_4F6414; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; std::locale::locale(this + 9); *((_BYTE *)this + 52) = 0; this[11] = (int)(this + 13); v7 = *this; this[12] = 0; this[2] = (int)&off_4F5918; v8 = *(_DWORD *)(v7 - 12); this[10] = 8; return std::ios::init((int)this + v8, v3); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C6A10) -------------------------------------------------------- void __fastcall std::istringstream::~istringstream(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[11]; *a1 = &off_4F5BBC; a1[17] = off_4F5BD0; a1[2] = &off_4F5918; if ( v2 != a1 + 13 ) operator delete(v2); a1[2] = &off_4F6414; std::locale::~locale((_DWORD **)a1 + 9); *a1 = &unk_4F0EA0; a1[1] = 0; a1[17] = &off_4F6E10; std::ios_base::~ios_base((int)(a1 + 17)); operator delete(a1); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5BBC: using guessed type int (*off_4F5BBC)(); // 4F5BD0: using guessed type int (*off_4F5BD0[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004C6A80) -------------------------------------------------------- void __fastcall std::istringstream::~istringstream(int a1) { void *v2; // eax v2 = *(void **)(a1 + 44); *(_DWORD *)a1 = &off_4F5BBC; *(_DWORD *)(a1 + 68) = off_4F5BD0; *(_DWORD *)(a1 + 8) = &off_4F5918; if ( v2 != (void *)(a1 + 52) ) operator delete(v2); *(_DWORD *)(a1 + 8) = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_4F0EA0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 68) = &off_4F6E10; std::ios_base::~ios_base(a1 + 68); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5BBC: using guessed type int (*off_4F5BBC)(); // 4F5BD0: using guessed type int (*off_4F5BD0[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004C6AE0) -------------------------------------------------------- int __thiscall std::istringstream::~istringstream(int *this, int *a2) { int v3; // eax char *v4; // eax int v5; // eax int result; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; v4 = (char *)this[11]; this[2] = (int)&off_4F5918; if ( v4 != (char *)(this + 13) ) operator delete(v4); this[2] = (int)&off_4F6414; std::locale::~locale((_DWORD **)this + 9); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(int *)((char *)this + result) = a2[2]; this[1] = 0; return result; } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C6B40) -------------------------------------------------------- char *__thiscall std::istringstream::operator=(char *this, int a2) { int v2; // esi int v3; // edi int v4; // eax int v5; // edx int v6; // edx int v7; // eax int v8; // edx unsigned int v9; // eax int v10; // ecx char *v11; // eax const void *v12; // edx int v13; // esi _DWORD *v14; // edx int v15; // eax int v16; // ebx int v17; // edi __int64 v18; // rcx int v19; // edi int v20; // eax int v21; // edi int v23; // ecx std::ios_base *v24; // [esp+4h] [ebp-74h] const std::locale *v25; // [esp+4h] [ebp-74h] const std::locale *v26; // [esp+4h] [ebp-74h] unsigned int v27; // [esp+10h] [ebp-68h] int v28; // [esp+14h] [ebp-64h] _DWORD *v30; // [esp+20h] [ebp-58h] BYREF _DWORD *v31; // [esp+24h] [ebp-54h] BYREF _DWORD *v32; // [esp+28h] [ebp-50h] __int64 v33; // [esp+30h] [ebp-48h] int v34; // [esp+38h] [ebp-40h] int v35; // [esp+3Ch] [ebp-3Ch] __int64 v36; // [esp+40h] [ebp-38h] __int64 v37; // [esp+48h] [ebp-30h] __int64 v38; // [esp+50h] [ebp-28h] int v39; // [esp+58h] [ebp-20h] int v40; // [esp+5Ch] [ebp-1Ch] v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); std::ios_base::_M_swap(v2, (std::ios_base *)v3, v24); std::ios::_M_cache_locale((_DWORD *)v2, v2 + 108); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); v4 = *(_DWORD *)(v2 + 112); v5 = *(_DWORD *)(v3 + 112); v33 = -1LL; *(_DWORD *)(v2 + 112) = v5; *(_DWORD *)(v3 + 112) = v4; LOBYTE(v4) = *(_BYTE *)(v3 + 116); LOBYTE(v5) = *(_BYTE *)(v2 + 116); v34 = -1; *(_BYTE *)(v2 + 116) = v4; LOBYTE(v4) = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 116) = v5; LOBYTE(v5) = *(_BYTE *)(v2 + 117); *(_BYTE *)(v2 + 117) = v4; *(_BYTE *)(v3 + 117) = v5; v6 = *(_DWORD *)(a2 + 4); v35 = -1; v7 = *((_DWORD *)this + 1); LODWORD(v36) = -1; *((_DWORD *)this + 1) = v6; *(_DWORD *)(a2 + 4) = v7; v32 = this + 8; HIDWORD(v36) = -1; v37 = -1LL; v38 = -1LL; v39 = -1; v40 = -1; v8 = *(_DWORD *)(a2 + 44); v9 = *(_DWORD *)(a2 + 12); if ( !v9 ) { v10 = *(_DWORD *)(a2 + 24); if ( !v10 ) goto LABEL_7; goto LABEL_3; } v33 = (int)(v9 - v8); v34 = *(_DWORD *)(a2 + 16) - v8; v35 = v34 >> 31; v9 = *(_DWORD *)(a2 + 20); v36 = (int)(v9 - v8); v10 = *(_DWORD *)(a2 + 24); if ( v10 ) { LABEL_3: v37 = v10 - v8; v27 = *(_DWORD *)(a2 + 28); v38 = (int)(v27 - v10); v39 = *(_DWORD *)(a2 + 32) - v8; v40 = v39 >> 31; if ( v9 < v27 ) v9 = v27; } if ( v9 ) *(_DWORD *)(a2 + 48) = v9 - v8; LABEL_7: std::streambuf::operator=((volatile signed __int32 **)this + 2, a2 + 8); std::locale::locale((volatile signed __int32 **)&v31, (volatile signed __int32 **)(a2 + 36), v25); std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)this + 9, v26); std::locale::operator=((volatile signed __int32 **)this + 9, (volatile signed __int32 **)&v31); std::locale::~locale(&v30); std::locale::~locale(&v31); *((_DWORD *)this + 10) = *(_DWORD *)(a2 + 40); v11 = (char *)*((_DWORD *)this + 11); v12 = *(const void **)(a2 + 44); if ( v12 == (const void *)(a2 + 52) ) { v23 = *(_DWORD *)(a2 + 48); if ( v23 ) { if ( v23 == 1 ) *v11 = *(_BYTE *)(a2 + 52); else memcpy(v11, v12, *(_DWORD *)(a2 + 48)); v23 = *(_DWORD *)(a2 + 48); v11 = (char *)*((_DWORD *)this + 11); } *((_DWORD *)this + 12) = v23; v11[v23] = 0; v11 = *(char **)(a2 + 44); } else { v28 = *(_DWORD *)(a2 + 48); if ( v11 == this + 52 ) { *((_DWORD *)this + 11) = v12; *((_DWORD *)this + 12) = v28; *((_DWORD *)this + 13) = *(_DWORD *)(a2 + 52); } else { v13 = *((_DWORD *)this + 13); *((_DWORD *)this + 11) = v12; *((_DWORD *)this + 12) = v28; *((_DWORD *)this + 13) = *(_DWORD *)(a2 + 52); if ( v11 ) { *(_DWORD *)(a2 + 44) = v11; *(_DWORD *)(a2 + 52) = v13; goto LABEL_11; } } *(_DWORD *)(a2 + 44) = a2 + 52; v11 = (char *)(a2 + 52); } LABEL_11: *(_DWORD *)(a2 + 48) = 0; *v11 = 0; std::stringbuf::_M_sync((_DWORD *)(a2 + 8), *(_DWORD **)(a2 + 44), 0, 0); v14 = v32; v15 = v32[9]; if ( ((unsigned int)v33 & HIDWORD(v33)) != -1 ) { v16 = v36; v17 = v34; v32[1] = v15 + v33; v14[2] = v15 + v17; v14[3] = v15 + v16; } if ( ((unsigned int)v37 & HIDWORD(v37)) != -1 ) { v18 = v38; v19 = v15 + v39; v20 = v37 + v15; v14[6] = v19; v14[4] = v20; if ( v18 > 0x7FFFFFFF ) { v21 = v20 + 0x7FFFFFFF; do { v20 = v21; v18 -= 0x7FFFFFFFLL; v21 += 0x7FFFFFFF; } while ( v18 > 0x7FFFFFFF ); } v14[5] = v18 + v20; } return this; } // 4C6B60: variable 'v24' is possibly undefined // 4C6CBE: variable 'v25' is possibly undefined // 4C6CD2: variable 'v26' is possibly undefined //----- (004C6ED0) -------------------------------------------------------- int __thiscall std::wistringstream::str(int this, int a2) { _DWORD *v2; // esi unsigned int v4; // eax v2 = (_DWORD *)(this + 8); std::wstring::_M_replace(this + 44, 0, *(_DWORD *)(this + 48), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); v4 = 0; if ( (*(_BYTE *)(this + 40) & 3) != 0 ) v4 = *(_DWORD *)(this + 48); return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 44), 0, v4); } //----- (004C6F40) -------------------------------------------------------- int __thiscall std::wistringstream::swap(_DWORD *this, _DWORD *a2) { int v3; // edi std::ios_base *v4; // esi int v5; // eax __int16 v6; // dx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); v7 = this[1]; *((_BYTE *)v4 + 118) = v6; this[1] = a2[1]; a2[1] = v7; return std::wstringbuf::swap(this + 2, (int)(a2 + 2)); } // 4C6F64: variable 'v9' is possibly undefined //----- (004C6FE0) -------------------------------------------------------- char *__thiscall std::wistringstream::basic_istringstream(char *this, int *a2) { int v3; // eax int v4; // eax int v5; // esi int v6; // esi int v7; // eax int v8; // edx unsigned int v9; // eax int v10; // ecx unsigned int v11; // esi int v12; // eax int *v13; // eax int v14; // eax int v15; // edx int v16; // ecx int v17; // edx char *result; // eax std::ios_base *v19; // [esp+4h] [ebp-84h] const std::locale *v20; // [esp+4h] [ebp-84h] _DWORD *v21; // [esp+1Ch] [ebp-6Ch] _DWORD *v22; // [esp+20h] [ebp-68h] _DWORD *v23; // [esp+28h] [ebp-60h] int v24; // [esp+40h] [ebp-48h] int v25; // [esp+44h] [ebp-44h] int v26; // [esp+48h] [ebp-40h] int v27; // [esp+50h] [ebp-38h] int v28; // [esp+58h] [ebp-30h] int v29; // [esp+5Ch] [ebp-2Ch] __int64 v30; // [esp+60h] [ebp-28h] int v31; // [esp+68h] [ebp-20h] v22 = this + 68; std::ios_base::ios_base((_DWORD *)this + 17); v3 = a2[1]; *(_DWORD *)this = &unk_4F0EC8; *((_DWORD *)this + 45) = 0; *((_DWORD *)this + 1) = v3; v4 = *a2; *((_WORD *)this + 92) = 0; v5 = *(_DWORD *)(v4 - 12); this[186] = 0; *((_DWORD *)this + 47) = 0; v6 = (int)a2 + v5; *((_DWORD *)this + 48) = 0; *((_DWORD *)this + 49) = 0; *((_DWORD *)this + 50) = 0; *((_DWORD *)this + 17) = &unk_4F0EDC; std::ios_base::_M_move((int)v22, (std::ios_base *)v6, v19); std::wios::_M_cache_locale(v22, (int)(this + 176)); v7 = *(_DWORD *)(v6 + 112); *(_DWORD *)(v6 + 112) = 0; *((_DWORD *)this + 47) = 0; *((_DWORD *)this + 45) = v7; v21 = a2 + 2; v8 = a2[11]; *((_WORD *)this + 92) = *(_WORD *)(v6 + 116); v24 = -1; this[186] = *(_BYTE *)(v6 + 118); v23 = this + 8; v9 = a2[3]; a2[1] = 0; v25 = -1; *(_DWORD *)this = &off_4F5BE4; *((_DWORD *)this + 17) = off_4F5BF8; v26 = -1; v27 = -1; v28 = -1; v29 = -1; LODWORD(v30) = -1; v31 = -1; if ( !v9 ) { v10 = a2[6]; if ( !v10 ) goto LABEL_7; goto LABEL_3; } v24 = (int)(v9 - v8) >> 1; v25 = (int)(v9 - v8) >> 31; v26 = (a2[4] - v8) >> 1; v9 = a2[5]; v27 = (int)(v9 - v8) >> 1; v10 = a2[6]; if ( v10 ) { LABEL_3: v11 = a2[7]; v28 = (v10 - v8) >> 1; v29 = (v10 - v8) >> 31; v30 = (int)(v11 - v10) >> 1; v31 = (a2[8] - v8) >> 1; if ( v9 < v11 ) v9 = a2[7]; } if ( v9 ) a2[12] = (int)(v9 - v8) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(v23, (int)v21, v20); *((_DWORD *)this + 2) = &off_4F5958; v12 = a2[10]; *((_DWORD *)this + 11) = this + 52; *((_DWORD *)this + 10) = v12; v13 = (int *)a2[11]; if ( v13 == a2 + 13 ) { wmemcpy((wchar_t *)this + 26, (const wchar_t *)a2 + 26, 8u); } else { *((_DWORD *)this + 11) = v13; *((_DWORD *)this + 13) = a2[13]; } v14 = a2[12]; a2[11] = (int)(a2 + 13); a2[12] = 0; *((_DWORD *)this + 12) = v14; *((_WORD *)a2 + 26) = 0; v15 = *((_DWORD *)this + 11); if ( (v24 & v25) != -1 ) { *((_DWORD *)this + 3) = v15 + 2 * v24; *((_DWORD *)this + 4) = v15 + 2 * v26; *((_DWORD *)this + 5) = v15 + 2 * v27; } if ( (v28 & v29) != -1 ) { v16 = v15 + 2 * v31; v17 = v15 + 2 * v28; *((_DWORD *)this + 8) = v16; *((_DWORD *)this + 6) = v17; *((_DWORD *)this + 7) = 2 * v30 + v17; } std::wstringbuf::_M_sync(v21, (_DWORD *)a2[11], 0, 0); result = this + 8; *((_DWORD *)this + 47) = v23; return result; } // 4C727F: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C7060: variable 'v19' is possibly undefined // 4C71C1: variable 'v20' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F5BE4: using guessed type int (*off_4F5BE4)(); // 4F5BF8: using guessed type int (*off_4F5BF8[2])(); //----- (004C7380) -------------------------------------------------------- BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int a2, int a3) { int v3; // esi int v5; // eax wchar_t *v6; // edx unsigned int v7; // eax int v9; // [esp+8h] [ebp-30h] v3 = (int)(this + 68); std::ios_base::ios_base((_DWORD *)this + 17); this[186] = 0; *((_DWORD *)this + 45) = 0; *((_WORD *)this + 92) = 0; *((_DWORD *)this + 47) = 0; *((_DWORD *)this + 48) = 0; *((_DWORD *)this + 49) = 0; *((_DWORD *)this + 50) = 0; *(_DWORD *)this = &unk_4F0EC8; *((_DWORD *)this + 17) = &unk_4F0EDC; *((_DWORD *)this + 1) = 0; std::wios::init(v3, 0); *(_DWORD *)this = &off_4F5BE4; *((_DWORD *)this + 17) = off_4F5BF8; *((_DWORD *)this + 2) = &off_4F6454; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; *((_DWORD *)this + 8) = 0; std::locale::locale((_DWORD *)this + 9); *((_DWORD *)this + 2) = &off_4F5958; *((_DWORD *)this + 10) = 0; v5 = *(_DWORD *)(a2 + 4); v6 = *(wchar_t **)a2; LOBYTE(v9) = 0; *((_DWORD *)this + 11) = this + 52; std::wstring::_M_construct((wchar_t **)this + 11, v6, (int)&v6[v5], v9); *((_DWORD *)this + 10) = a3 | 8; v7 = 0; if ( (a3 & 3) != 0 ) v7 = *((_DWORD *)this + 12); std::wstringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v7); return std::wios::init(v3, (int)(this + 8)); } // 4C7484: variable 'v9' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F5BE4: using guessed type int (*off_4F5BE4)(); // 4F5BF8: using guessed type int (*off_4F5BF8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C7520) -------------------------------------------------------- BOOL __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2) { int v2; // esi v2 = (int)(this + 17); std::ios_base::ios_base(this + 17); *((_BYTE *)this + 186) = 0; this[45] = 0; *((_WORD *)this + 92) = 0; this[47] = 0; this[48] = 0; this[49] = 0; this[50] = 0; *this = &unk_4F0EC8; this[17] = &unk_4F0EDC; this[1] = 0; std::wios::init(v2, 0); *this = &off_4F5BE4; this[17] = off_4F5BF8; this[2] = &off_4F6454; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; std::locale::locale(this + 9); this[2] = &off_4F5958; this[12] = 0; this[10] = a2 | 8; this[11] = this + 13; *((_WORD *)this + 26) = 0; return std::wios::init(v2, (int)(this + 2)); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5BE4: using guessed type int (*off_4F5BE4)(); // 4F5BF8: using guessed type int (*off_4F5BF8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C7660) -------------------------------------------------------- BOOL __fastcall std::wistringstream::basic_istringstream(int a1) { int v1; // esi v1 = a1 + 68; std::ios_base::ios_base((_DWORD *)(a1 + 68)); *(_BYTE *)(a1 + 186) = 0; *(_DWORD *)(a1 + 180) = 0; *(_WORD *)(a1 + 184) = 0; *(_DWORD *)(a1 + 188) = 0; *(_DWORD *)(a1 + 192) = 0; *(_DWORD *)(a1 + 196) = 0; *(_DWORD *)(a1 + 200) = 0; *(_DWORD *)a1 = &unk_4F0EC8; *(_DWORD *)(a1 + 68) = &unk_4F0EDC; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_4F5BE4; *(_DWORD *)(a1 + 68) = off_4F5BF8; *(_DWORD *)(a1 + 8) = &off_4F6454; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 28) = 0; *(_DWORD *)(a1 + 32) = 0; std::locale::locale((_DWORD *)(a1 + 36)); *(_DWORD *)(a1 + 44) = a1 + 52; *(_DWORD *)(a1 + 8) = &off_4F5958; *(_DWORD *)(a1 + 40) = 8; *(_DWORD *)(a1 + 48) = 0; *(_WORD *)(a1 + 52) = 0; return std::wios::init(v1, a1 + 8); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5BE4: using guessed type int (*off_4F5BE4)(); // 4F5BF8: using guessed type int (*off_4F5BF8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C77A0) -------------------------------------------------------- int __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3) { int v3; // eax int v4; // esi int v5; // edx char v6; // al int v7; // edx int v8; // eax unsigned int v9; // eax int v10; // edx int v11; // ecx unsigned int v12; // esi int v13; // eax int v14; // eax int v15; // edx int v16; // ecx int v17; // edx int result; // eax std::ios_base *v19; // [esp+4h] [ebp-84h] const std::locale *v20; // [esp+4h] [ebp-84h] int v21; // [esp+20h] [ebp-68h] _DWORD *v22; // [esp+28h] [ebp-60h] int v24; // [esp+40h] [ebp-48h] int v25; // [esp+44h] [ebp-44h] int v26; // [esp+48h] [ebp-40h] int v27; // [esp+50h] [ebp-38h] int v28; // [esp+58h] [ebp-30h] int v29; // [esp+5Ch] [ebp-2Ch] __int64 v30; // [esp+60h] [ebp-28h] int v31; // [esp+68h] [ebp-20h] v3 = a2[1]; *(_DWORD *)this = v3; *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[2]; *((_DWORD *)this + 1) = *(_DWORD *)(a3 + 4); v4 = (int)&this[*(_DWORD *)(v3 - 12)]; v21 = a3 + *(_DWORD *)(*(_DWORD *)a3 - 12); std::ios_base::_M_move(v4, (std::ios_base *)v21, v19); std::wios::_M_cache_locale((_DWORD *)v4, v4 + 108); *(_DWORD *)(v4 + 120) = 0; v5 = *(_DWORD *)(v21 + 112); *(_DWORD *)(v21 + 112) = 0; *(_DWORD *)(v4 + 112) = v5; v6 = *(_BYTE *)(v21 + 118); *(_WORD *)(v4 + 116) = *(_WORD *)(v21 + 116); *(_BYTE *)(v4 + 118) = v6; *(_DWORD *)(a3 + 4) = 0; v7 = a2[3]; v8 = *a2; *(_DWORD *)this = *a2; v24 = -1; *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v7; v22 = this + 8; v25 = -1; v26 = -1; v27 = -1; v28 = -1; v29 = -1; LODWORD(v30) = -1; v31 = -1; v9 = *(_DWORD *)(a3 + 12); v10 = *(_DWORD *)(a3 + 44); if ( !v9 ) { v11 = *(_DWORD *)(a3 + 24); if ( !v11 ) goto LABEL_7; goto LABEL_3; } v24 = (int)(v9 - v10) >> 1; v25 = (int)(v9 - v10) >> 31; v26 = (*(_DWORD *)(a3 + 16) - v10) >> 1; v9 = *(_DWORD *)(a3 + 20); v27 = (int)(v9 - v10) >> 1; v11 = *(_DWORD *)(a3 + 24); if ( v11 ) { LABEL_3: v12 = *(_DWORD *)(a3 + 28); v28 = (v11 - v10) >> 1; v29 = (v11 - v10) >> 31; v30 = (int)(v12 - v11) >> 1; v31 = (*(_DWORD *)(a3 + 32) - v10) >> 1; if ( v9 < v12 ) v9 = *(_DWORD *)(a3 + 28); } if ( v9 ) *(_DWORD *)(a3 + 48) = (int)(v9 - v10) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(v22, a3 + 8, v20); *((_DWORD *)this + 10) = *(_DWORD *)(a3 + 40); *((_DWORD *)this + 2) = &off_4F5958; *((_DWORD *)this + 11) = this + 52; v13 = *(_DWORD *)(a3 + 44); if ( v13 == a3 + 52 ) { wmemcpy((wchar_t *)this + 26, (const wchar_t *)(a3 + 52), 8u); } else { *((_DWORD *)this + 11) = v13; *((_DWORD *)this + 13) = *(_DWORD *)(a3 + 52); } v14 = *(_DWORD *)(a3 + 48); *(_DWORD *)(a3 + 44) = a3 + 52; *(_DWORD *)(a3 + 48) = 0; *((_DWORD *)this + 12) = v14; *(_WORD *)(a3 + 52) = 0; v15 = *((_DWORD *)this + 11); if ( (v24 & v25) != -1 ) { *((_DWORD *)this + 3) = v15 + 2 * v24; *((_DWORD *)this + 4) = v15 + 2 * v26; *((_DWORD *)this + 5) = v15 + 2 * v27; } if ( (v28 & v29) != -1 ) { v16 = v15 + 2 * v31; v17 = v15 + 2 * v28; *((_DWORD *)this + 8) = v16; *((_DWORD *)this + 6) = v17; *((_DWORD *)this + 7) = 2 * v30 + v17; } std::wstringbuf::_M_sync((_DWORD *)(a3 + 8), *(_DWORD **)(a3 + 44), 0, 0); result = *(_DWORD *)(*(_DWORD *)this - 12); *(_DWORD *)&this[result + 120] = v22; return result; } // 4C79F0: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C77DF: variable 'v19' is possibly undefined // 4C7930: variable 'v20' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); //----- (004C7AD0) -------------------------------------------------------- BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3, int a4) { int v5; // eax int v6; // edi int v7; // eax int v8; // ecx int v9; // eax wchar_t *v10; // edx unsigned int v11; // eax int v13; // [esp+8h] [ebp-30h] v5 = a2[1]; v6 = a2[2]; *(_DWORD *)this = v5; *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = v6; *((_DWORD *)this + 1) = 0; std::wios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); v7 = *a2; v8 = a2[3]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; *((_DWORD *)this + 2) = &off_4F6454; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; *((_DWORD *)this + 8) = 0; std::locale::locale((_DWORD *)this + 9); *((_DWORD *)this + 2) = &off_4F5958; *((_DWORD *)this + 10) = 0; v9 = *(_DWORD *)(a3 + 4); v10 = *(wchar_t **)a3; LOBYTE(v13) = 0; *((_DWORD *)this + 11) = this + 52; std::wstring::_M_construct((wchar_t **)this + 11, v10, (int)&v10[v9], v13); *((_DWORD *)this + 10) = a4 | 8; v11 = 0; if ( (a4 & 3) != 0 ) v11 = *((_DWORD *)this + 12); std::wstringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v11); return std::wios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 8)); } // 4C7B8C: variable 'v13' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C7C30) -------------------------------------------------------- BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3) { int v4; // edi int v5; // eax int v6; // eax int v7; // edx v4 = (int)(this + 2); v5 = a2[1]; *this = v5; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[2]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v6 = *a2; v7 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; this[2] = (int)&off_4F6454; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; std::locale::locale(this + 9); this[12] = 0; this[2] = (int)&off_4F5958; this[10] = a3 | 8; this[11] = (int)(this + 13); *((_WORD *)this + 26) = 0; return std::wios::init((int)this + *(_DWORD *)(*this - 12), v4); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C7D20) -------------------------------------------------------- BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2) { int v3; // edi int v4; // eax int v5; // eax int v6; // edx int v7; // eax int v8; // ecx v3 = (int)(this + 2); v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); v5 = *a2; v6 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; this[2] = (int)&off_4F6454; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; std::locale::locale(this + 9); this[12] = 0; this[11] = (int)(this + 13); *((_WORD *)this + 26) = 0; v7 = *this; this[2] = (int)&off_4F5958; v8 = *(_DWORD *)(v7 - 12); this[10] = 8; return std::wios::init((int)this + v8, v3); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C7E10) -------------------------------------------------------- void __fastcall std::wistringstream::~wistringstream(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[11]; *a1 = &off_4F5BE4; a1[17] = off_4F5BF8; a1[2] = &off_4F5958; if ( v2 != a1 + 13 ) operator delete(v2); a1[2] = &off_4F6454; std::locale::~locale((_DWORD **)a1 + 9); *a1 = &unk_4F0EC8; a1[1] = 0; a1[17] = &off_4F6E20; std::ios_base::~ios_base((int)(a1 + 17)); operator delete(a1); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5BE4: using guessed type int (*off_4F5BE4)(); // 4F5BF8: using guessed type int (*off_4F5BF8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004C7E80) -------------------------------------------------------- void __fastcall std::wistringstream::~wistringstream(int a1) { void *v2; // eax v2 = *(void **)(a1 + 44); *(_DWORD *)a1 = &off_4F5BE4; *(_DWORD *)(a1 + 68) = off_4F5BF8; *(_DWORD *)(a1 + 8) = &off_4F5958; if ( v2 != (void *)(a1 + 52) ) operator delete(v2); *(_DWORD *)(a1 + 8) = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_4F0EC8; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 68) = &off_4F6E20; std::ios_base::~ios_base(a1 + 68); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5BE4: using guessed type int (*off_4F5BE4)(); // 4F5BF8: using guessed type int (*off_4F5BF8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004C7EE0) -------------------------------------------------------- int __thiscall std::wistringstream::~wistringstream(int *this, int *a2) { int v3; // eax char *v4; // eax int v5; // eax int result; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; v4 = (char *)this[11]; this[2] = (int)&off_4F5958; if ( v4 != (char *)(this + 13) ) operator delete(v4); this[2] = (int)&off_4F6454; std::locale::~locale((_DWORD **)this + 9); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(int *)((char *)this + result) = a2[2]; this[1] = 0; return result; } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C7F40) -------------------------------------------------------- char *__thiscall std::wistringstream::operator=(char *this, int a2) { int v2; // esi int v3; // edi int v4; // eax int v5; // edx int v6; // edx int v7; // eax int v8; // edx unsigned int v9; // eax int v10; // ecx unsigned int v11; // esi int v12; // ecx wchar_t *v13; // eax wchar_t *v14; // edx int v15; // esi _DWORD *v16; // ecx int v17; // ebx int v18; // edx int v19; // edi __int64 v20; // rax int v21; // edi int v22; // ebx int v23; // edi int v25; // eax int v26; // ecx std::ios_base *v27; // [esp+4h] [ebp-74h] const std::locale *v28; // [esp+4h] [ebp-74h] const std::locale *v29; // [esp+4h] [ebp-74h] int v30; // [esp+14h] [ebp-64h] _DWORD *v32; // [esp+20h] [ebp-58h] BYREF _DWORD *v33; // [esp+24h] [ebp-54h] BYREF _DWORD *v34; // [esp+28h] [ebp-50h] int v35; // [esp+30h] [ebp-48h] int v36; // [esp+34h] [ebp-44h] int v37; // [esp+38h] [ebp-40h] int v38; // [esp+3Ch] [ebp-3Ch] __int64 v39; // [esp+40h] [ebp-38h] int v40; // [esp+48h] [ebp-30h] int v41; // [esp+4Ch] [ebp-2Ch] __int64 v42; // [esp+50h] [ebp-28h] int v43; // [esp+58h] [ebp-20h] int v44; // [esp+5Ch] [ebp-1Ch] v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); std::ios_base::_M_swap(v2, (std::ios_base *)v3, v27); std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); v4 = *(_DWORD *)(v2 + 112); v5 = *(_DWORD *)(v3 + 112); v35 = -1; v36 = -1; *(_DWORD *)(v2 + 112) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_DWORD *)(v3 + 112) = v4; LOWORD(v4) = *(_WORD *)(v2 + 116); *(_WORD *)(v2 + 116) = v5; LOBYTE(v5) = *(_BYTE *)(v2 + 118); *(_WORD *)(v3 + 116) = v4; LOBYTE(v4) = *(_BYTE *)(v3 + 118); v37 = -1; *(_BYTE *)(v2 + 118) = v4; *(_BYTE *)(v3 + 118) = v5; v6 = *(_DWORD *)(a2 + 4); v38 = -1; v7 = *((_DWORD *)this + 1); LODWORD(v39) = -1; *((_DWORD *)this + 1) = v6; *(_DWORD *)(a2 + 4) = v7; v34 = this + 8; HIDWORD(v39) = -1; v40 = -1; v41 = -1; v42 = -1LL; v43 = -1; v44 = -1; v8 = *(_DWORD *)(a2 + 44); v9 = *(_DWORD *)(a2 + 12); if ( !v9 ) { v10 = *(_DWORD *)(a2 + 24); if ( !v10 ) goto LABEL_7; goto LABEL_3; } v35 = (int)(v9 - v8) >> 1; v36 = (int)(v9 - v8) >> 31; v37 = (*(_DWORD *)(a2 + 16) - v8) >> 1; v38 = v37 >> 31; v9 = *(_DWORD *)(a2 + 20); v39 = (int)(v9 - v8) >> 1; v10 = *(_DWORD *)(a2 + 24); if ( v10 ) { LABEL_3: v40 = (v10 - v8) >> 1; v41 = (v10 - v8) >> 31; v11 = *(_DWORD *)(a2 + 28); v42 = (int)(v11 - v10) >> 1; v43 = (*(_DWORD *)(a2 + 32) - v8) >> 1; v44 = v43 >> 31; if ( v9 < v11 ) v9 = v11; } if ( v9 ) *(_DWORD *)(a2 + 48) = (int)(v9 - v8) >> 1; LABEL_7: std::wstreambuf::operator=((volatile signed __int32 **)this + 2, a2 + 8); std::locale::locale((volatile signed __int32 **)&v33, (volatile signed __int32 **)(a2 + 36), v28); std::locale::locale((volatile signed __int32 **)&v32, (volatile signed __int32 **)this + 9, v29); std::locale::operator=((volatile signed __int32 **)this + 9, (volatile signed __int32 **)&v33); std::locale::~locale(&v32); std::locale::~locale(&v33); v12 = *(_DWORD *)(a2 + 44); *((_DWORD *)this + 10) = *(_DWORD *)(a2 + 40); v13 = (wchar_t *)*((_DWORD *)this + 11); v14 = (wchar_t *)(a2 + 52); if ( v12 == a2 + 52 ) { v26 = *(_DWORD *)(a2 + 48); if ( v26 ) { if ( v26 == 1 ) { *v13 = *(_WORD *)(a2 + 52); } else { wmemcpy(v13, (const wchar_t *)(a2 + 52), *(_DWORD *)(a2 + 48)); v26 = *(_DWORD *)(a2 + 48); v14 = *(wchar_t **)(a2 + 44); v13 = (wchar_t *)*((_DWORD *)this + 11); } } *((_DWORD *)this + 12) = v26; v13[v26] = 0; v13 = v14; } else { v30 = *(_DWORD *)(a2 + 48); if ( v13 == (wchar_t *)(this + 52) ) { *((_DWORD *)this + 12) = v30; v25 = *(_DWORD *)(a2 + 52); *((_DWORD *)this + 11) = v12; *((_DWORD *)this + 13) = v25; } else { v15 = *((_DWORD *)this + 13); *((_DWORD *)this + 11) = v12; *((_DWORD *)this + 12) = v30; *((_DWORD *)this + 13) = *(_DWORD *)(a2 + 52); if ( v13 ) { *(_DWORD *)(a2 + 44) = v13; *(_DWORD *)(a2 + 52) = v15; goto LABEL_11; } } *(_DWORD *)(a2 + 44) = v14; v13 = (wchar_t *)(a2 + 52); } LABEL_11: *(_DWORD *)(a2 + 48) = 0; *v13 = 0; std::wstringbuf::_M_sync((_DWORD *)(a2 + 8), v13, 0, 0); v16 = v34; v17 = v34[9]; if ( (v35 & v36) != -1 ) { v18 = v39; v19 = v37; v34[1] = v17 + 2 * v35; v16[2] = v17 + 2 * v19; v16[3] = v17 + 2 * v18; } if ( (v41 & v40) != -1 ) { v20 = v42; v21 = v17 + 2 * v43; v22 = v17 + 2 * v40; v16[6] = v21; v16[4] = v22; if ( v20 > 0x7FFFFFFF ) { v23 = v22 - 2; do { v22 = v23; v20 -= 0x7FFFFFFFLL; v23 -= 2; } while ( v20 > 0x7FFFFFFF ); } v16[5] = v22 + 2 * v20; } return this; } // 4C7F60: variable 'v27' is possibly undefined // 4C80CA: variable 'v28' is possibly undefined // 4C80DE: variable 'v29' is possibly undefined //----- (004C82D0) -------------------------------------------------------- int __thiscall std::ostringstream::str(int this, int a2) { _DWORD *v2; // esi unsigned int v4; // eax v2 = (_DWORD *)(this + 4); std::string::_M_replace((unsigned int *)(this + 40), 0, *(_DWORD *)(this + 44), *(char **)a2, *(_DWORD *)(a2 + 4)); v4 = 0; if ( (*(_BYTE *)(this + 36) & 3) != 0 ) v4 = *(_DWORD *)(this + 44); return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 40), 0, v4); } //----- (004C8340) -------------------------------------------------------- int __thiscall std::ostringstream::swap(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // dl char v7; // dl std::ios_base *v9; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v9); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = v5; v6 = *(_BYTE *)(v3 + 116); *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); LOBYTE(v5) = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 116) = v6; v7 = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 117) = v5; *((_BYTE *)v4 + 117) = v7; return std::stringbuf::swap(this + 1, (int)(a2 + 1)); } // 4C8364: variable 'v9' is possibly undefined //----- (004C83D0) -------------------------------------------------------- char *__thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2) { int v3; // eax int v4; // esi std::ios_base *v5; // esi int v6; // eax int v7; // edx unsigned int v8; // eax int v9; // ecx int v10; // eax _DWORD *v11; // edx int v12; // edx int v13; // eax int v14; // ecx int v15; // eax char *result; // eax std::ios_base *v17; // [esp+4h] [ebp-84h] const std::locale *v18; // [esp+4h] [ebp-84h] _DWORD *v19; // [esp+1Ch] [ebp-6Ch] _DWORD *v20; // [esp+20h] [ebp-68h] _DWORD *v21; // [esp+28h] [ebp-60h] __int64 v22; // [esp+40h] [ebp-48h] int v23; // [esp+48h] [ebp-40h] int v24; // [esp+50h] [ebp-38h] __int64 v25; // [esp+58h] [ebp-30h] int v26; // [esp+60h] [ebp-28h] int v27; // [esp+68h] [ebp-20h] v20 = this + 16; std::ios_base::ios_base(this + 16); *this = &unk_4F0EF0; *((_WORD *)this + 90) = 0; v3 = *a2; this[44] = 0; v4 = *(_DWORD *)(v3 - 12); this[46] = 0; this[47] = 0; v5 = (std::ios_base *)((char *)a2 + v4); this[16] = &unk_4F0F04; this[48] = 0; this[49] = 0; std::ios_base::_M_move((int)v20, v5, v17); std::ios::_M_cache_locale(v20, (int)(this + 43)); v6 = *((_DWORD *)v5 + 28); *((_DWORD *)v5 + 28) = 0; v19 = a2 + 1; this[44] = v6; LOWORD(v6) = *((_WORD *)v5 + 58); this[46] = 0; *((_WORD *)this + 90) = v6; v7 = a2[10]; v21 = this + 1; v8 = a2[2]; *this = &off_4F5C0C; this[16] = off_4F5C20; v22 = -1LL; v23 = -1; v24 = -1; v25 = -1LL; v26 = -1; v27 = -1; if ( !v8 ) { v9 = a2[5]; if ( !v9 ) goto LABEL_7; goto LABEL_3; } v22 = (int)(v8 - v7); v23 = a2[3] - v7; v8 = a2[4]; v24 = v8 - v7; v9 = a2[5]; if ( v9 ) { LABEL_3: v25 = v9 - v7; v26 = a2[6] - v9; v27 = a2[7] - v7; if ( v8 < a2[6] ) v8 = a2[6]; } if ( v8 ) a2[11] = v8 - v7; LABEL_7: std::streambuf::basic_streambuf(v21, (int)v19, v18); this[1] = &off_4F5918; v10 = a2[9]; this[10] = this + 12; this[9] = v10; v11 = (_DWORD *)a2[10]; if ( v11 == a2 + 12 ) { this[12] = a2[12]; this[13] = a2[13]; this[14] = a2[14]; this[15] = a2[15]; } else { this[10] = v11; this[12] = a2[12]; } v12 = a2[11]; a2[10] = a2 + 12; a2[11] = 0; this[11] = v12; *((_BYTE *)a2 + 48) = 0; v13 = this[10]; if ( ((unsigned int)v22 & HIDWORD(v22)) != -1 ) { this[2] = v13 + v22; this[3] = v13 + v23; this[4] = v13 + v24; } if ( ((unsigned int)v25 & HIDWORD(v25)) != -1 ) { v14 = v13 + v27; v15 = v25 + v13; this[7] = v14; this[5] = v15; this[6] = v26 + v15; } std::stringbuf::_M_sync(v19, (_DWORD *)a2[10], 0, 0); result = (char *)(this + 1); this[46] = v21; return result; } // 4C8630: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C8443: variable 'v17' is possibly undefined // 4C8585: variable 'v18' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F5C0C: using guessed type int (*off_4F5C0C)(); // 4F5C20: using guessed type int (*off_4F5C20[2])(); //----- (004C8730) -------------------------------------------------------- BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int a2, int a3) { int v3; // esi int v5; // eax unsigned __int8 *v6; // edx unsigned int v7; // eax int v9; // [esp+8h] [ebp-30h] v3 = (int)(this + 64); std::ios_base::ios_base((_DWORD *)this + 16); *(_DWORD *)this = &unk_4F0EF0; *((_DWORD *)this + 44) = 0; *((_WORD *)this + 90) = 0; *((_DWORD *)this + 46) = 0; *((_DWORD *)this + 47) = 0; *((_DWORD *)this + 48) = 0; *((_DWORD *)this + 49) = 0; *((_DWORD *)this + 16) = &unk_4F0F04; std::ios::init(v3, 0); *(_DWORD *)this = &off_4F5C0C; *((_DWORD *)this + 16) = off_4F5C20; *((_DWORD *)this + 1) = &off_4F6414; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; std::locale::locale((_DWORD *)this + 8); *((_DWORD *)this + 1) = &off_4F5918; *((_DWORD *)this + 9) = 0; v5 = *(_DWORD *)(a2 + 4); v6 = *(unsigned __int8 **)a2; LOBYTE(v9) = 0; *((_DWORD *)this + 10) = this + 48; std::string::_M_construct((void **)this + 10, v6, (size_t)&v6[v5], v9); *((_DWORD *)this + 9) = a3 | 0x10; v7 = 0; if ( (a3 & 3) != 0 ) v7 = *((_DWORD *)this + 11); std::stringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v7); return std::ios::init(v3, (int)(this + 4)); } // 4C8823: variable 'v9' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F5C0C: using guessed type int (*off_4F5C0C)(); // 4F5C20: using guessed type int (*off_4F5C20[2])(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C88C0) -------------------------------------------------------- BOOL __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2) { int v2; // esi v2 = (int)(this + 16); std::ios_base::ios_base(this + 16); *this = &unk_4F0EF0; this[44] = 0; *((_WORD *)this + 90) = 0; this[46] = 0; this[47] = 0; this[48] = 0; this[49] = 0; this[16] = &unk_4F0F04; std::ios::init(v2, 0); *this = &off_4F5C0C; this[16] = off_4F5C20; this[1] = &off_4F6414; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; std::locale::locale(this + 8); *((_BYTE *)this + 48) = 0; this[1] = &off_4F5918; this[11] = 0; this[9] = a2 | 0x10; this[10] = this + 12; return std::ios::init(v2, (int)(this + 1)); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5C0C: using guessed type int (*off_4F5C0C)(); // 4F5C20: using guessed type int (*off_4F5C20[2])(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C89E0) -------------------------------------------------------- BOOL __fastcall std::ostringstream::basic_ostringstream(int a1) { int v1; // esi v1 = a1 + 64; std::ios_base::ios_base((_DWORD *)(a1 + 64)); *(_DWORD *)a1 = &unk_4F0EF0; *(_DWORD *)(a1 + 176) = 0; *(_WORD *)(a1 + 180) = 0; *(_DWORD *)(a1 + 184) = 0; *(_DWORD *)(a1 + 188) = 0; *(_DWORD *)(a1 + 192) = 0; *(_DWORD *)(a1 + 196) = 0; *(_DWORD *)(a1 + 64) = &unk_4F0F04; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_4F5C0C; *(_DWORD *)(a1 + 64) = off_4F5C20; *(_DWORD *)(a1 + 4) = &off_4F6414; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 28) = 0; std::locale::locale((_DWORD *)(a1 + 32)); *(_BYTE *)(a1 + 48) = 0; *(_DWORD *)(a1 + 4) = &off_4F5918; *(_DWORD *)(a1 + 36) = 16; *(_DWORD *)(a1 + 40) = a1 + 48; *(_DWORD *)(a1 + 44) = 0; return std::ios::init(v1, a1 + 4); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5C0C: using guessed type int (*off_4F5C0C)(); // 4F5C20: using guessed type int (*off_4F5C20[2])(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C8B00) -------------------------------------------------------- int __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3) { int v3; // eax int v4; // esi int v5; // edx __int16 v6; // ax int v7; // edx int v8; // eax int v9; // edx unsigned int v10; // eax int v11; // ecx unsigned int v12; // esi _DWORD *v13; // edx int v14; // edx int v15; // eax int v16; // ecx int v17; // eax int result; // eax std::ios_base *v19; // [esp+4h] [ebp-84h] const std::locale *v20; // [esp+4h] [ebp-84h] std::ios_base *v21; // [esp+20h] [ebp-68h] _DWORD *v22; // [esp+28h] [ebp-60h] __int64 v24; // [esp+40h] [ebp-48h] int v25; // [esp+48h] [ebp-40h] int v26; // [esp+50h] [ebp-38h] __int64 v27; // [esp+58h] [ebp-30h] int v28; // [esp+60h] [ebp-28h] int v29; // [esp+68h] [ebp-20h] v3 = a2[1]; *this = v3; v4 = (int)this + *(_DWORD *)(v3 - 12); *(_DWORD *)v4 = a2[2]; v21 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v4, v21, v19); std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); *(_DWORD *)(v4 + 120) = 0; v5 = *((_DWORD *)v21 + 28); *((_DWORD *)v21 + 28) = 0; v6 = *((_WORD *)v21 + 58); *(_DWORD *)(v4 + 112) = v5; *(_WORD *)(v4 + 116) = v6; v7 = a2[3]; v8 = *a2; *this = *a2; v24 = -1LL; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; v9 = a3[10]; v22 = this + 1; v10 = a3[2]; v25 = -1; v26 = -1; v27 = -1LL; v28 = -1; v29 = -1; if ( !v10 ) { v11 = a3[5]; if ( !v11 ) goto LABEL_7; goto LABEL_3; } v24 = (int)(v10 - v9); v25 = a3[3] - v9; v10 = a3[4]; v26 = v10 - v9; v11 = a3[5]; if ( v11 ) { LABEL_3: v12 = a3[6]; v27 = v11 - v9; v28 = v12 - v11; v29 = a3[7] - v9; if ( v10 < v12 ) v10 = a3[6]; } if ( v10 ) a3[11] = v10 - v9; LABEL_7: std::streambuf::basic_streambuf(v22, (int)(a3 + 1), v20); this[9] = a3[9]; this[1] = (int)&off_4F5918; this[10] = (int)(this + 12); v13 = (_DWORD *)a3[10]; if ( v13 == a3 + 12 ) { this[12] = a3[12]; this[13] = a3[13]; this[14] = a3[14]; this[15] = a3[15]; } else { this[10] = (int)v13; this[12] = a3[12]; } v14 = a3[11]; a3[10] = a3 + 12; a3[11] = 0; this[11] = v14; *((_BYTE *)a3 + 48) = 0; v15 = this[10]; if ( ((unsigned int)v24 & HIDWORD(v24)) != -1 ) { this[2] = v15 + v24; this[3] = v15 + v25; this[4] = v15 + v26; } if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) { v16 = v15 + v29; v17 = v27 + v15; this[7] = v16; this[5] = v17; this[6] = v28 + v17; } std::stringbuf::_M_sync(a3 + 1, (_DWORD *)a3[10], 0, 0); result = *(_DWORD *)(*this - 12); *(int *)((char *)this + result + 120) = (int)v22; return result; } // 4C8D11: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C8B33: variable 'v19' is possibly undefined // 4C8C68: variable 'v20' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); //----- (004C8E00) -------------------------------------------------------- BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4) { int v5; // eax char *v6; // ecx int v7; // eax int v8; // ecx int v9; // eax unsigned __int8 *v10; // edx unsigned int v11; // eax int v13; // [esp+8h] [ebp-30h] v5 = a2[1]; *(_DWORD *)this = v5; v6 = &this[*(_DWORD *)(v5 - 12)]; *(_DWORD *)v6 = a2[2]; std::ios::init((int)v6, 0); v7 = *a2; v8 = a2[3]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; *((_DWORD *)this + 1) = &off_4F6414; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; std::locale::locale((_DWORD *)this + 8); *((_DWORD *)this + 1) = &off_4F5918; *((_DWORD *)this + 9) = 0; v9 = *(_DWORD *)(a3 + 4); v10 = *(unsigned __int8 **)a3; LOBYTE(v13) = 0; *((_DWORD *)this + 10) = this + 48; std::string::_M_construct((void **)this + 10, v10, (size_t)&v10[v9], v13); *((_DWORD *)this + 9) = a4 | 0x10; v11 = 0; if ( (a4 & 3) != 0 ) v11 = *((_DWORD *)this + 11); std::stringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v11); return std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 4)); } // 4C8EAE: variable 'v13' is possibly undefined // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C8F40) -------------------------------------------------------- BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3) { int v4; // edi int v5; // eax _DWORD *v6; // ecx int v7; // eax int v8; // edx v4 = (int)(this + 1); v5 = a2[1]; *this = v5; v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12)); *v6 = a2[2]; std::ios::init((int)v6, 0); v7 = *a2; v8 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; this[1] = (int)&off_4F6414; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; std::locale::locale(this + 8); *((_BYTE *)this + 48) = 0; this[11] = 0; this[1] = (int)&off_4F5918; this[9] = a3 | 0x10; this[10] = (int)(this + 12); return std::ios::init((int)this + *(_DWORD *)(*this - 12), v4); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C9020) -------------------------------------------------------- BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2) { int v3; // edi int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx int v8; // eax int v9; // ecx v3 = (int)(this + 1); v4 = a2[1]; *this = v4; v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); *v5 = a2[2]; std::ios::init((int)v5, 0); v6 = *a2; v7 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; this[1] = (int)&off_4F6414; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; std::locale::locale(this + 8); *((_BYTE *)this + 48) = 0; this[10] = (int)(this + 12); v8 = *this; this[11] = 0; this[1] = (int)&off_4F5918; v9 = *(_DWORD *)(v8 - 12); this[9] = 16; return std::ios::init((int)this + v9, v3); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C9100) -------------------------------------------------------- void __fastcall std::ostringstream::~ostringstream(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[10]; *a1 = &off_4F5C0C; a1[16] = off_4F5C20; a1[1] = &off_4F5918; if ( v2 != a1 + 12 ) operator delete(v2); a1[1] = &off_4F6414; std::locale::~locale((_DWORD **)a1 + 8); *a1 = &unk_4F0EF0; a1[16] = &off_4F6E10; std::ios_base::~ios_base((int)(a1 + 16)); operator delete(a1); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5C0C: using guessed type int (*off_4F5C0C)(); // 4F5C20: using guessed type int (*off_4F5C20[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004C9160) -------------------------------------------------------- void __fastcall std::ostringstream::~ostringstream(int a1) { void *v2; // eax v2 = *(void **)(a1 + 40); *(_DWORD *)a1 = &off_4F5C0C; *(_DWORD *)(a1 + 64) = off_4F5C20; *(_DWORD *)(a1 + 4) = &off_4F5918; if ( v2 != (void *)(a1 + 48) ) operator delete(v2); *(_DWORD *)(a1 + 4) = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F0EF0; *(_DWORD *)(a1 + 64) = &off_4F6E10; std::ios_base::~ios_base(a1 + 64); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5C0C: using guessed type int (*off_4F5C0C)(); // 4F5C20: using guessed type int (*off_4F5C20[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004C91C0) -------------------------------------------------------- int __thiscall std::ostringstream::~ostringstream(int *this, int *a2) { int v3; // eax char *v4; // eax int v5; // eax int result; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; v4 = (char *)this[10]; this[1] = (int)&off_4F5918; if ( v4 != (char *)(this + 12) ) operator delete(v4); this[1] = (int)&off_4F6414; std::locale::~locale((_DWORD **)this + 8); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(int *)((char *)this + result) = a2[2]; return result; } // 4F5918: using guessed type int (*off_4F5918)(); // 4F6414: using guessed type int (*off_4F6414)(); //----- (004C9220) -------------------------------------------------------- volatile signed __int32 **__thiscall std::ostringstream::operator=(volatile signed __int32 **this, int a2) { int v2; // esi int v3; // edi int v4; // eax int v5; // edx int v6; // edx unsigned int v7; // eax int v8; // ecx const void *v9; // edx volatile signed __int32 *v10; // eax volatile signed __int32 *v11; // esi _DWORD *v12; // edx int v13; // eax int v14; // ebx int v15; // edi __int64 v16; // rcx int v17; // edi int v18; // eax int v19; // edi volatile signed __int32 *v21; // ecx std::ios_base *v22; // [esp+4h] [ebp-74h] const std::locale *v23; // [esp+4h] [ebp-74h] const std::locale *v24; // [esp+4h] [ebp-74h] unsigned int v25; // [esp+10h] [ebp-68h] volatile signed __int32 *v26; // [esp+14h] [ebp-64h] _DWORD *v28; // [esp+20h] [ebp-58h] BYREF _DWORD *v29; // [esp+24h] [ebp-54h] BYREF _DWORD *v30; // [esp+28h] [ebp-50h] __int64 v31; // [esp+30h] [ebp-48h] int v32; // [esp+38h] [ebp-40h] int v33; // [esp+3Ch] [ebp-3Ch] __int64 v34; // [esp+40h] [ebp-38h] __int64 v35; // [esp+48h] [ebp-30h] __int64 v36; // [esp+50h] [ebp-28h] int v37; // [esp+58h] [ebp-20h] int v38; // [esp+5Ch] [ebp-1Ch] v2 = (int)this + *((_DWORD *)*this - 3); v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); std::ios_base::_M_swap(v2, (std::ios_base *)v3, v22); std::ios::_M_cache_locale((_DWORD *)v2, v2 + 108); std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); v4 = *(_DWORD *)(v2 + 112); v5 = *(_DWORD *)(v3 + 112); v31 = -1LL; *(_DWORD *)(v2 + 112) = v5; *(_DWORD *)(v3 + 112) = v4; LOBYTE(v4) = *(_BYTE *)(v3 + 116); LOBYTE(v5) = *(_BYTE *)(v2 + 116); v32 = -1; *(_BYTE *)(v2 + 116) = v4; LOBYTE(v4) = *(_BYTE *)(v3 + 117); *(_BYTE *)(v3 + 116) = v5; LOBYTE(v5) = *(_BYTE *)(v2 + 117); *(_BYTE *)(v2 + 117) = v4; *(_BYTE *)(v3 + 117) = v5; v33 = -1; v6 = *(_DWORD *)(a2 + 40); v30 = this + 1; v7 = *(_DWORD *)(a2 + 8); v34 = -1LL; v35 = -1LL; v36 = -1LL; v37 = -1; v38 = -1; if ( !v7 ) { v8 = *(_DWORD *)(a2 + 20); if ( !v8 ) goto LABEL_7; goto LABEL_3; } v31 = (int)(v7 - v6); v32 = *(_DWORD *)(a2 + 12) - v6; v33 = v32 >> 31; v7 = *(_DWORD *)(a2 + 16); v34 = (int)(v7 - v6); v8 = *(_DWORD *)(a2 + 20); if ( v8 ) { LABEL_3: v35 = v8 - v6; v25 = *(_DWORD *)(a2 + 24); v36 = (int)(v25 - v8); v37 = *(_DWORD *)(a2 + 28) - v6; v38 = v37 >> 31; if ( v7 < v25 ) v7 = v25; } if ( v7 ) *(_DWORD *)(a2 + 44) = v7 - v6; LABEL_7: std::streambuf::operator=(this + 1, a2 + 4); std::locale::locale((volatile signed __int32 **)&v29, (volatile signed __int32 **)(a2 + 32), v23); std::locale::locale((volatile signed __int32 **)&v28, this + 8, v24); std::locale::operator=(this + 8, (volatile signed __int32 **)&v29); std::locale::~locale(&v28); std::locale::~locale(&v29); v9 = *(const void **)(a2 + 40); this[9] = *(volatile signed __int32 **)(a2 + 36); v10 = this[10]; if ( v9 == (const void *)(a2 + 48) ) { v21 = *(volatile signed __int32 **)(a2 + 44); if ( v21 ) { if ( v21 == (volatile signed __int32 *)1 ) *(_BYTE *)v10 = *(_BYTE *)(a2 + 48); else memcpy((void *)v10, v9, *(_DWORD *)(a2 + 44)); v21 = *(volatile signed __int32 **)(a2 + 44); v10 = this[10]; } this[11] = v21; *((_BYTE *)v21 + (_DWORD)v10) = 0; v10 = *(volatile signed __int32 **)(a2 + 40); } else { v26 = *(volatile signed __int32 **)(a2 + 44); if ( v10 == (volatile signed __int32 *)(this + 12) ) { this[10] = (volatile signed __int32 *)v9; this[11] = v26; this[12] = *(volatile signed __int32 **)(a2 + 48); } else { v11 = this[12]; this[10] = (volatile signed __int32 *)v9; this[11] = v26; this[12] = *(volatile signed __int32 **)(a2 + 48); if ( v10 ) { *(_DWORD *)(a2 + 40) = v10; *(_DWORD *)(a2 + 48) = v11; goto LABEL_11; } } *(_DWORD *)(a2 + 40) = a2 + 48; v10 = (volatile signed __int32 *)(a2 + 48); } LABEL_11: *(_DWORD *)(a2 + 44) = 0; *(_BYTE *)v10 = 0; std::stringbuf::_M_sync((_DWORD *)(a2 + 4), *(_DWORD **)(a2 + 40), 0, 0); v12 = v30; v13 = v30[9]; if ( ((unsigned int)v31 & HIDWORD(v31)) != -1 ) { v14 = v34; v15 = v32; v30[1] = v13 + v31; v12[2] = v13 + v15; v12[3] = v13 + v14; } if ( ((unsigned int)v35 & HIDWORD(v35)) != -1 ) { v16 = v36; v17 = v13 + v37; v18 = v35 + v13; v12[6] = v17; v12[4] = v18; if ( v16 > 0x7FFFFFFF ) { v19 = v18 + 0x7FFFFFFF; do { v18 = v19; v16 -= 0x7FFFFFFFLL; v19 += 0x7FFFFFFF; } while ( v16 > 0x7FFFFFFF ); } v12[5] = v16 + v18; } return this; } // 4C9240: variable 'v22' is possibly undefined // 4C9392: variable 'v23' is possibly undefined // 4C93A6: variable 'v24' is possibly undefined //----- (004C9590) -------------------------------------------------------- int __thiscall std::wostringstream::str(int this, int a2) { _DWORD *v2; // esi unsigned int v4; // eax v2 = (_DWORD *)(this + 4); std::wstring::_M_replace(this + 40, 0, *(_DWORD *)(this + 44), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); v4 = 0; if ( (*(_BYTE *)(this + 36) & 3) != 0 ) v4 = *(_DWORD *)(this + 44); return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 40), 0, v4); } //----- (004C9600) -------------------------------------------------------- int __thiscall std::wostringstream::swap(_DWORD *this, _DWORD *a2) { int v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // dx std::ios_base *v8; // [esp+4h] [ebp-28h] v3 = (int)this + *(_DWORD *)(*this - 12); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v8); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *(_DWORD *)(v3 + 112); *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_WORD *)(v3 + 116) = v6; LOBYTE(v6) = *(_BYTE *)(v3 + 118); *((_WORD *)v4 + 58) = v5; *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); *((_BYTE *)v4 + 118) = v6; return std::wstringbuf::swap(this + 1, (int)(a2 + 1)); } // 4C9624: variable 'v8' is possibly undefined //----- (004C9690) -------------------------------------------------------- char *__thiscall std::wostringstream::basic_ostringstream(char *this, int *a2) { int v3; // eax int v4; // esi int v5; // esi int v6; // eax int v7; // edx unsigned int v8; // eax int v9; // ecx int v10; // eax int *v11; // eax int v12; // eax int v13; // edx int v14; // ecx int v15; // edx char *result; // eax std::ios_base *v17; // [esp+4h] [ebp-84h] const std::locale *v18; // [esp+4h] [ebp-84h] _DWORD *v19; // [esp+1Ch] [ebp-6Ch] _DWORD *v20; // [esp+20h] [ebp-68h] _DWORD *v21; // [esp+28h] [ebp-60h] int v22; // [esp+40h] [ebp-48h] int v23; // [esp+44h] [ebp-44h] int v24; // [esp+48h] [ebp-40h] int v25; // [esp+50h] [ebp-38h] int v26; // [esp+58h] [ebp-30h] int v27; // [esp+5Ch] [ebp-2Ch] int v28; // [esp+60h] [ebp-28h] int v29; // [esp+68h] [ebp-20h] v20 = this + 64; std::ios_base::ios_base((_DWORD *)this + 16); v3 = *a2; this[182] = 0; *((_DWORD *)this + 44) = 0; v4 = *(_DWORD *)(v3 - 12); *(_DWORD *)this = &unk_4F0F18; *((_WORD *)this + 90) = 0; v5 = (int)a2 + v4; *((_DWORD *)this + 46) = 0; *((_DWORD *)this + 47) = 0; *((_DWORD *)this + 48) = 0; *((_DWORD *)this + 49) = 0; *((_DWORD *)this + 16) = &unk_4F0F2C; std::ios_base::_M_move((int)v20, (std::ios_base *)v5, v17); std::wios::_M_cache_locale(v20, (int)(this + 172)); v6 = *(_DWORD *)(v5 + 112); *(_DWORD *)(v5 + 112) = 0; v19 = a2 + 1; v7 = a2[10]; *((_DWORD *)this + 44) = v6; LOWORD(v6) = *(_WORD *)(v5 + 116); *((_DWORD *)this + 46) = 0; *((_WORD *)this + 90) = v6; LOBYTE(v6) = *(_BYTE *)(v5 + 118); *(_DWORD *)this = &off_4F5C34; this[182] = v6; v21 = this + 4; v8 = a2[2]; *((_DWORD *)this + 16) = off_4F5C48; v22 = -1; v23 = -1; v24 = -1; v25 = -1; v26 = -1; v27 = -1; v28 = -1; v29 = -1; if ( !v8 ) { v9 = a2[5]; if ( !v9 ) goto LABEL_7; goto LABEL_3; } v22 = (int)(v8 - v7) >> 1; v23 = (int)(v8 - v7) >> 31; v24 = (a2[3] - v7) >> 1; v8 = a2[4]; v25 = (int)(v8 - v7) >> 1; v9 = a2[5]; if ( v9 ) { LABEL_3: v26 = (v9 - v7) >> 1; v27 = (v9 - v7) >> 31; v28 = (a2[6] - v9) >> 1; v29 = (a2[7] - v7) >> 1; if ( v8 < a2[6] ) v8 = a2[6]; } if ( v8 ) a2[11] = (int)(v8 - v7) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(v21, (int)v19, v18); *((_DWORD *)this + 1) = &off_4F5958; v10 = a2[9]; *((_DWORD *)this + 10) = this + 48; *((_DWORD *)this + 9) = v10; v11 = (int *)a2[10]; if ( v11 == a2 + 12 ) { wmemcpy((wchar_t *)this + 24, (const wchar_t *)a2 + 24, 8u); } else { *((_DWORD *)this + 10) = v11; *((_DWORD *)this + 12) = a2[12]; } v12 = a2[11]; a2[10] = (int)(a2 + 12); a2[11] = 0; *((_DWORD *)this + 11) = v12; *((_WORD *)a2 + 24) = 0; v13 = *((_DWORD *)this + 10); if ( (v22 & v23) != -1 ) { *((_DWORD *)this + 2) = v13 + 2 * v22; *((_DWORD *)this + 3) = v13 + 2 * v24; *((_DWORD *)this + 4) = v13 + 2 * v25; } if ( (v26 & v27) != -1 ) { v14 = v13 + 2 * v29; v15 = v13 + 2 * v26; *((_DWORD *)this + 7) = v14; *((_DWORD *)this + 5) = v15; *((_DWORD *)this + 6) = 2 * v28 + v15; } std::wstringbuf::_M_sync(v19, (_DWORD *)a2[10], 0, 0); result = this + 4; *((_DWORD *)this + 46) = v21; return result; } // 4C9922: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C970A: variable 'v17' is possibly undefined // 4C9864: variable 'v18' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F5C34: using guessed type int (*off_4F5C34)(); // 4F5C48: using guessed type int (*off_4F5C48[2])(); //----- (004C9A10) -------------------------------------------------------- BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int a2, int a3) { int v3; // esi int v5; // eax wchar_t *v6; // edx unsigned int v7; // eax int v9; // [esp+8h] [ebp-30h] v3 = (int)(this + 64); std::ios_base::ios_base((_DWORD *)this + 16); this[182] = 0; *((_DWORD *)this + 44) = 0; *((_WORD *)this + 90) = 0; *((_DWORD *)this + 46) = 0; *((_DWORD *)this + 47) = 0; *((_DWORD *)this + 48) = 0; *((_DWORD *)this + 49) = 0; *(_DWORD *)this = &unk_4F0F18; *((_DWORD *)this + 16) = &unk_4F0F2C; std::wios::init(v3, 0); *(_DWORD *)this = &off_4F5C34; *((_DWORD *)this + 16) = off_4F5C48; *((_DWORD *)this + 1) = &off_4F6454; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; std::locale::locale((_DWORD *)this + 8); *((_DWORD *)this + 1) = &off_4F5958; *((_DWORD *)this + 9) = 0; v5 = *(_DWORD *)(a2 + 4); v6 = *(wchar_t **)a2; LOBYTE(v9) = 0; *((_DWORD *)this + 10) = this + 48; std::wstring::_M_construct((wchar_t **)this + 10, v6, (int)&v6[v5], v9); *((_DWORD *)this + 9) = a3 | 0x10; v7 = 0; if ( (a3 & 3) != 0 ) v7 = *((_DWORD *)this + 11); std::wstringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v7); return std::wios::init(v3, (int)(this + 4)); } // 4C9B0D: variable 'v9' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F5C34: using guessed type int (*off_4F5C34)(); // 4F5C48: using guessed type int (*off_4F5C48[2])(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C9BA0) -------------------------------------------------------- BOOL __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2) { int v2; // esi v2 = (int)(this + 16); std::ios_base::ios_base(this + 16); *((_BYTE *)this + 182) = 0; this[44] = 0; *((_WORD *)this + 90) = 0; this[46] = 0; this[47] = 0; this[48] = 0; this[49] = 0; *this = &unk_4F0F18; this[16] = &unk_4F0F2C; std::wios::init(v2, 0); *this = &off_4F5C34; this[16] = off_4F5C48; this[1] = &off_4F6454; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; std::locale::locale(this + 8); this[1] = &off_4F5958; this[11] = 0; this[9] = a2 | 0x10; this[10] = this + 12; *((_WORD *)this + 24) = 0; return std::wios::init(v2, (int)(this + 1)); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5C34: using guessed type int (*off_4F5C34)(); // 4F5C48: using guessed type int (*off_4F5C48[2])(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C9CD0) -------------------------------------------------------- BOOL __fastcall std::wostringstream::basic_ostringstream(int a1) { int v1; // esi v1 = a1 + 64; std::ios_base::ios_base((_DWORD *)(a1 + 64)); *(_BYTE *)(a1 + 182) = 0; *(_DWORD *)(a1 + 176) = 0; *(_WORD *)(a1 + 180) = 0; *(_DWORD *)(a1 + 184) = 0; *(_DWORD *)(a1 + 188) = 0; *(_DWORD *)(a1 + 192) = 0; *(_DWORD *)(a1 + 196) = 0; *(_DWORD *)a1 = &unk_4F0F18; *(_DWORD *)(a1 + 64) = &unk_4F0F2C; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_4F5C34; *(_DWORD *)(a1 + 64) = off_4F5C48; *(_DWORD *)(a1 + 4) = &off_4F6454; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 28) = 0; std::locale::locale((_DWORD *)(a1 + 32)); *(_DWORD *)(a1 + 40) = a1 + 48; *(_DWORD *)(a1 + 4) = &off_4F5958; *(_DWORD *)(a1 + 36) = 16; *(_DWORD *)(a1 + 44) = 0; *(_WORD *)(a1 + 48) = 0; return std::wios::init(v1, a1 + 4); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5C34: using guessed type int (*off_4F5C34)(); // 4F5C48: using guessed type int (*off_4F5C48[2])(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004C9E00) -------------------------------------------------------- int __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3) { int v3; // eax int v4; // esi int v5; // edx char v6; // al int v7; // edx int v8; // eax int v9; // edx unsigned int v10; // eax int v11; // ecx unsigned int v12; // esi int v13; // eax int v14; // eax int v15; // edx int v16; // ecx int v17; // edx int result; // eax std::ios_base *v19; // [esp+4h] [ebp-84h] const std::locale *v20; // [esp+4h] [ebp-84h] int v21; // [esp+20h] [ebp-68h] _DWORD *v22; // [esp+28h] [ebp-60h] int v24; // [esp+40h] [ebp-48h] int v25; // [esp+44h] [ebp-44h] int v26; // [esp+48h] [ebp-40h] int v27; // [esp+50h] [ebp-38h] int v28; // [esp+58h] [ebp-30h] int v29; // [esp+5Ch] [ebp-2Ch] __int64 v30; // [esp+60h] [ebp-28h] int v31; // [esp+68h] [ebp-20h] v3 = a2[1]; *(_DWORD *)this = v3; v4 = (int)&this[*(_DWORD *)(v3 - 12)]; *(_DWORD *)v4 = a2[2]; v21 = a3 + *(_DWORD *)(*(_DWORD *)a3 - 12); std::ios_base::_M_move(v4, (std::ios_base *)v21, v19); std::wios::_M_cache_locale((_DWORD *)v4, v4 + 108); *(_DWORD *)(v4 + 120) = 0; v5 = *(_DWORD *)(v21 + 112); *(_DWORD *)(v21 + 112) = 0; *(_DWORD *)(v4 + 112) = v5; v6 = *(_BYTE *)(v21 + 118); *(_WORD *)(v4 + 116) = *(_WORD *)(v21 + 116); *(_BYTE *)(v4 + 118) = v6; v7 = a2[3]; v8 = *a2; *(_DWORD *)this = *a2; v24 = -1; *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v7; v22 = this + 4; v25 = -1; v26 = -1; v27 = -1; v28 = -1; v29 = -1; LODWORD(v30) = -1; v31 = -1; v9 = *(_DWORD *)(a3 + 40); v10 = *(_DWORD *)(a3 + 8); if ( !v10 ) { v11 = *(_DWORD *)(a3 + 20); if ( !v11 ) goto LABEL_7; goto LABEL_3; } v24 = (int)(v10 - v9) >> 1; v25 = (int)(v10 - v9) >> 31; v26 = (*(_DWORD *)(a3 + 12) - v9) >> 1; v10 = *(_DWORD *)(a3 + 16); v27 = (int)(v10 - v9) >> 1; v11 = *(_DWORD *)(a3 + 20); if ( v11 ) { LABEL_3: v12 = *(_DWORD *)(a3 + 24); v28 = (v11 - v9) >> 1; v29 = (v11 - v9) >> 31; v30 = (int)(v12 - v11) >> 1; v31 = (*(_DWORD *)(a3 + 28) - v9) >> 1; if ( v10 < v12 ) v10 = *(_DWORD *)(a3 + 24); } if ( v10 ) *(_DWORD *)(a3 + 44) = (int)(v10 - v9) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(v22, a3 + 4, v20); *((_DWORD *)this + 9) = *(_DWORD *)(a3 + 36); *((_DWORD *)this + 1) = &off_4F5958; *((_DWORD *)this + 10) = this + 48; v13 = *(_DWORD *)(a3 + 40); if ( v13 == a3 + 48 ) { wmemcpy((wchar_t *)this + 24, (const wchar_t *)(a3 + 48), 8u); } else { *((_DWORD *)this + 10) = v13; *((_DWORD *)this + 12) = *(_DWORD *)(a3 + 48); } v14 = *(_DWORD *)(a3 + 44); *(_DWORD *)(a3 + 40) = a3 + 48; *(_DWORD *)(a3 + 44) = 0; *((_DWORD *)this + 11) = v14; *(_WORD *)(a3 + 48) = 0; v15 = *((_DWORD *)this + 10); if ( (v24 & v25) != -1 ) { *((_DWORD *)this + 2) = v15 + 2 * v24; *((_DWORD *)this + 3) = v15 + 2 * v26; *((_DWORD *)this + 4) = v15 + 2 * v27; } if ( (v28 & v29) != -1 ) { v16 = v15 + 2 * v31; v17 = v15 + 2 * v28; *((_DWORD *)this + 7) = v16; *((_DWORD *)this + 5) = v17; *((_DWORD *)this + 6) = 2 * v30 + v17; } std::wstringbuf::_M_sync((_DWORD *)(a3 + 4), *(_DWORD **)(a3 + 40), 0, 0); result = *(_DWORD *)(*(_DWORD *)this - 12); *(_DWORD *)&this[result + 120] = v22; return result; } // 4CA03D: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4C9E33: variable 'v19' is possibly undefined // 4C9F7D: variable 'v20' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); //----- (004CA120) -------------------------------------------------------- BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4) { int v5; // eax char *v6; // ecx int v7; // eax int v8; // ecx int v9; // eax wchar_t *v10; // edx unsigned int v11; // eax int v13; // [esp+8h] [ebp-30h] v5 = a2[1]; *(_DWORD *)this = v5; v6 = &this[*(_DWORD *)(v5 - 12)]; *(_DWORD *)v6 = a2[2]; std::wios::init((int)v6, 0); v7 = *a2; v8 = a2[3]; *(_DWORD *)this = *a2; *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; *((_DWORD *)this + 1) = &off_4F6454; *((_DWORD *)this + 2) = 0; *((_DWORD *)this + 3) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 7) = 0; std::locale::locale((_DWORD *)this + 8); *((_DWORD *)this + 1) = &off_4F5958; *((_DWORD *)this + 9) = 0; v9 = *(_DWORD *)(a3 + 4); v10 = *(wchar_t **)a3; LOBYTE(v13) = 0; *((_DWORD *)this + 10) = this + 48; std::wstring::_M_construct((wchar_t **)this + 10, v10, (int)&v10[v9], v13); *((_DWORD *)this + 9) = a4 | 0x10; v11 = 0; if ( (a4 & 3) != 0 ) v11 = *((_DWORD *)this + 11); std::wstringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v11); return std::wios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 4)); } // 4CA1D1: variable 'v13' is possibly undefined // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004CA270) -------------------------------------------------------- BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3) { int v4; // edi int v5; // eax _DWORD *v6; // ecx int v7; // eax int v8; // edx v4 = (int)(this + 1); v5 = a2[1]; *this = v5; v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12)); *v6 = a2[2]; std::wios::init((int)v6, 0); v7 = *a2; v8 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; this[1] = (int)&off_4F6454; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; std::locale::locale(this + 8); this[11] = 0; this[1] = (int)&off_4F5958; this[9] = a3 | 0x10; this[10] = (int)(this + 12); *((_WORD *)this + 24) = 0; return std::wios::init((int)this + *(_DWORD *)(*this - 12), v4); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004CA350) -------------------------------------------------------- BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2) { int v3; // edi int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx int v8; // eax int v9; // ecx v3 = (int)(this + 1); v4 = a2[1]; *this = v4; v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); *v5 = a2[2]; std::wios::init((int)v5, 0); v6 = *a2; v7 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; this[1] = (int)&off_4F6454; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; std::locale::locale(this + 8); this[11] = 0; this[10] = (int)(this + 12); *((_WORD *)this + 24) = 0; v8 = *this; this[1] = (int)&off_4F5958; v9 = *(_DWORD *)(v8 - 12); this[9] = 16; return std::wios::init((int)this + v9, v3); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004CA430) -------------------------------------------------------- void __fastcall std::wostringstream::~wostringstream(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[10]; *a1 = &off_4F5C34; a1[16] = off_4F5C48; a1[1] = &off_4F5958; if ( v2 != a1 + 12 ) operator delete(v2); a1[1] = &off_4F6454; std::locale::~locale((_DWORD **)a1 + 8); *a1 = &unk_4F0F18; a1[16] = &off_4F6E20; std::ios_base::~ios_base((int)(a1 + 16)); operator delete(a1); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5C34: using guessed type int (*off_4F5C34)(); // 4F5C48: using guessed type int (*off_4F5C48[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004CA490) -------------------------------------------------------- void __fastcall std::wostringstream::~wostringstream(int a1) { void *v2; // eax v2 = *(void **)(a1 + 40); *(_DWORD *)a1 = &off_4F5C34; *(_DWORD *)(a1 + 64) = off_4F5C48; *(_DWORD *)(a1 + 4) = &off_4F5958; if ( v2 != (void *)(a1 + 48) ) operator delete(v2); *(_DWORD *)(a1 + 4) = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F0F18; *(_DWORD *)(a1 + 64) = &off_4F6E20; std::ios_base::~ios_base(a1 + 64); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5C34: using guessed type int (*off_4F5C34)(); // 4F5C48: using guessed type int (*off_4F5C48[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004CA4F0) -------------------------------------------------------- int __thiscall std::wostringstream::~wostringstream(int *this, int *a2) { int v3; // eax char *v4; // eax int v5; // eax int result; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; v4 = (char *)this[10]; this[1] = (int)&off_4F5958; if ( v4 != (char *)(this + 12) ) operator delete(v4); this[1] = (int)&off_4F6454; std::locale::~locale((_DWORD **)this + 8); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(int *)((char *)this + result) = a2[2]; return result; } // 4F5958: using guessed type int (*off_4F5958)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004CA550) -------------------------------------------------------- char *__thiscall std::wostringstream::operator=(char *this, int a2) { int v2; // esi int v3; // edi int v4; // eax int v5; // edx int v6; // edx unsigned int v7; // eax int v8; // ecx unsigned int v9; // esi int v10; // ecx wchar_t *v11; // eax wchar_t *v12; // edx int v13; // esi _DWORD *v14; // ecx int v15; // ebx int v16; // edx int v17; // edi __int64 v18; // rax int v19; // edi int v20; // ebx int v21; // edi int v23; // ecx std::ios_base *v24; // [esp+4h] [ebp-74h] const std::locale *v25; // [esp+4h] [ebp-74h] const std::locale *v26; // [esp+4h] [ebp-74h] int v27; // [esp+14h] [ebp-64h] _DWORD *v29; // [esp+20h] [ebp-58h] BYREF _DWORD *v30; // [esp+24h] [ebp-54h] BYREF _DWORD *v31; // [esp+28h] [ebp-50h] int v32; // [esp+30h] [ebp-48h] int v33; // [esp+34h] [ebp-44h] int v34; // [esp+38h] [ebp-40h] int v35; // [esp+3Ch] [ebp-3Ch] __int64 v36; // [esp+40h] [ebp-38h] int v37; // [esp+48h] [ebp-30h] int v38; // [esp+4Ch] [ebp-2Ch] __int64 v39; // [esp+50h] [ebp-28h] int v40; // [esp+58h] [ebp-20h] int v41; // [esp+5Ch] [ebp-1Ch] v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); std::ios_base::_M_swap(v2, (std::ios_base *)v3, v24); std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); v4 = *(_DWORD *)(v2 + 112); v5 = *(_DWORD *)(v3 + 112); v32 = -1; v33 = -1; *(_DWORD *)(v2 + 112) = v5; LOWORD(v5) = *(_WORD *)(v3 + 116); *(_DWORD *)(v3 + 112) = v4; LOWORD(v4) = *(_WORD *)(v2 + 116); *(_WORD *)(v2 + 116) = v5; LOBYTE(v5) = *(_BYTE *)(v2 + 118); *(_WORD *)(v3 + 116) = v4; LOBYTE(v4) = *(_BYTE *)(v3 + 118); v34 = -1; *(_BYTE *)(v2 + 118) = v4; *(_BYTE *)(v3 + 118) = v5; v35 = -1; v6 = *(_DWORD *)(a2 + 40); v31 = this + 4; v7 = *(_DWORD *)(a2 + 8); v36 = -1LL; v37 = -1; v38 = -1; v39 = -1LL; v40 = -1; v41 = -1; if ( !v7 ) { v8 = *(_DWORD *)(a2 + 20); if ( !v8 ) goto LABEL_7; goto LABEL_3; } v32 = (int)(v7 - v6) >> 1; v33 = (int)(v7 - v6) >> 31; v34 = (*(_DWORD *)(a2 + 12) - v6) >> 1; v35 = v34 >> 31; v7 = *(_DWORD *)(a2 + 16); v36 = (int)(v7 - v6) >> 1; v8 = *(_DWORD *)(a2 + 20); if ( v8 ) { LABEL_3: v37 = (v8 - v6) >> 1; v38 = (v8 - v6) >> 31; v9 = *(_DWORD *)(a2 + 24); v39 = (int)(v9 - v8) >> 1; v40 = (*(_DWORD *)(a2 + 28) - v6) >> 1; v41 = v40 >> 31; if ( v7 < v9 ) v7 = v9; } if ( v7 ) *(_DWORD *)(a2 + 44) = (int)(v7 - v6) >> 1; LABEL_7: std::wstreambuf::operator=((volatile signed __int32 **)this + 1, a2 + 4); std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)(a2 + 32), v25); std::locale::locale((volatile signed __int32 **)&v29, (volatile signed __int32 **)this + 8, v26); std::locale::operator=((volatile signed __int32 **)this + 8, (volatile signed __int32 **)&v30); std::locale::~locale(&v29); std::locale::~locale(&v30); v10 = *(_DWORD *)(a2 + 40); *((_DWORD *)this + 9) = *(_DWORD *)(a2 + 36); v11 = (wchar_t *)*((_DWORD *)this + 10); v12 = (wchar_t *)(a2 + 48); if ( v10 == a2 + 48 ) { v23 = *(_DWORD *)(a2 + 44); if ( v23 ) { if ( v23 == 1 ) { *v11 = *(_WORD *)(a2 + 48); } else { wmemcpy(v11, (const wchar_t *)(a2 + 48), *(_DWORD *)(a2 + 44)); v23 = *(_DWORD *)(a2 + 44); v12 = *(wchar_t **)(a2 + 40); v11 = (wchar_t *)*((_DWORD *)this + 10); } } *((_DWORD *)this + 11) = v23; v11[v23] = 0; v11 = v12; } else { v27 = *(_DWORD *)(a2 + 44); if ( v11 == (wchar_t *)(this + 48) ) { *((_DWORD *)this + 10) = v10; *((_DWORD *)this + 11) = v27; *((_DWORD *)this + 12) = *(_DWORD *)(a2 + 48); } else { v13 = *((_DWORD *)this + 12); *((_DWORD *)this + 10) = v10; *((_DWORD *)this + 11) = v27; *((_DWORD *)this + 12) = *(_DWORD *)(a2 + 48); if ( v11 ) { *(_DWORD *)(a2 + 40) = v11; *(_DWORD *)(a2 + 48) = v13; goto LABEL_11; } } *(_DWORD *)(a2 + 40) = v12; v11 = (wchar_t *)(a2 + 48); } LABEL_11: *(_DWORD *)(a2 + 44) = 0; *v11 = 0; std::wstringbuf::_M_sync((_DWORD *)(a2 + 4), v11, 0, 0); v14 = v31; v15 = v31[9]; if ( (v32 & v33) != -1 ) { v16 = v36; v17 = v34; v31[1] = v15 + 2 * v32; v14[2] = v15 + 2 * v17; v14[3] = v15 + 2 * v16; } if ( (v38 & v37) != -1 ) { v18 = v39; v19 = v15 + 2 * v40; v20 = v15 + 2 * v37; v14[6] = v19; v14[4] = v20; if ( v18 > 0x7FFFFFFF ) { v21 = v20 - 2; do { v20 = v21; v18 -= 0x7FFFFFFFLL; v21 -= 2; } while ( v18 > 0x7FFFFFFF ); } v14[5] = v20 + 2 * v18; } return this; } // 4CA570: variable 'v24' is possibly undefined // 4CA6CE: variable 'v25' is possibly undefined // 4CA6E2: variable 'v26' is possibly undefined //----- (004CA8D0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_4F5C58; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004CA900) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_4F5C58; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004CA940) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_4F5C58; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004CA970) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_4F5C58; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004CA9B0) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5C58; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4CA9C9: variable 'v2' is possibly undefined // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004CA9E0) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C58; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CA9E9: variable 'v1' is possibly undefined // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004CAA10) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C58; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CAA19: variable 'v1' is possibly undefined // 4F5C58: using guessed type int (*off_4F5C58)(); //----- (004CAA40) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_4F5C74; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004CAA70) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_4F5C74; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004CAAB0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_4F5C74; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004CAAE0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_4F5C74; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004CAB20) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5C74; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4CAB39: variable 'v2' is possibly undefined // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004CAB50) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C74; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CAB59: variable 'v1' is possibly undefined // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004CAB80) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C74; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CAB89: variable 'v1' is possibly undefined // 4F5C74: using guessed type int (*off_4F5C74)(); //----- (004CABB0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_4F5C90; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5C90: using guessed type int (*off_4F5C90)(); //----- (004CABF0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_4F5C90; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5C90: using guessed type int (*off_4F5C90)(); //----- (004CAC30) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_4F5C90; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5C90: using guessed type int (*off_4F5C90)(); //----- (004CAC70) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_4F5C90; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5C90: using guessed type int (*off_4F5C90)(); //----- (004CACB0) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5C90; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4CACC9: variable 'v2' is possibly undefined // 4F5C90: using guessed type int (*off_4F5C90)(); //----- (004CACE0) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C90; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CACE9: variable 'v1' is possibly undefined // 4F5C90: using guessed type int (*off_4F5C90)(); //----- (004CAD10) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5C90; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CAD19: variable 'v1' is possibly undefined // 4F5C90: using guessed type int (*off_4F5C90)(); //----- (004CAD40) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_4F5CAC; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5CAC: using guessed type int (*off_4F5CAC)(); //----- (004CAD80) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_4F5CAC; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5CAC: using guessed type int (*off_4F5CAC)(); //----- (004CADC0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_4F5CAC; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5CAC: using guessed type int (*off_4F5CAC)(); //----- (004CAE00) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_4F5CAC; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F5CAC: using guessed type int (*off_4F5CAC)(); //----- (004CAE40) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5CAC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4CAE59: variable 'v2' is possibly undefined // 4F5CAC: using guessed type int (*off_4F5CAC)(); //----- (004CAE70) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5CAC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CAE79: variable 'v1' is possibly undefined // 4F5CAC: using guessed type int (*off_4F5CAC)(); //----- (004CAEA0) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5CAC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CAEA9: variable 'v1' is possibly undefined // 4F5CAC: using guessed type int (*off_4F5CAC)(); //----- (004CAED0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) { _DWORD *v3; // eax char *v4; // ecx int i; // eax char *v6; // esi int j; // eax _DWORD *result; // eax void (__cdecl *v9)(void *); // [esp+4h] [ebp-18h] v3 = (_DWORD *)this[2]; if ( !v3 ) { v3 = operator new((struct type_info *)0x68, v9); v3[1] = 0; *v3 = &off_4F65A0; v3[2] = 0; v3[3] = 0; *((_BYTE *)v3 + 16) = 0; v3[5] = 0; v3[6] = 0; v3[7] = 0; v3[8] = 0; *((_WORD *)v3 + 18) = 0; *((_BYTE *)v3 + 100) = 0; this[2] = v3; } v3[2] = &unk_4EC630; v4 = std::__num_base::_S_atoms_out[0]; v3[3] = 0; *((_BYTE *)v3 + 16) = 0; *((_BYTE *)v3 + 36) = 46; *(_BYTE *)(this[2] + 37) = 44; for ( i = 0; i != 36; ++i ) *(_BYTE *)(this[2] + i + 38) = v4[i]; v6 = std::__num_base::_S_atoms_in[0]; for ( j = 0; j != 26; ++j ) *(_BYTE *)(this[2] + j + 74) = v6[j]; result = (_DWORD *)this[2]; result[5] = "true"; result[6] = 4; result[7] = "false"; result[8] = 5; return result; } // 4CAF72: variable 'v9' is possibly undefined // 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; // 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (004CAFD0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F5CC8; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004CB020) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F5CC8; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004CB070) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_4F5CC8; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004CB0C0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F5CC8; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004CB110) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F5CC8; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004CB160) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_4F5CC8; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004CB1B0) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::numpunct::~numpunct(v2); operator delete(a1); } // 4CB1B7: variable 'v2' is possibly undefined //----- (004CB1E0) -------------------------------------------------------- void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F5CC8; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4CB1E7: variable 'v1' is possibly undefined // 4F5CC8: using guessed type int (*off_4F5CC8)(); //----- (004CB210) -------------------------------------------------------- int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) { _DWORD *v2; // edx char *v3; // ebx int v4; // eax char *v5; // ebx int result; // eax _DWORD *v7; // eax void (__cdecl *v8)(void *); // [esp+4h] [ebp-28h] v2 = (_DWORD *)this[2]; if ( !v2 ) { v7 = operator new((struct type_info *)0xA8, v8); v7[1] = 0; v2 = v7; *v7 = &off_4F65B0; v7[2] = 0; v7[3] = 0; *((_BYTE *)v7 + 16) = 0; v7[5] = 0; v7[6] = 0; v7[7] = 0; v7[8] = 0; v7[9] = 0; *((_BYTE *)v7 + 164) = 0; this[2] = v7; } v2[2] = &unk_4EC630; v3 = std::__num_base::_S_atoms_out[0]; v4 = 0; v2[3] = 0; *((_BYTE *)v2 + 16) = 0; v2[9] = 2883630; do { *((_WORD *)v2 + v4 + 20) = v3[v4]; ++v4; } while ( v4 != 36 ); v5 = std::__num_base::_S_atoms_in[0]; for ( result = 0; result != 26; ++result ) *((_WORD *)v2 + result + 56) = v5[result]; v2[5] = &off_4EC63C; v2[6] = 4; v2[7] = &off_4EC646; v2[8] = 5; return result; } // 4CB2A0: variable 'v8' is possibly undefined // 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; // 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; // 4EC63C: using guessed type void *off_4EC63C; // 4EC646: using guessed type void *off_4EC646; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (004CB300) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F5CEC; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004CB350) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F5CEC; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004CB3A0) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_4F5CEC; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004CB3F0) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F5CEC; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004CB440) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F5CEC; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004CB490) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_4F5CEC; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004CB4E0) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::numpunct::~numpunct(v2); operator delete(a1); } // 4CB4E7: variable 'v2' is possibly undefined //----- (004CB510) -------------------------------------------------------- void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F5CEC; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4CB517: variable 'v1' is possibly undefined // 4F5CEC: using guessed type int (*off_4F5CEC)(); //----- (004CB540) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5D10; result = a2 != 0; this[1] = result; return result; } // 4F5D10: using guessed type int (*off_4F5D10)(); //----- (004CB560) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5D10; result = a2 != 0; this[1] = result; return result; } // 4F5D10: using guessed type int (*off_4F5D10)(); //----- (004CB580) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5D10; std::locale::facet::~facet(v2); operator delete(a1); } // 4CB58C: variable 'v2' is possibly undefined // 4F5D10: using guessed type int (*off_4F5D10)(); //----- (004CB5A0) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D10; std::locale::facet::~facet(a1); } // 4CB5A0: variable 'v1' is possibly undefined // 4F5D10: using guessed type int (*off_4F5D10)(); //----- (004CB5B0) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D10; std::locale::facet::~facet(a1); } // 4CB5B0: variable 'v1' is possibly undefined // 4F5D10: using guessed type int (*off_4F5D10)(); //----- (004CB5C0) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5D3C; result = a2 != 0; this[1] = result; return result; } // 4F5D3C: using guessed type int (*off_4F5D3C)(); //----- (004CB5E0) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5D3C; result = a2 != 0; this[1] = result; return result; } // 4F5D3C: using guessed type int (*off_4F5D3C)(); //----- (004CB600) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5D3C; std::locale::facet::~facet(v2); operator delete(a1); } // 4CB60C: variable 'v2' is possibly undefined // 4F5D3C: using guessed type int (*off_4F5D3C)(); //----- (004CB620) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D3C; std::locale::facet::~facet(a1); } // 4CB620: variable 'v1' is possibly undefined // 4F5D3C: using guessed type int (*off_4F5D3C)(); //----- (004CB630) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D3C; std::locale::facet::~facet(a1); } // 4CB630: variable 'v1' is possibly undefined // 4F5D3C: using guessed type int (*off_4F5D3C)(); //----- (004CB640) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5D68; result = a2 != 0; this[1] = result; return result; } // 4F5D68: using guessed type int (*off_4F5D68)(); //----- (004CB660) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5D68; result = a2 != 0; this[1] = result; return result; } // 4F5D68: using guessed type int (*off_4F5D68)(); //----- (004CB680) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5D68; std::locale::facet::~facet(v2); operator delete(a1); } // 4CB68C: variable 'v2' is possibly undefined // 4F5D68: using guessed type int (*off_4F5D68)(); //----- (004CB6A0) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D68; std::locale::facet::~facet(a1); } // 4CB6A0: variable 'v1' is possibly undefined // 4F5D68: using guessed type int (*off_4F5D68)(); //----- (004CB6B0) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D68; std::locale::facet::~facet(a1); } // 4CB6B0: variable 'v1' is possibly undefined // 4F5D68: using guessed type int (*off_4F5D68)(); //----- (004CB6C0) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5D80; result = a2 != 0; this[1] = result; return result; } // 4F5D80: using guessed type int (*off_4F5D80)(); //----- (004CB6E0) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5D80; result = a2 != 0; this[1] = result; return result; } // 4F5D80: using guessed type int (*off_4F5D80)(); //----- (004CB700) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5D80; std::locale::facet::~facet(v2); operator delete(a1); } // 4CB70C: variable 'v2' is possibly undefined // 4F5D80: using guessed type int (*off_4F5D80)(); //----- (004CB720) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D80; std::locale::facet::~facet(a1); } // 4CB720: variable 'v1' is possibly undefined // 4F5D80: using guessed type int (*off_4F5D80)(); //----- (004CB730) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D80; std::locale::facet::~facet(a1); } // 4CB730: variable 'v1' is possibly undefined // 4F5D80: using guessed type int (*off_4F5D80)(); //----- (004CB740) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5D98; result = a2 != 0; this[1] = result; return result; } // 4F5D98: using guessed type int (*off_4F5D98)(); //----- (004CB760) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5D98; result = a2 != 0; this[1] = result; return result; } // 4F5D98: using guessed type int (*off_4F5D98)(); //----- (004CB780) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5D98; std::locale::facet::~facet(v2); operator delete(a1); } // 4CB78C: variable 'v2' is possibly undefined // 4F5D98: using guessed type int (*off_4F5D98)(); //----- (004CB7A0) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D98; std::locale::facet::~facet(a1); } // 4CB7A0: variable 'v1' is possibly undefined // 4F5D98: using guessed type int (*off_4F5D98)(); //----- (004CB7B0) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5D98; std::locale::facet::~facet(a1); } // 4CB7B0: variable 'v1' is possibly undefined // 4F5D98: using guessed type int (*off_4F5D98)(); //----- (004CB7C0) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5DB0; result = a2 != 0; this[1] = result; return result; } // 4F5DB0: using guessed type int (*off_4F5DB0)(); //----- (004CB7E0) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F5DB0; result = a2 != 0; this[1] = result; return result; } // 4F5DB0: using guessed type int (*off_4F5DB0)(); //----- (004CB800) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F5DB0; std::locale::facet::~facet(v2); operator delete(a1); } // 4CB80C: variable 'v2' is possibly undefined // 4F5DB0: using guessed type int (*off_4F5DB0)(); //----- (004CB820) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5DB0; std::locale::facet::~facet(a1); } // 4CB820: variable 'v1' is possibly undefined // 4F5DB0: using guessed type int (*off_4F5DB0)(); //----- (004CB830) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F5DB0; std::locale::facet::~facet(a1); } // 4CB830: variable 'v1' is possibly undefined // 4F5DB0: using guessed type int (*off_4F5DB0)(); //----- (004CB840) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_4F68CC; std::locale::facet::~facet(v2); operator delete(a1); } // 4CB84C: variable 'v2' is possibly undefined //----- (004CB860) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_4F68CC; std::locale::facet::~facet(a1); } // 4CB860: variable 'v1' is possibly undefined //----- (004CB870) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_4F68F8; std::locale::facet::~facet(v2); operator delete(a1); } // 4CB87C: variable 'v2' is possibly undefined //----- (004CB890) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_4F68F8; std::locale::facet::~facet(a1); } // 4CB890: variable 'v1' is possibly undefined //----- (004CB8A0) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_4F6924; std::locale::facet::~facet(v2); operator delete(a1); } // 4CB8AC: variable 'v2' is possibly undefined //----- (004CB8C0) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_4F6924; std::locale::facet::~facet(a1); } // 4CB8C0: variable 'v1' is possibly undefined //----- (004CB8D0) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_4F6950; std::locale::facet::~facet(v2); operator delete(a1); } // 4CB8DC: variable 'v2' is possibly undefined //----- (004CB8F0) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_4F6950; std::locale::facet::~facet(a1); } // 4CB8F0: variable 'v1' is possibly undefined //----- (004CB900) -------------------------------------------------------- int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_4F6B78; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 4F6B78: using guessed type int (*off_4F6B78)(); //----- (004CB930) -------------------------------------------------------- int __thiscall std::codecvt::codecvt(_DWORD *this, int a2) { int result; // eax *this = &off_4F6B78; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6B78: using guessed type int (*off_4F6B78)(); //----- (004CB970) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::codecvt::~codecvt(v2); operator delete(a1); } // 4CB977: variable 'v2' is possibly undefined //----- (004CB9A0) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx v2 = v1; *v1 = &off_4F6B78; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); *v2 = &unk_4F697C; std::locale::facet::~facet(a1); } // 4CB9A5: variable 'v1' is possibly undefined // 4F6B78: using guessed type int (*off_4F6B78)(); //----- (004CB9E0) -------------------------------------------------------- int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_4F6BA4; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 4F6BA4: using guessed type int (*off_4F6BA4)(); //----- (004CBA10) -------------------------------------------------------- int __thiscall std::codecvt::codecvt(_DWORD *this, int a2) { int result; // eax *this = &off_4F6BA4; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6BA4: using guessed type int (*off_4F6BA4)(); //----- (004CBA50) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::codecvt::~codecvt(v2); operator delete(a1); } // 4CBA57: variable 'v2' is possibly undefined //----- (004CBA80) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx v2 = v1; *v1 = &off_4F6BA4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); *v2 = &unk_4F69A8; std::locale::facet::~facet(a1); } // 4CBA85: variable 'v1' is possibly undefined // 4F6BA4: using guessed type int (*off_4F6BA4)(); //----- (004CBAC0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_4F6BD0; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004CBAF0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_4F6BD0; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004CBB30) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_4F6BD0; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004CBB60) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_4F6BD0; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004CBBA0) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6BD0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4CBBB9: variable 'v2' is possibly undefined // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004CBBD0) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6BD0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CBBD9: variable 'v1' is possibly undefined // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004CBC00) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6BD0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CBC09: variable 'v1' is possibly undefined // 4F6BD0: using guessed type int (*off_4F6BD0)(); //----- (004CBC30) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_4F6BEC; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004CBC60) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_4F6BEC; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004CBCA0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_4F6BEC; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004CBCD0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_4F6BEC; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004CBD10) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6BEC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4CBD29: variable 'v2' is possibly undefined // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004CBD40) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6BEC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CBD49: variable 'v1' is possibly undefined // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004CBD70) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6BEC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CBD79: variable 'v1' is possibly undefined // 4F6BEC: using guessed type int (*off_4F6BEC)(); //----- (004CBDA0) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6C08; result = a2 != 0; this[1] = result; return result; } // 4F6C08: using guessed type int (*off_4F6C08)(); //----- (004CBDC0) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6C08; result = a2 != 0; this[1] = result; return result; } // 4F6C08: using guessed type int (*off_4F6C08)(); //----- (004CBDE0) -------------------------------------------------------- void __fastcall std::num_get>::~num_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6C08; std::locale::facet::~facet(v2); operator delete(a1); } // 4CBDEC: variable 'v2' is possibly undefined // 4F6C08: using guessed type int (*off_4F6C08)(); //----- (004CBE00) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6C08; std::locale::facet::~facet(a1); } // 4CBE00: variable 'v1' is possibly undefined // 4F6C08: using guessed type int (*off_4F6C08)(); //----- (004CBE10) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6C08; std::locale::facet::~facet(a1); } // 4CBE10: variable 'v1' is possibly undefined // 4F6C08: using guessed type int (*off_4F6C08)(); //----- (004CBE20) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6C44; result = a2 != 0; this[1] = result; return result; } // 4F6C44: using guessed type int (*off_4F6C44)(); //----- (004CBE40) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6C44; result = a2 != 0; this[1] = result; return result; } // 4F6C44: using guessed type int (*off_4F6C44)(); //----- (004CBE60) -------------------------------------------------------- void __fastcall std::num_get>::~num_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6C44; std::locale::facet::~facet(v2); operator delete(a1); } // 4CBE6C: variable 'v2' is possibly undefined // 4F6C44: using guessed type int (*off_4F6C44)(); //----- (004CBE80) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6C44; std::locale::facet::~facet(a1); } // 4CBE80: variable 'v1' is possibly undefined // 4F6C44: using guessed type int (*off_4F6C44)(); //----- (004CBE90) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6C44; std::locale::facet::~facet(a1); } // 4CBE90: variable 'v1' is possibly undefined // 4F6C44: using guessed type int (*off_4F6C44)(); //----- (004CBEA0) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6C80; result = a2 != 0; this[1] = result; return result; } // 4F6C80: using guessed type int (*off_4F6C80)(); //----- (004CBEC0) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6C80; result = a2 != 0; this[1] = result; return result; } // 4F6C80: using guessed type int (*off_4F6C80)(); //----- (004CBEE0) -------------------------------------------------------- void __fastcall std::num_put>::~num_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6C80; std::locale::facet::~facet(v2); operator delete(a1); } // 4CBEEC: variable 'v2' is possibly undefined // 4F6C80: using guessed type int (*off_4F6C80)(); //----- (004CBF00) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6C80; std::locale::facet::~facet(a1); } // 4CBF00: variable 'v1' is possibly undefined // 4F6C80: using guessed type int (*off_4F6C80)(); //----- (004CBF10) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6C80; std::locale::facet::~facet(a1); } // 4CBF10: variable 'v1' is possibly undefined // 4F6C80: using guessed type int (*off_4F6C80)(); //----- (004CBF20) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6CB0; result = a2 != 0; this[1] = result; return result; } // 4F6CB0: using guessed type int (*off_4F6CB0)(); //----- (004CBF40) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6CB0; result = a2 != 0; this[1] = result; return result; } // 4F6CB0: using guessed type int (*off_4F6CB0)(); //----- (004CBF60) -------------------------------------------------------- void __fastcall std::num_put>::~num_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6CB0; std::locale::facet::~facet(v2); operator delete(a1); } // 4CBF6C: variable 'v2' is possibly undefined // 4F6CB0: using guessed type int (*off_4F6CB0)(); //----- (004CBF80) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6CB0; std::locale::facet::~facet(a1); } // 4CBF80: variable 'v1' is possibly undefined // 4F6CB0: using guessed type int (*off_4F6CB0)(); //----- (004CBF90) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6CB0; std::locale::facet::~facet(a1); } // 4CBF90: variable 'v1' is possibly undefined // 4F6CB0: using guessed type int (*off_4F6CB0)(); //----- (004CBFA0) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( _DWORD *this, int a2) { _DWORD *v3; // esi _DWORD *v4; // ebx char v5; // al _DWORD *v6; // edx int v7; // ebx _DWORD *v9; // ebx void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] char v11; // [esp+1Bh] [ebp-1Dh] _DWORD *v12; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v4 = (_DWORD *)this[2]; v12 = this + 1; v5 = 1; while ( v4 ) { v5 = std::operator<(a2, (int)(v4 + 4)); if ( v5 ) v6 = (_DWORD *)v4[2]; else v6 = (_DWORD *)v4[3]; v3 = v4; v4 = v6; } if ( v5 ) { if ( (_DWORD *)this[3] == v3 ) goto LABEL_13; v7 = std::_Rb_tree_decrement(v3); } else { v7 = (int)v3; } if ( !(unsigned __int8)std::operator<(v7 + 16, a2) ) return (_DWORD *)v7; LABEL_13: v11 = 1; if ( v12 != v3 ) v11 = std::operator<(a2, (int)(v3 + 4)); v9 = operator new((struct type_info *)0x28, v10); std::string::basic_string(v9 + 4, a2); std::_Rb_tree_insert_and_rebalance(v11, v9, v3, v12); ++this[5]; return v9; } // 4CC03B: variable 'v10' is possibly undefined //----- (004CC0A8) -------------------------------------------------------- void __stdcall std::_Rb_tree,std::less,std::allocator>::_M_erase( void **a1) { void **v2; // edi void **v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree,std::less,std::allocator>::_M_erase(a1[3]); v2 = (void **)a1[2]; std::string::_M_dispose(a1 + 4); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004CC0EC) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( _DWORD *this, int a2, _DWORD *a3, _DWORD *a4) { char v4; // al _DWORD *v6; // ebx _DWORD *result; // eax v4 = 1; v6 = this + 1; if ( !a2 && a3 != v6 ) v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); result = a4; ++this[5]; return result; } //----- (004CC148) -------------------------------------------------------- int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( _DWORD *this, int a2) { char v2; // al _DWORD *v3; // ebx _DWORD *i; // esi _DWORD *v5; // edx int v6; // esi _DWORD *v8; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v8 = this; v2 = std::operator<(a2, (int)(i + 4)); this = v8; if ( v2 ) v5 = (_DWORD *)i[2]; else v5 = (_DWORD *)i[3]; v3 = i; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v6 = std::_Rb_tree_decrement(v3); } else { v6 = (int)v3; } if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) return 0; return v6; } //----- (004CC1C8) -------------------------------------------------------- int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( _DWORD *this, _DWORD *a2, int a3) { int result; // eax int v5; // [esp+1Ch] [ebp-1Ch] int v6; // [esp+1Ch] [ebp-1Ch] if ( a2 == this + 1 ) { if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) return 0; return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( this, a3); } if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) { if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) return (int)a2; if ( (_DWORD *)this[4] == a2 ) return 0; v6 = std::_Rb_tree_increment((int)a2); if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) { if ( !a2[3] ) return 0; return v6; } return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( this, a3); } result = this[3]; if ( (_DWORD *)result == a2 ) return result; v5 = std::_Rb_tree_decrement(a2); if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( this, a3); result = (int)a2; if ( !*(_DWORD *)(v5 + 12) ) return 0; return result; } //----- (004CC2C4) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( _DWORD *this, int a2) { _DWORD *v2; // esi _DWORD *v3; // edi _DWORD *v4; // ebx v2 = this + 1; v3 = this + 1; v4 = (_DWORD *)this[2]; while ( v4 ) { if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) { v4 = (_DWORD *)v4[3]; } else { v3 = v4; v4 = (_DWORD *)v4[2]; } } if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) return v2; return v3; } //----- (004CC324) -------------------------------------------------------- void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( void *a1) { void *v2; // edi void *v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void **)a1 + 3)); v2 = (void *)*((_DWORD *)a1 + 2); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)a1 + 11); std::string::_M_dispose((void **)a1 + 4); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004CC370) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( _DWORD *this, int a2, _DWORD *a3, _DWORD *a4) { char v4; // al _DWORD *v6; // ebx _DWORD *result; // eax v4 = 1; v6 = this + 1; if ( !a2 && a3 != v6 ) v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); result = a4; ++this[5]; return result; } //----- (004CC3CC) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( _DWORD *this, _DWORD *a2) { void **v3; // ebx int insert_unique_pos; // eax _DWORD *v5; // edx void (__cdecl *v7)(void *); // [esp+4h] [ebp-34h] int v8; // [esp+1Ch] [ebp-1Ch] v3 = (void **)operator new((struct type_info *)0x40, v7); std::string::basic_string(v3 + 4, a2); std::string::basic_string(v3 + 10, a2 + 6); insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, (int)(v3 + 4)); if ( v5 ) return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, insert_unique_pos, v5, v3); v8 = insert_unique_pos; std::string::_M_dispose(v3 + 10); std::string::_M_dispose(v3 + 4); operator delete(v3); return (_DWORD *)v8; } // 4CC3DE: variable 'v7' is possibly undefined // 4CC41B: variable 'v5' is possibly undefined //----- (004CC464) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( _DWORD *this, int a2) { char v2; // al _DWORD *v3; // ebx _DWORD *i; // esi _DWORD *v5; // edx int v6; // esi _DWORD *v8; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v8 = this; v2 = std::operator<(a2, (int)(i + 4)); this = v8; if ( v2 ) v5 = (_DWORD *)i[2]; else v5 = (_DWORD *)i[3]; v3 = i; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v6 = std::_Rb_tree_decrement(v3); } else { v6 = (int)v3; } if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) return 0; return v6; } //----- (004CC4E4) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( _DWORD *this, _DWORD *a2, int a3) { int result; // eax int v5; // [esp+1Ch] [ebp-1Ch] int v6; // [esp+1Ch] [ebp-1Ch] if ( a2 == this + 1 ) { if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) return 0; return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, a3); } if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) { if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) return (int)a2; if ( (_DWORD *)this[4] == a2 ) return 0; v6 = std::_Rb_tree_increment((int)a2); if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) { if ( !a2[3] ) return 0; return v6; } return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, a3); } result = this[3]; if ( (_DWORD *)result == a2 ) return result; v5 = std::_Rb_tree_decrement(a2); if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, a3); result = (int)a2; if ( !*(_DWORD *)(v5 + 12) ) return 0; return result; } //----- (004CC5E0) -------------------------------------------------------- void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( void **a1) { void **v2; // esi void **v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); v2 = (void **)a1[2]; std::string::_M_dispose(a1 + 10); std::string::_M_dispose(a1 + 4); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004CC62C) -------------------------------------------------------- int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( _DWORD *this, int a2) { char v2; // al _DWORD *v3; // ebx _DWORD *i; // esi _DWORD *v5; // edx int v6; // esi _DWORD *v8; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v8 = this; v2 = std::operator<(a2, (int)(i + 4)); this = v8; if ( v2 ) v5 = (_DWORD *)i[2]; else v5 = (_DWORD *)i[3]; v3 = i; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v6 = std::_Rb_tree_decrement(v3); } else { v6 = (int)v3; } if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) return 0; return v6; } //----- (004CC6AC) -------------------------------------------------------- int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( _DWORD *this, _DWORD *a2, int a3) { int result; // eax int v5; // [esp+1Ch] [ebp-1Ch] int v6; // [esp+1Ch] [ebp-1Ch] if ( a2 == this + 1 ) { if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) return 0; return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( this, a3); } if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) { if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) return (int)a2; if ( (_DWORD *)this[4] == a2 ) return 0; v6 = std::_Rb_tree_increment((int)a2); if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) { if ( !a2[3] ) return 0; return v6; } return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( this, a3); } result = this[3]; if ( (_DWORD *)result == a2 ) return result; v5 = std::_Rb_tree_decrement(a2); if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( this, a3); result = (int)a2; if ( !*(_DWORD *)(v5 + 12) ) return 0; return result; } //----- (004CC7A8) -------------------------------------------------------- void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( void **a1) { volatile signed __int32 ***v2; // edi volatile signed __int32 **v3; // edx volatile signed __int32 **v4; // [esp+1Ch] [ebp-2Ch] volatile signed __int32 **v5; // [esp+20h] [ebp-28h] volatile signed __int32 ***v6; // [esp+24h] [ebp-24h] void **v7; // [esp+2Ch] [ebp-1Ch] while ( a1 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[3]); v2 = (volatile signed __int32 ***)a1[10]; v7 = (void **)a1[2]; v6 = (volatile signed __int32 ***)a1[11]; while ( v6 != v2 ) { v3 = *v2; v5 = v2[1]; while ( v5 != v3 ) { v4 = v3; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3 + 1); v3 = v4 + 2; } if ( *v2 ) operator delete(*v2); v2 += 3; } if ( a1[10] ) operator delete(a1[10]); std::string::_M_dispose(a1 + 4); operator delete(a1); a1 = v7; } } //----- (004CC84C) -------------------------------------------------------- int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( _DWORD *this, int a2) { char v2; // al _DWORD *v3; // ebx _DWORD *i; // esi _DWORD *v5; // edx int v6; // esi _DWORD *v8; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v8 = this; v2 = std::operator<(a2, (int)(i + 4)); this = v8; if ( v2 ) v5 = (_DWORD *)i[2]; else v5 = (_DWORD *)i[3]; v3 = i; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v6 = std::_Rb_tree_decrement(v3); } else { v6 = (int)v3; } if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) return 0; return v6; } //----- (004CC8CC) -------------------------------------------------------- int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( _DWORD *this, _DWORD *a2, int a3) { int result; // eax int v5; // [esp+1Ch] [ebp-1Ch] int v6; // [esp+1Ch] [ebp-1Ch] if ( a2 == this + 1 ) { if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) return 0; return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( this, a3); } if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) { if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) return (int)a2; if ( (_DWORD *)this[4] == a2 ) return 0; v6 = std::_Rb_tree_increment((int)a2); if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) { if ( !a2[3] ) return 0; return v6; } return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( this, a3); } result = this[3]; if ( (_DWORD *)result == a2 ) return result; v5 = std::_Rb_tree_decrement(a2); if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( this, a3); result = (int)a2; if ( !*(_DWORD *)(v5 + 12) ) return 0; return result; } //----- (004CC9C8) -------------------------------------------------------- void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( void *a1) { void *v2; // esi int v3; // edx void *v4; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void **)a1 + 3)); v2 = (void *)*((_DWORD *)a1 + 2); std::vector::~vector((void ***)a1 + 10, v3); std::string::_M_dispose((void **)a1 + 4); v4 = a1; a1 = v2; operator delete(v4); } } // 4CC9EE: variable 'v3' is possibly undefined //----- (004CCA14) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( _DWORD *this, int a2) { char v2; // al _DWORD *v3; // ebx _DWORD *i; // esi _DWORD *v5; // edx int v6; // esi _DWORD *v8; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v8 = this; v2 = std::operator<(a2, (int)(i + 4)); this = v8; if ( v2 ) v5 = (_DWORD *)i[2]; else v5 = (_DWORD *)i[3]; v3 = i; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v6 = std::_Rb_tree_decrement(v3); } else { v6 = (int)v3; } if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) return 0; return v6; } //----- (004CCA94) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( _DWORD *this, _DWORD *a2, int a3) { int result; // eax int v5; // [esp+1Ch] [ebp-1Ch] int v6; // [esp+1Ch] [ebp-1Ch] if ( a2 == this + 1 ) { if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) return 0; return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, a3); } if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) { if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) return (int)a2; if ( (_DWORD *)this[4] == a2 ) return 0; v6 = std::_Rb_tree_increment((int)a2); if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) { if ( !a2[3] ) return 0; return v6; } return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, a3); } result = this[3]; if ( (_DWORD *)result == a2 ) return result; v5 = std::_Rb_tree_decrement(a2); if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, a3); result = (int)a2; if ( !*(_DWORD *)(v5 + 12) ) return 0; return result; } //----- (004CCB90) -------------------------------------------------------- void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( void **a1) { void **v2; // edi void **v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); v2 = (void **)a1[2]; std::string::_M_dispose(a1 + 4); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004CCBD4) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( _DWORD *this, int a2) { char v2; // al _DWORD *v3; // ebx _DWORD *i; // esi _DWORD *v5; // edx int v6; // esi _DWORD *v8; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v8 = this; v2 = std::operator<(a2, (int)(i + 4)); this = v8; if ( v2 ) v5 = (_DWORD *)i[2]; else v5 = (_DWORD *)i[3]; v3 = i; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v6 = std::_Rb_tree_decrement(v3); } else { v6 = (int)v3; } if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) return 0; return v6; } //----- (004CCC54) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( _DWORD *this, _DWORD *a2, int a3) { int result; // eax int v5; // [esp+1Ch] [ebp-1Ch] int v6; // [esp+1Ch] [ebp-1Ch] if ( a2 == this + 1 ) { if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) return 0; return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, a3); } if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) { if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) return (int)a2; if ( (_DWORD *)this[4] == a2 ) return 0; v6 = std::_Rb_tree_increment((int)a2); if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) { if ( !a2[3] ) return 0; return v6; } return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, a3); } result = this[3]; if ( (_DWORD *)result == a2 ) return result; v5 = std::_Rb_tree_decrement(a2); if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, a3); result = (int)a2; if ( !*(_DWORD *)(v5 + 12) ) return 0; return result; } //----- (004CCD50) -------------------------------------------------------- void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( void **a1) { void **v2; // edi void **v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); v2 = (void **)a1[2]; std::string::_M_dispose(a1 + 4); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004CCD94) -------------------------------------------------------- int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( _DWORD *this, _DWORD *a2) { char v2; // dl _DWORD *v3; // ebx _DWORD *i; // eax _DWORD *v5; // edi int result; // eax v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { if ( *a2 >= i[4] ) { v5 = (_DWORD *)i[3]; v2 = 0; } else { v5 = (_DWORD *)i[2]; v2 = 1; } v3 = i; } if ( !v2 ) { result = (int)v3; LABEL_11: if ( *(_DWORD *)(result + 16) >= *a2 ) return result; return 0; } if ( (_DWORD *)this[3] != v3 ) { result = std::_Rb_tree_decrement(v3); goto LABEL_11; } return 0; } //----- (004CCDF4) -------------------------------------------------------- int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( _DWORD *this, _DWORD *a2, int *a3) { int v3; // edi int result; // eax int v5; // eax int v6; // edx _DWORD *v7; // [esp+1Ch] [ebp-1Ch] _DWORD *v8; // [esp+1Ch] [ebp-1Ch] if ( a2 == this + 1 ) { if ( this[5] && *(_DWORD *)(this[4] + 16) < *a3 ) return 0; return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( this, a3); } v3 = *a3; if ( *a3 >= a2[4] ) { if ( *a3 <= a2[4] ) return (int)a2; if ( (_DWORD *)this[4] == a2 ) return 0; v8 = this; result = std::_Rb_tree_increment((int)a2); this = v8; if ( v3 < *(_DWORD *)(result + 16) ) { if ( !a2[3] ) return 0; return result; } return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( this, a3); } result = this[3]; if ( (_DWORD *)result == a2 ) return result; v7 = this; v5 = std::_Rb_tree_decrement(a2); this = v7; v6 = v5; if ( v3 <= *(_DWORD *)(v5 + 16) ) return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( this, a3); result = (int)a2; if ( !*(_DWORD *)(v6 + 12) ) return 0; return result; } //----- (004CCE94) -------------------------------------------------------- void __stdcall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase( void *a1) { void *v2; // edi void *v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(*((void **)a1 + 3)); v2 = (void *)*((_DWORD *)a1 + 2); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void ***)a1 + 7)); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004CCEE0) -------------------------------------------------------- void __fastcall std::bad_cast::~bad_cast(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6CE0; std::exception::~exception(v2); operator delete(a1, 4u); } // 4CCEEC: variable 'v2' is possibly undefined // 4F6CE0: using guessed type void (__cdecl *off_4F6CE0)(std::bad_cast *__hidden this); //----- (004CCF10) -------------------------------------------------------- void __cdecl std::bad_cast::~bad_cast(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_4F6CE0; std::exception::~exception(a1); } // 4CCF10: variable 'v1' is possibly undefined // 4F6CE0: using guessed type void (__cdecl *off_4F6CE0)(std::bad_cast *__hidden this); //----- (004CCF20) -------------------------------------------------------- int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, int this, char a3, bool a4) { int *v5; // esi char *v6; // eax int v7; // ebp _DWORD *v8; // eax int v9; // edx _DWORD *v10; // ebp int *v11; // edi int v12; // ebp int *v13; // eax int *v14; // ecx int v15; // edi int v16; // ebp char *v17; // edx int v18; // eax int v20; // [esp+14h] [ebp-28h] int v21; // [esp+18h] [ebp-24h] int *v22; // [esp+1Ch] [ebp-20h] if ( (unsigned int)this > 0x7FFFFFFE ) { v17 = "ios_base::_M_grow_words is not valid"; } else { v5 = a1 + 9; if ( this <= 7 ) { v20 = 8; LABEL_22: a1[26] = v5; a1[25] = v20; return &v5[2 * this]; } v6 = (char *)(this + 1); v20 = this + 1; if ( this + 1 > 0xFFFFFFF ) std::ios_base::_M_grow_words(); v7 = 8 * (_DWORD)v6; v21 = operator new[](8 * (_DWORD)v6); if ( v21 ) { v8 = (_DWORD *)v21; v9 = v21; v10 = (_DWORD *)(v21 + v7); do { *v8 = 0; v8 += 2; *(v8 - 1) = 0; } while ( v10 != v8 ); v11 = (int *)a1[26]; v12 = a1[25]; v13 = v11; v14 = &v11[2 * v12]; if ( v12 > 0 ) { v22 = (int *)a1[26]; do { v15 = *v13; v16 = v13[1]; v13 += 2; v9 += 8; *(_DWORD *)(v9 - 8) = v15; *(_DWORD *)(v9 - 4) = v16; } while ( v14 != v13 ); v11 = v22; } if ( v5 != v11 ) { if ( v11 ) operator delete[](v11); } v5 = (int *)v21; goto LABEL_22; } v17 = "ios_base::_M_grow_words allocation failed"; } v18 = a1[5] | 1; a1[5] = v18; if ( (v18 & a1[4]) != 0 ) std::__throw_ios_failure((std::__ios_failure *)v17); if ( a3 ) a1[8] = 0; else a1[7] = 0; return a1 + 7; } //----- (004CD070) -------------------------------------------------------- int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this) { int v1; // esi v1 = (unsigned __int8)std::ios_base::Init::_S_synced_with_stdio; if ( (_BYTE)this == 1 || !std::ios_base::Init::_S_synced_with_stdio ) return (unsigned __int8)std::ios_base::Init::_S_synced_with_stdio; std::ios_base::Init::Init(); std::ios_base::Init::_S_synced_with_stdio = 0; __gnu_internal::buf_cout_sync = &off_4F6414; std::locale::~locale((_DWORD **)&dword_4E8FFC); __gnu_internal::buf_cin_sync = &off_4F6414; std::locale::~locale((_DWORD **)&dword_4E8F7C); __gnu_internal::buf_cerr_sync = &off_4F6414; std::locale::~locale((_DWORD **)&dword_4E8FBC); __gnu_internal::buf_wcout_sync = &off_4F6454; std::locale::~locale((_DWORD **)&dword_4E90BC); __gnu_internal::buf_wcin_sync = &off_4F6454; std::locale::~locale((_DWORD **)&dword_4E903C); __gnu_internal::buf_wcerr_sync = &off_4F6454; std::locale::~locale((_DWORD **)&dword_4E907C); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cout, &__iob[1], 16, 512); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cin, (FILE *)__iob[0]._ptr, 8, 512); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cerr, &__iob[2], 16, 512); std::ios::rdbuf(dword_4E9824, (int)__gnu_internal::buf_cout); std::ios::rdbuf(dword_4E9648, (int)__gnu_internal::buf_cin); std::ios::rdbuf(&dword_4E96E4, (int)__gnu_internal::buf_cerr); std::ios::rdbuf(dword_4E9784, (int)__gnu_internal::buf_cerr); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcout, &__iob[1], 16, 512); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcin, (FILE *)__iob[0]._ptr, 8, 512); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcerr, &__iob[2], 16, 512); std::wios::rdbuf(dword_4E9AA4, (int)__gnu_internal::buf_wcout); std::wios::rdbuf(dword_4E98C8, (int)__gnu_internal::buf_wcin); std::wios::rdbuf(&dword_4E9964, (int)__gnu_internal::buf_wcerr); std::wios::rdbuf(dword_4E9A04, (int)__gnu_internal::buf_wcerr); std::ios_base::Init::~Init(); return v1; } // 4E8F7C: using guessed type _DWORD dword_4E8F7C; // 4E8FBC: using guessed type _DWORD dword_4E8FBC; // 4E8FFC: using guessed type _DWORD dword_4E8FFC; // 4E903C: using guessed type _DWORD dword_4E903C; // 4E907C: using guessed type _DWORD dword_4E907C; // 4E90BC: using guessed type _DWORD dword_4E90BC; // 4E95FC: using guessed type char std::ios_base::Init::_S_synced_with_stdio; // 4E9648: using guessed type int dword_4E9648[28]; // 4E96E4: using guessed type int dword_4E96E4; // 4E9784: using guessed type int dword_4E9784[28]; // 4E9824: using guessed type int dword_4E9824[28]; // 4E98C8: using guessed type int dword_4E98C8[28]; // 4E9964: using guessed type int dword_4E9964; // 4E9A04: using guessed type int dword_4E9A04[28]; // 4E9AA4: using guessed type int dword_4E9AA4[28]; // 4F6414: using guessed type int (*off_4F6414)(); // 4F6454: using guessed type int (*off_4F6454)(); //----- (004CD2B0) -------------------------------------------------------- int __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int a2) { int **i; // ebx int result; // eax for ( i = (int **)this[6]; i; i = (int **)*i ) result = ((int (__cdecl *)(int, _DWORD *, int *))i[1])(a2, this, i[2]); return result; } // 4DAD70: using guessed type int __stdcall std::ios_base::_M_call_callbacks(_DWORD); //----- (004CD2F0) -------------------------------------------------------- _DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int a2, int a3) { _DWORD *result; // eax int v5; // edx void (__cdecl *v6)(void *); // [esp+4h] [ebp-18h] result = operator new((struct type_info *)0x10, v6); v5 = this[6]; result[3] = 0; *result = v5; this[6] = result; result[1] = a2; result[2] = a3; return result; } // 4CD2FD: variable 'v6' is possibly undefined //----- (004CD330) -------------------------------------------------------- void __fastcall std::ios_base::_M_dispose_callbacks(int a1) { volatile signed __int32 *v2; // eax int v3; // edx volatile signed __int32 *v4; // esi v2 = *(volatile signed __int32 **)(a1 + 24); if ( v2 ) { while ( 1 ) { if ( _CRT_MT ) { if ( _InterlockedExchangeAdd(v2 + 3, 0xFFFFFFFF) ) break; } else { v3 = *((_DWORD *)v2 + 3); *((_DWORD *)v2 + 3) = v3 - 1; if ( v3 ) break; } v4 = (volatile signed __int32 *)*v2; operator delete((void *)v2); if ( !v4 ) break; v2 = v4; } } *(_DWORD *)(a1 + 24) = 0; } // 15412D0: using guessed type int _CRT_MT; //----- (004CD390) -------------------------------------------------------- int std::ios_base::Init::Init() { int result; // eax if ( _CRT_MT ) { result = _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 1u); if ( result ) return result; } else { result = std::ios_base::Init::_S_refcount++; if ( result ) return result; } std::ios_base::Init::_S_synced_with_stdio = 1; __gnu_internal::buf_cout_sync = &off_4F6414; dword_4E8FE4 = 0; dword_4E8FE8 = 0; dword_4E8FEC = 0; dword_4E8FF0 = 0; dword_4E8FF4 = 0; dword_4E8FF8 = 0; std::locale::locale(&dword_4E8FFC); __gnu_internal::buf_cout_sync = &off_4F52A4; dword_4E9004 = -1; __gnu_internal::buf_cin_sync = &off_4F6414; dword_4E9000 = (int)&__iob[1]; dword_4E8F64 = 0; dword_4E8F68 = 0; dword_4E8F6C = 0; dword_4E8F70 = 0; dword_4E8F74 = 0; dword_4E8F78 = 0; std::locale::locale(&dword_4E8F7C); __gnu_internal::buf_cin_sync = &off_4F52A4; dword_4E8F80 = (int)__iob[0]._ptr; dword_4E8F84 = -1; __gnu_internal::buf_cerr_sync = &off_4F6414; dword_4E8FA4 = 0; dword_4E8FA8 = 0; dword_4E8FAC = 0; dword_4E8FB0 = 0; dword_4E8FB4 = 0; dword_4E8FB8 = 0; std::locale::locale(&dword_4E8FBC); __gnu_internal::buf_cerr_sync = &off_4F52A4; dword_4E8FC0 = (int)&__iob[2]; dword_4E8FC4 = -1; std::ios_base::ios_base(dword_4E9824); dword_4E9894 = 0; word_4E9898 = 0; dword_4E989C = 0; dword_4E98A0 = 0; dword_4E98A4 = 0; dword_4E98A8 = 0; std::cout = (int)&off_4F5E58; dword_4E9824[0] = (int)off_4F5E6C; std::ios::init((int)dword_4E9824, (int)&__gnu_internal::buf_cout_sync); std::ios_base::ios_base(dword_4E9648); word_4E96BC = 0; dword_4E96B8 = 0; dword_4E96C0 = 0; dword_4E96C4 = 0; dword_4E96C8 = 0; dword_4E96CC = 0; std::cin = (int)&off_4F5E30; dword_4E9648[0] = (int)off_4F5E44; dword_4E9644 = 0; std::ios::init((int)dword_4E9648, (int)&__gnu_internal::buf_cin_sync); std::ios_base::ios_base(&dword_4E96E4); dword_4E9754 = 0; word_4E9758 = 0; dword_4E975C = 0; dword_4E9760 = 0; dword_4E9764 = 0; dword_4E9768 = 0; std::cerr = (int)&off_4F5E58; dword_4E96E4 = (int)off_4F5E6C; std::ios::init((int)&dword_4E96E4, (int)&__gnu_internal::buf_cerr_sync); std::ios_base::ios_base(dword_4E9784); dword_4E97F4 = 0; word_4E97F8 = 0; dword_4E97FC = 0; dword_4E9800 = 0; dword_4E9804 = 0; dword_4E9808 = 0; std::clog = (int)&off_4F5E58; dword_4E9784[0] = (int)off_4F5E6C; std::ios::init((int)dword_4E9784, (int)&__gnu_internal::buf_cerr_sync); dword_4E96F0 |= 0x2000u; dword_4E96B8 = (int)&std::cout; dword_4E9754 = (int)&std::cout; __gnu_internal::buf_wcout_sync = &off_4F6454; dword_4E90A4 = 0; dword_4E90A8 = 0; dword_4E90AC = 0; dword_4E90B0 = 0; dword_4E90B4 = 0; dword_4E90B8 = 0; std::locale::locale(&dword_4E90BC); __gnu_internal::buf_wcout_sync = &off_4F52E4; dword_4E90C0 = (int)&__iob[1]; word_4E90C4 = -1; __gnu_internal::buf_wcin_sync = &off_4F6454; dword_4E9024 = 0; dword_4E9028 = 0; dword_4E902C = 0; dword_4E9030 = 0; dword_4E9034 = 0; dword_4E9038 = 0; std::locale::locale(&dword_4E903C); dword_4E9040 = (int)__iob[0]._ptr; word_4E9044 = -1; __gnu_internal::buf_wcin_sync = &off_4F52E4; __gnu_internal::buf_wcerr_sync = &off_4F6454; dword_4E9064 = 0; dword_4E9068 = 0; dword_4E906C = 0; dword_4E9070 = 0; dword_4E9074 = 0; dword_4E9078 = 0; std::locale::locale(&dword_4E907C); __gnu_internal::buf_wcerr_sync = &off_4F52E4; word_4E9084 = -1; dword_4E9080 = (int)&__iob[2]; std::ios_base::ios_base(dword_4E9AA4); dword_4E9B14 = 0; word_4E9B18 = 0; byte_4E9B1A = 0; dword_4E9B1C = 0; dword_4E9B20 = 0; dword_4E9B24 = 0; dword_4E9B28 = 0; std::wcout = (int)&off_4F61B4; dword_4E9AA4[0] = (int)off_4F61C8; std::wios::init((int)dword_4E9AA4, (int)&__gnu_internal::buf_wcout_sync); std::ios_base::ios_base(dword_4E98C8); dword_4E9938 = 0; word_4E993C = 0; byte_4E993E = 0; dword_4E9940 = 0; dword_4E9944 = 0; dword_4E9948 = 0; dword_4E994C = 0; std::wcin = (int)&off_4F618C; dword_4E98C8[0] = (int)off_4F61A0; dword_4E98C4 = 0; std::wios::init((int)dword_4E98C8, (int)&__gnu_internal::buf_wcin_sync); std::ios_base::ios_base(&dword_4E9964); word_4E99D8 = 0; dword_4E99D4 = 0; byte_4E99DA = 0; dword_4E99DC = 0; dword_4E99E0 = 0; dword_4E99E4 = 0; dword_4E99E8 = 0; std::wcerr = (int)&off_4F61B4; dword_4E9964 = (int)off_4F61C8; std::wios::init((int)&dword_4E9964, (int)&__gnu_internal::buf_wcerr_sync); std::ios_base::ios_base(dword_4E9A04); dword_4E9A74 = 0; word_4E9A78 = 0; byte_4E9A7A = 0; dword_4E9A7C = 0; dword_4E9A80 = 0; dword_4E9A84 = 0; dword_4E9A88 = 0; std::wclog = (int)&off_4F61B4; dword_4E9A04[0] = (int)off_4F61C8; std::wios::init((int)dword_4E9A04, (int)&__gnu_internal::buf_wcerr_sync); result = _CRT_MT; dword_4E9970 |= 0x2000u; dword_4E9938 = (int)&std::wcout; dword_4E99D4 = (int)&std::wcout; if ( _CRT_MT ) _InterlockedAdd(&std::ios_base::Init::_S_refcount, 1u); else ++std::ios_base::Init::_S_refcount; return result; } // 4CD390: could not find valid save-restore pair for ebp // 4E8F64: using guessed type int dword_4E8F64; // 4E8F68: using guessed type int dword_4E8F68; // 4E8F6C: using guessed type int dword_4E8F6C; // 4E8F70: using guessed type int dword_4E8F70; // 4E8F74: using guessed type int dword_4E8F74; // 4E8F78: using guessed type int dword_4E8F78; // 4E8F7C: using guessed type _DWORD dword_4E8F7C; // 4E8F80: using guessed type int dword_4E8F80; // 4E8F84: using guessed type int dword_4E8F84; // 4E8FA4: using guessed type int dword_4E8FA4; // 4E8FA8: using guessed type int dword_4E8FA8; // 4E8FAC: using guessed type int dword_4E8FAC; // 4E8FB0: using guessed type int dword_4E8FB0; // 4E8FB4: using guessed type int dword_4E8FB4; // 4E8FB8: using guessed type int dword_4E8FB8; // 4E8FBC: using guessed type _DWORD dword_4E8FBC; // 4E8FC0: using guessed type int dword_4E8FC0; // 4E8FC4: using guessed type int dword_4E8FC4; // 4E8FE4: using guessed type int dword_4E8FE4; // 4E8FE8: using guessed type int dword_4E8FE8; // 4E8FEC: using guessed type int dword_4E8FEC; // 4E8FF0: using guessed type int dword_4E8FF0; // 4E8FF4: using guessed type int dword_4E8FF4; // 4E8FF8: using guessed type int dword_4E8FF8; // 4E8FFC: using guessed type _DWORD dword_4E8FFC; // 4E9000: using guessed type int dword_4E9000; // 4E9004: using guessed type int dword_4E9004; // 4E9024: using guessed type int dword_4E9024; // 4E9028: using guessed type int dword_4E9028; // 4E902C: using guessed type int dword_4E902C; // 4E9030: using guessed type int dword_4E9030; // 4E9034: using guessed type int dword_4E9034; // 4E9038: using guessed type int dword_4E9038; // 4E903C: using guessed type _DWORD dword_4E903C; // 4E9040: using guessed type int dword_4E9040; // 4E9044: using guessed type __int16 word_4E9044; // 4E9064: using guessed type int dword_4E9064; // 4E9068: using guessed type int dword_4E9068; // 4E906C: using guessed type int dword_4E906C; // 4E9070: using guessed type int dword_4E9070; // 4E9074: using guessed type int dword_4E9074; // 4E9078: using guessed type int dword_4E9078; // 4E907C: using guessed type _DWORD dword_4E907C; // 4E9080: using guessed type int dword_4E9080; // 4E9084: using guessed type __int16 word_4E9084; // 4E90A4: using guessed type int dword_4E90A4; // 4E90A8: using guessed type int dword_4E90A8; // 4E90AC: using guessed type int dword_4E90AC; // 4E90B0: using guessed type int dword_4E90B0; // 4E90B4: using guessed type int dword_4E90B4; // 4E90B8: using guessed type int dword_4E90B8; // 4E90BC: using guessed type _DWORD dword_4E90BC; // 4E90C0: using guessed type int dword_4E90C0; // 4E90C4: using guessed type __int16 word_4E90C4; // 4E95F8: using guessed type int std::ios_base::Init::_S_refcount; // 4E95FC: using guessed type char std::ios_base::Init::_S_synced_with_stdio; // 4E9640: using guessed type int std::cin; // 4E9644: using guessed type int dword_4E9644; // 4E9648: using guessed type int dword_4E9648[28]; // 4E96B8: using guessed type int dword_4E96B8; // 4E96BC: using guessed type __int16 word_4E96BC; // 4E96C0: using guessed type int dword_4E96C0; // 4E96C4: using guessed type int dword_4E96C4; // 4E96C8: using guessed type int dword_4E96C8; // 4E96CC: using guessed type int dword_4E96CC; // 4E96E0: using guessed type int std::cerr; // 4E96E4: using guessed type int dword_4E96E4; // 4E96F0: using guessed type int dword_4E96F0; // 4E9754: using guessed type int dword_4E9754; // 4E9758: using guessed type __int16 word_4E9758; // 4E975C: using guessed type int dword_4E975C; // 4E9760: using guessed type int dword_4E9760; // 4E9764: using guessed type int dword_4E9764; // 4E9768: using guessed type int dword_4E9768; // 4E9780: using guessed type int std::clog; // 4E9784: using guessed type int dword_4E9784[28]; // 4E97F4: using guessed type int dword_4E97F4; // 4E97F8: using guessed type __int16 word_4E97F8; // 4E97FC: using guessed type int dword_4E97FC; // 4E9800: using guessed type int dword_4E9800; // 4E9804: using guessed type int dword_4E9804; // 4E9808: using guessed type int dword_4E9808; // 4E9820: using guessed type int std::cout; // 4E9824: using guessed type int dword_4E9824[28]; // 4E9894: using guessed type int dword_4E9894; // 4E9898: using guessed type __int16 word_4E9898; // 4E989C: using guessed type int dword_4E989C; // 4E98A0: using guessed type int dword_4E98A0; // 4E98A4: using guessed type int dword_4E98A4; // 4E98A8: using guessed type int dword_4E98A8; // 4E98C0: using guessed type int std::wcin; // 4E98C4: using guessed type int dword_4E98C4; // 4E98C8: using guessed type int dword_4E98C8[28]; // 4E9938: using guessed type int dword_4E9938; // 4E993C: using guessed type __int16 word_4E993C; // 4E993E: using guessed type char byte_4E993E; // 4E9940: using guessed type int dword_4E9940; // 4E9944: using guessed type int dword_4E9944; // 4E9948: using guessed type int dword_4E9948; // 4E994C: using guessed type int dword_4E994C; // 4E9960: using guessed type int std::wcerr; // 4E9964: using guessed type int dword_4E9964; // 4E9970: using guessed type int dword_4E9970; // 4E99D4: using guessed type int dword_4E99D4; // 4E99D8: using guessed type __int16 word_4E99D8; // 4E99DA: using guessed type char byte_4E99DA; // 4E99DC: using guessed type int dword_4E99DC; // 4E99E0: using guessed type int dword_4E99E0; // 4E99E4: using guessed type int dword_4E99E4; // 4E99E8: using guessed type int dword_4E99E8; // 4E9A00: using guessed type int std::wclog; // 4E9A04: using guessed type int dword_4E9A04[28]; // 4E9A74: using guessed type int dword_4E9A74; // 4E9A78: using guessed type __int16 word_4E9A78; // 4E9A7A: using guessed type char byte_4E9A7A; // 4E9A7C: using guessed type int dword_4E9A7C; // 4E9A80: using guessed type int dword_4E9A80; // 4E9A84: using guessed type int dword_4E9A84; // 4E9A88: using guessed type int dword_4E9A88; // 4E9AA0: using guessed type int std::wcout; // 4E9AA4: using guessed type int dword_4E9AA4[28]; // 4E9B14: using guessed type int dword_4E9B14; // 4E9B18: using guessed type __int16 word_4E9B18; // 4E9B1A: using guessed type char byte_4E9B1A; // 4E9B1C: using guessed type int dword_4E9B1C; // 4E9B20: using guessed type int dword_4E9B20; // 4E9B24: using guessed type int dword_4E9B24; // 4E9B28: using guessed type int dword_4E9B28; // 4F52A4: using guessed type int (*off_4F52A4)(); // 4F52E4: using guessed type int (*off_4F52E4)(); // 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); // 4F5E44: using guessed type void (__cdecl *off_4F5E44[2])(std::istream *__hidden this); // 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); // 4F5E6C: using guessed type void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this); // 4F618C: using guessed type int (*off_4F618C)(); // 4F61A0: using guessed type int (*off_4F61A0[2])(); // 4F61B4: using guessed type int (*off_4F61B4)(); // 4F61C8: using guessed type int (*off_4F61C8[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6454: using guessed type int (*off_4F6454)(); // 15412D0: using guessed type int _CRT_MT; //----- (004CDA90) -------------------------------------------------------- void __cdecl std::ios_base::Init::~Init() { int v0; // eax if ( !_CRT_MT ) { v0 = std::ios_base::Init::_S_refcount--; if ( v0 != 2 ) return; LABEL_5: std::ostream::flush(&std::cout); std::ostream::flush(&std::cerr); std::ostream::flush(&std::clog); std::wostream::flush(&std::wcout); std::wostream::flush(&std::wcerr); std::wostream::flush(&std::wclog); return; } if ( _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 0xFFFFFFFF) == 2 ) goto LABEL_5; } // 4E95F8: using guessed type int std::ios_base::Init::_S_refcount; // 4E96E0: using guessed type int std::cerr; // 4E9780: using guessed type int std::clog; // 4E9820: using guessed type int std::cout; // 4E9960: using guessed type int std::wcerr; // 4E9A00: using guessed type int std::wclog; // 4E9AA0: using guessed type int std::wcout; // 15412D0: using guessed type int _CRT_MT; //----- (004CDB10) -------------------------------------------------------- volatile signed __int32 **__thiscall std::ios_base::imbue( volatile signed __int32 **ecx0, volatile signed __int32 **this, volatile signed __int32 **a3) { const std::locale *v5; // [esp+4h] [ebp-18h] std::locale::locale(ecx0, this + 27, v5); std::locale::operator=(this + 27, a3); std::ios_base::_M_call_callbacks(this, 1); return ecx0; } // 4CDB22: variable 'v5' is possibly undefined //----- (004CDB60) -------------------------------------------------------- int std::ios_base::xalloc() { int result; // eax if ( _CRT_MT ) return _InterlockedExchangeAdd(&std::ios_base::xalloc(void)::_S_top, 1u) + 4; result = std::ios_base::xalloc(void)::_S_top + 4; ++std::ios_base::xalloc(void)::_S_top; return result; } // 4E9B94: using guessed type int std::ios_base::xalloc(void)::_S_top; // 15412D0: using guessed type int _CRT_MT; //----- (004CDBA0) -------------------------------------------------------- void __fastcall std::ios_base::_M_init(int a1) { _DWORD *v2[4]; // [esp+1Ch] [ebp-10h] BYREF *(_DWORD *)(a1 + 4) = 6; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 4098; std::locale::locale(v2); std::locale::operator=((volatile signed __int32 **)(a1 + 108), (volatile signed __int32 **)v2); std::locale::~locale(v2); } //----- (004CDBF0) -------------------------------------------------------- volatile signed __int32 **__userpurge std::ios_base::_M_move@( int a1@, std::ios_base *this, std::ios_base *a3) { int v3; // edi int v5; // eax int v6; // eax std::ios_base *v7; // eax int v8; // eax int v10; // edx _DWORD *v11; // eax int *v12; // ecx int v13; // ebp int v14; // edi v3 = a1 + 36; *(_DWORD *)(a1 + 4) = *((_DWORD *)this + 1); *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); v5 = *((_DWORD *)this + 6); *((_DWORD *)this + 6) = 0; *(_DWORD *)(a1 + 24) = v5; v6 = *(_DWORD *)(a1 + 104); if ( v6 != a1 + 36 && v6 ) operator delete[](*(void **)(a1 + 104)); v7 = (std::ios_base *)*((_DWORD *)this + 26); if ( v7 == (std::ios_base *)((char *)this + 36) ) { *(_DWORD *)(a1 + 104) = v3; v10 = 0; *(_DWORD *)(a1 + 100) = 8; while ( 1 ) { v11 = (_DWORD *)(v3 + v10); v12 = (int *)(v10 + *((_DWORD *)this + 26)); v10 += 8; v13 = *v12; v14 = v12[1]; *v12 = 0; v12[1] = 0; *v11 = v13; v11[1] = v14; if ( v10 == 64 ) break; v3 = *(_DWORD *)(a1 + 104); } } else { *((_DWORD *)this + 26) = (char *)this + 36; *(_DWORD *)(a1 + 104) = v7; v8 = *((_DWORD *)this + 25); *((_DWORD *)this + 25) = 8; *(_DWORD *)(a1 + 100) = v8; } return std::locale::operator=((volatile signed __int32 **)(a1 + 108), (volatile signed __int32 **)this + 27); } //----- (004CDCC0) -------------------------------------------------------- void __userpurge std::ios_base::_M_swap(int a1@, std::ios_base *this, std::ios_base *a3) { char *v3; // esi int v4; // eax char *v5; // edi int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // edx int v11; // eax int v12; // edx int v13; // eax int v14; // edx int v15; // eax char *v16; // edx char *v17; // eax int i; // esi int v19; // ebp int v20; // edi int v21; // edx volatile signed __int32 **v22; // esi int v23; // eax std::ios_base *v24; // edi std::ios_base *v25; // ebp int v26; // eax int v27; // ecx const std::locale *v28; // [esp+4h] [ebp-48h] int v29; // [esp+1Ch] [ebp-30h] _DWORD *v30[8]; // [esp+2Ch] [ebp-20h] BYREF v3 = (char *)(a1 + 36); v4 = *(_DWORD *)(a1 + 4); v5 = (char *)this + 36; *(_DWORD *)(a1 + 4) = *((_DWORD *)this + 1); v6 = *((_DWORD *)this + 2); *((_DWORD *)this + 1) = v4; v7 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v6; v8 = *((_DWORD *)this + 3); *((_DWORD *)this + 2) = v7; v9 = *(_DWORD *)(a1 + 12); *(_DWORD *)(a1 + 12) = v8; v10 = *((_DWORD *)this + 4); *((_DWORD *)this + 3) = v9; v11 = *(_DWORD *)(a1 + 16); *(_DWORD *)(a1 + 16) = v10; v12 = *((_DWORD *)this + 5); *((_DWORD *)this + 4) = v11; v13 = *(_DWORD *)(a1 + 20); *(_DWORD *)(a1 + 20) = v12; v14 = *((_DWORD *)this + 6); *((_DWORD *)this + 5) = v13; v15 = *(_DWORD *)(a1 + 24); *(_DWORD *)(a1 + 24) = v14; v16 = *(char **)(a1 + 104); *((_DWORD *)this + 6) = v15; v17 = (char *)*((_DWORD *)this + 26); if ( v16 != (char *)(a1 + 36) ) { LABEL_7: if ( v17 != v5 ) { *(_DWORD *)(a1 + 104) = v17; *((_DWORD *)this + 26) = v16; LABEL_9: v23 = *(_DWORD *)(a1 + 100); *(_DWORD *)(a1 + 100) = *((_DWORD *)this + 25); *((_DWORD *)this + 25) = v23; goto LABEL_5; } if ( v16 != v3 ) { v24 = (std::ios_base *)a1; v25 = this; LABEL_11: v26 = 0; v29 = a1; do { v27 = *((_DWORD *)v25 + 2 * v26 + 10); *((_DWORD *)v24 + 2 * v26 + 9) = *((_DWORD *)v25 + 2 * v26 + 9); *((_DWORD *)v24 + 2 * v26++ + 10) = v27; } while ( v26 != 8 ); a1 = v29; *((_DWORD *)v25 + 26) = v16; *((_DWORD *)v24 + 26) = v3; goto LABEL_9; } LABEL_10: v3 = (char *)this + 36; v16 = (char *)*((_DWORD *)this + 26); v24 = this; v25 = (std::ios_base *)a1; goto LABEL_11; } if ( v17 != v5 ) { if ( v16 == v3 ) goto LABEL_10; goto LABEL_7; } for ( i = 0; i != 8; ++i ) { v19 = *(_DWORD *)(a1 + 8 * i + 36); v20 = *(_DWORD *)(a1 + 8 * i + 40); v21 = *((_DWORD *)this + 2 * i + 10); *(_DWORD *)(a1 + 8 * i + 36) = *((_DWORD *)this + 2 * i + 9); *(_DWORD *)(a1 + 8 * i + 40) = v21; *((_DWORD *)this + 2 * i + 9) = v19; *((_DWORD *)this + 2 * i + 10) = v20; } LABEL_5: v22 = (volatile signed __int32 **)(a1 + 108); std::locale::locale((volatile signed __int32 **)v30, (volatile signed __int32 **)(a1 + 108), v28); std::locale::operator=(v22, (volatile signed __int32 **)this + 27); std::locale::operator=((volatile signed __int32 **)this + 27, (volatile signed __int32 **)v30); std::locale::~locale(v30); } // 4CDD67: variable 'v28' is possibly undefined //----- (004CDE10) -------------------------------------------------------- int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *Str, int *a3) { int v4; // esi int v5; // edx int (__thiscall *v6)(int, int, int); // eax unsigned int *v7; // eax void *v8; // ecx size_t v9; // eax unsigned int *v10; // eax void *v11; // ecx int result; // eax int v13; // [esp+1Ch] [ebp-6Ch] void *v14[2]; // [esp+28h] [ebp-60h] BYREF char v15[16]; // [esp+30h] [ebp-58h] BYREF void *v16[2]; // [esp+40h] [ebp-48h] BYREF int v17[4]; // [esp+48h] [ebp-40h] BYREF void *v18[2]; // [esp+58h] [ebp-30h] BYREF int v19[10]; // [esp+60h] [ebp-28h] BYREF v4 = a3[1]; v5 = *a3; v13 = *a3; v6 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 16); if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) { v14[1] = 0; v14[0] = v15; v15[0] = 0; if ( v5 == 1 ) std::string::_M_replace((unsigned int *)v14, 0, 0, "iostream error", 0xEu); else std::string::_M_replace((unsigned int *)v14, 0, 0, "Unknown error", 0xDu); } else { v6((int)v14, v4, v13); } v7 = std::string::_M_replace((unsigned int *)v14, 0, 0, ": ", 2u); v16[0] = v17; if ( (unsigned int *)*v7 == v7 + 2 ) { v17[0] = v7[2]; v17[1] = v7[3]; v17[2] = v7[4]; v17[3] = v7[5]; } else { v16[0] = (void *)*v7; v17[0] = v7[2]; } v8 = (void *)v7[1]; *((_BYTE *)v7 + 8) = 0; v16[1] = v8; *v7 = (unsigned int)(v7 + 2); v7[1] = 0; v9 = strlen(Str); v10 = std::string::_M_replace((unsigned int *)v16, 0, 0, Str, v9); v18[0] = v19; if ( (unsigned int *)*v10 == v10 + 2 ) { v19[0] = v10[2]; v19[1] = v10[3]; v19[2] = v10[4]; v19[3] = v10[5]; } else { v18[0] = (void *)*v10; v19[0] = v10[2]; } v11 = (void *)v10[1]; *((_BYTE *)v10 + 8) = 0; v18[1] = v11; *v10 = (unsigned int)(v10 + 2); v10[1] = 0; std::runtime_error::runtime_error(this, (int)v18); if ( v18[0] != v19 ) operator delete(v18[0]); if ( v16[0] != v17 ) operator delete(v16[0]); if ( v14[0] != v15 ) operator delete(v14[0]); result = v13; this[3] = v4; *this = &off_4F5DC8; this[2] = v13; return result; } // 4F5DC8: using guessed type int (*off_4F5DC8)(); //----- (004CE040) -------------------------------------------------------- void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2) { void (__cdecl ***v3)(_anonymous_namespace_::io_error_category *__hidden); // esi int (__thiscall *v4)(int, int, int); // eax unsigned int v5; // edi unsigned int v6; // ecx unsigned int v7; // ecx unsigned int *v8; // eax unsigned int *v9; // edx void *v10; // ecx void *v11; // ecx int v12; // [esp+8h] [ebp-80h] void *v13; // [esp+28h] [ebp-60h] BYREF size_t v14; // [esp+2Ch] [ebp-5Ch] int v15[4]; // [esp+30h] [ebp-58h] BYREF void *v16; // [esp+40h] [ebp-48h] BYREF size_t v17; // [esp+44h] [ebp-44h] int v18[4]; // [esp+48h] [ebp-40h] BYREF void *v19[2]; // [esp+58h] [ebp-30h] BYREF int v20[10]; // [esp+60h] [ebp-28h] BYREF v3 = `anonymous namespace'::__io_category_instance(); v4 = (int (__thiscall *)(int, int, int))(*v3)[4]; if ( v4 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) { v16 = v18; v17 = 0; LOBYTE(v18[0]) = 0; std::string::_M_replace((unsigned int *)&v16, 0, 0, "iostream error", 0xEu); } else { v4((int)&v16, (int)v3, 1); } v13 = v15; LOBYTE(v12) = 0; std::string::_M_construct(&v13, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v12); if ( v14 == 0x3FFFFFFF || v14 == 1073741822 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v13, ": ", 2u); v5 = v17 + v14; if ( v13 == v15 ) v6 = 15; else v6 = v15[0]; if ( v5 > v6 && (v16 == v18 ? (v7 = 15) : (v7 = v18[0]), v5 <= v7) ) { v8 = std::string::_M_replace((unsigned int *)&v16, 0, 0, (char *)v13, v14); v9 = v8 + 2; v19[0] = v20; v10 = (void *)*v8; if ( (unsigned int *)*v8 != v8 + 2 ) goto LABEL_11; } else { v8 = std::string::_M_append(&v13, v16, v17); v9 = v8 + 2; v19[0] = v20; v10 = (void *)*v8; if ( (unsigned int *)*v8 != v8 + 2 ) { LABEL_11: v19[0] = v10; v20[0] = v8[2]; goto LABEL_12; } } v20[0] = v8[2]; v20[1] = v8[3]; v20[2] = v8[4]; v20[3] = v8[5]; LABEL_12: v11 = (void *)v8[1]; *((_BYTE *)v8 + 8) = 0; v19[1] = v11; *v8 = (unsigned int)v9; v8[1] = 0; std::runtime_error::runtime_error(this, (int)v19); if ( v19[0] != v20 ) operator delete(v19[0]); if ( v13 != v15 ) operator delete(v13); if ( v16 != v18 ) operator delete(v16); this[2] = 1; this[3] = v3; *this = &off_4F5DC8; } // 4CE0C2: variable 'v12' is possibly undefined // 4F5DC8: using guessed type int (*off_4F5DC8)(); //----- (004CE2B0) -------------------------------------------------------- int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3) { int v4; // edi int v5; // edx int (__thiscall *v6)(int, int, int); // eax unsigned int v7; // edx unsigned int v8; // esi unsigned int v9; // esi unsigned int *v10; // eax unsigned int *v11; // edx void *v12; // ecx void *v13; // ecx int result; // eax int v15; // [esp+8h] [ebp-90h] int v16; // [esp+28h] [ebp-70h] void *v17; // [esp+38h] [ebp-60h] BYREF size_t v18; // [esp+3Ch] [ebp-5Ch] int v19[4]; // [esp+40h] [ebp-58h] BYREF void *v20; // [esp+50h] [ebp-48h] BYREF size_t v21; // [esp+54h] [ebp-44h] int v22[4]; // [esp+58h] [ebp-40h] BYREF void *v23[2]; // [esp+68h] [ebp-30h] BYREF int v24[10]; // [esp+70h] [ebp-28h] BYREF v4 = a3[1]; v5 = *a3; v16 = *a3; v6 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 16); if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) { v21 = 0; v20 = v22; LOBYTE(v22[0]) = 0; if ( v5 == 1 ) std::string::_M_replace((unsigned int *)&v20, 0, 0, "iostream error", 0xEu); else std::string::_M_replace((unsigned int *)&v20, 0, 0, "Unknown error", 0xDu); } else { v6((int)&v20, v4, v16); } v17 = v19; LOBYTE(v15) = 0; std::string::_M_construct(&v17, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v15); if ( v18 == 0x3FFFFFFF || v18 == 1073741822 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v17, ": ", 2u); v7 = v21 + v18; if ( v17 == v19 ) v8 = 15; else v8 = v19[0]; if ( v7 > v8 && (v20 == v22 ? (v9 = 15) : (v9 = v22[0]), v7 <= v9) ) { v10 = std::string::_M_replace((unsigned int *)&v20, 0, 0, (char *)v17, v18); v11 = v10 + 2; v23[0] = v24; v12 = (void *)*v10; if ( (unsigned int *)*v10 != v10 + 2 ) goto LABEL_12; } else { v10 = std::string::_M_append(&v17, v20, v21); v11 = v10 + 2; v23[0] = v24; v12 = (void *)*v10; if ( (unsigned int *)*v10 != v10 + 2 ) { LABEL_12: v23[0] = v12; v24[0] = v10[2]; goto LABEL_13; } } v24[0] = v10[2]; v24[1] = v10[3]; v24[2] = v10[4]; v24[3] = v10[5]; LABEL_13: v13 = (void *)v10[1]; *((_BYTE *)v10 + 8) = 0; v23[1] = v13; *v10 = (unsigned int)v11; v10[1] = 0; std::runtime_error::runtime_error(this, (int)v23); if ( v23[0] != v24 ) operator delete(v23[0]); if ( v17 != v19 ) operator delete(v17); if ( v20 != v22 ) operator delete(v20); result = v16; this[3] = v4; *this = &off_4F5DC8; this[2] = v16; return result; } // 4CE348: variable 'v15' is possibly undefined // 4F5DC8: using guessed type int (*off_4F5DC8)(); //----- (004CE560) -------------------------------------------------------- void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1) { *a1 = &off_4F5DC8; std::system_error::~system_error(a1); operator delete(a1); } // 4F5DC8: using guessed type int (*off_4F5DC8)(); //----- (004CE580) -------------------------------------------------------- void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1) { *a1 = &off_4F5DC8; std::system_error::~system_error(a1); } // 4F5DC8: using guessed type int (*off_4F5DC8)(); //----- (004CE590) -------------------------------------------------------- unsigned int *__userpurge std::ios_base::failure::failure@( int a1@, unsigned int **this, const std::string *a3) { unsigned int **v3; // ecx const std::string *v5; // [esp+4h] [ebp-24h] v3 = (unsigned int **)(a1 + 4); *(v3 - 1) = (unsigned int *)&off_4F5DDC; return std::string::string(v3, this, v5); } // 4CE5AB: variable 'v5' is possibly undefined // 4F5DDC: using guessed type void (__cdecl *off_4F5DDC)(std::ios_base::failure *__hidden this); //----- (004CE5D0) -------------------------------------------------------- void __fastcall std::ios_base::failure::~failure(_DWORD *a1) { std::ios_base::failure::~failure(a1); operator delete(a1); } //----- (004CE5F0) -------------------------------------------------------- void __fastcall std::ios_base::failure::~failure(_DWORD *a1) { volatile signed __int32 *v1; // eax int v2; // edx std::exception *v3; // [esp+0h] [ebp-2Ch] int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF v1 = (volatile signed __int32 *)a1[1]; *a1 = &off_4F5DDC; if ( v1 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); } else { v2 = *((_DWORD *)v1 - 1); *((_DWORD *)v1 - 1) = v2 - 1; } if ( v2 <= 0 ) std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v4); } std::exception::~exception(v3); } // 4CE609: variable 'v3' is possibly undefined // 4F5DDC: using guessed type void (__cdecl *off_4F5DDC)(std::ios_base::failure *__hidden this); // 15412D0: using guessed type int _CRT_MT; // 4CE5F0: using guessed type int var_D[3]; //----- (004CE660) -------------------------------------------------------- int __fastcall std::ios_base::ios_base(_DWORD *a1) { _DWORD *v1; // ebx _DWORD *v2; // eax _DWORD *v3; // ecx v1 = a1 + 9; *a1 = &off_4F6CF4; v2 = a1 + 9; a1[1] = 0; a1[2] = 0; a1[3] = 0; a1[4] = 0; a1[5] = 0; a1[6] = 0; a1[7] = 0; a1[8] = 0; do { *v2 = 0; v2 += 2; *(v2 - 1) = 0; } while ( a1 + 25 != v2 ); a1[25] = 8; v3 = a1 + 27; *(v3 - 1) = v1; return std::locale::locale(v3); } // 4F6CF4: using guessed type void (__cdecl *off_4F6CF4)(std::ios_base *__hidden this); //----- (004CE6E0) -------------------------------------------------------- void __fastcall std::ios_base::~ios_base(void *a1) { std::ios_base::~ios_base((int)a1); operator delete(a1); } //----- (004CE700) -------------------------------------------------------- void __fastcall std::ios_base::~ios_base(int a1) { void *v2; // eax *(_DWORD *)a1 = &off_4F6CF4; std::ios_base::_M_call_callbacks((_DWORD *)a1, 0); std::ios_base::_M_dispose_callbacks(a1); v2 = *(void **)(a1 + 104); if ( v2 != (void *)(a1 + 36) ) { if ( v2 ) operator delete[](v2); *(_DWORD *)(a1 + 104) = 0; } std::locale::~locale((_DWORD **)(a1 + 108)); } // 4F6CF4: using guessed type void (__cdecl *off_4F6CF4)(std::ios_base *__hidden this); //----- (004CE750) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_4F6D04; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6D04: using guessed type int (*off_4F6D04)(); //----- (004CE790) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_4F6D04; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6D04: using guessed type int (*off_4F6D04)(); //----- (004CE7D0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_4F6D04; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6D04: using guessed type int (*off_4F6D04)(); //----- (004CE810) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_4F6D04; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6D04: using guessed type int (*off_4F6D04)(); //----- (004CE850) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6D04; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4CE869: variable 'v2' is possibly undefined // 4F6D04: using guessed type int (*off_4F6D04)(); //----- (004CE880) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D04; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CE889: variable 'v1' is possibly undefined // 4F6D04: using guessed type int (*off_4F6D04)(); //----- (004CE8B0) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D04; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CE8B9: variable 'v1' is possibly undefined // 4F6D04: using guessed type int (*off_4F6D04)(); //----- (004CE8E0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_4F6D20; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6D20: using guessed type int (*off_4F6D20)(); //----- (004CE920) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_4F6D20; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6D20: using guessed type int (*off_4F6D20)(); //----- (004CE960) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_4F6D20; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6D20: using guessed type int (*off_4F6D20)(); //----- (004CE9A0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_4F6D20; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 4F6D20: using guessed type int (*off_4F6D20)(); //----- (004CE9E0) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6D20; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4CE9F9: variable 'v2' is possibly undefined // 4F6D20: using guessed type int (*off_4F6D20)(); //----- (004CEA10) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D20; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CEA19: variable 'v1' is possibly undefined // 4F6D20: using guessed type int (*off_4F6D20)(); //----- (004CEA40) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D20; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CEA49: variable 'v1' is possibly undefined // 4F6D20: using guessed type int (*off_4F6D20)(); //----- (004CEA70) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) { _DWORD *v3; // eax char *v4; // ecx int i; // eax char *v6; // esi int j; // eax _DWORD *result; // eax void (__cdecl *v9)(void *); // [esp+4h] [ebp-18h] v3 = (_DWORD *)this[2]; if ( !v3 ) { v3 = operator new((struct type_info *)0x68, v9); v3[1] = 0; *v3 = &off_4F65A0; v3[2] = 0; v3[3] = 0; *((_BYTE *)v3 + 16) = 0; v3[5] = 0; v3[6] = 0; v3[7] = 0; v3[8] = 0; *((_WORD *)v3 + 18) = 0; *((_BYTE *)v3 + 100) = 0; this[2] = v3; } v3[2] = &unk_4EC654; v4 = std::__num_base::_S_atoms_out[0]; v3[3] = 0; *((_BYTE *)v3 + 16) = 0; *((_BYTE *)v3 + 36) = 46; *(_BYTE *)(this[2] + 37) = 44; for ( i = 0; i != 36; ++i ) *(_BYTE *)(this[2] + i + 38) = v4[i]; v6 = std::__num_base::_S_atoms_in[0]; for ( j = 0; j != 26; ++j ) *(_BYTE *)(this[2] + j + 74) = v6[j]; result = (_DWORD *)this[2]; result[5] = "true"; result[6] = 4; result[7] = "false"; result[8] = 5; return result; } // 4CEB12: variable 'v9' is possibly undefined // 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; // 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; // 4F65A0: using guessed type int (*off_4F65A0)(); //----- (004CEB70) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F6D3C; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004CEBC0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F6D3C; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004CEC10) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_4F6D3C; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004CEC60) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F6D3C; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004CECB0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F6D3C; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004CED00) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_4F6D3C; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004CED50) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::numpunct::~numpunct(v2); operator delete(a1); } // 4CED57: variable 'v2' is possibly undefined //----- (004CED80) -------------------------------------------------------- void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F6D3C; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4CED87: variable 'v1' is possibly undefined // 4F6D3C: using guessed type int (*off_4F6D3C)(); //----- (004CEDB0) -------------------------------------------------------- int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) { _DWORD *v2; // edx char *v3; // ebx int v4; // eax char *v5; // ebx int result; // eax _DWORD *v7; // eax void (__cdecl *v8)(void *); // [esp+4h] [ebp-28h] v2 = (_DWORD *)this[2]; if ( !v2 ) { v7 = operator new((struct type_info *)0xA8, v8); v7[1] = 0; v2 = v7; *v7 = &off_4F65B0; v7[2] = 0; v7[3] = 0; *((_BYTE *)v7 + 16) = 0; v7[5] = 0; v7[6] = 0; v7[7] = 0; v7[8] = 0; v7[9] = 0; *((_BYTE *)v7 + 164) = 0; this[2] = v7; } v2[2] = &unk_4EC654; v3 = std::__num_base::_S_atoms_out[0]; v4 = 0; v2[3] = 0; *((_BYTE *)v2 + 16) = 0; v2[9] = 2883630; do { *((_WORD *)v2 + v4 + 20) = v3[v4]; ++v4; } while ( v4 != 36 ); v5 = std::__num_base::_S_atoms_in[0]; for ( result = 0; result != 26; ++result ) *((_WORD *)v2 + result + 56) = v5[result]; v2[5] = &off_4EC660; v2[6] = 4; v2[7] = &off_4EC66A; v2[8] = 5; return result; } // 4CEE40: variable 'v8' is possibly undefined // 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; // 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; // 4EC660: using guessed type void *off_4EC660; // 4EC66A: using guessed type void *off_4EC66A; // 4F65B0: using guessed type int (*off_4F65B0)(); //----- (004CEEA0) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F6D60; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004CEEF0) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F6D60; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004CEF40) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_4F6D60; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004CEF90) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F6D60; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004CEFE0) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_4F6D60; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004CF030) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_4F6D60; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004CF080) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::numpunct::~numpunct(v2); operator delete(a1); } // 4CF087: variable 'v2' is possibly undefined //----- (004CF0B0) -------------------------------------------------------- void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_4F6D60; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4CF0B7: variable 'v1' is possibly undefined // 4F6D60: using guessed type int (*off_4F6D60)(); //----- (004CF0E0) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6D84; result = a2 != 0; this[1] = result; return result; } // 4F6D84: using guessed type int (*off_4F6D84)(); //----- (004CF100) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6D84; result = a2 != 0; this[1] = result; return result; } // 4F6D84: using guessed type int (*off_4F6D84)(); //----- (004CF120) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6D84; std::locale::facet::~facet(v2); operator delete(a1); } // 4CF12C: variable 'v2' is possibly undefined // 4F6D84: using guessed type int (*off_4F6D84)(); //----- (004CF140) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D84; std::locale::facet::~facet(a1); } // 4CF140: variable 'v1' is possibly undefined // 4F6D84: using guessed type int (*off_4F6D84)(); //----- (004CF150) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6D84; std::locale::facet::~facet(a1); } // 4CF150: variable 'v1' is possibly undefined // 4F6D84: using guessed type int (*off_4F6D84)(); //----- (004CF160) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6DAC; result = a2 != 0; this[1] = result; return result; } // 4F6DAC: using guessed type int (*off_4F6DAC)(); //----- (004CF180) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6DAC; result = a2 != 0; this[1] = result; return result; } // 4F6DAC: using guessed type int (*off_4F6DAC)(); //----- (004CF1A0) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6DAC; std::locale::facet::~facet(v2); operator delete(a1); } // 4CF1AC: variable 'v2' is possibly undefined // 4F6DAC: using guessed type int (*off_4F6DAC)(); //----- (004CF1C0) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DAC; std::locale::facet::~facet(a1); } // 4CF1C0: variable 'v1' is possibly undefined // 4F6DAC: using guessed type int (*off_4F6DAC)(); //----- (004CF1D0) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DAC; std::locale::facet::~facet(a1); } // 4CF1D0: variable 'v1' is possibly undefined // 4F6DAC: using guessed type int (*off_4F6DAC)(); //----- (004CF1E0) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6DD4; result = a2 != 0; this[1] = result; return result; } // 4F6DD4: using guessed type int (*off_4F6DD4)(); //----- (004CF200) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6DD4; result = a2 != 0; this[1] = result; return result; } // 4F6DD4: using guessed type int (*off_4F6DD4)(); //----- (004CF220) -------------------------------------------------------- void __fastcall std::time_put>::~time_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6DD4; std::locale::facet::~facet(v2); operator delete(a1); } // 4CF22C: variable 'v2' is possibly undefined // 4F6DD4: using guessed type int (*off_4F6DD4)(); //----- (004CF240) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DD4; std::locale::facet::~facet(a1); } // 4CF240: variable 'v1' is possibly undefined // 4F6DD4: using guessed type int (*off_4F6DD4)(); //----- (004CF250) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DD4; std::locale::facet::~facet(a1); } // 4CF250: variable 'v1' is possibly undefined // 4F6DD4: using guessed type int (*off_4F6DD4)(); //----- (004CF260) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6DE8; result = a2 != 0; this[1] = result; return result; } // 4F6DE8: using guessed type int (*off_4F6DE8)(); //----- (004CF280) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6DE8; result = a2 != 0; this[1] = result; return result; } // 4F6DE8: using guessed type int (*off_4F6DE8)(); //----- (004CF2A0) -------------------------------------------------------- void __fastcall std::time_put>::~time_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6DE8; std::locale::facet::~facet(v2); operator delete(a1); } // 4CF2AC: variable 'v2' is possibly undefined // 4F6DE8: using guessed type int (*off_4F6DE8)(); //----- (004CF2C0) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DE8; std::locale::facet::~facet(a1); } // 4CF2C0: variable 'v1' is possibly undefined // 4F6DE8: using guessed type int (*off_4F6DE8)(); //----- (004CF2D0) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DE8; std::locale::facet::~facet(a1); } // 4CF2D0: variable 'v1' is possibly undefined // 4F6DE8: using guessed type int (*off_4F6DE8)(); //----- (004CF2E0) -------------------------------------------------------- void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6DFC; std::exception::~exception(v2); operator delete(a1, 4u); } // 4CF2EC: variable 'v2' is possibly undefined // 4F6DFC: using guessed type void (__cdecl *off_4F6DFC)(std::bad_alloc *__hidden this); //----- (004CF310) -------------------------------------------------------- void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_4F6DFC; std::exception::~exception(a1); } // 4CF310: variable 'v1' is possibly undefined // 4F6DFC: using guessed type void (__cdecl *off_4F6DFC)(std::bad_alloc *__hidden this); //----- (004CF320) -------------------------------------------------------- int __thiscall std::ios::exceptions(_DWORD *this, int a2) { this[4] = a2; return std::ios::clear(this, this[5]); } //----- (004CF340) -------------------------------------------------------- int __thiscall std::ios::_M_setstate(_DWORD *this, int a2) { int result; // eax result = a2; this[5] |= a2; if ( (a2 & this[4]) != 0 ) __cxa_rethrow(); return result; } //----- (004CF360) -------------------------------------------------------- void *__thiscall std::ios::_M_cache_locale(_DWORD *this, int a2) { void *result; // eax if ( (unsigned __int8)std::has_facet>(a2) ) { this[31] = std::use_facet>(a2); if ( (unsigned __int8)std::has_facet>>(a2) ) goto LABEL_3; LABEL_6: this[32] = 0; result = (void *)std::has_facet>>(a2); if ( (_BYTE)result ) goto LABEL_4; goto LABEL_7; } this[31] = 0; if ( !(unsigned __int8)std::has_facet>>(a2) ) goto LABEL_6; LABEL_3: this[32] = std::use_facet>>(a2); result = (void *)std::has_facet>>(a2); if ( (_BYTE)result ) { LABEL_4: result = std::use_facet>>(a2); this[33] = result; return result; } LABEL_7: this[33] = 0; return result; } //----- (004CF400) -------------------------------------------------------- int __thiscall std::ios::tie(_DWORD *this, int a2) { int result; // eax result = this[28]; this[28] = a2; return result; } //----- (004CF410) -------------------------------------------------------- int __thiscall std::ios::fill(int this, char a2) { int result; // eax _BYTE *v4; // edi int (__stdcall *v5)(unsigned __int8); // edx if ( *(_BYTE *)(this + 117) ) { result = *(unsigned __int8 *)(this + 116); *(_BYTE *)(this + 116) = a2; } else { v4 = *(_BYTE **)(this + 124); if ( !v4 ) std::__throw_bad_cast(); if ( v4[28] ) { result = (unsigned __int8)v4[61]; } else { std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); result = 32; if ( v5 != std::ctype::do_widen ) result = ((int (__thiscall *)(_BYTE *, int))v5)(v4, 32); } *(_BYTE *)(this + 117) = 1; *(_BYTE *)(this + 116) = a2; } return result; } //----- (004CF490) -------------------------------------------------------- BOOL __thiscall std::ios::init(int this, int a2) { BOOL result; // eax std::ios_base::_M_init(this); std::ios::_M_cache_locale((_DWORD *)this, this + 108); *(_DWORD *)(this + 120) = a2; *(_WORD *)(this + 116) = 0; result = a2 == 0; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = result; return result; } //----- (004CF4E0) -------------------------------------------------------- int __thiscall std::ios::move(int this, std::ios_base *a2) { int v3; // eax int result; // eax std::ios_base *v5; // [esp+4h] [ebp-18h] std::ios_base::_M_move(this, a2, v5); std::ios::_M_cache_locale((_DWORD *)this, this + 108); v3 = *((_DWORD *)a2 + 28); *((_DWORD *)a2 + 28) = 0; *(_DWORD *)(this + 112) = v3; *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); result = *((unsigned __int8 *)a2 + 117); *(_DWORD *)(this + 120) = 0; *(_BYTE *)(this + 117) = result; return result; } // 4CF4EE: variable 'v5' is possibly undefined //----- (004CF530) -------------------------------------------------------- int __thiscall std::ios::move(int this, std::ios_base *a2) { int v3; // eax int result; // eax std::ios_base *v5; // [esp+4h] [ebp-18h] std::ios_base::_M_move(this, a2, v5); std::ios::_M_cache_locale((_DWORD *)this, this + 108); v3 = *((_DWORD *)a2 + 28); *((_DWORD *)a2 + 28) = 0; *(_DWORD *)(this + 112) = v3; *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); result = *((unsigned __int8 *)a2 + 117); *(_DWORD *)(this + 120) = 0; *(_BYTE *)(this + 117) = result; return result; } // 4CF53E: variable 'v5' is possibly undefined //----- (004CF580) -------------------------------------------------------- int __thiscall std::ios::swap(int this, std::ios_base *a2) { int v3; // eax char v4; // dl char v5; // dl int result; // eax std::ios_base *v7; // [esp+4h] [ebp-18h] std::ios_base::_M_swap(this, a2, v7); std::ios::_M_cache_locale((_DWORD *)this, this + 108); std::ios::_M_cache_locale(a2, (int)a2 + 108); v3 = *(_DWORD *)(this + 112); *(_DWORD *)(this + 112) = *((_DWORD *)a2 + 28); v4 = *((_BYTE *)a2 + 116); *((_DWORD *)a2 + 28) = v3; LOBYTE(v3) = *(_BYTE *)(this + 116); *(_BYTE *)(this + 116) = v4; v5 = *((_BYTE *)a2 + 117); *((_BYTE *)a2 + 116) = v3; result = *(unsigned __int8 *)(this + 117); *(_BYTE *)(this + 117) = v5; *((_BYTE *)a2 + 117) = result; return result; } // 4CF58E: variable 'v7' is possibly undefined //----- (004CF5F0) -------------------------------------------------------- int __thiscall std::ios::clear(_DWORD *this, int a2) { int result; // eax result = a2; if ( !this[30] ) result = a2 | 1; this[5] = result; if ( (result & this[4]) != 0 ) std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); return result; } //----- (004CF630) -------------------------------------------------------- volatile signed __int32 **__thiscall std::ios::imbue( volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3) { volatile signed __int32 **v4; // esi const std::locale *v6; // [esp+4h] [ebp-44h] const std::locale *v7; // [esp+4h] [ebp-44h] _DWORD *v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::locale::locale(this, a2 + 27, v6); std::ios_base::imbue((volatile signed __int32 **)v8, a2, a3); std::locale::~locale(v8); std::ios::_M_cache_locale(a2, (int)a3); v4 = (volatile signed __int32 **)a2[30]; if ( v4 ) { std::locale::locale((volatile signed __int32 **)v8, v4 + 7, v7); (*((void (__thiscall **)(volatile signed __int32 **, volatile signed __int32 **))*v4 + 2))(v4, a3); std::locale::operator=(v4 + 7, a3); std::locale::~locale(v8); } return this; } // 4CF647: variable 'v6' is possibly undefined // 4CF68B: variable 'v7' is possibly undefined //----- (004CF6E0) -------------------------------------------------------- int __thiscall std::ios::rdbuf(_DWORD *this, int a2) { int v2; // edx BOOL v3; // eax v2 = this[30]; this[30] = a2; v3 = a2 == 0; this[5] = v3; if ( (v3 & this[4]) != 0 ) std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); return v2; } //----- (004CF720) -------------------------------------------------------- int __thiscall std::ios::copyfmt(int this, _DWORD *a2) { _DWORD *v3; // esi int v4; // eax _DWORD *v5; // eax int v6; // ebp int v7; // edi int v8; // edx _DWORD *v9; // eax int v10; // ebp int v11; // ecx int v12; // edx int v13; // esi int v14; // eax bool v15; // zf char v16; // dl _DWORD *v18; // edx int v19; // ecx _BYTE *v20; // edi _BYTE *v21; // edi int (__stdcall *v22)(unsigned __int8); // eax int (__stdcall *v23)(unsigned __int8); // eax const std::locale *v24; // [esp+4h] [ebp-48h] _DWORD *v25; // [esp+1Ch] [ebp-30h] _DWORD *v26; // [esp+1Ch] [ebp-30h] unsigned __int8 v27; // [esp+1Ch] [ebp-30h] _DWORD *v28[8]; // [esp+2Ch] [ebp-20h] BYREF v3 = a2; if ( (_DWORD *)this != a2 ) { v4 = a2[25]; if ( v4 > 8 ) { if ( v4 > 0xFFFFFFF ) __cxa_throw_bad_array_new_length(); v6 = this + 36; v5 = (_DWORD *)operator new[](8 * v4); v18 = v5; v19 = a2[25] - 1; if ( v19 >= 0 ) { do { --v19; *v18 = 0; v18 += 2; *(v18 - 1) = 0; } while ( v19 != -1 ); } } else { v5 = (_DWORD *)(this + 36); v6 = this + 36; } v7 = a2[6]; if ( v7 ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); else ++*(_DWORD *)(v7 + 12); } v25 = v5; std::ios_base::_M_call_callbacks((_DWORD *)this, 0); v8 = *(_DWORD *)(this + 104); v9 = v25; if ( v8 != v6 ) { if ( v8 ) { operator delete[](*(void **)(this + 104)); v9 = v25; } *(_DWORD *)(this + 104) = 0; } v26 = v9; std::ios_base::_M_dispose_callbacks(this); v10 = a2[25]; *(_DWORD *)(this + 24) = v7; if ( v10 > 0 ) { v11 = a2[26]; v12 = 0; do { v13 = *(_DWORD *)(v11 + v12 * 4 + 4); v26[v12] = *(_DWORD *)(v11 + v12 * 4); v26[v12 + 1] = v13; v12 += 2; } while ( v12 != 2 * v10 ); v3 = a2; } *(_DWORD *)(this + 104) = v26; v14 = v3[3]; *(_DWORD *)(this + 100) = v10; v15 = *((_BYTE *)v3 + 117) == 0; *(_DWORD *)(this + 12) = v14; *(_DWORD *)(this + 8) = v3[2]; *(_DWORD *)(this + 4) = v3[1]; *(_DWORD *)(this + 112) = v3[28]; if ( v15 ) { v20 = (_BYTE *)v3[31]; if ( !v20 ) goto LABEL_35; if ( v20[28] ) { v16 = v20[61]; } else { std::ctype::_M_widen_init(v3[31]); v16 = 32; v23 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v20 + 24); if ( v23 != std::ctype::do_widen ) v16 = ((int (__fastcall *)(_BYTE *, int, int))v23)(v20, 32, 32); } *((_BYTE *)v3 + 116) = v16; *((_BYTE *)v3 + 117) = 1; if ( *(_BYTE *)(this + 117) ) goto LABEL_17; } else { v16 = *((_BYTE *)v3 + 116); if ( *(_BYTE *)(this + 117) ) { LABEL_17: *(_BYTE *)(this + 116) = v16; std::locale::locale((volatile signed __int32 **)v28, (volatile signed __int32 **)v3 + 27, v24); std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v28); std::locale::~locale(v28); std::ios::_M_cache_locale((_DWORD *)this, this + 108); std::ios_base::_M_call_callbacks((_DWORD *)this, 2); *(_DWORD *)(this + 16) = v3[4]; std::ios::clear((_DWORD *)this, *(_DWORD *)(this + 20)); return this; } } v21 = *(_BYTE **)(this + 124); if ( v21 ) { if ( !v21[28] ) { v27 = v16; std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); v16 = v27; v22 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v21 + 24); if ( v22 != std::ctype::do_widen ) { ((void (__fastcall *)(_BYTE *, _DWORD, int))v22)(v21, v27, 32); v16 = v27; } } *(_BYTE *)(this + 117) = 1; goto LABEL_17; } LABEL_35: std::__throw_bad_cast(); } return this; } // 4CF82D: variable 'v24' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004CF9A0) -------------------------------------------------------- int __thiscall std::ios::setstate(_DWORD *this, int a2) { return std::ios::clear(this, this[5] | a2); } //----- (004CF9B0) -------------------------------------------------------- int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2) { int result; // eax result = a2; this[30] = a2; return result; } //----- (004CF9C0) -------------------------------------------------------- BOOL __thiscall std::ios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_DWORD *)this = &off_4F6E10; *(_WORD *)(this + 116) = 0; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; *(_DWORD *)(this + 128) = 0; *(_DWORD *)(this + 132) = 0; return std::ios::init(this, a2); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004CFA30) -------------------------------------------------------- int __fastcall std::ios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_4F6E10; *(_DWORD *)(a1 + 112) = 0; *(_WORD *)(a1 + 116) = 0; *(_DWORD *)(a1 + 120) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; return result; } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004CFA80) -------------------------------------------------------- BOOL __thiscall std::ios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_DWORD *)this = &off_4F6E10; *(_WORD *)(this + 116) = 0; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; *(_DWORD *)(this + 128) = 0; *(_DWORD *)(this + 132) = 0; return std::ios::init(this, a2); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004CFAF0) -------------------------------------------------------- int __fastcall std::ios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_4F6E10; *(_DWORD *)(a1 + 112) = 0; *(_WORD *)(a1 + 116) = 0; *(_DWORD *)(a1 + 120) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; return result; } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004CFB40) -------------------------------------------------------- void __fastcall std::ios::~ios(_DWORD *a1) { *a1 = &off_4F6E10; std::ios_base::~ios_base((int)a1); operator delete(a1); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004CFB60) -------------------------------------------------------- void __fastcall std::ios::~ios(int a1) { *(_DWORD *)a1 = &off_4F6E10; std::ios_base::~ios_base(a1); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004CFB70) -------------------------------------------------------- void __fastcall std::ios::~ios(int a1) { *(_DWORD *)a1 = &off_4F6E10; std::ios_base::~ios_base(a1); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004CFB80) -------------------------------------------------------- int __thiscall std::wios::exceptions(_DWORD *this, int a2) { this[4] = a2; return std::wios::clear(this, this[5]); } //----- (004CFBA0) -------------------------------------------------------- int __thiscall std::wios::_M_setstate(_DWORD *this, int a2) { int result; // eax result = a2; this[5] |= a2; if ( (a2 & this[4]) != 0 ) __cxa_rethrow(); return result; } //----- (004CFBC0) -------------------------------------------------------- void *__thiscall std::wios::_M_cache_locale(_DWORD *this, int a2) { void *result; // eax if ( (unsigned __int8)std::has_facet>(a2) ) { this[31] = std::use_facet>(a2); if ( (unsigned __int8)std::has_facet>>(a2) ) goto LABEL_3; LABEL_6: this[32] = 0; result = (void *)std::has_facet>>(a2); if ( (_BYTE)result ) goto LABEL_4; goto LABEL_7; } this[31] = 0; if ( !(unsigned __int8)std::has_facet>>(a2) ) goto LABEL_6; LABEL_3: this[32] = std::use_facet>>(a2); result = (void *)std::has_facet>>(a2); if ( (_BYTE)result ) { LABEL_4: result = std::use_facet>>(a2); this[33] = result; return result; } LABEL_7: this[33] = 0; return result; } //----- (004CFC60) -------------------------------------------------------- int __thiscall std::wios::tie(_DWORD *this, int a2) { int result; // eax result = this[28]; this[28] = a2; return result; } //----- (004CFC70) -------------------------------------------------------- int __thiscall std::wios::fill(int this, __int16 a2) { int result; // eax int v4; // ecx if ( *(_BYTE *)(this + 118) ) { result = *(unsigned __int16 *)(this + 116); *(_WORD *)(this + 116) = a2; } else { v4 = *(_DWORD *)(this + 124); if ( !v4 ) std::__throw_bad_cast(); result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); *(_WORD *)(this + 116) = a2; *(_BYTE *)(this + 118) = 1; } return result; } //----- (004CFCD0) -------------------------------------------------------- BOOL __thiscall std::wios::init(int this, int a2) { BOOL result; // eax std::ios_base::_M_init(this); std::wios::_M_cache_locale((_DWORD *)this, this + 108); *(_DWORD *)(this + 120) = a2; *(_WORD *)(this + 116) = 0; result = a2 == 0; *(_BYTE *)(this + 118) = 0; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = result; return result; } //----- (004CFD20) -------------------------------------------------------- int __thiscall std::wios::move(int this, std::ios_base *a2) { int v3; // eax int result; // eax std::ios_base *v5; // [esp+4h] [ebp-18h] std::ios_base::_M_move(this, a2, v5); std::wios::_M_cache_locale((_DWORD *)this, this + 108); v3 = *((_DWORD *)a2 + 28); *((_DWORD *)a2 + 28) = 0; *(_DWORD *)(this + 112) = v3; *(_WORD *)(this + 116) = *((_WORD *)a2 + 58); result = *((unsigned __int8 *)a2 + 118); *(_DWORD *)(this + 120) = 0; *(_BYTE *)(this + 118) = result; return result; } // 4CFD2E: variable 'v5' is possibly undefined //----- (004CFD80) -------------------------------------------------------- int __thiscall std::wios::move(int this, std::ios_base *a2) { int v3; // eax int result; // eax std::ios_base *v5; // [esp+4h] [ebp-18h] std::ios_base::_M_move(this, a2, v5); std::wios::_M_cache_locale((_DWORD *)this, this + 108); v3 = *((_DWORD *)a2 + 28); *((_DWORD *)a2 + 28) = 0; *(_DWORD *)(this + 112) = v3; *(_WORD *)(this + 116) = *((_WORD *)a2 + 58); result = *((unsigned __int8 *)a2 + 118); *(_DWORD *)(this + 120) = 0; *(_BYTE *)(this + 118) = result; return result; } // 4CFD8E: variable 'v5' is possibly undefined //----- (004CFDE0) -------------------------------------------------------- int __thiscall std::wios::swap(int this, std::ios_base *a2) { int v3; // eax __int16 v4; // dx int result; // eax std::ios_base *v6; // [esp+4h] [ebp-18h] std::ios_base::_M_swap(this, a2, v6); std::wios::_M_cache_locale((_DWORD *)this, this + 108); std::wios::_M_cache_locale(a2, (int)a2 + 108); v3 = *(_DWORD *)(this + 112); *(_DWORD *)(this + 112) = *((_DWORD *)a2 + 28); v4 = *((_WORD *)a2 + 58); *((_DWORD *)a2 + 28) = v3; LOWORD(v3) = *(_WORD *)(this + 116); *(_WORD *)(this + 116) = v4; LOBYTE(v4) = *((_BYTE *)a2 + 118); *((_WORD *)a2 + 58) = v3; result = *(unsigned __int8 *)(this + 118); *(_BYTE *)(this + 118) = v4; *((_BYTE *)a2 + 118) = result; return result; } // 4CFDEE: variable 'v6' is possibly undefined //----- (004CFE50) -------------------------------------------------------- int __thiscall std::wios::clear(_DWORD *this, int a2) { int result; // eax result = a2; if ( !this[30] ) result = a2 | 1; this[5] = result; if ( (result & this[4]) != 0 ) std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); return result; } //----- (004CFE90) -------------------------------------------------------- volatile signed __int32 **__thiscall std::wios::imbue( volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3) { volatile signed __int32 **v4; // esi const std::locale *v6; // [esp+4h] [ebp-44h] const std::locale *v7; // [esp+4h] [ebp-44h] _DWORD *v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF std::locale::locale(this, a2 + 27, v6); std::ios_base::imbue((volatile signed __int32 **)v8, a2, a3); std::locale::~locale(v8); std::wios::_M_cache_locale(a2, (int)a3); v4 = (volatile signed __int32 **)a2[30]; if ( v4 ) { std::locale::locale((volatile signed __int32 **)v8, v4 + 7, v7); (*((void (__thiscall **)(volatile signed __int32 **, volatile signed __int32 **))*v4 + 2))(v4, a3); std::locale::operator=(v4 + 7, a3); std::locale::~locale(v8); } return this; } // 4CFEA7: variable 'v6' is possibly undefined // 4CFEEB: variable 'v7' is possibly undefined //----- (004CFF40) -------------------------------------------------------- int __thiscall std::wios::rdbuf(_DWORD *this, int a2) { int v2; // edx BOOL v3; // eax v2 = this[30]; this[30] = a2; v3 = a2 == 0; this[5] = v3; if ( (v3 & this[4]) != 0 ) std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); return v2; } //----- (004CFF80) -------------------------------------------------------- int __thiscall std::wios::copyfmt(int this, _DWORD *a2) { _DWORD *v3; // esi int v4; // eax _DWORD *v5; // eax int v6; // ebp int v7; // edi int v8; // edx _DWORD *v9; // eax int v10; // ebp int v11; // ecx int v12; // edx int v13; // esi int v14; // eax bool v15; // zf __int16 v16; // di _DWORD *v18; // edx int v19; // ecx int v20; // ecx __int16 v21; // ax int v22; // ecx const std::locale *v23; // [esp+8h] [ebp-48h] _DWORD *v24; // [esp+20h] [ebp-30h] _DWORD *v25; // [esp+20h] [ebp-30h] _DWORD *v26[8]; // [esp+30h] [ebp-20h] BYREF v3 = a2; if ( (_DWORD *)this != a2 ) { v4 = a2[25]; if ( v4 > 8 ) { if ( v4 > 0xFFFFFFF ) __cxa_throw_bad_array_new_length(); v6 = this + 36; v5 = (_DWORD *)operator new[](8 * v4); v18 = v5; v19 = a2[25] - 1; if ( v19 >= 0 ) { do { --v19; *v18 = 0; v18 += 2; *(v18 - 1) = 0; } while ( v19 != -1 ); } } else { v5 = (_DWORD *)(this + 36); v6 = this + 36; } v7 = a2[6]; if ( v7 ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); else ++*(_DWORD *)(v7 + 12); } v24 = v5; std::ios_base::_M_call_callbacks((_DWORD *)this, 0); v8 = *(_DWORD *)(this + 104); v9 = v24; if ( v8 != v6 ) { if ( v8 ) { operator delete[](*(void **)(this + 104)); v9 = v24; } *(_DWORD *)(this + 104) = 0; } v25 = v9; std::ios_base::_M_dispose_callbacks(this); v10 = a2[25]; *(_DWORD *)(this + 24) = v7; if ( v10 > 0 ) { v11 = a2[26]; v12 = 0; do { v13 = *(_DWORD *)(v11 + v12 * 4 + 4); v25[v12] = *(_DWORD *)(v11 + v12 * 4); v25[v12 + 1] = v13; v12 += 2; } while ( v12 != 2 * v10 ); v3 = a2; } *(_DWORD *)(this + 104) = v25; v14 = v3[3]; *(_DWORD *)(this + 100) = v10; v15 = *((_BYTE *)v3 + 118) == 0; *(_DWORD *)(this + 12) = v14; *(_DWORD *)(this + 8) = v3[2]; *(_DWORD *)(this + 4) = v3[1]; *(_DWORD *)(this + 112) = v3[28]; if ( v15 ) { v20 = v3[31]; if ( !v20 ) goto LABEL_28; v21 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v20 + 40))(v20, 32); *((_BYTE *)v3 + 118) = 1; v15 = *(_BYTE *)(this + 118) == 0; *((_WORD *)v3 + 58) = v21; v16 = v21; if ( !v15 ) goto LABEL_17; } else { v16 = *((_WORD *)v3 + 58); if ( *(_BYTE *)(this + 118) ) { LABEL_17: *(_WORD *)(this + 116) = v16; std::locale::locale((volatile signed __int32 **)v26, (volatile signed __int32 **)v3 + 27, v23); std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v26); std::locale::~locale(v26); std::wios::_M_cache_locale((_DWORD *)this, this + 108); std::ios_base::_M_call_callbacks((_DWORD *)this, 2); *(_DWORD *)(this + 16) = v3[4]; std::wios::clear((_DWORD *)this, *(_DWORD *)(this + 20)); return this; } } v22 = *(_DWORD *)(this + 124); if ( v22 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v22 + 40))(v22, 32); *(_BYTE *)(this + 118) = 1; goto LABEL_17; } LABEL_28: std::__throw_bad_cast(); } return this; } // 4D008E: variable 'v23' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004D01B0) -------------------------------------------------------- int __thiscall std::wios::setstate(_DWORD *this, int a2) { return std::wios::clear(this, this[5] | a2); } //----- (004D01C0) -------------------------------------------------------- int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2) { int result; // eax result = a2; this[30] = a2; return result; } //----- (004D01D0) -------------------------------------------------------- BOOL __thiscall std::wios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_DWORD *)this = &off_4F6E20; *(_WORD *)(this + 116) = 0; *(_DWORD *)(this + 112) = 0; *(_BYTE *)(this + 118) = 0; *(_DWORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; *(_DWORD *)(this + 128) = 0; *(_DWORD *)(this + 132) = 0; return std::wios::init(this, a2); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D0250) -------------------------------------------------------- int __fastcall std::wios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_4F6E20; *(_DWORD *)(a1 + 112) = 0; *(_WORD *)(a1 + 116) = 0; *(_BYTE *)(a1 + 118) = 0; *(_DWORD *)(a1 + 120) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; return result; } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D02A0) -------------------------------------------------------- BOOL __thiscall std::wios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_DWORD *)this = &off_4F6E20; *(_WORD *)(this + 116) = 0; *(_DWORD *)(this + 112) = 0; *(_BYTE *)(this + 118) = 0; *(_DWORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; *(_DWORD *)(this + 128) = 0; *(_DWORD *)(this + 132) = 0; return std::wios::init(this, a2); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D0320) -------------------------------------------------------- int __fastcall std::wios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_4F6E20; *(_DWORD *)(a1 + 112) = 0; *(_WORD *)(a1 + 116) = 0; *(_BYTE *)(a1 + 118) = 0; *(_DWORD *)(a1 + 120) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 128) = 0; *(_DWORD *)(a1 + 132) = 0; return result; } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D0370) -------------------------------------------------------- void __fastcall std::wios::~wios(_DWORD *a1) { *a1 = &off_4F6E20; std::ios_base::~ios_base((int)a1); operator delete(a1); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D0390) -------------------------------------------------------- void __fastcall std::wios::~wios(int a1) { *(_DWORD *)a1 = &off_4F6E20; std::ios_base::~ios_base(a1); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D03A0) -------------------------------------------------------- void __fastcall std::wios::~wios(int a1) { *(_DWORD *)a1 = &off_4F6E20; std::ios_base::~ios_base(a1); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D03B0) -------------------------------------------------------- void __fastcall std::exception::~exception(void *a1) { operator delete(a1, 4u); } //----- (004D03E0) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6E44; result = a2 != 0; this[1] = result; return result; } // 4F6E44: using guessed type int (*off_4F6E44)(); //----- (004D0400) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6E44; result = a2 != 0; this[1] = result; return result; } // 4F6E44: using guessed type int (*off_4F6E44)(); //----- (004D0420) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6E44; std::locale::facet::~facet(v2); operator delete(a1); } // 4D042C: variable 'v2' is possibly undefined // 4F6E44: using guessed type int (*off_4F6E44)(); //----- (004D0440) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6E44; std::locale::facet::~facet(a1); } // 4D0440: variable 'v1' is possibly undefined // 4F6E44: using guessed type int (*off_4F6E44)(); //----- (004D0450) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6E44; std::locale::facet::~facet(a1); } // 4D0450: variable 'v1' is possibly undefined // 4F6E44: using guessed type int (*off_4F6E44)(); //----- (004D0460) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6E5C; result = a2 != 0; this[1] = result; return result; } // 4F6E5C: using guessed type int (*off_4F6E5C)(); //----- (004D0480) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6E5C; result = a2 != 0; this[1] = result; return result; } // 4F6E5C: using guessed type int (*off_4F6E5C)(); //----- (004D04A0) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6E5C; std::locale::facet::~facet(v2); operator delete(a1); } // 4D04AC: variable 'v2' is possibly undefined // 4F6E5C: using guessed type int (*off_4F6E5C)(); //----- (004D04C0) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6E5C; std::locale::facet::~facet(a1); } // 4D04C0: variable 'v1' is possibly undefined // 4F6E5C: using guessed type int (*off_4F6E5C)(); //----- (004D04D0) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6E5C; std::locale::facet::~facet(a1); } // 4D04D0: variable 'v1' is possibly undefined // 4F6E5C: using guessed type int (*off_4F6E5C)(); //----- (004D04E0) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6E74; result = a2 != 0; this[1] = result; return result; } // 4F6E74: using guessed type int (*off_4F6E74)(); //----- (004D0500) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6E74; result = a2 != 0; this[1] = result; return result; } // 4F6E74: using guessed type int (*off_4F6E74)(); //----- (004D0520) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6E74; std::locale::facet::~facet(v2); operator delete(a1); } // 4D052C: variable 'v2' is possibly undefined // 4F6E74: using guessed type int (*off_4F6E74)(); //----- (004D0540) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6E74; std::locale::facet::~facet(a1); } // 4D0540: variable 'v1' is possibly undefined // 4F6E74: using guessed type int (*off_4F6E74)(); //----- (004D0550) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6E74; std::locale::facet::~facet(a1); } // 4D0550: variable 'v1' is possibly undefined // 4F6E74: using guessed type int (*off_4F6E74)(); //----- (004D0560) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6E8C; result = a2 != 0; this[1] = result; return result; } // 4F6E8C: using guessed type int (*off_4F6E8C)(); //----- (004D0580) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_4F6E8C; result = a2 != 0; this[1] = result; return result; } // 4F6E8C: using guessed type int (*off_4F6E8C)(); //----- (004D05A0) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_4F6E8C; std::locale::facet::~facet(v2); operator delete(a1); } // 4D05AC: variable 'v2' is possibly undefined // 4F6E8C: using guessed type int (*off_4F6E8C)(); //----- (004D05C0) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6E8C; std::locale::facet::~facet(a1); } // 4D05C0: variable 'v1' is possibly undefined // 4F6E8C: using guessed type int (*off_4F6E8C)(); //----- (004D05D0) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_4F6E8C; std::locale::facet::~facet(a1); } // 4D05D0: variable 'v1' is possibly undefined // 4F6E8C: using guessed type int (*off_4F6E8C)(); //----- (004D05E0) -------------------------------------------------------- void __fastcall std::type_info::~type_info(void *a1) { operator delete(a1, 8u); } //----- (004D0610) -------------------------------------------------------- void __noreturn std::unexpected(void) { __cxxabiv1::__unexpected(__cxxabiv1::__unexpected_handler); } //----- (004D0620) -------------------------------------------------------- int __cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, int a3, __int16 a4, char a5) { _BYTE *v6; // ebx unsigned int v7; // eax int v9; // eax int v10; // eax if ( a5 ) { v6 = a1; do { *--v6 = *(_BYTE *)(a3 + a2 % 0xA + 4); v7 = a2; a2 /= 0xAu; } while ( v7 > 9 ); } else if ( (a4 & 0x4A) == 64 ) { v6 = a1; do { --v6; v10 = a2 & 7; a2 >>= 3; *v6 = *(_BYTE *)(a3 + v10 + 4); } while ( a2 ); } else { v6 = a1; do { --v6; v9 = a2 & 0xF; a2 >>= 4; *v6 = *(_BYTE *)(a3 + ((a4 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + v9); } while ( a2 ); } return a1 - v6; } //----- (004D06D0) -------------------------------------------------------- int __cdecl std::__int_to_char(_BYTE *a1, UDItype n, int a3, __int16 a4, char a5) { unsigned __int64 v5; // rdi _BYTE *v6; // ebx unsigned __int64 v7; // kr08_8 char v9; // al char v10; // al unsigned __int64 v11; // [esp+18h] [ebp-24h] v5 = __PAIR64__(n, HIDWORD(n)); if ( a5 ) { v6 = a1; do { --v6; v11 = __PAIR64__(v5, HIDWORD(v5)); *v6 = *(_BYTE *)(a3 + __PAIR64__(v5, HIDWORD(v5)) % 0xA + 4); v7 = __PAIR64__(v5, HIDWORD(v5)) / 0xA; LODWORD(v5) = (__PAIR64__(v5, HIDWORD(v5)) / 0xA) >> 32; HIDWORD(v5) = v7; } while ( v11 > 9 ); } else if ( (a4 & 0x4A) == 64 ) { v6 = a1; do { v10 = BYTE4(v5); HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 3; --v6; LODWORD(v5) = (unsigned int)v5 >> 3; *v6 = *(_BYTE *)(a3 + (v10 & 7) + 4); } while ( v5 ); } else { v6 = a1; do { v9 = BYTE4(v5); HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 4; --v6; LODWORD(v5) = (unsigned int)v5 >> 4; *v6 = *(_BYTE *)(a3 + ((a4 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + (v9 & 0xF)); } while ( v5 ); } return a1 - v6; } //----- (004D07D0) -------------------------------------------------------- int __cdecl std::__int_to_char(_WORD *a1, unsigned int a2, int a3, __int16 a4, char a5) { _WORD *v6; // ebx unsigned int v7; // eax int v9; // eax int v10; // eax if ( a5 ) { v6 = a1; do { *--v6 = *(_WORD *)(a3 + 2 * (a2 % 0xA) + 8); v7 = a2; a2 /= 0xAu; } while ( v7 > 9 ); } else if ( (a4 & 0x4A) == 64 ) { v6 = a1; do { --v6; v10 = a2 & 7; a2 >>= 3; *v6 = *(_WORD *)(a3 + 2 * v10 + 8); } while ( a2 ); } else { v6 = a1; do { --v6; v9 = ((a4 & 0x4000) == 0 ? 4 : 20) + (a2 & 0xF); a2 >>= 4; *v6 = *(_WORD *)(a3 + 2 * v9); } while ( a2 ); } return a1 - v6; } //----- (004D0890) -------------------------------------------------------- int __cdecl std::__int_to_char(_WORD *a1, UDItype n, int a3, __int16 a4, char a5) { unsigned __int64 v5; // rdi _WORD *v6; // ebx unsigned __int64 v7; // kr08_8 char v9; // al char v10; // al unsigned __int64 v11; // [esp+18h] [ebp-24h] v5 = __PAIR64__(n, HIDWORD(n)); if ( a5 ) { v6 = a1; do { --v6; v11 = __PAIR64__(v5, HIDWORD(v5)); *v6 = *(_WORD *)(a3 + 2 * (__PAIR64__(v5, HIDWORD(v5)) % 0xA) + 8); v7 = __PAIR64__(v5, HIDWORD(v5)) / 0xA; LODWORD(v5) = (__PAIR64__(v5, HIDWORD(v5)) / 0xA) >> 32; HIDWORD(v5) = v7; } while ( v11 > 9 ); } else if ( (a4 & 0x4A) == 64 ) { v6 = a1; do { v10 = BYTE4(v5); HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 3; --v6; LODWORD(v5) = (unsigned int)v5 >> 3; *v6 = *(_WORD *)(a3 + 2 * (v10 & 7) + 8); } while ( v5 ); } else { v6 = a1; do { v9 = BYTE4(v5); HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 4; --v6; LODWORD(v5) = (unsigned int)v5 >> 4; *v6 = *(_WORD *)(a3 + 2 * (((a4 & 0x4000) == 0 ? 4 : 20) + (v9 & 0xF))); } while ( v5 ); } return a1 - v6; } //----- (004D09A0) -------------------------------------------------------- void (*std::get_terminate(void))(void) { return __cxxabiv1::__terminate_handler; } //----- (004D09B0) -------------------------------------------------------- __int32 __cdecl std::set_terminate(void (*a1)(void)) { return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__terminate_handler, (__int32)a1); } //----- (004D09C0) -------------------------------------------------------- _BYTE *__cdecl std::__add_grouping(_BYTE *a1, char a2, char *a3, int a4, _BYTE *a5, _BYTE *a6) { _BYTE *v6; // edi _BYTE *v7; // esi _BYTE *v8; // ecx int v9; // edx unsigned int v10; // ebx char *v11; // edi int v12; // ebp int v13; // ebx int v14; // edx _BYTE *result; // eax int v16; // ebx _BYTE *v17; // ebp char v18; // dl _BYTE *v19; // edi int v20; // eax _BYTE *v21; // esi int v22; // edx _BYTE *v23; // ebp char v24; // dl _BYTE *v25; // edi int v26; // eax _BYTE *v27; // esi int v28; // edx char *v29; // [esp+4h] [ebp-1Ch] int v30; // [esp+8h] [ebp-18h] int v31; // [esp+8h] [ebp-18h] unsigned int v32; // [esp+Ch] [ebp-14h] _BYTE *v33; // [esp+38h] [ebp+18h] _BYTE *v34; // [esp+38h] [ebp+18h] v6 = a1; v7 = a5; v8 = a6; v9 = *a3; if ( (unsigned __int8)(v9 - 1) > 0x7Du || a6 - a5 <= v9 ) { if ( a6 == a5 ) return a1; v13 = -1; v14 = -1; v12 = 0; v32 = 0; v29 = a3; goto LABEL_10; } v10 = 0; v30 = 0; do { v8 -= v9; if ( a4 - 1 > v10 ) ++v10; else ++v30; v11 = &a3[v10]; v9 = a3[v10]; } while ( v8 - a5 > v9 && (unsigned __int8)(v9 - 1) <= 0x7Du ); v12 = v30; v32 = v10; v13 = v10 - 1; v29 = v11; v6 = a1; v14 = v30 - 1; if ( a5 != v8 ) { LABEL_10: result = &v6[v8 - a5]; do *v6++ = *v7++; while ( v6 != result ); goto LABEL_12; } result = a1; LABEL_12: if ( v12 ) { v33 = v8; v31 = v13; v16 = v14; do { v17 = result + 1; *result = a2; v18 = *v29; if ( *v29 <= 0 ) { ++result; } else { v19 = result + 1; v20 = (int)&result[(unsigned __int8)(v18 - 1) + 2]; v21 = v33; do *v19++ = *v21++; while ( v19 != (_BYTE *)v20 ); v22 = (char)(v18 - 1) + 1; v33 += v22; result = &v17[v22]; } --v16; } while ( v16 != -1 ); v13 = v31; v8 = v33; } if ( v32 ) { v34 = v8; do { v23 = result + 1; *result = a2; v24 = a3[v13]; if ( v24 <= 0 ) { ++result; } else { v25 = result + 1; v26 = (int)&result[(unsigned __int8)(v24 - 1) + 2]; v27 = v34; do *v25++ = *v27++; while ( v25 != (_BYTE *)v26 ); v28 = (char)(v24 - 1) + 1; v34 += v28; result = &v23[v28]; } --v13; } while ( v13 != -1 ); } return result; } //----- (004D0B90) -------------------------------------------------------- _WORD *__cdecl std::__add_grouping(_WORD *a1, __int16 a2, char *a3, int a4, _WORD *a5, _WORD *a6) { _WORD *v6; // eax int v7; // edx int v8; // ebp unsigned int v9; // esi int v10; // ecx int v11; // ebx _WORD *v12; // edi _WORD *v13; // esi _WORD *v14; // edx _WORD *result; // eax _WORD *v16; // edi int v17; // ebx _WORD *v18; // ebp char v19; // cl _WORD *v20; // edx int v21; // eax _WORD *v22; // esi _WORD *v23; // edi int v24; // eax _WORD *v25; // edx _WORD *v26; // edi _WORD *v27; // ebp char v28; // cl _WORD *v29; // edx int v30; // eax _WORD *v31; // esi _WORD *v32; // edi int v33; // eax _WORD *v34; // edx char *v35; // [esp+4h] [ebp-1Ch] unsigned int v36; // [esp+8h] [ebp-18h] int v37; // [esp+Ch] [ebp-14h] v6 = a6; v7 = *a3; if ( a6 - a5 <= v7 || (unsigned __int8)(v7 - 1) > 0x7Du ) { if ( a6 == a5 ) return a1; v36 = 0; v10 = -1; v8 = 0; v35 = a3; v11 = -1; goto LABEL_10; } v8 = 0; v9 = 0; do { v6 -= v7; if ( a4 - 1 > v9 ) ++v9; else ++v8; v7 = a3[v9]; } while ( v6 - a5 > v7 && (unsigned __int8)(v7 - 1) <= 0x7Du ); v35 = &a3[v9]; v10 = v8 - 1; v36 = v9; v11 = v9 - 1; if ( a5 != v6 ) { LABEL_10: v12 = a1; v13 = a5; do *v12++ = *v13++; while ( v6 != v13 ); v14 = v13; result = (_WORD *)((char *)a1 + (char *)v13 - (char *)a5); goto LABEL_13; } v14 = a5; result = a1; LABEL_13: if ( v8 ) { v37 = v11; v16 = v14; v17 = v10; do { v18 = result + 1; *result = a2; v19 = *v35; if ( *v35 <= 0 ) { ++result; } else { v20 = v16; v21 = (int)&result[(unsigned __int8)(v19 - 1) + 2]; v22 = v16; v23 = v18; do *v23++ = *v22++; while ( v23 != (_WORD *)v21 ); v24 = 2 * (char)(v19 - 1) + 2; v25 = (_WORD *)((char *)v20 + v24); result = (_WORD *)((char *)v18 + v24); v16 = v25; } --v17; } while ( v17 != -1 ); v11 = v37; v14 = v16; } if ( v36 ) { v26 = v14; do { v27 = result + 1; *result = a2; v28 = a3[v11]; if ( v28 <= 0 ) { ++result; } else { v29 = v26; v30 = (int)&result[(unsigned __int8)(v28 - 1) + 2]; v31 = v26; v32 = v27; do *v32++ = *v31++; while ( v32 != (_WORD *)v30 ); v33 = 2 * (char)(v28 - 1) + 2; v34 = (_WORD *)((char *)v29 + v33); result = (_WORD *)((char *)v27 + v33); v26 = v34; } --v11; } while ( v11 != -1 ); } return result; } //----- (004D0D70) -------------------------------------------------------- void __cdecl std::__convert_to_v(char *String, double *a2, _DWORD *a3) { char *v3; // ebx unsigned int Size; // esi void *Locale; // edi long double v6; // fst7 char *v7; // eax char *EndPtr; // [esp+1Ch] [ebp-20h] BYREF v3 = setlocale(0, 0); Size = strlen(v3) + 1; Locale = (void *)operator new[](Size); memcpy(Locale, v3, Size); setlocale(0, "C"); v6 = strtod(String, &EndPtr); v7 = EndPtr; *a2 = v6; if ( v7 == String || *v7 ) { *a2 = 0.0; *a3 = 4; } else if ( v6 < -1.797693134862316e308 || v6 > 1.797693134862316e308 ) { if ( v6 <= 0.0 ) *a2 = -1.797693134862316e308; else *a2 = 1.797693134862316e308; *a3 = 4; } setlocale(0, (const char *)Locale); operator delete[](Locale); } //----- (004D0EA0) -------------------------------------------------------- void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3) { char *v3; // ebx unsigned int Size; // esi void *Locale; // edi long double v6; // fst7 char *v7; // eax long double v8; // fst7 char *EndPtr; // [esp+1Ch] [ebp-20h] BYREF v3 = setlocale(0, 0); Size = strlen(v3) + 1; Locale = (void *)operator new[](Size); memcpy(Locale, v3, Size); setlocale(0, "C"); v6 = strtold(String, &EndPtr); v7 = EndPtr; *a2 = v6; if ( v7 == String || *v7 ) { *a2 = 0.0; *a3 = 4; } else if ( v6 < -1.189731495357231765e4932 || v6 > 1.189731495357231765e4932 ) { if ( v6 <= 0.0 ) v8 = -1.189731495357231765e4932; else v8 = 1.189731495357231765e4932; *a2 = v8; *a3 = 4; } setlocale(0, (const char *)Locale); operator delete[](Locale); } //----- (004D0FC0) -------------------------------------------------------- void __cdecl std::__convert_to_v(char *String, float *a2, _DWORD *a3) { char *v3; // ebx unsigned int Size; // esi void *Locale; // edi long double v6; // fst7 char *v7; // eax char *EndPtr; // [esp+1Ch] [ebp-20h] BYREF v3 = setlocale(0, 0); Size = strlen(v3) + 1; Locale = (void *)operator new[](Size); memcpy(Locale, v3, Size); setlocale(0, "C"); v6 = strtof(String, &EndPtr); v7 = EndPtr; *a2 = v6; if ( v7 == String || *v7 ) { *a2 = 0.0; *a3 = 4; } else if ( v6 < -3.4028235e38 || v6 > 3.4028235e38 ) { if ( v6 <= 0.0 ) *a2 = -3.4028235e38; else *a2 = 3.4028235e38; *a3 = 4; } setlocale(0, (const char *)Locale); operator delete[](Locale); } //----- (004D10F0) -------------------------------------------------------- void (*std::get_unexpected(void))(void) { return __cxxabiv1::__unexpected_handler; } //----- (004D1100) -------------------------------------------------------- __int32 __cdecl std::set_unexpected(void (*a1)(void)) { return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__unexpected_handler, (__int32)a1); } //----- (004D1110) -------------------------------------------------------- int std::get_new_handler(void) { return `anonymous namespace'::__new_handler; } // 4E8318: using guessed type int `anonymous namespace'::__new_handler; //----- (004D1120) -------------------------------------------------------- __int32 __cdecl std::set_new_handler(void (*a1)(void)) { return _InterlockedExchange(&`anonymous namespace'::__new_handler, (__int32)a1); } // 4E8318: using guessed type int `anonymous namespace'::__new_handler; //----- (004D1130) -------------------------------------------------------- int std::__convert_from_v(int *const *a1, char *Buffer, size_t BufferCount, char *Format, ...) { char *v4; // ebx unsigned int v6; // edi void *Locale; // esi int v8; // ebx va_list va; // [esp+30h] [ebp+14h] BYREF va_start(va, Format); v4 = setlocale(4, 0); if ( *v4 == 67 && !v4[1] ) return vsnprintf(Buffer, BufferCount, Format, va); v6 = strlen(v4) + 1; Locale = (void *)operator new[](v6); memcpy(Locale, v4, v6); setlocale(4, "C"); v8 = vsnprintf(Buffer, BufferCount, Format, va); setlocale(4, (const char *)Locale); operator delete[](Locale); return v8; } //----- (004D1210) -------------------------------------------------------- std::ostream::sentry *__cdecl std::__ostream_insert>( std::ostream::sentry *a1, int a2, int a3) { int v3; // eax char *v4; // esi int v5; // edi int v6; // edi _DWORD *v7; // ecx unsigned __int8 *v8; // eax char *v9; // esi int v10; // ecx int v12; // eax int v13; // edx int v14; // eax int v15; // edi _DWORD *v16; // ecx unsigned __int8 *v17; // eax int (__stdcall *v18)(unsigned __int8); // eax int (__stdcall *v19)(unsigned __int8); // eax std::ostream *v20; // [esp+4h] [ebp-44h] _BYTE *v21; // [esp+10h] [ebp-38h] int v22; // [esp+14h] [ebp-34h] int v23; // [esp+18h] [ebp-30h] _BYTE *v24; // [esp+18h] [ebp-30h] unsigned __int8 v25; // [esp+1Fh] [ebp-29h] unsigned __int8 v26; // [esp+1Fh] [ebp-29h] char v27[4]; // [esp+28h] [ebp-20h] BYREF _DWORD *v28; // [esp+2Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v27, a1, v20); if ( v27[0] ) { v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); v4 = (char *)a1 + v3; v5 = *(_DWORD *)((char *)a1 + v3 + 8); v23 = v5; if ( a3 >= v5 ) { v12 = (*(int (__cdecl **)(int, int))(**((_DWORD **)v4 + 30) + 48))(a2, a3); v4 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); if ( a3 == v12 ) goto LABEL_11; std::ios::clear((std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *((_DWORD *)v4 + 5) | 1); LABEL_20: *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; } else { v22 = *((_DWORD *)v4 + 3) & 0xB0; if ( v22 != 32 ) { v6 = v5 - a3; if ( v4[117] ) { v25 = v4[116]; } else { v21 = (_BYTE *)*((_DWORD *)v4 + 31); if ( !v21 ) std::__throw_bad_cast(); if ( v21[28] ) { v25 = v21[61]; } else { std::ctype::_M_widen_init((int)v21); v25 = 32; v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v21 + 24); if ( v18 != std::ctype::do_widen ) v25 = ((int (__thiscall *)(_BYTE *, int))v18)(v21, 32); } v4[117] = 1; v4[116] = v25; v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); } while ( 1 ) { v7 = *(_DWORD **)((char *)a1 + v3 + 120); v8 = (unsigned __int8 *)v7[5]; if ( (unsigned int)v8 < v7[6] ) { *v8 = v25; ++v7[5]; } else if ( (*(int (__cdecl **)(_DWORD))(*v7 + 52))(v25) == -1 ) { std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); v4 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); if ( !*((_DWORD *)v4 + 5) ) goto LABEL_23; goto LABEL_11; } v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); if ( !--v6 ) { v4 = (char *)a1 + v3; break; } } } if ( !*((_DWORD *)v4 + 5) ) { LABEL_23: v13 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v4 + 30) + 48))(*((_DWORD *)v4 + 30), a2, a3); v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); v4 = (char *)a1 + v14; if ( a3 != v13 ) { std::ios::clear((std::ostream::sentry *)((char *)a1 + v14), *((_DWORD *)v4 + 5) | 1); v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); v4 = (char *)a1 + v14; } if ( v22 == 32 && !*((_DWORD *)v4 + 5) ) { v15 = v23 - a3; if ( v4[117] ) { v26 = v4[116]; } else { v24 = (_BYTE *)*((_DWORD *)v4 + 31); if ( !v24 ) std::__throw_bad_cast(); if ( v24[28] ) { v26 = v24[61]; } else { std::ctype::_M_widen_init((int)v24); v26 = 32; v19 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); if ( v19 != std::ctype::do_widen ) v26 = ((int (__thiscall *)(_BYTE *, int))v19)(v24, 32); } v4[117] = 1; v4[116] = v26; v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); } do { v16 = *(_DWORD **)((char *)a1 + v14 + 120); v17 = (unsigned __int8 *)v16[5]; if ( (unsigned int)v17 < v16[6] ) { *v17 = v26; ++v16[5]; } else if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v16 + 52))(v16, v26) == -1 ) { std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); goto LABEL_20; } v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); --v15; } while ( v15 ); v4 = (char *)a1 + v14; } } LABEL_11: *((_DWORD *)v4 + 2) = 0; } } v9 = (char *)v28 + *(_DWORD *)(*v28 - 12); if ( (v9[13] & 0x20) != 0 && !std::uncaught_exception() ) { v10 = *((_DWORD *)v9 + 30); if ( v10 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v10 + 24))(v10) == -1 ) std::ios::clear( (_DWORD *)((char *)v28 + *(_DWORD *)(*v28 - 12)), *(_DWORD *)((char *)v28 + *(_DWORD *)(*v28 - 12) + 20) | 1); } } return a1; } // 4D1222: variable 'v20' is possibly undefined // 4D1210: using guessed type char var_20[4]; //----- (004D15D0) -------------------------------------------------------- int *__cdecl std::__ostream_insert>(int *a1, int a2, int a3) { char *v3; // esi int v4; // eax char *v5; // ecx unsigned int v6; // eax _DWORD *v7; // edx unsigned int v8; // eax __int16 v9; // ax char *v10; // esi int v11; // ecx int v13; // eax int v14; // eax char *v15; // esi unsigned int v16; // eax unsigned __int16 v17; // ax _DWORD *v18; // edx unsigned int v19; // eax int v20; // ecx unsigned __int16 v21; // ax int v22; // eax int v23; // ecx unsigned __int16 v24; // ax int v25; // eax int v26; // [esp+20h] [ebp-38h] int v27; // [esp+24h] [ebp-34h] int v28; // [esp+28h] [ebp-30h] int v29; // [esp+28h] [ebp-30h] unsigned __int16 v30; // [esp+2Eh] [ebp-2Ah] unsigned __int16 v31; // [esp+2Eh] [ebp-2Ah] int v32; // [esp+38h] [ebp-20h] BYREF _DWORD *v33; // [esp+3Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v32, a1); if ( (_BYTE)v32 ) { v3 = (char *)a1 + *(_DWORD *)(*a1 - 12); v4 = *((_DWORD *)v3 + 2); v5 = v3; v27 = v4; if ( a3 >= v4 ) { v13 = (*(int (__cdecl **)(int, int))(**((_DWORD **)v3 + 30) + 48))(a2, a3); v5 = (char *)a1 + *(_DWORD *)(*a1 - 12); if ( a3 != v13 ) { std::wios::clear(v5, *((_DWORD *)v5 + 5) | 1); LABEL_20: *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; goto LABEL_12; } goto LABEL_11; } v26 = *((_DWORD *)v3 + 3) & 0xB0; if ( v26 == 32 ) { if ( *((_DWORD *)v3 + 5) ) { LABEL_11: *((_DWORD *)v5 + 2) = 0; goto LABEL_12; } } else { v28 = v4 - a3; if ( v3[118] ) { v30 = *((_WORD *)v3 + 58); } else { v20 = *((_DWORD *)v3 + 31); if ( !v20 ) std::__throw_bad_cast(); v21 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v20 + 40))(v20, 32); *((_WORD *)v3 + 58) = v21; v30 = v21; v22 = *a1; v3[118] = 1; v3 = (char *)a1 + *(_DWORD *)(v22 - 12); } do { v7 = (_DWORD *)*((_DWORD *)v3 + 30); v5 = v3; v8 = v7[5]; if ( v8 < v7[6] ) { v6 = v8 + 2; *(_WORD *)(v6 - 2) = v30; v7[5] = v6; if ( v30 == 0xFFFF ) goto LABEL_10; } else { v9 = (*(int (__thiscall **)(_DWORD, _DWORD))(*v7 + 52))(*((_DWORD *)v3 + 30), v30); v3 = (char *)a1 + *(_DWORD *)(*a1 - 12); v5 = v3; if ( v9 == -1 ) { LABEL_10: std::wios::clear(v3, *((_DWORD *)v3 + 5) | 1); v5 = (char *)a1 + *(_DWORD *)(*a1 - 12); if ( !*((_DWORD *)v5 + 5) ) goto LABEL_22; goto LABEL_11; } } --v28; } while ( v28 ); if ( *((_DWORD *)v3 + 5) ) goto LABEL_11; } LABEL_22: v14 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v5 + 30) + 48))(*((_DWORD *)v5 + 30), a2, a3); v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); v5 = v15; if ( a3 != v14 ) { std::wios::clear(v15, *((_DWORD *)v15 + 5) | 1); v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); v5 = v15; } if ( v26 == 32 && !*((_DWORD *)v15 + 5) ) { v29 = v27 - a3; if ( v15[118] ) { v31 = *((_WORD *)v15 + 58); } else { v23 = *((_DWORD *)v15 + 31); if ( !v23 ) std::__throw_bad_cast(); v24 = (*(int (__cdecl **)(int))(*(_DWORD *)v23 + 40))(32); *((_WORD *)v15 + 58) = v24; v31 = v24; v25 = *a1; v15[118] = 1; v15 = (char *)a1 + *(_DWORD *)(v25 - 12); } while ( 1 ) { v18 = (_DWORD *)*((_DWORD *)v15 + 30); v5 = v15; v19 = v18[5]; if ( v19 < v18[6] ) { v16 = v19 + 2; *(_WORD *)(v16 - 2) = v31; v18[5] = v16; v17 = v31; } else { v17 = (*(int (__thiscall **)(_DWORD, _DWORD))(*v18 + 52))(*((_DWORD *)v15 + 30), v31); v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); v5 = v15; } if ( v17 == 0xFFFF ) break; if ( !--v29 ) goto LABEL_11; } std::wios::clear(v15, *((_DWORD *)v15 + 5) | 1); goto LABEL_20; } goto LABEL_11; } LABEL_12: v10 = (char *)v33 + *(_DWORD *)(*v33 - 12); if ( (v10[13] & 0x20) != 0 && !std::uncaught_exception() ) { v11 = *((_DWORD *)v10 + 30); if ( v11 ) { if ( (*(int (__fastcall **)(int))(*(_DWORD *)v11 + 24))(v11) == -1 ) std::wios::clear( (_DWORD *)((char *)v33 + *(_DWORD *)(*v33 - 12)), *(_DWORD *)((char *)v33 + *(_DWORD *)(*v33 - 12) + 20) | 1); } } return a1; } //----- (004D1950) -------------------------------------------------------- int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2) { char v3[13]; // [esp+1Fh] [ebp-Dh] BYREF return std::__copy_streambufs_eof>(a1, a2, v3); } // 4D1950: using guessed type char var_D[13]; //----- (004D1980) -------------------------------------------------------- int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2) { char v3[13]; // [esp+1Fh] [ebp-Dh] BYREF return std::__copy_streambufs_eof>(a1, a2, v3); } // 4D1980: using guessed type char var_D[13]; //----- (004D19B0) -------------------------------------------------------- int __cdecl std::__verify_grouping(char *a1, unsigned int a2, int a3) { return std::__verify_grouping_impl(a1, a2, *(const char **)a3, *(_DWORD *)(a3 + 4)); } //----- (004D19F0) -------------------------------------------------------- int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3) { return std::__verify_grouping_impl(a1, a2, *a3, *((_DWORD *)*a3 - 3)); } //----- (004D1A20) -------------------------------------------------------- void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden this) { return `anonymous namespace'::__io_category_instance(); } //----- (004D1A30) -------------------------------------------------------- int __cdecl std::_Rb_tree_decrement(_DWORD *a1) { return std::local_Rb_tree_decrement(a1); } //----- (004D1A40) -------------------------------------------------------- int __cdecl std::_Rb_tree_decrement(_DWORD *a1) { return std::local_Rb_tree_decrement(a1); } //----- (004D1A60) -------------------------------------------------------- int __cdecl std::_Rb_tree_increment(int a1) { int v1; // eax int v2; // edx int result; // eax v1 = *(_DWORD *)(a1 + 12); if ( v1 ) { do { v2 = v1; v1 = *(_DWORD *)(v1 + 8); } while ( v1 ); return v2; } result = *(_DWORD *)(a1 + 4); if ( a1 == *(_DWORD *)(result + 12) ) { do { v2 = result; result = *(_DWORD *)(result + 4); } while ( *(_DWORD *)(result + 12) == v2 ); if ( result == *(_DWORD *)(v2 + 12) ) return v2; } return result; } //----- (004D1AB0) -------------------------------------------------------- bool std::uncaught_exception(void) { return __cxa_get_globals()[1] != 0; } //----- (004D1AD0) -------------------------------------------------------- int std::uncaught_exceptions(void) { return __cxa_get_globals()[1]; } //----- (004D1AE0) -------------------------------------------------------- int __cdecl std::_Rb_tree_black_count(_DWORD *a1, _DWORD *a2) { _DWORD *v2; // eax int v3; // edx v2 = a1; v3 = 0; if ( a1 ) { while ( 1 ) { v3 += *v2 == 1; if ( v2 == a2 ) break; v2 = (_DWORD *)v2[1]; } } return v3; } //----- (004D1B10) -------------------------------------------------------- int __cdecl std::_Rb_tree_rotate_left(int a1, _DWORD *a2) { int result; // eax int v3; // edx int v4; // ecx int v5; // ecx result = a1; v3 = *(_DWORD *)(a1 + 12); v4 = *(_DWORD *)(v3 + 8); *(_DWORD *)(a1 + 12) = v4; if ( v4 ) *(_DWORD *)(v4 + 4) = a1; v5 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v3 + 4) = v5; if ( a1 == *a2 ) { *a2 = v3; *(_DWORD *)(v3 + 8) = a1; *(_DWORD *)(a1 + 4) = v3; } else { if ( a1 == *(_DWORD *)(v5 + 8) ) *(_DWORD *)(v5 + 8) = v3; else *(_DWORD *)(v5 + 12) = v3; *(_DWORD *)(v3 + 8) = a1; *(_DWORD *)(a1 + 4) = v3; } return result; } //----- (004D1B70) -------------------------------------------------------- int __cdecl std::_Rb_tree_rotate_right(int a1, _DWORD *a2) { int result; // eax int v3; // edx int v4; // ecx int v5; // ecx result = a1; v3 = *(_DWORD *)(a1 + 8); v4 = *(_DWORD *)(v3 + 12); *(_DWORD *)(a1 + 8) = v4; if ( v4 ) *(_DWORD *)(v4 + 4) = a1; v5 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v3 + 4) = v5; if ( a1 == *a2 ) { *a2 = v3; *(_DWORD *)(v3 + 12) = a1; *(_DWORD *)(a1 + 4) = v3; } else { if ( a1 == *(_DWORD *)(v5 + 12) ) *(_DWORD *)(v5 + 12) = v3; else *(_DWORD *)(v5 + 8) = v3; *(_DWORD *)(v3 + 12) = a1; *(_DWORD *)(a1 + 4) = v3; } return result; } //----- (004D1BD0) -------------------------------------------------------- int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) { _BYTE *v3; // ecx unsigned int v4; // ebx int v5; // eax int v6; // edi int v7; // ebx int v8; // eax _BYTE *v9; // ecx unsigned int v10; // ecx v3 = (_BYTE *)a1[2]; v4 = a1[3]; *a3 = 1; if ( v4 <= (unsigned int)v3 ) { v6 = 0; v5 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v5 == -1 ) return v6; v4 = a1[3]; v3 = (_BYTE *)a1[2]; } else { LOBYTE(v5) = *v3; } v6 = 0; while ( 1 ) { v7 = v4 - (_DWORD)v3; if ( v7 > 1 ) break; while ( 1 ) { v9 = (_BYTE *)a2[5]; if ( (unsigned int)v9 >= a2[6] ) { if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, (unsigned __int8)v5) == -1 ) goto LABEL_17; } else { *v9 = v5; ++a2[5]; } v10 = a1[2]; v4 = a1[3]; ++v6; if ( v10 >= v4 ) { if ( (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1) == -1 ) return v6; v3 = (_BYTE *)a1[2]; v4 = a1[3]; } else { v3 = (_BYTE *)(v10 + 1); a1[2] = v3; } if ( (unsigned int)v3 < v4 ) break; LABEL_6: v5 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v5 == -1 ) return v6; v3 = (_BYTE *)a1[2]; v7 = a1[3] - (_DWORD)v3; if ( v7 > 1 ) goto LABEL_5; } LOBYTE(v5) = *v3; } LABEL_5: v8 = (*(int (__thiscall **)(_DWORD *, _BYTE *, int))(*a2 + 48))(a2, v3, v7); a1[2] += v8; v6 += v8; if ( v7 <= v8 ) goto LABEL_6; LABEL_17: *a3 = 0; return v6; } //----- (004D1CD0) -------------------------------------------------------- int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) { unsigned __int16 *v3; // eax unsigned __int16 v4; // ax int v5; // edi int v6; // esi int v7; // eax int v8; // esi unsigned __int16 *v9; // ecx __int16 *v10; // ecx __int16 v11; // ax unsigned __int16 *v12; // eax *a3 = 1; v3 = (unsigned __int16 *)a1[2]; if ( a1[3] <= (unsigned int)v3 ) v4 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v4 = *v3; v5 = 0; if ( v4 == 0xFFFF ) return v5; while ( 1 ) { while ( 1 ) { v8 = a1[3] - a1[2]; if ( v8 <= 2 ) break; v6 = v8 >> 1; v7 = (*(int (__thiscall **)(_DWORD *, _DWORD, int))(*a2 + 48))(a2, a1[2], v6); a1[2] += 2 * v7; v5 += v7; if ( v6 > v7 ) goto LABEL_17; LABEL_6: v4 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v4 == 0xFFFF ) return v5; } v9 = (unsigned __int16 *)a2[5]; if ( (unsigned int)v9 < a2[6] ) { *v9 = v4; a2[5] = v9 + 1; goto LABEL_10; } if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, v4) == 0xFFFF ) break; LABEL_10: v10 = (__int16 *)a1[2]; ++v5; if ( (unsigned int)v10 >= a1[3] ) { v11 = (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1); } else { v11 = *v10; a1[2] = v10 + 1; } if ( v11 == -1 ) return v5; v12 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v12 >= a1[3] ) goto LABEL_6; v4 = *v12; if ( v4 == 0xFFFF ) return v5; } LABEL_17: *a3 = 0; return v5; } //----- (004D1DD0) -------------------------------------------------------- int __cdecl std::__destroy_ios_failure(int (__fastcall ***a1)(_DWORD)) { return (**a1)(a1); } //----- (004D1DE0) -------------------------------------------------------- int __cdecl std::__verify_grouping_impl(const char *a1, unsigned int a2, const char *a3, unsigned int a4) { const char *v4; // ecx int v5; // eax unsigned int v6; // ebp unsigned int v7; // edx char v8; // bl char v9; // cl bool v10; // cl bool v11; // di char v12; // bl char v13; // dl char v15; // [esp+3h] [ebp-11h] unsigned __int8 v16; // [esp+3h] [ebp-11h] v4 = a3; v5 = a4 - 1; v6 = a2 - 1; if ( a2 - 1 > a4 - 1 ) v6 = a4 - 1; v7 = 0; if ( v6 ) { do { v8 = a3[v5--]; v9 = a1[v7++]; v15 = v9; v10 = v8 != v9; v11 = v10; } while ( v7 < v6 && !v10 ); v4 = a3; v16 = v8 == v15; } else { v16 = 1; v11 = 0; } v12 = a1[v6]; if ( v5 && !v11 ) { do v13 = v4[v5--]; while ( v5 && v13 == v12 ); v16 = v13 == v12; } if ( (unsigned __int8)(v12 - 1) <= 0x7Du ) v16 &= *v4 <= (unsigned __int8)v12; return v16; } //----- (004D1EB0) -------------------------------------------------------- void __cdecl std::__construct_ios_failure(void *a1, char *a2) { unsigned int *v2; // ecx int v3; // edx const std::string *v4; // [esp+4h] [ebp-28h] int v5; // [esp+1Ah] [ebp-12h] BYREF unsigned int *v6[4]; // [esp+1Ch] [ebp-10h] BYREF std::string::string(v6, a2, (int)&v5); std::ios_base::failure::failure((int)a1, v6, v4); if ( (_UNKNOWN *)v6[0] != &unk_4E93FC ) { v2 = v6[0] - 3; if ( _CRT_MT ) { v3 = _InterlockedExchangeAdd((volatile signed __int32 *)v6[0] - 1, 0xFFFFFFFF); } else { v3 = *(v6[0] - 1); *(v6[0] - 1) = v3 - 1; } if ( v3 <= 0 ) std::string::_Rep::_M_destroy(v2, (int)&v5 + 1); } } // 4D1ED8: variable 'v4' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004D1F30) -------------------------------------------------------- bool __cdecl std::__is_ios_failure_handler(const __cxxabiv1::__class_type_info *a1) { return std::type_info::operator==(a1, (int)&`typeinfo for'std::ios_base::failure); } // 4F1994: using guessed type int *`typeinfo for'std::ios_base::failure; //----- (004D1F50) -------------------------------------------------------- void __noreturn std::__throw_out_of_range_fmt(char *Str, ...) { size_t v1; // eax unsigned int v2; // edx int v3; // eax void *v4; // esp void *v5; // esp _DWORD *exception; // ebx const char *v7; // [esp+4h] [ebp-14h] char v8[8]; // [esp+10h] [ebp-8h] BYREF va_list va; // [esp+24h] [ebp+Ch] BYREF va_start(va, Str); v1 = strlen(Str); v2 = v1 + 512; v3 = 16 * ((v1 + 539) >> 4); v4 = alloca(v3); v5 = alloca(v3); __gnu_cxx::__snprintf_lite(v8, v2, Str, va); exception = __cxa_allocate_exception(8u); std::out_of_range::out_of_range(exception, (std::out_of_range *)v8, v7); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::out_of_range, (void (__cdecl *)(void *))std::out_of_range::~out_of_range); } // 4D1FAC: variable 'v7' is possibly undefined // 4F1AFC: using guessed type int *`typeinfo for'std::out_of_range; //----- (004D1FE0) -------------------------------------------------------- int *__cdecl std::_Rb_tree_rebalance_for_erase(int *a1, _DWORD *a2) { int *v2; // ebp int *v3; // edi int *v4; // eax int *v5; // ecx int *v6; // edx int *v7; // eax int *v8; // ebp int v9; // edi int v10; // edi int *v11; // ebp int v12; // edi int *v13; // edi int *v14; // ecx _DWORD *v15; // edi int *v16; // ecx int *v17; // ebp int v18; // edi int *v19; // edi _DWORD *v20; // edi int *v21; // ebp int v22; // ecx int v23; // ecx int v25; // ecx int *v26; // ecx int *v27; // ebp int *v28; // ecx int *v29; // edi _DWORD *v30; // edi int v31; // edi int v32; // edi int *v33; // ebp _DWORD *v34; // edi int v35; // ecx int v36; // ecx _DWORD *v37; // edi int v38; // edi int v39; // edi _DWORD *v40; // edi _DWORD *v41; // [esp+0h] [ebp-14h] _DWORD *v42; // [esp+0h] [ebp-14h] v2 = (int *)a1[2]; v3 = (int *)a1[3]; if ( !v2 ) goto LABEL_76; if ( !v3 ) { v7 = (int *)a1[1]; goto LABEL_56; } v4 = (int *)a1[3]; do { v5 = v4; v4 = (int *)v4[2]; } while ( v4 ); v6 = (int *)v5[3]; if ( v5 == a1 ) { v3 = (int *)v5[3]; LABEL_76: v7 = (int *)a1[1]; if ( !v3 ) { v6 = 0; goto LABEL_57; } v2 = v3; LABEL_56: v2[1] = (int)v7; v6 = v2; LABEL_57: if ( (int *)a2[1] == a1 ) { a2[1] = v6; } else { v25 = a1[1]; if ( *(int **)(v25 + 8) == a1 ) *(_DWORD *)(v25 + 8) = v6; else *(_DWORD *)(v25 + 12) = v6; } if ( (int *)a2[2] == a1 ) { v28 = v6; if ( a1[3] ) { do { v29 = v28; v28 = (int *)v28[2]; } while ( v28 ); a2[2] = v29; } else { a2[2] = a1[1]; } } v10 = *a1; if ( (int *)a2[3] == a1 ) { v26 = v6; if ( a1[2] ) { do { v27 = v26; v26 = (int *)v26[3]; } while ( v26 ); a2[3] = v27; } else { a2[3] = a1[1]; } } goto LABEL_14; } v2[1] = (int)v5; v7 = v3; v5[2] = (int)v2; if ( v5 != v3 ) { v7 = (int *)v5[1]; v8 = v7; if ( v6 ) { v6[1] = (int)v7; v8 = (int *)v5[1]; } v8[2] = (int)v6; v5[3] = (int)v3; *(_DWORD *)(a1[3] + 4) = v5; } if ( (int *)a2[1] == a1 ) { a2[1] = v5; v9 = a1[1]; } else { v9 = a1[1]; if ( *(int **)(v9 + 8) == a1 ) *(_DWORD *)(v9 + 8) = v5; else *(_DWORD *)(v9 + 12) = v5; } v5[1] = v9; v10 = *v5; *v5 = *a1; *a1 = v10; LABEL_14: if ( !v10 ) return a1; if ( (int *)a2[1] == v6 ) { LABEL_53: if ( v6 ) goto LABEL_68; return a1; } while ( 1 ) { if ( v6 && *v6 != 1 ) goto LABEL_68; v14 = (int *)v7[2]; if ( v14 != v6 ) break; v14 = (int *)v7[3]; v17 = (int *)v14[2]; if ( !*v14 ) { *v14 = 1; *v7 = 0; v7[3] = (int)v17; if ( v17 ) v17[1] = (int)v7; v18 = v7[1]; v14[1] = v18; if ( v7 == (int *)a2[1] ) { a2[1] = v14; v19 = (int *)v7[3]; } else if ( v7 == *(int **)(v18 + 8) ) { *(_DWORD *)(v18 + 8) = v14; v19 = v17; } else { *(_DWORD *)(v18 + 12) = v14; v19 = (int *)v7[3]; } v14[2] = (int)v7; v17 = (int *)v19[2]; v7[1] = (int)v14; v14 = v19; } if ( v17 && *v17 != 1 ) { v37 = (_DWORD *)v14[3]; v41 = v37; if ( !v37 || *v37 == 1 ) { v38 = v17[3]; *v17 = 1; *v14 = 0; v14[2] = v38; if ( v38 ) *(_DWORD *)(v38 + 4) = v14; v39 = v14[1]; v17[1] = v39; if ( v14 == (int *)a2[1] ) { a2[1] = v17; } else if ( v14 == *(int **)(v39 + 12) ) { *(_DWORD *)(v39 + 12) = v17; } else { *(_DWORD *)(v39 + 8) = v17; } v17[3] = (int)v14; v14[1] = (int)v17; v21 = (int *)v7[3]; v40 = (_DWORD *)v21[3]; *v21 = *v7; v41 = v40; *v7 = 1; if ( !v40 ) goto LABEL_47; goto LABEL_46; } LABEL_45: v21 = (int *)v7[3]; *v14 = *v7; *v7 = 1; LABEL_46: *v41 = 1; LABEL_47: v22 = v21[2]; v7[3] = v22; if ( v22 ) *(_DWORD *)(v22 + 4) = v7; v23 = v7[1]; v21[1] = v23; if ( v7 == (int *)a2[1] ) { a2[1] = v21; } else if ( v7 == *(int **)(v23 + 8) ) { *(_DWORD *)(v23 + 8) = v21; } else { *(_DWORD *)(v23 + 12) = v21; } v21[2] = (int)v7; v7[1] = (int)v21; goto LABEL_53; } v20 = (_DWORD *)v14[3]; if ( v20 && *v20 != 1 ) { v41 = (_DWORD *)v14[3]; goto LABEL_45; } LABEL_28: *v14 = 0; v16 = (int *)a2[1]; v6 = v7; if ( v7 == v16 ) goto LABEL_69; v7 = (int *)v7[1]; } v11 = (int *)v14[3]; if ( !*v14 ) { *v14 = 1; *v7 = 0; v7[2] = (int)v11; if ( v11 ) v11[1] = (int)v7; v12 = v7[1]; v14[1] = v12; if ( v7 == (int *)a2[1] ) { a2[1] = v14; v13 = (int *)v7[2]; } else if ( v7 == *(int **)(v12 + 12) ) { *(_DWORD *)(v12 + 12) = v14; v13 = v11; } else { *(_DWORD *)(v12 + 8) = v14; v13 = (int *)v7[2]; } v14[3] = (int)v7; v11 = (int *)v13[3]; v7[1] = (int)v14; v14 = v13; } if ( !v11 || *v11 == 1 ) { v15 = (_DWORD *)v14[2]; if ( v15 && *v15 != 1 ) { v42 = (_DWORD *)v14[2]; goto LABEL_90; } goto LABEL_28; } v30 = (_DWORD *)v14[2]; v42 = v30; if ( v30 && *v30 != 1 ) { LABEL_90: v33 = (int *)v7[2]; *v14 = *v7; *v7 = 1; goto LABEL_91; } v31 = v11[2]; *v11 = 1; *v14 = 0; v14[3] = v31; if ( v31 ) *(_DWORD *)(v31 + 4) = v14; v32 = v14[1]; v11[1] = v32; if ( v14 == (int *)a2[1] ) { a2[1] = v11; } else if ( v14 == *(int **)(v32 + 8) ) { *(_DWORD *)(v32 + 8) = v11; } else { *(_DWORD *)(v32 + 12) = v11; } v11[2] = (int)v14; v14[1] = (int)v11; v33 = (int *)v7[2]; v34 = (_DWORD *)v33[2]; *v33 = *v7; v42 = v34; *v7 = 1; if ( v34 ) LABEL_91: *v42 = 1; v35 = v33[3]; v7[2] = v35; if ( v35 ) *(_DWORD *)(v35 + 4) = v7; v36 = v7[1]; v33[1] = v36; if ( v7 == (int *)a2[1] ) { a2[1] = v33; } else if ( v7 == *(int **)(v36 + 12) ) { *(_DWORD *)(v36 + 12) = v33; } else { *(_DWORD *)(v36 + 8) = v33; } v33[3] = (int)v7; v7[1] = (int)v33; if ( !v6 ) return a1; LABEL_68: v16 = v6; LABEL_69: *v16 = 1; return a1; } //----- (004D24A0) -------------------------------------------------------- _DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char a1, _DWORD *a2, _DWORD *a3, _DWORD *a4) { _DWORD *v4; // ecx _DWORD *v5; // edi _DWORD *result; // eax _DWORD *v7; // edx _DWORD *v8; // eax _DWORD *v9; // ebx _DWORD *v10; // ebp int v11; // edx int v12; // ebx int v13; // ebx int v14; // edx int v15; // edx int v16; // edi int v17; // ebx _DWORD *v18; // ebx int v19; // ebx _DWORD *v20; // ebx _DWORD *v21; // edi v4 = a2; a2[1] = a3; a2[2] = 0; a2[3] = 0; *a2 = 0; if ( !a1 ) { a3[3] = a2; if ( (_DWORD *)a4[3] == a3 ) { v5 = (_DWORD *)a4[1]; a4[3] = a2; result = v5; LABEL_6: if ( a2 == v5 ) { LABEL_18: *result = 1; return result; } while ( 1 ) { while ( 1 ) { v7 = (_DWORD *)v4[1]; if ( *v7 ) goto LABEL_18; v8 = (_DWORD *)v7[1]; v9 = (_DWORD *)v8[2]; if ( v7 != v9 ) { if ( !v9 || *v9 ) { if ( (_DWORD *)v7[2] == v4 ) { v16 = v4[3]; v17 = v7[1]; v7[2] = v16; if ( v16 ) { *(_DWORD *)(v16 + 4) = v7; v17 = v7[1]; } v4[1] = v17; if ( v7 == (_DWORD *)a4[1] ) { a4[1] = v4; } else if ( v7 == *(_DWORD **)(v17 + 12) ) { *(_DWORD *)(v17 + 12) = v4; } else { *(_DWORD *)(v17 + 8) = v4; } v18 = v4; v4[3] = v7; v7[1] = v4; v4 = v7; v7 = v18; } *v7 = 1; v11 = v8[3]; *v8 = 0; v12 = *(_DWORD *)(v11 + 8); v8[3] = v12; if ( v12 ) *(_DWORD *)(v12 + 4) = v8; v13 = v8[1]; *(_DWORD *)(v11 + 4) = v13; if ( v8 == (_DWORD *)a4[1] ) { a4[1] = v11; } else if ( v8 == *(_DWORD **)(v13 + 8) ) { *(_DWORD *)(v13 + 8) = v11; } else { *(_DWORD *)(v13 + 12) = v11; } *(_DWORD *)(v11 + 8) = v8; v8[1] = v11; v5 = (_DWORD *)a4[1]; } else { *v7 = 1; v4 = v8; *v9 = 1; *v8 = 0; } goto LABEL_11; } v10 = (_DWORD *)v8[3]; if ( !v10 || *v10 ) break; v4 = (_DWORD *)v7[1]; *v7 = 1; *v10 = 1; *v8 = 0; result = v5; if ( v5 == v4 ) { LABEL_17: result = v4; goto LABEL_18; } } if ( (_DWORD *)v7[3] == v4 ) break; LABEL_29: *v7 = 1; v14 = v9[3]; *v8 = 0; v8[2] = v14; if ( v14 ) *(_DWORD *)(v14 + 4) = v8; v15 = v8[1]; v9[1] = v15; if ( v8 == (_DWORD *)a4[1] ) { a4[1] = v9; } else if ( v8 == *(_DWORD **)(v15 + 12) ) { *(_DWORD *)(v15 + 12) = v9; } else { *(_DWORD *)(v15 + 8) = v9; } v9[3] = v8; v8[1] = v9; v5 = (_DWORD *)a4[1]; LABEL_11: result = v5; if ( v5 == v4 ) goto LABEL_17; } v19 = v4[2]; v7[3] = v19; if ( v19 ) { *(_DWORD *)(v19 + 4) = v7; v20 = (_DWORD *)v7[1]; v4[1] = v20; if ( v7 != (_DWORD *)a4[1] ) { if ( v7 != (_DWORD *)v20[2] ) { v20[3] = v4; LABEL_48: v21 = v4; v4[2] = v7; v9 = (_DWORD *)v8[2]; v7[1] = v4; v4 = v7; v7 = v21; goto LABEL_29; } LABEL_54: v20[2] = v4; goto LABEL_48; } } else { v4[1] = v8; v20 = v8; if ( v7 != (_DWORD *)a4[1] ) goto LABEL_54; } a4[1] = v4; goto LABEL_48; } LABEL_5: v5 = (_DWORD *)a4[1]; result = v5; goto LABEL_6; } a3[2] = a2; if ( a4 != a3 ) { if ( (_DWORD *)a4[2] == a3 ) a4[2] = a2; goto LABEL_5; } result = a2; a4[1] = a2; a4[3] = a2; *a2 = 1; return result; } //----- (004D2740) -------------------------------------------------------- _DWORD *__cdecl std::ws>(_DWORD *a1) { _DWORD *v1; // esi _DWORD *v2; // edi _BYTE *v3; // eax unsigned int v4; // eax unsigned int v5; // edx const std::locale *v7; // [esp+4h] [ebp-28h] _DWORD *v8[4]; // [esp+1Ch] [ebp-10h] BYREF std::locale::locale( (volatile signed __int32 **)v8, (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), v7); v1 = std::use_facet>((int)v8); std::locale::~locale(v8); v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v3 = (_BYTE *)v2[2]; if ( v2[3] > (unsigned int)v3 ) goto LABEL_5; LABEL_11: v3 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); if ( v3 == (_BYTE *)-1 ) { LABEL_9: std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); } else { while ( (*(_BYTE *)(v1[6] + 2 * (unsigned __int8)v3) & 0x20) != 0 ) { v4 = v2[2]; v5 = v2[3]; if ( v4 < v5 ) { v3 = (_BYTE *)(v4 + 1); v2[2] = v3; } else { if ( (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2) == -1 ) goto LABEL_9; v3 = (_BYTE *)v2[2]; v5 = v2[3]; } if ( (unsigned int)v3 >= v5 ) goto LABEL_11; LABEL_5: LOBYTE(v3) = *v3; } } return a1; } // 4D275F: variable 'v7' is possibly undefined //----- (004D2810) -------------------------------------------------------- _DWORD *__cdecl std::ws>(_DWORD *a1) { void *v1; // edi _DWORD *v2; // ebx unsigned __int16 *v3; // eax __int16 v4; // ax unsigned __int16 i; // ax __int16 *v6; // edx const std::locale *v8; // [esp+Ch] [ebp-28h] _DWORD *v9[4]; // [esp+24h] [ebp-10h] BYREF std::locale::locale( (volatile signed __int32 **)v9, (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), v8); v1 = std::use_facet>((int)v9); std::locale::~locale(v9); v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v3 = (unsigned __int16 *)v2[2]; if ( v2[3] > (unsigned int)v3 ) goto LABEL_5; LABEL_12: for ( i = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); i != 0xFFFF; i = *v3 ) { if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v1 + 8))(v1, 32, i) ) return a1; v6 = (__int16 *)v2[2]; if ( (unsigned int)v6 < v2[3] ) { v4 = *v6; v2[2] = v6 + 1; if ( v4 == -1 ) break; } else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v2 + 40))(v2) == 0xFFFF ) { break; } v3 = (unsigned __int16 *)v2[2]; if ( (unsigned int)v3 >= v2[3] ) goto LABEL_12; LABEL_5: ; } std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); return a1; } // 4D282F: variable 'v8' is possibly undefined //----- (004D2900) -------------------------------------------------------- std::ios_base *__cdecl std::hex(std::ios_base *a1) { *((_DWORD *)a1 + 3) = *((_DWORD *)a1 + 3) & 0xFFFFFFB5 | 8; return a1; } //----- (004D2920) -------------------------------------------------------- _DWORD *__cdecl std::endl>(std::ostream::sentry *a1) { int v1; // eax _BYTE *v2; // ebx int v3; // eax std::ostream::sentry *v4; // eax int (__stdcall *v6)(unsigned __int8); // edx char v7; // [esp+4h] [ebp-18h] v1 = *(_DWORD *)(*(_DWORD *)a1 - 12); v2 = *(_BYTE **)((char *)a1 + v1 + 124); if ( !v2 ) std::__throw_bad_cast(); if ( v2[28] ) { v3 = (char)v2[39]; } else { std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v1 + 124)); v6 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v2 + 24); v3 = 10; if ( v6 != std::ctype::do_widen ) v3 = ((char (__thiscall *)(_BYTE *, int))v6)(v2, 10); } v4 = std::ostream::put(a1, (std::ostream *)v3, v7); return std::ostream::flush(v4); } // 4D2945: variable 'v7' is possibly undefined //----- (004D29A0) -------------------------------------------------------- _DWORD *__cdecl std::endl>(int *a1) { int v1; // ecx unsigned __int16 v2; // ax int *v3; // eax v1 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); if ( !v1 ) std::__throw_bad_cast(); v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v1 + 40))(v1, 10); v3 = std::wostream::put(a1, v2); return std::wostream::flush(v3); } //----- (004D29F0) -------------------------------------------------------- std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1) { char v2; // [esp+4h] [ebp-18h] return std::ostream::put(a1, 0, v2); } // 4D29FE: variable 'v2' is possibly undefined //----- (004D2A10) -------------------------------------------------------- int *__cdecl std::ends>(int *a1) { return std::wostream::put(a1, 0); } //----- (004D2A30) -------------------------------------------------------- _DWORD *__cdecl std::flush>(_DWORD *a1) { return std::ostream::flush(a1); } //----- (004D2A40) -------------------------------------------------------- _DWORD *__cdecl std::flush>(_DWORD *a1) { return std::wostream::flush(a1); } //----- (004D2A50) -------------------------------------------------------- std::istream::sentry *__cdecl std::getline,std::allocator>( std::istream::sentry *a1, _DWORD *a2) { int v2; // eax _BYTE *v3; // ebx unsigned __int8 v4; // al int (__stdcall *v6)(unsigned __int8); // edx v2 = *(_DWORD *)(*(_DWORD *)a1 - 12); v3 = *(_BYTE **)((char *)a1 + v2 + 124); if ( !v3 ) std::__throw_bad_cast(); if ( v3[28] ) { v4 = v3[39]; } else { std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v2 + 124)); v6 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); v4 = 10; if ( v6 != std::ctype::do_widen ) v4 = ((int (__thiscall *)(_BYTE *, int))v6)(v3, 10); } return std::getline,std::allocator>(a1, a2, v4); } //----- (004D2AD0) -------------------------------------------------------- std::istream::sentry *__cdecl std::getline,std::allocator>( std::istream::sentry *a1, _DWORD *a2, unsigned __int8 a3) { int v3; // edx _BYTE *v5; // eax _DWORD *v6; // esi unsigned __int8 *v7; // eax int v8; // eax _BYTE *v9; // eax signed int v10; // ebx unsigned __int8 *v11; // eax unsigned int v12; // ecx char *v13; // edx signed int v14; // ecx unsigned int v15; // ebx _BYTE *v16; // eax unsigned int v17; // edx _BYTE *v18; // eax unsigned int v19; // eax unsigned int v20; // edx bool v21; // [esp+8h] [ebp-50h] _BYTE *v22; // [esp+24h] [ebp-34h] char v23; // [esp+24h] [ebp-34h] size_t v24; // [esp+28h] [ebp-30h] unsigned int v25; // [esp+2Ch] [ebp-2Ch] unsigned int v26; // [esp+2Ch] [ebp-2Ch] char v27[25]; // [esp+3Fh] [ebp-19h] BYREF std::istream::sentry::sentry(v27, a1, (std::istream *)1, v21); if ( !v27[0] ) { LABEL_2: v3 = 4; LABEL_3: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v3); return a1; } v5 = (_BYTE *)*a2; a2[1] = 0; *v5 = 0; v6 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v7 = (unsigned __int8 *)v6[2]; if ( (unsigned int)v7 >= v6[3] ) v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); else v8 = *v7; v25 = 0; do { while ( 1 ) { if ( v8 == -1 ) { if ( !v25 ) { v3 = 6; goto LABEL_3; } LABEL_34: v3 = 2; goto LABEL_3; } v12 = v6[3]; v13 = (char *)v6[2]; if ( a3 == v8 ) goto LABEL_29; v14 = v12 - (_DWORD)v13; v10 = 0x3FFFFFFF - v25; if ( (int)(0x3FFFFFFF - v25) > v14 ) v10 = v14; v24 = a2[1]; if ( v10 <= 1 ) break; v22 = (_BYTE *)v6[2]; v9 = memchr(v13, (char)a3, v10); if ( v9 ) v10 = v9 - v22; if ( v10 > 0x3FFFFFFF - v24 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(a2, v22, v10); v25 += v10; v11 = (unsigned __int8 *)(v10 + v6[2]); v6[2] = v11; if ( v6[3] <= (unsigned int)v11 ) goto LABEL_25; LABEL_12: v8 = *v11; if ( v25 > 0x3FFFFFFE ) goto LABEL_26; } v23 = v8; v15 = v24 + 1; v16 = (_BYTE *)*a2; if ( (_DWORD *)*a2 == a2 + 2 ) v17 = 15; else v17 = a2[2]; if ( v15 > v17 ) { std::string::_M_mutate((int)a2, v24, 0, 0, 1u); v16 = (_BYTE *)*a2; } ++v25; v16[v24] = v23; v18 = (_BYTE *)*a2; a2[1] = v15; v18[v24 + 1] = 0; v19 = v6[2]; v20 = v6[3]; if ( v19 >= v20 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == -1 ) goto LABEL_34; v11 = (unsigned __int8 *)v6[2]; v20 = v6[3]; } else { v11 = (unsigned __int8 *)(v19 + 1); v6[2] = v11; } if ( v20 > (unsigned int)v11 ) goto LABEL_12; LABEL_25: v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); } while ( v25 <= 0x3FFFFFFE ); LABEL_26: if ( v8 == -1 ) goto LABEL_34; v3 = 4; if ( a3 != v8 ) goto LABEL_3; v13 = (char *)v6[2]; v12 = v6[3]; LABEL_29: v26 = v25 + 1; if ( v12 <= (unsigned int)v13 ) { (*(void (__fastcall **)(_DWORD *))(*v6 + 40))(v6); if ( v26 ) return a1; goto LABEL_2; } v6[2] = v13 + 1; if ( !v26 ) goto LABEL_2; return a1; } // 4D2D72: control flows out of bounds to 4DB323 // 4D2AF3: variable 'v21' is possibly undefined // 4DB31C: using guessed type int std::getline,std::allocator>(void); // 4D2AD0: using guessed type char var_19[25]; //----- (004D2D80) -------------------------------------------------------- _DWORD *__cdecl std::getline,std::allocator>(_DWORD *a1, int a2, wchar_t a3) { int v3; // eax _DWORD *v5; // ebx wchar_t *v6; // eax wchar_t v7; // si unsigned int v8; // esi wchar_t *v9; // eax wchar_t *v10; // edx wchar_t *v11; // eax const wchar_t *v12; // edx int v13; // eax size_t v14; // edi const wchar_t *v15; // eax unsigned int v16; // ecx wchar_t v17; // ax unsigned int v18; // [esp+24h] [ebp-34h] unsigned int v19; // [esp+2Ch] [ebp-2Ch] unsigned int v20; // [esp+2Ch] [ebp-2Ch] char v21[25]; // [esp+3Fh] [ebp-19h] BYREF std::wistream::sentry::sentry(v21, a1, 1); if ( !v21[0] ) { LABEL_2: v3 = 4; LABEL_3: std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v3); return a1; } *(_DWORD *)(a2 + 4) = 0; **(_WORD **)a2 = 0; v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v6 = (wchar_t *)v5[2]; if ( (unsigned int)v6 >= v5[3] ) v7 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); else v7 = *v6; v19 = 0; do { while ( 1 ) { if ( v7 == 0xFFFF ) { if ( !v19 ) { v3 = 6; goto LABEL_3; } LABEL_34: v3 = 2; goto LABEL_3; } v12 = (const wchar_t *)v5[2]; v18 = v5[3]; if ( a3 == v7 ) goto LABEL_29; v13 = (v5[3] - (int)v12) >> 1; if ( v13 > (int)(0x1FFFFFFF - v19) ) v13 = 0x1FFFFFFF - v19; if ( v13 <= 1 ) break; v8 = v13; v9 = wmemchr(v12, a3, v13); v10 = (wchar_t *)v5[2]; if ( v9 ) v8 = v9 - v10; if ( 0x1FFFFFFF - *(_DWORD *)(a2 + 4) < v8 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(a2, v10, v8); v19 += v8; v11 = (wchar_t *)(v5[2] + 2 * v8); v5[2] = v11; if ( v5[3] <= (unsigned int)v11 ) goto LABEL_25; LABEL_12: v7 = *v11; if ( v19 > 0x1FFFFFFE ) goto LABEL_26; } v14 = *(_DWORD *)(a2 + 4); v15 = *(const wchar_t **)a2; if ( *(_DWORD *)a2 == a2 + 8 ) v16 = 7; else v16 = *(_DWORD *)(a2 + 8); if ( v14 + 1 > v16 ) { std::wstring::_M_mutate((const wchar_t **)a2, v14, 0, 0, 1u); v12 = (const wchar_t *)v5[2]; v18 = v5[3]; v15 = *(const wchar_t **)a2; } v15[v14] = v7; ++v19; *(_DWORD *)(a2 + 4) = v14 + 1; v15[v14 + 1] = 0; if ( v18 <= (unsigned int)v12 ) { if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v5 + 40))(v5) == 0xFFFF ) goto LABEL_34; } else { v17 = *v12; v5[2] = v12 + 1; if ( v17 == 0xFFFF ) goto LABEL_34; } v11 = (wchar_t *)v5[2]; if ( (unsigned int)v11 < v5[3] ) goto LABEL_12; LABEL_25: v7 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); } while ( v19 <= 0x1FFFFFFE ); LABEL_26: if ( v7 == 0xFFFF ) goto LABEL_34; v3 = 4; if ( v7 != a3 ) goto LABEL_3; v12 = (const wchar_t *)v5[2]; v18 = v5[3]; LABEL_29: v20 = v19 + 1; if ( v18 <= (unsigned int)v12 ) { (*(void (__fastcall **)(_DWORD *))(*v5 + 40))(v5); if ( v20 ) return a1; goto LABEL_2; } v5[2] = v12 + 1; if ( !v20 ) goto LABEL_2; return a1; } // 4D3059: control flows out of bounds to 4DB3A7 // 4DB3A0: using guessed type int std::getline,std::allocator>(void); // 4D2D80: using guessed type char var_19[25]; //----- (004D3070) -------------------------------------------------------- int __cdecl std::setfill(unsigned __int8 a1) { return a1; } //----- (004D3080) -------------------------------------------------------- int __cdecl std::setfill(unsigned __int16 a1) { return a1; } //----- (004D3090) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0) != 0; } return v2; } // 4D30D9: variable 'v2' is possibly undefined // 4E9588: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1738: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D30E0) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0) != 0; } return v2; } // 4D3129: variable 'v2' is possibly undefined // 4E9590: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1778: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D3130) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::collate::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::collate, 0) != 0; } return v2; } // 4D3179: variable 'v2' is possibly undefined // 4E9598: using guessed type int std::collate::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F18A8: using guessed type int *`typeinfo for'std::collate; //----- (004D3180) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::collate::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::collate, 0) != 0; } return v2; } // 4D31C9: variable 'v2' is possibly undefined // 4E959C: using guessed type int std::collate::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F18B4: using guessed type int *`typeinfo for'std::collate; //----- (004D31D0) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::messages::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::messages, 0) != 0; } return v2; } // 4D3219: variable 'v2' is possibly undefined // 4E95A0: using guessed type int std::messages::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F18C0: using guessed type int *`typeinfo for'std::messages; //----- (004D3220) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::messages::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::messages, 0) != 0; } return v2; } // 4D3269: variable 'v2' is possibly undefined // 4E95A4: using guessed type int std::messages::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F18E0: using guessed type int *`typeinfo for'std::messages; //----- (004D3270) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::numpunct::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::numpunct, 0) != 0; } return v2; } // 4D32B9: variable 'v2' is possibly undefined // 4E95A8: using guessed type int std::numpunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1900: using guessed type int *`typeinfo for'std::numpunct; //----- (004D32C0) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::numpunct::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::numpunct, 0) != 0; } return v2; } // 4D3309: variable 'v2' is possibly undefined // 4E95AC: using guessed type int std::numpunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F190C: using guessed type int *`typeinfo for'std::numpunct; //----- (004D3310) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::time_get>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_get>, 0) != 0; } return v2; } // 4D3359: variable 'v2' is possibly undefined // 4E95B0: using guessed type int std::time_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1918: using guessed type int *`typeinfo for'std::time_get>; //----- (004D3360) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::time_get>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_get>, 0) != 0; } return v2; } // 4D33A9: variable 'v2' is possibly undefined // 4E95B4: using guessed type int std::time_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1938: using guessed type int *`typeinfo for'std::time_get>; //----- (004D33B0) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::money_get>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_get>, 0) != 0; } return v2; } // 4D33F9: variable 'v2' is possibly undefined // 4E95B8: using guessed type int std::money_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1958: using guessed type int *`typeinfo for'std::money_get>; //----- (004D3400) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::money_get>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_get>, 0) != 0; } return v2; } // 4D3449: variable 'v2' is possibly undefined // 4E95BC: using guessed type int std::money_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1964: using guessed type int *`typeinfo for'std::money_get>; //----- (004D3450) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::money_put>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_put>, 0) != 0; } return v2; } // 4D3499: variable 'v2' is possibly undefined // 4E95C0: using guessed type int std::money_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1970: using guessed type int *`typeinfo for'std::money_put>; //----- (004D34A0) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::money_put>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_put>, 0) != 0; } return v2; } // 4D34E9: variable 'v2' is possibly undefined // 4E95C4: using guessed type int std::money_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F197C: using guessed type int *`typeinfo for'std::money_put>; //----- (004D34F0) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0) != 0; } return v2; } // 4D3539: variable 'v2' is possibly undefined // 4E940C: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1A0C: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D3540) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0) != 0; } return v2; } // 4D3589: variable 'v2' is possibly undefined // 4E9414: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1A4C: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D3590) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::__timepunct::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::__timepunct, 0) != 0; } return v2; } // 4D35D9: variable 'v2' is possibly undefined // 4E941C: using guessed type int std::__timepunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1A94: using guessed type int *`typeinfo for'std::__timepunct; //----- (004D35E0) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::__timepunct::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::__timepunct, 0) != 0; } return v2; } // 4D3629: variable 'v2' is possibly undefined // 4E9420: using guessed type int std::__timepunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1AA0: using guessed type int *`typeinfo for'std::__timepunct; //----- (004D3630) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::ctype::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::ctype, 0) != 0; } return v2; } // 4D3679: variable 'v2' is possibly undefined // 4E9560: using guessed type int std::ctype::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1F28: using guessed type int *`typeinfo for'std::ctype; //----- (004D3680) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::ctype::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::ctype, 0) != 0; } return v2; } // 4D36C9: variable 'v2' is possibly undefined // 4E9564: using guessed type int std::ctype::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1F48: using guessed type int *`typeinfo for'std::ctype; //----- (004D36D0) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::codecvt::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::codecvt, 0) != 0; } return v2; } // 4D3719: variable 'v2' is possibly undefined // 4E95D8: using guessed type int std::codecvt::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1F84: using guessed type int *`typeinfo for'std::codecvt; //----- (004D3720) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::codecvt::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::codecvt, 0) != 0; } return v2; } // 4D3769: variable 'v2' is possibly undefined // 4E95DC: using guessed type int std::codecvt::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1F90: using guessed type int *`typeinfo for'std::codecvt; //----- (004D3770) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::collate::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::collate, 0) != 0; } return v2; } // 4D37B9: variable 'v2' is possibly undefined // 4E95E0: using guessed type int std::collate::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1F9C: using guessed type int *`typeinfo for'std::collate; //----- (004D37C0) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::collate::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::collate, 0) != 0; } return v2; } // 4D3809: variable 'v2' is possibly undefined // 4E95E4: using guessed type int std::collate::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FA8: using guessed type int *`typeinfo for'std::collate; //----- (004D3810) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::num_get>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::num_get>, 0) != 0; } return v2; } // 4D3859: variable 'v2' is possibly undefined // 4E95E8: using guessed type int std::num_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FB4: using guessed type int *`typeinfo for'std::num_get>; //----- (004D3860) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::num_get>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::num_get>, 0) != 0; } return v2; } // 4D38A9: variable 'v2' is possibly undefined // 4E95EC: using guessed type int std::num_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FC0: using guessed type int *`typeinfo for'std::num_get>; //----- (004D38B0) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::num_put>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::num_put>, 0) != 0; } return v2; } // 4D38F9: variable 'v2' is possibly undefined // 4E95F0: using guessed type int std::num_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FCC: using guessed type int *`typeinfo for'std::num_put>; //----- (004D3900) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::num_put>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::num_put>, 0) != 0; } return v2; } // 4D3949: variable 'v2' is possibly undefined // 4E95F4: using guessed type int std::num_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FD8: using guessed type int *`typeinfo for'std::num_put>; //----- (004D3950) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::messages::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::messages, 0) != 0; } return v2; } // 4D3999: variable 'v2' is possibly undefined // 4E9600: using guessed type int std::messages::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FF8: using guessed type int *`typeinfo for'std::messages; //----- (004D39A0) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::messages::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::messages, 0) != 0; } return v2; } // 4D39E9: variable 'v2' is possibly undefined // 4E9604: using guessed type int std::messages::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2018: using guessed type int *`typeinfo for'std::messages; //----- (004D39F0) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::numpunct::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::numpunct, 0) != 0; } return v2; } // 4D3A39: variable 'v2' is possibly undefined // 4E9608: using guessed type int std::numpunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2038: using guessed type int *`typeinfo for'std::numpunct; //----- (004D3A40) -------------------------------------------------------- int __cdecl std::has_facet>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::numpunct::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::numpunct, 0) != 0; } return v2; } // 4D3A89: variable 'v2' is possibly undefined // 4E960C: using guessed type int std::numpunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2044: using guessed type int *`typeinfo for'std::numpunct; //----- (004D3A90) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::time_get>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_get>, 0) != 0; } return v2; } // 4D3AD9: variable 'v2' is possibly undefined // 4E9610: using guessed type int std::time_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2050: using guessed type int *`typeinfo for'std::time_get>; //----- (004D3AE0) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::time_get>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_get>, 0) != 0; } return v2; } // 4D3B29: variable 'v2' is possibly undefined // 4E9614: using guessed type int std::time_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2070: using guessed type int *`typeinfo for'std::time_get>; //----- (004D3B30) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::time_put>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_put>, 0) != 0; } return v2; } // 4D3B79: variable 'v2' is possibly undefined // 4E9618: using guessed type int std::time_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2090: using guessed type int *`typeinfo for'std::time_put>; //----- (004D3B80) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::time_put>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_put>, 0) != 0; } return v2; } // 4D3BC9: variable 'v2' is possibly undefined // 4E961C: using guessed type int std::time_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F209C: using guessed type int *`typeinfo for'std::time_put>; //----- (004D3BD0) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::money_get>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_get>, 0) != 0; } return v2; } // 4D3C19: variable 'v2' is possibly undefined // 4E9620: using guessed type int std::money_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F20D4: using guessed type int *`typeinfo for'std::money_get>; //----- (004D3C20) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::money_get>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_get>, 0) != 0; } return v2; } // 4D3C69: variable 'v2' is possibly undefined // 4E9624: using guessed type int std::money_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F20E0: using guessed type int *`typeinfo for'std::money_get>; //----- (004D3C70) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(&std::money_put>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_put>, 0) != 0; } return v2; } // 4D3CB9: variable 'v2' is possibly undefined // 4E9628: using guessed type int std::money_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F20EC: using guessed type int *`typeinfo for'std::money_put>; //----- (004D3CC0) -------------------------------------------------------- int __cdecl std::has_facet>>(int a1) { unsigned int v1; // eax int v2; // ecx const void *lpsrc; // eax v1 = std::locale::id::_M_id(std::money_put>::id); v2 = 0; if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) { lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); if ( lpsrc ) LOBYTE(v2) = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_put>, 0) != 0; } return v2; } // 4D3D09: variable 'v2' is possibly undefined // 4E962C: using guessed type int std::money_put>::id[5]; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F20F8: using guessed type int *`typeinfo for'std::money_put>; //----- (004D3D10) -------------------------------------------------------- void __noreturn std::terminate(void) { __cxxabiv1::__terminate(__cxxabiv1::__terminate_handler); } //----- (004D3D20) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9588: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1738: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D3D80) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E958C: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1758: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D3DE0) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9590: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1778: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D3E40) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9594: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1798: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D3EA0) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::collate::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::collate, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9598: using guessed type int std::collate::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F18A8: using guessed type int *`typeinfo for'std::collate; //----- (004D3F00) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::collate::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::collate, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E959C: using guessed type int std::collate::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F18B4: using guessed type int *`typeinfo for'std::collate; //----- (004D3F60) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::messages::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::messages, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95A0: using guessed type int std::messages::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F18C0: using guessed type int *`typeinfo for'std::messages; //----- (004D3FC0) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::messages::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::messages, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95A4: using guessed type int std::messages::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F18E0: using guessed type int *`typeinfo for'std::messages; //----- (004D4020) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::numpunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::numpunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95A8: using guessed type int std::numpunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1900: using guessed type int *`typeinfo for'std::numpunct; //----- (004D4080) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::numpunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::numpunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95AC: using guessed type int std::numpunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F190C: using guessed type int *`typeinfo for'std::numpunct; //----- (004D40E0) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::time_get>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_get>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95B0: using guessed type int std::time_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1918: using guessed type int *`typeinfo for'std::time_get>; //----- (004D4140) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::time_get>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_get>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95B4: using guessed type int std::time_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1938: using guessed type int *`typeinfo for'std::time_get>; //----- (004D41A0) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::money_get>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_get>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95B8: using guessed type int std::money_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1958: using guessed type int *`typeinfo for'std::money_get>; //----- (004D4200) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::money_get>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_get>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95BC: using guessed type int std::money_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1964: using guessed type int *`typeinfo for'std::money_get>; //----- (004D4260) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::money_put>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_put>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95C0: using guessed type int std::money_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1970: using guessed type int *`typeinfo for'std::money_put>; //----- (004D42C0) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::money_put>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_put>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95C4: using guessed type int std::money_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F197C: using guessed type int *`typeinfo for'std::money_put>; //----- (004D4320) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E940C: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1A0C: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D4380) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9410: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1A2C: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D43E0) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9414: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1A4C: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D4440) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::moneypunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::moneypunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9418: using guessed type int std::moneypunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1A6C: using guessed type int *`typeinfo for'std::moneypunct; //----- (004D44A0) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::__timepunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::__timepunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E941C: using guessed type int std::__timepunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1A94: using guessed type int *`typeinfo for'std::__timepunct; //----- (004D4500) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::__timepunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::__timepunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9420: using guessed type int std::__timepunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1AA0: using guessed type int *`typeinfo for'std::__timepunct; //----- (004D4560) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::ctype::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::ctype, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9560: using guessed type int std::ctype::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1F28: using guessed type int *`typeinfo for'std::ctype; //----- (004D45C0) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::ctype::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::ctype, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9564: using guessed type int std::ctype::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1F48: using guessed type int *`typeinfo for'std::ctype; //----- (004D4620) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::codecvt::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::codecvt, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95D8: using guessed type int std::codecvt::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1F84: using guessed type int *`typeinfo for'std::codecvt; //----- (004D4680) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::codecvt::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::codecvt, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95DC: using guessed type int std::codecvt::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1F90: using guessed type int *`typeinfo for'std::codecvt; //----- (004D46E0) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::collate::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::collate, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95E0: using guessed type int std::collate::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1F9C: using guessed type int *`typeinfo for'std::collate; //----- (004D4740) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::collate::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::collate, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95E4: using guessed type int std::collate::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FA8: using guessed type int *`typeinfo for'std::collate; //----- (004D47A0) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::num_get>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::num_get>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95E8: using guessed type int std::num_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FB4: using guessed type int *`typeinfo for'std::num_get>; //----- (004D4800) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::num_get>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::num_get>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95EC: using guessed type int std::num_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FC0: using guessed type int *`typeinfo for'std::num_get>; //----- (004D4860) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::num_put>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::num_put>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95F0: using guessed type int std::num_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FCC: using guessed type int *`typeinfo for'std::num_put>; //----- (004D48C0) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::num_put>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::num_put>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E95F4: using guessed type int std::num_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FD8: using guessed type int *`typeinfo for'std::num_put>; //----- (004D4920) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::messages::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::messages, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9600: using guessed type int std::messages::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F1FF8: using guessed type int *`typeinfo for'std::messages; //----- (004D4980) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::messages::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::messages, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9604: using guessed type int std::messages::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2018: using guessed type int *`typeinfo for'std::messages; //----- (004D49E0) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::numpunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::numpunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9608: using guessed type int std::numpunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2038: using guessed type int *`typeinfo for'std::numpunct; //----- (004D4A40) -------------------------------------------------------- void *__cdecl std::use_facet>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::numpunct::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::numpunct, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E960C: using guessed type int std::numpunct::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2044: using guessed type int *`typeinfo for'std::numpunct; //----- (004D4AA0) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::time_get>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_get>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9610: using guessed type int std::time_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2050: using guessed type int *`typeinfo for'std::time_get>; //----- (004D4B00) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::time_get>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_get>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9614: using guessed type int std::time_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2070: using guessed type int *`typeinfo for'std::time_get>; //----- (004D4B60) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::time_put>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_put>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9618: using guessed type int std::time_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F2090: using guessed type int *`typeinfo for'std::time_put>; //----- (004D4BC0) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::time_put>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::time_put>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E961C: using guessed type int std::time_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F209C: using guessed type int *`typeinfo for'std::time_put>; //----- (004D4C20) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::money_get>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_get>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9620: using guessed type int std::money_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F20D4: using guessed type int *`typeinfo for'std::money_get>; //----- (004D4C80) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::money_get>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_get>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9624: using guessed type int std::money_get>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F20E0: using guessed type int *`typeinfo for'std::money_get>; //----- (004D4CE0) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(&std::money_put>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_put>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E9628: using guessed type int std::money_put>::id; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F20EC: using guessed type int *`typeinfo for'std::money_put>; //----- (004D4D40) -------------------------------------------------------- void *__cdecl std::use_facet>>(int a1) { unsigned int v1; // eax const void *lpsrc; // eax void *result; // eax v1 = std::locale::id::_M_id(std::money_put>::id); if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) std::__throw_bad_cast(); result = __dynamic_cast( lpsrc, (const struct __class_type_info *)&`typeinfo for'std::locale::facet, (const struct __class_type_info *)&`typeinfo for'std::money_put>, 0); if ( !result ) __cxa_bad_cast(); return result; } // 4E962C: using guessed type int std::money_put>::id[5]; // 4F1730: using guessed type int *`typeinfo for'std::locale::facet; // 4F20F8: using guessed type int *`typeinfo for'std::money_put>; //----- (004D4DA0) -------------------------------------------------------- int __usercall std::local_Rb_tree_decrement@(_DWORD *a1@) { int v2; // edx int result; // eax int v4; // edx if ( !*a1 && *(_DWORD **)(a1[1] + 4) == a1 ) return a1[3]; v2 = a1[2]; if ( v2 ) { do { result = v2; v2 = *(_DWORD *)(v2 + 12); } while ( v2 ); } else { result = a1[1]; if ( a1 == *(_DWORD **)(result + 8) ) { do { v4 = result; result = *(_DWORD *)(result + 4); } while ( *(_DWORD *)(result + 8) == v4 ); } } return result; } //----- (004D4E00) -------------------------------------------------------- bool __cdecl std::operator==(int a1, int a2) { bool result; // al int v3; // edx result = 0; v3 = *(_DWORD *)(a1 + 4); if ( v3 == *(_DWORD *)(a2 + 4) ) { result = 1; if ( v3 ) return memcmp(*(const void **)a1, *(const void **)a2, *(_DWORD *)(a1 + 4)) == 0; } return result; } //----- (004D4E3C) -------------------------------------------------------- bool __cdecl std::operator==(int a1, char *a2) { return std::string::compare(a1, a2) == 0; } //----- (004D4E60) -------------------------------------------------------- std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) { int v2; // eax if ( Str ) { v2 = strlen(Str); std::__ostream_insert>(a1, (int)Str, v2); } else { std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); } return a1; } //----- (004D4EC0) -------------------------------------------------------- std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) { int v2; // eax if ( Str ) { v2 = strlen(Str); std::__ostream_insert>(a1, (int)Str, v2); } else { std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); } return a1; } //----- (004D4F20) -------------------------------------------------------- std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) { int v2; // eax if ( Str ) { v2 = strlen(Str); std::__ostream_insert>(a1, (int)Str, v2); } else { std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); } return a1; } //----- (004D4F80) -------------------------------------------------------- std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) { int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF LOBYTE(v3[0]) = a2; return std::__ostream_insert>(a1, (int)v3, 1); } // 4D4F80: using guessed type int var_D[3]; //----- (004D4FB0) -------------------------------------------------------- std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) { int v3[4]; // [esp+1Ch] [ebp-10h] BYREF LOBYTE(v3[0]) = a2; return std::__ostream_insert>(a1, (int)v3, 1); } // 4D4FB0: using guessed type int var_10[4]; //----- (004D4FE0) -------------------------------------------------------- std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) { int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF LOBYTE(v3[0]) = a2; return std::__ostream_insert>(a1, (int)v3, 1); } // 4D4FE0: using guessed type int var_D[3]; //----- (004D5010) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (004D5030) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (004D5050) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (004D5070) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (004D5090) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { int v2; // ecx v2 = 64; if ( a2 != 8 ) { v2 = 2; if ( a2 != 10 ) v2 = 8 * (a2 == 16); } *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; return a1; } //----- (004D50D0) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, char a2) { char *v2; // esi _BYTE *v4; // edi int (__stdcall *v5)(unsigned __int8); // eax v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); if ( !v2[117] ) { v4 = (_BYTE *)*((_DWORD *)v2 + 31); if ( !v4 ) std::__throw_bad_cast(); if ( !v4[28] ) { std::ctype::_M_widen_init(*((_DWORD *)v2 + 31)); v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); if ( v5 != std::ctype::do_widen ) ((void (__thiscall *)(_BYTE *, int))v5)(v4, 32); } v2[117] = 1; } v2[116] = a2; return a1; } //----- (004D5140) -------------------------------------------------------- std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2) { return std::__ostream_insert>(a1, *a2, a2[1]); } //----- (004D5170) -------------------------------------------------------- int *__cdecl std::operator<<>(int *a1, wchar_t *String) { int v2; // eax if ( String ) { v2 = wcslen(String); std::__ostream_insert>(a1, (int)String, v2); } else { std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); } return a1; } //----- (004D51D0) -------------------------------------------------------- int *__cdecl std::operator<<>(int *a1, char *Str) { char *v2; // ebx size_t v3; // eax _WORD *v4; // esi int v5; // ecx int v7; // [esp+14h] [ebp-24h] _WORD *v8; // [esp+18h] [ebp-20h] v2 = Str; if ( Str ) { v3 = strlen(Str); if ( v3 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v7 = v3; v8 = (_WORD *)operator new[](2 * v3); v4 = v8; if ( v7 ) { do { v5 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); if ( !v5 ) std::__throw_bad_cast(); *v4++ = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 40))(v5, *v2++); } while ( &Str[v7] != v2 ); } std::__ostream_insert>(a1, (int)v8, v7); operator delete[](v8); return a1; } else { std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); return a1; } } //----- (004D5330) -------------------------------------------------------- int *__cdecl std::operator<<>(int *a1, __int16 a2) { __int16 v3[8]; // [esp+1Ch] [ebp-10h] BYREF v3[0] = a2; return std::__ostream_insert>(a1, (int)v3, 1); } // 4D5330: using guessed type __int16 var_10[8]; //----- (004D5360) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (004D5380) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (004D53A0) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (004D53C0) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (004D53E0) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { int v2; // ecx v2 = 64; if ( a2 != 8 ) { v2 = 2; if ( a2 != 10 ) v2 = 8 * (a2 == 16); } *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; return a1; } //----- (004D5420) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, __int16 a2) { char *v2; // esi int v4; // ecx v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); if ( !v2[118] ) { v4 = *((_DWORD *)v2 + 31); if ( !v4 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); v2[118] = 1; } *((_WORD *)v2 + 58) = a2; return a1; } //----- (004D5480) -------------------------------------------------------- int *__cdecl std::operator<<>(int *a1, char a2) { int v2; // ecx __int16 v4[7]; // [esp+22h] [ebp-Eh] BYREF v2 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); if ( !v2 ) std::__throw_bad_cast(); v4[0] = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 40))(v2, a2); return std::__ostream_insert>(a1, (int)v4, 1); } // 4D5480: using guessed type __int16 var_E[7]; //----- (004D54D0) -------------------------------------------------------- unsigned int __cdecl std::operator<(int a1, int a2) { return (unsigned int)std::string::compare(a1, a2) >> 31; } //----- (004D54EC) -------------------------------------------------------- int __cdecl std::operator+(int a1, char *a2, int a3) { unsigned int v3; // kr04_4 v3 = strlen(a2) + 1; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; std::string::reserve((_DWORD *)a1, v3 - 1 + *(_DWORD *)(a3 + 4)); std::string::append((_DWORD *)a1, a2, v3 - 1); std::string::append((_DWORD *)a1, a3); return a1; } //----- (004D5570) -------------------------------------------------------- _DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3) { int v4; // [esp+8h] [ebp-20h] *a1 = a1 + 2; LOBYTE(v4) = 0; std::string::_M_construct(a1, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v4); std::string::_M_append(a1, *(_BYTE **)a3, *(_DWORD *)(a3 + 4)); return a1; } // 4D559C: variable 'v4' is possibly undefined //----- (004D55E0) -------------------------------------------------------- int __cdecl std::operator+(int a1, char a2, int a3) { *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; std::string::reserve((_DWORD *)a1, *(_DWORD *)(a3 + 4) + 1); std::string::_M_replace_aux((_DWORD *)a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); std::string::_M_append((_DWORD *)a1, *(_BYTE **)a3, *(_DWORD *)(a3 + 4)); return a1; } //----- (004D5680) -------------------------------------------------------- unsigned int **__cdecl std::operator+(unsigned int **a1, char *Str, std::string *a3) { size_t v3; // eax size_t v4; // esi unsigned int v6; // [esp+4h] [ebp-24h] const std::string *v7; // [esp+4h] [ebp-24h] unsigned int v8; // [esp+8h] [ebp-20h] v3 = strlen(Str); *a1 = (unsigned int *)&unk_4E93FC; v4 = v3; std::string::reserve(a1, (std::string *)(v3 + *(_DWORD *)(*(_DWORD *)a3 - 12)), v6); std::string::append(a1, (std::string *)Str, v4, v8); std::string::append(a1, a3, v7); return a1; } // 4D56AE: variable 'v6' is possibly undefined // 4D56C2: variable 'v8' is possibly undefined // 4D56CF: variable 'v7' is possibly undefined //----- (004D5700) -------------------------------------------------------- unsigned int **__cdecl std::operator+(unsigned int **a1, unsigned int **a2, std::string *a3) { unsigned int *v3; // eax unsigned int *v4; // ecx const std::string *v6; // [esp+4h] [ebp-24h] char v7[9]; // [esp+1Fh] [ebp-9h] BYREF v3 = *a2; v4 = *a2 - 3; if ( (*(*a2 - 1) & 0x80000000) != 0 ) { v3 = std::string::_Rep::_M_clone((int)v4, (int)v7, 0); } else if ( v4 != &std::string::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)v3 - 1, 1u); else ++*(v3 - 1); } *a1 = v3; std::string::append(a1, a3, v6); return a1; } // 4D572C: variable 'v6' is possibly undefined // 15412D0: using guessed type int _CRT_MT; // 4D5700: using guessed type char var_9[9]; //----- (004D57A0) -------------------------------------------------------- unsigned int **__cdecl std::operator+(unsigned int **a1, char a2, std::string *a3) { unsigned int v4; // [esp+4h] [ebp-24h] const std::string *v5; // [esp+4h] [ebp-24h] *a1 = (unsigned int *)&unk_4E93FC; std::string::reserve(a1, (std::string *)(*(_DWORD *)(*(_DWORD *)a3 - 12) + 1), v4); std::string::append(a1, 1u, a2); std::string::append(a1, a3, v5); return a1; } // 4D57C5: variable 'v4' is possibly undefined // 4D57EC: variable 'v5' is possibly undefined //----- (004D5820) -------------------------------------------------------- int __cdecl std::operator+(int a1, wchar_t *String, int a3) { size_t v3; // eax size_t v4; // esi v3 = wcslen(String); *(_DWORD *)(a1 + 4) = 0; v4 = v3; *(_DWORD *)a1 = a1 + 8; *(_WORD *)(a1 + 8) = 0; std::wstring::reserve(a1, v3 + *(_DWORD *)(a3 + 4)); if ( v4 > 0x1FFFFFFF - *(_DWORD *)(a1 + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(a1, String, v4); std::wstring::_M_append(a1, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); return a1; } //----- (004D58D0) -------------------------------------------------------- wchar_t **__cdecl std::operator+(wchar_t **a1, int a2, int a3) { int v4; // [esp+8h] [ebp-20h] *a1 = (wchar_t *)(a1 + 2); LOBYTE(v4) = 0; std::wstring::_M_construct(a1, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v4); std::wstring::_M_append((int)a1, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); return a1; } // 4D58FD: variable 'v4' is possibly undefined //----- (004D5940) -------------------------------------------------------- int __cdecl std::operator+(int a1, wchar_t a2, int a3) { *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_WORD *)(a1 + 8) = 0; std::wstring::reserve(a1, *(_DWORD *)(a3 + 4) + 1); std::wstring::_M_replace_aux(a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); std::wstring::_M_append(a1, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); return a1; } //----- (004D59E0) -------------------------------------------------------- void **__cdecl std::operator+(void **a1, wchar_t *String, const wchar_t **a3) { size_t v3; // eax size_t v4; // esi v3 = wcslen(String); *a1 = &unk_4E93EC; v4 = v3; std::wstring::reserve(a1, (char *)(v3 + *((_DWORD *)*a3 - 3))); std::wstring::append(a1, String, v4); std::wstring::append(a1, a3); return a1; } //----- (004D5A60) -------------------------------------------------------- void **__cdecl std::operator+(void **a1, _DWORD *a2, const wchar_t **a3) { _DWORD *v3; // eax void *v4; // ecx char v6[9]; // [esp+1Fh] [ebp-9h] BYREF v3 = (_DWORD *)*a2; v4 = (void *)(*a2 - 12); if ( *(int *)(*a2 - 4) < 0 ) { v3 = std::wstring::_Rep::_M_clone((int)v4, (int)v6, 0); } else if ( v4 != &std::wstring::_Rep::_S_empty_rep_storage ) { if ( _CRT_MT ) _InterlockedAdd(v3 - 1, 1u); else ++*(v3 - 1); } *a1 = v3; std::wstring::append(a1, a3); return a1; } // 15412D0: using guessed type int _CRT_MT; // 4D5A60: using guessed type char var_9[9]; //----- (004D5B00) -------------------------------------------------------- void **__cdecl std::operator+(void **a1, wchar_t a2, const wchar_t **a3) { *a1 = &unk_4E93EC; std::wstring::reserve(a1, (char *)(*((_DWORD *)*a3 - 3) + 1)); std::wstring::append(a1, 1u, a2); std::wstring::append(a1, a3); return a1; } //----- (004D5BC0) -------------------------------------------------------- std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, char *a2) { char *v2; // eax _DWORD *v3; // ebx _BYTE *v4; // eax int v5; // edi int v6; // ecx char *v7; // esi int v8; // edx unsigned int v9; // edx int v11; // edx int v12; // eax unsigned int v13; // eax _BYTE *v14; // esi unsigned int v15; // edx int v16; // ebp size_t v17; // edx const std::locale *Src; // [esp+4h] [ebp-58h] bool Size; // [esp+8h] [ebp-54h] unsigned int v20; // [esp+1Ch] [ebp-40h] unsigned int v21; // [esp+1Ch] [ebp-40h] int v22; // [esp+20h] [ebp-3Ch] _DWORD *v23; // [esp+24h] [ebp-38h] int v24; // [esp+28h] [ebp-34h] size_t v25; // [esp+2Ch] [ebp-30h] char v26; // [esp+3Bh] [ebp-21h] BYREF _DWORD *v27[8]; // [esp+3Ch] [ebp-20h] BYREF std::istream::sentry::sentry(&v26, a1, 0, Size); if ( !v26 ) { v11 = *(_DWORD *)a1; v12 = 4; goto LABEL_22; } v2 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); v22 = *((_DWORD *)v2 + 2); if ( v22 <= 0 ) v22 = 0x7FFFFFFF; std::locale::locale((volatile signed __int32 **)v27, (volatile signed __int32 **)v2 + 27, Src); v23 = std::use_facet>((int)v27); std::locale::~locale(v27); v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v4 = (_BYTE *)v3[2]; if ( v3[3] <= (unsigned int)v4 ) { v4 = (_BYTE *)(*(int (__fastcall **)(_DWORD))(*v3 + 36))(*(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120)); v24 = v22 - 1; if ( v22 == 1 ) { if ( v4 != (_BYTE *)-1 ) goto LABEL_41; } else if ( v4 != (_BYTE *)-1 ) { goto LABEL_6; } *a2 = 0; v11 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; v12 = 6; goto LABEL_22; } LOBYTE(v4) = *v4; v24 = v22 - 1; if ( v22 == 1 ) { LABEL_41: *a2 = 0; v11 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; v12 = 4; goto LABEL_22; } LABEL_6: v5 = 0; do { while ( 1 ) { v6 = v23[6]; if ( (*(_BYTE *)(v6 + 2 * (unsigned __int8)v4) & 0x20) != 0 ) { *a2 = 0; v11 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; if ( !v5 ) { v12 = 4; goto LABEL_22; } return a1; } v7 = (char *)v3[2]; v20 = v3[3]; v8 = v22 - v5 - 1; if ( v8 > (int)(v20 - (_DWORD)v7) ) v8 = v20 - (_DWORD)v7; if ( v8 <= 1 ) break; v9 = (unsigned int)&v7[v8]; v4 = v7 + 1; if ( v9 <= (unsigned int)(v7 + 1) ) { v16 = 1; v17 = 1; LABEL_27: v5 += v16; v25 = v17; memcpy(a2, v7, v17); a2 += v25; v21 = v3[3]; v4 = (_BYTE *)(v25 + v3[2]); v3[2] = v4; if ( v21 <= (unsigned int)v4 ) { LABEL_28: v4 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); goto LABEL_29; } goto LABEL_17; } do { if ( (*(_BYTE *)(v6 + 2 * (unsigned __int8)*v4) & 0x20) != 0 ) break; ++v4; } while ( v9 > (unsigned int)v4 ); v16 = v4 - v7; v17 = v4 - v7; if ( v4 != v7 ) goto LABEL_27; a2 += v17; v5 += v16; v3[2] = v4; if ( v20 <= (unsigned int)v4 ) goto LABEL_28; LABEL_17: LOBYTE(v4) = *v4; LABEL_18: if ( v5 >= v24 ) goto LABEL_19; } ++v5; *a2 = (char)v4; v13 = v3[2]; v14 = a2 + 1; v15 = v3[3]; if ( v13 >= v15 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3) == -1 ) goto LABEL_33; v4 = (_BYTE *)v3[2]; v15 = v3[3]; } else { v4 = (_BYTE *)(v13 + 1); v3[2] = v4; } if ( (unsigned int)v4 < v15 ) { ++a2; LOBYTE(v4) = *v4; goto LABEL_18; } v4 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); ++a2; LABEL_29: if ( v5 >= v24 ) { if ( v4 == (_BYTE *)-1 ) { *a2 = 0; v11 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; v12 = 2; goto LABEL_22; } LABEL_19: *a2 = 0; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; return a1; } } while ( v4 != (_BYTE *)-1 ); v14 = a2; LABEL_33: *v14 = 0; v11 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; v12 = v5 == 0 ? 6 : 2; LABEL_22: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v11 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(v11 - 12) + 20) | v12); return a1; } // 4D5F23: control flows out of bounds to 4DB522 // 4D5BDA: variable 'Size' is possibly undefined // 4D5C17: variable 'Src' is possibly undefined // 4DB520: using guessed type int std::operator>>>(void); //----- (004D5F40) -------------------------------------------------------- std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, _BYTE *a2) { _DWORD *v2; // ecx char *v3; // eax char v4; // dl int v6; // eax bool v7; // [esp+8h] [ebp-24h] char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF std::istream::sentry::sentry(v8, a1, 0, v7); if ( !v8[0] ) return a1; v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v3 = (char *)v2[2]; if ( v2[3] > (unsigned int)v3 ) { v4 = *v3; v2[2] = v3 + 1; LABEL_4: *a2 = v4; return a1; } v6 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); if ( v6 != -1 ) { v4 = v6; goto LABEL_4; } std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); return a1; } // 4D5F57: variable 'v7' is possibly undefined // 4D5F40: using guessed type char var_D[13]; //----- (004D6030) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (004D6050) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (004D6070) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (004D6090) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (004D60B0) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { int v2; // ecx v2 = 64; if ( a2 != 8 ) { v2 = 2; if ( a2 != 10 ) v2 = 8 * (a2 == 16); } *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; return a1; } //----- (004D60F0) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, char a2) { char *v2; // esi _BYTE *v4; // edi int (__stdcall *v5)(unsigned __int8); // eax v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); if ( !v2[117] ) { v4 = (_BYTE *)*((_DWORD *)v2 + 31); if ( !v4 ) std::__throw_bad_cast(); if ( !v4[28] ) { std::ctype::_M_widen_init(*((_DWORD *)v2 + 31)); v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); if ( v5 != std::ctype::do_widen ) ((void (__thiscall *)(_BYTE *, int))v5)(v4, 32); } v2[117] = 1; } v2[116] = a2; return a1; } //----- (004D6160) -------------------------------------------------------- std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *a1, _DWORD *a2) { int v2; // edx int v3; // eax _BYTE *v5; // eax char *v6; // eax _DWORD *v7; // esi unsigned __int8 *v8; // eax int v9; // ebx _BYTE *v10; // ecx int v11; // edx unsigned int v12; // edx unsigned __int8 *v13; // eax size_t v14; // ebx unsigned __int8 *v15; // eax _BYTE *v16; // eax unsigned int v17; // edx unsigned int v18; // eax unsigned int v19; // edx const std::locale *v20; // [esp+4h] [ebp-54h] bool v21; // [esp+8h] [ebp-50h] _DWORD *v22; // [esp+1Ch] [ebp-3Ch] int v23; // [esp+20h] [ebp-38h] unsigned int v24; // [esp+20h] [ebp-38h] int v25; // [esp+24h] [ebp-34h] size_t v26; // [esp+28h] [ebp-30h] unsigned int v27; // [esp+2Ch] [ebp-2Ch] char v28; // [esp+3Bh] [ebp-1Dh] BYREF _DWORD *v29[7]; // [esp+3Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v28, a1, 0, v21); if ( !v28 ) { v2 = *(_DWORD *)a1; v3 = 4; goto LABEL_3; } v5 = (_BYTE *)*a2; a2[1] = 0; *v5 = 0; v6 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); v25 = *((_DWORD *)v6 + 2); if ( v25 <= 0 ) v25 = 0x3FFFFFFF; std::locale::locale((volatile signed __int32 **)v29, (volatile signed __int32 **)v6 + 27, v20); v22 = std::use_facet>((int)v29); std::locale::~locale(v29); v7 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v8 = (unsigned __int8 *)v7[2]; if ( v7[3] <= (unsigned int)v8 ) v9 = (*(int (__fastcall **)(_DWORD))(*v7 + 36))(*(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120)); else v9 = *v8; v27 = 0; while ( 1 ) { if ( v9 == -1 ) { v2 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; v3 = v27 == 0 ? 6 : 2; goto LABEL_3; } v23 = v22[6]; if ( (*(_BYTE *)(v23 + 2 * (unsigned __int8)v9) & 0x20) != 0 ) break; v10 = (_BYTE *)v7[2]; v11 = v7[3] - (_DWORD)v10; if ( v11 > (int)(v25 - v27) ) v11 = v25 - v27; v26 = a2[1]; if ( v11 <= 1 ) { v24 = v26 + 1; v16 = (_BYTE *)*a2; if ( (_DWORD *)*a2 == a2 + 2 ) v17 = 15; else v17 = a2[2]; if ( v24 > v17 ) { std::string::_M_mutate((int)a2, v26, 0, 0, 1u); v16 = (_BYTE *)*a2; } ++v27; v16[v26] = v9; a2[1] = v24; *(_BYTE *)(*a2 + v26 + 1) = 0; v18 = v7[2]; v19 = v7[3]; if ( v18 >= v19 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) { v2 = *(_DWORD *)a1; LABEL_37: *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 8) = 0; v3 = 2; goto LABEL_3; } v15 = (unsigned __int8 *)v7[2]; v19 = v7[3]; } else { v15 = (unsigned __int8 *)(v18 + 1); v7[2] = v15; } if ( (unsigned int)v15 >= v19 ) { LABEL_33: v9 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); goto LABEL_23; } } else { v12 = (unsigned int)&v10[v11]; v13 = v10 + 1; if ( v12 <= (unsigned int)(v10 + 1) ) { v14 = 1; } else { do { if ( (*(_BYTE *)(v23 + 2 * *v13) & 0x20) != 0 ) break; ++v13; } while ( v12 > (unsigned int)v13 ); v14 = v13 - v10; } if ( 0x3FFFFFFF - v26 < v14 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(a2, v10, v14); v27 += v14; v15 = (unsigned __int8 *)(v14 + v7[2]); v7[2] = v15; if ( v7[3] <= (unsigned int)v15 ) goto LABEL_33; } v9 = *v15; LABEL_23: if ( v27 >= v25 ) { v2 = *(_DWORD *)a1; if ( v9 != -1 ) { *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; return a1; } goto LABEL_37; } } v2 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; if ( v27 ) return a1; v3 = 4; LABEL_3: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v2 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) | v3); return a1; } // 4D645C: control flows out of bounds to 4DB28A // 4D6461: control flows out of bounds to 4DB2B1 // 4D617D: variable 'v21' is possibly undefined // 4D61EA: variable 'v20' is possibly undefined //----- (004D6470) -------------------------------------------------------- int *__cdecl std::operator>>>(int *a1, _WORD *a2) { _WORD *v2; // esi int v3; // eax char *v4; // eax _DWORD *v5; // ebx unsigned __int16 *v6; // eax unsigned __int16 v7; // di int v8; // eax __int16 v9; // ax unsigned __int16 *v10; // eax __int16 *v11; // edx int v12; // edx char *v13; // edx char *v15; // edx char *v16; // edx const std::locale *v17; // [esp+4h] [ebp-44h] _WORD *v18; // [esp+14h] [ebp-34h] void *v19; // [esp+18h] [ebp-30h] int v20; // [esp+1Ch] [ebp-2Ch] int v21; // [esp+1Ch] [ebp-2Ch] char v22; // [esp+2Bh] [ebp-1Dh] BYREF _DWORD *v23[7]; // [esp+2Ch] [ebp-1Ch] BYREF v2 = a2; std::wistream::sentry::sentry(&v22, a1, 0); v3 = *a1; if ( !v22 ) { LABEL_18: v12 = 4; goto LABEL_19; } v4 = (char *)a1 + *(_DWORD *)(v3 - 12); v20 = *((_DWORD *)v4 + 2); if ( v20 <= 0 ) v20 = 0x7FFFFFFF; std::locale::locale((volatile signed __int32 **)v23, (volatile signed __int32 **)v4 + 27, v17); v19 = std::use_facet>((int)v23); std::locale::~locale(v23); v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v6 = (unsigned __int16 *)v5[2]; if ( v5[3] <= (unsigned int)v6 ) v7 = (*(int (__fastcall **)(_DWORD))(*v5 + 36))(*(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120)); else v7 = *v6; if ( v20 == 1 ) { v3 = *a1; v16 = (char *)a1 + *(_DWORD *)(*a1 - 12); *a2 = 0; *((_DWORD *)v16 + 2) = 0; if ( v7 == 0xFFFF ) { v12 = 6; goto LABEL_19; } goto LABEL_18; } if ( v7 == 0xFFFF ) { *a2 = 0; v3 = *a1; *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; v12 = 6; goto LABEL_19; } v8 = (int)&a2[v20 - 1]; v21 = 0; v18 = (_WORD *)v8; while ( 1 ) { if ( (*(unsigned __int8 (__stdcall **)(int, _DWORD))(*(_DWORD *)v19 + 8))(32, v7) ) { v3 = *a1; v13 = (char *)a1 + *(_DWORD *)(*a1 - 12); *v2 = 0; *((_DWORD *)v13 + 2) = 0; if ( v21 ) return a1; goto LABEL_18; } ++v2; ++v21; v11 = (__int16 *)v5[2]; *(v2 - 1) = v7; if ( (unsigned int)v11 < v5[3] ) { v9 = *v11; v5[2] = v11 + 1; if ( v9 == -1 ) goto LABEL_16; } else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v5 + 40))(v5) == 0xFFFF ) { LABEL_16: *v2 = 0; v3 = *a1; *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; v12 = 2; goto LABEL_19; } v10 = (unsigned __int16 *)v5[2]; if ( (unsigned int)v10 < v5[3] ) { v7 = *v10; if ( v2 == v18 ) break; goto LABEL_12; } v7 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); if ( v2 == v18 ) break; LABEL_12: if ( v7 == 0xFFFF ) goto LABEL_16; } v3 = *a1; v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); *v2 = 0; *((_DWORD *)v15 + 2) = 0; if ( v7 != 0xFFFF ) return a1; v12 = 2; LABEL_19: std::wios::clear((int *)((char *)a1 + *(_DWORD *)(v3 - 12)), *(int *)((char *)a1 + *(_DWORD *)(v3 - 12) + 20) | v12); return a1; } // 4D64C5: variable 'v17' is possibly undefined //----- (004D6760) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, _WORD *a2) { _DWORD *v2; // ecx __int16 *v3; // edx __int16 v4; // ax char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF std::wistream::sentry::sentry(v6, a1, 0); if ( !v6[0] ) return a1; v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v3 = (__int16 *)v2[2]; if ( v2[3] <= (unsigned int)v3 ) { v4 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); } else { v4 = *v3; v2[2] = v3 + 1; } if ( v4 != -1 ) { *a2 = v4; return a1; } std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 6); return a1; } // 4D6760: using guessed type char var_D[13]; //----- (004D6850) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (004D6870) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (004D6890) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (004D68B0) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (004D68D0) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { int v2; // ecx v2 = 64; if ( a2 != 8 ) { v2 = 2; if ( a2 != 10 ) v2 = 8 * (a2 == 16); } *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; return a1; } //----- (004D6910) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, __int16 a2) { char *v2; // esi int v4; // ecx v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); if ( !v2[118] ) { v4 = *((_DWORD *)v2 + 31); if ( !v4 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); v2[118] = 1; } *((_WORD *)v2 + 58) = a2; return a1; } //----- (004D6970) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 1) = &unk_4F0F68; *(v2 - 3) = &unk_4F0F40; *(v2 - 2) = 0; *v2 = &off_4F6E10; std::ios_base::~ios_base((int)v2); operator delete((void *)(a1 - 8)); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D69B0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &unk_4F0F68; v1 = a1 + 1; *(v1 - 3) = &unk_4F0F40; *(v1 - 2) = 0; *v1 = &off_4F6E10; std::ios_base::~ios_base((int)v1); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D69E0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) { void *v1; // esi _DWORD *v3; // ecx v1 = (void *)(a1 - 8); v3 = (_DWORD *)(a1 + 4); *(v3 - 3) = &off_4F6114; v3[27] = off_4F613C; *(v3 - 1) = off_4F6128; *v3 = &off_4F6090; std::filebuf::close((int)v3); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F0FF4; *(_DWORD *)(a1 - 8) = &unk_4F0FCC; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 112) = &off_4F6E10; std::ios_base::~ios_base(a1 + 112); operator delete(v1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D6A70) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 3) = &off_4F6114; v2[27] = off_4F613C; *(v2 - 1) = off_4F6128; *v2 = &off_4F6090; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F0FF4; *(_DWORD *)(a1 - 8) = &unk_4F0FCC; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 112) = &off_4F6E10; std::ios_base::~ios_base(a1 + 112); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D6AF0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) { void *v1; // esi _DWORD *v3; // ecx v1 = (void *)(a1 - 8); v3 = (_DWORD *)(a1 + 4); *(v3 - 3) = &off_4F6150; v3[28] = off_4F6178; *(v3 - 1) = off_4F6164; *v3 = &off_4F60D0; std::wfilebuf::close((int)v3); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F1080; *(_DWORD *)(a1 - 8) = &unk_4F101C; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 116) = &off_4F6E20; std::ios_base::~ios_base(a1 + 116); operator delete(v1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D6B80) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 3) = &off_4F6150; v2[28] = off_4F6178; *(v2 - 1) = off_4F6164; *v2 = &off_4F60D0; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F1080; *(_DWORD *)(a1 - 8) = &unk_4F101C; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 116) = &off_4F6E20; std::ios_base::~ios_base(a1 + 116); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D6C00) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 1) = &unk_4F1120; *(v2 - 3) = &unk_4F10F8; *(v2 - 2) = 0; *v2 = &off_4F6E20; std::ios_base::~ios_base((int)v2); operator delete((void *)(a1 - 8)); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D6C40) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &unk_4F1120; v1 = a1 + 1; *(v1 - 3) = &unk_4F10F8; *(v1 - 2) = 0; *v1 = &off_4F6E20; std::ios_base::~ios_base((int)v1); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D6C70) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *v1; // esi void *v3; // eax v1 = (void *)(a1 - 8); v3 = *(void **)(a1 + 40); *(_DWORD *)(a1 - 8) = &off_4F5B44; *(_DWORD *)(a1 + 64) = off_4F5B6C; *(_DWORD *)a1 = off_4F5B58; *(_DWORD *)(a1 + 4) = &off_4F5918; if ( v3 != (void *)(a1 + 48) ) operator delete(v3); *(_DWORD *)(a1 + 4) = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F0DEC; *(_DWORD *)(a1 - 8) = &unk_4F0DC4; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_4F6E10; std::ios_base::~ios_base(a1 + 64); operator delete(v1); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5B44: using guessed type int (*off_4F5B44)(); // 4F5B58: using guessed type int (*off_4F5B58[2])(); // 4F5B6C: using guessed type int (*off_4F5B6C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D6CF0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *v2; // eax v2 = *(void **)(a1 + 40); *(_DWORD *)(a1 - 8) = &off_4F5B44; *(_DWORD *)(a1 + 64) = off_4F5B6C; *(_DWORD *)a1 = off_4F5B58; *(_DWORD *)(a1 + 4) = &off_4F5918; if ( v2 != (void *)(a1 + 48) ) operator delete(v2); *(_DWORD *)(a1 + 4) = &off_4F6414; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F0DEC; *(_DWORD *)(a1 - 8) = &unk_4F0DC4; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_4F6E10; std::ios_base::~ios_base(a1 + 64); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5B44: using guessed type int (*off_4F5B44)(); // 4F5B58: using guessed type int (*off_4F5B58[2])(); // 4F5B6C: using guessed type int (*off_4F5B6C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D6D60) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *v1; // esi void *v3; // eax v1 = (void *)(a1 - 8); v3 = *(void **)(a1 + 40); *(_DWORD *)(a1 - 8) = &off_4F5B80; *(_DWORD *)(a1 + 64) = off_4F5BA8; *(_DWORD *)a1 = off_4F5B94; *(_DWORD *)(a1 + 4) = &off_4F5958; if ( v3 != (void *)(a1 + 48) ) operator delete(v3); *(_DWORD *)(a1 + 4) = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F0E78; *(_DWORD *)(a1 - 8) = &unk_4F0E14; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_4F6E20; std::ios_base::~ios_base(a1 + 64); operator delete(v1); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5B80: using guessed type int (*off_4F5B80)(); // 4F5B94: using guessed type int (*off_4F5B94[2])(); // 4F5BA8: using guessed type int (*off_4F5BA8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D6DE0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *v2; // eax v2 = *(void **)(a1 + 40); *(_DWORD *)(a1 - 8) = &off_4F5B80; *(_DWORD *)(a1 + 64) = off_4F5BA8; *(_DWORD *)a1 = off_4F5B94; *(_DWORD *)(a1 + 4) = &off_4F5958; if ( v2 != (void *)(a1 + 48) ) operator delete(v2); *(_DWORD *)(a1 + 4) = &off_4F6454; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_4F0E78; *(_DWORD *)(a1 - 8) = &unk_4F0E14; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_4F6E20; std::ios_base::~ios_base(a1 + 64); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5B80: using guessed type int (*off_4F5B80)(); // 4F5B94: using guessed type int (*off_4F5B94[2])(); // 4F5BA8: using guessed type int (*off_4F5BA8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D6E50) -------------------------------------------------------- void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v1[2] = &unk_4F0F68; *v1 = &unk_4F0F40; v1[1] = 0; v1[3] = &off_4F6E10; std::ios_base::~ios_base((int)(v1 + 3)); operator delete(v1); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D6E90) -------------------------------------------------------- void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v1[2] = &unk_4F0F68; v1 += 3; *(v1 - 3) = &unk_4F0F40; *(v1 - 2) = 0; *v1 = &off_4F6E10; std::ios_base::~ios_base((int)v1); } // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D6EC0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_4F5E30; v1[1] = 0; v1[2] = &off_4F6E10; std::ios_base::~ios_base((int)(v1 + 2)); operator delete(v1); } // 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D6F00) -------------------------------------------------------- void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_4F5E30; v1 += 2; *(v1 - 1) = 0; *v1 = &off_4F6E10; std::ios_base::~ios_base((int)v1); } // 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D6F20) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_4F5E58; v1[1] = &off_4F6E10; std::ios_base::~ios_base((int)(v1 + 1)); operator delete(v1); } // 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D6F50) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1++ = &off_4F5E58; *v1 = &off_4F6E10; std::ios_base::~ios_base((int)v1); } // 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D6F70) -------------------------------------------------------- void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F6114; *((_DWORD *)v1 + 30) = off_4F613C; *((_DWORD *)v1 + 2) = off_4F6128; *((_DWORD *)v1 + 3) = &off_4F6090; std::filebuf::close((int)(v1 + 12)); std::__basic_file::~__basic_file(v1 + 52); *((_DWORD *)v1 + 3) = &off_4F6414; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_4F0FF4; *(_DWORD *)v1 = &unk_4F0FCC; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 30) = &off_4F6E10; std::ios_base::~ios_base((int)(v1 + 120)); operator delete(v1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D7000) -------------------------------------------------------- void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F6114; *((_DWORD *)v1 + 30) = off_4F613C; *((_DWORD *)v1 + 2) = off_4F6128; *((_DWORD *)v1 + 3) = &off_4F6090; std::filebuf::close((int)(v1 + 12)); std::__basic_file::~__basic_file(v1 + 52); *((_DWORD *)v1 + 3) = &off_4F6414; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_4F0FF4; *(_DWORD *)v1 = &unk_4F0FCC; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 30) = &off_4F6E10; std::ios_base::~ios_base((int)(v1 + 120)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F6114: using guessed type int (*off_4F6114)(); // 4F6128: using guessed type int (*off_4F6128[2])(); // 4F613C: using guessed type int (*off_4F613C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D7080) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F6150; *((_DWORD *)v1 + 31) = off_4F6178; *((_DWORD *)v1 + 2) = off_4F6164; *((_DWORD *)v1 + 3) = &off_4F60D0; std::wfilebuf::close((int)(v1 + 12)); std::__basic_file::~__basic_file(v1 + 52); *((_DWORD *)v1 + 3) = &off_4F6454; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_4F1080; *(_DWORD *)v1 = &unk_4F101C; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 31) = &off_4F6E20; std::ios_base::~ios_base((int)(v1 + 124)); operator delete(v1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7110) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F6150; *((_DWORD *)v1 + 31) = off_4F6178; *((_DWORD *)v1 + 2) = off_4F6164; *((_DWORD *)v1 + 3) = &off_4F60D0; std::wfilebuf::close((int)(v1 + 12)); std::__basic_file::~__basic_file(v1 + 52); *((_DWORD *)v1 + 3) = &off_4F6454; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_4F1080; *(_DWORD *)v1 = &unk_4F101C; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 31) = &off_4F6E20; std::ios_base::~ios_base((int)(v1 + 124)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6150: using guessed type int (*off_4F6150)(); // 4F6164: using guessed type int (*off_4F6164[2])(); // 4F6178: using guessed type int (*off_4F6178[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7190) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_4F618C; v1[1] = 0; v1[2] = &off_4F6E20; std::ios_base::~ios_base((int)(v1 + 2)); operator delete(v1); } // 4F618C: using guessed type int (*off_4F618C)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D71D0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_4F618C; v1 += 2; *(v1 - 1) = 0; *v1 = &off_4F6E20; std::ios_base::~ios_base((int)v1); } // 4F618C: using guessed type int (*off_4F618C)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D71F0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_4F61B4; v1[1] = &off_4F6E20; std::ios_base::~ios_base((int)(v1 + 1)); operator delete(v1); } // 4F61B4: using guessed type int (*off_4F61B4)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7220) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1++ = &off_4F61B4; *v1 = &off_4F6E20; std::ios_base::~ios_base((int)v1); } // 4F61B4: using guessed type int (*off_4F61B4)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7240) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F61F0; *((_DWORD *)v1 + 29) = off_4F6204; *((_DWORD *)v1 + 2) = &off_4F6090; std::filebuf::close((int)(v1 + 8)); std::__basic_file::~__basic_file(v1 + 48); *((_DWORD *)v1 + 2) = &off_4F6414; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_4F10A8; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 29) = &off_4F6E10; std::ios_base::~ios_base((int)(v1 + 116)); operator delete(v1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F61F0: using guessed type int (*off_4F61F0)(); // 4F6204: using guessed type int (*off_4F6204[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D72C0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F61F0; *((_DWORD *)v1 + 29) = off_4F6204; *((_DWORD *)v1 + 2) = &off_4F6090; std::filebuf::close((int)(v1 + 8)); std::__basic_file::~__basic_file(v1 + 48); *((_DWORD *)v1 + 2) = &off_4F6414; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_4F10A8; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 29) = &off_4F6E10; std::ios_base::~ios_base((int)(v1 + 116)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F61F0: using guessed type int (*off_4F61F0)(); // 4F6204: using guessed type int (*off_4F6204[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D7330) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F6218; *((_DWORD *)v1 + 30) = off_4F622C; *((_DWORD *)v1 + 2) = &off_4F60D0; std::wfilebuf::close((int)(v1 + 8)); std::__basic_file::~__basic_file(v1 + 48); *((_DWORD *)v1 + 2) = &off_4F6454; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_4F10D0; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 30) = &off_4F6E20; std::ios_base::~ios_base((int)(v1 + 120)); operator delete(v1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6218: using guessed type int (*off_4F6218)(); // 4F622C: using guessed type int (*off_4F622C[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D73B0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F6218; *((_DWORD *)v1 + 30) = off_4F622C; *((_DWORD *)v1 + 2) = &off_4F60D0; std::wfilebuf::close((int)(v1 + 8)); std::__basic_file::~__basic_file(v1 + 48); *((_DWORD *)v1 + 2) = &off_4F6454; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_4F10D0; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 30) = &off_4F6E20; std::ios_base::~ios_base((int)(v1 + 120)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F6218: using guessed type int (*off_4F6218)(); // 4F622C: using guessed type int (*off_4F622C[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7420) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v1[2] = &unk_4F1120; *v1 = &unk_4F10F8; v1[1] = 0; v1[3] = &off_4F6E20; std::ios_base::~ios_base((int)(v1 + 3)); operator delete(v1); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7460) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v1[2] = &unk_4F1120; v1 += 3; *(v1 - 3) = &unk_4F10F8; *(v1 - 2) = 0; *v1 = &off_4F6E20; std::ios_base::~ios_base((int)v1); } // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7490) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F627C; *((_DWORD *)v1 + 28) = off_4F6290; *((_DWORD *)v1 + 1) = &off_4F6090; std::filebuf::close((int)(v1 + 4)); std::__basic_file::~__basic_file(v1 + 44); *((_DWORD *)v1 + 1) = &off_4F6414; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_4F1148; *((_DWORD *)v1 + 28) = &off_4F6E10; std::ios_base::~ios_base((int)(v1 + 112)); operator delete(v1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F627C: using guessed type int (*off_4F627C)(); // 4F6290: using guessed type int (*off_4F6290[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D7500) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F627C; *((_DWORD *)v1 + 28) = off_4F6290; *((_DWORD *)v1 + 1) = &off_4F6090; std::filebuf::close((int)(v1 + 4)); std::__basic_file::~__basic_file(v1 + 44); *((_DWORD *)v1 + 1) = &off_4F6414; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_4F1148; *((_DWORD *)v1 + 28) = &off_4F6E10; std::ios_base::~ios_base((int)(v1 + 112)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F6090: using guessed type int (*off_4F6090)(); // 4F627C: using guessed type int (*off_4F627C)(); // 4F6290: using guessed type int (*off_4F6290[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D7570) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F62A4; *((_DWORD *)v1 + 29) = off_4F62B8; *((_DWORD *)v1 + 1) = &off_4F60D0; std::wfilebuf::close((int)(v1 + 4)); std::__basic_file::~__basic_file(v1 + 44); *((_DWORD *)v1 + 1) = &off_4F6454; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_4F1170; *((_DWORD *)v1 + 29) = &off_4F6E20; std::ios_base::~ios_base((int)(v1 + 116)); operator delete(v1); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F62A4: using guessed type int (*off_4F62A4)(); // 4F62B8: using guessed type int (*off_4F62B8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D75E0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_4F62A4; *((_DWORD *)v1 + 29) = off_4F62B8; *((_DWORD *)v1 + 1) = &off_4F60D0; std::wfilebuf::close((int)(v1 + 4)); std::__basic_file::~__basic_file(v1 + 44); *((_DWORD *)v1 + 1) = &off_4F6454; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_4F1170; *((_DWORD *)v1 + 29) = &off_4F6E20; std::ios_base::~ios_base((int)(v1 + 116)); } // 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 4F60D0: using guessed type int (*off_4F60D0)(); // 4F62A4: using guessed type int (*off_4F62A4)(); // 4F62B8: using guessed type int (*off_4F62B8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7650) -------------------------------------------------------- void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax _DWORD *v3; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v2 = (_DWORD *)v1[12]; *v1 = &off_4F5B44; v3 = v1; v1[18] = off_4F5B6C; v1[2] = off_4F5B58; v1[3] = &off_4F5918; if ( v2 != v1 + 14 ) operator delete(v2); v3[3] = &off_4F6414; std::locale::~locale((_DWORD **)v3 + 10); v3[2] = &unk_4F0DEC; *v3 = &unk_4F0DC4; v3[1] = 0; v3[18] = &off_4F6E10; std::ios_base::~ios_base((int)(v3 + 18)); operator delete(v3); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5B44: using guessed type int (*off_4F5B44)(); // 4F5B58: using guessed type int (*off_4F5B58[2])(); // 4F5B6C: using guessed type int (*off_4F5B6C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D76D0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax _DWORD *v3; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v2 = (_DWORD *)v1[12]; *v1 = &off_4F5B44; v3 = v1; v1[18] = off_4F5B6C; v1[2] = off_4F5B58; v1[3] = &off_4F5918; if ( v2 != v1 + 14 ) operator delete(v2); v3[3] = &off_4F6414; std::locale::~locale((_DWORD **)v3 + 10); v3[2] = &unk_4F0DEC; *v3 = &unk_4F0DC4; v3[1] = 0; v3[18] = &off_4F6E10; std::ios_base::~ios_base((int)(v3 + 18)); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5B44: using guessed type int (*off_4F5B44)(); // 4F5B58: using guessed type int (*off_4F5B58[2])(); // 4F5B6C: using guessed type int (*off_4F5B6C[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D7740) -------------------------------------------------------- void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax _DWORD *v3; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v2 = (_DWORD *)v1[12]; *v1 = &off_4F5B80; v3 = v1; v1[18] = off_4F5BA8; v1[2] = off_4F5B94; v1[3] = &off_4F5958; if ( v2 != v1 + 14 ) operator delete(v2); v3[3] = &off_4F6454; std::locale::~locale((_DWORD **)v3 + 10); v3[2] = &unk_4F0E78; *v3 = &unk_4F0E14; v3[1] = 0; v3[18] = &off_4F6E20; std::ios_base::~ios_base((int)(v3 + 18)); operator delete(v3); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5B80: using guessed type int (*off_4F5B80)(); // 4F5B94: using guessed type int (*off_4F5B94[2])(); // 4F5BA8: using guessed type int (*off_4F5BA8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D77C0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax _DWORD *v3; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v2 = (_DWORD *)v1[12]; *v1 = &off_4F5B80; v3 = v1; v1[18] = off_4F5BA8; v1[2] = off_4F5B94; v1[3] = &off_4F5958; if ( v2 != v1 + 14 ) operator delete(v2); v3[3] = &off_4F6454; std::locale::~locale((_DWORD **)v3 + 10); v3[2] = &unk_4F0E78; *v3 = &unk_4F0E14; v3[1] = 0; v3[18] = &off_4F6E20; std::ios_base::~ios_base((int)(v3 + 18)); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5B80: using guessed type int (*off_4F5B80)(); // 4F5B94: using guessed type int (*off_4F5B94[2])(); // 4F5BA8: using guessed type int (*off_4F5BA8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7830) -------------------------------------------------------- void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax _DWORD *v3; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v2 = (_DWORD *)v1[11]; *v1 = &off_4F5BBC; v3 = v1; v1[17] = off_4F5BD0; v1[2] = &off_4F5918; if ( v2 != v1 + 13 ) operator delete(v2); v3[2] = &off_4F6414; std::locale::~locale((_DWORD **)v3 + 9); *v3 = &unk_4F0EA0; v3[1] = 0; v3[17] = &off_4F6E10; std::ios_base::~ios_base((int)(v3 + 17)); operator delete(v3); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5BBC: using guessed type int (*off_4F5BBC)(); // 4F5BD0: using guessed type int (*off_4F5BD0[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D78A0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax _DWORD *v3; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v2 = (_DWORD *)v1[11]; *v1 = &off_4F5BBC; v3 = v1; v1[17] = off_4F5BD0; v1[2] = &off_4F5918; if ( v2 != v1 + 13 ) operator delete(v2); v3[2] = &off_4F6414; std::locale::~locale((_DWORD **)v3 + 9); *v3 = &unk_4F0EA0; v3[1] = 0; v3[17] = &off_4F6E10; std::ios_base::~ios_base((int)(v3 + 17)); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5BBC: using guessed type int (*off_4F5BBC)(); // 4F5BD0: using guessed type int (*off_4F5BD0[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D7900) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax _DWORD *v3; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v2 = (_DWORD *)v1[11]; *v1 = &off_4F5BE4; v3 = v1; v1[17] = off_4F5BF8; v1[2] = &off_4F5958; if ( v2 != v1 + 13 ) operator delete(v2); v3[2] = &off_4F6454; std::locale::~locale((_DWORD **)v3 + 9); *v3 = &unk_4F0EC8; v3[1] = 0; v3[17] = &off_4F6E20; std::ios_base::~ios_base((int)(v3 + 17)); operator delete(v3); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5BE4: using guessed type int (*off_4F5BE4)(); // 4F5BF8: using guessed type int (*off_4F5BF8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7970) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax _DWORD *v3; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v2 = (_DWORD *)v1[11]; *v1 = &off_4F5BE4; v3 = v1; v1[17] = off_4F5BF8; v1[2] = &off_4F5958; if ( v2 != v1 + 13 ) operator delete(v2); v3[2] = &off_4F6454; std::locale::~locale((_DWORD **)v3 + 9); *v3 = &unk_4F0EC8; v3[1] = 0; v3[17] = &off_4F6E20; std::ios_base::~ios_base((int)(v3 + 17)); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5BE4: using guessed type int (*off_4F5BE4)(); // 4F5BF8: using guessed type int (*off_4F5BF8[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D79D0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax _DWORD *v3; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v2 = (_DWORD *)v1[10]; *v1 = &off_4F5C0C; v3 = v1; v1[16] = off_4F5C20; v1[1] = &off_4F5918; if ( v2 != v1 + 12 ) operator delete(v2); v3[1] = &off_4F6414; std::locale::~locale((_DWORD **)v3 + 8); *v3 = &unk_4F0EF0; v3[16] = &off_4F6E10; std::ios_base::~ios_base((int)(v3 + 16)); operator delete(v3); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5C0C: using guessed type int (*off_4F5C0C)(); // 4F5C20: using guessed type int (*off_4F5C20[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D7A40) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) { char *v1; // ebx char *v2; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); v2 = (char *)*((_DWORD *)v1 + 10); *(_DWORD *)v1 = &off_4F5C0C; *((_DWORD *)v1 + 16) = off_4F5C20; *((_DWORD *)v1 + 1) = &off_4F5918; if ( v2 != v1 + 48 ) operator delete(v2); *((_DWORD *)v1 + 1) = &off_4F6414; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_4F0EF0; *((_DWORD *)v1 + 16) = &off_4F6E10; std::ios_base::~ios_base((int)(v1 + 64)); } // 4F5918: using guessed type int (*off_4F5918)(); // 4F5C0C: using guessed type int (*off_4F5C0C)(); // 4F5C20: using guessed type int (*off_4F5C20[2])(); // 4F6414: using guessed type int (*off_4F6414)(); // 4F6E10: using guessed type int (*off_4F6E10)(); //----- (004D7AA0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) { _DWORD *v1; // ecx _DWORD *v2; // eax _DWORD *v3; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v2 = (_DWORD *)v1[10]; *v1 = &off_4F5C34; v3 = v1; v1[16] = off_4F5C48; v1[1] = &off_4F5958; if ( v2 != v1 + 12 ) operator delete(v2); v3[1] = &off_4F6454; std::locale::~locale((_DWORD **)v3 + 8); *v3 = &unk_4F0F18; v3[16] = &off_4F6E20; std::ios_base::~ios_base((int)(v3 + 16)); operator delete(v3); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5C34: using guessed type int (*off_4F5C34)(); // 4F5C48: using guessed type int (*off_4F5C48[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7B10) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) { char *v1; // ebx char *v2; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); v2 = (char *)*((_DWORD *)v1 + 10); *(_DWORD *)v1 = &off_4F5C34; *((_DWORD *)v1 + 16) = off_4F5C48; *((_DWORD *)v1 + 1) = &off_4F5958; if ( v2 != v1 + 48 ) operator delete(v2); *((_DWORD *)v1 + 1) = &off_4F6454; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_4F0F18; *((_DWORD *)v1 + 16) = &off_4F6E20; std::ios_base::~ios_base((int)(v1 + 64)); } // 4F5958: using guessed type int (*off_4F5958)(); // 4F5C34: using guessed type int (*off_4F5C34)(); // 4F5C48: using guessed type int (*off_4F5C48[2])(); // 4F6454: using guessed type int (*off_4F6454)(); // 4F6E20: using guessed type int (*off_4F6E20)(); //----- (004D7B70) -------------------------------------------------------- int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *a1) { int v2; // ecx int result; // eax int v4; // edx int v5; // edx v2 = *a1; *(_DWORD *)(v2 + 48) = 0; *(_BYTE *)(v2 + 84) = 0; std::filebuf::_M_destroy_internal_buffer(v2); result = *a1; *(_WORD *)(result + 73) = 0; v4 = *(_DWORD *)(result + 64); *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 4) = v4; *(_DWORD *)(result + 8) = v4; *(_DWORD *)(result + 12) = v4; v5 = *(_DWORD *)(result + 52); *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 56) = v5; *(_DWORD *)(result + 60) = v5; return result; } //----- (004D7BC0) -------------------------------------------------------- int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *a1) { int v2; // ecx int result; // eax int v4; // edx int v5; // edx v2 = *a1; *(_DWORD *)(v2 + 48) = 0; *(_BYTE *)(v2 + 88) = 0; std::wfilebuf::_M_destroy_internal_buffer(v2); result = *a1; *(_WORD *)(result + 73) = 0; v4 = *(_DWORD *)(result + 64); *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 4) = v4; *(_DWORD *)(result + 8) = v4; *(_DWORD *)(result + 12) = v4; v5 = *(_DWORD *)(result + 52); *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 56) = v5; *(_DWORD *)(result + 60) = v5; return result; } //----- (004D7C50) -------------------------------------------------------- int __cdecl operator new[](unsigned int a1) { return operator new[](a1); } // 4DB0E0: using guessed type int operator new[](void); //----- (004D7C70) -------------------------------------------------------- void *__cdecl operator new(struct type_info *a1, void (__cdecl *a2)(void *)) { size_t Size; // ebx void *result; // eax void (*new_handler)(void); // eax Size = (size_t)a1; if ( !a1 ) Size = 1; while ( 1 ) { result = malloc(Size); if ( result ) break; new_handler = (void (*)(void))std::get_new_handler(); if ( !new_handler ) operator new(a1, a2); new_handler(); } return result; } //----- (004D7CB0) -------------------------------------------------------- unsigned int *__cxa_allocate_dependent_exception() { unsigned int *v0; // eax unsigned int *v1; // edx v0 = (unsigned int *)malloc(0x50u); if ( v0 ) { v1 = v0; } else { v1 = `anonymous namespace'::pool::allocate(80); if ( !v1 ) std::terminate(); } *v1 = 0; v1[19] = 0; memset( (void *)((unsigned int)(v1 + 1) & 0xFFFFFFFC), 0, 4 * (((unsigned int)v1 - ((unsigned int)(v1 + 1) & 0xFFFFFFFC) + 80) >> 2)); return v1; } //----- (004D7D10) -------------------------------------------------------- void *__cdecl __cxa_allocate_exception(size_t thrown_size) { unsigned int *v1; // eax unsigned int *v2; // edx v1 = (unsigned int *)malloc(thrown_size + 96); if ( v1 ) { v2 = v1; } else { v2 = `anonymous namespace'::pool::allocate(thrown_size + 96); if ( !v2 ) std::terminate(); } *v2 = 0; v2[23] = 0; memset( (void *)((unsigned int)(v2 + 1) & 0xFFFFFFFC), 0, 4 * (((unsigned int)v2 - ((unsigned int)(v2 + 1) & 0xFFFFFFFC) + 96) >> 2)); return v2 + 24; } //----- (004D7D70) -------------------------------------------------------- void *__cdecl __cxa_begin_catch(void *a1) { char **globals; // eax char *v2; // edx char *v3; // edi int v5; // ecx int v6; // ebx globals = (char **)__cxa_get_globals(); v2 = *globals; v3 = (char *)a1 - 48; if ( (unsigned __int64)(*(_QWORD *)a1 - 0x474E5543432B2B00LL) <= 1 ) { v5 = *((_DWORD *)a1 - 7); v6 = v5 + 1; if ( v5 < 0 ) v6 = 1 - v5; *((_DWORD *)a1 - 7) = v6; --globals[1]; if ( v2 != v3 ) { *((_DWORD *)a1 - 8) = v2; *globals = v3; } return (void *)*((_DWORD *)a1 - 2); } else { if ( v2 ) std::terminate(); *globals = v3; return 0; } } //----- (004D7E00) -------------------------------------------------------- void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *a1) { if ( a1 ) { __cxa_begin_catch(a1); if ( !(((unsigned int)(LODWORD(a1->exception_class) - 1126902528) > 1) + ((a1->exception_class - 0x474E5543432B2B00LL) >> 32)) ) __cxxabiv1::__terminate(*((void (**)(void))&a1[-2].private_2 + 3)); } std::terminate(); } //----- (004D7E50) -------------------------------------------------------- void __cdecl __noreturn __cxa_call_unexpected(void *a1) { __cxa_begin_catch(a1); __cxxabiv1::__unexpected(*((void (**)(void))a1 - 10)); } // 4D9B08: using guessed type void __noreturn __cxa_call_unexpected_cold(void); //----- (004D7E90) -------------------------------------------------------- struct type_info *__cxa_current_exception_type(void) { struct type_info *result; // eax int v1; // edx result = (struct type_info *)*__cxa_get_globals(); if ( result ) { v1 = *((_DWORD *)result + 12); result = *(struct type_info **)result; if ( (v1 & 1) != 0 ) return (struct type_info *)*((_DWORD *)result - 20); } return result; } //----- (004D7EB0) -------------------------------------------------------- void __noreturn __cxa_deleted_virtual(void) { write(2, "deleted virtual method called\n", 0x1Eu); std::terminate(); } //----- (004D7EE0) -------------------------------------------------------- void __cxa_end_catch(void) { int *globals_fast; // eax int v1; // edx int v2; // ecx int v3; // ecx globals_fast = (int *)__cxa_get_globals_fast(); v1 = *globals_fast; if ( *globals_fast ) { if ( ((unsigned int)(*(_DWORD *)(v1 + 48) - 1126902528) > 1) + ((unsigned __int64)(*(_QWORD *)(v1 + 48) - 0x474E5543432B2B00LL) >> 32) ) { *globals_fast = 0; _Unwind_DeleteException((_Unwind_Exception *)(v1 + 48)); return; } v2 = *(_DWORD *)(v1 + 20); if ( v2 < 0 ) { v3 = v2 + 1; if ( !v3 ) *globals_fast = *(_DWORD *)(v1 + 16); } else { v3 = v2 - 1; if ( !v3 ) { *globals_fast = *(_DWORD *)(v1 + 16); _Unwind_DeleteException((_Unwind_Exception *)(v1 + 48)); return; } if ( v3 == -1 ) std::terminate(); } *(_DWORD *)(v1 + 20) = v3; } } //----- (004D7F80) -------------------------------------------------------- _DWORD *__cdecl __cxa_free_dependent_exception(unsigned int a1) { struct type_info *v2; // [esp+0h] [ebp-Ch] void (__cdecl *v3)(void *); // [esp+4h] [ebp-8h] if ( a1 <= dword_4E837C || a1 >= dword_4E8380 + dword_4E837C ) return (_DWORD *)__mingw_free(a1); else return `anonymous namespace'::pool::free(a1, v2, v3); } // 4D7F9B: variable 'v2' is possibly undefined // 4D7F9B: variable 'v3' is possibly undefined // 4E837C: using guessed type int dword_4E837C; // 4E8380: using guessed type int dword_4E8380; //----- (004D7FC0) -------------------------------------------------------- void __cdecl __cxa_free_exception(void *a1) { char *v1; // eax struct type_info *v2; // [esp+0h] [ebp-Ch] void (__cdecl *v3)(void *); // [esp+4h] [ebp-8h] v1 = (char *)a1 - 96; if ( (char *)a1 - 96 <= (char *)dword_4E837C || (unsigned int)v1 >= dword_4E8380 + dword_4E837C ) __mingw_free((unsigned int)a1 - 96); else `anonymous namespace'::pool::free((int)v1, v2, v3); } // 4D7FDE: variable 'v2' is possibly undefined // 4D7FDE: variable 'v3' is possibly undefined // 4E837C: using guessed type int dword_4E837C; // 4E8380: using guessed type int dword_4E8380; //----- (004D8000) -------------------------------------------------------- void *__cdecl __cxa_get_exception_ptr(void *a1) { return (void *)*((_DWORD *)a1 - 2); } //----- (004D8010) -------------------------------------------------------- _DWORD *__cxa_get_globals() { _DWORD *v0; // ebx _DWORD *ptr; // eax v0 = &eh_globals; if ( byte_4E824C ) { v0 = __gthr_win32_getspecific(init); if ( !v0 ) { ptr = malloc(8u); v0 = ptr; if ( !ptr || __gthr_win32_setspecific(init, ptr) ) std::terminate(); *v0 = 0; v0[1] = 0; } } return v0; } // 4E824C: using guessed type char byte_4E824C; //----- (004D8080) -------------------------------------------------------- void *__cxa_get_globals_fast() { if ( byte_4E824C ) return __gthr_win32_getspecific(init); else return &eh_globals; } // 4E824C: using guessed type char byte_4E824C; //----- (004D80B0) -------------------------------------------------------- void __cdecl __cxa_guard_abort(__guard *a1) { *((_BYTE *)a1 + 1) = 0; if ( _CRT_MT ) { if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) __cxa_guard_abort_cold(); } } // 4D9C50: using guessed type void __noreturn __cxa_guard_abort_cold(void); // 15412D0: using guessed type int _CRT_MT; //----- (004D80F0) -------------------------------------------------------- int __cdecl __cxa_guard_acquire(__guard *a1) { int result; // eax void (__cdecl *v2)(void *); // [esp+24h] [ebp+8h] if ( *(_BYTE *)a1 ) return 0; result = _CRT_MT; if ( _CRT_MT ) { __gthr_win32_once(&`anonymous namespace'::get_static_mutex(void)::once, `anonymous namespace'::init); if ( _CRT_MT ) { if ( __gthr_win32_recursive_mutex_lock(`anonymous namespace'::static_mutex) ) __cxa_guard_acquire_cold((struct type_info *)a1, v2); if ( !*(_BYTE *)a1 ) goto LABEL_9; if ( _CRT_MT && __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) __gnu_cxx::__throw_concurrence_unlock_error(); } else if ( !*(_BYTE *)a1 ) { LABEL_9: if ( *((_BYTE *)a1 + 1) ) __cxxabiv1::throw_recursive_init_exception(); goto LABEL_5; } return 0; } if ( *(_BYTE *)a1 ) return result; if ( *((_BYTE *)a1 + 1) ) __cxxabiv1::throw_recursive_init_exception(); LABEL_5: *((_BYTE *)a1 + 1) = 1; return 1; } // 15412D0: using guessed type int _CRT_MT; //----- (004D81A0) -------------------------------------------------------- void __cdecl __cxa_guard_release(__guard *a1) { *((_BYTE *)a1 + 1) = 0; *(_BYTE *)a1 = 1; if ( _CRT_MT ) { if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) __cxa_guard_release_cold(); } } // 4D9C68: using guessed type void __noreturn __cxa_guard_release_cold(void); // 15412D0: using guessed type int _CRT_MT; //----- (004D81E0) -------------------------------------------------------- int __cdecl __cxa_init_primary_exception(int a1, int a2, int a3) { void (*terminate)(void); // eax int result; // eax *(_DWORD *)(a1 - 80) = a2; *(_DWORD *)(a1 - 96) = 0; *(_DWORD *)(a1 - 76) = a3; *(_DWORD *)(a1 - 72) = std::get_unexpected(); terminate = std::get_terminate(); *(_DWORD *)(a1 - 32) = 1126902528; *(_DWORD *)(a1 - 68) = terminate; result = a1 - 96; *(_DWORD *)(a1 - 28) = 1196315971; *(_DWORD *)(a1 - 24) = __gxx_exception_cleanup; return result; } //----- (004D8230) -------------------------------------------------------- void __noreturn __cxa_pure_virtual(void) { write(2, "pure virtual method called\n", 0x1Bu); std::terminate(); } //----- (004D8260) -------------------------------------------------------- void __noreturn __cxa_rethrow(void) { int *globals; // eax int v1; // edx globals = __cxa_get_globals(); v1 = *globals; ++globals[1]; if ( v1 ) { if ( ((unsigned int)(*(_DWORD *)(v1 + 48) - 1126902528) > 1) + ((unsigned __int64)(*(_QWORD *)(v1 + 48) - 0x474E5543432B2B00LL) >> 32) ) { *globals = 0; } else { *(_DWORD *)(v1 + 20) = -*(_DWORD *)(v1 + 20); } _Unwind_Resume_or_Rethrow((int)globals, v1, (_Unwind_Exception *)(v1 + 48)); } std::terminate(); } //----- (004D82C0) -------------------------------------------------------- void __cdecl __noreturn __cxa_throw(void *a1, struct type_info *lptinfo, void (__cdecl *a3)(void *)) { _DWORD *globals; // eax _DWORD *v4; // ebx void (*terminate)(void); // eax globals = __cxa_get_globals(); ++globals[1]; *((_DWORD *)a1 - 24) = 0; v4 = (char *)a1 - 32; *((_DWORD *)a1 - 20) = lptinfo; *((_DWORD *)a1 - 19) = a3; *((_DWORD *)a1 - 18) = std::get_unexpected(); terminate = std::get_terminate(); *v4 = 1126902528; *((_DWORD *)a1 - 17) = terminate; v4[1] = 1196315971; v4[2] = __gxx_exception_cleanup; *((_DWORD *)a1 - 24) = 1; _Unwind_RaiseException((_Unwind_Exception *)a1 - 1); __cxa_begin_catch((char *)a1 - 32); std::terminate(); } //----- (004D8330) -------------------------------------------------------- void *__cdecl __dynamic_cast( const void *lpsrc, const struct __class_type_info *lpstype, const struct __class_type_info *lpdtype, ptrdiff_t s2d) { int v4; // edx int v5; // ecx int *v6; // edx int v7; // eax char *v8; // edx void *result; // eax char *v10; // [esp+48h] [ebp-30h] BYREF int v11; // [esp+4Ch] [ebp-2Ch] int v12; // [esp+50h] [ebp-28h] int v13; // [esp+54h] [ebp-24h] int v14; // [esp+58h] [ebp-20h] v4 = *(_DWORD *)(*(_DWORD *)lpsrc - 8); v5 = *(_DWORD *)(*(_DWORD *)lpsrc - 4); v10 = 0; v11 = 0; v6 = (int *)((char *)lpsrc + v4); v12 = 0; v7 = *v6; v13 = 0; v14 = 16; if ( *(_DWORD *)(v7 - 4) != v5 ) return 0; (*(void (__thiscall **)(int, ptrdiff_t, int, const struct __class_type_info *, int *, const struct __class_type_info *, const void *, char **))(*(_DWORD *)v5 + 28))( v5, s2d, 6, lpdtype, v6, lpstype, lpsrc, &v10); v8 = v10; result = v10; if ( !v10 ) return 0; if ( (v13 & 6) != 6 && ((unsigned __int8)v12 & (unsigned __int8)v11 & 6) != 6 ) { if ( (v12 & 5) == 4 || v13 ) return 0; if ( s2d < 0 ) { if ( s2d == -2 || ((*(int (__thiscall **)(const struct __class_type_info *, ptrdiff_t, char *, const struct __class_type_info *, const void *))(*(_DWORD *)lpdtype + 32))( lpdtype, s2d, v10, lpstype, lpsrc) & 6) != 6 ) { return 0; } return v10; } else if ( lpsrc != &v10[s2d] ) { return 0; } return v8; } return result; } //----- (004D8440) -------------------------------------------------------- int __cdecl __gxx_personality_v0(int a1, int a2, __int64 a3, _Unwind_Exception *a4, _Unwind_Context *context) { int result; // eax int *v6; // ebx _Unwind_Ptr IPInfo; // eax unsigned int v8; // esi char v9; // bp int *v10; // eax char *encoded_value_with_base; // eax char v12; // bl int *v13; // ebp int *v14; // eax char *v15; // eax char v16; // bl int *v17; // ebp int *v18; // eax int *v19; // ecx int v20; // ebp char *v21; // eax int v22; // ecx char v23; // dl int v24; // eax int *v25; // edx char *v26; // ebx int v27; // ebp unsigned int v28; // ecx char v29; // dl int v30; // eax char *v31; // edx int v32; // esi unsigned int v33; // ecx char *v34; // edi char v35; // bl int v36; // eax char *v37; // eax char v38; // di char *v39; // ebx int v40; // ecx char *v41; // edi char *v42; // edx int v43; // esi char v44; // bl int v45; // eax int v46; // eax char v47; // al int ttype_entry; // eax _Unwind_Exception *v49; // eax _Unwind_Exception_Cleanup_Fn exception_cleanup; // [esp+18h] [ebp-74h] _Unwind_Word v51; // [esp+1Ch] [ebp-70h] bool v52; // [esp+22h] [ebp-6Ah] char v53; // [esp+23h] [ebp-69h] _Unwind_Word val; // [esp+24h] [ebp-68h] unsigned __int64 v55; // [esp+28h] [ebp-64h] char *private_2; // [esp+30h] [ebp-5Ch] int **v57; // [esp+34h] [ebp-58h] int v58; // [esp+3Ch] [ebp-50h] _Unwind_Exception *v59; // [esp+44h] [ebp-48h] BYREF int ip_before_insn; // [esp+48h] [ebp-44h] BYREF unsigned __int8 v61[4]; // [esp+4Ch] [ebp-40h] BYREF unsigned __int8 v62[4]; // [esp+50h] [ebp-3Ch] BYREF unsigned __int8 v63[4]; // [esp+54h] [ebp-38h] BYREF int v64; // [esp+58h] [ebp-34h] BYREF int v65; // [esp+5Ch] [ebp-30h] _Unwind_Ptr v66; // [esp+60h] [ebp-2Ch] int v67; // [esp+64h] [ebp-28h] unsigned int v68; // [esp+68h] [ebp-24h] char v69; // [esp+6Ch] [ebp-20h] char v70; // [esp+6Dh] [ebp-1Fh] v59 = 0; ip_before_insn = 0; if ( a1 != 1 ) return 3; v55 = a3 - 0x474E5543432B2B00LL; v52 = ((unsigned int)v55 > 1) + HIDWORD(v55) == 0; v53 = v52 && a2 == 6; if ( v53 ) { val = *(&a4[-1].private_2 + 1); if ( val ) { exception_cleanup = a4[-1].exception_cleanup; private_2 = (char *)a4[-1].private_2; goto LABEL_5; } goto LABEL_19; } private_2 = (char *)_Unwind_GetLanguageSpecificData(context); if ( !private_2 ) return 8; v6 = (int *)parse_lsda_header(context, private_2, (int)&v64); v66 = base_of_encoded_value(v69, context); IPInfo = _Unwind_GetIPInfo(context, &ip_before_insn); v8 = (__PAIR64__(IPInfo, ip_before_insn) - 1) >> 32; if ( (unsigned int)v6 >= v68 ) { LABEL_15: if ( (a2 & 1) != 0 ) { exception_cleanup = 0; val = 0; v51 = 0; LABEL_17: result = 6; if ( v55 <= 1 ) { v25 = (int *)v59; a4[-1].exception_cleanup = exception_cleanup; *(&a4[-1].private_2 + 2) = (_Unwind_Word)v25; a4[-1].private_1 = v51; a4[-1].private_2 = (_Unwind_Word)private_2; *(&a4[-1].private_2 + 1) = val; } return result; } if ( (a2 & 8) != 0 || __PAIR64__(a2 & 8, 1) < v55 ) std::terminate(); LABEL_19: __cxa_call_terminate(a4); } while ( 1 ) { v9 = v70; v10 = (int *)base_of_encoded_value(v70, 0); encoded_value_with_base = read_encoded_value_with_base(v9, v10, v6, (int *)v61); v12 = v70; v13 = (int *)encoded_value_with_base; v14 = (int *)base_of_encoded_value(v70, 0); v15 = read_encoded_value_with_base(v12, v14, v13, (int *)v62); v16 = v70; v17 = (int *)v15; v18 = (int *)base_of_encoded_value(v70, 0); v19 = v17; v20 = 0; v21 = read_encoded_value_with_base(v16, v18, v19, (int *)v63); v22 = 0; v6 = (int *)v21; do { v23 = *(_BYTE *)v6; v6 = (int *)((char *)v6 + 1); v24 = (v23 & 0x7F) << v22; v22 += 7; v20 |= v24; } while ( v23 < 0 ); if ( v64 + *(_DWORD *)v61 > v8 ) goto LABEL_15; if ( *(_DWORD *)v62 + v64 + *(_DWORD *)v61 > v8 ) break; if ( v68 <= (unsigned int)v6 ) goto LABEL_15; } if ( !*(_DWORD *)v63 ) return 8; val = v65 + *(_DWORD *)v63; if ( !v20 ) { if ( v65 + *(_DWORD *)v63 ) goto LABEL_23; return 8; } v51 = v68 + v20 - 1; if ( !val ) return 8; if ( v68 + v20 == 1 ) { LABEL_23: exception_cleanup = (_Unwind_Exception_Cleanup_Fn)(a2 & 1); if ( (a2 & 1) == 0 ) goto LABEL_7; return 8; } v57 = &`typeinfo for'__cxxabiv1::__forced_unwind; if ( (a2 & 8) == 0 ) { v57 = &`typeinfo for'__cxxabiv1::__foreign_exception; if ( __PAIR64__(a2 & 8, 1) >= v55 ) { v49 = a4 + 1; if ( (a4->exception_class & 1) != 0 ) v49 = (_Unwind_Exception *)a4[-2].private_2; v59 = v49; v57 = (int **)v49[-3].private_2; } } while ( 1 ) { v26 = (char *)v51; v27 = 0; v28 = 0; do { v29 = *v26++; v30 = (v29 & 0x7F) << v28; v28 += 7; v27 |= v30; } while ( v29 < 0 ); if ( v28 <= 0x1F && (v29 & 0x40) != 0 ) v27 |= -(1 << v28); exception_cleanup = (_Unwind_Exception_Cleanup_Fn)v27; v31 = v26; v32 = 0; v33 = 0; v34 = v26; do { v35 = *v31++; v36 = (v35 & 0x7F) << v33; v33 += 7; v32 |= v36; } while ( v35 < 0 ); v37 = v34; v38 = v35; v39 = v37; if ( v33 <= 0x1F && (v38 & 0x40) != 0 ) v32 |= -(1 << v33); if ( !v27 ) { v53 = 1; goto LABEL_53; } if ( v27 <= 0 ) break; ttype_entry = get_ttype_entry((int)&v64, v27); if ( !ttype_entry || v57 && (unsigned __int8)get_adjusted_ptr(ttype_entry, (int)v57, (int **)&v59) ) goto LABEL_59; LABEL_53: if ( !v32 ) { if ( v53 ) goto LABEL_23; return 8; } v51 = (_Unwind_Word)&v39[v32]; } if ( (a2 & 8) == 0 && v52 && v57 ) { v47 = check_exception_spec((int)&v64, (int)v57, (int *)v59, v27) ^ 1; } else { v58 = v32; v40 = 0; v41 = v37; v42 = (char *)(v67 + ~v27); v43 = 0; do { v44 = *v42++; v45 = (v44 & 0x7F) << v40; v40 += 7; v43 |= v45; } while ( v44 < 0 ); v46 = v43; v32 = v58; v39 = v41; v47 = v46 == 0; } if ( !v47 ) goto LABEL_53; LABEL_59: if ( (a2 & 1) != 0 ) goto LABEL_17; if ( (a2 & 8) != 0 || v55 > 1 ) { if ( v27 < 0 ) std::unexpected(); goto LABEL_7; } LABEL_5: if ( (int)exception_cleanup < 0 ) { parse_lsda_header(context, private_2, (int)&v64); v66 = base_of_encoded_value(v69, context); *(&a4[-1].private_2 + 1) = base_of_encoded_value(v69, context); } LABEL_7: _Unwind_SetGR((int)context, 0, (int)a4); _Unwind_SetGR((int)context, 2, (int)exception_cleanup); _Unwind_SetIP(context, val); return 7; } // 4D9AF8: using guessed type void __noreturn __gxx_personality_v0_cold(void); // 4F118C: using guessed type int *`typeinfo for'__cxxabiv1::__forced_unwind; // 4F11A0: using guessed type int *`typeinfo for'__cxxabiv1::__foreign_exception; //----- (004D8A00) -------------------------------------------------------- void __cdecl __tcf_0_1() { if ( byte_4E824C ) __gthr_win32_key_delete(init); } // 4E824C: using guessed type char byte_4E824C; //----- (004D8A30) -------------------------------------------------------- void __cdecl __tcf_0_2() { if ( _CRT_MT ) __gthr_win32_mutex_destroy(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); } // 15412D0: using guessed type int _CRT_MT; //----- (004D8A60) -------------------------------------------------------- void __cdecl __tcf_0_3() { if ( _CRT_MT ) __gthr_win32_mutex_destroy(&`anonymous namespace'::get_locale_mutex(void)::locale_mutex); } // 15412D0: using guessed type int _CRT_MT; //----- (004D8A90) -------------------------------------------------------- void __cdecl __tcf_0_4() { if ( _CRT_MT ) __gthr_win32_mutex_destroy(&`anonymous namespace'::emergency_pool); } // 15412D0: using guessed type int _CRT_MT; //----- (004D8AC0) -------------------------------------------------------- void __cdecl __tcf_0_5(std::_V2::error_category *a1) { `anonymous namespace'::__io_category_instance(void)::__ec = &off_4F500C; std::_V2::error_category::~error_category(a1); } // 4E9B50: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); // 4F500C: using guessed type void (__cdecl *off_4F500C)(_anonymous_namespace_::io_error_category *__hidden this); //----- (004D8B00) -------------------------------------------------------- int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // ebx int v4; // ebx int v5; // edi char **v6; // esi int v7; // eax bool v8; // dl int v9; // edi char v10; // bl int v11; // esi void **v12; // ecx _BYTE *v13; // eax char v14; // bl char v15; // al int v16; // edx char v17; // al void **v18; // ebx _DWORD *v19; // eax FILE *v20; // eax unsigned int i; // esi int File; // eax void **v23; // ebx const char *v24; // eax int j; // ebx int v26; // edi int *v27; // edx char v28; // al unsigned int *v29; // esi void **v30; // eax unsigned int v31; // edi int CommHead; // eax int PageCss; // eax std::ostream::sentry *v34; // eax std::ostream::sentry *v35; // eax void *v36; // eax unsigned int *v37; // eax void **v39; // [esp-3Ch] [ebp-298h] void (__cdecl *v40)(void *); // [esp-38h] [ebp-294h] int v41; // [esp+0h] [ebp-25Ch] char v42; // [esp+5h] [ebp-257h] unsigned __int8 v43; // [esp+6h] [ebp-256h] char v44; // [esp+7h] [ebp-255h] const char **v45; // [esp+8h] [ebp-254h] char v46; // [esp+10h] [ebp-24Ch] char v47; // [esp+11h] [ebp-24Bh] char v48; // [esp+12h] [ebp-24Ah] char v49; // [esp+13h] [ebp-249h] char *FileName; // [esp+14h] [ebp-248h] int v51; // [esp+18h] [ebp-244h] int v52; // [esp+1Ch] [ebp-240h] std::ostream::sentry *v53; // [esp+1Ch] [ebp-240h] std::ostream::sentry *v54; // [esp+1Ch] [ebp-240h] bool Streama; // [esp+20h] [ebp-23Ch] FILE *Stream; // [esp+20h] [ebp-23Ch] void **v57; // [esp+30h] [ebp-22Ch] BYREF void **v58; // [esp+34h] [ebp-228h] int v59; // [esp+38h] [ebp-224h] void **v60; // [esp+3Ch] [ebp-220h] BYREF int v61; // [esp+40h] [ebp-21Ch] int v62; // [esp+44h] [ebp-218h] void **v63; // [esp+48h] [ebp-214h] BYREF char *v64; // [esp+4Ch] [ebp-210h] char *v65; // [esp+50h] [ebp-20Ch] void *v66[6]; // [esp+54h] [ebp-208h] BYREF void *v67[6]; // [esp+6Ch] [ebp-1F0h] BYREF int v68; // [esp+84h] [ebp-1D8h] BYREF int v69; // [esp+88h] [ebp-1D4h] BYREF int v70; // [esp+8Ch] [ebp-1D0h] int *v71; // [esp+90h] [ebp-1CCh] int *v72; // [esp+94h] [ebp-1C8h] int v73; // [esp+98h] [ebp-1C4h] int v74[2]; // [esp+9Ch] [ebp-1C0h] BYREF char v75; // [esp+A4h] [ebp-1B8h] BYREF char *v76; // [esp+B4h] [ebp-1A8h] BYREF int v77; // [esp+B8h] [ebp-1A4h] char v78; // [esp+BCh] [ebp-1A0h] BYREF char *Buffer[2]; // [esp+CCh] [ebp-190h] BYREF char v80; // [esp+D4h] [ebp-188h] BYREF void *v81[2]; // [esp+E4h] [ebp-178h] BYREF char v82; // [esp+ECh] [ebp-170h] BYREF int v83; // [esp+FCh] [ebp-160h] BYREF int v84[5]; // [esp+100h] [ebp-15Ch] BYREF void *v85[2]; // [esp+114h] [ebp-148h] BYREF char v86; // [esp+11Ch] [ebp-140h] BYREF void *v87[2]; // [esp+12Ch] [ebp-130h] BYREF char v88; // [esp+134h] [ebp-128h] BYREF int v89; // [esp+144h] [ebp-118h] BYREF int v90; // [esp+148h] [ebp-114h] char v91[16]; // [esp+14Ch] [ebp-110h] BYREF int v92[2]; // [esp+15Ch] [ebp-100h] BYREF char v93; // [esp+164h] [ebp-F8h] BYREF void *v94[2]; // [esp+174h] [ebp-E8h] BYREF char v95[4]; // [esp+17Ch] [ebp-E0h] BYREF int v96[3]; // [esp+180h] [ebp-DCh] BYREF _DWORD v97[52]; // [esp+18Ch] [ebp-D0h] BYREF v97[48] = &argc; v52 = argc; v45 = argv; __main(); std::string::basic_string(v66, (char *)&byte_4EA251); std::string::basic_string(v67, "./app.wxss"); v71 = &v69; v72 = &v69; v57 = 0; v58 = 0; v59 = 0; v69 = 0; v70 = 0; v73 = 0; v74[0] = (int)&v75; v74[1] = 0; v75 = 0; if ( v52 <= 1 ) { v3 = Usage(v52, v45); goto LABEL_106; } v4 = 1; v60 = 0; v61 = 0; v62 = 0; v76 = &v78; v77 = 0; v78 = 0; do { std::string::basic_string(v94, "--config-path"); v5 = v4; v6 = (char **)&v45[v4]; v7 = std::string::compare((int)v94, *v6); v8 = 0; if ( !v7 ) v8 = v4 + 1 < v52; Streama = v8; std::string::_M_dispose(v94); if ( Streama ) { ++v4; std::string::operator=((unsigned int *)&v76, (char *)v45[v5 + 1]); } else { std::string::basic_string(v94, *v6); std::vector::emplace_back(&v60, v94); std::string::_M_dispose(v94); } ++v4; } while ( v52 > v4 ); if ( v77 ) { v90 = 0; v89 = (int)v91; v91[0] = 0; ReadFile(v76, (unsigned int *)&v89); while ( v90 ) { std::string::basic_string((void **)v92, "\n"); GetNextArg(v94, &v89, (int)v92); std::vector::emplace_back(&v60, v94); std::string::_M_dispose(v94); std::string::_M_dispose((void **)v92); } std::string::_M_dispose((void **)&v89); } v9 = 0; v41 = 0; v48 = 0; v10 = 0; v42 = 0; v43 = 0; v49 = 0; v51 = -1431655765 * ((v61 - (int)v60) >> 3); v47 = 0; v44 = 0; v46 = 0; FileName = 0; while ( v9 < v51 ) { v11 = 6 * v9; v12 = &v60[6 * v9]; v13 = *v12; if ( *(_BYTE *)*v12 != 45 ) // '-' { v39 = &v60[6 * v9]; if ( !v10 ) { std::string::basic_string(v94, (int)v39); std::vector::emplace_back(&v57, v94); std::string::_M_dispose(v94); goto LABEL_54; } std::string::basic_string(v94, (int)v39); std::string::operator=(v66, v94); std::string::_M_dispose(v94); goto LABEL_53; } v14 = v13[1]; switch ( v14 ) { case 'o': if ( v51 > v9 + 1 ) { ++v9; FileName = (char *)v60[v11 + 6]; LABEL_53: v10 = 0; goto LABEL_54; } break; case 's': v15 = v13[2]; if ( v15 == 116 ) { v46 = 1; v10 = 0; goto LABEL_54; } v16 = v9 + 1; if ( v15 == 100 ) { if ( v51 > v16 ) { std::string::operator=((unsigned int *)v74, (char *)v60[v11 + 6]); v47 = 1; ++v9; v10 = 0; goto LABEL_54; } } else if ( v51 > v16 ) { v44 = 1; ++v9; v10 = 0; goto LABEL_54; } break; case 'l': v17 = v13[2]; if ( v17 == 99 ) goto LABEL_53; if ( v17 == 108 ) { v48 = 1; goto LABEL_53; } break; case 'd': if ( v13[2] == 98 ) { v49 = 1; v10 = 0; goto LABEL_54; } break; case 'j': if ( v13[2] == 115 ) { v43 = 1; v10 = 0; goto LABEL_54; } break; case 'c': if ( v13[2] == 112 ) { v10 = 1; goto LABEL_54; } break; default: if ( v14 == 112 && v13[2] == 99 ) { v42 = 1; ++v9; v41 = atoi((const char *)v60[v11 + 6]); goto LABEL_53; } break; } v10 = 0; if ( !std::string::compare((int)v12, "--subpackage") && v51 > v9 + 1 ) { v93 = 0; v92[1] = 0; v18 = &v60[v11 + 6]; v92[0] = (int)&v93; std::string::reserve(v92, (unsigned int)v60[v11 + 7] + 2); v40 = (void (__cdecl *)(void *))std::string::append(v92, "./", 2u); std::string::append(v92, (int)v18); v19 = std::string::append(v92, "/app.wxss"); std::string::basic_string(v94, v19); std::string::operator=(v67, v94); std::string::_M_dispose(v94); std::string::_M_dispose((void **)v92); ++v9; goto LABEL_53; } LABEL_54: ++v9; } if ( v58 == v57 && !v44 && !v47 ) { v3 = Usage(v52, v45); goto LABEL_90; } if ( FileName && *FileName ) v20 = fopen(FileName, "w"); else v20 = &__iob[1]; Stream = v20; if ( !v47 ) { for ( i = 0; -1431655765 * (((char *)v58 - (char *)v57) >> 3) > i; ++i ) { File = ReadFile((char *)v57[6 * i], (unsigned int *)v74); v23 = &v57[6 * i]; if ( File ) { v24 = (const char *)*v23; v3 = 1; fprintf(&__iob[2], "%s not found\n", v24); goto LABEL_90; } std::string::basic_string(v94, (int)v23); std::string::basic_string(v97, (int)v74); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( &v68, v94); std::pair::~pair(v94); } } Buffer[1] = 0; Buffer[0] = &v80; v80 = 0; v81[0] = &v82; v81[1] = 0; v82 = 0; v63 = 0; v64 = 0; v65 = 0; if ( !v42 ) { if ( !v48 ) { v36 = WXSS::LintAndParseCSSList(&v68, (int)v57, (unsigned int *)Buffer, (int)v81, 0, v43, v49, v46, (int)v66); goto LABEL_99; } LABEL_86: v84[2] = (int)v84; v84[3] = (int)v84; v85[0] = &v86; v84[0] = 0; v84[1] = 0; v84[4] = 0; v85[1] = 0; v86 = 0; v87[0] = &v88; v87[1] = 0; v88 = 0; v29 = (unsigned int *)operator new((struct type_info *)0xB0, v40); WXSS::XCompiler::XCompiler((int)v29, (unsigned int)v29, &v68, v49, (int)v66); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase((void **)v29[34]); v29[35] = (unsigned int)(v29 + 33); v29[36] = (unsigned int)(v29 + 33); v30 = (void **)v29[40]; v29[34] = 0; v29[37] = 0; std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(v30); v29[41] = (unsigned int)(v29 + 39); v29[42] = (unsigned int)(v29 + 39); v29[40] = 0; v29[43] = 0; std::string::_M_assign((int)v87, (int)(v29 + 2)); v31 = *v29; if ( !*v29 ) { CommHead = WXSS::XCompiler::GetCommHead((int *)v29, &v63, v85, 1, (int *)v67); v3 = CommHead; if ( CommHead ) fprintf(&__iob[2], "ERR: GetCommHead ret %d", CommHead); while ( -1431655765 * ((v64 - (char *)v63) >> 3) > v31 ) { v90 = 0; v89 = (int)v91; v91[0] = 0; WXML::Rewrite::ToStringCode((int)v92, (int *)&v63[6 * v31]); PageCss = WXSS::XCompiler::GetPageCss((int *)v29, v92, &v89, 0); v3 = PageCss; if ( PageCss ) fprintf(&__iob[2], "INFO: GetPageCss fail ret %d", PageCss); std::string::basic_string(v94, (int)&v63[6 * v31]); std::string::basic_string(v97, (int)&v89); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( &v83, v94); ++v31; std::pair::~pair(v94); std::string::_M_dispose((void **)v92); std::string::_M_dispose((void **)&v89); } std::basic_stringstream,std::allocator>::basic_stringstream((int)v94); v54 = std::operator<<>((std::ostream::sentry *)v95, "{\"common\":\""); EscapeToJsonString((int)v92, (int)v85); v34 = std::operator<<(v54, v92); std::operator<<>(v34, "\",\"pageWxss\":"); std::string::_M_dispose((void **)v92); DictToJsonString((int)v92, (int)&v83); v35 = std::operator<<((std::ostream::sentry *)v95, v92); std::operator<<>(v35, "}"); std::string::_M_dispose((void **)v92); std::stringbuf::str((int)v92, v96); std::string::operator=(Buffer, v92); std::string::_M_dispose((void **)v92); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v94); std::string::_M_dispose(v87); std::string::_M_dispose(v85); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v83); goto LABEL_100; } fprintf( &__iob[2], "ERR: wxss GetCompiledResult: %s, error file count: %d, ret %d", (const char *)v87[0], v29[1], *v29); std::string::_M_dispose(v87); std::string::_M_dispose(v85); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v83); LABEL_88: v3 = 1; goto LABEL_89; } for ( j = 0; v41 > j; ++j ) { if ( v64 == v65 ) { std::vector::_M_realloc_insert(v64, &v57[6 * j]); v40 = (void (__cdecl *)(void *))v9; } else { std::string::basic_string(v64, (int)&v57[6 * j]); v64 += 24; } } v26 = v70; v27 = &v69; while ( v26 ) { v53 = (std::ostream::sentry *)v27; v28 = std::operator<(v26 + 16, (int)v67); v27 = (int *)v53; if ( v28 ) { v26 = *(_DWORD *)(v26 + 12); } else { v27 = (int *)v26; v26 = *(_DWORD *)(v26 + 8); } } if ( v27 == &v69 || (unsigned __int8)std::operator<((int)v67, (int)(v27 + 4)) ) { v37 = std::map::operator[](&v68, (int)v67); std::string::operator=(v37, (char *)&byte_4EA251); } if ( v48 ) goto LABEL_86; v36 = WXSS::NewLintAndParseCSSList( (unsigned int)Buffer, &v68, (int *)&v63, (unsigned int *)Buffer, (int)v81, 0, v49, (int)v66, (int *)v67); LABEL_99: v3 = (int)v36; LABEL_100: if ( v3 ) { fprintf(&__iob[2], "ERR: %s\nerror file count: %d\n", (const char *)v81[0], 0); goto LABEL_88; } fputs(Buffer[0], Stream); fclose(Stream); LABEL_89: std::vector::~vector(&v63); std::string::_M_dispose(v81); std::string::_M_dispose((void **)Buffer); LABEL_90: std::string::_M_dispose((void **)&v76); std::vector::~vector(&v60); LABEL_106: std::string::_M_dispose((void **)v74); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v68); std::vector::~vector(&v57); std::string::_M_dispose(v67); std::string::_M_dispose(v66); return v3; } // 4D937C: variable 'v40' is possibly undefined // 4B5908: using guessed type _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); // 4D8B00: using guessed type _DWORD var_D0[52]; // 4D8B00: using guessed type char var_E0[4]; // 4D8B00: using guessed type int var_DC[3]; //----- (004D99F2) -------------------------------------------------------- int _GLOBAL__sub_I__Z5UsageiPPKc() { std::ios_base::Init::Init(); return atexit(__tcf_1); } //----- (004D9A10) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXSS11RemoveQuoteERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE() { std::ios_base::Init::Init(); return atexit(__tcf_3); } //----- (004D9A30) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib6Parser5ParseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_RS7_S9_() { std::ios_base::Init::Init(); return atexit(__tcf_1_1); } //----- (004D9A50) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXSS9Tokenizer2TTE() { std::ios_base::Init::Init(); return atexit(__tcf_0_0); } //----- (004D9A70) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib12TransitTable10GetTopTypeEv() { std::ios_base::Init::Init(); return atexit(__tcf_1_2); } //----- (004D9A90) -------------------------------------------------------- int _GLOBAL__sub_I___cxa_get_globals_fast() { byte_4E824C = 0; if ( _CRT_MT ) byte_4E824C = __gthr_win32_key_create(&init, (void (*)(void *))eh_globals_dtor) == 0; return atexit(__tcf_0_1); } // 4E824C: using guessed type char byte_4E824C; // 15412D0: using guessed type int _CRT_MT; //----- (004D9AF8) -------------------------------------------------------- #error "4D9AFB: call analysis failed (funcsize=3)" //----- (004D9B08) -------------------------------------------------------- #error "4D9B0B: call analysis failed (funcsize=37)" //----- (004D9BA8) -------------------------------------------------------- #error "4D9BAB: call analysis failed (funcsize=3)" //----- (004D9BB8) -------------------------------------------------------- void __noreturn __cxxabiv1::throw_recursive_init_exception(void) { _DWORD *exception; // ebx exception = __cxa_allocate_exception(4u); __gnu_cxx::recursive_init_error::recursive_init_error(exception); __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::recursive_init_error, (void (__cdecl *)(void *))__gnu_cxx::recursive_init_error::~recursive_init_error); } // 4F12FC: using guessed type int *`typeinfo for'__gnu_cxx::recursive_init_error; //----- (004D9BEC) -------------------------------------------------------- #error "4D9BF3: call analysis failed (funcsize=7)" //----- (004D9C80) -------------------------------------------------------- #error "4D9C87: call analysis failed (funcsize=7)" //----- (004D9CAC) -------------------------------------------------------- #error "4D9CC3: call analysis failed (funcsize=5)" //----- (004D9D8C) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __usercall std::ios_base::Init::~Init(void *a1@) { __cxa_begin_catch(a1); __cxa_end_catch(); } // 4D9D97: positive sp value 1C has been found //----- (004D9D9C) -------------------------------------------------------- #error "4D9DA7: call analysis failed (funcsize=4)" //----- (004D9DAC) -------------------------------------------------------- #error "4D9DB6: call analysis failed (funcsize=7)" //----- (004D9DC4) -------------------------------------------------------- #error "4D9DD1: call analysis failed (funcsize=13)" //----- (004D9DEC) -------------------------------------------------------- #error "4D9DEF: call analysis failed (funcsize=5)" //----- (004D9E3C) -------------------------------------------------------- #error "4D9E3F: call analysis failed (funcsize=5)" //----- (004D9E60) -------------------------------------------------------- #error "4D9E63: call analysis failed (funcsize=6)" //----- (004D9F18) -------------------------------------------------------- #error "4D9F1F: call analysis failed (funcsize=7)" //----- (004D9FA4) -------------------------------------------------------- #error "4D9FAB: call analysis failed (funcsize=4)" //----- (004D9FB8) -------------------------------------------------------- #error "4D9FBD: call analysis failed (funcsize=9)" //----- (004DA09C) -------------------------------------------------------- #error "4DA0A3: call analysis failed (funcsize=7)" //----- (004DA0F0) -------------------------------------------------------- #error "4DA0F2: call analysis failed (funcsize=4)" //----- (004DA100) -------------------------------------------------------- #error "4DA103: call analysis failed (funcsize=4)" //----- (004DA110) -------------------------------------------------------- #error "4DA112: call analysis failed (funcsize=4)" //----- (004DA120) -------------------------------------------------------- #error "4DA123: call analysis failed (funcsize=4)" //----- (004DA130) -------------------------------------------------------- #error "4DA132: call analysis failed (funcsize=4)" //----- (004DA140) -------------------------------------------------------- #error "4DA143: call analysis failed (funcsize=4)" //----- (004DA150) -------------------------------------------------------- #error "4DA152: call analysis failed (funcsize=4)" //----- (004DA160) -------------------------------------------------------- #error "4DA163: call analysis failed (funcsize=4)" //----- (004DA170) -------------------------------------------------------- #error "4DA172: call analysis failed (funcsize=4)" //----- (004DA180) -------------------------------------------------------- #error "4DA183: call analysis failed (funcsize=4)" //----- (004DA190) -------------------------------------------------------- #error "4DA192: call analysis failed (funcsize=4)" //----- (004DA1A0) -------------------------------------------------------- #error "4DA1A3: call analysis failed (funcsize=4)" //----- (004DA1B0) -------------------------------------------------------- #error "4DA1B2: call analysis failed (funcsize=4)" //----- (004DA1C0) -------------------------------------------------------- #error "4DA1C3: call analysis failed (funcsize=4)" //----- (004DA1D0) -------------------------------------------------------- #error "4DA1D2: call analysis failed (funcsize=4)" //----- (004DA1E0) -------------------------------------------------------- #error "4DA1E3: call analysis failed (funcsize=4)" //----- (004DA1F0) -------------------------------------------------------- #error "4DA1F2: call analysis failed (funcsize=4)" //----- (004DA200) -------------------------------------------------------- #error "4DA203: call analysis failed (funcsize=4)" //----- (004DA210) -------------------------------------------------------- #error "4DA212: call analysis failed (funcsize=4)" //----- (004DA220) -------------------------------------------------------- #error "4DA223: call analysis failed (funcsize=4)" //----- (004DA230) -------------------------------------------------------- #error "4DA232: call analysis failed (funcsize=4)" //----- (004DA240) -------------------------------------------------------- #error "4DA243: call analysis failed (funcsize=4)" //----- (004DA250) -------------------------------------------------------- #error "4DA252: call analysis failed (funcsize=4)" //----- (004DA260) -------------------------------------------------------- #error "4DA263: call analysis failed (funcsize=4)" //----- (004DA270) -------------------------------------------------------- #error "4DA275: call analysis failed (funcsize=4)" //----- (004DA300) -------------------------------------------------------- #error "4DA302: call analysis failed (funcsize=6)" //----- (004DA3AC) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __usercall __noreturn std::locale::name(int a1@, void **a2@, int a3@, _Unwind_Exception *a4@) { volatile signed __int32 *v4; // eax char *v5; // ecx v4 = (volatile signed __int32 *)*a2; v5 = (char *)*a2 - 12; if ( *a2 != &unk_4E93FC ) { if ( _CRT_MT ) { a1 = _InterlockedExchangeAdd(v4 - 1, 0xFFFFFFFF); } else { a1 = *((_DWORD *)v4 - 1); *((_DWORD *)v4 - 1) = a1 - 1; } if ( a1 <= 0 ) std::string::_Rep::_M_destroy(v5, a3 - 25); } _Unwind_Resume((int)v4, a1, a4); } // 4DA3D8: positive sp value 4 has been found // 4DA3DC: variable 'v4' is possibly undefined // 4DA3DC: variable 'a1' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004DA3EC) -------------------------------------------------------- void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2) { int v2; // eax if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); } else { v2 = *((_DWORD *)this + 2); *((_DWORD *)this + 2) = v2 - 1; } if ( v2 <= 0 ) std::wstring::_Rep::_M_destroy((void *)this, a2); } // 15412D0: using guessed type int _CRT_MT; //----- (004DA420) -------------------------------------------------------- void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) { int v2; // eax if ( _CRT_MT ) { v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); } else { v2 = *((_DWORD *)this + 2); *((_DWORD *)this + 2) = v2 - 1; } if ( v2 <= 0 ) std::string::_Rep::_M_destroy((void *)this, a2); } // 15412D0: using guessed type int _CRT_MT; //----- (004DA454) -------------------------------------------------------- #error "4DA463: call analysis failed (funcsize=7)" //----- (004DA468) -------------------------------------------------------- #error "4DA477: call analysis failed (funcsize=7)" //----- (004DA47C) -------------------------------------------------------- #error "4DA48B: call analysis failed (funcsize=7)" //----- (004DA490) -------------------------------------------------------- #error "4DA49F: call analysis failed (funcsize=7)" //----- (004DA4A4) -------------------------------------------------------- #error "4DA4B3: call analysis failed (funcsize=7)" //----- (004DA4B8) -------------------------------------------------------- #error "4DA4C7: call analysis failed (funcsize=7)" //----- (004DA4CC) -------------------------------------------------------- #error "4DA4DB: call analysis failed (funcsize=7)" //----- (004DA4E0) -------------------------------------------------------- #error "4DA4EF: call analysis failed (funcsize=7)" //----- (004DA4F4) -------------------------------------------------------- #error "4DA4F6: call analysis failed (funcsize=6)" //----- (004DA63C) -------------------------------------------------------- #error "4DA644: call analysis failed (funcsize=5)" //----- (004DA654) -------------------------------------------------------- #error "4DA65D: call analysis failed (funcsize=8)" //----- (004DA678) -------------------------------------------------------- #error "4DA67A: call analysis failed (funcsize=4)" //----- (004DA690) -------------------------------------------------------- void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj() { if ( !`guard variable for'std::moneypunct::id ) `guard variable for'std::moneypunct::id = 1; if ( !`guard variable for'std::moneypunct::id ) `guard variable for'std::moneypunct::id = 1; if ( !`guard variable for'std::money_get>::id ) `guard variable for'std::money_get>::id = 1; if ( !`guard variable for'std::money_put>::id ) `guard variable for'std::money_put>::id = 1; if ( !`guard variable for'std::numpunct::id ) `guard variable for'std::numpunct::id = 1; if ( !`guard variable for'std::time_get>::id ) `guard variable for'std::time_get>::id = 1; if ( !`guard variable for'std::messages::id ) `guard variable for'std::messages::id = 1; if ( !`guard variable for'std::collate::id ) `guard variable for'std::collate::id = 1; } // 4E8100: using guessed type char `guard variable for'std::moneypunct::id; // 4E8108: using guessed type char `guard variable for'std::moneypunct::id; // 4E8120: using guessed type char `guard variable for'std::collate::id; // 4E8130: using guessed type char `guard variable for'std::messages::id; // 4E8140: using guessed type char `guard variable for'std::numpunct::id; // 4E8150: using guessed type char `guard variable for'std::time_get>::id; // 4E8160: using guessed type char `guard variable for'std::money_get>::id; // 4E8170: using guessed type char `guard variable for'std::money_put>::id; //----- (004DA720) -------------------------------------------------------- #error "4DA72F: call analysis failed (funcsize=7)" //----- (004DA734) -------------------------------------------------------- #error "4DA743: call analysis failed (funcsize=7)" //----- (004DA748) -------------------------------------------------------- #error "4DA757: call analysis failed (funcsize=7)" //----- (004DA75C) -------------------------------------------------------- #error "4DA76B: call analysis failed (funcsize=7)" //----- (004DA770) -------------------------------------------------------- #error "4DA77F: call analysis failed (funcsize=7)" //----- (004DA784) -------------------------------------------------------- #error "4DA793: call analysis failed (funcsize=7)" //----- (004DA798) -------------------------------------------------------- #error "4DA7A7: call analysis failed (funcsize=7)" //----- (004DA7AC) -------------------------------------------------------- #error "4DA7BE: call analysis failed (funcsize=8)" //----- (004DA7C4) -------------------------------------------------------- #error "4DA7C6: call analysis failed (funcsize=6)" //----- (004DA910) -------------------------------------------------------- void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj() { if ( !`guard variable for'std::moneypunct::id ) `guard variable for'std::moneypunct::id = 1; if ( !`guard variable for'std::moneypunct::id ) `guard variable for'std::moneypunct::id = 1; if ( !`guard variable for'std::money_get>::id ) `guard variable for'std::money_get>::id = 1; if ( !`guard variable for'std::money_put>::id ) `guard variable for'std::money_put>::id = 1; if ( !`guard variable for'std::numpunct::id ) `guard variable for'std::numpunct::id = 1; if ( !`guard variable for'std::time_get>::id ) `guard variable for'std::time_get>::id = 1; if ( !`guard variable for'std::messages::id ) `guard variable for'std::messages::id = 1; if ( !`guard variable for'std::collate::id ) `guard variable for'std::collate::id = 1; } // 4E8110: using guessed type char `guard variable for'std::moneypunct::id; // 4E8118: using guessed type char `guard variable for'std::moneypunct::id; // 4E8128: using guessed type char `guard variable for'std::collate::id; // 4E8138: using guessed type char `guard variable for'std::messages::id; // 4E8148: using guessed type char `guard variable for'std::numpunct::id; // 4E8158: using guessed type char `guard variable for'std::time_get>::id; // 4E8168: using guessed type char `guard variable for'std::money_get>::id; // 4E8178: using guessed type char `guard variable for'std::money_put>::id; //----- (004DA9A8) -------------------------------------------------------- void __noreturn std::__throw_bad_exception(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_4F607C; __cxa_throw(exception, (struct type_info *)&`typeinfo for'std::bad_exception, std::bad_exception::~bad_exception); } // 4F1B20: using guessed type int *`typeinfo for'std::bad_exception; // 4F607C: using guessed type void (__cdecl *off_4F607C)(std::bad_exception *__hidden this); //----- (004DA9D8) -------------------------------------------------------- void __noreturn std::__throw_bad_alloc(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_4F6DFC; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_alloc, (void (__cdecl *)(void *))std::bad_alloc::~bad_alloc); } // 4F20A8: using guessed type int *`typeinfo for'std::bad_alloc; // 4F6DFC: using guessed type void (__cdecl *off_4F6DFC)(std::bad_alloc *__hidden this); //----- (004DAA08) -------------------------------------------------------- void __noreturn std::__throw_bad_cast(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_4F6CE0; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_cast, (void (__cdecl *)(void *))std::bad_cast::~bad_cast); } // 4F1FE4: using guessed type int *`typeinfo for'std::bad_cast; // 4F6CE0: using guessed type void (__cdecl *off_4F6CE0)(std::bad_cast *__hidden this); //----- (004DAA38) -------------------------------------------------------- void __noreturn std::__throw_bad_typeid(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_4F5E7C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_typeid, (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); } // 4F19F0: using guessed type int `typeinfo for'std::bad_typeid; // 4F5E7C: using guessed type void (__cdecl *off_4F5E7C)(std::bad_typeid *__hidden this); //----- (004DAA68) -------------------------------------------------------- void __cdecl __noreturn std::__throw_logic_error(std::logic_error *a1) { void *exception; // ebx const char *v2; // [esp+4h] [ebp-14h] exception = __cxa_allocate_exception(8u); std::logic_error::logic_error(a1, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::logic_error, (void (__cdecl *)(void *))std::logic_error::~logic_error); } // 4DAA86: variable 'v2' is possibly undefined // 4F1AAC: using guessed type int *`typeinfo for'std::logic_error; //----- (004DAAB8) -------------------------------------------------------- void __cdecl __noreturn std::__throw_domain_error(std::domain_error *a1) { _DWORD *exception; // ebx const char *v2; // [esp+4h] [ebp-14h] exception = __cxa_allocate_exception(8u); std::domain_error::domain_error(exception, a1, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::domain_error, (void (__cdecl *)(void *))std::domain_error::~domain_error); } // 4DAAD6: variable 'v2' is possibly undefined // 4F1AE4: using guessed type int *`typeinfo for'std::domain_error; //----- (004DAB08) -------------------------------------------------------- void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *a1) { _DWORD *exception; // ebx const char *v2; // [esp+4h] [ebp-14h] exception = __cxa_allocate_exception(8u); std::invalid_argument::invalid_argument(exception, a1, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::invalid_argument, (void (__cdecl *)(void *))std::invalid_argument::~invalid_argument); } // 4DAB26: variable 'v2' is possibly undefined // 4F1D14: using guessed type int *`typeinfo for'std::invalid_argument; //----- (004DAB58) -------------------------------------------------------- void __cdecl __noreturn std::__throw_length_error(std::length_error *a1) { _DWORD *exception; // ebx const char *v2; // [esp+4h] [ebp-14h] exception = __cxa_allocate_exception(8u); std::length_error::length_error(exception, a1, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::length_error, (void (__cdecl *)(void *))std::length_error::~length_error); } // 4DAB76: variable 'v2' is possibly undefined // 4F1AF0: using guessed type int *`typeinfo for'std::length_error; //----- (004DABA8) -------------------------------------------------------- void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *a1) { _DWORD *exception; // ebx const char *v2; // [esp+4h] [ebp-14h] exception = __cxa_allocate_exception(8u); std::out_of_range::out_of_range(exception, a1, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::out_of_range, (void (__cdecl *)(void *))std::out_of_range::~out_of_range); } // 4DABC6: variable 'v2' is possibly undefined // 4F1AFC: using guessed type int *`typeinfo for'std::out_of_range; //----- (004DABF8) -------------------------------------------------------- #error "4DABFB: call analysis failed (funcsize=4)" //----- (004DAC08) -------------------------------------------------------- void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *a1) { void *exception; // ebx const char *v2; // [esp+4h] [ebp-14h] exception = __cxa_allocate_exception(8u); std::runtime_error::runtime_error((int)exception, a1, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::runtime_error, (void (__cdecl *)(void *))std::runtime_error::~runtime_error); } // 4DAC26: variable 'v2' is possibly undefined // 4F1B94: using guessed type int *`typeinfo for'std::runtime_error; //----- (004DAC58) -------------------------------------------------------- void __cdecl __noreturn std::__throw_range_error(std::range_error *a1) { _DWORD *exception; // ebx const char *v2; // [esp+4h] [ebp-14h] exception = __cxa_allocate_exception(8u); std::range_error::range_error(exception, a1, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::range_error, (void (__cdecl *)(void *))std::range_error::~range_error); } // 4DAC76: variable 'v2' is possibly undefined // 4F1AB8: using guessed type int *`typeinfo for'std::range_error; //----- (004DACA8) -------------------------------------------------------- void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *a1) { _DWORD *exception; // ebx const char *v2; // [esp+4h] [ebp-14h] exception = __cxa_allocate_exception(8u); std::overflow_error::overflow_error(exception, a1, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::overflow_error, (void (__cdecl *)(void *))std::overflow_error::~overflow_error); } // 4DACC6: variable 'v2' is possibly undefined // 4F1C20: using guessed type int *`typeinfo for'std::overflow_error; //----- (004DACF8) -------------------------------------------------------- void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *a1) { _DWORD *exception; // ebx const char *v2; // [esp+4h] [ebp-14h] exception = __cxa_allocate_exception(8u); std::underflow_error::underflow_error(exception, a1, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::underflow_error, (void (__cdecl *)(void *))std::underflow_error::~underflow_error); } // 4DAD16: variable 'v2' is possibly undefined // 4F1CE4: using guessed type int *`typeinfo for'std::underflow_error; //----- (004DAD48) -------------------------------------------------------- #error "4DAD69: call analysis failed (funcsize=9)" //----- (004DAD70) -------------------------------------------------------- #error "4DAD73: call analysis failed (funcsize=4)" //----- (004DADA0) -------------------------------------------------------- void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj() { if ( !`guard variable for'std::moneypunct::id ) `guard variable for'std::moneypunct::id = 1; if ( !`guard variable for'std::moneypunct::id ) `guard variable for'std::moneypunct::id = 1; if ( !`guard variable for'std::money_get>::id ) `guard variable for'std::money_get>::id = 1; if ( !`guard variable for'std::money_put>::id ) `guard variable for'std::money_put>::id = 1; if ( !`guard variable for'std::numpunct::id ) `guard variable for'std::numpunct::id = 1; if ( !`guard variable for'std::num_get>::id ) `guard variable for'std::num_get>::id = 1; if ( !`guard variable for'std::num_put>::id ) `guard variable for'std::num_put>::id = 1; if ( !`guard variable for'std::__timepunct::id ) `guard variable for'std::__timepunct::id = 1; if ( !`guard variable for'std::time_put>::id ) `guard variable for'std::time_put>::id = 1; if ( !`guard variable for'std::time_get>::id ) `guard variable for'std::time_get>::id = 1; if ( !`guard variable for'std::messages::id ) `guard variable for'std::messages::id = 1; if ( !`guard variable for'std::collate::id ) `guard variable for'std::collate::id = 1; } // 4E80D0: using guessed type char `guard variable for'std::moneypunct::id; // 4E80D8: using guessed type char `guard variable for'std::moneypunct::id; // 4E80F0: using guessed type char `guard variable for'std::__timepunct::id; // 4E8180: using guessed type char `guard variable for'std::collate::id; // 4E8190: using guessed type char `guard variable for'std::num_get>::id; // 4E81A0: using guessed type char `guard variable for'std::num_put>::id; // 4E81B0: using guessed type char `guard variable for'std::messages::id; // 4E81C0: using guessed type char `guard variable for'std::numpunct::id; // 4E81D0: using guessed type char `guard variable for'std::time_get>::id; // 4E81E0: using guessed type char `guard variable for'std::time_put>::id; // 4E81F0: using guessed type char `guard variable for'std::money_get>::id; // 4E8200: using guessed type char `guard variable for'std::money_put>::id; //----- (004DAE70) -------------------------------------------------------- void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj() { if ( !`guard variable for'std::moneypunct::id ) `guard variable for'std::moneypunct::id = 1; if ( !`guard variable for'std::moneypunct::id ) `guard variable for'std::moneypunct::id = 1; if ( !`guard variable for'std::money_get>::id ) `guard variable for'std::money_get>::id = 1; if ( !`guard variable for'std::money_put>::id ) `guard variable for'std::money_put>::id = 1; if ( !`guard variable for'std::numpunct::id ) `guard variable for'std::numpunct::id = 1; if ( !`guard variable for'std::num_get>::id ) `guard variable for'std::num_get>::id = 1; if ( !`guard variable for'std::num_put>::id ) `guard variable for'std::num_put>::id = 1; if ( !`guard variable for'std::__timepunct::id ) `guard variable for'std::__timepunct::id = 1; if ( !`guard variable for'std::time_put>::id ) `guard variable for'std::time_put>::id = 1; if ( !`guard variable for'std::time_get>::id ) `guard variable for'std::time_get>::id = 1; if ( !`guard variable for'std::messages::id ) `guard variable for'std::messages::id = 1; if ( !`guard variable for'std::collate::id ) `guard variable for'std::collate::id = 1; } // 4E80E0: using guessed type char `guard variable for'std::moneypunct::id; // 4E80E8: using guessed type char `guard variable for'std::moneypunct::id; // 4E80F8: using guessed type char `guard variable for'std::__timepunct::id; // 4E8188: using guessed type char `guard variable for'std::collate::id; // 4E8198: using guessed type char `guard variable for'std::num_get>::id; // 4E81A8: using guessed type char `guard variable for'std::num_put>::id; // 4E81B8: using guessed type char `guard variable for'std::messages::id; // 4E81C8: using guessed type char `guard variable for'std::numpunct::id; // 4E81D8: using guessed type char `guard variable for'std::time_get>::id; // 4E81E8: using guessed type char `guard variable for'std::time_put>::id; // 4E81F8: using guessed type char `guard variable for'std::money_get>::id; // 4E8208: using guessed type char `guard variable for'std::money_put>::id; //----- (004DAF40) -------------------------------------------------------- #error "4DAF47: call analysis failed (funcsize=7)" //----- (004DAF84) -------------------------------------------------------- void __cdecl __noreturn `anonymous namespace'::pool::allocate() { __gnu_cxx::__throw_concurrence_lock_error(); } //----- (004DAFD0) -------------------------------------------------------- int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv() { _DWORD *v0; // eax if ( _CRT_MT ) __gthr_win32_mutex_init_function(&`anonymous namespace'::emergency_pool); dword_4E8380 = 18944; v0 = malloc(0x4A00u); dword_4E837C = (int)v0; if ( v0 ) { dword_4E8378 = (int)v0; *v0 = 18944; v0[1] = 0; } else { dword_4E8380 = 0; dword_4E8378 = 0; } return atexit(__tcf_0_4); } // 4E8378: using guessed type int dword_4E8378; // 4E837C: using guessed type int dword_4E837C; // 4E8380: using guessed type int dword_4E8380; // 15412D0: using guessed type int _CRT_MT; //----- (004DB050) -------------------------------------------------------- void __noreturn __cxa_bad_cast(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_4F6CE0; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_cast, (void (__cdecl *)(void *))std::bad_cast::~bad_cast); } // 4F1FE4: using guessed type int *`typeinfo for'std::bad_cast; // 4F6CE0: using guessed type void (__cdecl *off_4F6CE0)(std::bad_cast *__hidden this); //----- (004DB080) -------------------------------------------------------- void __noreturn __cxa_bad_typeid(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_4F5E7C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_typeid, (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); } // 4F19F0: using guessed type int `typeinfo for'std::bad_typeid; // 4F5E7C: using guessed type void (__cdecl *off_4F5E7C)(std::bad_typeid *__hidden this); //----- (004DB0B0) -------------------------------------------------------- void __noreturn __cxa_throw_bad_array_new_length(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_4F6838; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_array_new_length, (void (__cdecl *)(void *))std::bad_array_new_length::~bad_array_new_length); } // 4F1DF8: using guessed type int *`typeinfo for'std::bad_array_new_length; // 4F6838: using guessed type void (__cdecl *off_4F6838)(std::bad_array_new_length *__hidden this); //----- (004DB0E0) -------------------------------------------------------- #error "4DB0E3: call analysis failed (funcsize=5)" //----- (004DB0F4) -------------------------------------------------------- #error "4DB117: call analysis failed (funcsize=8)" //----- (004DB1BC) -------------------------------------------------------- #error "4DB1C9: call analysis failed (funcsize=5)" //----- (004DB1D0) -------------------------------------------------------- #error "4DB1DD: call analysis failed (funcsize=5)" //----- (004DB1E4) -------------------------------------------------------- #error "4DB1F1: call analysis failed (funcsize=5)" //----- (004DB1F8) -------------------------------------------------------- #error "4DB200: call analysis failed (funcsize=5)" //----- (004DB210) -------------------------------------------------------- #error "4DB218: call analysis failed (funcsize=5)" //----- (004DB228) -------------------------------------------------------- #error "4DB22B: call analysis failed (funcsize=4)" //----- (004DB238) -------------------------------------------------------- #error "4DB23B: call analysis failed (funcsize=4)" //----- (004DB248) -------------------------------------------------------- #error "4DB250: call analysis failed (funcsize=5)" //----- (004DB260) -------------------------------------------------------- #error "4DB268: call analysis failed (funcsize=5)" //----- (004DB278) -------------------------------------------------------- #error "4DB2BA: call analysis failed (funcsize=34)" //----- (004DB31C) -------------------------------------------------------- #error "4DB34A: call analysis failed (funcsize=27)" //----- (004DB3A0) -------------------------------------------------------- #error "4DB3CE: call analysis failed (funcsize=27)" //----- (004DB424) -------------------------------------------------------- #error "4DB44A: call analysis failed (funcsize=30)" //----- (004DB4B4) -------------------------------------------------------- #error "4DB4D5: call analysis failed (funcsize=22)" //----- (004DB520) -------------------------------------------------------- #error "4DB55A: call analysis failed (funcsize=30)" //----- (004DB5BC) -------------------------------------------------------- #error "4DB5E6: call analysis failed (funcsize=32)" //----- (004DB658) -------------------------------------------------------- #error "4DB679: call analysis failed (funcsize=22)" //----- (004DB6C4) -------------------------------------------------------- #error "4DB6D1: call analysis failed (funcsize=5)" //----- (004DB6D8) -------------------------------------------------------- #error "4DB6DA: call analysis failed (funcsize=4)" //----- (004DB6E8) -------------------------------------------------------- #error "4DB6EA: call analysis failed (funcsize=4)" //----- (004DB6F8) -------------------------------------------------------- #error "4DB705: call analysis failed (funcsize=5)" //----- (004DB70C) -------------------------------------------------------- #error "4DB719: call analysis failed (funcsize=5)" //----- (004DB720) -------------------------------------------------------- #error "4DB722: call analysis failed (funcsize=4)" //----- (004DB730) -------------------------------------------------------- #error "4DB732: call analysis failed (funcsize=4)" //----- (004DB740) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __usercall __noreturn std::_V2::error_category::_M_message( int a1@, _Unwind_Exception *a2@, int a3@) { volatile signed __int32 *v3; // eax v3 = *(volatile signed __int32 **)(a3 - 12); if ( v3 != (volatile signed __int32 *)&unk_4E93FC ) { if ( _CRT_MT ) { a1 = _InterlockedExchangeAdd(v3 - 1, 0xFFFFFFFF); } else { a1 = *((_DWORD *)v3 - 1); *((_DWORD *)v3 - 1) = a1 - 1; } if ( a1 <= 0 ) std::string::_Rep::_M_destroy((void *)(v3 - 3), a3 - 13); } _Unwind_Resume((int)v3, a1, a2); } // 4DB76D: positive sp value 4 has been found // 4DB771: variable 'v3' is possibly undefined // 4DB771: variable 'a1' is possibly undefined // 15412D0: using guessed type int _CRT_MT; //----- (004DB784) -------------------------------------------------------- #error "4DB787: call analysis failed (funcsize=3)" //----- (004DB7A0) -------------------------------------------------------- #error "4DB7AC: call analysis failed (funcsize=4)" //----- (004DB7B4) -------------------------------------------------------- #error "4DB7C0: call analysis failed (funcsize=4)" //----- (004DB7C8) -------------------------------------------------------- #error "4DB7D4: call analysis failed (funcsize=4)" //----- (004DB7DC) -------------------------------------------------------- #error "4DB7E8: call analysis failed (funcsize=4)" //----- (004DB7F0) -------------------------------------------------------- #error "4DB7FC: call analysis failed (funcsize=4)" //----- (004DB804) -------------------------------------------------------- #error "4DB810: call analysis failed (funcsize=4)" //----- (004DB818) -------------------------------------------------------- #error "4DB824: call analysis failed (funcsize=4)" //----- (004DB82C) -------------------------------------------------------- #error "4DB838: call analysis failed (funcsize=4)" //----- (004DB840) -------------------------------------------------------- #error "4DB84C: call analysis failed (funcsize=4)" //----- (004DB854) -------------------------------------------------------- #error "4DB860: call analysis failed (funcsize=4)" //----- (004DB868) -------------------------------------------------------- #error "4DB874: call analysis failed (funcsize=4)" //----- (004DB87C) -------------------------------------------------------- #error "4DB888: call analysis failed (funcsize=4)" //----- (004DB890) -------------------------------------------------------- #error "4DB89C: call analysis failed (funcsize=4)" //----- (004DB8A4) -------------------------------------------------------- #error "4DB8B0: call analysis failed (funcsize=4)" //----- (004DB8B8) -------------------------------------------------------- #error "4DB8C4: call analysis failed (funcsize=4)" //----- (004DB8CC) -------------------------------------------------------- #error "4DB8D8: call analysis failed (funcsize=4)" //----- (004DB8E0) -------------------------------------------------------- #error "4DB8EC: call analysis failed (funcsize=4)" //----- (004DB8F4) -------------------------------------------------------- #error "4DB900: call analysis failed (funcsize=4)" //----- (004DB908) -------------------------------------------------------- #error "4DB911: call analysis failed (funcsize=7)" //----- (004DB920) -------------------------------------------------------- #error "4DB92A: call analysis failed (funcsize=18)" //----- (004DB988) -------------------------------------------------------- #error "4DB992: call analysis failed (funcsize=18)" //----- (004DB9F0) -------------------------------------------------------- #error "4DB9FB: call analysis failed (funcsize=7)" //----- (004DBA44) -------------------------------------------------------- void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1) { _DWORD *exception; // ebx const char *v2; // [esp+4h] [ebp-14h] exception = __cxa_allocate_exception(0x18u); std::__ios_failure::__ios_failure(exception, a1, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::__ios_failure, (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); } // 4DBA62: variable 'v2' is possibly undefined // 4F1B14: using guessed type int *`typeinfo for'std::__ios_failure; //----- (004DBA94) -------------------------------------------------------- void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1, char *a2) { _DWORD *exception; // ebx int v3; // [esp+8h] [ebp-10h] exception = __cxa_allocate_exception(0x18u); std::__ios_failure::__ios_failure(exception, a1, (int)a2, v3); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::__ios_failure, (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); } // 4DBAB9: variable 'v3' is possibly undefined // 4F1B14: using guessed type int *`typeinfo for'std::__ios_failure; //----- (004DBAEC) -------------------------------------------------------- #error "4DBAEE: call analysis failed (funcsize=4)" //----- (004DBAFC) -------------------------------------------------------- #error "4DBAFE: call analysis failed (funcsize=4)" //----- (004DBB0C) -------------------------------------------------------- #error "4DBB19: call analysis failed (funcsize=8)" //----- (004DBB28) -------------------------------------------------------- void __cdecl __noreturn std::__throw_system_error(int a1) { _DWORD *exception; // esi void *v2[2]; // [esp+18h] [ebp-30h] BYREF char v3; // [esp+20h] [ebp-28h] BYREF exception = __cxa_allocate_exception(0x10u); `anonymous namespace'::system_error_category::message[abi:cxx11]( v2, (int)&`anonymous namespace'::generic_category_instance, a1); std::runtime_error::runtime_error(exception, (int)v2); if ( v2[0] != &v3 ) operator delete(v2[0]); *exception = &off_4F6054; exception[2] = a1; exception[3] = &`anonymous namespace'::generic_category_instance; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::system_error, (void (__cdecl *)(void *))std::system_error::~system_error); } // 4E8F48: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); // 4F1B08: using guessed type int *`typeinfo for'std::system_error; // 4F6054: using guessed type void (__cdecl *off_4F6054)(std::system_error *__hidden this); //----- (004DBBD0) -------------------------------------------------------- int _GLOBAL__sub_I__ZSt20__throw_system_errori() { atexit(__tcf_0_6); return atexit(__tcf_1_3); } //----- (004DBBF0) -------------------------------------------------------- #error "4DBC11: call analysis failed (funcsize=22)" //----- (004DBC5C) -------------------------------------------------------- #error "4DBC7D: call analysis failed (funcsize=22)" //----- (004DBCC8) -------------------------------------------------------- void __cdecl __noreturn d_type_cold( int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11) { BUG(); } //----- (004DBD5C) -------------------------------------------------------- #error "4DBD5E: call analysis failed (funcsize=7)" // nfuncs=4486 queued=4231 decompiled=4231 lumina nreq=0 worse=0 better=0 #error "There were 134 decompilation failure(s) on 4231 function(s)"